diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbsz1=vbsaa.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbsz1=vbsaa.asm new file mode 100644 index 000000000..adf3890b9 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbsz1=vbsaa.asm @@ -0,0 +1,2 @@ +ldy #0 +sta ({z1}),y diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbsz1=vbsz2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbsz1=vbsz2.asm new file mode 100644 index 000000000..6d222753c --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/_deref_pbsz1=vbsz2.asm @@ -0,0 +1,3 @@ +ldy #0 +lda {z2} +sta ({z1}),y diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/pbsz1=pbsc1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/pbsz1=pbsc1.asm new file mode 100644 index 000000000..8716dc864 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/pbsz1=pbsc1.asm @@ -0,0 +1,4 @@ +lda #<{c1} +sta {z1} +lda #>{c1} +sta {z1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbsaa_lt_0_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsaa_lt_0_then_la1.asm new file mode 100644 index 000000000..068b0575e --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsaa_lt_0_then_la1.asm @@ -0,0 +1,2 @@ +cmp #0 +bmi {la1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx_lt_0_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx_lt_0_then_la1.asm new file mode 100644 index 000000000..091d98576 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsxx_lt_0_then_la1.asm @@ -0,0 +1,2 @@ +cpx #0 +bmi {la1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy_lt_0_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy_lt_0_then_la1.asm new file mode 100644 index 000000000..1902bfa22 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsyy_lt_0_then_la1.asm @@ -0,0 +1,2 @@ +cpy #0 +bmi {la1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbsz1_lt_0_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsz1_lt_0_then_la1.asm new file mode 100644 index 000000000..2edd1f094 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbsz1_lt_0_then_la1.asm @@ -0,0 +1,2 @@ +lda {z1} +bmi {la1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz1_rol_vbuz2.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz1_rol_vbuz2.asm new file mode 100644 index 000000000..66b12f62d --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz1_rol_vbuz2.asm @@ -0,0 +1,8 @@ +ldy {z2} +beq !e+ +!: +asl {z1} +rol {z1}+1 +dey +bne !- +!e: \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz2_rol_3.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz2_rol_3.asm index bdca3786d..f349138a9 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz2_rol_3.asm +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz2_rol_3.asm @@ -1,18 +1,10 @@ -lda {z1} +lda {z2} asl -sta {z2} -lda {z1}+1 +sta {z1} +lda {z2}+1 rol -sta {z2}+1 -lda {z1} -asl -sta {z2} -lda {z1}+1 -rol -sta {z2}+1 -lda {z1} -asl -sta {z2} -lda {z1}+1 -rol -sta {z2}+1 +sta {z1}+1 +asl {z1} +rol {z1}+1 +asl {z1} +rol {z1}+1 diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz2_rol_vbuz3.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz2_rol_vbuz3.asm new file mode 100644 index 000000000..26601fb33 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1=vwuz2_rol_vbuz3.asm @@ -0,0 +1,12 @@ +lda {z2} +sta {z1} +lda {z2}+1 +sta {z1}+1 +ldy {z3} +beq !e+ +!: +asl {z1} +rol {z1}+1 +dey +bne !- +!e: \ No newline at end of file diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index 66ea870e2..c5cf54276 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -51,8 +51,13 @@ public class TestPrograms { } @Test - public void testSinusGen() throws IOException, URISyntaxException { - compileAndCompare("sinusgen"); + public void testSinusGen16() throws IOException, URISyntaxException { + compileAndCompare("sinusgen16"); + } + + @Test + public void testSinusGen8() throws IOException, URISyntaxException { + compileAndCompare("sinusgen8"); } @Test diff --git a/src/test/java/dk/camelot64/kickc/test/kc/sinusgen.kc b/src/test/java/dk/camelot64/kickc/test/kc/sinus.kc similarity index 58% rename from src/test/java/dk/camelot64/kickc/test/kc/sinusgen.kc rename to src/test/java/dk/camelot64/kickc/test/kc/sinus.kc index 21bab6dd1..ede7292ad 100644 --- a/src/test/java/dk/camelot64/kickc/test/kc/sinusgen.kc +++ b/src/test/java/dk/camelot64/kickc/test/kc/sinus.kc @@ -6,22 +6,6 @@ import "division.kc" import "multiply.kc" -import "print.kc" - -void main() { - word wavelength = 120; - signed word[120] sintab1; - sin16s_gen(sintab1, wavelength); - print_cls(); - for(signed word* st1 = sintab1; st1=0) { - print_str(" @"); - } - print_sword(sw); - print_str(" @"); - } -} // PI*2 in u[4.28] format const dword PI2_u4f28 = $6487ed51; @@ -52,6 +36,20 @@ void sin16s_gen(signed word* sintab, word wavelength) { } } +// Generate signed byte sinus table - on the full -$7f - $7f range +// sintab - the table to generate into +// wavelength - the number of sinus points in a total sinus wavelength (the size of the table) +void sin8s_gen(signed byte* sintab, word wavelength) { + // u[4.28] step = PI*2/wavelength + word step = div16u(PI2_u4f12, wavelength); // u[4.12] + // Iterate over the table + word x = 0; // u[4.12] + for( word i=0; i= PI_HALF_u4f28 ) { x = PI_u4f28 - x; } - // s[4.12] sinx = x - x^3/6 + x5/128; + // sinx = x - x^3/6 + x5/128; word x1 = >x<<3; // u[1.15] - word x2 = mul_u16_sel(x1, x1, 0); // u[2.14] x^2 - word x3 = mul_u16_sel(x2, x1, 1); // u[2.14] x^3 - word x3_6 = mul_u16_sel(x3, $10000/6, 1); // u[1.15] x^3/6; + 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 = mul_u16_sel(x3, x1, 0); // u[3.13] x^4 - word x5 = mul_u16_sel(x4, x1, 0); // u[4.12] x^5 + 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] @@ -82,6 +80,37 @@ signed word sin16s(dword x) { return sinx; } +// Calculate signed byte sinus sin(x) +// x: unsigned word input u[4.12] in the interval $0000 - PI2_u4f12 +// result: signed byte sin(x) s[0.7] - using the full range -$7f - $7f +signed byte sin8s(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; + byte x1 = >x<<3; // u[1.7] + byte x2 = mulu8_sel(x1, x1, 0); // u[2.6] x^2 + byte x3 = mulu8_sel(x2, x1, 1); // u[2.6] x^3 + byte x3_6 = mulu8_sel(x3, $100/6, 1); // u[1.7] x^3/6; + byte usinx = x1 - x3_6; // u[1.7] x - x^3/6 + byte x4 = mulu8_sel(x3, x1, 0); // u[3.5] x^4 + byte x5 = mulu8_sel(x4, x1, 0); // u[4.4] x^5 + byte x5_128 = x5>>4; // // u[1.7] x^5/128 -- much more efficient than mul_u16_sel(x5, $10000/128, 3); + usinx = usinx + x5_128; // u[1.7] (first bit is always zero) + signed byte sinx = (signed byte)usinx; // s[0.7] + if(isUpper!=0) { + sinx = -(signed byte)usinx; // s[0.7]; + } + return sinx; +} + + // Generate (small) signed word sinus table - in the limited -$fff - $fff range // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -102,13 +131,13 @@ void sin16ss_gen(signed word* sintab, word wavelength) { x1 = PI_u4f12 - x1; } // s[4.12] sinx = x - x^3/6 + x5/128; - word x2 = mul_u16_sel(x1, x1, 4); // u[4.12] - word x3 = mul_u16_sel(x2, x1, 4); // u[4.12] - word x3_6 = mul_u16_sel(x3, $10000/6, 0); // u[4.12] - u[0.16] div6 = 1/6; + word x2 = mulu16_sel(x1, x1, 4); // u[4.12] + word x3 = mulu16_sel(x2, x1, 4); // u[4.12] + word x3_6 = mulu16_sel(x3, $10000/6, 0); // u[4.12] - u[0.16] div6 = 1/6; word usinx = x1 - x3_6; // u[4.12] - word x4 = mul_u16_sel(x3, x1, 4); // u[4.12] - word x5 = mul_u16_sel(x4, x1, 4); // u[4.12] - word x5_128 = mul_u16_sel(x5, $10000/128, 0); // u[4.12] - u[0.16] div128 = 1/128; + word x4 = mulu16_sel(x3, x1, 4); // u[4.12] + word x5 = mulu16_sel(x4, x1, 4); // u[4.12] + word x5_128 = mulu16_sel(x5, $10000/128, 0); // u[4.12] - u[0.16] div128 = 1/128; usinx = usinx + x5_128; signed word sinx; if(isUpper!=0) { @@ -124,7 +153,12 @@ void sin16ss_gen(signed word* sintab, word wavelength) { // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip -word mul_u16_sel(word v1, word v2, byte select) { +word mulu16_sel(word v1, word v2, byte select) { return >mul16u(v1, v2)<mul8u(v1, v2)<=0) { + print_str(" @"); + } + print_sword(sw); + print_str(" @"); + } +} diff --git a/src/test/java/dk/camelot64/kickc/test/kc/sinusgen8.kc b/src/test/java/dk/camelot64/kickc/test/kc/sinusgen8.kc new file mode 100644 index 000000000..b44f3d40c --- /dev/null +++ b/src/test/java/dk/camelot64/kickc/test/kc/sinusgen8.kc @@ -0,0 +1,17 @@ +import "sinus.kc" +import "print.kc" + +void main() { + word wavelength = 120; + signed byte[120] sintab2; + sin8s_gen(sintab2, wavelength); + print_cls(); + for(byte i: 0..119) { + signed byte sb = sintab2[i]; + if(sb>=0) { + print_str(" @"); + } + print_sbyte(sb); + print_str(" @"); + } +} diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log index dc0a24e2f..5bc19c1f1 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log @@ -2790,24 +2790,16 @@ scroll_bit: { lda #0 sta c+1 //SEG65 [28] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ scroll_bit::$4 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ scroll_bit::$4 nxt#19 ] ) -- vwuz1=vwuz2_rol_3 - lda _4 + lda c asl - sta c - lda _4+1 + sta _4 + lda c+1 rol - sta c+1 - lda _4 - asl - sta c - lda _4+1 - rol - sta c+1 - lda _4 - asl - sta c - lda _4+1 - rol - sta c+1 + sta _4+1 + asl _4 + rol _4+1 + asl _4 + rol _4+1 //SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz2 lda _4 clc @@ -3150,15 +3142,15 @@ Uplift Scope [next_char] 8.5: zp ZP_BYTE:13 [ next_char::return#1 next_char::c#0 Uplift Scope [main] Uplift Scope [scroll_soft] -Uplifting [scroll_bit] best 28308 combination reg byte a [ scroll_bit::bits#0 ] reg byte a [ scroll_bit::$9 ] reg byte x [ scroll_bit::r#2 scroll_bit::r#1 ] zp ZP_WORD:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] reg byte a [ scroll_bit::b#2 ] reg byte a [ scroll_bit::$3 ] zp ZP_WORD:18 [ scroll_bit::c#0 ] zp ZP_WORD:20 [ scroll_bit::$4 ] -Uplifting [scroll_hard] best 25008 combination reg byte x [ scroll_hard::i#2 scroll_hard::i#1 ] -Uplifting [] best 24696 combination zp ZP_WORD:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 ] zp ZP_BYTE:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] zp ZP_WORD:11 [ nxt#18 nxt#31 nxt#14 nxt#36 nxt#19 ] reg byte x [ scroll#18 scroll#10 scroll#3 ] -Uplifting [fillscreen] best 24696 combination zp ZP_WORD:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] -Uplifting [next_char] best 24678 combination reg byte a [ next_char::return#1 next_char::c#0 next_char::c#1 ] reg byte a [ next_char::return#0 ] -Uplifting [main] best 24678 combination -Uplifting [scroll_soft] best 24678 combination +Uplifting [scroll_bit] best 28296 combination reg byte a [ scroll_bit::bits#0 ] reg byte a [ scroll_bit::$9 ] reg byte x [ scroll_bit::r#2 scroll_bit::r#1 ] zp ZP_WORD:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] reg byte a [ scroll_bit::b#2 ] reg byte a [ scroll_bit::$3 ] zp ZP_WORD:18 [ scroll_bit::c#0 ] zp ZP_WORD:20 [ scroll_bit::$4 ] +Uplifting [scroll_hard] best 24996 combination reg byte x [ scroll_hard::i#2 scroll_hard::i#1 ] +Uplifting [] best 24684 combination zp ZP_WORD:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 ] zp ZP_BYTE:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] zp ZP_WORD:11 [ nxt#18 nxt#31 nxt#14 nxt#36 nxt#19 ] reg byte x [ scroll#18 scroll#10 scroll#3 ] +Uplifting [fillscreen] best 24684 combination zp ZP_WORD:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] +Uplifting [next_char] best 24666 combination reg byte a [ next_char::return#1 next_char::c#0 next_char::c#1 ] reg byte a [ next_char::return#0 ] +Uplifting [main] best 24666 combination +Uplifting [scroll_soft] best 24666 combination Attempting to uplift remaining variables inzp ZP_BYTE:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] -Uplifting [] best 24678 combination zp ZP_BYTE:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] +Uplifting [] best 24666 combination zp ZP_BYTE:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] Coalescing zero page register with common assignment [ zp ZP_WORD:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 ] ] with [ zp ZP_WORD:20 [ scroll_bit::$4 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 scroll_bit::$4 ] ] with [ zp ZP_WORD:18 [ scroll_bit::c#0 ] ] - score: 1 Coalescing zero page register [ zp ZP_WORD:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 scroll_bit::$4 scroll_bit::c#0 ] ] with [ zp ZP_WORD:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log index 956e212be..5fd8bf8ee 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log @@ -7463,24 +7463,16 @@ gen_chargen_sprite: { lda #0 sta _0+1 //SEG373 [183] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:55::gen_chargen_sprite:177 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) -- vwuz1=vwuz2_rol_3 - lda _1 + lda _0 asl - sta _0 - lda _1+1 + sta _1 + lda _0+1 rol - sta _0+1 - lda _1 - asl - sta _0 - lda _1+1 - rol - sta _0+1 - lda _1 - asl - sta _0 - lda _1+1 - rol - sta _0+1 + sta _1+1 + asl _1 + rol _1+1 + asl _1 + rol _1+1 //SEG374 [184] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:55::gen_chargen_sprite:177 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) -- pbuz1=pbuc1_plus_vwuz2 lda _1 clc @@ -8015,67 +8007,67 @@ Uplift Scope [main] Uplift Scope [progress_init] Uplift Scope [progress_inc] -Uplifting [gen_chargen_sprite] best 1065211 combination zp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] zp ZP_WORD:43 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] reg byte a [ gen_chargen_sprite::$6 ] reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] reg byte a [ gen_chargen_sprite::$3 ] zp ZP_BYTE:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] zp ZP_BYTE:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] zp ZP_BYTE:39 [ gen_chargen_sprite::c#3 ] zp ZP_BYTE:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] reg byte y [ gen_chargen_sprite::ch#0 ] zp ZP_WORD:65 [ gen_chargen_sprite::$0 ] zp ZP_WORD:67 [ gen_chargen_sprite::$1 ] zp ZP_WORD:69 [ gen_chargen_sprite::chargen#0 ] +Uplifting [gen_chargen_sprite] best 1065199 combination zp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] zp ZP_WORD:43 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] reg byte a [ gen_chargen_sprite::$6 ] reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] reg byte a [ gen_chargen_sprite::$3 ] zp ZP_BYTE:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] zp ZP_BYTE:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] zp ZP_BYTE:39 [ gen_chargen_sprite::c#3 ] zp ZP_BYTE:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] reg byte y [ gen_chargen_sprite::ch#0 ] zp ZP_WORD:65 [ gen_chargen_sprite::$0 ] zp ZP_WORD:67 [ gen_chargen_sprite::$1 ] zp ZP_WORD:69 [ gen_chargen_sprite::chargen#0 ] Uplift attempts [anim] 10000/19440 (limiting to 10000) -Uplifting [anim] best 1062311 combination zp ZP_BYTE:7 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] reg byte alu [ anim::$3 ] reg byte a [ anim::$5 ] zp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] reg byte a [ anim::$2 ] reg byte x [ anim::j2#2 anim::j2#1 ] zp ZP_WORD:50 [ anim::x#0 ] +Uplifting [anim] best 1062299 combination zp ZP_BYTE:7 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] reg byte alu [ anim::$3 ] reg byte a [ anim::$5 ] zp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] reg byte a [ anim::$2 ] reg byte x [ anim::j2#2 anim::j2#1 ] zp ZP_WORD:50 [ anim::x#0 ] Limited combination testing to 10000 combinations of 19440 possible. -Uplifting [place_sprites] best 1061951 combination reg byte x [ place_sprites::j2#1 ] reg byte y [ place_sprites::j#2 place_sprites::j#1 ] zp ZP_BYTE:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] reg byte x [ place_sprites::j2#3 place_sprites::j2#2 ] zp ZP_BYTE:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] zp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] -Uplifting [setFAC] best 1061951 combination zp ZP_WORD:29 [ setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ] -Uplifting [gen_sintab] best 1061884 combination zp ZP_WORD:57 [ gen_sintab::$23 ] reg byte a [ gen_sintab::$24 ] zp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] reg byte x [ gen_sintab::max#2 ] zp ZP_BYTE:14 [ gen_sintab::length#10 ] zp ZP_BYTE:13 [ gen_sintab::min#2 ] zp ZP_WORD:15 [ gen_sintab::sintab#12 ] -Uplifting [gen_sprites] best 1061884 combination zp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] zp ZP_WORD:34 [ gen_sprites::spr#2 gen_sprites::spr#1 ] -Uplifting [clear_screen] best 1061884 combination zp ZP_WORD:10 [ clear_screen::sc#2 clear_screen::sc#1 ] -Uplifting [prepareMEM] best 1061872 combination zp ZP_WORD:23 [ prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#9 prepareMEM::mem#1 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ] -Uplifting [init] best 1061722 combination reg byte x [ init::i#2 init::i#1 ] -Uplifting [getFAC] best 1061722 combination zp ZP_WORD:55 [ getFAC::return#2 ] zp ZP_WORD:60 [ getFAC::return#0 ] -Uplifting [] best 1061722 combination zp ZP_WORD:19 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] zp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ] zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] -Uplifting [setMEMtoFAC] best 1061722 combination zp ZP_WORD:31 [ setMEMtoFAC::mem#5 ] -Uplifting [addMEMtoFAC] best 1061722 combination zp ZP_WORD:21 [ addMEMtoFAC::mem#2 ] -Uplifting [divMEMbyFAC] best 1061722 combination zp ZP_WORD:27 [ divMEMbyFAC::mem#2 ] -Uplifting [mulFACbyMEM] best 1061722 combination zp ZP_WORD:25 [ mulFACbyMEM::mem#2 ] -Uplifting [setARGtoFAC] best 1061722 combination -Uplifting [subFACfromARG] best 1061722 combination -Uplifting [sinFAC] best 1061722 combination -Uplifting [main] best 1061722 combination -Uplifting [progress_init] best 1061722 combination -Uplifting [progress_inc] best 1061722 combination +Uplifting [place_sprites] best 1061939 combination reg byte x [ place_sprites::j2#1 ] reg byte y [ place_sprites::j#2 place_sprites::j#1 ] zp ZP_BYTE:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] reg byte x [ place_sprites::j2#3 place_sprites::j2#2 ] zp ZP_BYTE:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] zp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] +Uplifting [setFAC] best 1061939 combination zp ZP_WORD:29 [ setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ] +Uplifting [gen_sintab] best 1061872 combination zp ZP_WORD:57 [ gen_sintab::$23 ] reg byte a [ gen_sintab::$24 ] zp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] reg byte x [ gen_sintab::max#2 ] zp ZP_BYTE:14 [ gen_sintab::length#10 ] zp ZP_BYTE:13 [ gen_sintab::min#2 ] zp ZP_WORD:15 [ gen_sintab::sintab#12 ] +Uplifting [gen_sprites] best 1061872 combination zp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] zp ZP_WORD:34 [ gen_sprites::spr#2 gen_sprites::spr#1 ] +Uplifting [clear_screen] best 1061872 combination zp ZP_WORD:10 [ clear_screen::sc#2 clear_screen::sc#1 ] +Uplifting [prepareMEM] best 1061860 combination zp ZP_WORD:23 [ prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#9 prepareMEM::mem#1 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ] +Uplifting [init] best 1061710 combination reg byte x [ init::i#2 init::i#1 ] +Uplifting [getFAC] best 1061710 combination zp ZP_WORD:55 [ getFAC::return#2 ] zp ZP_WORD:60 [ getFAC::return#0 ] +Uplifting [] best 1061710 combination zp ZP_WORD:19 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] zp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ] zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] +Uplifting [setMEMtoFAC] best 1061710 combination zp ZP_WORD:31 [ setMEMtoFAC::mem#5 ] +Uplifting [addMEMtoFAC] best 1061710 combination zp ZP_WORD:21 [ addMEMtoFAC::mem#2 ] +Uplifting [divMEMbyFAC] best 1061710 combination zp ZP_WORD:27 [ divMEMbyFAC::mem#2 ] +Uplifting [mulFACbyMEM] best 1061710 combination zp ZP_WORD:25 [ mulFACbyMEM::mem#2 ] +Uplifting [setARGtoFAC] best 1061710 combination +Uplifting [subFACfromARG] best 1061710 combination +Uplifting [sinFAC] best 1061710 combination +Uplifting [main] best 1061710 combination +Uplifting [progress_init] best 1061710 combination +Uplifting [progress_inc] best 1061710 combination Attempting to uplift remaining variables inzp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] -Uplifting [gen_chargen_sprite] best 1061722 combination zp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] +Uplifting [gen_chargen_sprite] best 1061710 combination zp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] -Uplifting [gen_chargen_sprite] best 1061722 combination zp ZP_BYTE:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] +Uplifting [gen_chargen_sprite] best 1061710 combination zp ZP_BYTE:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] -Uplifting [gen_chargen_sprite] best 1061722 combination zp ZP_BYTE:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] +Uplifting [gen_chargen_sprite] best 1061710 combination zp ZP_BYTE:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:39 [ gen_chargen_sprite::c#3 ] -Uplifting [gen_chargen_sprite] best 1061722 combination zp ZP_BYTE:39 [ gen_chargen_sprite::c#3 ] +Uplifting [gen_chargen_sprite] best 1061710 combination zp ZP_BYTE:39 [ gen_chargen_sprite::c#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:7 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] -Uplifting [anim] best 1061722 combination zp ZP_BYTE:7 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] +Uplifting [anim] best 1061710 combination zp ZP_BYTE:7 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] -Uplifting [anim] best 1061722 combination zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] +Uplifting [anim] best 1061710 combination zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] -Uplifting [gen_chargen_sprite] best 1061722 combination zp ZP_BYTE:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] +Uplifting [gen_chargen_sprite] best 1061710 combination zp ZP_BYTE:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] -Uplifting [anim] best 1061722 combination zp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] +Uplifting [anim] best 1061710 combination zp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] -Uplifting [anim] best 1061722 combination zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] +Uplifting [anim] best 1061710 combination zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] -Uplifting [gen_sprites] best 1061722 combination zp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] +Uplifting [gen_sprites] best 1061710 combination zp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] -Uplifting [place_sprites] best 1061722 combination zp ZP_BYTE:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] +Uplifting [place_sprites] best 1061710 combination zp ZP_BYTE:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] -Uplifting [gen_sintab] best 1061722 combination zp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] +Uplifting [gen_sintab] best 1061710 combination zp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] -Uplifting [place_sprites] best 1061722 combination zp ZP_BYTE:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] +Uplifting [place_sprites] best 1061710 combination zp ZP_BYTE:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] -Uplifting [place_sprites] best 1061722 combination zp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] +Uplifting [place_sprites] best 1061710 combination zp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ] -Uplifting [] best 1061722 combination zp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ] +Uplifting [] best 1061710 combination zp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] -Uplifting [] best 1061722 combination zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] +Uplifting [] best 1061710 combination zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] -Uplifting [] best 1061722 combination zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] +Uplifting [] best 1061710 combination zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:14 [ gen_sintab::length#10 ] -Uplifting [gen_sintab] best 1061722 combination zp ZP_BYTE:14 [ gen_sintab::length#10 ] +Uplifting [gen_sintab] best 1061710 combination zp ZP_BYTE:14 [ gen_sintab::length#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:13 [ gen_sintab::min#2 ] -Uplifting [gen_sintab] best 1061722 combination zp ZP_BYTE:13 [ gen_sintab::min#2 ] +Uplifting [gen_sintab] best 1061710 combination zp ZP_BYTE:13 [ gen_sintab::min#2 ] Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 ] ] with [ zp ZP_WORD:23 [ prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#9 prepareMEM::mem#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:55 [ getFAC::return#2 ] ] with [ zp ZP_WORD:57 [ gen_sintab::$23 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:55 [ getFAC::return#2 gen_sintab::$23 ] ] with [ zp ZP_WORD:60 [ getFAC::return#0 ] ] - score: 1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.asm b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.asm similarity index 91% rename from src/test/java/dk/camelot64/kickc/test/ref/sinusgen.asm rename to src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.asm index 1eac44c9a..30a0573a1 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.asm @@ -1,10 +1,10 @@ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - .label SCREEN = $400 .const PI2_u4f28 = $6487ed51 .const PI_u4f28 = $3243f6a9 .const PI_HALF_u4f28 = $1921fb54 + .label SCREEN = $400 .label rem16u = 4 .label char_cursor = 8 jsr main @@ -321,35 +321,35 @@ sin16s: { lda _6+3 sta x1+1 lda x1 - sta mul_u16_sel.v1 + sta mulu16_sel.v1 lda x1+1 - sta mul_u16_sel.v1+1 + sta mulu16_sel.v1+1 lda x1 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda x1+1 - sta mul_u16_sel.v2+1 + sta mulu16_sel.v2+1 ldx #0 - jsr mul_u16_sel - lda mul_u16_sel.return + jsr mulu16_sel + lda mulu16_sel.return sta x2 - lda mul_u16_sel.return+1 + lda mulu16_sel.return+1 sta x2+1 lda x1 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda x1+1 - sta mul_u16_sel.v2+1 + sta mulu16_sel.v2+1 ldx #1 - jsr mul_u16_sel - lda mul_u16_sel.return - sta mul_u16_sel.return_1 - lda mul_u16_sel.return+1 - sta mul_u16_sel.return_1+1 + jsr mulu16_sel + lda mulu16_sel.return + sta mulu16_sel.return_1 + lda mulu16_sel.return+1 + sta mulu16_sel.return_1+1 ldx #1 lda #<$10000/6 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda #>$10000/6 - sta mul_u16_sel.v2+1 - jsr mul_u16_sel + sta mulu16_sel.v2+1 + jsr mulu16_sel lda x1 sec sbc x3_6 @@ -358,21 +358,21 @@ sin16s: { sbc x3_6+1 sta usinx+1 lda x1 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda x1+1 - sta mul_u16_sel.v2+1 + sta mulu16_sel.v2+1 ldx #0 - jsr mul_u16_sel - lda mul_u16_sel.return - sta mul_u16_sel.return_10 - lda mul_u16_sel.return+1 - sta mul_u16_sel.return_10+1 + jsr mulu16_sel + lda mulu16_sel.return + sta mulu16_sel.return_10 + lda mulu16_sel.return+1 + sta mulu16_sel.return_10+1 lda x1 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda x1+1 - sta mul_u16_sel.v2+1 + sta mulu16_sel.v2+1 ldx #0 - jsr mul_u16_sel + jsr mulu16_sel ldy #4 !: lsr x5_128+1 @@ -400,7 +400,7 @@ sin16s: { b3: rts } -mul_u16_sel: { +mulu16_sel: { .label _0 = $f .label _1 = $f .label v1 = 8 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.cfg b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.cfg similarity index 61% rename from src/test/java/dk/camelot64/kickc/test/ref/sinusgen.cfg rename to src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.cfg index 4dd3c26b5..6c9cfa073 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() [ ] ( ) - to:@26 -@26: scope:[] from @begin + to:@29 +@29: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @26 +@end: scope:[] from @29 [3] phi() [ ] ( ) -main: scope:[main] from @26 +main: scope:[main] from @29 [4] phi() [ ] ( main:2 [ ] ) [5] call sin16s_gen param-assignment [ ] ( main:2 [ ] ) to:main::@5 @@ -133,7 +133,7 @@ sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen to:sin16s_gen::@1 sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@3 sin16s_gen::@4 [62] (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 ) [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) - [62] (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#1 ) [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) + [62] (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 ) [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) [62] (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 ) [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) [63] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) [64] call sin16s param-assignment [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] ) @@ -142,10 +142,10 @@ sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@4: scope:[sin16s_gen] from sin16s_gen::@1 [66] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ) [67] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) - [68] (signed word*) sin16s_gen::sintab#1 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#1 ] ) - [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ) - [70] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ) - [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ) + [68] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) + [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) + [70] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) + [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) to:sin16s_gen::@return sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@4 [72] return [ ] ( main:2::sin16s_gen:5 [ ] ) @@ -168,41 +168,41 @@ sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 [78] (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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#6 ] ) [79] (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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::$6 ] ) [80] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) - [81] (word) mul_u16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 ] ) - [82] (word) mul_u16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 mul_u16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 mul_u16_sel::v2#0 ] ) - [83] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ) - [84] (word) mul_u16_sel::return#0 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#0 ] ) + [81] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) + [82] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) + [83] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ) + [84] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 - [85] (word) sin16s::x2#0 ← (word) mul_u16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) - [86] (word) mul_u16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 ] ) - [87] (word) mul_u16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 mul_u16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 mul_u16_sel::v2#1 ] ) - [88] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ) - [89] (word) mul_u16_sel::return#1 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#1 ] ) + [85] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + [86] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) + [87] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) + [88] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ) + [89] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 - [90] (word) sin16s::x3#0 ← (word) mul_u16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) - [91] (word) mul_u16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul_u16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#2 ] ) - [92] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::x3#0 ] ) - [93] (word) mul_u16_sel::return#2 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul_u16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::return#2 ] ) + [90] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + [91] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) + [92] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::x3#0 ] ) + [93] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [94] (word) sin16s::x3_6#0 ← (word) mul_u16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + [94] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) [95] (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:64 [ 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 ] ) - [96] (word) mul_u16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#3 ] ) - [97] (word) mul_u16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#3 mul_u16_sel::v2#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#3 mul_u16_sel::v2#3 ] ) - [98] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::usinx#0 ] ) - [99] (word) mul_u16_sel::return#10 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::return#10 ] ) + [96] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) + [97] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) + [98] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::usinx#0 ] ) + [99] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [100] (word) sin16s::x4#0 ← (word) mul_u16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) - [101] (word) mul_u16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#4 ] ) - [102] (word) mul_u16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#4 mul_u16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#4 mul_u16_sel::v2#4 ] ) - [103] call mul_u16_sel param-assignment [ sin16s::isUpper#2 mul_u16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 mul_u16_sel::return#12 sin16s::usinx#0 ] ) - [104] (word) mul_u16_sel::return#11 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#11 ] ) + [100] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + [101] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) + [102] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) + [103] call mulu16_sel param-assignment [ sin16s::isUpper#2 mulu16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 mulu16_sel::return#12 sin16s::usinx#0 ] ) + [104] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) to:sin16s::@12 sin16s::@12: scope:[sin16s] from sin16s::@11 - [105] (word) sin16s::x5#0 ← (word) mul_u16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + [105] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) [106] (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:64 [ 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 ] ) [107] (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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) [108] 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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::usinx#1 ] ) @@ -219,46 +219,46 @@ sin16s::@return: scope:[sin16s] from sin16s::@3 sin16s::@15: scope:[sin16s] from sin16s::@12 [112] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#5 ] ) to:sin16s::@3 -mul_u16_sel: scope:[mul_u16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 - [113] (byte) mul_u16_sel::select#5 ← 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 ) [ mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] ) - [113] (word) mul_u16_sel::v2#5 ← phi( sin16s::@10/(word) mul_u16_sel::v2#3 sin16s::@11/(word) mul_u16_sel::v2#4 sin16s::@2/(word) mul_u16_sel::v2#0 sin16s::@8/(word) mul_u16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) [ mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] ) - [113] (word) mul_u16_sel::v1#5 ← phi( sin16s::@10/(word) mul_u16_sel::v1#3 sin16s::@11/(word) mul_u16_sel::v1#4 sin16s::@2/(word) mul_u16_sel::v1#0 sin16s::@8/(word) mul_u16_sel::v1#1 sin16s::@9/(word) mul_u16_sel::v1#2 ) [ mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] ) - [114] (word) mul16u::a#1 ← (word) mul_u16_sel::v1#5 [ mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] ) - [115] (word) mul16u::b#0 ← (word) mul_u16_sel::v2#5 [ mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) - [116] call mul16u param-assignment [ mul_u16_sel::select#5 mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 ] ) - [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul_u16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::return#2 ] ) - to:mul_u16_sel::@2 -mul_u16_sel::@2: scope:[mul_u16_sel] from mul_u16_sel - [118] (dword~) mul_u16_sel::$0 ← (dword) mul16u::return#2 [ mul_u16_sel::select#5 mul_u16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] ) - [119] (dword~) mul_u16_sel::$1 ← (dword~) mul_u16_sel::$0 << (byte) mul_u16_sel::select#5 [ mul_u16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::$1 ] ) - [120] (word) mul_u16_sel::return#12 ← > (dword~) mul_u16_sel::$1 [ mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#12 ] ) - to:mul_u16_sel::@return -mul_u16_sel::@return: scope:[mul_u16_sel] from mul_u16_sel::@2 - [121] return [ mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#12 ] ) +mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 + [113] (byte) mulu16_sel::select#5 ← 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 ) [ mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) + [113] (word) mulu16_sel::v2#5 ← 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 ) [ mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) + [113] (word) mulu16_sel::v1#5 ← 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 ) [ mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) + [114] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ) + [115] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) + [116] call mul16u param-assignment [ mulu16_sel::select#5 mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] ) + [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] ) + to:mulu16_sel::@2 +mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel + [118] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) + [119] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ 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:64::mulu16_sel:88 [ 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:64::mulu16_sel:92 [ 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:64::mulu16_sel:98 [ 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:64::mulu16_sel:103 [ 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 ] ) + [120] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) + to:mulu16_sel::@return +mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2 + [121] return [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) to:@return -mul16u: scope:[mul16u] from mul_u16_sel - [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] ) +mul16u: scope:[mul16u] from mulu16_sel + [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] ) to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 - [123] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) - [123] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) - [123] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) - [124] 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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) + [123] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) + [123] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) + [123] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) + [124] 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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [125] return [ mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 ] ) + [125] return [ mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] ) to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [126] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) - [127] 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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) + [126] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) + [127] 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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) to:mul16u::@7 mul16u::@7: scope:[mul16u] from mul16u::@2 - [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) + [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 - [129] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] ) - [130] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ) - [131] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ) + [129] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] ) + [130] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ) + [131] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ) to:mul16u::@1 div32u16u: scope:[div32u16u] from sin16s_gen [132] phi() [ ] ( main:2::sin16s_gen:5::div32u16u:59 [ ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.log b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.log similarity index 71% rename from src/test/java/dk/camelot64/kickc/test/ref/sinusgen.log rename to src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.log index 6a1c78394..eb05bb673 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.log @@ -1,12 +1,6 @@ -PARSING src/test/java/dk/camelot64/kickc/test/kc/sinusgen.kc -// 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 "division.kc" -import "multiply.kc" +PARSING src/test/java/dk/camelot64/kickc/test/kc/sinusgen16.kc +// Generates a 16-bit signed sinus +import "sinus.kc" import "print.kc" void main() { @@ -24,6 +18,17 @@ void main() { } } +Importing sinus.kc +PARSING src/test/java/dk/camelot64/kickc/test/kc/sinus.kc +// 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 "division.kc" +import "multiply.kc" + // PI*2 in u[4.28] format const dword PI2_u4f28 = $6487ed51; // PI in u[4.28] format @@ -53,6 +58,20 @@ void sin16s_gen(signed word* sintab, word wavelength) { } } +// Generate signed byte sinus table - on the full -$7f - $7f range +// sintab - the table to generate into +// wavelength - the number of sinus points in a total sinus wavelength (the size of the table) +void sin8s_gen(signed byte* sintab, word wavelength) { + // u[4.28] step = PI*2/wavelength + word step = div16u(PI2_u4f12, wavelength); // u[4.12] + // Iterate over the table + word x = 0; // u[4.12] + for( word i=0; i= PI_HALF_u4f28 ) { x = PI_u4f28 - x; } - // s[4.12] sinx = x - x^3/6 + x5/128; + // sinx = x - x^3/6 + x5/128; word x1 = >x<<3; // u[1.15] - word x2 = mul_u16_sel(x1, x1, 0); // u[2.14] x^2 - word x3 = mul_u16_sel(x2, x1, 1); // u[2.14] x^3 - word x3_6 = mul_u16_sel(x3, $10000/6, 1); // u[1.15] x^3/6; + 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 = mul_u16_sel(x3, x1, 0); // u[3.13] x^4 - word x5 = mul_u16_sel(x4, x1, 0); // u[4.12] x^5 + 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] @@ -83,6 +102,37 @@ signed word sin16s(dword x) { return sinx; } +// Calculate signed byte sinus sin(x) +// x: unsigned word input u[4.12] in the interval $0000 - PI2_u4f12 +// result: signed byte sin(x) s[0.7] - using the full range -$7f - $7f +signed byte sin8s(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; + byte x1 = >x<<3; // u[1.7] + byte x2 = mulu8_sel(x1, x1, 0); // u[2.6] x^2 + byte x3 = mulu8_sel(x2, x1, 1); // u[2.6] x^3 + byte x3_6 = mulu8_sel(x3, $100/6, 1); // u[1.7] x^3/6; + byte usinx = x1 - x3_6; // u[1.7] x - x^3/6 + byte x4 = mulu8_sel(x3, x1, 0); // u[3.5] x^4 + byte x5 = mulu8_sel(x4, x1, 0); // u[4.4] x^5 + byte x5_128 = x5>>4; // // u[1.7] x^5/128 -- much more efficient than mul_u16_sel(x5, $10000/128, 3); + usinx = usinx + x5_128; // u[1.7] (first bit is always zero) + signed byte sinx = (signed byte)usinx; // s[0.7] + if(isUpper!=0) { + sinx = -(signed byte)usinx; // s[0.7]; + } + return sinx; +} + + // Generate (small) signed word sinus table - in the limited -$fff - $fff range // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -103,13 +153,13 @@ void sin16ss_gen(signed word* sintab, word wavelength) { x1 = PI_u4f12 - x1; } // s[4.12] sinx = x - x^3/6 + x5/128; - word x2 = mul_u16_sel(x1, x1, 4); // u[4.12] - word x3 = mul_u16_sel(x2, x1, 4); // u[4.12] - word x3_6 = mul_u16_sel(x3, $10000/6, 0); // u[4.12] - u[0.16] div6 = 1/6; + word x2 = mulu16_sel(x1, x1, 4); // u[4.12] + word x3 = mulu16_sel(x2, x1, 4); // u[4.12] + word x3_6 = mulu16_sel(x3, $10000/6, 0); // u[4.12] - u[0.16] div6 = 1/6; word usinx = x1 - x3_6; // u[4.12] - word x4 = mul_u16_sel(x3, x1, 4); // u[4.12] - word x5 = mul_u16_sel(x4, x1, 4); // u[4.12] - word x5_128 = mul_u16_sel(x5, $10000/128, 0); // u[4.12] - u[0.16] div128 = 1/128; + word x4 = mulu16_sel(x3, x1, 4); // u[4.12] + word x5 = mulu16_sel(x4, x1, 4); // u[4.12] + word x5_128 = mulu16_sel(x5, $10000/128, 0); // u[4.12] - u[0.16] div128 = 1/128; usinx = usinx + x5_128; signed word sinx; if(isUpper!=0) { @@ -125,10 +175,15 @@ void sin16ss_gen(signed word* sintab, word wavelength) { // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip -word mul_u16_sel(word v1, word v2, byte select) { +word mulu16_sel(word v1, word v2, byte select) { return >mul16u(v1, v2)<mul8u(v1, v2)<= (dword) PI_u4f28 + (boolean~) sin16s::$1 ← ! (boolean~) sin16s::$0 + if((boolean~) sin16s::$1) goto sin16s::@1 + (dword~) sin16s::$2 ← (dword) sin16s::x - (dword) PI_u4f28 + (dword) sin16s::x ← (dword~) sin16s::$2 + (byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 1 +sin16s::@1: + (boolean~) sin16s::$3 ← (dword) sin16s::x >= (dword) PI_HALF_u4f28 + (boolean~) sin16s::$4 ← ! (boolean~) sin16s::$3 + if((boolean~) sin16s::$4) goto sin16s::@2 + (dword~) sin16s::$5 ← (dword) PI_u4f28 - (dword) sin16s::x + (dword) sin16s::x ← (dword~) sin16s::$5 +sin16s::@2: + (dword~) sin16s::$6 ← (dword) sin16s::x << (byte/signed byte/word/signed word/dword/signed dword) 3 + (word~) sin16s::$7 ← > (dword~) sin16s::$6 + (word) sin16s::x1 ← (word~) sin16s::$7 + (word~) sin16s::$8 ← call mulu16_sel (word) sin16s::x1 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16s::x2 ← (word~) sin16s::$8 + (word~) sin16s::$9 ← call mulu16_sel (word) sin16s::x2 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) sin16s::x3 ← (word~) sin16s::$9 + (word/signed word/dword/signed dword~) sin16s::$10 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 + (word~) sin16s::$11 ← call mulu16_sel (word) sin16s::x3 (word/signed word/dword/signed dword~) sin16s::$10 (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) sin16s::x3_6 ← (word~) sin16s::$11 + (word~) sin16s::$12 ← (word) sin16s::x1 - (word) sin16s::x3_6 + (word) sin16s::usinx ← (word~) sin16s::$12 + (word~) sin16s::$13 ← call mulu16_sel (word) sin16s::x3 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16s::x4 ← (word~) sin16s::$13 + (word~) sin16s::$14 ← call mulu16_sel (word) sin16s::x4 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16s::x5 ← (word~) sin16s::$14 + (word~) sin16s::$15 ← (word) sin16s::x5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + (word) sin16s::x5_128 ← (word~) sin16s::$15 + (word~) sin16s::$16 ← (word) sin16s::usinx + (word) sin16s::x5_128 + (word) sin16s::usinx ← (word~) sin16s::$16 + (signed word~) sin16s::$17 ← ((signed word)) (word) sin16s::usinx + (signed word) sin16s::sinx ← (signed word~) sin16s::$17 + (boolean~) sin16s::$18 ← (byte) sin16s::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin16s::$19 ← ! (boolean~) sin16s::$18 + if((boolean~) sin16s::$19) goto sin16s::@3 + (signed word~) sin16s::$20 ← ((signed word)) (word) sin16s::usinx + (signed word~) sin16s::$21 ← - (signed word~) sin16s::$20 + (signed word) sin16s::sinx ← (signed word~) sin16s::$21 +sin16s::@3: + (signed word) sin16s::return ← (signed word) sin16s::sinx + goto sin16s::@return +sin16s::@return: + (signed word) sin16s::return ← (signed word) sin16s::return + return (signed word) sin16s::return +endproc // sin16s() +proc (signed byte()) sin8s((word) sin8s::x) + (byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin8s::$0 ← (word) sin8s::x >= (word) PI_u4f12 + (boolean~) sin8s::$1 ← ! (boolean~) sin8s::$0 + if((boolean~) sin8s::$1) goto sin8s::@1 + (word~) sin8s::$2 ← (word) sin8s::x - (word) PI_u4f12 + (word) sin8s::x ← (word~) sin8s::$2 + (byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 1 +sin8s::@1: + (boolean~) sin8s::$3 ← (word) sin8s::x >= (word) PI_HALF_u4f12 + (boolean~) sin8s::$4 ← ! (boolean~) sin8s::$3 + if((boolean~) sin8s::$4) goto sin8s::@2 + (word~) sin8s::$5 ← (word) PI_u4f12 - (word) sin8s::x + (word) sin8s::x ← (word~) sin8s::$5 +sin8s::@2: + (word~) sin8s::$6 ← (word) sin8s::x << (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) sin8s::$7 ← > (word~) sin8s::$6 + (byte) sin8s::x1 ← (byte~) sin8s::$7 + (byte~) sin8s::$8 ← call mulu8_sel (byte) sin8s::x1 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) sin8s::x2 ← (byte~) sin8s::$8 + (byte~) sin8s::$9 ← call mulu8_sel (byte) sin8s::x2 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) sin8s::x3 ← (byte~) sin8s::$9 + (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$10 ← (word/signed word/dword/signed dword) 256 / (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte~) sin8s::$11 ← call mulu8_sel (byte) sin8s::x3 (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$10 (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) sin8s::x3_6 ← (byte~) sin8s::$11 + (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$12 ← (byte) sin8s::x1 - (byte) sin8s::x3_6 + (byte) sin8s::usinx ← (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$12 + (byte~) sin8s::$13 ← call mulu8_sel (byte) sin8s::x3 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) sin8s::x4 ← (byte~) sin8s::$13 + (byte~) sin8s::$14 ← call mulu8_sel (byte) sin8s::x4 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) sin8s::x5 ← (byte~) sin8s::$14 + (byte~) sin8s::$15 ← (byte) sin8s::x5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) sin8s::x5_128 ← (byte~) sin8s::$15 + (byte/word~) sin8s::$16 ← (byte) sin8s::usinx + (byte) sin8s::x5_128 + (byte) sin8s::usinx ← (byte/word~) sin8s::$16 + (signed byte~) sin8s::$17 ← ((signed byte)) (byte) sin8s::usinx + (signed byte) sin8s::sinx ← (signed byte~) sin8s::$17 + (boolean~) sin8s::$18 ← (byte) sin8s::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin8s::$19 ← ! (boolean~) sin8s::$18 + if((boolean~) sin8s::$19) goto sin8s::@3 + (signed byte~) sin8s::$20 ← ((signed byte)) (byte) sin8s::usinx + (signed byte~) sin8s::$21 ← - (signed byte~) sin8s::$20 + (signed byte) sin8s::sinx ← (signed byte~) sin8s::$21 +sin8s::@3: + (signed byte) sin8s::return ← (signed byte) sin8s::sinx + goto sin8s::@return +sin8s::@return: + (signed byte) sin8s::return ← (signed byte) sin8s::return + return (signed byte) sin8s::return +endproc // sin8s() +proc (void()) sin16ss_gen((signed word*) sin16ss_gen::sintab , (word) sin16ss_gen::wavelength) + (dword~) sin16ss_gen::$0 ← call div32u16u (dword) PI2_u4f28 (word) sin16ss_gen::wavelength + (dword) sin16ss_gen::step ← (dword~) sin16ss_gen::$0 + (dword) sin16ss_gen::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16ss_gen::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 +sin16ss_gen::@1: + (word~) sin16ss_gen::$1 ← > (dword) sin16ss_gen::x + (word) sin16ss_gen::x1 ← (word~) sin16ss_gen::$1 + (byte) sin16ss_gen::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin16ss_gen::$2 ← (word) sin16ss_gen::x1 >= (word) PI_u4f12 + (boolean~) sin16ss_gen::$3 ← ! (boolean~) sin16ss_gen::$2 + if((boolean~) sin16ss_gen::$3) goto sin16ss_gen::@2 + (word~) sin16ss_gen::$4 ← (word) sin16ss_gen::x1 - (word) PI_u4f12 + (word) sin16ss_gen::x1 ← (word~) sin16ss_gen::$4 + (byte) sin16ss_gen::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 1 +sin16ss_gen::@2: + (boolean~) sin16ss_gen::$5 ← (word) sin16ss_gen::x1 >= (word) PI_HALF_u4f12 + (boolean~) sin16ss_gen::$6 ← ! (boolean~) sin16ss_gen::$5 + if((boolean~) sin16ss_gen::$6) goto sin16ss_gen::@3 + (word~) sin16ss_gen::$7 ← (word) PI_u4f12 - (word) sin16ss_gen::x1 + (word) sin16ss_gen::x1 ← (word~) sin16ss_gen::$7 +sin16ss_gen::@3: + (word~) sin16ss_gen::$8 ← call mulu16_sel (word) sin16ss_gen::x1 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 + (word) sin16ss_gen::x2 ← (word~) sin16ss_gen::$8 + (word~) sin16ss_gen::$9 ← call mulu16_sel (word) sin16ss_gen::x2 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 + (word) sin16ss_gen::x3 ← (word~) sin16ss_gen::$9 + (word/signed word/dword/signed dword~) sin16ss_gen::$10 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 + (word~) sin16ss_gen::$11 ← call mulu16_sel (word) sin16ss_gen::x3 (word/signed word/dword/signed dword~) sin16ss_gen::$10 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16ss_gen::x3_6 ← (word~) sin16ss_gen::$11 + (word~) sin16ss_gen::$12 ← (word) sin16ss_gen::x1 - (word) sin16ss_gen::x3_6 + (word) sin16ss_gen::usinx ← (word~) sin16ss_gen::$12 + (word~) sin16ss_gen::$13 ← call mulu16_sel (word) sin16ss_gen::x3 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 + (word) sin16ss_gen::x4 ← (word~) sin16ss_gen::$13 + (word~) sin16ss_gen::$14 ← call mulu16_sel (word) sin16ss_gen::x4 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 + (word) sin16ss_gen::x5 ← (word~) sin16ss_gen::$14 + (word/signed word/dword/signed dword~) sin16ss_gen::$15 ← (dword/signed dword) 65536 / (byte/word/signed word/dword/signed dword) 128 + (word~) sin16ss_gen::$16 ← call mulu16_sel (word) sin16ss_gen::x5 (word/signed word/dword/signed dword~) sin16ss_gen::$15 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16ss_gen::x5_128 ← (word~) sin16ss_gen::$16 + (word~) sin16ss_gen::$17 ← (word) sin16ss_gen::usinx + (word) sin16ss_gen::x5_128 + (word) sin16ss_gen::usinx ← (word~) sin16ss_gen::$17 + (boolean~) sin16ss_gen::$18 ← (byte) sin16ss_gen::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin16ss_gen::$19 ← ! (boolean~) sin16ss_gen::$18 + if((boolean~) sin16ss_gen::$19) goto sin16ss_gen::@4 + (signed word~) sin16ss_gen::$20 ← ((signed word)) (word) sin16ss_gen::usinx + (signed word~) sin16ss_gen::$21 ← - (signed word~) sin16ss_gen::$20 + (signed word) sin16ss_gen::sinx ← (signed word~) sin16ss_gen::$21 + goto sin16ss_gen::@5 +sin16ss_gen::@4: + (signed word~) sin16ss_gen::$22 ← ((signed word)) (word) sin16ss_gen::usinx + (signed word) sin16ss_gen::sinx ← (signed word~) sin16ss_gen::$22 +sin16ss_gen::@5: + *((signed word*) sin16ss_gen::sintab) ← (signed word) sin16ss_gen::sinx + (signed word*~) sin16ss_gen::$23 ← (signed word*) sin16ss_gen::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2 + (signed word*) sin16ss_gen::sintab ← (signed word*~) sin16ss_gen::$23 + (dword~) sin16ss_gen::$24 ← (dword) sin16ss_gen::x + (dword) sin16ss_gen::step + (dword) sin16ss_gen::x ← (dword~) sin16ss_gen::$24 + (word) sin16ss_gen::i ← ++ (word) sin16ss_gen::i + (boolean~) sin16ss_gen::$25 ← (word) sin16ss_gen::i < (word) sin16ss_gen::wavelength + if((boolean~) sin16ss_gen::$25) goto sin16ss_gen::@1 +sin16ss_gen::@return: + return +endproc // sin16ss_gen() +proc (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) + (dword~) mulu16_sel::$0 ← call mul16u (word) mulu16_sel::v1 (word) mulu16_sel::v2 + (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select + (word~) mulu16_sel::$2 ← > (dword~) mulu16_sel::$1 + (word) mulu16_sel::return ← (word~) mulu16_sel::$2 + goto mulu16_sel::@return +mulu16_sel::@return: + (word) mulu16_sel::return ← (word) mulu16_sel::return + return (word) mulu16_sel::return +endproc // mulu16_sel() +proc (byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select) + (word~) mulu8_sel::$0 ← call mul8u (byte) mulu8_sel::v1 (byte) mulu8_sel::v2 + (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select + (byte~) mulu8_sel::$2 ← > (word~) mulu8_sel::$1 + (byte) mulu8_sel::return ← (byte~) mulu8_sel::$2 + goto mulu8_sel::@return +mulu8_sel::@return: + (byte) mulu8_sel::return ← (byte) mulu8_sel::return + return (byte) mulu8_sel::return +endproc // mulu8_sel() (byte*) SCREEN ← (word/signed word/dword/signed dword) 1024 (byte*) line_cursor ← (byte*) SCREEN (byte*) char_cursor ← (byte*) line_cursor @@ -892,152 +1172,6 @@ main::@2: main::@return: return endproc // main() - (dword) PI2_u4f28 ← (dword/signed dword) 1686629713 - (dword) PI_u4f28 ← (dword/signed dword) 843314857 - (dword) PI_HALF_u4f28 ← (dword/signed dword) 421657428 - (word) PI2_u4f12 ← (word/signed word/dword/signed dword) 25736 - (word) PI_u4f12 ← (word/signed word/dword/signed dword) 12868 - (word) PI_HALF_u4f12 ← (word/signed word/dword/signed dword) 6434 -proc (void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength) - (dword~) sin16s_gen::$0 ← call div32u16u (dword) PI2_u4f28 (word) sin16s_gen::wavelength - (dword) sin16s_gen::step ← (dword~) sin16s_gen::$0 - (dword) sin16s_gen::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) sin16s_gen::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 -sin16s_gen::@1: - (signed word~) sin16s_gen::$1 ← call sin16s (dword) sin16s_gen::x - *((signed word*) sin16s_gen::sintab) ← (signed word~) sin16s_gen::$1 - (signed word*~) sin16s_gen::$2 ← (signed word*) sin16s_gen::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2 - (signed word*) sin16s_gen::sintab ← (signed word*~) sin16s_gen::$2 - (dword~) sin16s_gen::$3 ← (dword) sin16s_gen::x + (dword) sin16s_gen::step - (dword) sin16s_gen::x ← (dword~) sin16s_gen::$3 - (word) sin16s_gen::i ← ++ (word) sin16s_gen::i - (boolean~) sin16s_gen::$4 ← (word) sin16s_gen::i < (word) sin16s_gen::wavelength - if((boolean~) sin16s_gen::$4) goto sin16s_gen::@1 -sin16s_gen::@return: - return -endproc // sin16s_gen() -proc (signed word()) sin16s((dword) sin16s::x) - (byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) sin16s::$0 ← (dword) sin16s::x >= (dword) PI_u4f28 - (boolean~) sin16s::$1 ← ! (boolean~) sin16s::$0 - if((boolean~) sin16s::$1) goto sin16s::@1 - (dword~) sin16s::$2 ← (dword) sin16s::x - (dword) PI_u4f28 - (dword) sin16s::x ← (dword~) sin16s::$2 - (byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 1 -sin16s::@1: - (boolean~) sin16s::$3 ← (dword) sin16s::x >= (dword) PI_HALF_u4f28 - (boolean~) sin16s::$4 ← ! (boolean~) sin16s::$3 - if((boolean~) sin16s::$4) goto sin16s::@2 - (dword~) sin16s::$5 ← (dword) PI_u4f28 - (dword) sin16s::x - (dword) sin16s::x ← (dword~) sin16s::$5 -sin16s::@2: - (dword~) sin16s::$6 ← (dword) sin16s::x << (byte/signed byte/word/signed word/dword/signed dword) 3 - (word~) sin16s::$7 ← > (dword~) sin16s::$6 - (word) sin16s::x1 ← (word~) sin16s::$7 - (word~) sin16s::$8 ← call mul_u16_sel (word) sin16s::x1 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) sin16s::x2 ← (word~) sin16s::$8 - (word~) sin16s::$9 ← call mul_u16_sel (word) sin16s::x2 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 1 - (word) sin16s::x3 ← (word~) sin16s::$9 - (word/signed word/dword/signed dword~) sin16s::$10 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 - (word~) sin16s::$11 ← call mul_u16_sel (word) sin16s::x3 (word/signed word/dword/signed dword~) sin16s::$10 (byte/signed byte/word/signed word/dword/signed dword) 1 - (word) sin16s::x3_6 ← (word~) sin16s::$11 - (word~) sin16s::$12 ← (word) sin16s::x1 - (word) sin16s::x3_6 - (word) sin16s::usinx ← (word~) sin16s::$12 - (word~) sin16s::$13 ← call mul_u16_sel (word) sin16s::x3 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) sin16s::x4 ← (word~) sin16s::$13 - (word~) sin16s::$14 ← call mul_u16_sel (word) sin16s::x4 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) sin16s::x5 ← (word~) sin16s::$14 - (word~) sin16s::$15 ← (word) sin16s::x5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - (word) sin16s::x5_128 ← (word~) sin16s::$15 - (word~) sin16s::$16 ← (word) sin16s::usinx + (word) sin16s::x5_128 - (word) sin16s::usinx ← (word~) sin16s::$16 - (signed word~) sin16s::$17 ← ((signed word)) (word) sin16s::usinx - (signed word) sin16s::sinx ← (signed word~) sin16s::$17 - (boolean~) sin16s::$18 ← (byte) sin16s::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) sin16s::$19 ← ! (boolean~) sin16s::$18 - if((boolean~) sin16s::$19) goto sin16s::@3 - (signed word~) sin16s::$20 ← ((signed word)) (word) sin16s::usinx - (signed word~) sin16s::$21 ← - (signed word~) sin16s::$20 - (signed word) sin16s::sinx ← (signed word~) sin16s::$21 -sin16s::@3: - (signed word) sin16s::return ← (signed word) sin16s::sinx - goto sin16s::@return -sin16s::@return: - (signed word) sin16s::return ← (signed word) sin16s::return - return (signed word) sin16s::return -endproc // sin16s() -proc (void()) sin16ss_gen((signed word*) sin16ss_gen::sintab , (word) sin16ss_gen::wavelength) - (dword~) sin16ss_gen::$0 ← call div32u16u (dword) PI2_u4f28 (word) sin16ss_gen::wavelength - (dword) sin16ss_gen::step ← (dword~) sin16ss_gen::$0 - (dword) sin16ss_gen::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) sin16ss_gen::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 -sin16ss_gen::@1: - (word~) sin16ss_gen::$1 ← > (dword) sin16ss_gen::x - (word) sin16ss_gen::x1 ← (word~) sin16ss_gen::$1 - (byte) sin16ss_gen::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) sin16ss_gen::$2 ← (word) sin16ss_gen::x1 >= (word) PI_u4f12 - (boolean~) sin16ss_gen::$3 ← ! (boolean~) sin16ss_gen::$2 - if((boolean~) sin16ss_gen::$3) goto sin16ss_gen::@2 - (word~) sin16ss_gen::$4 ← (word) sin16ss_gen::x1 - (word) PI_u4f12 - (word) sin16ss_gen::x1 ← (word~) sin16ss_gen::$4 - (byte) sin16ss_gen::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 1 -sin16ss_gen::@2: - (boolean~) sin16ss_gen::$5 ← (word) sin16ss_gen::x1 >= (word) PI_HALF_u4f12 - (boolean~) sin16ss_gen::$6 ← ! (boolean~) sin16ss_gen::$5 - if((boolean~) sin16ss_gen::$6) goto sin16ss_gen::@3 - (word~) sin16ss_gen::$7 ← (word) PI_u4f12 - (word) sin16ss_gen::x1 - (word) sin16ss_gen::x1 ← (word~) sin16ss_gen::$7 -sin16ss_gen::@3: - (word~) sin16ss_gen::$8 ← call mul_u16_sel (word) sin16ss_gen::x1 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 - (word) sin16ss_gen::x2 ← (word~) sin16ss_gen::$8 - (word~) sin16ss_gen::$9 ← call mul_u16_sel (word) sin16ss_gen::x2 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 - (word) sin16ss_gen::x3 ← (word~) sin16ss_gen::$9 - (word/signed word/dword/signed dword~) sin16ss_gen::$10 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 - (word~) sin16ss_gen::$11 ← call mul_u16_sel (word) sin16ss_gen::x3 (word/signed word/dword/signed dword~) sin16ss_gen::$10 (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) sin16ss_gen::x3_6 ← (word~) sin16ss_gen::$11 - (word~) sin16ss_gen::$12 ← (word) sin16ss_gen::x1 - (word) sin16ss_gen::x3_6 - (word) sin16ss_gen::usinx ← (word~) sin16ss_gen::$12 - (word~) sin16ss_gen::$13 ← call mul_u16_sel (word) sin16ss_gen::x3 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 - (word) sin16ss_gen::x4 ← (word~) sin16ss_gen::$13 - (word~) sin16ss_gen::$14 ← call mul_u16_sel (word) sin16ss_gen::x4 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 - (word) sin16ss_gen::x5 ← (word~) sin16ss_gen::$14 - (word/signed word/dword/signed dword~) sin16ss_gen::$15 ← (dword/signed dword) 65536 / (byte/word/signed word/dword/signed dword) 128 - (word~) sin16ss_gen::$16 ← call mul_u16_sel (word) sin16ss_gen::x5 (word/signed word/dword/signed dword~) sin16ss_gen::$15 (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) sin16ss_gen::x5_128 ← (word~) sin16ss_gen::$16 - (word~) sin16ss_gen::$17 ← (word) sin16ss_gen::usinx + (word) sin16ss_gen::x5_128 - (word) sin16ss_gen::usinx ← (word~) sin16ss_gen::$17 - (boolean~) sin16ss_gen::$18 ← (byte) sin16ss_gen::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) sin16ss_gen::$19 ← ! (boolean~) sin16ss_gen::$18 - if((boolean~) sin16ss_gen::$19) goto sin16ss_gen::@4 - (signed word~) sin16ss_gen::$20 ← ((signed word)) (word) sin16ss_gen::usinx - (signed word~) sin16ss_gen::$21 ← - (signed word~) sin16ss_gen::$20 - (signed word) sin16ss_gen::sinx ← (signed word~) sin16ss_gen::$21 - goto sin16ss_gen::@5 -sin16ss_gen::@4: - (signed word~) sin16ss_gen::$22 ← ((signed word)) (word) sin16ss_gen::usinx - (signed word) sin16ss_gen::sinx ← (signed word~) sin16ss_gen::$22 -sin16ss_gen::@5: - *((signed word*) sin16ss_gen::sintab) ← (signed word) sin16ss_gen::sinx - (signed word*~) sin16ss_gen::$23 ← (signed word*) sin16ss_gen::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2 - (signed word*) sin16ss_gen::sintab ← (signed word*~) sin16ss_gen::$23 - (dword~) sin16ss_gen::$24 ← (dword) sin16ss_gen::x + (dword) sin16ss_gen::step - (dword) sin16ss_gen::x ← (dword~) sin16ss_gen::$24 - (word) sin16ss_gen::i ← ++ (word) sin16ss_gen::i - (boolean~) sin16ss_gen::$25 ← (word) sin16ss_gen::i < (word) sin16ss_gen::wavelength - if((boolean~) sin16ss_gen::$25) goto sin16ss_gen::@1 -sin16ss_gen::@return: - return -endproc // sin16ss_gen() -proc (word()) mul_u16_sel((word) mul_u16_sel::v1 , (word) mul_u16_sel::v2 , (byte) mul_u16_sel::select) - (dword~) mul_u16_sel::$0 ← call mul16u (word) mul_u16_sel::v1 (word) mul_u16_sel::v2 - (dword~) mul_u16_sel::$1 ← (dword~) mul_u16_sel::$0 << (byte) mul_u16_sel::select - (word~) mul_u16_sel::$2 ← > (dword~) mul_u16_sel::$1 - (word) mul_u16_sel::return ← (word~) mul_u16_sel::$2 - goto mul_u16_sel::@return -mul_u16_sel::@return: - (word) mul_u16_sel::return ← (word) mul_u16_sel::return - return (word) mul_u16_sel::return -endproc // mul_u16_sel() call main SYMBOLS @@ -1292,15 +1426,24 @@ SYMBOLS (word) mul8u::mb (word) mul8u::res (word) mul8u::return -(word()) mul_u16_sel((word) mul_u16_sel::v1 , (word) mul_u16_sel::v2 , (byte) mul_u16_sel::select) -(dword~) mul_u16_sel::$0 -(dword~) mul_u16_sel::$1 -(word~) mul_u16_sel::$2 -(label) mul_u16_sel::@return -(word) mul_u16_sel::return -(byte) mul_u16_sel::select -(word) mul_u16_sel::v1 -(word) mul_u16_sel::v2 +(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) +(dword~) mulu16_sel::$0 +(dword~) mulu16_sel::$1 +(word~) mulu16_sel::$2 +(label) mulu16_sel::@return +(word) mulu16_sel::return +(byte) mulu16_sel::select +(word) mulu16_sel::v1 +(word) mulu16_sel::v2 +(byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select) +(word~) mulu8_sel::$0 +(word~) mulu8_sel::$1 +(byte~) mulu8_sel::$2 +(label) mulu8_sel::@return +(byte) mulu8_sel::return +(byte) mulu8_sel::select +(byte) mulu8_sel::v1 +(byte) mulu8_sel::v2 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 (void~) print_byte::$1 @@ -1478,6 +1621,57 @@ SYMBOLS (word) sin16ss_gen::x4 (word) sin16ss_gen::x5 (word) sin16ss_gen::x5_128 +(signed byte()) sin8s((word) sin8s::x) +(boolean~) sin8s::$0 +(boolean~) sin8s::$1 +(byte/signed byte/word/signed word/dword/signed dword~) sin8s::$10 +(byte~) sin8s::$11 +(byte/signed byte/word/signed word/dword/signed dword~) sin8s::$12 +(byte~) sin8s::$13 +(byte~) sin8s::$14 +(byte~) sin8s::$15 +(byte/word~) sin8s::$16 +(signed byte~) sin8s::$17 +(boolean~) sin8s::$18 +(boolean~) sin8s::$19 +(word~) sin8s::$2 +(signed byte~) sin8s::$20 +(signed byte~) sin8s::$21 +(boolean~) sin8s::$3 +(boolean~) sin8s::$4 +(word~) sin8s::$5 +(word~) sin8s::$6 +(byte~) sin8s::$7 +(byte~) sin8s::$8 +(byte~) sin8s::$9 +(label) sin8s::@1 +(label) sin8s::@2 +(label) sin8s::@3 +(label) sin8s::@return +(byte) sin8s::isUpper +(signed byte) sin8s::return +(signed byte) sin8s::sinx +(byte) sin8s::usinx +(word) sin8s::x +(byte) sin8s::x1 +(byte) sin8s::x2 +(byte) sin8s::x3 +(byte) sin8s::x3_6 +(byte) sin8s::x4 +(byte) sin8s::x5 +(byte) sin8s::x5_128 +(void()) sin8s_gen((signed byte*) sin8s_gen::sintab , (word) sin8s_gen::wavelength) +(word~) sin8s_gen::$0 +(signed byte~) sin8s_gen::$1 +(word~) sin8s_gen::$2 +(boolean~) sin8s_gen::$3 +(label) sin8s_gen::@1 +(label) sin8s_gen::@return +(word) sin8s_gen::i +(signed byte*) sin8s_gen::sintab +(word) sin8s_gen::step +(word) sin8s_gen::wavelength +(word) sin8s_gen::x Fixing lo/hi-lvalue with new tmpVar mul8s::$16 mul8s::$16 ← mul8s::$8 Fixing lo/hi-lvalue with new tmpVar mul8s::$17 mul8s::$17 ← mul8s::$14 @@ -1941,208 +2135,13 @@ mul16s::@return: scope:[mul16s] from mul16s::@2 mul16s::@5 mul16s::@5: scope:[mul16s] from to:mul16s::@return @11: scope:[] from @10 - (byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024 - (byte*) line_cursor ← (byte*) SCREEN - (byte*) char_cursor ← (byte*) line_cursor - to:@12 -print_str: scope:[print_str] from - to:print_str::@1 -print_str::@1: scope:[print_str] from print_str print_str::@2 - (boolean~) print_str::$0 ← *((byte*) print_str::str) != (byte) '@' - if((boolean~) print_str::$0) goto print_str::@2 - to:print_str::@4 -print_str::@2: scope:[print_str] from print_str::@1 print_str::@5 - *((byte*) char_cursor) ← *((byte*) print_str::str) - (byte*) char_cursor ← ++ (byte*) char_cursor - (byte*) print_str::str ← ++ (byte*) print_str::str - to:print_str::@1 -print_str::@4: scope:[print_str] from print_str::@1 - to:print_str::@3 -print_str::@3: scope:[print_str] from print_str::@4 print_str::@6 - to:print_str::@return -print_str::@5: scope:[print_str] from - to:print_str::@2 -print_str::@6: scope:[print_str] from - to:print_str::@3 -print_str::@return: scope:[print_str] from print_str::@3 - return - to:@return -@12: scope:[] from @11 - to:@13 -print_ln: scope:[print_ln] from - to:print_ln::@1 -print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - (byte*~) print_ln::$0 ← (byte*) line_cursor + (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte*) line_cursor ← (byte*~) print_ln::$0 - (boolean~) print_ln::$1 ← (byte*) line_cursor < (byte*) char_cursor - if((boolean~) print_ln::$1) goto print_ln::@1 - to:print_ln::@2 -print_ln::@2: scope:[print_ln] from print_ln::@1 - (byte*) char_cursor ← (byte*) line_cursor - to:print_ln::@return -print_ln::@return: scope:[print_ln] from print_ln::@2 - return - to:@return -@13: scope:[] from @12 - to:@14 -print_sword: scope:[print_sword] from - (boolean~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0 - if((boolean~) print_sword::$1) goto print_sword::@1 - to:print_sword::@2 -print_sword::@1: scope:[print_sword] from print_sword print_sword::@2 - (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w - (void~) print_sword::$5 ← call print_word (word~) print_sword::$4 - to:print_sword::@return -print_sword::@2: scope:[print_sword] from print_sword - (void~) print_sword::$2 ← call print_char (byte) '-' - (signed word~) print_sword::$3 ← - (signed word) print_sword::w - (signed word) print_sword::w ← (signed word~) print_sword::$3 - to:print_sword::@1 -print_sword::@return: scope:[print_sword] from print_sword::@1 - return - to:@return -@14: scope:[] from @13 - to:@15 -print_sbyte: scope:[print_sbyte] from - (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0 - if((boolean~) print_sbyte::$1) goto print_sbyte::@1 - to:print_sbyte::@2 -print_sbyte::@1: scope:[print_sbyte] from print_sbyte print_sbyte::@2 - (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b - (void~) print_sbyte::$5 ← call print_byte (byte~) print_sbyte::$4 - to:print_sbyte::@return -print_sbyte::@2: scope:[print_sbyte] from print_sbyte - (void~) print_sbyte::$2 ← call print_char (byte) '-' - (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b - (signed byte) print_sbyte::b ← (signed byte~) print_sbyte::$3 - to:print_sbyte::@1 -print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 - return - to:@return -@15: scope:[] from @14 - to:@16 -print_word: scope:[print_word] from - (byte~) print_word::$0 ← > (word) print_word::w - (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 - (byte~) print_word::$2 ← < (word) print_word::w - (void~) print_word::$3 ← call print_byte (byte~) print_word::$2 - to:print_word::@return -print_word::@return: scope:[print_word] from print_word - return - to:@return -@16: scope:[] from @15 - to:@17 -print_dword: scope:[print_dword] from - (word~) print_dword::$0 ← > (dword) print_dword::dw - (void~) print_dword::$1 ← call print_word (word~) print_dword::$0 - (word~) print_dword::$2 ← < (dword) print_dword::dw - (void~) print_dword::$3 ← call print_word (word~) print_dword::$2 - to:print_dword::@return -print_dword::@return: scope:[print_dword] from print_dword - return - to:@return -@17: scope:[] from @16 - to:@18 -print_sdword: scope:[print_sdword] from - (boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0 - if((boolean~) print_sdword::$1) goto print_sdword::@1 - to:print_sdword::@2 -print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@2 - (dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw - (void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4 - to:print_sdword::@return -print_sdword::@2: scope:[print_sdword] from print_sdword - (void~) print_sdword::$2 ← call print_char (byte) '-' - (signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw - (signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3 - to:print_sdword::@1 -print_sdword::@return: scope:[print_sdword] from print_sdword::@1 - return - to:@return -@18: scope:[] from @17 - to:@19 -print_byte: scope:[print_byte] from - (byte[]) print_byte::hextab ← (string) "0123456789abcdef" - (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4 - (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) - (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word/dword/signed dword) 15 - (void~) print_byte::$3 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$2) - to:print_byte::@return -print_byte::@return: scope:[print_byte] from print_byte - return - to:@return -@19: scope:[] from @18 - to:@20 -print_char: scope:[print_char] from - *((byte*) char_cursor) ← (byte) print_char::ch - (byte*) char_cursor ← ++ (byte*) char_cursor - to:print_char::@return -print_char::@return: scope:[print_char] from print_char - return - to:@return -@20: scope:[] from @19 - to:@21 -print_cls: scope:[print_cls] from - (byte*) print_cls::sc ← (byte*) SCREEN - to:print_cls::@1 -print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - *((byte*) print_cls::sc) ← (byte) ' ' - (byte*) print_cls::sc ← ++ (byte*) print_cls::sc - (byte*~) print_cls::$0 ← (byte*) SCREEN + (word/signed word/dword/signed dword) 1000 - (boolean~) print_cls::$1 ← (byte*) print_cls::sc != (byte*~) print_cls::$0 - if((boolean~) print_cls::$1) goto print_cls::@1 - to:print_cls::@2 -print_cls::@2: scope:[print_cls] from print_cls::@1 - (byte*) line_cursor ← (byte*) SCREEN - (byte*) char_cursor ← (byte*) line_cursor - to:print_cls::@return -print_cls::@return: scope:[print_cls] from print_cls::@2 - return - to:@return -@21: scope:[] from @20 - to:@22 -main: scope:[main] from - (word) main::wavelength ← (byte/signed byte/word/signed word/dword/signed dword) 120 - (signed word[120]) main::sintab1 ← { fill( 120, 0) } - (void~) main::$0 ← call sin16s_gen (signed word[120]) main::sintab1 (word) main::wavelength - (void~) main::$1 ← call print_cls - (signed word*) main::st1 ← (signed word[120]) main::sintab1 - to:main::@1 -main::@1: scope:[main] from main main::@2 - (signed word) main::sw ← *((signed word*) main::st1) - (boolean~) main::$2 ← (signed word) main::sw >= (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) main::$3 ← ! (boolean~) main::$2 - if((boolean~) main::$3) goto main::@2 - to:main::@3 -main::@2: scope:[main] from main::@1 main::@3 - (void~) main::$5 ← call print_sword (signed word) main::sw - (void~) main::$6 ← call print_str (string) " @" - (signed word*~) main::$7 ← (signed word*) main::st1 + (byte/signed byte/word/signed word/dword/signed dword) 2 - (signed word*) main::st1 ← (signed word*~) main::$7 - (word~) main::$8 ← (word) main::wavelength * (byte/signed byte/word/signed word/dword/signed dword) 2 - (signed word*~) main::$9 ← (signed word[120]) main::sintab1 + (word~) main::$8 - (boolean~) main::$10 ← (signed word*) main::st1 < (signed word*~) main::$9 - if((boolean~) main::$10) goto main::@1 - to:main::@4 -main::@3: scope:[main] from main::@1 - (void~) main::$4 ← call print_str (string) " @" - to:main::@2 -main::@4: scope:[main] from main::@2 - to:main::@return -main::@return: scope:[main] from main::@4 - return - to:@return -@22: scope:[] from @21 (dword) PI2_u4f28 ← (dword/signed dword) 1686629713 (dword) PI_u4f28 ← (dword/signed dword) 843314857 (dword) PI_HALF_u4f28 ← (dword/signed dword) 421657428 (word) PI2_u4f12 ← (word/signed word/dword/signed dword) 25736 (word) PI_u4f12 ← (word/signed word/dword/signed dword) 12868 (word) PI_HALF_u4f12 ← (word/signed word/dword/signed dword) 6434 - to:@23 + to:@12 sin16s_gen: scope:[sin16s_gen] from (dword~) sin16s_gen::$0 ← call div32u16u (dword) PI2_u4f28 (word) sin16s_gen::wavelength (dword) sin16s_gen::step ← (dword~) sin16s_gen::$0 @@ -2165,8 +2164,31 @@ sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen::@1 sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@2 return to:@return -@23: scope:[] from @22 - to:@24 +@12: scope:[] from @11 + to:@13 +sin8s_gen: scope:[sin8s_gen] from + (word~) sin8s_gen::$0 ← call div16u (word) PI2_u4f12 (word) sin8s_gen::wavelength + (word) sin8s_gen::step ← (word~) sin8s_gen::$0 + (word) sin8s_gen::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin8s_gen::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:sin8s_gen::@1 +sin8s_gen::@1: scope:[sin8s_gen] from sin8s_gen sin8s_gen::@1 + (signed byte~) sin8s_gen::$1 ← call sin8s (word) sin8s_gen::x + *((signed byte*) sin8s_gen::sintab) ← (signed byte~) sin8s_gen::$1 + (signed byte*) sin8s_gen::sintab ← ++ (signed byte*) sin8s_gen::sintab + (word~) sin8s_gen::$2 ← (word) sin8s_gen::x + (word) sin8s_gen::step + (word) sin8s_gen::x ← (word~) sin8s_gen::$2 + (word) sin8s_gen::i ← ++ (word) sin8s_gen::i + (boolean~) sin8s_gen::$3 ← (word) sin8s_gen::i < (word) sin8s_gen::wavelength + if((boolean~) sin8s_gen::$3) goto sin8s_gen::@1 + to:sin8s_gen::@2 +sin8s_gen::@2: scope:[sin8s_gen] from sin8s_gen::@1 + to:sin8s_gen::@return +sin8s_gen::@return: scope:[sin8s_gen] from sin8s_gen::@2 + return + to:@return +@13: scope:[] from @12 + to:@14 sin16s: scope:[sin16s] from (byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 (boolean~) sin16s::$0 ← (dword) sin16s::x >= (dword) PI_u4f28 @@ -2187,18 +2209,18 @@ sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 (dword~) sin16s::$6 ← (dword) sin16s::x << (byte/signed byte/word/signed word/dword/signed dword) 3 (word~) sin16s::$7 ← > (dword~) sin16s::$6 (word) sin16s::x1 ← (word~) sin16s::$7 - (word~) sin16s::$8 ← call mul_u16_sel (word) sin16s::x1 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word~) sin16s::$8 ← call mulu16_sel (word) sin16s::x1 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 (word) sin16s::x2 ← (word~) sin16s::$8 - (word~) sin16s::$9 ← call mul_u16_sel (word) sin16s::x2 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 1 + (word~) sin16s::$9 ← call mulu16_sel (word) sin16s::x2 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 1 (word) sin16s::x3 ← (word~) sin16s::$9 (word/signed word/dword/signed dword~) sin16s::$10 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 - (word~) sin16s::$11 ← call mul_u16_sel (word) sin16s::x3 (word/signed word/dword/signed dword~) sin16s::$10 (byte/signed byte/word/signed word/dword/signed dword) 1 + (word~) sin16s::$11 ← call mulu16_sel (word) sin16s::x3 (word/signed word/dword/signed dword~) sin16s::$10 (byte/signed byte/word/signed word/dword/signed dword) 1 (word) sin16s::x3_6 ← (word~) sin16s::$11 (word~) sin16s::$12 ← (word) sin16s::x1 - (word) sin16s::x3_6 (word) sin16s::usinx ← (word~) sin16s::$12 - (word~) sin16s::$13 ← call mul_u16_sel (word) sin16s::x3 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word~) sin16s::$13 ← call mulu16_sel (word) sin16s::x3 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 (word) sin16s::x4 ← (word~) sin16s::$13 - (word~) sin16s::$14 ← call mul_u16_sel (word) sin16s::x4 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word~) sin16s::$14 ← call mulu16_sel (word) sin16s::x4 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 (word) sin16s::x5 ← (word~) sin16s::$14 (word~) sin16s::$15 ← (word) sin16s::x5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 (word) sin16s::x5_128 ← (word~) sin16s::$15 @@ -2228,8 +2250,71 @@ sin16s::@return: scope:[sin16s] from sin16s::@3 sin16s::@7 to:@return sin16s::@7: scope:[sin16s] from to:sin16s::@return -@24: scope:[] from @23 - to:@25 +@14: scope:[] from @13 + to:@15 +sin8s: scope:[sin8s] from + (byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin8s::$0 ← (word) sin8s::x >= (word) PI_u4f12 + (boolean~) sin8s::$1 ← ! (boolean~) sin8s::$0 + if((boolean~) sin8s::$1) goto sin8s::@1 + to:sin8s::@4 +sin8s::@1: scope:[sin8s] from sin8s sin8s::@4 + (boolean~) sin8s::$3 ← (word) sin8s::x >= (word) PI_HALF_u4f12 + (boolean~) sin8s::$4 ← ! (boolean~) sin8s::$3 + if((boolean~) sin8s::$4) goto sin8s::@2 + to:sin8s::@5 +sin8s::@4: scope:[sin8s] from sin8s + (word~) sin8s::$2 ← (word) sin8s::x - (word) PI_u4f12 + (word) sin8s::x ← (word~) sin8s::$2 + (byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:sin8s::@1 +sin8s::@2: scope:[sin8s] from sin8s::@1 sin8s::@5 + (word~) sin8s::$6 ← (word) sin8s::x << (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) sin8s::$7 ← > (word~) sin8s::$6 + (byte) sin8s::x1 ← (byte~) sin8s::$7 + (byte~) sin8s::$8 ← call mulu8_sel (byte) sin8s::x1 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) sin8s::x2 ← (byte~) sin8s::$8 + (byte~) sin8s::$9 ← call mulu8_sel (byte) sin8s::x2 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) sin8s::x3 ← (byte~) sin8s::$9 + (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$10 ← (word/signed word/dword/signed dword) 256 / (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte~) sin8s::$11 ← call mulu8_sel (byte) sin8s::x3 (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$10 (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) sin8s::x3_6 ← (byte~) sin8s::$11 + (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$12 ← (byte) sin8s::x1 - (byte) sin8s::x3_6 + (byte) sin8s::usinx ← (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$12 + (byte~) sin8s::$13 ← call mulu8_sel (byte) sin8s::x3 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) sin8s::x4 ← (byte~) sin8s::$13 + (byte~) sin8s::$14 ← call mulu8_sel (byte) sin8s::x4 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) sin8s::x5 ← (byte~) sin8s::$14 + (byte~) sin8s::$15 ← (byte) sin8s::x5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) sin8s::x5_128 ← (byte~) sin8s::$15 + (byte/word~) sin8s::$16 ← (byte) sin8s::usinx + (byte) sin8s::x5_128 + (byte) sin8s::usinx ← (byte/word~) sin8s::$16 + (signed byte~) sin8s::$17 ← ((signed byte)) (byte) sin8s::usinx + (signed byte) sin8s::sinx ← (signed byte~) sin8s::$17 + (boolean~) sin8s::$18 ← (byte) sin8s::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin8s::$19 ← ! (boolean~) sin8s::$18 + if((boolean~) sin8s::$19) goto sin8s::@3 + to:sin8s::@6 +sin8s::@5: scope:[sin8s] from sin8s::@1 + (word~) sin8s::$5 ← (word) PI_u4f12 - (word) sin8s::x + (word) sin8s::x ← (word~) sin8s::$5 + to:sin8s::@2 +sin8s::@3: scope:[sin8s] from sin8s::@2 sin8s::@6 + (signed byte) sin8s::return ← (signed byte) sin8s::sinx + to:sin8s::@return +sin8s::@6: scope:[sin8s] from sin8s::@2 + (signed byte~) sin8s::$20 ← ((signed byte)) (byte) sin8s::usinx + (signed byte~) sin8s::$21 ← - (signed byte~) sin8s::$20 + (signed byte) sin8s::sinx ← (signed byte~) sin8s::$21 + to:sin8s::@3 +sin8s::@return: scope:[sin8s] from sin8s::@3 sin8s::@7 + (signed byte) sin8s::return ← (signed byte) sin8s::return + return (signed byte) sin8s::return + to:@return +sin8s::@7: scope:[sin8s] from + to:sin8s::@return +@15: scope:[] from @14 + to:@16 sin16ss_gen: scope:[sin16ss_gen] from (dword~) sin16ss_gen::$0 ← call div32u16u (dword) PI2_u4f28 (word) sin16ss_gen::wavelength (dword) sin16ss_gen::step ← (dword~) sin16ss_gen::$0 @@ -2255,21 +2340,21 @@ sin16ss_gen::@6: scope:[sin16ss_gen] from sin16ss_gen::@1 (byte) sin16ss_gen::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:sin16ss_gen::@2 sin16ss_gen::@3: scope:[sin16ss_gen] from sin16ss_gen::@2 sin16ss_gen::@7 - (word~) sin16ss_gen::$8 ← call mul_u16_sel (word) sin16ss_gen::x1 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 + (word~) sin16ss_gen::$8 ← call mulu16_sel (word) sin16ss_gen::x1 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 (word) sin16ss_gen::x2 ← (word~) sin16ss_gen::$8 - (word~) sin16ss_gen::$9 ← call mul_u16_sel (word) sin16ss_gen::x2 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 + (word~) sin16ss_gen::$9 ← call mulu16_sel (word) sin16ss_gen::x2 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 (word) sin16ss_gen::x3 ← (word~) sin16ss_gen::$9 (word/signed word/dword/signed dword~) sin16ss_gen::$10 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 - (word~) sin16ss_gen::$11 ← call mul_u16_sel (word) sin16ss_gen::x3 (word/signed word/dword/signed dword~) sin16ss_gen::$10 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word~) sin16ss_gen::$11 ← call mulu16_sel (word) sin16ss_gen::x3 (word/signed word/dword/signed dword~) sin16ss_gen::$10 (byte/signed byte/word/signed word/dword/signed dword) 0 (word) sin16ss_gen::x3_6 ← (word~) sin16ss_gen::$11 (word~) sin16ss_gen::$12 ← (word) sin16ss_gen::x1 - (word) sin16ss_gen::x3_6 (word) sin16ss_gen::usinx ← (word~) sin16ss_gen::$12 - (word~) sin16ss_gen::$13 ← call mul_u16_sel (word) sin16ss_gen::x3 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 + (word~) sin16ss_gen::$13 ← call mulu16_sel (word) sin16ss_gen::x3 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 (word) sin16ss_gen::x4 ← (word~) sin16ss_gen::$13 - (word~) sin16ss_gen::$14 ← call mul_u16_sel (word) sin16ss_gen::x4 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 + (word~) sin16ss_gen::$14 ← call mulu16_sel (word) sin16ss_gen::x4 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 (word) sin16ss_gen::x5 ← (word~) sin16ss_gen::$14 (word/signed word/dword/signed dword~) sin16ss_gen::$15 ← (dword/signed dword) 65536 / (byte/word/signed word/dword/signed dword) 128 - (word~) sin16ss_gen::$16 ← call mul_u16_sel (word) sin16ss_gen::x5 (word/signed word/dword/signed dword~) sin16ss_gen::$15 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word~) sin16ss_gen::$16 ← call mulu16_sel (word) sin16ss_gen::x5 (word/signed word/dword/signed dword~) sin16ss_gen::$15 (byte/signed byte/word/signed word/dword/signed dword) 0 (word) sin16ss_gen::x5_128 ← (word~) sin16ss_gen::$16 (word~) sin16ss_gen::$17 ← (word) sin16ss_gen::usinx + (word) sin16ss_gen::x5_128 (word) sin16ss_gen::usinx ← (word~) sin16ss_gen::$17 @@ -2307,41 +2392,256 @@ sin16ss_gen::@10: scope:[sin16ss_gen] from sin16ss_gen::@5 sin16ss_gen::@return: scope:[sin16ss_gen] from sin16ss_gen::@10 return to:@return +@16: scope:[] from @15 + to:@17 +mulu16_sel: scope:[mulu16_sel] from + (dword~) mulu16_sel::$0 ← call mul16u (word) mulu16_sel::v1 (word) mulu16_sel::v2 + (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select + (word~) mulu16_sel::$2 ← > (dword~) mulu16_sel::$1 + (word) mulu16_sel::return ← (word~) mulu16_sel::$2 + to:mulu16_sel::@return +mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel mulu16_sel::@1 + (word) mulu16_sel::return ← (word) mulu16_sel::return + return (word) mulu16_sel::return + to:@return +mulu16_sel::@1: scope:[mulu16_sel] from + to:mulu16_sel::@return +@17: scope:[] from @16 + to:@18 +mulu8_sel: scope:[mulu8_sel] from + (word~) mulu8_sel::$0 ← call mul8u (byte) mulu8_sel::v1 (byte) mulu8_sel::v2 + (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select + (byte~) mulu8_sel::$2 ← > (word~) mulu8_sel::$1 + (byte) mulu8_sel::return ← (byte~) mulu8_sel::$2 + to:mulu8_sel::@return +mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel mulu8_sel::@1 + (byte) mulu8_sel::return ← (byte) mulu8_sel::return + return (byte) mulu8_sel::return + to:@return +mulu8_sel::@1: scope:[mulu8_sel] from + to:mulu8_sel::@return +@18: scope:[] from @17 + (byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024 + (byte*) line_cursor ← (byte*) SCREEN + (byte*) char_cursor ← (byte*) line_cursor + to:@19 +print_str: scope:[print_str] from + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (boolean~) print_str::$0 ← *((byte*) print_str::str) != (byte) '@' + if((boolean~) print_str::$0) goto print_str::@2 + to:print_str::@4 +print_str::@2: scope:[print_str] from print_str::@1 print_str::@5 + *((byte*) char_cursor) ← *((byte*) print_str::str) + (byte*) char_cursor ← ++ (byte*) char_cursor + (byte*) print_str::str ← ++ (byte*) print_str::str + to:print_str::@1 +print_str::@4: scope:[print_str] from print_str::@1 + to:print_str::@3 +print_str::@3: scope:[print_str] from print_str::@4 print_str::@6 + to:print_str::@return +print_str::@5: scope:[print_str] from + to:print_str::@2 +print_str::@6: scope:[print_str] from + to:print_str::@3 +print_str::@return: scope:[print_str] from print_str::@3 + return + to:@return +@19: scope:[] from @18 + to:@20 +print_ln: scope:[print_ln] from + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*~) print_ln::$0 ← (byte*) line_cursor + (byte/signed byte/word/signed word/dword/signed dword) 40 + (byte*) line_cursor ← (byte*~) print_ln::$0 + (boolean~) print_ln::$1 ← (byte*) line_cursor < (byte*) char_cursor + if((boolean~) print_ln::$1) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + (byte*) char_cursor ← (byte*) line_cursor + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + return + to:@return +@20: scope:[] from @19 + to:@21 +print_sword: scope:[print_sword] from + (boolean~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0 + if((boolean~) print_sword::$1) goto print_sword::@1 + to:print_sword::@2 +print_sword::@1: scope:[print_sword] from print_sword print_sword::@2 + (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w + (void~) print_sword::$5 ← call print_word (word~) print_sword::$4 + to:print_sword::@return +print_sword::@2: scope:[print_sword] from print_sword + (void~) print_sword::$2 ← call print_char (byte) '-' + (signed word~) print_sword::$3 ← - (signed word) print_sword::w + (signed word) print_sword::w ← (signed word~) print_sword::$3 + to:print_sword::@1 +print_sword::@return: scope:[print_sword] from print_sword::@1 + return + to:@return +@21: scope:[] from @20 + to:@22 +print_sbyte: scope:[print_sbyte] from + (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0 + if((boolean~) print_sbyte::$1) goto print_sbyte::@1 + to:print_sbyte::@2 +print_sbyte::@1: scope:[print_sbyte] from print_sbyte print_sbyte::@2 + (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b + (void~) print_sbyte::$5 ← call print_byte (byte~) print_sbyte::$4 + to:print_sbyte::@return +print_sbyte::@2: scope:[print_sbyte] from print_sbyte + (void~) print_sbyte::$2 ← call print_char (byte) '-' + (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b + (signed byte) print_sbyte::b ← (signed byte~) print_sbyte::$3 + to:print_sbyte::@1 +print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 + return + to:@return +@22: scope:[] from @21 + to:@23 +print_word: scope:[print_word] from + (byte~) print_word::$0 ← > (word) print_word::w + (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 + (byte~) print_word::$2 ← < (word) print_word::w + (void~) print_word::$3 ← call print_byte (byte~) print_word::$2 + to:print_word::@return +print_word::@return: scope:[print_word] from print_word + return + to:@return +@23: scope:[] from @22 + to:@24 +print_dword: scope:[print_dword] from + (word~) print_dword::$0 ← > (dword) print_dword::dw + (void~) print_dword::$1 ← call print_word (word~) print_dword::$0 + (word~) print_dword::$2 ← < (dword) print_dword::dw + (void~) print_dword::$3 ← call print_word (word~) print_dword::$2 + to:print_dword::@return +print_dword::@return: scope:[print_dword] from print_dword + return + to:@return +@24: scope:[] from @23 + to:@25 +print_sdword: scope:[print_sdword] from + (boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0 + if((boolean~) print_sdword::$1) goto print_sdword::@1 + to:print_sdword::@2 +print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@2 + (dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw + (void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4 + to:print_sdword::@return +print_sdword::@2: scope:[print_sdword] from print_sdword + (void~) print_sdword::$2 ← call print_char (byte) '-' + (signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw + (signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3 + to:print_sdword::@1 +print_sdword::@return: scope:[print_sdword] from print_sdword::@1 + return + to:@return @25: scope:[] from @24 to:@26 -mul_u16_sel: scope:[mul_u16_sel] from - (dword~) mul_u16_sel::$0 ← call mul16u (word) mul_u16_sel::v1 (word) mul_u16_sel::v2 - (dword~) mul_u16_sel::$1 ← (dword~) mul_u16_sel::$0 << (byte) mul_u16_sel::select - (word~) mul_u16_sel::$2 ← > (dword~) mul_u16_sel::$1 - (word) mul_u16_sel::return ← (word~) mul_u16_sel::$2 - to:mul_u16_sel::@return -mul_u16_sel::@return: scope:[mul_u16_sel] from mul_u16_sel mul_u16_sel::@1 - (word) mul_u16_sel::return ← (word) mul_u16_sel::return - return (word) mul_u16_sel::return +print_byte: scope:[print_byte] from + (byte[]) print_byte::hextab ← (string) "0123456789abcdef" + (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4 + (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) + (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word/dword/signed dword) 15 + (void~) print_byte::$3 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$2) + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte + return to:@return -mul_u16_sel::@1: scope:[mul_u16_sel] from - to:mul_u16_sel::@return @26: scope:[] from @25 + to:@27 +print_char: scope:[print_char] from + *((byte*) char_cursor) ← (byte) print_char::ch + (byte*) char_cursor ← ++ (byte*) char_cursor + to:print_char::@return +print_char::@return: scope:[print_char] from print_char + return + to:@return +@27: scope:[] from @26 + to:@28 +print_cls: scope:[print_cls] from + (byte*) print_cls::sc ← (byte*) SCREEN + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + *((byte*) print_cls::sc) ← (byte) ' ' + (byte*) print_cls::sc ← ++ (byte*) print_cls::sc + (byte*~) print_cls::$0 ← (byte*) SCREEN + (word/signed word/dword/signed dword) 1000 + (boolean~) print_cls::$1 ← (byte*) print_cls::sc != (byte*~) print_cls::$0 + if((boolean~) print_cls::$1) goto print_cls::@1 + to:print_cls::@2 +print_cls::@2: scope:[print_cls] from print_cls::@1 + (byte*) line_cursor ← (byte*) SCREEN + (byte*) char_cursor ← (byte*) line_cursor + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@2 + return + to:@return +@28: scope:[] from @27 + to:@29 +main: scope:[main] from + (word) main::wavelength ← (byte/signed byte/word/signed word/dword/signed dword) 120 + (signed word[120]) main::sintab1 ← { fill( 120, 0) } + (void~) main::$0 ← call sin16s_gen (signed word[120]) main::sintab1 (word) main::wavelength + (void~) main::$1 ← call print_cls + (signed word*) main::st1 ← (signed word[120]) main::sintab1 + to:main::@1 +main::@1: scope:[main] from main main::@2 + (signed word) main::sw ← *((signed word*) main::st1) + (boolean~) main::$2 ← (signed word) main::sw >= (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) main::$3 ← ! (boolean~) main::$2 + if((boolean~) main::$3) goto main::@2 + to:main::@3 +main::@2: scope:[main] from main::@1 main::@3 + (void~) main::$5 ← call print_sword (signed word) main::sw + (void~) main::$6 ← call print_str (string) " @" + (signed word*~) main::$7 ← (signed word*) main::st1 + (byte/signed byte/word/signed word/dword/signed dword) 2 + (signed word*) main::st1 ← (signed word*~) main::$7 + (word~) main::$8 ← (word) main::wavelength * (byte/signed byte/word/signed word/dword/signed dword) 2 + (signed word*~) main::$9 ← (signed word[120]) main::sintab1 + (word~) main::$8 + (boolean~) main::$10 ← (signed word*) main::st1 < (signed word*~) main::$9 + if((boolean~) main::$10) goto main::@1 + to:main::@4 +main::@3: scope:[main] from main::@1 + (void~) main::$4 ← call print_str (string) " @" + to:main::@2 +main::@4: scope:[main] from main::@2 + to:main::@return +main::@return: scope:[main] from main::@4 + return + to:@return +@29: scope:[] from @28 call main to:@end -@end: scope:[] from @26 +@end: scope:[] from @29 Removing unused procedure div8s Removing unused procedure div16s Removing unused procedure mul8s Removing unused procedure mul16s +Removing unused procedure sin8s_gen +Removing unused procedure sin16ss_gen Removing unused procedure print_ln Removing unused procedure print_sbyte Removing unused procedure print_sdword -Removing unused procedure sin16ss_gen Removing unused procedure div8u Removing unused procedure div16u -Removing unused procedure mul8u +Removing unused procedure sin8s Removing unused procedure print_dword Removing unused procedure divr8u +Removing unused procedure mulu8_sel +Removing unused procedure mul8u Eliminating unused variable (byte) rem8u and assignment [0] (byte) rem8u ← (byte/signed byte/word/signed word/dword/signed dword) 0 Eliminating unused variable (signed byte) rem8s and assignment [40] (signed byte) rem8s ← (byte/signed byte/word/signed word/dword/signed dword) 0 Eliminating unused variable (signed word) rem16s and assignment [41] (signed word) rem16s ← (byte/signed byte/word/signed word/dword/signed dword) 0 +Eliminating unused variable (word) PI2_u4f12 and assignment [62] (word) PI2_u4f12 ← (word/signed word/dword/signed dword) 25736 +Eliminating unused variable (word) PI_u4f12 and assignment [63] (word) PI_u4f12 ← (word/signed word/dword/signed dword) 12868 +Eliminating unused variable (word) PI_HALF_u4f12 and assignment [64] (word) PI_HALF_u4f12 ← (word/signed word/dword/signed dword) 6434 Eliminating unused variable - keeping the call (void~) print_sword::$5 Eliminating unused variable - keeping the call (void~) print_sword::$2 Eliminating unused variable - keeping the call (void~) print_word::$1 @@ -2353,9 +2653,6 @@ Eliminating unused variable - keeping the call (void~) main::$1 Eliminating unused variable - keeping the call (void~) main::$5 Eliminating unused variable - keeping the call (void~) main::$6 Eliminating unused variable - keeping the call (void~) main::$4 -Eliminating unused variable (word) PI2_u4f12 and assignment [122] (word) PI2_u4f12 ← (word/signed word/dword/signed dword) 25736 -Eliminating unused variable (word) PI_u4f12 and assignment [123] (word) PI_u4f12 ← (word/signed word/dword/signed dword) 12868 -Eliminating unused variable (word) PI_HALF_u4f12 and assignment [124] (word) PI_HALF_u4f12 ← (word/signed word/dword/signed dword) 6434 Creating constant string variable for inline (const string) print_byte::$4 "0123456789abcdef" Creating constant string variable for inline (const string) main::str " @" Creating constant string variable for inline (const string) main::str1 " @" @@ -2374,30 +2671,34 @@ Removing empty block mul16u::@6 Removing empty block mul16u::@8 Removing empty block mul16u::@9 Removing empty block @10 +Removing empty block sin16s_gen::@2 +Removing empty block @12 +Removing empty block @13 +Removing empty block sin16s::@7 +Removing empty block @14 +Removing empty block @15 +Removing empty block @16 +Removing empty block mulu16_sel::@1 +Removing empty block @17 Removing empty block print_str::@4 Removing empty block print_str::@3 Removing empty block print_str::@5 Removing empty block print_str::@6 -Removing empty block @12 -Removing empty block @13 -Removing empty block @14 -Removing empty block @15 -Removing empty block @16 -Removing empty block @17 -Removing empty block @18 Removing empty block @19 Removing empty block @20 Removing empty block @21 -Removing empty block main::@4 -Removing empty block sin16s_gen::@2 +Removing empty block @22 Removing empty block @23 -Removing empty block sin16s::@7 Removing empty block @24 Removing empty block @25 -Removing empty block mul_u16_sel::@1 +Removing empty block @26 +Removing empty block @27 +Removing empty block @28 +Removing empty block main::@4 PROCEDURE MODIFY VARIABLE ANALYSIS divr16u modifies rem16u div32u16u modifies rem16u +sin16s_gen modifies rem16u print_str modifies char_cursor print_sword modifies char_cursor print_word modifies char_cursor @@ -2408,7 +2709,6 @@ print_cls modifies char_cursor main modifies rem16u main modifies line_cursor main modifies char_cursor -sin16s_gen modifies rem16u Completing Phi functions... Completing Phi functions... @@ -2502,7 +2802,7 @@ divr16u::@return: scope:[divr16u] from divr16u::@6 return to:@return div32u16u: scope:[div32u16u] from sin16s_gen - (word) rem16u#20 ← phi( sin16s_gen/(word) rem16u#23 ) + (word) rem16u#20 ← phi( sin16s_gen/(word) rem16u#21 ) (word) div32u16u::divisor#1 ← phi( sin16s_gen/(word) div32u16u::divisor#0 ) (dword) div32u16u::dividend#1 ← phi( sin16s_gen/(dword) div32u16u::dividend#0 ) (word~) div32u16u::$0 ← > (dword) div32u16u::dividend#1 @@ -2544,9 +2844,9 @@ div32u16u::@return: scope:[div32u16u] from div32u16u::@3 (word) rem16u#5 ← (word) rem16u#14 return to:@return -mul16u: scope:[mul16u] from mul_u16_sel - (word) mul16u::a#5 ← phi( mul_u16_sel/(word) mul16u::a#1 ) - (word) mul16u::b#1 ← phi( mul_u16_sel/(word) mul16u::b#0 ) +mul16u: scope:[mul16u] from mulu16_sel + (word) mul16u::a#5 ← phi( mulu16_sel/(word) mul16u::a#1 ) + (word) mul16u::b#1 ← phi( mulu16_sel/(word) mul16u::b#0 ) (dword) mul16u::res#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#1 to:mul16u::@1 @@ -2592,11 +2892,215 @@ mul16u::@return: scope:[mul16u] from mul16u::@3 return to:@return @11: scope:[] from @2 - (word) rem16u#30 ← phi( @2/(word) rem16u#0 ) + (word) rem16u#29 ← phi( @2/(word) rem16u#0 ) + (dword) PI2_u4f28#0 ← (dword/signed dword) 1686629713 + (dword) PI_u4f28#0 ← (dword/signed dword) 843314857 + (dword) PI_HALF_u4f28#0 ← (dword/signed dword) 421657428 + to:@18 +sin16s_gen: scope:[sin16s_gen] from main + (signed word*) sin16s_gen::sintab#5 ← phi( main/(signed word*) sin16s_gen::sintab#1 ) + (word) rem16u#21 ← phi( main/(word) rem16u#23 ) + (word) sin16s_gen::wavelength#1 ← phi( main/(word) sin16s_gen::wavelength#0 ) + (dword) div32u16u::dividend#0 ← (dword) PI2_u4f28#0 + (word) div32u16u::divisor#0 ← (word) sin16s_gen::wavelength#1 + call div32u16u param-assignment + (dword) div32u16u::return#2 ← (dword) div32u16u::return#1 + to:sin16s_gen::@3 +sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen + (word) sin16s_gen::wavelength#4 ← phi( sin16s_gen/(word) sin16s_gen::wavelength#1 ) + (signed word*) sin16s_gen::sintab#4 ← phi( sin16s_gen/(signed word*) sin16s_gen::sintab#5 ) + (word) rem16u#15 ← phi( sin16s_gen/(word) rem16u#5 ) + (dword) div32u16u::return#4 ← phi( sin16s_gen/(dword) div32u16u::return#2 ) + (dword~) sin16s_gen::$0 ← (dword) div32u16u::return#4 + (word) rem16u#6 ← (word) rem16u#15 + (dword) sin16s_gen::step#0 ← (dword~) sin16s_gen::$0 + (dword) sin16s_gen::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16s_gen::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:sin16s_gen::@1 +sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@3 sin16s_gen::@4 + (word) rem16u#26 ← phi( sin16s_gen::@3/(word) rem16u#6 sin16s_gen::@4/(word) rem16u#22 ) + (word) sin16s_gen::wavelength#3 ← phi( sin16s_gen::@3/(word) sin16s_gen::wavelength#4 sin16s_gen::@4/(word) sin16s_gen::wavelength#2 ) + (word) sin16s_gen::i#3 ← phi( sin16s_gen::@3/(word) sin16s_gen::i#0 sin16s_gen::@4/(word) sin16s_gen::i#1 ) + (dword) sin16s_gen::step#2 ← phi( sin16s_gen::@3/(dword) sin16s_gen::step#0 sin16s_gen::@4/(dword) sin16s_gen::step#1 ) + (signed word*) sin16s_gen::sintab#3 ← phi( sin16s_gen::@3/(signed word*) sin16s_gen::sintab#4 sin16s_gen::@4/(signed word*) sin16s_gen::sintab#0 ) + (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@3/(dword) sin16s_gen::x#0 sin16s_gen::@4/(dword) sin16s_gen::x#1 ) + (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 + call sin16s param-assignment + (signed word) sin16s::return#0 ← (signed word) sin16s::return#2 + to:sin16s_gen::@4 +sin16s_gen::@4: scope:[sin16s_gen] from sin16s_gen::@1 + (word) rem16u#22 ← phi( sin16s_gen::@1/(word) rem16u#26 ) + (word) sin16s_gen::wavelength#2 ← phi( sin16s_gen::@1/(word) sin16s_gen::wavelength#3 ) + (word) sin16s_gen::i#2 ← phi( sin16s_gen::@1/(word) sin16s_gen::i#3 ) + (dword) sin16s_gen::step#1 ← phi( sin16s_gen::@1/(dword) sin16s_gen::step#2 ) + (dword) sin16s_gen::x#3 ← phi( sin16s_gen::@1/(dword) sin16s_gen::x#2 ) + (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@1/(signed word*) sin16s_gen::sintab#3 ) + (signed word) sin16s::return#3 ← phi( sin16s_gen::@1/(signed word) sin16s::return#0 ) + (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#3 + *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 + (signed word*~) sin16s_gen::$2 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + (signed word*) sin16s_gen::sintab#0 ← (signed word*~) sin16s_gen::$2 + (dword~) sin16s_gen::$3 ← (dword) sin16s_gen::x#3 + (dword) sin16s_gen::step#1 + (dword) sin16s_gen::x#1 ← (dword~) sin16s_gen::$3 + (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 + (boolean~) sin16s_gen::$4 ← (word) sin16s_gen::i#1 < (word) sin16s_gen::wavelength#2 + if((boolean~) sin16s_gen::$4) goto sin16s_gen::@1 + to:sin16s_gen::@return +sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@4 + (word) rem16u#16 ← phi( sin16s_gen::@4/(word) rem16u#22 ) + (word) rem16u#7 ← (word) rem16u#16 + return + to:@return +sin16s: scope:[sin16s] from sin16s_gen::@1 + (dword) sin16s::x#3 ← phi( sin16s_gen::@1/(dword) sin16s::x#0 ) + (byte) sin16s::isUpper#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin16s::$0 ← (dword) sin16s::x#3 >= (dword) PI_u4f28#0 + (boolean~) sin16s::$1 ← ! (boolean~) sin16s::$0 + if((boolean~) sin16s::$1) goto sin16s::@1 + to:sin16s::@4 +sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 + (byte) sin16s::isUpper#8 ← phi( sin16s/(byte) sin16s::isUpper#0 sin16s::@4/(byte) sin16s::isUpper#1 ) + (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#3 sin16s::@4/(dword) sin16s::x#1 ) + (boolean~) sin16s::$3 ← (dword) sin16s::x#4 >= (dword) PI_HALF_u4f28#0 + (boolean~) sin16s::$4 ← ! (boolean~) sin16s::$3 + if((boolean~) sin16s::$4) goto sin16s::@2 + to:sin16s::@5 +sin16s::@4: scope:[sin16s] from sin16s + (dword) sin16s::x#5 ← phi( sin16s/(dword) sin16s::x#3 ) + (dword~) sin16s::$2 ← (dword) sin16s::x#5 - (dword) PI_u4f28#0 + (dword) sin16s::x#1 ← (dword~) sin16s::$2 + (byte) sin16s::isUpper#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:sin16s::@1 +sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 + (byte) sin16s::isUpper#7 ← phi( sin16s::@1/(byte) sin16s::isUpper#8 sin16s::@5/(byte) sin16s::isUpper#9 ) + (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 + (word~) sin16s::$7 ← > (dword~) sin16s::$6 + (word) sin16s::x1#0 ← (word~) sin16s::$7 + (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + (byte) mulu16_sel::select#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + call mulu16_sel param-assignment + (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#6 + to:sin16s::@8 +sin16s::@8: scope:[sin16s] from sin16s::@2 + (byte) sin16s::isUpper#6 ← phi( sin16s::@2/(byte) sin16s::isUpper#7 ) + (word) sin16s::x1#1 ← phi( sin16s::@2/(word) sin16s::x1#0 ) + (word) mulu16_sel::return#7 ← phi( sin16s::@2/(word) mulu16_sel::return#0 ) + (word~) sin16s::$8 ← (word) mulu16_sel::return#7 + (word) sin16s::x2#0 ← (word~) sin16s::$8 + (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + (word) mulu16_sel::v2#1 ← (word) sin16s::x1#1 + (byte) mulu16_sel::select#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + call mulu16_sel param-assignment + (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#6 + to:sin16s::@9 +sin16s::@9: scope:[sin16s] from sin16s::@8 + (byte) sin16s::isUpper#5 ← phi( sin16s::@8/(byte) sin16s::isUpper#6 ) + (word) sin16s::x1#4 ← phi( sin16s::@8/(word) sin16s::x1#1 ) + (word) mulu16_sel::return#8 ← phi( sin16s::@8/(word) mulu16_sel::return#1 ) + (word~) sin16s::$9 ← (word) mulu16_sel::return#8 + (word) sin16s::x3#0 ← (word~) sin16s::$9 + (word/signed word/dword/signed dword~) sin16s::$10 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 + (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + (word) mulu16_sel::v2#2 ← (word/signed word/dword/signed dword~) sin16s::$10 + (byte) mulu16_sel::select#2 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + call mulu16_sel param-assignment + (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#6 + to:sin16s::@10 +sin16s::@10: scope:[sin16s] from sin16s::@9 + (byte) sin16s::isUpper#4 ← phi( sin16s::@9/(byte) sin16s::isUpper#5 ) + (word) sin16s::x3#1 ← phi( sin16s::@9/(word) sin16s::x3#0 ) + (word) sin16s::x1#2 ← phi( sin16s::@9/(word) sin16s::x1#4 ) + (word) mulu16_sel::return#9 ← phi( sin16s::@9/(word) mulu16_sel::return#2 ) + (word~) sin16s::$11 ← (word) mulu16_sel::return#9 + (word) sin16s::x3_6#0 ← (word~) sin16s::$11 + (word~) sin16s::$12 ← (word) sin16s::x1#2 - (word) sin16s::x3_6#0 + (word) sin16s::usinx#0 ← (word~) sin16s::$12 + (word) mulu16_sel::v1#3 ← (word) sin16s::x3#1 + (word) mulu16_sel::v2#3 ← (word) sin16s::x1#2 + (byte) mulu16_sel::select#3 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + call mulu16_sel param-assignment + (word) mulu16_sel::return#3 ← (word) mulu16_sel::return#6 + to:sin16s::@11 +sin16s::@11: scope:[sin16s] from sin16s::@10 + (byte) sin16s::isUpper#3 ← phi( sin16s::@10/(byte) sin16s::isUpper#4 ) + (word) sin16s::usinx#4 ← phi( sin16s::@10/(word) sin16s::usinx#0 ) + (word) sin16s::x1#3 ← phi( sin16s::@10/(word) sin16s::x1#2 ) + (word) mulu16_sel::return#10 ← phi( sin16s::@10/(word) mulu16_sel::return#3 ) + (word~) sin16s::$13 ← (word) mulu16_sel::return#10 + (word) sin16s::x4#0 ← (word~) sin16s::$13 + (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + (word) mulu16_sel::v2#4 ← (word) sin16s::x1#3 + (byte) mulu16_sel::select#4 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + call mulu16_sel param-assignment + (word) mulu16_sel::return#4 ← (word) mulu16_sel::return#6 + to:sin16s::@12 +sin16s::@12: scope:[sin16s] from sin16s::@11 + (byte) sin16s::isUpper#2 ← phi( sin16s::@11/(byte) sin16s::isUpper#3 ) + (word) sin16s::usinx#2 ← phi( sin16s::@11/(word) sin16s::usinx#4 ) + (word) mulu16_sel::return#11 ← phi( sin16s::@11/(word) mulu16_sel::return#4 ) + (word~) sin16s::$14 ← (word) mulu16_sel::return#11 + (word) sin16s::x5#0 ← (word~) sin16s::$14 + (word~) sin16s::$15 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + (word) sin16s::x5_128#0 ← (word~) sin16s::$15 + (word~) sin16s::$16 ← (word) sin16s::usinx#2 + (word) sin16s::x5_128#0 + (word) sin16s::usinx#1 ← (word~) sin16s::$16 + (signed word~) sin16s::$17 ← ((signed word)) (word) sin16s::usinx#1 + (signed word) sin16s::sinx#0 ← (signed word~) sin16s::$17 + (boolean~) sin16s::$18 ← (byte) sin16s::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin16s::$19 ← ! (boolean~) sin16s::$18 + if((boolean~) sin16s::$19) goto sin16s::@3 + to:sin16s::@6 +sin16s::@5: scope:[sin16s] from sin16s::@1 + (byte) sin16s::isUpper#9 ← phi( sin16s::@1/(byte) sin16s::isUpper#8 ) + (dword) sin16s::x#7 ← phi( sin16s::@1/(dword) sin16s::x#4 ) + (dword~) sin16s::$5 ← (dword) PI_u4f28#0 - (dword) sin16s::x#7 + (dword) sin16s::x#2 ← (dword~) sin16s::$5 + to:sin16s::@2 +sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6 + (signed word) sin16s::sinx#2 ← phi( sin16s::@12/(signed word) sin16s::sinx#0 sin16s::@6/(signed word) sin16s::sinx#1 ) + (signed word) sin16s::return#1 ← (signed word) sin16s::sinx#2 + to:sin16s::@return +sin16s::@6: scope:[sin16s] from sin16s::@12 + (word) sin16s::usinx#3 ← phi( sin16s::@12/(word) sin16s::usinx#1 ) + (signed word~) sin16s::$20 ← ((signed word)) (word) sin16s::usinx#3 + (signed word~) sin16s::$21 ← - (signed word~) sin16s::$20 + (signed word) sin16s::sinx#1 ← (signed word~) sin16s::$21 + to:sin16s::@3 +sin16s::@return: scope:[sin16s] from sin16s::@3 + (signed word) sin16s::return#4 ← phi( sin16s::@3/(signed word) sin16s::return#1 ) + (signed word) sin16s::return#2 ← (signed word) sin16s::return#4 + return + to:@return +mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 + (byte) mulu16_sel::select#6 ← phi( sin16s::@10/(byte) mulu16_sel::select#3 sin16s::@11/(byte) mulu16_sel::select#4 sin16s::@2/(byte) mulu16_sel::select#0 sin16s::@8/(byte) mulu16_sel::select#1 sin16s::@9/(byte) mulu16_sel::select#2 ) + (word) mulu16_sel::v2#5 ← 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/(word) mulu16_sel::v2#2 ) + (word) mulu16_sel::v1#5 ← 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 ) + (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 + (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 + call mul16u param-assignment + (dword) mul16u::return#2 ← (dword) mul16u::return#1 + to:mulu16_sel::@2 +mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel + (byte) mulu16_sel::select#5 ← phi( mulu16_sel/(byte) mulu16_sel::select#6 ) + (dword) mul16u::return#4 ← phi( mulu16_sel/(dword) mul16u::return#2 ) + (dword~) mulu16_sel::$0 ← (dword) mul16u::return#4 + (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 + (word~) mulu16_sel::$2 ← > (dword~) mulu16_sel::$1 + (word) mulu16_sel::return#5 ← (word~) mulu16_sel::$2 + to:mulu16_sel::@return +mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2 + (word) mulu16_sel::return#12 ← phi( mulu16_sel::@2/(word) mulu16_sel::return#5 ) + (word) mulu16_sel::return#6 ← (word) mulu16_sel::return#12 + return + to:@return +@18: scope:[] from @11 + (word) rem16u#28 ← phi( @11/(word) rem16u#29 ) (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) line_cursor#0 ← (byte*) SCREEN#0 (byte*) char_cursor#0 ← (byte*) line_cursor#0 - to:@22 + to:@29 print_str: scope:[print_str] from main::@3 main::@7 (byte*) char_cursor#51 ← phi( main::@3/(byte*) char_cursor#49 main::@7/(byte*) char_cursor#17 ) (byte*) print_str::str#5 ← phi( main::@3/(byte*) print_str::str#2 main::@7/(byte*) print_str::str#1 ) @@ -2737,13 +3241,13 @@ print_cls::@return: scope:[print_cls] from print_cls::@2 (byte*) char_cursor#15 ← (byte*) char_cursor#35 return to:@return -main: scope:[main] from @26 - (byte*) char_cursor#53 ← phi( @26/(byte*) char_cursor#50 ) - (byte*) line_cursor#13 ← phi( @26/(byte*) line_cursor#12 ) - (word) rem16u#21 ← phi( @26/(word) rem16u#25 ) +main: scope:[main] from @29 + (byte*) char_cursor#53 ← phi( @29/(byte*) char_cursor#50 ) + (byte*) line_cursor#13 ← phi( @29/(byte*) line_cursor#12 ) + (word) rem16u#23 ← phi( @29/(word) rem16u#25 ) (word) main::wavelength#0 ← (byte/signed byte/word/signed word/dword/signed dword) 120 (signed word[120]) main::sintab1#0 ← { fill( 120, 0) } - (signed word*) sin16s_gen::sintab#0 ← (signed word[120]) main::sintab1#0 + (signed word*) sin16s_gen::sintab#1 ← (signed word[120]) main::sintab1#0 (word) sin16s_gen::wavelength#0 ← (word) main::wavelength#0 call sin16s_gen param-assignment to:main::@5 @@ -2751,12 +3255,12 @@ main::@5: scope:[main] from main (word) main::wavelength#8 ← phi( main/(word) main::wavelength#0 ) (byte*) char_cursor#47 ← phi( main/(byte*) char_cursor#53 ) (byte*) line_cursor#10 ← phi( main/(byte*) line_cursor#13 ) - (word) rem16u#15 ← phi( main/(word) rem16u#9 ) - (word) rem16u#6 ← (word) rem16u#15 + (word) rem16u#17 ← phi( main/(word) rem16u#7 ) + (word) rem16u#8 ← (word) rem16u#17 call print_cls param-assignment to:main::@6 main::@6: scope:[main] from main::@5 - (word) rem16u#33 ← phi( main::@5/(word) rem16u#6 ) + (word) rem16u#33 ← phi( main::@5/(word) rem16u#8 ) (word) main::wavelength#6 ← phi( main::@5/(word) main::wavelength#8 ) (byte*) char_cursor#36 ← phi( main::@5/(byte*) char_cursor#15 ) (byte*) line_cursor#7 ← phi( main::@5/(byte*) line_cursor#2 ) @@ -2765,8 +3269,8 @@ main::@6: scope:[main] from main::@5 (signed word*) main::st1#0 ← (signed word[120]) main::sintab1#0 to:main::@1 main::@1: scope:[main] from main::@6 main::@8 - (byte*) line_cursor#17 ← phi( main::@6/(byte*) line_cursor#3 main::@8/(byte*) line_cursor#11 ) - (word) rem16u#31 ← phi( main::@6/(word) rem16u#33 main::@8/(word) rem16u#22 ) + (byte*) line_cursor#16 ← phi( main::@6/(byte*) line_cursor#3 main::@8/(byte*) line_cursor#11 ) + (word) rem16u#31 ← phi( main::@6/(word) rem16u#33 main::@8/(word) rem16u#24 ) (word) main::wavelength#4 ← phi( main::@6/(word) main::wavelength#6 main::@8/(word) main::wavelength#1 ) (byte*) char_cursor#54 ← phi( main::@6/(byte*) char_cursor#16 main::@8/(byte*) char_cursor#18 ) (signed word*) main::st1#2 ← phi( main::@6/(signed word*) main::st1#0 main::@8/(signed word*) main::st1#1 ) @@ -2776,8 +3280,8 @@ main::@1: scope:[main] from main::@6 main::@8 if((boolean~) main::$3) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@9 - (byte*) line_cursor#16 ← phi( main::@1/(byte*) line_cursor#17 main::@9/(byte*) line_cursor#18 ) - (word) rem16u#29 ← phi( main::@1/(word) rem16u#31 main::@9/(word) rem16u#32 ) + (byte*) line_cursor#15 ← phi( main::@1/(byte*) line_cursor#16 main::@9/(byte*) line_cursor#17 ) + (word) rem16u#30 ← phi( main::@1/(word) rem16u#31 main::@9/(word) rem16u#32 ) (word) main::wavelength#3 ← phi( main::@1/(word) main::wavelength#4 main::@9/(word) main::wavelength#5 ) (signed word*) main::st1#5 ← phi( main::@1/(signed word*) main::st1#2 main::@9/(signed word*) main::st1#6 ) (byte*) char_cursor#48 ← phi( main::@1/(byte*) char_cursor#54 main::@9/(byte*) char_cursor#19 ) @@ -2786,8 +3290,8 @@ main::@2: scope:[main] from main::@1 main::@9 call print_sword param-assignment to:main::@7 main::@7: scope:[main] from main::@2 - (byte*) line_cursor#14 ← phi( main::@2/(byte*) line_cursor#16 ) - (word) rem16u#26 ← phi( main::@2/(word) rem16u#29 ) + (byte*) line_cursor#14 ← phi( main::@2/(byte*) line_cursor#15 ) + (word) rem16u#27 ← phi( main::@2/(word) rem16u#30 ) (word) main::wavelength#2 ← phi( main::@2/(word) main::wavelength#3 ) (signed word*) main::st1#4 ← phi( main::@2/(signed word*) main::st1#5 ) (byte*) char_cursor#37 ← phi( main::@2/(byte*) char_cursor#5 ) @@ -2797,7 +3301,7 @@ main::@7: scope:[main] from main::@2 to:main::@8 main::@8: scope:[main] from main::@7 (byte*) line_cursor#11 ← phi( main::@7/(byte*) line_cursor#14 ) - (word) rem16u#22 ← phi( main::@7/(word) rem16u#26 ) + (word) rem16u#24 ← phi( main::@7/(word) rem16u#27 ) (word) main::wavelength#1 ← phi( main::@7/(word) main::wavelength#2 ) (signed word*) main::st1#3 ← phi( main::@7/(signed word*) main::st1#4 ) (byte*) char_cursor#38 ← phi( main::@7/(byte*) char_cursor#2 ) @@ -2810,7 +3314,7 @@ main::@8: scope:[main] from main::@7 if((boolean~) main::$10) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 - (byte*) line_cursor#19 ← phi( main::@1/(byte*) line_cursor#17 ) + (byte*) line_cursor#18 ← phi( main::@1/(byte*) line_cursor#16 ) (word) rem16u#34 ← phi( main::@1/(word) rem16u#31 ) (word) main::wavelength#7 ← phi( main::@1/(word) main::wavelength#4 ) (signed word*) main::st1#7 ← phi( main::@1/(signed word*) main::st1#2 ) @@ -2820,7 +3324,7 @@ main::@3: scope:[main] from main::@1 call print_str param-assignment to:main::@9 main::@9: scope:[main] from main::@3 - (byte*) line_cursor#18 ← phi( main::@3/(byte*) line_cursor#19 ) + (byte*) line_cursor#17 ← phi( main::@3/(byte*) line_cursor#18 ) (word) rem16u#32 ← phi( main::@3/(word) rem16u#34 ) (word) main::wavelength#5 ← phi( main::@3/(word) main::wavelength#7 ) (signed word*) main::st1#6 ← phi( main::@3/(signed word*) main::st1#7 ) @@ -2831,240 +3335,34 @@ main::@9: scope:[main] from main::@3 main::@return: scope:[main] from main::@8 (byte*) char_cursor#40 ← phi( main::@8/(byte*) char_cursor#18 ) (byte*) line_cursor#8 ← phi( main::@8/(byte*) line_cursor#11 ) - (word) rem16u#16 ← phi( main::@8/(word) rem16u#22 ) - (word) rem16u#7 ← (word) rem16u#16 + (word) rem16u#18 ← phi( main::@8/(word) rem16u#24 ) + (word) rem16u#9 ← (word) rem16u#18 (byte*) line_cursor#4 ← (byte*) line_cursor#8 (byte*) char_cursor#20 ← (byte*) char_cursor#40 return to:@return -@22: scope:[] from @11 - (byte*) char_cursor#55 ← phi( @11/(byte*) char_cursor#0 ) - (byte*) line_cursor#15 ← phi( @11/(byte*) line_cursor#0 ) - (word) rem16u#28 ← phi( @11/(word) rem16u#30 ) - (dword) PI2_u4f28#0 ← (dword/signed dword) 1686629713 - (dword) PI_u4f28#0 ← (dword/signed dword) 843314857 - (dword) PI_HALF_u4f28#0 ← (dword/signed dword) 421657428 - to:@26 -sin16s_gen: scope:[sin16s_gen] from main - (signed word*) sin16s_gen::sintab#5 ← phi( main/(signed word*) sin16s_gen::sintab#0 ) - (word) rem16u#23 ← phi( main/(word) rem16u#21 ) - (word) sin16s_gen::wavelength#1 ← phi( main/(word) sin16s_gen::wavelength#0 ) - (dword) div32u16u::dividend#0 ← (dword) PI2_u4f28#0 - (word) div32u16u::divisor#0 ← (word) sin16s_gen::wavelength#1 - call div32u16u param-assignment - (dword) div32u16u::return#2 ← (dword) div32u16u::return#1 - to:sin16s_gen::@3 -sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen - (word) sin16s_gen::wavelength#4 ← phi( sin16s_gen/(word) sin16s_gen::wavelength#1 ) - (signed word*) sin16s_gen::sintab#4 ← phi( sin16s_gen/(signed word*) sin16s_gen::sintab#5 ) - (word) rem16u#17 ← phi( sin16s_gen/(word) rem16u#5 ) - (dword) div32u16u::return#4 ← phi( sin16s_gen/(dword) div32u16u::return#2 ) - (dword~) sin16s_gen::$0 ← (dword) div32u16u::return#4 - (word) rem16u#8 ← (word) rem16u#17 - (dword) sin16s_gen::step#0 ← (dword~) sin16s_gen::$0 - (dword) sin16s_gen::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) sin16s_gen::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:sin16s_gen::@1 -sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@3 sin16s_gen::@4 - (word) rem16u#27 ← phi( sin16s_gen::@3/(word) rem16u#8 sin16s_gen::@4/(word) rem16u#24 ) - (word) sin16s_gen::wavelength#3 ← phi( sin16s_gen::@3/(word) sin16s_gen::wavelength#4 sin16s_gen::@4/(word) sin16s_gen::wavelength#2 ) - (word) sin16s_gen::i#3 ← phi( sin16s_gen::@3/(word) sin16s_gen::i#0 sin16s_gen::@4/(word) sin16s_gen::i#1 ) - (dword) sin16s_gen::step#2 ← phi( sin16s_gen::@3/(dword) sin16s_gen::step#0 sin16s_gen::@4/(dword) sin16s_gen::step#1 ) - (signed word*) sin16s_gen::sintab#3 ← phi( sin16s_gen::@3/(signed word*) sin16s_gen::sintab#4 sin16s_gen::@4/(signed word*) sin16s_gen::sintab#1 ) - (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@3/(dword) sin16s_gen::x#0 sin16s_gen::@4/(dword) sin16s_gen::x#1 ) - (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 - call sin16s param-assignment - (signed word) sin16s::return#0 ← (signed word) sin16s::return#2 - to:sin16s_gen::@4 -sin16s_gen::@4: scope:[sin16s_gen] from sin16s_gen::@1 - (word) rem16u#24 ← phi( sin16s_gen::@1/(word) rem16u#27 ) - (word) sin16s_gen::wavelength#2 ← phi( sin16s_gen::@1/(word) sin16s_gen::wavelength#3 ) - (word) sin16s_gen::i#2 ← phi( sin16s_gen::@1/(word) sin16s_gen::i#3 ) - (dword) sin16s_gen::step#1 ← phi( sin16s_gen::@1/(dword) sin16s_gen::step#2 ) - (dword) sin16s_gen::x#3 ← phi( sin16s_gen::@1/(dword) sin16s_gen::x#2 ) - (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@1/(signed word*) sin16s_gen::sintab#3 ) - (signed word) sin16s::return#3 ← phi( sin16s_gen::@1/(signed word) sin16s::return#0 ) - (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#3 - *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 - (signed word*~) sin16s_gen::$2 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - (signed word*) sin16s_gen::sintab#1 ← (signed word*~) sin16s_gen::$2 - (dword~) sin16s_gen::$3 ← (dword) sin16s_gen::x#3 + (dword) sin16s_gen::step#1 - (dword) sin16s_gen::x#1 ← (dword~) sin16s_gen::$3 - (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 - (boolean~) sin16s_gen::$4 ← (word) sin16s_gen::i#1 < (word) sin16s_gen::wavelength#2 - if((boolean~) sin16s_gen::$4) goto sin16s_gen::@1 - to:sin16s_gen::@return -sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@4 - (word) rem16u#18 ← phi( sin16s_gen::@4/(word) rem16u#24 ) - (word) rem16u#9 ← (word) rem16u#18 - return - to:@return -sin16s: scope:[sin16s] from sin16s_gen::@1 - (dword) sin16s::x#3 ← phi( sin16s_gen::@1/(dword) sin16s::x#0 ) - (byte) sin16s::isUpper#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) sin16s::$0 ← (dword) sin16s::x#3 >= (dword) PI_u4f28#0 - (boolean~) sin16s::$1 ← ! (boolean~) sin16s::$0 - if((boolean~) sin16s::$1) goto sin16s::@1 - to:sin16s::@4 -sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - (byte) sin16s::isUpper#8 ← phi( sin16s/(byte) sin16s::isUpper#0 sin16s::@4/(byte) sin16s::isUpper#1 ) - (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#3 sin16s::@4/(dword) sin16s::x#1 ) - (boolean~) sin16s::$3 ← (dword) sin16s::x#4 >= (dword) PI_HALF_u4f28#0 - (boolean~) sin16s::$4 ← ! (boolean~) sin16s::$3 - if((boolean~) sin16s::$4) goto sin16s::@2 - to:sin16s::@5 -sin16s::@4: scope:[sin16s] from sin16s - (dword) sin16s::x#5 ← phi( sin16s/(dword) sin16s::x#3 ) - (dword~) sin16s::$2 ← (dword) sin16s::x#5 - (dword) PI_u4f28#0 - (dword) sin16s::x#1 ← (dword~) sin16s::$2 - (byte) sin16s::isUpper#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - to:sin16s::@1 -sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 - (byte) sin16s::isUpper#7 ← phi( sin16s::@1/(byte) sin16s::isUpper#8 sin16s::@5/(byte) sin16s::isUpper#9 ) - (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 - (word~) sin16s::$7 ← > (dword~) sin16s::$6 - (word) sin16s::x1#0 ← (word~) sin16s::$7 - (word) mul_u16_sel::v1#0 ← (word) sin16s::x1#0 - (word) mul_u16_sel::v2#0 ← (word) sin16s::x1#0 - (byte) mul_u16_sel::select#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - call mul_u16_sel param-assignment - (word) mul_u16_sel::return#0 ← (word) mul_u16_sel::return#6 - to:sin16s::@8 -sin16s::@8: scope:[sin16s] from sin16s::@2 - (byte) sin16s::isUpper#6 ← phi( sin16s::@2/(byte) sin16s::isUpper#7 ) - (word) sin16s::x1#1 ← phi( sin16s::@2/(word) sin16s::x1#0 ) - (word) mul_u16_sel::return#7 ← phi( sin16s::@2/(word) mul_u16_sel::return#0 ) - (word~) sin16s::$8 ← (word) mul_u16_sel::return#7 - (word) sin16s::x2#0 ← (word~) sin16s::$8 - (word) mul_u16_sel::v1#1 ← (word) sin16s::x2#0 - (word) mul_u16_sel::v2#1 ← (word) sin16s::x1#1 - (byte) mul_u16_sel::select#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - call mul_u16_sel param-assignment - (word) mul_u16_sel::return#1 ← (word) mul_u16_sel::return#6 - to:sin16s::@9 -sin16s::@9: scope:[sin16s] from sin16s::@8 - (byte) sin16s::isUpper#5 ← phi( sin16s::@8/(byte) sin16s::isUpper#6 ) - (word) sin16s::x1#4 ← phi( sin16s::@8/(word) sin16s::x1#1 ) - (word) mul_u16_sel::return#8 ← phi( sin16s::@8/(word) mul_u16_sel::return#1 ) - (word~) sin16s::$9 ← (word) mul_u16_sel::return#8 - (word) sin16s::x3#0 ← (word~) sin16s::$9 - (word/signed word/dword/signed dword~) sin16s::$10 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 - (word) mul_u16_sel::v1#2 ← (word) sin16s::x3#0 - (word) mul_u16_sel::v2#2 ← (word/signed word/dword/signed dword~) sin16s::$10 - (byte) mul_u16_sel::select#2 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - call mul_u16_sel param-assignment - (word) mul_u16_sel::return#2 ← (word) mul_u16_sel::return#6 - to:sin16s::@10 -sin16s::@10: scope:[sin16s] from sin16s::@9 - (byte) sin16s::isUpper#4 ← phi( sin16s::@9/(byte) sin16s::isUpper#5 ) - (word) sin16s::x3#1 ← phi( sin16s::@9/(word) sin16s::x3#0 ) - (word) sin16s::x1#2 ← phi( sin16s::@9/(word) sin16s::x1#4 ) - (word) mul_u16_sel::return#9 ← phi( sin16s::@9/(word) mul_u16_sel::return#2 ) - (word~) sin16s::$11 ← (word) mul_u16_sel::return#9 - (word) sin16s::x3_6#0 ← (word~) sin16s::$11 - (word~) sin16s::$12 ← (word) sin16s::x1#2 - (word) sin16s::x3_6#0 - (word) sin16s::usinx#0 ← (word~) sin16s::$12 - (word) mul_u16_sel::v1#3 ← (word) sin16s::x3#1 - (word) mul_u16_sel::v2#3 ← (word) sin16s::x1#2 - (byte) mul_u16_sel::select#3 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - call mul_u16_sel param-assignment - (word) mul_u16_sel::return#3 ← (word) mul_u16_sel::return#6 - to:sin16s::@11 -sin16s::@11: scope:[sin16s] from sin16s::@10 - (byte) sin16s::isUpper#3 ← phi( sin16s::@10/(byte) sin16s::isUpper#4 ) - (word) sin16s::usinx#4 ← phi( sin16s::@10/(word) sin16s::usinx#0 ) - (word) sin16s::x1#3 ← phi( sin16s::@10/(word) sin16s::x1#2 ) - (word) mul_u16_sel::return#10 ← phi( sin16s::@10/(word) mul_u16_sel::return#3 ) - (word~) sin16s::$13 ← (word) mul_u16_sel::return#10 - (word) sin16s::x4#0 ← (word~) sin16s::$13 - (word) mul_u16_sel::v1#4 ← (word) sin16s::x4#0 - (word) mul_u16_sel::v2#4 ← (word) sin16s::x1#3 - (byte) mul_u16_sel::select#4 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - call mul_u16_sel param-assignment - (word) mul_u16_sel::return#4 ← (word) mul_u16_sel::return#6 - to:sin16s::@12 -sin16s::@12: scope:[sin16s] from sin16s::@11 - (byte) sin16s::isUpper#2 ← phi( sin16s::@11/(byte) sin16s::isUpper#3 ) - (word) sin16s::usinx#2 ← phi( sin16s::@11/(word) sin16s::usinx#4 ) - (word) mul_u16_sel::return#11 ← phi( sin16s::@11/(word) mul_u16_sel::return#4 ) - (word~) sin16s::$14 ← (word) mul_u16_sel::return#11 - (word) sin16s::x5#0 ← (word~) sin16s::$14 - (word~) sin16s::$15 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - (word) sin16s::x5_128#0 ← (word~) sin16s::$15 - (word~) sin16s::$16 ← (word) sin16s::usinx#2 + (word) sin16s::x5_128#0 - (word) sin16s::usinx#1 ← (word~) sin16s::$16 - (signed word~) sin16s::$17 ← ((signed word)) (word) sin16s::usinx#1 - (signed word) sin16s::sinx#0 ← (signed word~) sin16s::$17 - (boolean~) sin16s::$18 ← (byte) sin16s::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) sin16s::$19 ← ! (boolean~) sin16s::$18 - if((boolean~) sin16s::$19) goto sin16s::@3 - to:sin16s::@6 -sin16s::@5: scope:[sin16s] from sin16s::@1 - (byte) sin16s::isUpper#9 ← phi( sin16s::@1/(byte) sin16s::isUpper#8 ) - (dword) sin16s::x#7 ← phi( sin16s::@1/(dword) sin16s::x#4 ) - (dword~) sin16s::$5 ← (dword) PI_u4f28#0 - (dword) sin16s::x#7 - (dword) sin16s::x#2 ← (dword~) sin16s::$5 - to:sin16s::@2 -sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6 - (signed word) sin16s::sinx#2 ← phi( sin16s::@12/(signed word) sin16s::sinx#0 sin16s::@6/(signed word) sin16s::sinx#1 ) - (signed word) sin16s::return#1 ← (signed word) sin16s::sinx#2 - to:sin16s::@return -sin16s::@6: scope:[sin16s] from sin16s::@12 - (word) sin16s::usinx#3 ← phi( sin16s::@12/(word) sin16s::usinx#1 ) - (signed word~) sin16s::$20 ← ((signed word)) (word) sin16s::usinx#3 - (signed word~) sin16s::$21 ← - (signed word~) sin16s::$20 - (signed word) sin16s::sinx#1 ← (signed word~) sin16s::$21 - to:sin16s::@3 -sin16s::@return: scope:[sin16s] from sin16s::@3 - (signed word) sin16s::return#4 ← phi( sin16s::@3/(signed word) sin16s::return#1 ) - (signed word) sin16s::return#2 ← (signed word) sin16s::return#4 - return - to:@return -mul_u16_sel: scope:[mul_u16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 - (byte) mul_u16_sel::select#6 ← phi( sin16s::@10/(byte) mul_u16_sel::select#3 sin16s::@11/(byte) mul_u16_sel::select#4 sin16s::@2/(byte) mul_u16_sel::select#0 sin16s::@8/(byte) mul_u16_sel::select#1 sin16s::@9/(byte) mul_u16_sel::select#2 ) - (word) mul_u16_sel::v2#5 ← phi( sin16s::@10/(word) mul_u16_sel::v2#3 sin16s::@11/(word) mul_u16_sel::v2#4 sin16s::@2/(word) mul_u16_sel::v2#0 sin16s::@8/(word) mul_u16_sel::v2#1 sin16s::@9/(word) mul_u16_sel::v2#2 ) - (word) mul_u16_sel::v1#5 ← phi( sin16s::@10/(word) mul_u16_sel::v1#3 sin16s::@11/(word) mul_u16_sel::v1#4 sin16s::@2/(word) mul_u16_sel::v1#0 sin16s::@8/(word) mul_u16_sel::v1#1 sin16s::@9/(word) mul_u16_sel::v1#2 ) - (word) mul16u::a#1 ← (word) mul_u16_sel::v1#5 - (word) mul16u::b#0 ← (word) mul_u16_sel::v2#5 - call mul16u param-assignment - (dword) mul16u::return#2 ← (dword) mul16u::return#1 - to:mul_u16_sel::@2 -mul_u16_sel::@2: scope:[mul_u16_sel] from mul_u16_sel - (byte) mul_u16_sel::select#5 ← phi( mul_u16_sel/(byte) mul_u16_sel::select#6 ) - (dword) mul16u::return#4 ← phi( mul_u16_sel/(dword) mul16u::return#2 ) - (dword~) mul_u16_sel::$0 ← (dword) mul16u::return#4 - (dword~) mul_u16_sel::$1 ← (dword~) mul_u16_sel::$0 << (byte) mul_u16_sel::select#5 - (word~) mul_u16_sel::$2 ← > (dword~) mul_u16_sel::$1 - (word) mul_u16_sel::return#5 ← (word~) mul_u16_sel::$2 - to:mul_u16_sel::@return -mul_u16_sel::@return: scope:[mul_u16_sel] from mul_u16_sel::@2 - (word) mul_u16_sel::return#12 ← phi( mul_u16_sel::@2/(word) mul_u16_sel::return#5 ) - (word) mul_u16_sel::return#6 ← (word) mul_u16_sel::return#12 - return - to:@return -@26: scope:[] from @22 - (byte*) char_cursor#50 ← phi( @22/(byte*) char_cursor#55 ) - (byte*) line_cursor#12 ← phi( @22/(byte*) line_cursor#15 ) - (word) rem16u#25 ← phi( @22/(word) rem16u#28 ) +@29: scope:[] from @18 + (byte*) char_cursor#50 ← phi( @18/(byte*) char_cursor#0 ) + (byte*) line_cursor#12 ← phi( @18/(byte*) line_cursor#0 ) + (word) rem16u#25 ← phi( @18/(word) rem16u#28 ) call main param-assignment - to:@27 -@27: scope:[] from @26 - (byte*) char_cursor#41 ← phi( @26/(byte*) char_cursor#20 ) - (byte*) line_cursor#9 ← phi( @26/(byte*) line_cursor#4 ) - (word) rem16u#19 ← phi( @26/(word) rem16u#7 ) + to:@30 +@30: scope:[] from @29 + (byte*) char_cursor#41 ← phi( @29/(byte*) char_cursor#20 ) + (byte*) line_cursor#9 ← phi( @29/(byte*) line_cursor#4 ) + (word) rem16u#19 ← phi( @29/(word) rem16u#9 ) (word) rem16u#10 ← (word) rem16u#19 (byte*) line_cursor#5 ← (byte*) line_cursor#9 (byte*) char_cursor#21 ← (byte*) char_cursor#41 to:@end -@end: scope:[] from @27 +@end: scope:[] from @30 SYMBOL TABLE SSA (label) @11 +(label) @18 (label) @2 -(label) @22 -(label) @26 -(label) @27 +(label) @29 +(label) @30 (label) @begin (label) @end (dword) PI2_u4f28 @@ -3127,7 +3425,6 @@ SYMBOL TABLE SSA (byte*) char_cursor#52 (byte*) char_cursor#53 (byte*) char_cursor#54 -(byte*) char_cursor#55 (byte*) char_cursor#6 (byte*) char_cursor#7 (byte*) char_cursor#8 @@ -3251,7 +3548,6 @@ SYMBOL TABLE SSA (byte*) line_cursor#16 (byte*) line_cursor#17 (byte*) line_cursor#18 -(byte*) line_cursor#19 (byte*) line_cursor#2 (byte*) line_cursor#3 (byte*) line_cursor#4 @@ -3350,48 +3646,48 @@ SYMBOL TABLE SSA (dword) mul16u::return#2 (dword) mul16u::return#3 (dword) mul16u::return#4 -(word()) mul_u16_sel((word) mul_u16_sel::v1 , (word) mul_u16_sel::v2 , (byte) mul_u16_sel::select) -(dword~) mul_u16_sel::$0 -(dword~) mul_u16_sel::$1 -(word~) mul_u16_sel::$2 -(label) mul_u16_sel::@2 -(label) mul_u16_sel::@return -(word) mul_u16_sel::return -(word) mul_u16_sel::return#0 -(word) mul_u16_sel::return#1 -(word) mul_u16_sel::return#10 -(word) mul_u16_sel::return#11 -(word) mul_u16_sel::return#12 -(word) mul_u16_sel::return#2 -(word) mul_u16_sel::return#3 -(word) mul_u16_sel::return#4 -(word) mul_u16_sel::return#5 -(word) mul_u16_sel::return#6 -(word) mul_u16_sel::return#7 -(word) mul_u16_sel::return#8 -(word) mul_u16_sel::return#9 -(byte) mul_u16_sel::select -(byte) mul_u16_sel::select#0 -(byte) mul_u16_sel::select#1 -(byte) mul_u16_sel::select#2 -(byte) mul_u16_sel::select#3 -(byte) mul_u16_sel::select#4 -(byte) mul_u16_sel::select#5 -(byte) mul_u16_sel::select#6 -(word) mul_u16_sel::v1 -(word) mul_u16_sel::v1#0 -(word) mul_u16_sel::v1#1 -(word) mul_u16_sel::v1#2 -(word) mul_u16_sel::v1#3 -(word) mul_u16_sel::v1#4 -(word) mul_u16_sel::v1#5 -(word) mul_u16_sel::v2 -(word) mul_u16_sel::v2#0 -(word) mul_u16_sel::v2#1 -(word) mul_u16_sel::v2#2 -(word) mul_u16_sel::v2#3 -(word) mul_u16_sel::v2#4 -(word) mul_u16_sel::v2#5 +(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) +(dword~) mulu16_sel::$0 +(dword~) mulu16_sel::$1 +(word~) mulu16_sel::$2 +(label) mulu16_sel::@2 +(label) mulu16_sel::@return +(word) mulu16_sel::return +(word) mulu16_sel::return#0 +(word) mulu16_sel::return#1 +(word) mulu16_sel::return#10 +(word) mulu16_sel::return#11 +(word) mulu16_sel::return#12 +(word) mulu16_sel::return#2 +(word) mulu16_sel::return#3 +(word) mulu16_sel::return#4 +(word) mulu16_sel::return#5 +(word) mulu16_sel::return#6 +(word) mulu16_sel::return#7 +(word) mulu16_sel::return#8 +(word) mulu16_sel::return#9 +(byte) mulu16_sel::select +(byte) mulu16_sel::select#0 +(byte) mulu16_sel::select#1 +(byte) mulu16_sel::select#2 +(byte) mulu16_sel::select#3 +(byte) mulu16_sel::select#4 +(byte) mulu16_sel::select#5 +(byte) mulu16_sel::select#6 +(word) mulu16_sel::v1 +(word) mulu16_sel::v1#0 +(word) mulu16_sel::v1#1 +(word) mulu16_sel::v1#2 +(word) mulu16_sel::v1#3 +(word) mulu16_sel::v1#4 +(word) mulu16_sel::v1#5 +(word) mulu16_sel::v2 +(word) mulu16_sel::v2#0 +(word) mulu16_sel::v2#1 +(word) mulu16_sel::v2#2 +(word) mulu16_sel::v2#3 +(word) mulu16_sel::v2#4 +(word) mulu16_sel::v2#5 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 (byte~) print_byte::$2 @@ -3630,11 +3926,11 @@ OPTIMIZING CONTROL FLOW GRAPH Inversing boolean not (boolean~) divr16u::$4 ← (byte~) divr16u::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (boolean~) divr16u::$9 ← (word) divr16u::rem#6 < (word) divr16u::divisor#2 from (boolean~) divr16u::$8 ← (word) divr16u::rem#6 >= (word) divr16u::divisor#2 Inversing boolean not (boolean~) mul16u::$3 ← (byte~) mul16u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) mul16u::$2 ← (byte~) mul16u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (boolean~) print_sword::$1 ← (signed word) print_sword::w#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) print_sword::$0 ← (signed word) print_sword::w#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not (boolean~) main::$3 ← (signed word) main::sw#0 < (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) main::$2 ← (signed word) main::sw#0 >= (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (boolean~) sin16s::$1 ← (dword) sin16s::x#3 < (dword) PI_u4f28#0 from (boolean~) sin16s::$0 ← (dword) sin16s::x#3 >= (dword) PI_u4f28#0 Inversing boolean not (boolean~) sin16s::$4 ← (dword) sin16s::x#4 < (dword) PI_HALF_u4f28#0 from (boolean~) sin16s::$3 ← (dword) sin16s::x#4 >= (dword) PI_HALF_u4f28#0 Inversing boolean not (boolean~) sin16s::$19 ← (byte) sin16s::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) sin16s::$18 ← (byte) sin16s::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (boolean~) print_sword::$1 ← (signed word) print_sword::w#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) print_sword::$0 ← (signed word) print_sword::w#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (boolean~) main::$3 ← (signed word) main::sw#0 < (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) main::$2 ← (signed word) main::sw#0 >= (byte/signed byte/word/signed word/dword/signed dword) 0 Succesful SSA optimization Pass2UnaryNotSimplification Not aliassing across scopes: divr16u::rem#10 divr16u::rem#3 Not aliassing across scopes: divr16u::dividend#5 divr16u::dividend#1 @@ -3642,7 +3938,7 @@ Not aliassing across scopes: divr16u::divisor#6 divr16u::divisor#0 Not aliassing across scopes: rem16u#1 divr16u::rem#9 Not aliassing across scopes: div32u16u::dividend#1 div32u16u::dividend#0 Not aliassing across scopes: div32u16u::divisor#1 div32u16u::divisor#0 -Not aliassing across scopes: rem16u#20 rem16u#23 +Not aliassing across scopes: rem16u#20 rem16u#21 Not aliassing across scopes: divr16u::divisor#0 div32u16u::divisor#1 Not aliassing across scopes: divr16u::return#2 divr16u::return#1 Not aliassing across scopes: rem16u#12 rem16u#2 @@ -3654,6 +3950,44 @@ Not aliassing across scopes: rem16u#13 rem16u#2 Not aliassing across scopes: div32u16u::$3 divr16u::return#6 Not aliassing across scopes: mul16u::b#1 mul16u::b#0 Not aliassing across scopes: mul16u::a#5 mul16u::a#1 +Not aliassing across scopes: sin16s_gen::wavelength#1 sin16s_gen::wavelength#0 +Not aliassing across scopes: rem16u#21 rem16u#23 +Not aliassing across scopes: sin16s_gen::sintab#5 sin16s_gen::sintab#1 +Not aliassing across scopes: div32u16u::dividend#0 PI2_u4f28#0 +Not aliassing across scopes: div32u16u::divisor#0 sin16s_gen::wavelength#1 +Not aliassing across scopes: div32u16u::return#2 div32u16u::return#1 +Not aliassing across scopes: rem16u#15 rem16u#5 +Not aliassing across scopes: sin16s_gen::$0 div32u16u::return#4 +Not aliassing across scopes: sin16s::x#0 sin16s_gen::x#2 +Not aliassing across scopes: sin16s::return#0 sin16s::return#2 +Not aliassing across scopes: sin16s_gen::$1 sin16s::return#3 +Not aliassing across scopes: sin16s::x#3 sin16s::x#0 +Not aliassing across scopes: mulu16_sel::v1#0 sin16s::x1#0 +Not aliassing across scopes: mulu16_sel::v2#0 sin16s::x1#0 +Not aliassing across scopes: mulu16_sel::return#0 mulu16_sel::return#6 +Not aliassing across scopes: sin16s::$8 mulu16_sel::return#7 +Not aliassing across scopes: mulu16_sel::v1#1 sin16s::x2#0 +Not aliassing across scopes: mulu16_sel::v2#1 sin16s::x1#1 +Not aliassing across scopes: mulu16_sel::return#1 mulu16_sel::return#6 +Not aliassing across scopes: sin16s::$9 mulu16_sel::return#8 +Not aliassing across scopes: mulu16_sel::v1#2 sin16s::x3#0 +Not aliassing across scopes: mulu16_sel::return#2 mulu16_sel::return#6 +Not aliassing across scopes: sin16s::$11 mulu16_sel::return#9 +Not aliassing across scopes: mulu16_sel::v1#3 sin16s::x3#1 +Not aliassing across scopes: mulu16_sel::v2#3 sin16s::x1#2 +Not aliassing across scopes: mulu16_sel::return#3 mulu16_sel::return#6 +Not aliassing across scopes: sin16s::$13 mulu16_sel::return#10 +Not aliassing across scopes: mulu16_sel::v1#4 sin16s::x4#0 +Not aliassing across scopes: mulu16_sel::v2#4 sin16s::x1#3 +Not aliassing across scopes: mulu16_sel::return#4 mulu16_sel::return#6 +Not aliassing across scopes: sin16s::$14 mulu16_sel::return#11 +Not aliassing across scopes: mulu16_sel::v1#5 mulu16_sel::v1#3 +Not aliassing across scopes: mulu16_sel::v2#5 mulu16_sel::v2#3 +Not aliassing across scopes: mulu16_sel::select#6 mulu16_sel::select#3 +Not aliassing across scopes: mul16u::a#1 mulu16_sel::v1#5 +Not aliassing across scopes: mul16u::b#0 mulu16_sel::v2#5 +Not aliassing across scopes: mul16u::return#2 mul16u::return#1 +Not aliassing across scopes: mulu16_sel::$0 mul16u::return#4 Not aliassing across scopes: print_str::str#5 print_str::str#2 Not aliassing across scopes: char_cursor#51 char_cursor#49 Not aliassing across scopes: print_sword::w#2 print_sword::w#1 @@ -3672,57 +4006,19 @@ Not aliassing across scopes: print_char::ch#3 print_char::ch#1 Not aliassing across scopes: char_cursor#33 char_cursor#46 Not aliassing across scopes: print_cls::sc#0 SCREEN#0 Not aliassing across scopes: line_cursor#1 SCREEN#0 -Not aliassing across scopes: rem16u#21 rem16u#25 +Not aliassing across scopes: rem16u#23 rem16u#25 Not aliassing across scopes: line_cursor#13 line_cursor#12 Not aliassing across scopes: char_cursor#53 char_cursor#50 -Not aliassing across scopes: sin16s_gen::sintab#0 main::sintab1#0 +Not aliassing across scopes: sin16s_gen::sintab#1 main::sintab1#0 Not aliassing across scopes: sin16s_gen::wavelength#0 main::wavelength#0 -Not aliassing across scopes: rem16u#15 rem16u#9 +Not aliassing across scopes: rem16u#17 rem16u#7 Not aliassing across scopes: line_cursor#7 line_cursor#2 Not aliassing across scopes: char_cursor#36 char_cursor#15 Not aliassing across scopes: print_sword::w#1 main::sw#1 Not aliassing across scopes: char_cursor#37 char_cursor#5 Not aliassing across scopes: char_cursor#38 char_cursor#2 Not aliassing across scopes: char_cursor#39 char_cursor#2 -Not aliassing across scopes: sin16s_gen::wavelength#1 sin16s_gen::wavelength#0 -Not aliassing across scopes: rem16u#23 rem16u#21 -Not aliassing across scopes: sin16s_gen::sintab#5 sin16s_gen::sintab#0 -Not aliassing across scopes: div32u16u::dividend#0 PI2_u4f28#0 -Not aliassing across scopes: div32u16u::divisor#0 sin16s_gen::wavelength#1 -Not aliassing across scopes: div32u16u::return#2 div32u16u::return#1 -Not aliassing across scopes: rem16u#17 rem16u#5 -Not aliassing across scopes: sin16s_gen::$0 div32u16u::return#4 -Not aliassing across scopes: sin16s::x#0 sin16s_gen::x#2 -Not aliassing across scopes: sin16s::return#0 sin16s::return#2 -Not aliassing across scopes: sin16s_gen::$1 sin16s::return#3 -Not aliassing across scopes: sin16s::x#3 sin16s::x#0 -Not aliassing across scopes: mul_u16_sel::v1#0 sin16s::x1#0 -Not aliassing across scopes: mul_u16_sel::v2#0 sin16s::x1#0 -Not aliassing across scopes: mul_u16_sel::return#0 mul_u16_sel::return#6 -Not aliassing across scopes: sin16s::$8 mul_u16_sel::return#7 -Not aliassing across scopes: mul_u16_sel::v1#1 sin16s::x2#0 -Not aliassing across scopes: mul_u16_sel::v2#1 sin16s::x1#1 -Not aliassing across scopes: mul_u16_sel::return#1 mul_u16_sel::return#6 -Not aliassing across scopes: sin16s::$9 mul_u16_sel::return#8 -Not aliassing across scopes: mul_u16_sel::v1#2 sin16s::x3#0 -Not aliassing across scopes: mul_u16_sel::return#2 mul_u16_sel::return#6 -Not aliassing across scopes: sin16s::$11 mul_u16_sel::return#9 -Not aliassing across scopes: mul_u16_sel::v1#3 sin16s::x3#1 -Not aliassing across scopes: mul_u16_sel::v2#3 sin16s::x1#2 -Not aliassing across scopes: mul_u16_sel::return#3 mul_u16_sel::return#6 -Not aliassing across scopes: sin16s::$13 mul_u16_sel::return#10 -Not aliassing across scopes: mul_u16_sel::v1#4 sin16s::x4#0 -Not aliassing across scopes: mul_u16_sel::v2#4 sin16s::x1#3 -Not aliassing across scopes: mul_u16_sel::return#4 mul_u16_sel::return#6 -Not aliassing across scopes: sin16s::$14 mul_u16_sel::return#11 -Not aliassing across scopes: mul_u16_sel::v1#5 mul_u16_sel::v1#3 -Not aliassing across scopes: mul_u16_sel::v2#5 mul_u16_sel::v2#3 -Not aliassing across scopes: mul_u16_sel::select#6 mul_u16_sel::select#3 -Not aliassing across scopes: mul16u::a#1 mul_u16_sel::v1#5 -Not aliassing across scopes: mul16u::b#0 mul_u16_sel::v2#5 -Not aliassing across scopes: mul16u::return#2 mul16u::return#1 -Not aliassing across scopes: mul_u16_sel::$0 mul16u::return#4 -Not aliassing across scopes: rem16u#19 rem16u#7 +Not aliassing across scopes: rem16u#19 rem16u#9 Not aliassing across scopes: line_cursor#9 line_cursor#4 Not aliassing across scopes: char_cursor#41 char_cursor#20 Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#7 @@ -3757,8 +4053,49 @@ Alias (dword) mul16u::res#2 = (dword) mul16u::res#5 (dword) mul16u::res#4 (dword Alias (word) mul16u::a#0 = (word~) mul16u::$5 Alias (dword) mul16u::mb#1 = (dword~) mul16u::$6 Alias (dword) mul16u::res#1 = (dword~) mul16u::$4 -Alias (word) rem16u#0 = (word) rem16u#30 (word) rem16u#28 (word) rem16u#25 -Alias (byte*) SCREEN#0 = (byte*) line_cursor#0 (byte*) char_cursor#0 (byte*) line_cursor#15 (byte*) char_cursor#55 (byte*) line_cursor#12 (byte*) char_cursor#50 +Alias (word) rem16u#0 = (word) rem16u#29 (word) rem16u#28 (word) rem16u#25 +Alias (dword) div32u16u::return#2 = (dword) div32u16u::return#4 +Alias (signed word*) sin16s_gen::sintab#4 = (signed word*) sin16s_gen::sintab#5 +Alias (word) sin16s_gen::wavelength#1 = (word) sin16s_gen::wavelength#4 +Alias (word) rem16u#15 = (word) rem16u#6 +Alias (dword) sin16s_gen::step#0 = (dword~) sin16s_gen::$0 +Alias (signed word) sin16s::return#0 = (signed word) sin16s::return#3 +Alias (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#3 +Alias (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#3 +Alias (dword) sin16s_gen::step#1 = (dword) sin16s_gen::step#2 +Alias (word) sin16s_gen::i#2 = (word) sin16s_gen::i#3 +Alias (word) sin16s_gen::wavelength#2 = (word) sin16s_gen::wavelength#3 +Alias (word) rem16u#16 = (word) rem16u#22 (word) rem16u#26 (word) rem16u#7 +Alias (signed word*) sin16s_gen::sintab#0 = (signed word*~) sin16s_gen::$2 +Alias (dword) sin16s_gen::x#1 = (dword~) sin16s_gen::$3 +Alias (dword) sin16s::x#3 = (dword) sin16s::x#5 +Alias (dword) sin16s::x#1 = (dword~) sin16s::$2 +Alias (word) sin16s::x1#0 = (word~) sin16s::$7 (word) sin16s::x1#1 (word) sin16s::x1#4 (word) sin16s::x1#2 (word) sin16s::x1#3 +Alias (word) mulu16_sel::return#0 = (word) mulu16_sel::return#7 +Alias (byte) sin16s::isUpper#2 = (byte) sin16s::isUpper#6 (byte) sin16s::isUpper#7 (byte) sin16s::isUpper#5 (byte) sin16s::isUpper#4 (byte) sin16s::isUpper#3 +Alias (word) sin16s::x2#0 = (word~) sin16s::$8 +Alias (word) mulu16_sel::return#1 = (word) mulu16_sel::return#8 +Alias (word) sin16s::x3#0 = (word~) sin16s::$9 (word) sin16s::x3#1 +Alias (word) mulu16_sel::v2#2 = (word/signed word/dword/signed dword~) sin16s::$10 +Alias (word) mulu16_sel::return#2 = (word) mulu16_sel::return#9 +Alias (word) sin16s::x3_6#0 = (word~) sin16s::$11 +Alias (word) sin16s::usinx#0 = (word~) sin16s::$12 (word) sin16s::usinx#4 (word) sin16s::usinx#2 +Alias (word) mulu16_sel::return#10 = (word) mulu16_sel::return#3 +Alias (word) sin16s::x4#0 = (word~) sin16s::$13 +Alias (word) mulu16_sel::return#11 = (word) mulu16_sel::return#4 +Alias (word) sin16s::x5#0 = (word~) sin16s::$14 +Alias (word) sin16s::x5_128#0 = (word~) sin16s::$15 +Alias (word) sin16s::usinx#1 = (word~) sin16s::$16 (word) sin16s::usinx#3 +Alias (signed word) sin16s::sinx#0 = (signed word~) sin16s::$17 +Alias (dword) sin16s::x#4 = (dword) sin16s::x#7 +Alias (byte) sin16s::isUpper#8 = (byte) sin16s::isUpper#9 +Alias (dword) sin16s::x#2 = (dword~) sin16s::$5 +Alias (signed word) sin16s::return#1 = (signed word) sin16s::sinx#2 (signed word) sin16s::return#4 (signed word) sin16s::return#2 +Alias (signed word) sin16s::sinx#1 = (signed word~) sin16s::$21 +Alias (dword) mul16u::return#2 = (dword) mul16u::return#4 +Alias (byte) mulu16_sel::select#5 = (byte) mulu16_sel::select#6 +Alias (word) mulu16_sel::return#12 = (word) mulu16_sel::return#5 (word~) mulu16_sel::$2 (word) mulu16_sel::return#6 +Alias (byte*) SCREEN#0 = (byte*) line_cursor#0 (byte*) char_cursor#0 (byte*) line_cursor#12 (byte*) char_cursor#50 Alias (byte*) print_str::str#3 = (byte*) print_str::str#4 Alias (byte*) char_cursor#2 = (byte*) char_cursor#22 (byte*) char_cursor#42 (byte*) char_cursor#23 Alias (word) print_word::w#0 = (word~) print_sword::$4 @@ -3780,14 +4117,14 @@ Alias (byte*) line_cursor#1 = (byte*) char_cursor#14 (byte*) line_cursor#6 (byte Alias (byte*) line_cursor#10 = (byte*) line_cursor#13 Alias (byte*) char_cursor#47 = (byte*) char_cursor#53 Alias (word) main::wavelength#0 = (word) main::wavelength#8 (word) main::wavelength#6 -Alias (word) rem16u#15 = (word) rem16u#6 (word) rem16u#33 +Alias (word) rem16u#17 = (word) rem16u#8 (word) rem16u#33 Alias (byte*) line_cursor#3 = (byte*) line_cursor#7 Alias (byte*) char_cursor#16 = (byte*) char_cursor#36 Alias (signed word[120]) main::sintab1#0 = (signed word*) main::st1#0 Alias (signed word*) main::st1#3 = (signed word*) main::st1#4 (signed word*) main::st1#5 Alias (word) main::wavelength#1 = (word) main::wavelength#2 (word) main::wavelength#3 -Alias (word) rem16u#16 = (word) rem16u#26 (word) rem16u#29 (word) rem16u#22 (word) rem16u#7 -Alias (byte*) line_cursor#11 = (byte*) line_cursor#14 (byte*) line_cursor#16 (byte*) line_cursor#8 (byte*) line_cursor#4 +Alias (word) rem16u#18 = (word) rem16u#27 (word) rem16u#30 (word) rem16u#24 (word) rem16u#9 +Alias (byte*) line_cursor#11 = (byte*) line_cursor#14 (byte*) line_cursor#15 (byte*) line_cursor#8 (byte*) line_cursor#4 Alias (byte*) char_cursor#17 = (byte*) char_cursor#37 Alias (byte*) char_cursor#18 = (byte*) char_cursor#38 (byte*) char_cursor#40 (byte*) char_cursor#20 Alias (signed word*) main::st1#1 = (signed word*~) main::$7 @@ -3796,49 +4133,8 @@ Alias (signed word) main::sw#0 = (signed word) main::sw#3 (signed word) main::sw Alias (signed word*) main::st1#2 = (signed word*) main::st1#7 (signed word*) main::st1#6 Alias (word) main::wavelength#4 = (word) main::wavelength#7 (word) main::wavelength#5 Alias (word) rem16u#31 = (word) rem16u#34 (word) rem16u#32 -Alias (byte*) line_cursor#17 = (byte*) line_cursor#19 (byte*) line_cursor#18 +Alias (byte*) line_cursor#16 = (byte*) line_cursor#18 (byte*) line_cursor#17 Alias (byte*) char_cursor#19 = (byte*) char_cursor#39 -Alias (dword) div32u16u::return#2 = (dword) div32u16u::return#4 -Alias (signed word*) sin16s_gen::sintab#4 = (signed word*) sin16s_gen::sintab#5 -Alias (word) sin16s_gen::wavelength#1 = (word) sin16s_gen::wavelength#4 -Alias (word) rem16u#17 = (word) rem16u#8 -Alias (dword) sin16s_gen::step#0 = (dword~) sin16s_gen::$0 -Alias (signed word) sin16s::return#0 = (signed word) sin16s::return#3 -Alias (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#3 -Alias (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#3 -Alias (dword) sin16s_gen::step#1 = (dword) sin16s_gen::step#2 -Alias (word) sin16s_gen::i#2 = (word) sin16s_gen::i#3 -Alias (word) sin16s_gen::wavelength#2 = (word) sin16s_gen::wavelength#3 -Alias (word) rem16u#18 = (word) rem16u#24 (word) rem16u#27 (word) rem16u#9 -Alias (signed word*) sin16s_gen::sintab#1 = (signed word*~) sin16s_gen::$2 -Alias (dword) sin16s_gen::x#1 = (dword~) sin16s_gen::$3 -Alias (dword) sin16s::x#3 = (dword) sin16s::x#5 -Alias (dword) sin16s::x#1 = (dword~) sin16s::$2 -Alias (word) sin16s::x1#0 = (word~) sin16s::$7 (word) sin16s::x1#1 (word) sin16s::x1#4 (word) sin16s::x1#2 (word) sin16s::x1#3 -Alias (word) mul_u16_sel::return#0 = (word) mul_u16_sel::return#7 -Alias (byte) sin16s::isUpper#2 = (byte) sin16s::isUpper#6 (byte) sin16s::isUpper#7 (byte) sin16s::isUpper#5 (byte) sin16s::isUpper#4 (byte) sin16s::isUpper#3 -Alias (word) sin16s::x2#0 = (word~) sin16s::$8 -Alias (word) mul_u16_sel::return#1 = (word) mul_u16_sel::return#8 -Alias (word) sin16s::x3#0 = (word~) sin16s::$9 (word) sin16s::x3#1 -Alias (word) mul_u16_sel::v2#2 = (word/signed word/dword/signed dword~) sin16s::$10 -Alias (word) mul_u16_sel::return#2 = (word) mul_u16_sel::return#9 -Alias (word) sin16s::x3_6#0 = (word~) sin16s::$11 -Alias (word) sin16s::usinx#0 = (word~) sin16s::$12 (word) sin16s::usinx#4 (word) sin16s::usinx#2 -Alias (word) mul_u16_sel::return#10 = (word) mul_u16_sel::return#3 -Alias (word) sin16s::x4#0 = (word~) sin16s::$13 -Alias (word) mul_u16_sel::return#11 = (word) mul_u16_sel::return#4 -Alias (word) sin16s::x5#0 = (word~) sin16s::$14 -Alias (word) sin16s::x5_128#0 = (word~) sin16s::$15 -Alias (word) sin16s::usinx#1 = (word~) sin16s::$16 (word) sin16s::usinx#3 -Alias (signed word) sin16s::sinx#0 = (signed word~) sin16s::$17 -Alias (dword) sin16s::x#4 = (dword) sin16s::x#7 -Alias (byte) sin16s::isUpper#8 = (byte) sin16s::isUpper#9 -Alias (dword) sin16s::x#2 = (dword~) sin16s::$5 -Alias (signed word) sin16s::return#1 = (signed word) sin16s::sinx#2 (signed word) sin16s::return#4 (signed word) sin16s::return#2 -Alias (signed word) sin16s::sinx#1 = (signed word~) sin16s::$21 -Alias (dword) mul16u::return#2 = (dword) mul16u::return#4 -Alias (byte) mul_u16_sel::select#5 = (byte) mul_u16_sel::select#6 -Alias (word) mul_u16_sel::return#12 = (word) mul_u16_sel::return#5 (word~) mul_u16_sel::$2 (word) mul_u16_sel::return#6 Alias (word) rem16u#10 = (word) rem16u#19 Alias (byte*) line_cursor#5 = (byte*) line_cursor#9 Alias (byte*) char_cursor#21 = (byte*) char_cursor#41 @@ -3849,7 +4145,7 @@ Not aliassing across scopes: divr16u::divisor#6 divr16u::divisor#0 Not aliassing across scopes: rem16u#1 divr16u::rem#11 Not aliassing across scopes: div32u16u::dividend#1 div32u16u::dividend#0 Not aliassing across scopes: div32u16u::divisor#1 div32u16u::divisor#0 -Not aliassing across scopes: rem16u#20 rem16u#23 +Not aliassing across scopes: rem16u#20 rem16u#21 Not aliassing across scopes: divr16u::divisor#0 div32u16u::divisor#1 Not aliassing across scopes: divr16u::return#2 divr16u::return#0 Not aliassing across scopes: rem16u#12 rem16u#1 @@ -3861,6 +4157,44 @@ Not aliassing across scopes: rem16u#13 rem16u#1 Not aliassing across scopes: div32u16u::quotient_lo#0 divr16u::return#3 Not aliassing across scopes: mul16u::b#1 mul16u::b#0 Not aliassing across scopes: mul16u::a#5 mul16u::a#1 +Not aliassing across scopes: sin16s_gen::wavelength#1 sin16s_gen::wavelength#0 +Not aliassing across scopes: rem16u#21 rem16u#23 +Not aliassing across scopes: sin16s_gen::sintab#4 sin16s_gen::sintab#1 +Not aliassing across scopes: div32u16u::dividend#0 PI2_u4f28#0 +Not aliassing across scopes: div32u16u::divisor#0 sin16s_gen::wavelength#1 +Not aliassing across scopes: div32u16u::return#2 div32u16u::return#0 +Not aliassing across scopes: rem16u#15 rem16u#13 +Not aliassing across scopes: sin16s_gen::step#0 div32u16u::return#2 +Not aliassing across scopes: sin16s::x#0 sin16s_gen::x#2 +Not aliassing across scopes: sin16s::return#0 sin16s::return#1 +Not aliassing across scopes: sin16s_gen::$1 sin16s::return#0 +Not aliassing across scopes: sin16s::x#3 sin16s::x#0 +Not aliassing across scopes: mulu16_sel::v1#0 sin16s::x1#0 +Not aliassing across scopes: mulu16_sel::v2#0 sin16s::x1#0 +Not aliassing across scopes: mulu16_sel::return#0 mulu16_sel::return#12 +Not aliassing across scopes: sin16s::x2#0 mulu16_sel::return#0 +Not aliassing across scopes: mulu16_sel::v1#1 sin16s::x2#0 +Not aliassing across scopes: mulu16_sel::v2#1 sin16s::x1#0 +Not aliassing across scopes: mulu16_sel::return#1 mulu16_sel::return#12 +Not aliassing across scopes: sin16s::x3#0 mulu16_sel::return#1 +Not aliassing across scopes: mulu16_sel::v1#2 sin16s::x3#0 +Not aliassing across scopes: mulu16_sel::return#2 mulu16_sel::return#12 +Not aliassing across scopes: sin16s::x3_6#0 mulu16_sel::return#2 +Not aliassing across scopes: mulu16_sel::v1#3 sin16s::x3#0 +Not aliassing across scopes: mulu16_sel::v2#3 sin16s::x1#0 +Not aliassing across scopes: mulu16_sel::return#10 mulu16_sel::return#12 +Not aliassing across scopes: sin16s::x4#0 mulu16_sel::return#10 +Not aliassing across scopes: mulu16_sel::v1#4 sin16s::x4#0 +Not aliassing across scopes: mulu16_sel::v2#4 sin16s::x1#0 +Not aliassing across scopes: mulu16_sel::return#11 mulu16_sel::return#12 +Not aliassing across scopes: sin16s::x5#0 mulu16_sel::return#11 +Not aliassing across scopes: mulu16_sel::v1#5 mulu16_sel::v1#3 +Not aliassing across scopes: mulu16_sel::v2#5 mulu16_sel::v2#3 +Not aliassing across scopes: mulu16_sel::select#5 mulu16_sel::select#3 +Not aliassing across scopes: mul16u::a#1 mulu16_sel::v1#5 +Not aliassing across scopes: mul16u::b#0 mulu16_sel::v2#5 +Not aliassing across scopes: mul16u::return#2 mul16u::res#2 +Not aliassing across scopes: mulu16_sel::$0 mul16u::return#2 Not aliassing across scopes: print_str::str#5 print_str::str#2 Not aliassing across scopes: char_cursor#51 char_cursor#49 Not aliassing across scopes: print_sword::w#2 print_sword::w#1 @@ -3879,57 +4213,19 @@ Not aliassing across scopes: print_char::ch#3 print_char::ch#1 Not aliassing across scopes: char_cursor#33 char_cursor#46 Not aliassing across scopes: print_cls::sc#0 SCREEN#0 Not aliassing across scopes: line_cursor#1 SCREEN#0 -Not aliassing across scopes: rem16u#21 rem16u#0 +Not aliassing across scopes: rem16u#23 rem16u#0 Not aliassing across scopes: line_cursor#10 SCREEN#0 Not aliassing across scopes: char_cursor#47 SCREEN#0 -Not aliassing across scopes: sin16s_gen::sintab#0 main::sintab1#0 +Not aliassing across scopes: sin16s_gen::sintab#1 main::sintab1#0 Not aliassing across scopes: sin16s_gen::wavelength#0 main::wavelength#0 -Not aliassing across scopes: rem16u#15 rem16u#18 +Not aliassing across scopes: rem16u#17 rem16u#16 Not aliassing across scopes: line_cursor#3 line_cursor#1 Not aliassing across scopes: char_cursor#16 line_cursor#1 Not aliassing across scopes: print_sword::w#1 main::sw#1 Not aliassing across scopes: char_cursor#17 char_cursor#24 Not aliassing across scopes: char_cursor#18 char_cursor#2 Not aliassing across scopes: char_cursor#19 char_cursor#2 -Not aliassing across scopes: sin16s_gen::wavelength#1 sin16s_gen::wavelength#0 -Not aliassing across scopes: rem16u#23 rem16u#21 -Not aliassing across scopes: sin16s_gen::sintab#4 sin16s_gen::sintab#0 -Not aliassing across scopes: div32u16u::dividend#0 PI2_u4f28#0 -Not aliassing across scopes: div32u16u::divisor#0 sin16s_gen::wavelength#1 -Not aliassing across scopes: div32u16u::return#2 div32u16u::return#0 -Not aliassing across scopes: rem16u#17 rem16u#13 -Not aliassing across scopes: sin16s_gen::step#0 div32u16u::return#2 -Not aliassing across scopes: sin16s::x#0 sin16s_gen::x#2 -Not aliassing across scopes: sin16s::return#0 sin16s::return#1 -Not aliassing across scopes: sin16s_gen::$1 sin16s::return#0 -Not aliassing across scopes: sin16s::x#3 sin16s::x#0 -Not aliassing across scopes: mul_u16_sel::v1#0 sin16s::x1#0 -Not aliassing across scopes: mul_u16_sel::v2#0 sin16s::x1#0 -Not aliassing across scopes: mul_u16_sel::return#0 mul_u16_sel::return#12 -Not aliassing across scopes: sin16s::x2#0 mul_u16_sel::return#0 -Not aliassing across scopes: mul_u16_sel::v1#1 sin16s::x2#0 -Not aliassing across scopes: mul_u16_sel::v2#1 sin16s::x1#0 -Not aliassing across scopes: mul_u16_sel::return#1 mul_u16_sel::return#12 -Not aliassing across scopes: sin16s::x3#0 mul_u16_sel::return#1 -Not aliassing across scopes: mul_u16_sel::v1#2 sin16s::x3#0 -Not aliassing across scopes: mul_u16_sel::return#2 mul_u16_sel::return#12 -Not aliassing across scopes: sin16s::x3_6#0 mul_u16_sel::return#2 -Not aliassing across scopes: mul_u16_sel::v1#3 sin16s::x3#0 -Not aliassing across scopes: mul_u16_sel::v2#3 sin16s::x1#0 -Not aliassing across scopes: mul_u16_sel::return#10 mul_u16_sel::return#12 -Not aliassing across scopes: sin16s::x4#0 mul_u16_sel::return#10 -Not aliassing across scopes: mul_u16_sel::v1#4 sin16s::x4#0 -Not aliassing across scopes: mul_u16_sel::v2#4 sin16s::x1#0 -Not aliassing across scopes: mul_u16_sel::return#11 mul_u16_sel::return#12 -Not aliassing across scopes: sin16s::x5#0 mul_u16_sel::return#11 -Not aliassing across scopes: mul_u16_sel::v1#5 mul_u16_sel::v1#3 -Not aliassing across scopes: mul_u16_sel::v2#5 mul_u16_sel::v2#3 -Not aliassing across scopes: mul_u16_sel::select#5 mul_u16_sel::select#3 -Not aliassing across scopes: mul16u::a#1 mul_u16_sel::v1#5 -Not aliassing across scopes: mul16u::b#0 mul_u16_sel::v2#5 -Not aliassing across scopes: mul16u::return#2 mul16u::res#2 -Not aliassing across scopes: mul_u16_sel::$0 mul16u::return#2 -Not aliassing across scopes: rem16u#10 rem16u#16 +Not aliassing across scopes: rem16u#10 rem16u#18 Not aliassing across scopes: line_cursor#5 line_cursor#11 Not aliassing across scopes: char_cursor#21 char_cursor#18 Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#4 @@ -3939,12 +4235,12 @@ Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5 Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#6 Alias (word) mul16u::a#2 = (word) mul16u::a#4 Alias (dword) mul16u::mb#2 = (dword) mul16u::mb#3 +Alias (byte) sin16s::isUpper#2 = (byte) sin16s::isUpper#8 Alias (signed word) main::sw#0 = (signed word) main::sw#1 Alias (signed word*) main::st1#2 = (signed word*) main::st1#3 Alias (word) main::wavelength#1 = (word) main::wavelength#4 -Alias (word) rem16u#16 = (word) rem16u#31 -Alias (byte*) line_cursor#11 = (byte*) line_cursor#17 -Alias (byte) sin16s::isUpper#2 = (byte) sin16s::isUpper#8 +Alias (word) rem16u#18 = (word) rem16u#31 +Alias (byte*) line_cursor#11 = (byte*) line_cursor#16 Succesful SSA optimization Pass2AliasElimination Not aliassing across scopes: divr16u::rem#10 divr16u::rem#3 Not aliassing across scopes: divr16u::dividend#5 divr16u::dividend#1 @@ -3952,7 +4248,7 @@ Not aliassing across scopes: divr16u::divisor#6 divr16u::divisor#0 Not aliassing across scopes: rem16u#1 divr16u::rem#11 Not aliassing across scopes: div32u16u::dividend#1 div32u16u::dividend#0 Not aliassing across scopes: div32u16u::divisor#1 div32u16u::divisor#0 -Not aliassing across scopes: rem16u#20 rem16u#23 +Not aliassing across scopes: rem16u#20 rem16u#21 Not aliassing across scopes: divr16u::divisor#0 div32u16u::divisor#1 Not aliassing across scopes: divr16u::return#2 divr16u::return#0 Not aliassing across scopes: rem16u#12 rem16u#1 @@ -3964,6 +4260,44 @@ Not aliassing across scopes: rem16u#13 rem16u#1 Not aliassing across scopes: div32u16u::quotient_lo#0 divr16u::return#3 Not aliassing across scopes: mul16u::b#1 mul16u::b#0 Not aliassing across scopes: mul16u::a#5 mul16u::a#1 +Not aliassing across scopes: sin16s_gen::wavelength#1 sin16s_gen::wavelength#0 +Not aliassing across scopes: rem16u#21 rem16u#23 +Not aliassing across scopes: sin16s_gen::sintab#4 sin16s_gen::sintab#1 +Not aliassing across scopes: div32u16u::dividend#0 PI2_u4f28#0 +Not aliassing across scopes: div32u16u::divisor#0 sin16s_gen::wavelength#1 +Not aliassing across scopes: div32u16u::return#2 div32u16u::return#0 +Not aliassing across scopes: rem16u#15 rem16u#13 +Not aliassing across scopes: sin16s_gen::step#0 div32u16u::return#2 +Not aliassing across scopes: sin16s::x#0 sin16s_gen::x#2 +Not aliassing across scopes: sin16s::return#0 sin16s::return#1 +Not aliassing across scopes: sin16s_gen::$1 sin16s::return#0 +Not aliassing across scopes: sin16s::x#3 sin16s::x#0 +Not aliassing across scopes: mulu16_sel::v1#0 sin16s::x1#0 +Not aliassing across scopes: mulu16_sel::v2#0 sin16s::x1#0 +Not aliassing across scopes: mulu16_sel::return#0 mulu16_sel::return#12 +Not aliassing across scopes: sin16s::x2#0 mulu16_sel::return#0 +Not aliassing across scopes: mulu16_sel::v1#1 sin16s::x2#0 +Not aliassing across scopes: mulu16_sel::v2#1 sin16s::x1#0 +Not aliassing across scopes: mulu16_sel::return#1 mulu16_sel::return#12 +Not aliassing across scopes: sin16s::x3#0 mulu16_sel::return#1 +Not aliassing across scopes: mulu16_sel::v1#2 sin16s::x3#0 +Not aliassing across scopes: mulu16_sel::return#2 mulu16_sel::return#12 +Not aliassing across scopes: sin16s::x3_6#0 mulu16_sel::return#2 +Not aliassing across scopes: mulu16_sel::v1#3 sin16s::x3#0 +Not aliassing across scopes: mulu16_sel::v2#3 sin16s::x1#0 +Not aliassing across scopes: mulu16_sel::return#10 mulu16_sel::return#12 +Not aliassing across scopes: sin16s::x4#0 mulu16_sel::return#10 +Not aliassing across scopes: mulu16_sel::v1#4 sin16s::x4#0 +Not aliassing across scopes: mulu16_sel::v2#4 sin16s::x1#0 +Not aliassing across scopes: mulu16_sel::return#11 mulu16_sel::return#12 +Not aliassing across scopes: sin16s::x5#0 mulu16_sel::return#11 +Not aliassing across scopes: mulu16_sel::v1#5 mulu16_sel::v1#3 +Not aliassing across scopes: mulu16_sel::v2#5 mulu16_sel::v2#3 +Not aliassing across scopes: mulu16_sel::select#5 mulu16_sel::select#3 +Not aliassing across scopes: mul16u::a#1 mulu16_sel::v1#5 +Not aliassing across scopes: mul16u::b#0 mulu16_sel::v2#5 +Not aliassing across scopes: mul16u::return#2 mul16u::res#2 +Not aliassing across scopes: mulu16_sel::$0 mul16u::return#2 Not aliassing across scopes: print_str::str#5 print_str::str#2 Not aliassing across scopes: char_cursor#51 char_cursor#49 Not aliassing across scopes: print_sword::w#2 print_sword::w#1 @@ -3982,75 +4316,45 @@ Not aliassing across scopes: print_char::ch#3 print_char::ch#1 Not aliassing across scopes: char_cursor#33 char_cursor#46 Not aliassing across scopes: print_cls::sc#0 SCREEN#0 Not aliassing across scopes: line_cursor#1 SCREEN#0 -Not aliassing across scopes: rem16u#21 rem16u#0 +Not aliassing across scopes: rem16u#23 rem16u#0 Not aliassing across scopes: line_cursor#10 SCREEN#0 Not aliassing across scopes: char_cursor#47 SCREEN#0 -Not aliassing across scopes: sin16s_gen::sintab#0 main::sintab1#0 +Not aliassing across scopes: sin16s_gen::sintab#1 main::sintab1#0 Not aliassing across scopes: sin16s_gen::wavelength#0 main::wavelength#0 -Not aliassing across scopes: rem16u#15 rem16u#18 +Not aliassing across scopes: rem16u#17 rem16u#16 Not aliassing across scopes: line_cursor#3 line_cursor#1 Not aliassing across scopes: char_cursor#16 line_cursor#1 Not aliassing across scopes: print_sword::w#1 main::sw#0 Not aliassing across scopes: char_cursor#17 char_cursor#24 Not aliassing across scopes: char_cursor#18 char_cursor#2 Not aliassing across scopes: char_cursor#19 char_cursor#2 -Not aliassing across scopes: sin16s_gen::wavelength#1 sin16s_gen::wavelength#0 -Not aliassing across scopes: rem16u#23 rem16u#21 -Not aliassing across scopes: sin16s_gen::sintab#4 sin16s_gen::sintab#0 -Not aliassing across scopes: div32u16u::dividend#0 PI2_u4f28#0 -Not aliassing across scopes: div32u16u::divisor#0 sin16s_gen::wavelength#1 -Not aliassing across scopes: div32u16u::return#2 div32u16u::return#0 -Not aliassing across scopes: rem16u#17 rem16u#13 -Not aliassing across scopes: sin16s_gen::step#0 div32u16u::return#2 -Not aliassing across scopes: sin16s::x#0 sin16s_gen::x#2 -Not aliassing across scopes: sin16s::return#0 sin16s::return#1 -Not aliassing across scopes: sin16s_gen::$1 sin16s::return#0 -Not aliassing across scopes: sin16s::x#3 sin16s::x#0 -Not aliassing across scopes: mul_u16_sel::v1#0 sin16s::x1#0 -Not aliassing across scopes: mul_u16_sel::v2#0 sin16s::x1#0 -Not aliassing across scopes: mul_u16_sel::return#0 mul_u16_sel::return#12 -Not aliassing across scopes: sin16s::x2#0 mul_u16_sel::return#0 -Not aliassing across scopes: mul_u16_sel::v1#1 sin16s::x2#0 -Not aliassing across scopes: mul_u16_sel::v2#1 sin16s::x1#0 -Not aliassing across scopes: mul_u16_sel::return#1 mul_u16_sel::return#12 -Not aliassing across scopes: sin16s::x3#0 mul_u16_sel::return#1 -Not aliassing across scopes: mul_u16_sel::v1#2 sin16s::x3#0 -Not aliassing across scopes: mul_u16_sel::return#2 mul_u16_sel::return#12 -Not aliassing across scopes: sin16s::x3_6#0 mul_u16_sel::return#2 -Not aliassing across scopes: mul_u16_sel::v1#3 sin16s::x3#0 -Not aliassing across scopes: mul_u16_sel::v2#3 sin16s::x1#0 -Not aliassing across scopes: mul_u16_sel::return#10 mul_u16_sel::return#12 -Not aliassing across scopes: sin16s::x4#0 mul_u16_sel::return#10 -Not aliassing across scopes: mul_u16_sel::v1#4 sin16s::x4#0 -Not aliassing across scopes: mul_u16_sel::v2#4 sin16s::x1#0 -Not aliassing across scopes: mul_u16_sel::return#11 mul_u16_sel::return#12 -Not aliassing across scopes: sin16s::x5#0 mul_u16_sel::return#11 -Not aliassing across scopes: mul_u16_sel::v1#5 mul_u16_sel::v1#3 -Not aliassing across scopes: mul_u16_sel::v2#5 mul_u16_sel::v2#3 -Not aliassing across scopes: mul_u16_sel::select#5 mul_u16_sel::select#3 -Not aliassing across scopes: mul16u::a#1 mul_u16_sel::v1#5 -Not aliassing across scopes: mul16u::b#0 mul_u16_sel::v2#5 -Not aliassing across scopes: mul16u::return#2 mul16u::res#2 -Not aliassing across scopes: mul_u16_sel::$0 mul16u::return#2 -Not aliassing across scopes: rem16u#10 rem16u#16 +Not aliassing across scopes: rem16u#10 rem16u#18 Not aliassing across scopes: line_cursor#5 line_cursor#11 Not aliassing across scopes: char_cursor#21 char_cursor#18 Self Phi Eliminated (word) divr16u::divisor#2 -Self Phi Eliminated (word) main::wavelength#1 -Self Phi Eliminated (word) rem16u#16 -Self Phi Eliminated (byte*) line_cursor#11 Self Phi Eliminated (dword) sin16s_gen::step#1 Self Phi Eliminated (word) sin16s_gen::wavelength#2 +Self Phi Eliminated (word) rem16u#16 +Self Phi Eliminated (word) main::wavelength#1 Self Phi Eliminated (word) rem16u#18 +Self Phi Eliminated (byte*) line_cursor#11 Succesful SSA optimization Pass2SelfPhiElimination Redundant Phi (word) divr16u::divisor#2 (word) divr16u::divisor#6 Redundant Phi (dword) div32u16u::dividend#1 (dword) div32u16u::dividend#0 Redundant Phi (word) div32u16u::divisor#1 (word) div32u16u::divisor#0 -Redundant Phi (word) rem16u#20 (word) rem16u#23 +Redundant Phi (word) rem16u#20 (word) rem16u#21 Redundant Phi (word) rem16u#12 (word) rem16u#1 Redundant Phi (word) rem16u#13 (word) rem16u#1 Redundant Phi (word) mul16u::b#1 (word) mul16u::b#0 Redundant Phi (word) mul16u::a#5 (word) mul16u::a#1 +Redundant Phi (word) sin16s_gen::wavelength#1 (word) sin16s_gen::wavelength#0 +Redundant Phi (word) rem16u#21 (word) rem16u#23 +Redundant Phi (signed word*) sin16s_gen::sintab#4 (signed word*) sin16s_gen::sintab#1 +Redundant Phi (word) rem16u#15 (word) rem16u#13 +Redundant Phi (dword) sin16s_gen::step#1 (dword) sin16s_gen::step#0 +Redundant Phi (word) sin16s_gen::wavelength#2 (word) sin16s_gen::wavelength#1 +Redundant Phi (word) rem16u#16 (word) rem16u#15 +Redundant Phi (dword) sin16s::x#3 (dword) sin16s::x#0 Redundant Phi (signed word) print_sword::w#2 (signed word) print_sword::w#1 Redundant Phi (byte*) char_cursor#44 (byte*) char_cursor#48 Redundant Phi (byte*) char_cursor#24 (byte*) char_cursor#28 @@ -4061,27 +4365,19 @@ Redundant Phi (byte*) char_cursor#27 (byte*) char_cursor#10 Redundant Phi (byte*) char_cursor#28 (byte*) char_cursor#10 Redundant Phi (byte*) char_cursor#30 (byte*) char_cursor#12 Redundant Phi (byte*) char_cursor#10 (byte*) char_cursor#12 -Redundant Phi (word) rem16u#21 (word) rem16u#0 +Redundant Phi (word) rem16u#23 (word) rem16u#0 Redundant Phi (byte*) line_cursor#10 (byte*) SCREEN#0 Redundant Phi (byte*) char_cursor#47 (byte*) SCREEN#0 -Redundant Phi (word) rem16u#15 (word) rem16u#18 +Redundant Phi (word) rem16u#17 (word) rem16u#16 Redundant Phi (byte*) line_cursor#3 (byte*) line_cursor#1 Redundant Phi (byte*) char_cursor#16 (byte*) line_cursor#1 Redundant Phi (word) main::wavelength#1 (word) main::wavelength#0 -Redundant Phi (word) rem16u#16 (word) rem16u#15 +Redundant Phi (word) rem16u#18 (word) rem16u#17 Redundant Phi (byte*) line_cursor#11 (byte*) line_cursor#3 Redundant Phi (byte*) char_cursor#17 (byte*) char_cursor#24 Redundant Phi (byte*) char_cursor#18 (byte*) char_cursor#2 Redundant Phi (byte*) char_cursor#19 (byte*) char_cursor#2 -Redundant Phi (word) sin16s_gen::wavelength#1 (word) sin16s_gen::wavelength#0 -Redundant Phi (word) rem16u#23 (word) rem16u#21 -Redundant Phi (signed word*) sin16s_gen::sintab#4 (signed word*) sin16s_gen::sintab#0 -Redundant Phi (word) rem16u#17 (word) rem16u#13 -Redundant Phi (dword) sin16s_gen::step#1 (dword) sin16s_gen::step#0 -Redundant Phi (word) sin16s_gen::wavelength#2 (word) sin16s_gen::wavelength#1 -Redundant Phi (word) rem16u#18 (word) rem16u#17 -Redundant Phi (dword) sin16s::x#3 (dword) sin16s::x#0 -Redundant Phi (word) rem16u#10 (word) rem16u#16 +Redundant Phi (word) rem16u#10 (word) rem16u#18 Redundant Phi (byte*) line_cursor#5 (byte*) line_cursor#11 Redundant Phi (byte*) char_cursor#21 (byte*) char_cursor#18 Succesful SSA optimization Pass2RedundantPhiElimination @@ -4090,28 +4386,21 @@ Simple Condition (boolean~) divr16u::$9 if((word) divr16u::rem#6<(word) divr16u: Simple Condition (boolean~) divr16u::$11 if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 Simple Condition (boolean~) mul16u::$0 if((word) mul16u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 Simple Condition (boolean~) mul16u::$3 if((byte~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 +Simple Condition (boolean~) sin16s_gen::$4 if((word) sin16s_gen::i#1<(word) sin16s_gen::wavelength#0) goto sin16s_gen::@1 +Simple Condition (boolean~) sin16s::$1 if((dword) sin16s::x#0<(dword) PI_u4f28#0) goto sin16s::@1 +Simple Condition (boolean~) sin16s::$4 if((dword) sin16s::x#4<(dword) PI_HALF_u4f28#0) goto sin16s::@2 +Simple Condition (boolean~) sin16s::$19 if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@3 Simple Condition (boolean~) print_str::$0 if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 Simple Condition (boolean~) print_sword::$1 if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 Simple Condition (boolean~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 Simple Condition (boolean~) main::$3 if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 Simple Condition (boolean~) main::$10 if((signed word*) main::st1#1<(signed word*~) main::$9) goto main::@1 -Simple Condition (boolean~) sin16s_gen::$4 if((word) sin16s_gen::i#1<(word) sin16s_gen::wavelength#0) goto sin16s_gen::@1 -Simple Condition (boolean~) sin16s::$1 if((dword) sin16s::x#0<(dword) PI_u4f28#0) goto sin16s::@1 -Simple Condition (boolean~) sin16s::$4 if((dword) sin16s::x#4<(dword) PI_HALF_u4f28#0) goto sin16s::@2 -Simple Condition (boolean~) sin16s::$19 if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@3 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const word) rem16u#0 = 0 Constant (const word) divr16u::quotient#0 = 0 Constant (const byte) divr16u::i#0 = 0 Constant (const word) divr16u::rem#3 = 0 Constant (const dword) mul16u::res#0 = 0 -Constant (const byte*) SCREEN#0 = ((byte*))1024 -Constant (const byte) print_char::ch#0 = '-' -Constant (const string) print_byte::hextab#0 = print_byte::$4 -Constant (const word) main::wavelength#0 = 120 -Constant (const signed word[120]) main::sintab1#0 = { fill( 120, 0) } -Constant (const string) print_str::str#1 = main::str -Constant (const string) print_str::str#2 = main::str1 Constant (const dword) PI2_u4f28#0 = 1686629713 Constant (const dword) PI_u4f28#0 = 843314857 Constant (const dword) PI_HALF_u4f28#0 = 421657428 @@ -4119,25 +4408,32 @@ Constant (const dword) sin16s_gen::x#0 = 0 Constant (const word) sin16s_gen::i#0 = 0 Constant (const byte) sin16s::isUpper#0 = 0 Constant (const byte) sin16s::isUpper#1 = 1 -Constant (const byte) mul_u16_sel::select#0 = 0 -Constant (const byte) mul_u16_sel::select#1 = 1 -Constant (const word) mul_u16_sel::v2#2 = 65536/6 -Constant (const byte) mul_u16_sel::select#2 = 1 -Constant (const byte) mul_u16_sel::select#3 = 0 -Constant (const byte) mul_u16_sel::select#4 = 0 +Constant (const byte) mulu16_sel::select#0 = 0 +Constant (const byte) mulu16_sel::select#1 = 1 +Constant (const word) mulu16_sel::v2#2 = 65536/6 +Constant (const byte) mulu16_sel::select#2 = 1 +Constant (const byte) mulu16_sel::select#3 = 0 +Constant (const byte) mulu16_sel::select#4 = 0 +Constant (const byte*) SCREEN#0 = ((byte*))1024 +Constant (const byte) print_char::ch#0 = '-' +Constant (const string) print_byte::hextab#0 = print_byte::$4 +Constant (const word) main::wavelength#0 = 120 +Constant (const signed word[120]) main::sintab1#0 = { fill( 120, 0) } +Constant (const string) print_str::str#1 = main::str +Constant (const string) print_str::str#2 = main::str1 Succesful SSA optimization Pass2ConstantIdentification +Constant (const dword) div32u16u::dividend#0 = PI2_u4f28#0 Constant (const byte*) print_cls::sc#0 = SCREEN#0 Constant (const byte*) print_cls::$0 = SCREEN#0+1000 Constant (const byte*) line_cursor#1 = SCREEN#0 -Constant (const signed word[120]) sin16s_gen::sintab#0 = main::sintab1#0 +Constant (const signed word[120]) sin16s_gen::sintab#1 = main::sintab1#0 Constant (const word) sin16s_gen::wavelength#0 = main::wavelength#0 Constant (const word) main::$8 = main::wavelength#0*2 -Constant (const dword) div32u16u::dividend#0 = PI2_u4f28#0 Succesful SSA optimization Pass2ConstantIdentification Constant (const word) divr16u::dividend#1 = >div32u16u::dividend#0 Constant (const word) divr16u::dividend#2 = (const dword) PI2_u4f28#0 Constant inlined divr16u::dividend#2 = <(const dword) PI2_u4f28#0 -Constant inlined mul_u16_sel::v2#2 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 +Constant inlined sin16s_gen::sintab#1 = (const signed word[120]) main::sintab1#0 +Constant inlined mulu16_sel::v2#2 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 Constant inlined print_char::ch#0 = (byte) '-' Constant inlined sin16s_gen::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined print_str::str#2 = (const string) main::str1 Constant inlined div32u16u::divisor#0 = (const word) main::wavelength#0 Constant inlined print_str::str#1 = (const string) main::str Constant inlined print_byte::$4 = (const string) print_byte::hextab#0 -Constant inlined mul_u16_sel::select#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::$9 = (const signed word[120]) main::sintab1#0+(const word) main::wavelength#0*(byte/signed byte/word/signed word/dword/signed dword) 2 -Constant inlined mul_u16_sel::select#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined mul_u16_sel::select#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined mul_u16_sel::select#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::$8 = (const word) main::wavelength#0*(byte/signed byte/word/signed word/dword/signed dword) 2 -Constant inlined mul_u16_sel::select#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @26 @end main main::@5 main::@1 main::@3 main::@2 main::@7 main::@8 main::@return print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return mul_u16_sel mul_u16_sel::@2 mul_u16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return +Block Sequence Planned @begin @29 @end main main::@5 main::@1 main::@3 main::@2 main::@7 main::@8 main::@return print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return Added new block during phi lifting main::@10(between main::@8 and main::@1) Added new block during phi lifting main::@11(between main::@1 and main::@2) Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1) @@ -4421,9 +4717,9 @@ Added new block during phi lifting mul16u::@10(between mul16u::@2 and mul16u::@4 Added new block during phi lifting divr16u::@8(between divr16u::@3 and divr16u::@1) Added new block during phi lifting divr16u::@9(between divr16u::@1 and divr16u::@2) Added new block during phi lifting divr16u::@10(between divr16u::@2 and divr16u::@3) -Block Sequence Planned @begin @26 @end main main::@5 main::@1 main::@3 main::@2 main::@7 main::@8 main::@return main::@10 main::@11 print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_sword::@5 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return print_cls::@3 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s_gen::@5 sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return sin16s::@15 sin16s::@14 sin16s::@13 mul_u16_sel mul_u16_sel::@2 mul_u16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 mul16u::@10 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return divr16u::@8 divr16u::@10 divr16u::@9 +Block Sequence Planned @begin @29 @end main main::@5 main::@1 main::@3 main::@2 main::@7 main::@8 main::@return main::@10 main::@11 print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_sword::@5 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return print_cls::@3 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s_gen::@5 sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return sin16s::@15 sin16s::@14 sin16s::@13 mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 mul16u::@10 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return divr16u::@8 divr16u::@10 divr16u::@9 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @26 +Adding NOP phi() at start of @29 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@5 @@ -4437,8 +4733,8 @@ Calls in [print_sword] to print_char:38 print_word:43 Calls in [print_word] to print_byte:50 print_byte:54 Calls in [print_byte] to print_char:61 print_char:66 Calls in [sin16s_gen] to div32u16u:80 sin16s:85 -Calls in [sin16s] to mul_u16_sel:111 mul_u16_sel:118 mul_u16_sel:123 mul_u16_sel:131 mul_u16_sel:138 -Calls in [mul_u16_sel] to mul16u:154 +Calls in [sin16s] to mulu16_sel:111 mulu16_sel:118 mulu16_sel:123 mulu16_sel:131 mulu16_sel:138 +Calls in [mulu16_sel] to mul16u:154 Calls in [div32u16u] to divr16u:178 divr16u:183 Propagating live ranges... @@ -4484,44 +4780,44 @@ Propagating live ranges... Propagating live ranges... Propagating live ranges... Created 38 initial phi equivalence classes -Coalesced [11] char_cursor#59 ← char_cursor#49 -Coalesced [13] char_cursor#58 ← char_cursor#2 -Coalesced [17] char_cursor#60 ← char_cursor#12 +Coalesced [11] char_cursor#58 ← char_cursor#49 +Coalesced [13] char_cursor#57 ← char_cursor#2 +Coalesced [17] char_cursor#59 ← char_cursor#12 Coalesced [22] main::st1#8 ← main::st1#1 -Coalesced [23] char_cursor#56 ← char_cursor#2 -Coalesced (already) [24] char_cursor#57 ← char_cursor#49 +Coalesced [23] char_cursor#55 ← char_cursor#2 +Coalesced (already) [24] char_cursor#56 ← char_cursor#49 Coalesced [26] print_str::str#6 ← print_str::str#5 -Coalesced (already) [27] char_cursor#61 ← char_cursor#51 +Coalesced (already) [27] char_cursor#60 ← char_cursor#51 Coalesced [34] print_str::str#7 ← print_str::str#0 -Coalesced [35] char_cursor#62 ← char_cursor#1 -Coalesced [37] char_cursor#69 ← char_cursor#48 +Coalesced [35] char_cursor#61 ← char_cursor#1 +Coalesced [37] char_cursor#68 ← char_cursor#48 Coalesced [40] print_sword::w#7 ← print_sword::w#0 -Coalesced [41] char_cursor#64 ← char_cursor#12 +Coalesced [41] char_cursor#63 ← char_cursor#12 Coalesced [45] print_sword::w#6 ← print_sword::w#1 -Coalesced (already) [46] char_cursor#63 ← char_cursor#48 +Coalesced (already) [46] char_cursor#62 ← char_cursor#48 Coalesced [48] print_byte::b#4 ← print_byte::b#0 -Coalesced [49] char_cursor#65 ← char_cursor#43 +Coalesced [49] char_cursor#64 ← char_cursor#43 Coalesced [52] print_byte::b#5 ← print_byte::b#1 -Coalesced (already) [53] char_cursor#66 ← char_cursor#12 +Coalesced (already) [53] char_cursor#65 ← char_cursor#12 Coalesced [59] print_char::ch#4 ← print_char::ch#1 -Coalesced (already) [60] char_cursor#67 ← char_cursor#46 +Coalesced (already) [60] char_cursor#66 ← char_cursor#46 Coalesced [64] print_char::ch#5 ← print_char::ch#2 -Coalesced (already) [65] char_cursor#68 ← char_cursor#12 +Coalesced (already) [65] char_cursor#67 ← char_cursor#12 Coalesced [78] print_cls::sc#3 ← print_cls::sc#1 Coalesced [94] sin16s_gen::x#4 ← sin16s_gen::x#1 -Coalesced [95] sin16s_gen::sintab#6 ← sin16s_gen::sintab#1 +Coalesced [95] sin16s_gen::sintab#6 ← sin16s_gen::sintab#0 Coalesced [96] sin16s_gen::i#4 ← sin16s_gen::i#1 Coalesced [99] sin16s::x#9 ← sin16s::x#1 Coalesced [103] sin16s::x#11 ← sin16s::x#2 -Coalesced [109] mul_u16_sel::v1#8 ← mul_u16_sel::v1#0 -Coalesced [110] mul_u16_sel::v2#8 ← mul_u16_sel::v2#0 -Coalesced [116] mul_u16_sel::v1#9 ← mul_u16_sel::v1#1 -Coalesced [117] mul_u16_sel::v2#9 ← mul_u16_sel::v2#1 -Coalesced [122] mul_u16_sel::v1#10 ← mul_u16_sel::v1#2 -Coalesced [129] mul_u16_sel::v1#6 ← mul_u16_sel::v1#3 -Coalesced [130] mul_u16_sel::v2#6 ← mul_u16_sel::v2#3 -Coalesced [136] mul_u16_sel::v1#7 ← mul_u16_sel::v1#4 -Coalesced [137] mul_u16_sel::v2#7 ← mul_u16_sel::v2#4 +Coalesced [109] mulu16_sel::v1#8 ← mulu16_sel::v1#0 +Coalesced [110] mulu16_sel::v2#8 ← mulu16_sel::v2#0 +Coalesced [116] mulu16_sel::v1#9 ← mulu16_sel::v1#1 +Coalesced [117] mulu16_sel::v2#9 ← mulu16_sel::v2#1 +Coalesced [122] mulu16_sel::v1#10 ← mulu16_sel::v1#2 +Coalesced [129] mulu16_sel::v1#6 ← mulu16_sel::v1#3 +Coalesced [130] mulu16_sel::v2#6 ← mulu16_sel::v2#3 +Coalesced [136] mulu16_sel::v1#7 ← mulu16_sel::v1#4 +Coalesced [137] mulu16_sel::v2#7 ← mulu16_sel::v2#4 Coalesced [145] sin16s::return#6 ← sin16s::sinx#1 Coalesced [149] sin16s::x#10 ← sin16s::x#4 Coalesced [150] sin16s::x#8 ← sin16s::x#0 @@ -4557,9 +4853,9 @@ Culled Empty Block (label) mul16u::@10 Culled Empty Block (label) divr16u::@8 Culled Empty Block (label) divr16u::@10 Culled Empty Block (label) divr16u::@9 -Block Sequence Planned @begin @26 @end main main::@5 main::@1 main::@3 main::@2 main::@7 main::@8 main::@return print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return sin16s::@15 mul_u16_sel mul_u16_sel::@2 mul_u16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return +Block Sequence Planned @begin @29 @end main main::@5 main::@1 main::@3 main::@2 main::@7 main::@8 main::@return print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return sin16s::@15 mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return Adding NOP phi() at start of @begin -Adding NOP phi() at start of @26 +Adding NOP phi() at start of @29 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@5 @@ -4606,14 +4902,14 @@ Propagating live ranges... FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() [ ] ( ) - to:@26 -@26: scope:[] from @begin + to:@29 +@29: scope:[] from @begin [1] phi() [ ] ( ) [2] call main param-assignment [ ] ( ) to:@end -@end: scope:[] from @26 +@end: scope:[] from @29 [3] phi() [ ] ( ) -main: scope:[main] from @26 +main: scope:[main] from @29 [4] phi() [ ] ( main:2 [ ] ) [5] call sin16s_gen param-assignment [ ] ( main:2 [ ] ) to:main::@5 @@ -4739,7 +5035,7 @@ sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen to:sin16s_gen::@1 sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@3 sin16s_gen::@4 [62] (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 ) [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) - [62] (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#1 ) [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) + [62] (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 ) [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) [62] (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 ) [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) [63] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) [64] call sin16s param-assignment [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] ) @@ -4748,10 +5044,10 @@ sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@4: scope:[sin16s_gen] from sin16s_gen::@1 [66] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ) [67] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) - [68] (signed word*) sin16s_gen::sintab#1 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#1 ] ) - [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ) - [70] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ) - [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ) + [68] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) + [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) + [70] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) + [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) to:sin16s_gen::@return sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@4 [72] return [ ] ( main:2::sin16s_gen:5 [ ] ) @@ -4774,41 +5070,41 @@ sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 [78] (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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#6 ] ) [79] (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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::$6 ] ) [80] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) - [81] (word) mul_u16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 ] ) - [82] (word) mul_u16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 mul_u16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 mul_u16_sel::v2#0 ] ) - [83] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ) - [84] (word) mul_u16_sel::return#0 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#0 ] ) + [81] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) + [82] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) + [83] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ) + [84] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 - [85] (word) sin16s::x2#0 ← (word) mul_u16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) - [86] (word) mul_u16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 ] ) - [87] (word) mul_u16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 mul_u16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 mul_u16_sel::v2#1 ] ) - [88] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ) - [89] (word) mul_u16_sel::return#1 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#1 ] ) + [85] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + [86] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) + [87] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) + [88] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ) + [89] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 - [90] (word) sin16s::x3#0 ← (word) mul_u16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) - [91] (word) mul_u16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul_u16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#2 ] ) - [92] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::x3#0 ] ) - [93] (word) mul_u16_sel::return#2 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul_u16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::return#2 ] ) + [90] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + [91] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) + [92] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::x3#0 ] ) + [93] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [94] (word) sin16s::x3_6#0 ← (word) mul_u16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + [94] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) [95] (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:64 [ 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 ] ) - [96] (word) mul_u16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#3 ] ) - [97] (word) mul_u16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#3 mul_u16_sel::v2#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#3 mul_u16_sel::v2#3 ] ) - [98] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::usinx#0 ] ) - [99] (word) mul_u16_sel::return#10 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::return#10 ] ) + [96] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) + [97] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) + [98] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::usinx#0 ] ) + [99] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [100] (word) sin16s::x4#0 ← (word) mul_u16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) - [101] (word) mul_u16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#4 ] ) - [102] (word) mul_u16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#4 mul_u16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#4 mul_u16_sel::v2#4 ] ) - [103] call mul_u16_sel param-assignment [ sin16s::isUpper#2 mul_u16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 mul_u16_sel::return#12 sin16s::usinx#0 ] ) - [104] (word) mul_u16_sel::return#11 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#11 ] ) + [100] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + [101] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) + [102] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) + [103] call mulu16_sel param-assignment [ sin16s::isUpper#2 mulu16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 mulu16_sel::return#12 sin16s::usinx#0 ] ) + [104] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) to:sin16s::@12 sin16s::@12: scope:[sin16s] from sin16s::@11 - [105] (word) sin16s::x5#0 ← (word) mul_u16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + [105] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) [106] (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:64 [ 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 ] ) [107] (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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) [108] 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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::usinx#1 ] ) @@ -4825,46 +5121,46 @@ sin16s::@return: scope:[sin16s] from sin16s::@3 sin16s::@15: scope:[sin16s] from sin16s::@12 [112] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#5 ] ) to:sin16s::@3 -mul_u16_sel: scope:[mul_u16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 - [113] (byte) mul_u16_sel::select#5 ← 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 ) [ mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] ) - [113] (word) mul_u16_sel::v2#5 ← phi( sin16s::@10/(word) mul_u16_sel::v2#3 sin16s::@11/(word) mul_u16_sel::v2#4 sin16s::@2/(word) mul_u16_sel::v2#0 sin16s::@8/(word) mul_u16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) [ mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] ) - [113] (word) mul_u16_sel::v1#5 ← phi( sin16s::@10/(word) mul_u16_sel::v1#3 sin16s::@11/(word) mul_u16_sel::v1#4 sin16s::@2/(word) mul_u16_sel::v1#0 sin16s::@8/(word) mul_u16_sel::v1#1 sin16s::@9/(word) mul_u16_sel::v1#2 ) [ mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#5 mul_u16_sel::v2#5 mul_u16_sel::select#5 ] ) - [114] (word) mul16u::a#1 ← (word) mul_u16_sel::v1#5 [ mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] ) - [115] (word) mul16u::b#0 ← (word) mul_u16_sel::v2#5 [ mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) - [116] call mul16u param-assignment [ mul_u16_sel::select#5 mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 ] ) - [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul_u16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::return#2 ] ) - to:mul_u16_sel::@2 -mul_u16_sel::@2: scope:[mul_u16_sel] from mul_u16_sel - [118] (dword~) mul_u16_sel::$0 ← (dword) mul16u::return#2 [ mul_u16_sel::select#5 mul_u16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] ) - [119] (dword~) mul_u16_sel::$1 ← (dword~) mul_u16_sel::$0 << (byte) mul_u16_sel::select#5 [ mul_u16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::$1 ] ) - [120] (word) mul_u16_sel::return#12 ← > (dword~) mul_u16_sel::$1 [ mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#12 ] ) - to:mul_u16_sel::@return -mul_u16_sel::@return: scope:[mul_u16_sel] from mul_u16_sel::@2 - [121] return [ mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#12 ] ) +mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 + [113] (byte) mulu16_sel::select#5 ← 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 ) [ mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) + [113] (word) mulu16_sel::v2#5 ← 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 ) [ mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) + [113] (word) mulu16_sel::v1#5 ← 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 ) [ mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ 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#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) + [114] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ) + [115] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) + [116] call mul16u param-assignment [ mulu16_sel::select#5 mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] ) + [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] ) + to:mulu16_sel::@2 +mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel + [118] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) + [119] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ 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:64::mulu16_sel:88 [ 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:64::mulu16_sel:92 [ 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:64::mulu16_sel:98 [ 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:64::mulu16_sel:103 [ 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 ] ) + [120] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) + to:mulu16_sel::@return +mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2 + [121] return [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) to:@return -mul16u: scope:[mul16u] from mul_u16_sel - [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] ) +mul16u: scope:[mul16u] from mulu16_sel + [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] ) to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 - [123] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) - [123] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) - [123] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) - [124] 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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) + [123] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) + [123] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) + [123] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) + [124] 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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [125] return [ mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 ] ) + [125] return [ mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] ) to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [126] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) - [127] 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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) + [126] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) + [127] 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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) to:mul16u::@7 mul16u::@7: scope:[mul16u] from mul16u::@2 - [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) + [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 - [129] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] ) - [130] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ) - [131] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ) + [129] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] ) + [130] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ) + [131] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ) to:mul16u::@1 div32u16u: scope:[div32u16u] from sin16s_gen [132] phi() [ ] ( main:2::sin16s_gen:5::div32u16u:59 [ ] ) @@ -4927,76 +5223,76 @@ divr16u::@return: scope:[divr16u] from divr16u::@6 DOMINATORS @begin dominated by @begin -@26 dominated by @26 @begin -@end dominated by @26 @end @begin -main dominated by @26 main @begin -main::@5 dominated by @26 main main::@5 @begin -main::@1 dominated by @26 main main::@1 main::@5 @begin -main::@3 dominated by @26 main main::@1 main::@5 main::@3 @begin -main::@2 dominated by @26 main main::@1 main::@2 main::@5 @begin -main::@7 dominated by main::@7 @26 main main::@1 main::@2 main::@5 @begin -main::@8 dominated by main::@7 main::@8 @26 main main::@1 main::@2 main::@5 @begin -main::@return dominated by main::@7 main::@8 @26 main main::@1 main::@2 main::@5 @begin main::@return -print_str dominated by @26 main main::@1 main::@5 @begin print_str -print_str::@1 dominated by @26 main main::@1 main::@5 @begin print_str::@1 print_str -print_str::@return dominated by @26 main main::@1 main::@5 @begin print_str::@return print_str::@1 print_str -print_str::@2 dominated by @26 main main::@1 main::@5 @begin print_str::@1 print_str::@2 print_str -print_sword dominated by @26 main main::@1 main::@2 main::@5 @begin print_sword -print_sword::@2 dominated by @26 print_sword::@2 main main::@1 main::@2 main::@5 @begin print_sword -print_sword::@4 dominated by @26 print_sword::@2 print_sword::@4 main main::@1 main::@2 main::@5 @begin print_sword -print_sword::@1 dominated by @26 print_sword::@1 main main::@1 main::@2 main::@5 @begin print_sword -print_sword::@return dominated by @26 print_sword::@1 main main::@1 main::@2 main::@5 @begin print_sword::@return print_sword -print_word dominated by @26 print_sword::@1 main print_word main::@1 main::@2 main::@5 @begin print_sword -print_word::@1 dominated by @26 print_sword::@1 main print_word main::@1 main::@2 main::@5 @begin print_word::@1 print_sword -print_word::@return dominated by @26 print_sword::@1 main print_word main::@1 main::@2 main::@5 @begin print_word::@return print_word::@1 print_sword -print_byte dominated by @26 print_sword::@1 main print_word main::@1 main::@2 main::@5 @begin print_byte print_sword -print_byte::@1 dominated by @26 print_sword::@1 main print_word main::@1 main::@2 main::@5 @begin print_byte::@1 print_byte print_sword -print_byte::@return dominated by @26 print_sword::@1 main print_word main::@1 main::@2 main::@5 @begin print_byte::@return print_byte::@1 print_byte print_sword -print_char dominated by @26 main print_char main::@1 main::@2 main::@5 @begin print_sword -print_char::@return dominated by @26 main print_char main::@1 main::@2 main::@5 print_char::@return @begin print_sword -print_cls dominated by @26 main main::@5 @begin print_cls -print_cls::@1 dominated by @26 main main::@5 @begin print_cls::@1 print_cls -print_cls::@return dominated by @26 main main::@5 @begin print_cls::@return print_cls::@1 print_cls -sin16s_gen dominated by @26 main @begin sin16s_gen -sin16s_gen::@3 dominated by @26 main @begin sin16s_gen sin16s_gen::@3 -sin16s_gen::@1 dominated by @26 main @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 -sin16s_gen::@4 dominated by @26 main @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1 -sin16s_gen::@return dominated by @26 main sin16s_gen::@return @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1 -sin16s dominated by @26 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 -sin16s::@4 dominated by @26 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s::@4 -sin16s::@1 dominated by @26 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 -sin16s::@5 dominated by @26 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@5 -sin16s::@2 dominated by @26 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@2 -sin16s::@8 dominated by @26 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@8 sin16s::@2 -sin16s::@9 dominated by @26 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@2 -sin16s::@10 dominated by @26 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@10 sin16s::@2 -sin16s::@11 dominated by @26 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@11 sin16s::@10 sin16s::@2 -sin16s::@12 dominated by @26 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@2 -sin16s::@6 dominated by @26 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@6 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@2 -sin16s::@3 dominated by @26 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@3 sin16s::@2 -sin16s::@return dominated by @26 main sin16s @begin sin16s::@return sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@3 sin16s::@2 -sin16s::@15 dominated by @26 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@15 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@2 -mul_u16_sel dominated by @26 main sin16s mul_u16_sel @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@2 -mul_u16_sel::@2 dominated by @26 main sin16s mul_u16_sel @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@2 mul_u16_sel::@2 -mul_u16_sel::@return dominated by @26 main sin16s mul_u16_sel @begin mul_u16_sel::@return sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@2 mul_u16_sel::@2 -mul16u dominated by @26 main mul16u sin16s mul_u16_sel @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@2 -mul16u::@1 dominated by @26 main mul16u mul16u::@1 sin16s mul_u16_sel @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@2 -mul16u::@return dominated by @26 main mul16u mul16u::@1 sin16s mul_u16_sel @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@2 mul16u::@return -mul16u::@2 dominated by @26 main mul16u mul16u::@1 mul16u::@2 sin16s mul_u16_sel @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@2 -mul16u::@7 dominated by @26 main mul16u mul16u::@1 mul16u::@2 sin16s mul_u16_sel @begin mul16u::@7 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@2 -mul16u::@4 dominated by @26 main mul16u mul16u::@1 mul16u::@2 sin16s mul_u16_sel @begin mul16u::@4 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@2 -div32u16u dominated by @26 main @begin sin16s_gen div32u16u -div32u16u::@2 dominated by @26 main div32u16u::@2 @begin sin16s_gen div32u16u -div32u16u::@3 dominated by @26 main div32u16u::@2 div32u16u::@3 @begin sin16s_gen div32u16u -div32u16u::@return dominated by @26 main div32u16u::@2 div32u16u::@3 @begin sin16s_gen div32u16u div32u16u::@return -divr16u dominated by divr16u @26 main @begin sin16s_gen div32u16u -divr16u::@1 dominated by divr16u @26 divr16u::@1 main @begin sin16s_gen div32u16u -divr16u::@4 dominated by divr16u @26 divr16u::@1 main divr16u::@4 @begin sin16s_gen div32u16u -divr16u::@2 dominated by divr16u @26 divr16u::@2 divr16u::@1 main @begin sin16s_gen div32u16u -divr16u::@5 dominated by divr16u @26 divr16u::@2 divr16u::@1 main divr16u::@5 @begin sin16s_gen div32u16u -divr16u::@3 dominated by divr16u @26 divr16u::@2 divr16u::@1 main divr16u::@3 @begin sin16s_gen div32u16u -divr16u::@6 dominated by divr16u @26 divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @begin sin16s_gen div32u16u -divr16u::@return dominated by divr16u @26 divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @begin sin16s_gen div32u16u divr16u::@return +@29 dominated by @29 @begin +@end dominated by @end @29 @begin +main dominated by @29 main @begin +main::@5 dominated by @29 main main::@5 @begin +main::@1 dominated by @29 main main::@1 main::@5 @begin +main::@3 dominated by @29 main main::@1 main::@5 main::@3 @begin +main::@2 dominated by @29 main main::@1 main::@2 main::@5 @begin +main::@7 dominated by main::@7 @29 main main::@1 main::@2 main::@5 @begin +main::@8 dominated by main::@7 main::@8 @29 main main::@1 main::@2 main::@5 @begin +main::@return dominated by main::@7 main::@8 @29 main main::@1 main::@2 main::@5 @begin main::@return +print_str dominated by @29 main main::@1 main::@5 @begin print_str +print_str::@1 dominated by @29 main main::@1 main::@5 @begin print_str::@1 print_str +print_str::@return dominated by @29 main main::@1 main::@5 @begin print_str::@return print_str::@1 print_str +print_str::@2 dominated by @29 main main::@1 main::@5 @begin print_str::@1 print_str::@2 print_str +print_sword dominated by @29 main main::@1 main::@2 main::@5 @begin print_sword +print_sword::@2 dominated by print_sword::@2 @29 main main::@1 main::@2 main::@5 @begin print_sword +print_sword::@4 dominated by print_sword::@2 print_sword::@4 @29 main main::@1 main::@2 main::@5 @begin print_sword +print_sword::@1 dominated by print_sword::@1 @29 main main::@1 main::@2 main::@5 @begin print_sword +print_sword::@return dominated by print_sword::@1 @29 main main::@1 main::@2 main::@5 @begin print_sword::@return print_sword +print_word dominated by print_sword::@1 @29 main print_word main::@1 main::@2 main::@5 @begin print_sword +print_word::@1 dominated by print_sword::@1 @29 main print_word main::@1 main::@2 main::@5 @begin print_word::@1 print_sword +print_word::@return dominated by print_sword::@1 @29 main print_word main::@1 main::@2 main::@5 @begin print_word::@return print_word::@1 print_sword +print_byte dominated by print_sword::@1 @29 main print_word main::@1 main::@2 main::@5 @begin print_byte print_sword +print_byte::@1 dominated by print_sword::@1 @29 main print_word main::@1 main::@2 main::@5 @begin print_byte::@1 print_byte print_sword +print_byte::@return dominated by print_sword::@1 @29 main print_word main::@1 main::@2 main::@5 @begin print_byte::@return print_byte::@1 print_byte print_sword +print_char dominated by @29 main print_char main::@1 main::@2 main::@5 @begin print_sword +print_char::@return dominated by @29 main print_char main::@1 main::@2 main::@5 print_char::@return @begin print_sword +print_cls dominated by @29 main main::@5 @begin print_cls +print_cls::@1 dominated by @29 main main::@5 @begin print_cls::@1 print_cls +print_cls::@return dominated by @29 main main::@5 @begin print_cls::@return print_cls::@1 print_cls +sin16s_gen dominated by @29 main @begin sin16s_gen +sin16s_gen::@3 dominated by @29 main @begin sin16s_gen sin16s_gen::@3 +sin16s_gen::@1 dominated by @29 main @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 +sin16s_gen::@4 dominated by @29 main @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1 +sin16s_gen::@return dominated by @29 main sin16s_gen::@return @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1 +sin16s dominated by @29 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 +sin16s::@4 dominated by @29 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s::@4 +sin16s::@1 dominated by @29 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 +sin16s::@5 dominated by @29 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@5 +sin16s::@2 dominated by @29 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@2 +sin16s::@8 dominated by @29 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@8 sin16s::@2 +sin16s::@9 dominated by @29 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@2 +sin16s::@10 dominated by @29 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@10 sin16s::@2 +sin16s::@11 dominated by @29 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@11 sin16s::@10 sin16s::@2 +sin16s::@12 dominated by @29 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@2 +sin16s::@6 dominated by @29 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@6 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@2 +sin16s::@3 dominated by @29 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@3 sin16s::@2 +sin16s::@return dominated by @29 main sin16s @begin sin16s::@return sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@3 sin16s::@2 +sin16s::@15 dominated by @29 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@15 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@2 +mulu16_sel dominated by @29 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 +mulu16_sel::@2 dominated by @29 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 mulu16_sel::@2 +mulu16_sel::@return dominated by @29 main sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 mulu16_sel::@return mulu16_sel::@2 +mul16u dominated by @29 main mul16u sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 +mul16u::@1 dominated by @29 main mul16u mul16u::@1 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 +mul16u::@return dominated by @29 main mul16u mul16u::@1 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 mul16u::@return +mul16u::@2 dominated by @29 main mul16u mul16u::@1 mul16u::@2 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 +mul16u::@7 dominated by @29 main mul16u mul16u::@1 mul16u::@2 sin16s @begin mul16u::@7 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 +mul16u::@4 dominated by @29 main mul16u mul16u::@1 mul16u::@2 sin16s @begin mul16u::@4 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 +div32u16u dominated by @29 main @begin sin16s_gen div32u16u +div32u16u::@2 dominated by @29 main div32u16u::@2 @begin sin16s_gen div32u16u +div32u16u::@3 dominated by @29 main div32u16u::@2 div32u16u::@3 @begin sin16s_gen div32u16u +div32u16u::@return dominated by @29 main div32u16u::@2 div32u16u::@3 @begin sin16s_gen div32u16u div32u16u::@return +divr16u dominated by divr16u @29 main @begin sin16s_gen div32u16u +divr16u::@1 dominated by divr16u @29 divr16u::@1 main @begin sin16s_gen div32u16u +divr16u::@4 dominated by divr16u @29 divr16u::@1 main divr16u::@4 @begin sin16s_gen div32u16u +divr16u::@2 dominated by divr16u @29 divr16u::@2 divr16u::@1 main @begin sin16s_gen div32u16u +divr16u::@5 dominated by divr16u @29 divr16u::@2 divr16u::@1 main divr16u::@5 @begin sin16s_gen div32u16u +divr16u::@3 dominated by divr16u @29 divr16u::@2 divr16u::@1 main divr16u::@3 @begin sin16s_gen div32u16u +divr16u::@6 dominated by divr16u @29 divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @begin sin16s_gen div32u16u +divr16u::@return dominated by divr16u @29 divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @begin sin16s_gen div32u16u divr16u::@return NATURAL LOOPS Found back edge: Loop head: main::@1 tails: main::@8 blocks: null @@ -5035,7 +5331,7 @@ Found 0 loops in scope [print_char] Found 0 loops in scope [print_word] Found 1 loops in scope [divr16u] Loop head: divr16u::@1 tails: divr16u::@3 blocks: divr16u::@3 divr16u::@2 divr16u::@5 divr16u::@1 divr16u::@4 -Found 0 loops in scope [mul_u16_sel] +Found 0 loops in scope [mulu16_sel] Found 0 loops in scope [print_byte] Found 1 loops in scope [mul16u] Loop head: mul16u::@1 tails: mul16u::@4 blocks: mul16u::@4 mul16u::@2 mul16u::@7 mul16u::@1 @@ -5129,31 +5425,31 @@ VARIABLE REGISTER WEIGHTS (dword) mul16u::res#6 101.0 (dword) mul16u::return (dword) mul16u::return#2 4.0 -(word()) mul_u16_sel((word) mul_u16_sel::v1 , (word) mul_u16_sel::v2 , (byte) mul_u16_sel::select) -(dword~) mul_u16_sel::$0 4.0 -(dword~) mul_u16_sel::$1 4.0 -(word) mul_u16_sel::return -(word) mul_u16_sel::return#0 4.0 -(word) mul_u16_sel::return#1 4.0 -(word) mul_u16_sel::return#10 4.0 -(word) mul_u16_sel::return#11 4.0 -(word) mul_u16_sel::return#12 1.714285714285714 -(word) mul_u16_sel::return#2 4.0 -(byte) mul_u16_sel::select -(byte) mul_u16_sel::select#5 0.3333333333333333 -(word) mul_u16_sel::v1 -(word) mul_u16_sel::v1#0 2.0 -(word) mul_u16_sel::v1#1 2.0 -(word) mul_u16_sel::v1#2 4.0 -(word) mul_u16_sel::v1#3 2.0 -(word) mul_u16_sel::v1#4 2.0 -(word) mul_u16_sel::v1#5 12.0 -(word) mul_u16_sel::v2 -(word) mul_u16_sel::v2#0 4.0 -(word) mul_u16_sel::v2#1 4.0 -(word) mul_u16_sel::v2#3 4.0 -(word) mul_u16_sel::v2#4 4.0 -(word) mul_u16_sel::v2#5 5.0 +(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) +(dword~) mulu16_sel::$0 4.0 +(dword~) mulu16_sel::$1 4.0 +(word) mulu16_sel::return +(word) mulu16_sel::return#0 4.0 +(word) mulu16_sel::return#1 4.0 +(word) mulu16_sel::return#10 4.0 +(word) mulu16_sel::return#11 4.0 +(word) mulu16_sel::return#12 1.714285714285714 +(word) mulu16_sel::return#2 4.0 +(byte) mulu16_sel::select +(byte) mulu16_sel::select#5 0.3333333333333333 +(word) mulu16_sel::v1 +(word) mulu16_sel::v1#0 2.0 +(word) mulu16_sel::v1#1 2.0 +(word) mulu16_sel::v1#2 4.0 +(word) mulu16_sel::v1#3 2.0 +(word) mulu16_sel::v1#4 2.0 +(word) mulu16_sel::v1#5 12.0 +(word) mulu16_sel::v2 +(word) mulu16_sel::v2#0 4.0 +(word) mulu16_sel::v2#1 4.0 +(word) mulu16_sel::v2#3 4.0 +(word) mulu16_sel::v2#4 4.0 +(word) mulu16_sel::v2#5 5.0 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 4.0 (byte~) print_byte::$2 4.0 @@ -5224,7 +5520,7 @@ VARIABLE REGISTER WEIGHTS (word) sin16s_gen::i#1 16.5 (word) sin16s_gen::i#2 2.75 (signed word*) sin16s_gen::sintab -(signed word*) sin16s_gen::sintab#1 5.5 +(signed word*) sin16s_gen::sintab#0 5.5 (signed word*) sin16s_gen::sintab#2 5.5 (dword) sin16s_gen::step (dword) sin16s_gen::step#0 1.1818181818181819 @@ -5242,14 +5538,14 @@ Initial phi equivalence classes [ 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 ] [ print_cls::sc#2 print_cls::sc#1 ] [ sin16s_gen::x#2 sin16s_gen::x#1 ] -[ sin16s_gen::sintab#2 sin16s_gen::sintab#1 ] +[ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] [ sin16s_gen::i#2 sin16s_gen::i#1 ] [ sin16s::isUpper#2 ] [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] -[ mul_u16_sel::v1#5 mul_u16_sel::v1#3 mul_u16_sel::v1#4 mul_u16_sel::v1#0 mul_u16_sel::v1#1 mul_u16_sel::v1#2 ] -[ mul_u16_sel::v2#5 mul_u16_sel::v2#3 mul_u16_sel::v2#4 mul_u16_sel::v2#0 mul_u16_sel::v2#1 ] -[ mul_u16_sel::select#5 ] +[ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] +[ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] +[ mulu16_sel::select#5 ] [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] @@ -5267,24 +5563,24 @@ Added variable sin16s::return#0 to zero page equivalence class [ sin16s::return# Added variable sin16s_gen::$1 to zero page equivalence class [ sin16s_gen::$1 ] Added variable sin16s::$6 to zero page equivalence class [ sin16s::$6 ] Added variable sin16s::x1#0 to zero page equivalence class [ sin16s::x1#0 ] -Added variable mul_u16_sel::return#0 to zero page equivalence class [ mul_u16_sel::return#0 ] +Added variable mulu16_sel::return#0 to zero page equivalence class [ mulu16_sel::return#0 ] Added variable sin16s::x2#0 to zero page equivalence class [ sin16s::x2#0 ] -Added variable mul_u16_sel::return#1 to zero page equivalence class [ mul_u16_sel::return#1 ] +Added variable mulu16_sel::return#1 to zero page equivalence class [ mulu16_sel::return#1 ] Added variable sin16s::x3#0 to zero page equivalence class [ sin16s::x3#0 ] -Added variable mul_u16_sel::return#2 to zero page equivalence class [ mul_u16_sel::return#2 ] +Added variable mulu16_sel::return#2 to zero page equivalence class [ mulu16_sel::return#2 ] Added variable sin16s::x3_6#0 to zero page equivalence class [ sin16s::x3_6#0 ] Added variable sin16s::usinx#0 to zero page equivalence class [ sin16s::usinx#0 ] -Added variable mul_u16_sel::return#10 to zero page equivalence class [ mul_u16_sel::return#10 ] +Added variable mulu16_sel::return#10 to zero page equivalence class [ mulu16_sel::return#10 ] Added variable sin16s::x4#0 to zero page equivalence class [ sin16s::x4#0 ] -Added variable mul_u16_sel::return#11 to zero page equivalence class [ mul_u16_sel::return#11 ] +Added variable mulu16_sel::return#11 to zero page equivalence class [ mulu16_sel::return#11 ] Added variable sin16s::x5#0 to zero page equivalence class [ sin16s::x5#0 ] Added variable sin16s::x5_128#0 to zero page equivalence class [ sin16s::x5_128#0 ] Added variable sin16s::usinx#1 to zero page equivalence class [ sin16s::usinx#1 ] Added variable mul16u::b#0 to zero page equivalence class [ mul16u::b#0 ] Added variable mul16u::return#2 to zero page equivalence class [ mul16u::return#2 ] -Added variable mul_u16_sel::$0 to zero page equivalence class [ mul_u16_sel::$0 ] -Added variable mul_u16_sel::$1 to zero page equivalence class [ mul_u16_sel::$1 ] -Added variable mul_u16_sel::return#12 to zero page equivalence class [ mul_u16_sel::return#12 ] +Added variable mulu16_sel::$0 to zero page equivalence class [ mulu16_sel::$0 ] +Added variable mulu16_sel::$1 to zero page equivalence class [ mulu16_sel::$1 ] +Added variable mulu16_sel::return#12 to zero page equivalence class [ mulu16_sel::return#12 ] Added variable mul16u::$1 to zero page equivalence class [ mul16u::$1 ] Added variable divr16u::return#2 to zero page equivalence class [ divr16u::return#2 ] Added variable div32u16u::quotient_hi#0 to zero page equivalence class [ div32u16u::quotient_hi#0 ] @@ -5303,14 +5599,14 @@ Complete equivalence classes [ 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 ] [ print_cls::sc#2 print_cls::sc#1 ] [ sin16s_gen::x#2 sin16s_gen::x#1 ] -[ sin16s_gen::sintab#2 sin16s_gen::sintab#1 ] +[ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] [ sin16s_gen::i#2 sin16s_gen::i#1 ] [ sin16s::isUpper#2 ] [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] -[ mul_u16_sel::v1#5 mul_u16_sel::v1#3 mul_u16_sel::v1#4 mul_u16_sel::v1#0 mul_u16_sel::v1#1 mul_u16_sel::v1#2 ] -[ mul_u16_sel::v2#5 mul_u16_sel::v2#3 mul_u16_sel::v2#4 mul_u16_sel::v2#0 mul_u16_sel::v2#1 ] -[ mul_u16_sel::select#5 ] +[ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] +[ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] +[ mulu16_sel::select#5 ] [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] @@ -5328,24 +5624,24 @@ Complete equivalence classes [ sin16s_gen::$1 ] [ sin16s::$6 ] [ sin16s::x1#0 ] -[ mul_u16_sel::return#0 ] +[ mulu16_sel::return#0 ] [ sin16s::x2#0 ] -[ mul_u16_sel::return#1 ] +[ mulu16_sel::return#1 ] [ sin16s::x3#0 ] -[ mul_u16_sel::return#2 ] +[ mulu16_sel::return#2 ] [ sin16s::x3_6#0 ] [ sin16s::usinx#0 ] -[ mul_u16_sel::return#10 ] +[ mulu16_sel::return#10 ] [ sin16s::x4#0 ] -[ mul_u16_sel::return#11 ] +[ mulu16_sel::return#11 ] [ sin16s::x5#0 ] [ sin16s::x5_128#0 ] [ sin16s::usinx#1 ] [ mul16u::b#0 ] [ mul16u::return#2 ] -[ mul_u16_sel::$0 ] -[ mul_u16_sel::$1 ] -[ mul_u16_sel::return#12 ] +[ mulu16_sel::$0 ] +[ mulu16_sel::$1 ] +[ mulu16_sel::return#12 ] [ mul16u::$1 ] [ divr16u::return#2 ] [ div32u16u::quotient_hi#0 ] @@ -5363,14 +5659,14 @@ Allocated zp ZP_BYTE:9 [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] Allocated zp ZP_WORD:10 [ 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 ] Allocated zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] Allocated zp ZP_DWORD:14 [ sin16s_gen::x#2 sin16s_gen::x#1 ] -Allocated zp ZP_WORD:18 [ sin16s_gen::sintab#2 sin16s_gen::sintab#1 ] +Allocated zp ZP_WORD:18 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] Allocated zp ZP_WORD:20 [ sin16s_gen::i#2 sin16s_gen::i#1 ] Allocated zp ZP_BYTE:22 [ sin16s::isUpper#2 ] Allocated zp ZP_DWORD:23 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] Allocated zp ZP_WORD:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] -Allocated zp ZP_WORD:29 [ mul_u16_sel::v1#5 mul_u16_sel::v1#3 mul_u16_sel::v1#4 mul_u16_sel::v1#0 mul_u16_sel::v1#1 mul_u16_sel::v1#2 ] -Allocated zp ZP_WORD:31 [ mul_u16_sel::v2#5 mul_u16_sel::v2#3 mul_u16_sel::v2#4 mul_u16_sel::v2#0 mul_u16_sel::v2#1 ] -Allocated zp ZP_BYTE:33 [ mul_u16_sel::select#5 ] +Allocated zp ZP_WORD:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] +Allocated zp ZP_WORD:31 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] +Allocated zp ZP_BYTE:33 [ mulu16_sel::select#5 ] Allocated zp ZP_WORD:34 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] Allocated zp ZP_DWORD:36 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] Allocated zp ZP_DWORD:40 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] @@ -5388,24 +5684,24 @@ Allocated zp ZP_WORD:65 [ sin16s::return#0 ] Allocated zp ZP_WORD:67 [ sin16s_gen::$1 ] Allocated zp ZP_DWORD:69 [ sin16s::$6 ] Allocated zp ZP_WORD:73 [ sin16s::x1#0 ] -Allocated zp ZP_WORD:75 [ mul_u16_sel::return#0 ] +Allocated zp ZP_WORD:75 [ mulu16_sel::return#0 ] Allocated zp ZP_WORD:77 [ sin16s::x2#0 ] -Allocated zp ZP_WORD:79 [ mul_u16_sel::return#1 ] +Allocated zp ZP_WORD:79 [ mulu16_sel::return#1 ] Allocated zp ZP_WORD:81 [ sin16s::x3#0 ] -Allocated zp ZP_WORD:83 [ mul_u16_sel::return#2 ] +Allocated zp ZP_WORD:83 [ mulu16_sel::return#2 ] Allocated zp ZP_WORD:85 [ sin16s::x3_6#0 ] Allocated zp ZP_WORD:87 [ sin16s::usinx#0 ] -Allocated zp ZP_WORD:89 [ mul_u16_sel::return#10 ] +Allocated zp ZP_WORD:89 [ mulu16_sel::return#10 ] Allocated zp ZP_WORD:91 [ sin16s::x4#0 ] -Allocated zp ZP_WORD:93 [ mul_u16_sel::return#11 ] +Allocated zp ZP_WORD:93 [ mulu16_sel::return#11 ] Allocated zp ZP_WORD:95 [ sin16s::x5#0 ] Allocated zp ZP_WORD:97 [ sin16s::x5_128#0 ] Allocated zp ZP_WORD:99 [ sin16s::usinx#1 ] Allocated zp ZP_WORD:101 [ mul16u::b#0 ] Allocated zp ZP_DWORD:103 [ mul16u::return#2 ] -Allocated zp ZP_DWORD:107 [ mul_u16_sel::$0 ] -Allocated zp ZP_DWORD:111 [ mul_u16_sel::$1 ] -Allocated zp ZP_WORD:115 [ mul_u16_sel::return#12 ] +Allocated zp ZP_DWORD:107 [ mulu16_sel::$0 ] +Allocated zp ZP_DWORD:111 [ mulu16_sel::$1 ] +Allocated zp ZP_WORD:115 [ mulu16_sel::return#12 ] Allocated zp ZP_BYTE:117 [ mul16u::$1 ] Allocated zp ZP_WORD:118 [ divr16u::return#2 ] Allocated zp ZP_WORD:120 [ div32u16u::quotient_hi#0 ] @@ -5422,25 +5718,25 @@ INITIAL ASM :BasicUpstart(main) .pc = $80d "Program" //SEG1 Global Constants & labels - .label SCREEN = $400 .const PI2_u4f28 = $6487ed51 .const PI_u4f28 = $3243f6a9 .const PI_HALF_u4f28 = $1921fb54 + .label SCREEN = $400 .label rem16u = $84 .label char_cursor = $a //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @26 [phi:@begin->@26] -b26_from_bbegin: - jmp b26 -//SEG4 @26 -b26: +//SEG3 [1] phi from @begin to @29 [phi:@begin->@29] +b29_from_bbegin: + jmp b29 +//SEG4 @29 +b29: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @26 to main [phi:@26->main] -main_from_b26: +//SEG6 [4] phi from @29 to main [phi:@29->main] +main_from_b29: jsr main -//SEG7 [3] phi from @26 to @end [phi:@26->@end] -bend_from_b26: +//SEG7 [3] phi from @29 to @end [phi:@29->@end] +bend_from_b29: jmp bend //SEG8 @end bend: @@ -5840,7 +6136,7 @@ sin16s_gen: { //SEG132 [62] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] b1_from_b4: //SEG133 [62] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy - //SEG134 [62] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#1 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy + //SEG134 [62] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy //SEG135 [62] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy jmp b1 //SEG136 sin16s_gen::@1 @@ -5876,7 +6172,7 @@ sin16s_gen: { iny lda _1+1 sta (sintab),y - //SEG143 [68] (signed word*) sin16s_gen::sintab#1 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#1 ] ) -- pwsz1=pwsz1_plus_vbuc1 + //SEG143 [68] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) -- pwsz1=pwsz1_plus_vbuc1 clc lda sintab adc #<2 @@ -5884,7 +6180,7 @@ sin16s_gen: { lda sintab+1 adc #>2 sta sintab+1 - //SEG144 [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ) -- vduz1=vduz1_plus_vduz2 + //SEG144 [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -5898,12 +6194,12 @@ sin16s_gen: { lda x+3 adc step+3 sta x+3 - //SEG145 [70] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ) -- vwuz1=_inc_vwuz1 + //SEG145 [70] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG146 [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ) -- vwuz1_lt_vwuc1_then_la1 + //SEG146 [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b4 @@ -6049,100 +6345,100 @@ sin16s: { sta x1 lda _6+3 sta x1+1 - //SEG168 [81] (word) mul_u16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 ] ) -- vwuz1=vwuz2 + //SEG168 [81] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) -- vwuz1=vwuz2 lda x1 - sta mul_u16_sel.v1 + sta mulu16_sel.v1 lda x1+1 - sta mul_u16_sel.v1+1 - //SEG169 [82] (word) mul_u16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 mul_u16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 mul_u16_sel::v2#0 ] ) -- vwuz1=vwuz2 + sta mulu16_sel.v1+1 + //SEG169 [82] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) -- vwuz1=vwuz2 lda x1 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda x1+1 - sta mul_u16_sel.v2+1 - //SEG170 [83] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ) - //SEG171 [113] phi from sin16s::@2 to mul_u16_sel [phi:sin16s::@2->mul_u16_sel] - mul_u16_sel_from_b2: - //SEG172 [113] phi (byte) mul_u16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mul_u16_sel#0] -- vbuz1=vbuc1 + sta mulu16_sel.v2+1 + //SEG170 [83] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ) + //SEG171 [113] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + mulu16_sel_from_b2: + //SEG172 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 - sta mul_u16_sel.select - //SEG173 [113] phi (word) mul_u16_sel::v2#5 = (word) mul_u16_sel::v2#0 [phi:sin16s::@2->mul_u16_sel#1] -- register_copy - //SEG174 [113] phi (word) mul_u16_sel::v1#5 = (word) mul_u16_sel::v1#0 [phi:sin16s::@2->mul_u16_sel#2] -- register_copy - jsr mul_u16_sel - //SEG175 [84] (word) mul_u16_sel::return#0 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#0 ] ) -- vwuz1=vwuz2 - lda mul_u16_sel.return_12 - sta mul_u16_sel.return - lda mul_u16_sel.return_12+1 - sta mul_u16_sel.return+1 + sta mulu16_sel.select + //SEG173 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG174 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + jsr mulu16_sel + //SEG175 [84] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) -- vwuz1=vwuz2 + lda mulu16_sel.return_12 + sta mulu16_sel.return + lda mulu16_sel.return_12+1 + sta mulu16_sel.return+1 jmp b8 //SEG176 sin16s::@8 b8: - //SEG177 [85] (word) sin16s::x2#0 ← (word) mul_u16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) -- vwuz1=vwuz2 - lda mul_u16_sel.return + //SEG177 [85] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) -- vwuz1=vwuz2 + lda mulu16_sel.return sta x2 - lda mul_u16_sel.return+1 + lda mulu16_sel.return+1 sta x2+1 - //SEG178 [86] (word) mul_u16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 ] ) -- vwuz1=vwuz2 + //SEG178 [86] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) -- vwuz1=vwuz2 lda x2 - sta mul_u16_sel.v1 + sta mulu16_sel.v1 lda x2+1 - sta mul_u16_sel.v1+1 - //SEG179 [87] (word) mul_u16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 mul_u16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 mul_u16_sel::v2#1 ] ) -- vwuz1=vwuz2 + sta mulu16_sel.v1+1 + //SEG179 [87] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) -- vwuz1=vwuz2 lda x1 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda x1+1 - sta mul_u16_sel.v2+1 - //SEG180 [88] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ) - //SEG181 [113] phi from sin16s::@8 to mul_u16_sel [phi:sin16s::@8->mul_u16_sel] - mul_u16_sel_from_b8: - //SEG182 [113] phi (byte) mul_u16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mul_u16_sel#0] -- vbuz1=vbuc1 + sta mulu16_sel.v2+1 + //SEG180 [88] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ) + //SEG181 [113] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + mulu16_sel_from_b8: + //SEG182 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 - sta mul_u16_sel.select - //SEG183 [113] phi (word) mul_u16_sel::v2#5 = (word) mul_u16_sel::v2#1 [phi:sin16s::@8->mul_u16_sel#1] -- register_copy - //SEG184 [113] phi (word) mul_u16_sel::v1#5 = (word) mul_u16_sel::v1#1 [phi:sin16s::@8->mul_u16_sel#2] -- register_copy - jsr mul_u16_sel - //SEG185 [89] (word) mul_u16_sel::return#1 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#1 ] ) -- vwuz1=vwuz2 - lda mul_u16_sel.return_12 - sta mul_u16_sel.return_1 - lda mul_u16_sel.return_12+1 - sta mul_u16_sel.return_1+1 + sta mulu16_sel.select + //SEG183 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG184 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + jsr mulu16_sel + //SEG185 [89] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) -- vwuz1=vwuz2 + lda mulu16_sel.return_12 + sta mulu16_sel.return_1 + lda mulu16_sel.return_12+1 + sta mulu16_sel.return_1+1 jmp b9 //SEG186 sin16s::@9 b9: - //SEG187 [90] (word) sin16s::x3#0 ← (word) mul_u16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) -- vwuz1=vwuz2 - lda mul_u16_sel.return_1 + //SEG187 [90] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) -- vwuz1=vwuz2 + lda mulu16_sel.return_1 sta x3 - lda mul_u16_sel.return_1+1 + lda mulu16_sel.return_1+1 sta x3+1 - //SEG188 [91] (word) mul_u16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul_u16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#2 ] ) -- vwuz1=vwuz2 + //SEG188 [91] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) -- vwuz1=vwuz2 lda x3 - sta mul_u16_sel.v1 + sta mulu16_sel.v1 lda x3+1 - sta mul_u16_sel.v1+1 - //SEG189 [92] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::x3#0 ] ) - //SEG190 [113] phi from sin16s::@9 to mul_u16_sel [phi:sin16s::@9->mul_u16_sel] - mul_u16_sel_from_b9: - //SEG191 [113] phi (byte) mul_u16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mul_u16_sel#0] -- vbuz1=vbuc1 + sta mulu16_sel.v1+1 + //SEG189 [92] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::x3#0 ] ) + //SEG190 [113] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + mulu16_sel_from_b9: + //SEG191 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 - sta mul_u16_sel.select - //SEG192 [113] phi (word) mul_u16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mul_u16_sel#1] -- vwuz1=vwuc1 + sta mulu16_sel.select + //SEG192 [113] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda #>$10000/6 - sta mul_u16_sel.v2+1 - //SEG193 [113] phi (word) mul_u16_sel::v1#5 = (word) mul_u16_sel::v1#2 [phi:sin16s::@9->mul_u16_sel#2] -- register_copy - jsr mul_u16_sel - //SEG194 [93] (word) mul_u16_sel::return#2 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul_u16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::return#2 ] ) -- vwuz1=vwuz2 - lda mul_u16_sel.return_12 - sta mul_u16_sel.return_2 - lda mul_u16_sel.return_12+1 - sta mul_u16_sel.return_2+1 + sta mulu16_sel.v2+1 + //SEG193 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + jsr mulu16_sel + //SEG194 [93] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) -- vwuz1=vwuz2 + lda mulu16_sel.return_12 + sta mulu16_sel.return_2 + lda mulu16_sel.return_12+1 + sta mulu16_sel.return_2+1 jmp b10 //SEG195 sin16s::@10 b10: - //SEG196 [94] (word) sin16s::x3_6#0 ← (word) mul_u16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) -- vwuz1=vwuz2 - lda mul_u16_sel.return_2 + //SEG196 [94] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) -- vwuz1=vwuz2 + lda mulu16_sel.return_2 sta x3_6 - lda mul_u16_sel.return_2+1 + lda mulu16_sel.return_2+1 sta x3_6+1 //SEG197 [95] (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:64 [ 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 ] ) -- vwuz1=vwuz2_minus_vwuz3 lda x1 @@ -6152,69 +6448,69 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG198 [96] (word) mul_u16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#3 ] ) -- vwuz1=vwuz2 + //SEG198 [96] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) -- vwuz1=vwuz2 lda x3 - sta mul_u16_sel.v1 + sta mulu16_sel.v1 lda x3+1 - sta mul_u16_sel.v1+1 - //SEG199 [97] (word) mul_u16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#3 mul_u16_sel::v2#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#3 mul_u16_sel::v2#3 ] ) -- vwuz1=vwuz2 + sta mulu16_sel.v1+1 + //SEG199 [97] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) -- vwuz1=vwuz2 lda x1 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda x1+1 - sta mul_u16_sel.v2+1 - //SEG200 [98] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::usinx#0 ] ) - //SEG201 [113] phi from sin16s::@10 to mul_u16_sel [phi:sin16s::@10->mul_u16_sel] - mul_u16_sel_from_b10: - //SEG202 [113] phi (byte) mul_u16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mul_u16_sel#0] -- vbuz1=vbuc1 + sta mulu16_sel.v2+1 + //SEG200 [98] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::usinx#0 ] ) + //SEG201 [113] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + mulu16_sel_from_b10: + //SEG202 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 - sta mul_u16_sel.select - //SEG203 [113] phi (word) mul_u16_sel::v2#5 = (word) mul_u16_sel::v2#3 [phi:sin16s::@10->mul_u16_sel#1] -- register_copy - //SEG204 [113] phi (word) mul_u16_sel::v1#5 = (word) mul_u16_sel::v1#3 [phi:sin16s::@10->mul_u16_sel#2] -- register_copy - jsr mul_u16_sel - //SEG205 [99] (word) mul_u16_sel::return#10 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::return#10 ] ) -- vwuz1=vwuz2 - lda mul_u16_sel.return_12 - sta mul_u16_sel.return_10 - lda mul_u16_sel.return_12+1 - sta mul_u16_sel.return_10+1 + sta mulu16_sel.select + //SEG203 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG204 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + jsr mulu16_sel + //SEG205 [99] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) -- vwuz1=vwuz2 + lda mulu16_sel.return_12 + sta mulu16_sel.return_10 + lda mulu16_sel.return_12+1 + sta mulu16_sel.return_10+1 jmp b11 //SEG206 sin16s::@11 b11: - //SEG207 [100] (word) sin16s::x4#0 ← (word) mul_u16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) -- vwuz1=vwuz2 - lda mul_u16_sel.return_10 + //SEG207 [100] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) -- vwuz1=vwuz2 + lda mulu16_sel.return_10 sta x4 - lda mul_u16_sel.return_10+1 + lda mulu16_sel.return_10+1 sta x4+1 - //SEG208 [101] (word) mul_u16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#4 ] ) -- vwuz1=vwuz2 + //SEG208 [101] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) -- vwuz1=vwuz2 lda x4 - sta mul_u16_sel.v1 + sta mulu16_sel.v1 lda x4+1 - sta mul_u16_sel.v1+1 - //SEG209 [102] (word) mul_u16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#4 mul_u16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#4 mul_u16_sel::v2#4 ] ) -- vwuz1=vwuz2 + sta mulu16_sel.v1+1 + //SEG209 [102] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) -- vwuz1=vwuz2 lda x1 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda x1+1 - sta mul_u16_sel.v2+1 - //SEG210 [103] call mul_u16_sel param-assignment [ sin16s::isUpper#2 mul_u16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 mul_u16_sel::return#12 sin16s::usinx#0 ] ) - //SEG211 [113] phi from sin16s::@11 to mul_u16_sel [phi:sin16s::@11->mul_u16_sel] - mul_u16_sel_from_b11: - //SEG212 [113] phi (byte) mul_u16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mul_u16_sel#0] -- vbuz1=vbuc1 + sta mulu16_sel.v2+1 + //SEG210 [103] call mulu16_sel param-assignment [ sin16s::isUpper#2 mulu16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 mulu16_sel::return#12 sin16s::usinx#0 ] ) + //SEG211 [113] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + mulu16_sel_from_b11: + //SEG212 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 - sta mul_u16_sel.select - //SEG213 [113] phi (word) mul_u16_sel::v2#5 = (word) mul_u16_sel::v2#4 [phi:sin16s::@11->mul_u16_sel#1] -- register_copy - //SEG214 [113] phi (word) mul_u16_sel::v1#5 = (word) mul_u16_sel::v1#4 [phi:sin16s::@11->mul_u16_sel#2] -- register_copy - jsr mul_u16_sel - //SEG215 [104] (word) mul_u16_sel::return#11 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#11 ] ) -- vwuz1=vwuz2 - lda mul_u16_sel.return_12 - sta mul_u16_sel.return_11 - lda mul_u16_sel.return_12+1 - sta mul_u16_sel.return_11+1 + sta mulu16_sel.select + //SEG213 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG214 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + jsr mulu16_sel + //SEG215 [104] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) -- vwuz1=vwuz2 + lda mulu16_sel.return_12 + sta mulu16_sel.return_11 + lda mulu16_sel.return_12+1 + sta mulu16_sel.return_11+1 jmp b12 //SEG216 sin16s::@12 b12: - //SEG217 [105] (word) sin16s::x5#0 ← (word) mul_u16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) -- vwuz1=vwuz2 - lda mul_u16_sel.return_11 + //SEG217 [105] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) -- vwuz1=vwuz2 + lda mulu16_sel.return_11 sta x5 - lda mul_u16_sel.return_11+1 + lda mulu16_sel.return_11+1 sta x5+1 //SEG218 [106] (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:64 [ 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 ] ) -- vwuz1=vwuz2_ror_4 lda x5+1 @@ -6272,8 +6568,8 @@ sin16s: { sta return_5+1 jmp b3_from_b15 } -//SEG230 mul_u16_sel -mul_u16_sel: { +//SEG230 mulu16_sel +mulu16_sel: { .label _0 = $6b .label _1 = $6f .label v1 = $1d @@ -6285,19 +6581,19 @@ mul_u16_sel: { .label return_11 = $5d .label select = $21 .label return_12 = $73 - //SEG231 [114] (word) mul16u::a#1 ← (word) mul_u16_sel::v1#5 [ mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] ) -- vwuz1=vwuz2 + //SEG231 [114] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ) -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG232 [115] (word) mul16u::b#0 ← (word) mul_u16_sel::v2#5 [ mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) -- vwuz1=vwuz2 + //SEG232 [115] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) -- vwuz1=vwuz2 lda v2 sta mul16u.b lda v2+1 sta mul16u.b+1 - //SEG233 [116] call mul16u param-assignment [ mul_u16_sel::select#5 mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 ] ) + //SEG233 [116] call mul16u param-assignment [ mulu16_sel::select#5 mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] ) jsr mul16u - //SEG234 [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul_u16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::return#2 ] ) -- vduz1=vduz2 + //SEG234 [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] ) -- vduz1=vduz2 lda mul16u.res sta mul16u.return lda mul16u.res+1 @@ -6307,9 +6603,9 @@ mul_u16_sel: { lda mul16u.res+3 sta mul16u.return+3 jmp b2 - //SEG235 mul_u16_sel::@2 + //SEG235 mulu16_sel::@2 b2: - //SEG236 [118] (dword~) mul_u16_sel::$0 ← (dword) mul16u::return#2 [ mul_u16_sel::select#5 mul_u16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] ) -- vduz1=vduz2 + //SEG236 [118] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) -- vduz1=vduz2 lda mul16u.return sta _0 lda mul16u.return+1 @@ -6318,7 +6614,7 @@ mul_u16_sel: { sta _0+2 lda mul16u.return+3 sta _0+3 - //SEG237 [119] (dword~) mul_u16_sel::$1 ← (dword~) mul_u16_sel::$0 << (byte) mul_u16_sel::select#5 [ mul_u16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::$1 ] ) -- vduz1=vduz2_rol_vbuz3 + //SEG237 [119] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ 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:64::mulu16_sel:88 [ 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:64::mulu16_sel:92 [ 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:64::mulu16_sel:98 [ 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:64::mulu16_sel:103 [ 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 ] ) -- vduz1=vduz2_rol_vbuz3 lda _0 sta _1 lda _0+1 @@ -6337,15 +6633,15 @@ mul_u16_sel: { dex bne !- !e: - //SEG238 [120] (word) mul_u16_sel::return#12 ← > (dword~) mul_u16_sel::$1 [ mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#12 ] ) -- vwuz1=_hi_vduz2 + //SEG238 [120] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) -- vwuz1=_hi_vduz2 lda _1+2 sta return_12 lda _1+3 sta return_12+1 jmp breturn - //SEG239 mul_u16_sel::@return + //SEG239 mulu16_sel::@return breturn: - //SEG240 [121] return [ mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#12 ] ) + //SEG240 [121] return [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) rts } //SEG241 mul16u @@ -6356,7 +6652,7 @@ mul16u: { .label res = $24 .label b = $65 .label return = $67 - //SEG242 [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] ) -- vduz1=_dword_vwuz2 + //SEG242 [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] ) -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -6378,7 +6674,7 @@ mul16u: { jmp b1 //SEG247 mul16u::@1 b1: - //SEG248 [124] 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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) -- vwuz1_neq_0_then_la1 + //SEG248 [124] 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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 @@ -6386,21 +6682,21 @@ mul16u: { jmp breturn //SEG249 mul16u::@return breturn: - //SEG250 [125] return [ mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 ] ) + //SEG250 [125] return [ mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] ) rts //SEG251 mul16u::@2 b2: - //SEG252 [126] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) -- vbuz1=vwuz2_band_vbuc1 + //SEG252 [126] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) -- vbuz1=vwuz2_band_vbuc1 lda a and #1 sta _1 - //SEG253 [127] 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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) -- vbuz1_eq_0_then_la1 + //SEG253 [127] 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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) -- vbuz1_eq_0_then_la1 lda _1 beq b4_from_b2 jmp b7 //SEG254 mul16u::@7 b7: - //SEG255 [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) -- vduz1=vduz1_plus_vduz2 + //SEG255 [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -6421,11 +6717,11 @@ mul16u: { jmp b4 //SEG258 mul16u::@4 b4: - //SEG259 [130] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ) -- vwuz1=vwuz1_ror_1 + //SEG259 [130] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ) -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG260 [131] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ) -- vduz1=vduz1_rol_1 + //SEG260 [131] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ) -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 @@ -6667,9 +6963,9 @@ Statement [63] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::ste Statement [65] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ) always clobbers reg byte a Statement [66] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ) always clobbers reg byte a Statement [67] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) always clobbers reg byte a reg byte y -Statement [68] (signed word*) sin16s_gen::sintab#1 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#1 ] ) always clobbers reg byte a -Statement [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ) always clobbers reg byte a -Statement [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ) always clobbers reg byte a +Statement [68] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a +Statement [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) always clobbers reg byte a +Statement [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) always clobbers reg byte a Statement [73] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a Statement [74] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#1 ] ) always clobbers reg byte a Statement [76] 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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a @@ -6678,42 +6974,42 @@ Statement [77] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s Statement [79] (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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::$6 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:22 [ sin16s::isUpper#2 ] Statement [80] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [81] (word) mul_u16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 ] ) always clobbers reg byte a -Statement [82] (word) mul_u16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 mul_u16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 mul_u16_sel::v2#0 ] ) always clobbers reg byte a -Statement [84] (word) mul_u16_sel::return#0 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#0 ] ) always clobbers reg byte a -Statement [85] (word) sin16s::x2#0 ← (word) mul_u16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [86] (word) mul_u16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 ] ) always clobbers reg byte a -Statement [87] (word) mul_u16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 mul_u16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 mul_u16_sel::v2#1 ] ) always clobbers reg byte a -Statement [89] (word) mul_u16_sel::return#1 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#1 ] ) always clobbers reg byte a -Statement [90] (word) sin16s::x3#0 ← (word) mul_u16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [91] (word) mul_u16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul_u16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#2 ] ) always clobbers reg byte a -Statement [93] (word) mul_u16_sel::return#2 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul_u16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::return#2 ] ) always clobbers reg byte a -Statement [94] (word) sin16s::x3_6#0 ← (word) mul_u16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a +Statement [81] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a +Statement [82] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a +Statement [84] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a +Statement [85] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a +Statement [86] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a +Statement [87] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a +Statement [89] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a +Statement [90] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a +Statement [91] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a +Statement [93] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a +Statement [94] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a Statement [95] (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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [96] (word) mul_u16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#3 ] ) always clobbers reg byte a -Statement [97] (word) mul_u16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#3 mul_u16_sel::v2#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#3 mul_u16_sel::v2#3 ] ) always clobbers reg byte a -Statement [99] (word) mul_u16_sel::return#10 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::return#10 ] ) always clobbers reg byte a -Statement [100] (word) sin16s::x4#0 ← (word) mul_u16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [101] (word) mul_u16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#4 ] ) always clobbers reg byte a -Statement [102] (word) mul_u16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#4 mul_u16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#4 mul_u16_sel::v2#4 ] ) always clobbers reg byte a -Statement [104] (word) mul_u16_sel::return#11 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#11 ] ) always clobbers reg byte a -Statement [105] (word) sin16s::x5#0 ← (word) mul_u16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a +Statement [96] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a +Statement [97] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a +Statement [99] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a +Statement [100] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a +Statement [101] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a +Statement [102] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a +Statement [104] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a +Statement [105] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a Statement [106] (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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a reg byte y Statement [107] (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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a Statement [109] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a Statement [112] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [114] (word) mul16u::a#1 ← (word) mul_u16_sel::v1#5 [ mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ mul_u16_sel::select#5 ] -Statement [115] (word) mul16u::b#0 ← (word) mul_u16_sel::v2#5 [ mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul_u16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::return#2 ] ) always clobbers reg byte a -Statement [118] (dword~) mul_u16_sel::$0 ← (dword) mul16u::return#2 [ mul_u16_sel::select#5 mul_u16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] ) always clobbers reg byte a -Statement [119] (dword~) mul_u16_sel::$1 ← (dword~) mul_u16_sel::$0 << (byte) mul_u16_sel::select#5 [ mul_u16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::$1 ] ) always clobbers reg byte a reg byte x +Statement [114] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ mulu16_sel::select#5 ] +Statement [115] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a +Statement [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] ) always clobbers reg byte a +Statement [118] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a +Statement [119] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ 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:64::mulu16_sel:88 [ 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:64::mulu16_sel:92 [ 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:64::mulu16_sel:98 [ 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:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp ZP_BYTE:22 [ sin16s::isUpper#2 ] -Statement [120] (word) mul_u16_sel::return#12 ← > (dword~) mul_u16_sel::$1 [ mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#12 ] ) always clobbers reg byte a -Statement [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [124] 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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [126] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [120] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a +Statement [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] ) always clobbers reg byte a +Statement [124] 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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [126] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a Statement [134] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:59 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a Statement [135] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:59 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a Statement [136] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_gen:5::div32u16u:59 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a @@ -6748,50 +7044,50 @@ Statement [63] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::ste Statement [65] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ) always clobbers reg byte a Statement [66] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ) always clobbers reg byte a Statement [67] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) always clobbers reg byte a reg byte y -Statement [68] (signed word*) sin16s_gen::sintab#1 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#1 ] ) always clobbers reg byte a -Statement [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ) always clobbers reg byte a -Statement [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ) always clobbers reg byte a +Statement [68] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a +Statement [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) always clobbers reg byte a +Statement [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) always clobbers reg byte a Statement [73] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a Statement [74] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#1 ] ) always clobbers reg byte a Statement [76] 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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a Statement [77] (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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a Statement [79] (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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::$6 ] ) always clobbers reg byte a reg byte y Statement [80] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [81] (word) mul_u16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 ] ) always clobbers reg byte a -Statement [82] (word) mul_u16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 mul_u16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 mul_u16_sel::v2#0 ] ) always clobbers reg byte a -Statement [84] (word) mul_u16_sel::return#0 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#0 ] ) always clobbers reg byte a -Statement [85] (word) sin16s::x2#0 ← (word) mul_u16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [86] (word) mul_u16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 ] ) always clobbers reg byte a -Statement [87] (word) mul_u16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 mul_u16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 mul_u16_sel::v2#1 ] ) always clobbers reg byte a -Statement [89] (word) mul_u16_sel::return#1 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#1 ] ) always clobbers reg byte a -Statement [90] (word) sin16s::x3#0 ← (word) mul_u16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [91] (word) mul_u16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul_u16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#2 ] ) always clobbers reg byte a -Statement [93] (word) mul_u16_sel::return#2 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul_u16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::return#2 ] ) always clobbers reg byte a -Statement [94] (word) sin16s::x3_6#0 ← (word) mul_u16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a +Statement [81] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a +Statement [82] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a +Statement [84] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a +Statement [85] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a +Statement [86] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a +Statement [87] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a +Statement [89] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a +Statement [90] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a +Statement [91] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a +Statement [93] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a +Statement [94] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a Statement [95] (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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [96] (word) mul_u16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#3 ] ) always clobbers reg byte a -Statement [97] (word) mul_u16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#3 mul_u16_sel::v2#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#3 mul_u16_sel::v2#3 ] ) always clobbers reg byte a -Statement [99] (word) mul_u16_sel::return#10 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::return#10 ] ) always clobbers reg byte a -Statement [100] (word) sin16s::x4#0 ← (word) mul_u16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [101] (word) mul_u16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#4 ] ) always clobbers reg byte a -Statement [102] (word) mul_u16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#4 mul_u16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#4 mul_u16_sel::v2#4 ] ) always clobbers reg byte a -Statement [104] (word) mul_u16_sel::return#11 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#11 ] ) always clobbers reg byte a -Statement [105] (word) sin16s::x5#0 ← (word) mul_u16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a +Statement [96] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a +Statement [97] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a +Statement [99] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a +Statement [100] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a +Statement [101] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a +Statement [102] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a +Statement [104] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a +Statement [105] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a Statement [106] (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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a reg byte y Statement [107] (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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a Statement [108] 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:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::usinx#1 ] ) always clobbers reg byte a Statement [109] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a Statement [112] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [114] (word) mul16u::a#1 ← (word) mul_u16_sel::v1#5 [ mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] ) always clobbers reg byte a -Statement [115] (word) mul16u::b#0 ← (word) mul_u16_sel::v2#5 [ mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a -Statement [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul_u16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::return#2 ] ) always clobbers reg byte a -Statement [118] (dword~) mul_u16_sel::$0 ← (dword) mul16u::return#2 [ mul_u16_sel::select#5 mul_u16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] ) always clobbers reg byte a -Statement [119] (dword~) mul_u16_sel::$1 ← (dword~) mul_u16_sel::$0 << (byte) mul_u16_sel::select#5 [ mul_u16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::$1 ] ) always clobbers reg byte a reg byte x -Statement [120] (word) mul_u16_sel::return#12 ← > (dword~) mul_u16_sel::$1 [ mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#12 ] ) always clobbers reg byte a -Statement [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [124] 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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [126] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [114] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ) always clobbers reg byte a +Statement [115] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) always clobbers reg byte a +Statement [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] ) always clobbers reg byte a +Statement [118] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a +Statement [119] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ 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:64::mulu16_sel:88 [ 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:64::mulu16_sel:92 [ 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:64::mulu16_sel:98 [ 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:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a reg byte x +Statement [120] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a +Statement [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] ) always clobbers reg byte a +Statement [124] 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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [126] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a Statement [134] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:59 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a Statement [135] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:59 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a Statement [136] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_gen:5::div32u16u:59 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a @@ -6812,14 +7108,14 @@ Potential registers zp ZP_BYTE:9 [ print_char::ch#3 print_char::ch#1 print_char: Potential registers zp ZP_WORD:10 [ 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 ] : zp ZP_WORD:10 , Potential registers zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:12 , Potential registers zp ZP_DWORD:14 [ sin16s_gen::x#2 sin16s_gen::x#1 ] : zp ZP_DWORD:14 , -Potential registers zp ZP_WORD:18 [ sin16s_gen::sintab#2 sin16s_gen::sintab#1 ] : zp ZP_WORD:18 , +Potential registers zp ZP_WORD:18 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] : zp ZP_WORD:18 , Potential registers zp ZP_WORD:20 [ sin16s_gen::i#2 sin16s_gen::i#1 ] : zp ZP_WORD:20 , Potential registers zp ZP_BYTE:22 [ sin16s::isUpper#2 ] : zp ZP_BYTE:22 , Potential registers zp ZP_DWORD:23 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] : zp ZP_DWORD:23 , Potential registers zp ZP_WORD:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] : zp ZP_WORD:27 , -Potential registers zp ZP_WORD:29 [ mul_u16_sel::v1#5 mul_u16_sel::v1#3 mul_u16_sel::v1#4 mul_u16_sel::v1#0 mul_u16_sel::v1#1 mul_u16_sel::v1#2 ] : zp ZP_WORD:29 , -Potential registers zp ZP_WORD:31 [ mul_u16_sel::v2#5 mul_u16_sel::v2#3 mul_u16_sel::v2#4 mul_u16_sel::v2#0 mul_u16_sel::v2#1 ] : zp ZP_WORD:31 , -Potential registers zp ZP_BYTE:33 [ mul_u16_sel::select#5 ] : zp ZP_BYTE:33 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] : zp ZP_WORD:29 , +Potential registers zp ZP_WORD:31 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] : zp ZP_WORD:31 , +Potential registers zp ZP_BYTE:33 [ mulu16_sel::select#5 ] : zp ZP_BYTE:33 , reg byte x , reg byte y , Potential registers zp ZP_WORD:34 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] : zp ZP_WORD:34 , Potential registers zp ZP_DWORD:36 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] : zp ZP_DWORD:36 , Potential registers zp ZP_DWORD:40 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] : zp ZP_DWORD:40 , @@ -6837,24 +7133,24 @@ Potential registers zp ZP_WORD:65 [ sin16s::return#0 ] : zp ZP_WORD:65 , Potential registers zp ZP_WORD:67 [ sin16s_gen::$1 ] : zp ZP_WORD:67 , Potential registers zp ZP_DWORD:69 [ sin16s::$6 ] : zp ZP_DWORD:69 , Potential registers zp ZP_WORD:73 [ sin16s::x1#0 ] : zp ZP_WORD:73 , -Potential registers zp ZP_WORD:75 [ mul_u16_sel::return#0 ] : zp ZP_WORD:75 , +Potential registers zp ZP_WORD:75 [ mulu16_sel::return#0 ] : zp ZP_WORD:75 , Potential registers zp ZP_WORD:77 [ sin16s::x2#0 ] : zp ZP_WORD:77 , -Potential registers zp ZP_WORD:79 [ mul_u16_sel::return#1 ] : zp ZP_WORD:79 , +Potential registers zp ZP_WORD:79 [ mulu16_sel::return#1 ] : zp ZP_WORD:79 , Potential registers zp ZP_WORD:81 [ sin16s::x3#0 ] : zp ZP_WORD:81 , -Potential registers zp ZP_WORD:83 [ mul_u16_sel::return#2 ] : zp ZP_WORD:83 , +Potential registers zp ZP_WORD:83 [ mulu16_sel::return#2 ] : zp ZP_WORD:83 , Potential registers zp ZP_WORD:85 [ sin16s::x3_6#0 ] : zp ZP_WORD:85 , Potential registers zp ZP_WORD:87 [ sin16s::usinx#0 ] : zp ZP_WORD:87 , -Potential registers zp ZP_WORD:89 [ mul_u16_sel::return#10 ] : zp ZP_WORD:89 , +Potential registers zp ZP_WORD:89 [ mulu16_sel::return#10 ] : zp ZP_WORD:89 , Potential registers zp ZP_WORD:91 [ sin16s::x4#0 ] : zp ZP_WORD:91 , -Potential registers zp ZP_WORD:93 [ mul_u16_sel::return#11 ] : zp ZP_WORD:93 , +Potential registers zp ZP_WORD:93 [ mulu16_sel::return#11 ] : zp ZP_WORD:93 , Potential registers zp ZP_WORD:95 [ sin16s::x5#0 ] : zp ZP_WORD:95 , Potential registers zp ZP_WORD:97 [ sin16s::x5_128#0 ] : zp ZP_WORD:97 , Potential registers zp ZP_WORD:99 [ sin16s::usinx#1 ] : zp ZP_WORD:99 , Potential registers zp ZP_WORD:101 [ mul16u::b#0 ] : zp ZP_WORD:101 , Potential registers zp ZP_DWORD:103 [ mul16u::return#2 ] : zp ZP_DWORD:103 , -Potential registers zp ZP_DWORD:107 [ mul_u16_sel::$0 ] : zp ZP_DWORD:107 , -Potential registers zp ZP_DWORD:111 [ mul_u16_sel::$1 ] : zp ZP_DWORD:111 , -Potential registers zp ZP_WORD:115 [ mul_u16_sel::return#12 ] : zp ZP_WORD:115 , +Potential registers zp ZP_DWORD:107 [ mulu16_sel::$0 ] : zp ZP_DWORD:107 , +Potential registers zp ZP_DWORD:111 [ mulu16_sel::$1 ] : zp ZP_DWORD:111 , +Potential registers zp ZP_WORD:115 [ mulu16_sel::return#12 ] : zp ZP_WORD:115 , Potential registers zp ZP_BYTE:117 [ mul16u::$1 ] : zp ZP_BYTE:117 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:118 [ divr16u::return#2 ] : zp ZP_WORD:118 , Potential registers zp ZP_WORD:120 [ div32u16u::quotient_hi#0 ] : zp ZP_WORD:120 , @@ -6871,8 +7167,8 @@ Uplift Scope [print_str] 305.5: zp ZP_WORD:4 [ print_str::str#3 print_str::str#5 Uplift Scope [divr16u] 106.92: zp ZP_WORD:46 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 35.54: zp ZP_WORD:50 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:130 [ divr16u::$1 ] 22: zp ZP_BYTE:131 [ divr16u::$2 ] 18.19: zp ZP_BYTE:52 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp ZP_WORD:48 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 4: zp ZP_WORD:118 [ divr16u::return#2 ] 4: zp ZP_WORD:122 [ divr16u::return#3 ] 1.38: zp ZP_WORD:44 [ divr16u::divisor#6 ] Uplift Scope [] 191.74: zp ZP_WORD:10 [ 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 ] 0.8: zp ZP_WORD:132 [ rem16u#1 ] Uplift Scope [sin16s] 27.5: zp ZP_DWORD:23 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 22: zp ZP_WORD:65 [ sin16s::return#0 ] 13: zp ZP_WORD:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 4: zp ZP_DWORD:69 [ sin16s::$6 ] 4: zp ZP_WORD:77 [ sin16s::x2#0 ] 4: zp ZP_WORD:85 [ sin16s::x3_6#0 ] 4: zp ZP_WORD:91 [ sin16s::x4#0 ] 4: zp ZP_WORD:95 [ sin16s::x5#0 ] 4: zp ZP_WORD:97 [ sin16s::x5_128#0 ] 1: zp ZP_WORD:81 [ sin16s::x3#0 ] 1: zp ZP_WORD:99 [ sin16s::usinx#1 ] 0.64: zp ZP_WORD:73 [ sin16s::x1#0 ] 0.33: zp ZP_WORD:87 [ sin16s::usinx#0 ] 0.06: zp ZP_BYTE:22 [ sin16s::isUpper#2 ] -Uplift Scope [mul_u16_sel] 24: zp ZP_WORD:29 [ mul_u16_sel::v1#5 mul_u16_sel::v1#3 mul_u16_sel::v1#4 mul_u16_sel::v1#0 mul_u16_sel::v1#1 mul_u16_sel::v1#2 ] 21: zp ZP_WORD:31 [ mul_u16_sel::v2#5 mul_u16_sel::v2#3 mul_u16_sel::v2#4 mul_u16_sel::v2#0 mul_u16_sel::v2#1 ] 4: zp ZP_WORD:75 [ mul_u16_sel::return#0 ] 4: zp ZP_WORD:79 [ mul_u16_sel::return#1 ] 4: zp ZP_WORD:83 [ mul_u16_sel::return#2 ] 4: zp ZP_WORD:89 [ mul_u16_sel::return#10 ] 4: zp ZP_WORD:93 [ mul_u16_sel::return#11 ] 4: zp ZP_DWORD:107 [ mul_u16_sel::$0 ] 4: zp ZP_DWORD:111 [ mul_u16_sel::$1 ] 1.71: zp ZP_WORD:115 [ mul_u16_sel::return#12 ] 0.33: zp ZP_BYTE:33 [ mul_u16_sel::select#5 ] -Uplift Scope [sin16s_gen] 22: zp ZP_WORD:67 [ sin16s_gen::$1 ] 19.25: zp ZP_WORD:20 [ sin16s_gen::i#2 sin16s_gen::i#1 ] 12.05: zp ZP_DWORD:14 [ sin16s_gen::x#2 sin16s_gen::x#1 ] 11: zp ZP_WORD:18 [ sin16s_gen::sintab#2 sin16s_gen::sintab#1 ] 1.18: zp ZP_DWORD:61 [ sin16s_gen::step#0 ] +Uplift Scope [mulu16_sel] 24: zp ZP_WORD:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] 21: zp ZP_WORD:31 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 4: zp ZP_WORD:75 [ mulu16_sel::return#0 ] 4: zp ZP_WORD:79 [ mulu16_sel::return#1 ] 4: zp ZP_WORD:83 [ mulu16_sel::return#2 ] 4: zp ZP_WORD:89 [ mulu16_sel::return#10 ] 4: zp ZP_WORD:93 [ mulu16_sel::return#11 ] 4: zp ZP_DWORD:107 [ mulu16_sel::$0 ] 4: zp ZP_DWORD:111 [ mulu16_sel::$1 ] 1.71: zp ZP_WORD:115 [ mulu16_sel::return#12 ] 0.33: zp ZP_BYTE:33 [ mulu16_sel::select#5 ] +Uplift Scope [sin16s_gen] 22: zp ZP_WORD:67 [ sin16s_gen::$1 ] 19.25: zp ZP_WORD:20 [ sin16s_gen::i#2 sin16s_gen::i#1 ] 12.05: zp ZP_DWORD:14 [ sin16s_gen::x#2 sin16s_gen::x#1 ] 11: zp ZP_WORD:18 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] 1.18: zp ZP_DWORD:61 [ sin16s_gen::step#0 ] Uplift Scope [print_cls] 33: zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] Uplift Scope [main] 19.8: zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] 6.6: zp ZP_WORD:53 [ main::sw#0 ] Uplift Scope [print_byte] 10: zp ZP_BYTE:8 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:55 [ print_byte::$0 ] 4: zp ZP_BYTE:56 [ print_byte::$2 ] @@ -6886,8 +7182,8 @@ Uplifting [print_str] best 25117 combination zp ZP_WORD:4 [ print_str::str#3 pri Uplifting [divr16u] best 24927 combination zp ZP_WORD:46 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:50 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:48 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:118 [ divr16u::return#2 ] zp ZP_WORD:122 [ divr16u::return#3 ] zp ZP_WORD:44 [ divr16u::divisor#6 ] Uplifting [] best 24927 combination zp ZP_WORD:10 [ 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 ] zp ZP_WORD:132 [ rem16u#1 ] Uplifting [sin16s] best 24927 combination zp ZP_DWORD:23 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:65 [ sin16s::return#0 ] zp ZP_WORD:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:69 [ sin16s::$6 ] zp ZP_WORD:77 [ sin16s::x2#0 ] zp ZP_WORD:85 [ sin16s::x3_6#0 ] zp ZP_WORD:91 [ sin16s::x4#0 ] zp ZP_WORD:95 [ sin16s::x5#0 ] zp ZP_WORD:97 [ sin16s::x5_128#0 ] zp ZP_WORD:81 [ sin16s::x3#0 ] zp ZP_WORD:99 [ sin16s::usinx#1 ] zp ZP_WORD:73 [ sin16s::x1#0 ] zp ZP_WORD:87 [ sin16s::usinx#0 ] zp ZP_BYTE:22 [ sin16s::isUpper#2 ] -Uplifting [mul_u16_sel] best 24911 combination zp ZP_WORD:29 [ mul_u16_sel::v1#5 mul_u16_sel::v1#3 mul_u16_sel::v1#4 mul_u16_sel::v1#0 mul_u16_sel::v1#1 mul_u16_sel::v1#2 ] zp ZP_WORD:31 [ mul_u16_sel::v2#5 mul_u16_sel::v2#3 mul_u16_sel::v2#4 mul_u16_sel::v2#0 mul_u16_sel::v2#1 ] zp ZP_WORD:75 [ mul_u16_sel::return#0 ] zp ZP_WORD:79 [ mul_u16_sel::return#1 ] zp ZP_WORD:83 [ mul_u16_sel::return#2 ] zp ZP_WORD:89 [ mul_u16_sel::return#10 ] zp ZP_WORD:93 [ mul_u16_sel::return#11 ] zp ZP_DWORD:107 [ mul_u16_sel::$0 ] zp ZP_DWORD:111 [ mul_u16_sel::$1 ] zp ZP_WORD:115 [ mul_u16_sel::return#12 ] reg byte x [ mul_u16_sel::select#5 ] -Uplifting [sin16s_gen] best 24911 combination zp ZP_WORD:67 [ sin16s_gen::$1 ] zp ZP_WORD:20 [ sin16s_gen::i#2 sin16s_gen::i#1 ] zp ZP_DWORD:14 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_WORD:18 [ sin16s_gen::sintab#2 sin16s_gen::sintab#1 ] zp ZP_DWORD:61 [ sin16s_gen::step#0 ] +Uplifting [mulu16_sel] best 24911 combination zp ZP_WORD:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:31 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:75 [ mulu16_sel::return#0 ] zp ZP_WORD:79 [ mulu16_sel::return#1 ] zp ZP_WORD:83 [ mulu16_sel::return#2 ] zp ZP_WORD:89 [ mulu16_sel::return#10 ] zp ZP_WORD:93 [ mulu16_sel::return#11 ] zp ZP_DWORD:107 [ mulu16_sel::$0 ] zp ZP_DWORD:111 [ mulu16_sel::$1 ] zp ZP_WORD:115 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [sin16s_gen] best 24911 combination zp ZP_WORD:67 [ sin16s_gen::$1 ] zp ZP_WORD:20 [ sin16s_gen::i#2 sin16s_gen::i#1 ] zp ZP_DWORD:14 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_WORD:18 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] zp ZP_DWORD:61 [ sin16s_gen::step#0 ] Uplifting [print_cls] best 24911 combination zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] Uplifting [main] best 24911 combination zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] zp ZP_WORD:53 [ main::sw#0 ] Uplifting [print_byte] best 24899 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] @@ -6898,49 +7194,49 @@ Uplifting [print_word] best 24887 combination Attempting to uplift remaining variables inzp ZP_BYTE:22 [ sin16s::isUpper#2 ] Uplifting [sin16s] best 24887 combination zp ZP_BYTE:22 [ sin16s::isUpper#2 ] Coalescing zero page register with common assignment [ zp ZP_WORD:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:99 [ sin16s::usinx#1 ] ] - score: 2 -Coalescing zero page register with common assignment [ zp ZP_WORD:29 [ mul_u16_sel::v1#5 mul_u16_sel::v1#3 mul_u16_sel::v1#4 mul_u16_sel::v1#0 mul_u16_sel::v1#1 mul_u16_sel::v1#2 ] ] with [ zp ZP_WORD:81 [ sin16s::x3#0 ] ] - score: 2 +Coalescing zero page register with common assignment [ zp ZP_WORD:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] ] with [ zp ZP_WORD:81 [ sin16s::x3#0 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:46 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:132 [ rem16u#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] ] with [ zp ZP_WORD:53 [ main::sw#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:23 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] ] with [ zp ZP_DWORD:69 [ sin16s::$6 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 ] ] with [ zp ZP_WORD:65 [ sin16s::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:29 [ mul_u16_sel::v1#5 mul_u16_sel::v1#3 mul_u16_sel::v1#4 mul_u16_sel::v1#0 mul_u16_sel::v1#1 mul_u16_sel::v1#2 sin16s::x3#0 ] ] with [ zp ZP_WORD:77 [ sin16s::x2#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:29 [ mul_u16_sel::v1#5 mul_u16_sel::v1#3 mul_u16_sel::v1#4 mul_u16_sel::v1#0 mul_u16_sel::v1#1 mul_u16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 ] ] with [ zp ZP_WORD:91 [ sin16s::x4#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:31 [ mul_u16_sel::v2#5 mul_u16_sel::v2#3 mul_u16_sel::v2#4 mul_u16_sel::v2#0 mul_u16_sel::v2#1 ] ] with [ zp ZP_WORD:101 [ mul16u::b#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 ] ] with [ zp ZP_WORD:77 [ sin16s::x2#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 ] ] with [ zp ZP_WORD:91 [ sin16s::x4#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:31 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] ] with [ zp ZP_WORD:101 [ mul16u::b#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:36 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] ] with [ zp ZP_DWORD:103 [ mul16u::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:50 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:118 [ divr16u::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:50 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:122 [ divr16u::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:57 [ div32u16u::return#2 ] ] with [ zp ZP_DWORD:61 [ sin16s_gen::step#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:57 [ div32u16u::return#2 sin16s_gen::step#0 ] ] with [ zp ZP_DWORD:126 [ div32u16u::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:75 [ mul_u16_sel::return#0 ] ] with [ zp ZP_WORD:115 [ mul_u16_sel::return#12 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:83 [ mul_u16_sel::return#2 ] ] with [ zp ZP_WORD:85 [ sin16s::x3_6#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:93 [ mul_u16_sel::return#11 ] ] with [ zp ZP_WORD:95 [ sin16s::x5#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:107 [ mul_u16_sel::$0 ] ] with [ zp ZP_DWORD:111 [ mul_u16_sel::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:75 [ mulu16_sel::return#0 ] ] with [ zp ZP_WORD:115 [ mulu16_sel::return#12 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:83 [ mulu16_sel::return#2 ] ] with [ zp ZP_WORD:85 [ sin16s::x3_6#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:93 [ mulu16_sel::return#11 ] ] with [ zp ZP_WORD:95 [ sin16s::x5#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:107 [ mulu16_sel::$0 ] ] with [ zp ZP_DWORD:111 [ mulu16_sel::$1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 ] ] with [ zp ZP_WORD:67 [ sin16s_gen::$1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$1 ] ] with [ zp ZP_WORD:87 [ sin16s::usinx#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:29 [ mul_u16_sel::v1#5 mul_u16_sel::v1#3 mul_u16_sel::v1#4 mul_u16_sel::v1#0 mul_u16_sel::v1#1 mul_u16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 ] ] with [ zp ZP_WORD:79 [ mul_u16_sel::return#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:29 [ mul_u16_sel::v1#5 mul_u16_sel::v1#3 mul_u16_sel::v1#4 mul_u16_sel::v1#0 mul_u16_sel::v1#1 mul_u16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mul_u16_sel::return#1 ] ] with [ zp ZP_WORD:89 [ mul_u16_sel::return#10 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:36 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 ] ] with [ zp ZP_DWORD:107 [ mul_u16_sel::$0 mul_u16_sel::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 ] ] with [ zp ZP_WORD:79 [ mulu16_sel::return#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 ] ] with [ zp ZP_WORD:89 [ mulu16_sel::return#10 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:36 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 ] ] with [ zp ZP_DWORD:107 [ mulu16_sel::$0 mulu16_sel::$1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:50 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 ] ] with [ zp ZP_WORD:124 [ div32u16u::quotient_lo#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:75 [ mul_u16_sel::return#0 mul_u16_sel::return#12 ] ] with [ zp ZP_WORD:83 [ mul_u16_sel::return#2 sin16s::x3_6#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:75 [ mul_u16_sel::return#0 mul_u16_sel::return#12 mul_u16_sel::return#2 sin16s::x3_6#0 ] ] with [ zp ZP_WORD:93 [ mul_u16_sel::return#11 sin16s::x5#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:75 [ mul_u16_sel::return#0 mul_u16_sel::return#12 mul_u16_sel::return#2 sin16s::x3_6#0 mul_u16_sel::return#11 sin16s::x5#0 ] ] with [ zp ZP_WORD:97 [ sin16s::x5_128#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:75 [ mulu16_sel::return#0 mulu16_sel::return#12 ] ] with [ zp ZP_WORD:83 [ mulu16_sel::return#2 sin16s::x3_6#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:75 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 ] ] with [ zp ZP_WORD:93 [ mulu16_sel::return#11 sin16s::x5#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:75 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 ] ] with [ zp ZP_WORD:97 [ sin16s::x5_128#0 ] ] - score: 1 Coalescing zero page register [ zp ZP_WORD:2 [ main::st1#2 main::st1#1 ] ] with [ zp ZP_WORD:12 [ print_cls::sc#2 print_cls::sc#1 ] ] -Coalescing zero page register [ zp ZP_WORD:2 [ main::st1#2 main::st1#1 print_cls::sc#2 print_cls::sc#1 ] ] with [ zp ZP_WORD:18 [ sin16s_gen::sintab#2 sin16s_gen::sintab#1 ] ] -Coalescing zero page register [ zp ZP_WORD:2 [ main::st1#2 main::st1#1 print_cls::sc#2 print_cls::sc#1 sin16s_gen::sintab#2 sin16s_gen::sintab#1 ] ] with [ zp ZP_WORD:44 [ divr16u::divisor#6 ] ] +Coalescing zero page register [ zp ZP_WORD:2 [ main::st1#2 main::st1#1 print_cls::sc#2 print_cls::sc#1 ] ] with [ zp ZP_WORD:18 [ sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] ] +Coalescing zero page register [ zp ZP_WORD:2 [ main::st1#2 main::st1#1 print_cls::sc#2 print_cls::sc#1 sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] ] with [ zp ZP_WORD:44 [ divr16u::divisor#6 ] ] Coalescing zero page register [ zp ZP_WORD:4 [ print_str::str#3 print_str::str#5 print_str::str#0 ] ] with [ zp ZP_WORD:20 [ sin16s_gen::i#2 sin16s_gen::i#1 ] ] Coalescing zero page register [ zp ZP_WORD:4 [ print_str::str#3 print_str::str#5 print_str::str#0 sin16s_gen::i#2 sin16s_gen::i#1 ] ] with [ zp ZP_WORD:46 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 ] ] with [ zp ZP_WORD:27 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$1 sin16s::usinx#0 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$1 sin16s::usinx#0 ] ] with [ zp ZP_WORD:48 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] ] -Coalescing zero page register [ zp ZP_WORD:10 [ 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 ] ] with [ zp ZP_WORD:29 [ mul_u16_sel::v1#5 mul_u16_sel::v1#3 mul_u16_sel::v1#4 mul_u16_sel::v1#0 mul_u16_sel::v1#1 mul_u16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mul_u16_sel::return#1 mul_u16_sel::return#10 ] ] -Coalescing zero page register [ zp ZP_WORD:10 [ 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 mul_u16_sel::v1#5 mul_u16_sel::v1#3 mul_u16_sel::v1#4 mul_u16_sel::v1#0 mul_u16_sel::v1#1 mul_u16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mul_u16_sel::return#1 mul_u16_sel::return#10 ] ] with [ zp ZP_WORD:50 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] ] -Coalescing zero page register [ zp ZP_DWORD:23 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 ] ] with [ zp ZP_DWORD:36 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mul_u16_sel::$0 mul_u16_sel::$1 ] ] -Coalescing zero page register [ zp ZP_WORD:31 [ mul_u16_sel::v2#5 mul_u16_sel::v2#3 mul_u16_sel::v2#4 mul_u16_sel::v2#0 mul_u16_sel::v2#1 mul16u::b#0 ] ] with [ zp ZP_WORD:75 [ mul_u16_sel::return#0 mul_u16_sel::return#12 mul_u16_sel::return#2 sin16s::x3_6#0 mul_u16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] ] -Coalescing zero page register [ zp ZP_WORD:31 [ mul_u16_sel::v2#5 mul_u16_sel::v2#3 mul_u16_sel::v2#4 mul_u16_sel::v2#0 mul_u16_sel::v2#1 mul16u::b#0 mul_u16_sel::return#0 mul_u16_sel::return#12 mul_u16_sel::return#2 sin16s::x3_6#0 mul_u16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] ] with [ zp ZP_WORD:120 [ div32u16u::quotient_hi#0 ] ] -Allocated (was zp ZP_WORD:10) zp ZP_WORD:8 [ 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 mul_u16_sel::v1#5 mul_u16_sel::v1#3 mul_u16_sel::v1#4 mul_u16_sel::v1#0 mul_u16_sel::v1#1 mul_u16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mul_u16_sel::return#1 mul_u16_sel::return#10 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] +Coalescing zero page register [ zp ZP_WORD:10 [ 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 ] ] with [ zp ZP_WORD:29 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ] ] +Coalescing zero page register [ zp ZP_WORD:10 [ 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#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ] ] with [ zp ZP_WORD:50 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] ] +Coalescing zero page register [ zp ZP_DWORD:23 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 ] ] with [ zp ZP_DWORD:36 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 ] ] +Coalescing zero page register [ zp ZP_WORD:31 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mul16u::b#0 ] ] with [ zp ZP_WORD:75 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] ] +Coalescing zero page register [ zp ZP_WORD:31 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mul16u::b#0 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] ] with [ zp ZP_WORD:120 [ div32u16u::quotient_hi#0 ] ] +Allocated (was zp ZP_WORD:10) zp ZP_WORD:8 [ 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#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] Allocated (was zp ZP_DWORD:14) zp ZP_DWORD:10 [ sin16s_gen::x#2 sin16s_gen::x#1 ] Allocated (was zp ZP_BYTE:22) zp ZP_BYTE:14 [ sin16s::isUpper#2 ] -Allocated (was zp ZP_DWORD:23) zp ZP_DWORD:15 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mul_u16_sel::$0 mul_u16_sel::$1 ] -Allocated (was zp ZP_WORD:31) zp ZP_WORD:19 [ mul_u16_sel::v2#5 mul_u16_sel::v2#3 mul_u16_sel::v2#4 mul_u16_sel::v2#0 mul_u16_sel::v2#1 mul16u::b#0 mul_u16_sel::return#0 mul_u16_sel::return#12 mul_u16_sel::return#2 sin16s::x3_6#0 mul_u16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 div32u16u::quotient_hi#0 ] +Allocated (was zp ZP_DWORD:23) zp ZP_DWORD:15 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 ] +Allocated (was zp ZP_WORD:31) zp ZP_WORD:19 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mul16u::b#0 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 div32u16u::quotient_hi#0 ] Allocated (was zp ZP_WORD:34) zp ZP_WORD:21 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] Allocated (was zp ZP_DWORD:40) zp ZP_DWORD:23 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] Allocated (was zp ZP_DWORD:57) zp ZP_DWORD:27 [ div32u16u::return#2 sin16s_gen::step#0 div32u16u::return#0 ] @@ -6952,25 +7248,25 @@ ASSEMBLER BEFORE OPTIMIZATION :BasicUpstart(main) .pc = $80d "Program" //SEG1 Global Constants & labels - .label SCREEN = $400 .const PI2_u4f28 = $6487ed51 .const PI_u4f28 = $3243f6a9 .const PI_HALF_u4f28 = $1921fb54 + .label SCREEN = $400 .label rem16u = 4 .label char_cursor = 8 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @26 [phi:@begin->@26] -b26_from_bbegin: - jmp b26 -//SEG4 @26 -b26: +//SEG3 [1] phi from @begin to @29 [phi:@begin->@29] +b29_from_bbegin: + jmp b29 +//SEG4 @29 +b29: //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @26 to main [phi:@26->main] -main_from_b26: +//SEG6 [4] phi from @29 to main [phi:@29->main] +main_from_b29: jsr main -//SEG7 [3] phi from @26 to @end [phi:@26->@end] -bend_from_b26: +//SEG7 [3] phi from @29 to @end [phi:@29->@end] +bend_from_b29: jmp bend //SEG8 @end bend: @@ -7343,7 +7639,7 @@ sin16s_gen: { //SEG132 [62] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] b1_from_b4: //SEG133 [62] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy - //SEG134 [62] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#1 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy + //SEG134 [62] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy //SEG135 [62] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy jmp b1 //SEG136 sin16s_gen::@1 @@ -7373,7 +7669,7 @@ sin16s_gen: { iny lda _1+1 sta (sintab),y - //SEG143 [68] (signed word*) sin16s_gen::sintab#1 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#1 ] ) -- pwsz1=pwsz1_plus_vbuc1 + //SEG143 [68] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) -- pwsz1=pwsz1_plus_vbuc1 clc lda sintab adc #<2 @@ -7381,7 +7677,7 @@ sin16s_gen: { lda sintab+1 adc #>2 sta sintab+1 - //SEG144 [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ) -- vduz1=vduz1_plus_vduz2 + //SEG144 [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -7395,12 +7691,12 @@ sin16s_gen: { lda x+3 adc step+3 sta x+3 - //SEG145 [70] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ) -- vwuz1=_inc_vwuz1 + //SEG145 [70] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG146 [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ) -- vwuz1_lt_vwuc1_then_la1 + //SEG146 [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1_from_b4 @@ -7535,80 +7831,80 @@ sin16s: { sta x1 lda _6+3 sta x1+1 - //SEG168 [81] (word) mul_u16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 ] ) -- vwuz1=vwuz2 + //SEG168 [81] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) -- vwuz1=vwuz2 lda x1 - sta mul_u16_sel.v1 + sta mulu16_sel.v1 lda x1+1 - sta mul_u16_sel.v1+1 - //SEG169 [82] (word) mul_u16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 mul_u16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 mul_u16_sel::v2#0 ] ) -- vwuz1=vwuz2 + sta mulu16_sel.v1+1 + //SEG169 [82] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) -- vwuz1=vwuz2 lda x1 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda x1+1 - sta mul_u16_sel.v2+1 - //SEG170 [83] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ) - //SEG171 [113] phi from sin16s::@2 to mul_u16_sel [phi:sin16s::@2->mul_u16_sel] - mul_u16_sel_from_b2: - //SEG172 [113] phi (byte) mul_u16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mul_u16_sel#0] -- vbuxx=vbuc1 + sta mulu16_sel.v2+1 + //SEG170 [83] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ) + //SEG171 [113] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + mulu16_sel_from_b2: + //SEG172 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG173 [113] phi (word) mul_u16_sel::v2#5 = (word) mul_u16_sel::v2#0 [phi:sin16s::@2->mul_u16_sel#1] -- register_copy - //SEG174 [113] phi (word) mul_u16_sel::v1#5 = (word) mul_u16_sel::v1#0 [phi:sin16s::@2->mul_u16_sel#2] -- register_copy - jsr mul_u16_sel - //SEG175 [84] (word) mul_u16_sel::return#0 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#0 ] ) - // (word) mul_u16_sel::return#0 = (word) mul_u16_sel::return#12 // register copy zp ZP_WORD:19 + //SEG173 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG174 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + jsr mulu16_sel + //SEG175 [84] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + // (word) mulu16_sel::return#0 = (word) mulu16_sel::return#12 // register copy zp ZP_WORD:19 jmp b8 //SEG176 sin16s::@8 b8: - //SEG177 [85] (word) sin16s::x2#0 ← (word) mul_u16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) -- vwuz1=vwuz2 - lda mul_u16_sel.return + //SEG177 [85] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) -- vwuz1=vwuz2 + lda mulu16_sel.return sta x2 - lda mul_u16_sel.return+1 + lda mulu16_sel.return+1 sta x2+1 - //SEG178 [86] (word) mul_u16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 ] ) - // (word) mul_u16_sel::v1#1 = (word) sin16s::x2#0 // register copy zp ZP_WORD:8 - //SEG179 [87] (word) mul_u16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 mul_u16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 mul_u16_sel::v2#1 ] ) -- vwuz1=vwuz2 + //SEG178 [86] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) + // (word) mulu16_sel::v1#1 = (word) sin16s::x2#0 // register copy zp ZP_WORD:8 + //SEG179 [87] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) -- vwuz1=vwuz2 lda x1 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda x1+1 - sta mul_u16_sel.v2+1 - //SEG180 [88] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ) - //SEG181 [113] phi from sin16s::@8 to mul_u16_sel [phi:sin16s::@8->mul_u16_sel] - mul_u16_sel_from_b8: - //SEG182 [113] phi (byte) mul_u16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mul_u16_sel#0] -- vbuxx=vbuc1 + sta mulu16_sel.v2+1 + //SEG180 [88] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ) + //SEG181 [113] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + mulu16_sel_from_b8: + //SEG182 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG183 [113] phi (word) mul_u16_sel::v2#5 = (word) mul_u16_sel::v2#1 [phi:sin16s::@8->mul_u16_sel#1] -- register_copy - //SEG184 [113] phi (word) mul_u16_sel::v1#5 = (word) mul_u16_sel::v1#1 [phi:sin16s::@8->mul_u16_sel#2] -- register_copy - jsr mul_u16_sel - //SEG185 [89] (word) mul_u16_sel::return#1 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#1 ] ) -- vwuz1=vwuz2 - lda mul_u16_sel.return - sta mul_u16_sel.return_1 - lda mul_u16_sel.return+1 - sta mul_u16_sel.return_1+1 + //SEG183 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG184 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + jsr mulu16_sel + //SEG185 [89] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) -- vwuz1=vwuz2 + lda mulu16_sel.return + sta mulu16_sel.return_1 + lda mulu16_sel.return+1 + sta mulu16_sel.return_1+1 jmp b9 //SEG186 sin16s::@9 b9: - //SEG187 [90] (word) sin16s::x3#0 ← (word) mul_u16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) - // (word) sin16s::x3#0 = (word) mul_u16_sel::return#1 // register copy zp ZP_WORD:8 - //SEG188 [91] (word) mul_u16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul_u16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#2 ] ) - // (word) mul_u16_sel::v1#2 = (word) sin16s::x3#0 // register copy zp ZP_WORD:8 - //SEG189 [92] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::x3#0 ] ) - //SEG190 [113] phi from sin16s::@9 to mul_u16_sel [phi:sin16s::@9->mul_u16_sel] - mul_u16_sel_from_b9: - //SEG191 [113] phi (byte) mul_u16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mul_u16_sel#0] -- vbuxx=vbuc1 + //SEG187 [90] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + // (word) sin16s::x3#0 = (word) mulu16_sel::return#1 // register copy zp ZP_WORD:8 + //SEG188 [91] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) + // (word) mulu16_sel::v1#2 = (word) sin16s::x3#0 // register copy zp ZP_WORD:8 + //SEG189 [92] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::x3#0 ] ) + //SEG190 [113] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + mulu16_sel_from_b9: + //SEG191 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG192 [113] phi (word) mul_u16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mul_u16_sel#1] -- vwuz1=vwuc1 + //SEG192 [113] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda #>$10000/6 - sta mul_u16_sel.v2+1 - //SEG193 [113] phi (word) mul_u16_sel::v1#5 = (word) mul_u16_sel::v1#2 [phi:sin16s::@9->mul_u16_sel#2] -- register_copy - jsr mul_u16_sel - //SEG194 [93] (word) mul_u16_sel::return#2 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul_u16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::return#2 ] ) - // (word) mul_u16_sel::return#2 = (word) mul_u16_sel::return#12 // register copy zp ZP_WORD:19 + sta mulu16_sel.v2+1 + //SEG193 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + jsr mulu16_sel + //SEG194 [93] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) + // (word) mulu16_sel::return#2 = (word) mulu16_sel::return#12 // register copy zp ZP_WORD:19 jmp b10 //SEG195 sin16s::@10 b10: - //SEG196 [94] (word) sin16s::x3_6#0 ← (word) mul_u16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) - // (word) sin16s::x3_6#0 = (word) mul_u16_sel::return#2 // register copy zp ZP_WORD:19 + //SEG196 [94] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + // (word) sin16s::x3_6#0 = (word) mulu16_sel::return#2 // register copy zp ZP_WORD:19 //SEG197 [95] (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:64 [ 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 ] ) -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec @@ -7617,53 +7913,53 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG198 [96] (word) mul_u16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#3 ] ) - // (word) mul_u16_sel::v1#3 = (word) sin16s::x3#0 // register copy zp ZP_WORD:8 - //SEG199 [97] (word) mul_u16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#3 mul_u16_sel::v2#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#3 mul_u16_sel::v2#3 ] ) -- vwuz1=vwuz2 + //SEG198 [96] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) + // (word) mulu16_sel::v1#3 = (word) sin16s::x3#0 // register copy zp ZP_WORD:8 + //SEG199 [97] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) -- vwuz1=vwuz2 lda x1 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda x1+1 - sta mul_u16_sel.v2+1 - //SEG200 [98] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::usinx#0 ] ) - //SEG201 [113] phi from sin16s::@10 to mul_u16_sel [phi:sin16s::@10->mul_u16_sel] - mul_u16_sel_from_b10: - //SEG202 [113] phi (byte) mul_u16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mul_u16_sel#0] -- vbuxx=vbuc1 + sta mulu16_sel.v2+1 + //SEG200 [98] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::usinx#0 ] ) + //SEG201 [113] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + mulu16_sel_from_b10: + //SEG202 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG203 [113] phi (word) mul_u16_sel::v2#5 = (word) mul_u16_sel::v2#3 [phi:sin16s::@10->mul_u16_sel#1] -- register_copy - //SEG204 [113] phi (word) mul_u16_sel::v1#5 = (word) mul_u16_sel::v1#3 [phi:sin16s::@10->mul_u16_sel#2] -- register_copy - jsr mul_u16_sel - //SEG205 [99] (word) mul_u16_sel::return#10 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::return#10 ] ) -- vwuz1=vwuz2 - lda mul_u16_sel.return - sta mul_u16_sel.return_10 - lda mul_u16_sel.return+1 - sta mul_u16_sel.return_10+1 + //SEG203 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG204 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + jsr mulu16_sel + //SEG205 [99] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) -- vwuz1=vwuz2 + lda mulu16_sel.return + sta mulu16_sel.return_10 + lda mulu16_sel.return+1 + sta mulu16_sel.return_10+1 jmp b11 //SEG206 sin16s::@11 b11: - //SEG207 [100] (word) sin16s::x4#0 ← (word) mul_u16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) - // (word) sin16s::x4#0 = (word) mul_u16_sel::return#10 // register copy zp ZP_WORD:8 - //SEG208 [101] (word) mul_u16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#4 ] ) - // (word) mul_u16_sel::v1#4 = (word) sin16s::x4#0 // register copy zp ZP_WORD:8 - //SEG209 [102] (word) mul_u16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#4 mul_u16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#4 mul_u16_sel::v2#4 ] ) -- vwuz1=vwuz2 + //SEG207 [100] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + // (word) sin16s::x4#0 = (word) mulu16_sel::return#10 // register copy zp ZP_WORD:8 + //SEG208 [101] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) + // (word) mulu16_sel::v1#4 = (word) sin16s::x4#0 // register copy zp ZP_WORD:8 + //SEG209 [102] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) -- vwuz1=vwuz2 lda x1 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda x1+1 - sta mul_u16_sel.v2+1 - //SEG210 [103] call mul_u16_sel param-assignment [ sin16s::isUpper#2 mul_u16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 mul_u16_sel::return#12 sin16s::usinx#0 ] ) - //SEG211 [113] phi from sin16s::@11 to mul_u16_sel [phi:sin16s::@11->mul_u16_sel] - mul_u16_sel_from_b11: - //SEG212 [113] phi (byte) mul_u16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mul_u16_sel#0] -- vbuxx=vbuc1 + sta mulu16_sel.v2+1 + //SEG210 [103] call mulu16_sel param-assignment [ sin16s::isUpper#2 mulu16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 mulu16_sel::return#12 sin16s::usinx#0 ] ) + //SEG211 [113] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + mulu16_sel_from_b11: + //SEG212 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG213 [113] phi (word) mul_u16_sel::v2#5 = (word) mul_u16_sel::v2#4 [phi:sin16s::@11->mul_u16_sel#1] -- register_copy - //SEG214 [113] phi (word) mul_u16_sel::v1#5 = (word) mul_u16_sel::v1#4 [phi:sin16s::@11->mul_u16_sel#2] -- register_copy - jsr mul_u16_sel - //SEG215 [104] (word) mul_u16_sel::return#11 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#11 ] ) - // (word) mul_u16_sel::return#11 = (word) mul_u16_sel::return#12 // register copy zp ZP_WORD:19 + //SEG213 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG214 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + jsr mulu16_sel + //SEG215 [104] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) + // (word) mulu16_sel::return#11 = (word) mulu16_sel::return#12 // register copy zp ZP_WORD:19 jmp b12 //SEG216 sin16s::@12 b12: - //SEG217 [105] (word) sin16s::x5#0 ← (word) mul_u16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) - // (word) sin16s::x5#0 = (word) mul_u16_sel::return#11 // register copy zp ZP_WORD:19 + //SEG217 [105] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + // (word) sin16s::x5#0 = (word) mulu16_sel::return#11 // register copy zp ZP_WORD:19 //SEG218 [106] (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:64 [ 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 ] ) -- vwuz1=vwuz1_ror_4 ldy #4 !: @@ -7713,8 +8009,8 @@ sin16s: { // (signed word~) sin16s::return#5 = (signed word)(word) sin16s::usinx#1 // register copy zp ZP_WORD:6 jmp b3_from_b15 } -//SEG230 mul_u16_sel -mul_u16_sel: { +//SEG230 mulu16_sel +mulu16_sel: { .label _0 = $f .label _1 = $f .label v1 = 8 @@ -7722,23 +8018,23 @@ mul_u16_sel: { .label return = $13 .label return_1 = 8 .label return_10 = 8 - //SEG231 [114] (word) mul16u::a#1 ← (word) mul_u16_sel::v1#5 [ mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] ) -- vwuz1=vwuz2 + //SEG231 [114] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ) -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG232 [115] (word) mul16u::b#0 ← (word) mul_u16_sel::v2#5 [ mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) - // (word) mul16u::b#0 = (word) mul_u16_sel::v2#5 // register copy zp ZP_WORD:19 - //SEG233 [116] call mul16u param-assignment [ mul_u16_sel::select#5 mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 ] ) + //SEG232 [115] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) + // (word) mul16u::b#0 = (word) mulu16_sel::v2#5 // register copy zp ZP_WORD:19 + //SEG233 [116] call mul16u param-assignment [ mulu16_sel::select#5 mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] ) jsr mul16u - //SEG234 [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul_u16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::return#2 ] ) + //SEG234 [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] ) // (dword) mul16u::return#2 = (dword) mul16u::res#2 // register copy zp ZP_DWORD:15 jmp b2 - //SEG235 mul_u16_sel::@2 + //SEG235 mulu16_sel::@2 b2: - //SEG236 [118] (dword~) mul_u16_sel::$0 ← (dword) mul16u::return#2 [ mul_u16_sel::select#5 mul_u16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] ) - // (dword~) mul_u16_sel::$0 = (dword) mul16u::return#2 // register copy zp ZP_DWORD:15 - //SEG237 [119] (dword~) mul_u16_sel::$1 ← (dword~) mul_u16_sel::$0 << (byte) mul_u16_sel::select#5 [ mul_u16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::$1 ] ) -- vduz1=vduz1_rol_vbuxx + //SEG236 [118] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) + // (dword~) mulu16_sel::$0 = (dword) mul16u::return#2 // register copy zp ZP_DWORD:15 + //SEG237 [119] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ 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:64::mulu16_sel:88 [ 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:64::mulu16_sel:92 [ 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:64::mulu16_sel:98 [ 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:64::mulu16_sel:103 [ 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 ] ) -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -7749,15 +8045,15 @@ mul_u16_sel: { dex bne !- !e: - //SEG238 [120] (word) mul_u16_sel::return#12 ← > (dword~) mul_u16_sel::$1 [ mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#12 ] ) -- vwuz1=_hi_vduz2 + //SEG238 [120] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) -- vwuz1=_hi_vduz2 lda _1+2 sta return lda _1+3 sta return+1 jmp breturn - //SEG239 mul_u16_sel::@return + //SEG239 mulu16_sel::@return breturn: - //SEG240 [121] return [ mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#12 ] ) + //SEG240 [121] return [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) rts } //SEG241 mul16u @@ -7767,7 +8063,7 @@ mul16u: { .label res = $f .label b = $13 .label return = $f - //SEG242 [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] ) -- vduz1=_dword_vwuz2 + //SEG242 [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] ) -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -7789,7 +8085,7 @@ mul16u: { jmp b1 //SEG247 mul16u::@1 b1: - //SEG248 [124] 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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) -- vwuz1_neq_0_then_la1 + //SEG248 [124] 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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 @@ -7797,20 +8093,20 @@ mul16u: { jmp breturn //SEG249 mul16u::@return breturn: - //SEG250 [125] return [ mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 ] ) + //SEG250 [125] return [ mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] ) rts //SEG251 mul16u::@2 b2: - //SEG252 [126] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) -- vbuaa=vwuz1_band_vbuc1 + //SEG252 [126] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG253 [127] 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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) -- vbuaa_eq_0_then_la1 + //SEG253 [127] 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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) -- vbuaa_eq_0_then_la1 cmp #0 beq b4_from_b2 jmp b7 //SEG254 mul16u::@7 b7: - //SEG255 [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) -- vduz1=vduz1_plus_vduz2 + //SEG255 [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -7831,11 +8127,11 @@ mul16u: { jmp b4 //SEG258 mul16u::@4 b4: - //SEG259 [130] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ) -- vwuz1=vwuz1_ror_1 + //SEG259 [130] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ) -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG260 [131] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ) -- vduz1=vduz1_rol_1 + //SEG260 [131] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ) -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 @@ -8029,7 +8325,7 @@ divr16u: { } ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b26 +Removing instruction jmp b29 Removing instruction jmp bend Removing instruction jmp b5 Removing instruction jmp b1 @@ -8114,9 +8410,9 @@ Replacing label b3_from_b2 with b3 Replacing label b3_from_b2 with b3 Replacing label b1_from_b3 with b1 Removing instruction bbegin: -Removing instruction b26_from_bbegin: -Removing instruction main_from_b26: -Removing instruction bend_from_b26: +Removing instruction b29_from_bbegin: +Removing instruction main_from_b29: +Removing instruction bend_from_b29: Removing instruction b5_from_main: Removing instruction print_cls_from_b5: Removing instruction b1_from_b8: @@ -8147,7 +8443,7 @@ Removing instruction b2_from_b4: Removing instruction b3_from_b2: Removing instruction b3_from_b5: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b26: +Removing instruction b29: Removing instruction bend: Removing instruction sin16s_gen_from_main: Removing instruction b5: @@ -8179,15 +8475,15 @@ Removing instruction breturn: Removing instruction b4: Removing instruction b1_from_b4: Removing instruction b5: -Removing instruction mul_u16_sel_from_b2: +Removing instruction mulu16_sel_from_b2: Removing instruction b8: -Removing instruction mul_u16_sel_from_b8: +Removing instruction mulu16_sel_from_b8: Removing instruction b9: -Removing instruction mul_u16_sel_from_b9: +Removing instruction mulu16_sel_from_b9: Removing instruction b10: -Removing instruction mul_u16_sel_from_b10: +Removing instruction mulu16_sel_from_b10: Removing instruction b11: -Removing instruction mul_u16_sel_from_b11: +Removing instruction mulu16_sel_from_b11: Removing instruction b12: Removing instruction b6: Removing instruction b2: @@ -8224,7 +8520,7 @@ Removing unreachable instruction jmp b3 Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE -(label) @26 +(label) @29 (label) @begin (label) @end (dword) PI2_u4f28 @@ -8338,33 +8634,33 @@ FINAL SYMBOL TABLE (dword) mul16u::res#6 res zp ZP_DWORD:15 101.0 (dword) mul16u::return (dword) mul16u::return#2 return zp ZP_DWORD:15 4.0 -(word()) mul_u16_sel((word) mul_u16_sel::v1 , (word) mul_u16_sel::v2 , (byte) mul_u16_sel::select) -(dword~) mul_u16_sel::$0 $0 zp ZP_DWORD:15 4.0 -(dword~) mul_u16_sel::$1 $1 zp ZP_DWORD:15 4.0 -(label) mul_u16_sel::@2 -(label) mul_u16_sel::@return -(word) mul_u16_sel::return -(word) mul_u16_sel::return#0 return zp ZP_WORD:19 4.0 -(word) mul_u16_sel::return#1 return#1 zp ZP_WORD:8 4.0 -(word) mul_u16_sel::return#10 return#10 zp ZP_WORD:8 4.0 -(word) mul_u16_sel::return#11 return zp ZP_WORD:19 4.0 -(word) mul_u16_sel::return#12 return zp ZP_WORD:19 1.714285714285714 -(word) mul_u16_sel::return#2 return zp ZP_WORD:19 4.0 -(byte) mul_u16_sel::select -(byte) mul_u16_sel::select#5 reg byte x 0.3333333333333333 -(word) mul_u16_sel::v1 -(word) mul_u16_sel::v1#0 v1 zp ZP_WORD:8 2.0 -(word) mul_u16_sel::v1#1 v1 zp ZP_WORD:8 2.0 -(word) mul_u16_sel::v1#2 v1 zp ZP_WORD:8 4.0 -(word) mul_u16_sel::v1#3 v1 zp ZP_WORD:8 2.0 -(word) mul_u16_sel::v1#4 v1 zp ZP_WORD:8 2.0 -(word) mul_u16_sel::v1#5 v1 zp ZP_WORD:8 12.0 -(word) mul_u16_sel::v2 -(word) mul_u16_sel::v2#0 v2 zp ZP_WORD:19 4.0 -(word) mul_u16_sel::v2#1 v2 zp ZP_WORD:19 4.0 -(word) mul_u16_sel::v2#3 v2 zp ZP_WORD:19 4.0 -(word) mul_u16_sel::v2#4 v2 zp ZP_WORD:19 4.0 -(word) mul_u16_sel::v2#5 v2 zp ZP_WORD:19 5.0 +(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) +(dword~) mulu16_sel::$0 $0 zp ZP_DWORD:15 4.0 +(dword~) mulu16_sel::$1 $1 zp ZP_DWORD:15 4.0 +(label) mulu16_sel::@2 +(label) mulu16_sel::@return +(word) mulu16_sel::return +(word) mulu16_sel::return#0 return zp ZP_WORD:19 4.0 +(word) mulu16_sel::return#1 return#1 zp ZP_WORD:8 4.0 +(word) mulu16_sel::return#10 return#10 zp ZP_WORD:8 4.0 +(word) mulu16_sel::return#11 return zp ZP_WORD:19 4.0 +(word) mulu16_sel::return#12 return zp ZP_WORD:19 1.714285714285714 +(word) mulu16_sel::return#2 return zp ZP_WORD:19 4.0 +(byte) mulu16_sel::select +(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333 +(word) mulu16_sel::v1 +(word) mulu16_sel::v1#0 v1 zp ZP_WORD:8 2.0 +(word) mulu16_sel::v1#1 v1 zp ZP_WORD:8 2.0 +(word) mulu16_sel::v1#2 v1 zp ZP_WORD:8 4.0 +(word) mulu16_sel::v1#3 v1 zp ZP_WORD:8 2.0 +(word) mulu16_sel::v1#4 v1 zp ZP_WORD:8 2.0 +(word) mulu16_sel::v1#5 v1 zp ZP_WORD:8 12.0 +(word) mulu16_sel::v2 +(word) mulu16_sel::v2#0 v2 zp ZP_WORD:19 4.0 +(word) mulu16_sel::v2#1 v2 zp ZP_WORD:19 4.0 +(word) mulu16_sel::v2#3 v2 zp ZP_WORD:19 4.0 +(word) mulu16_sel::v2#4 v2 zp ZP_WORD:19 4.0 +(word) mulu16_sel::v2#5 v2 zp ZP_WORD:19 5.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 @@ -8467,7 +8763,7 @@ FINAL SYMBOL TABLE (word) sin16s_gen::i#1 i zp ZP_WORD:4 16.5 (word) sin16s_gen::i#2 i zp ZP_WORD:4 2.75 (signed word*) sin16s_gen::sintab -(signed word*) sin16s_gen::sintab#1 sintab zp ZP_WORD:2 5.5 +(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:27 1.1818181818181819 @@ -8476,17 +8772,17 @@ FINAL SYMBOL TABLE (dword) sin16s_gen::x#1 x zp ZP_DWORD:10 7.333333333333333 (dword) sin16s_gen::x#2 x zp ZP_DWORD:10 4.714285714285714 -zp ZP_WORD:2 [ main::st1#2 main::st1#1 print_cls::sc#2 print_cls::sc#1 sin16s_gen::sintab#2 sin16s_gen::sintab#1 divr16u::divisor#6 ] +zp ZP_WORD:2 [ main::st1#2 main::st1#1 print_cls::sc#2 print_cls::sc#1 sin16s_gen::sintab#2 sin16s_gen::sintab#0 divr16u::divisor#6 ] zp ZP_WORD:4 [ print_str::str#3 print_str::str#5 print_str::str#0 sin16s_gen::i#2 sin16s_gen::i#1 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$1 sin16s::usinx#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -zp ZP_WORD:8 [ 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 mul_u16_sel::v1#5 mul_u16_sel::v1#3 mul_u16_sel::v1#4 mul_u16_sel::v1#0 mul_u16_sel::v1#1 mul_u16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mul_u16_sel::return#1 mul_u16_sel::return#10 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] +zp ZP_WORD:8 [ 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#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] zp ZP_DWORD:10 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_BYTE:14 [ sin16s::isUpper#2 ] -zp ZP_DWORD:15 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mul_u16_sel::$0 mul_u16_sel::$1 ] -zp ZP_WORD:19 [ mul_u16_sel::v2#5 mul_u16_sel::v2#3 mul_u16_sel::v2#4 mul_u16_sel::v2#0 mul_u16_sel::v2#1 mul16u::b#0 mul_u16_sel::return#0 mul_u16_sel::return#12 mul_u16_sel::return#2 sin16s::x3_6#0 mul_u16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 div32u16u::quotient_hi#0 ] -reg byte x [ mul_u16_sel::select#5 ] +zp ZP_DWORD:15 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 ] +zp ZP_WORD:19 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mul16u::b#0 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 div32u16u::quotient_hi#0 ] +reg byte x [ mulu16_sel::select#5 ] zp ZP_WORD:21 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] zp ZP_DWORD:23 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] @@ -8507,19 +8803,19 @@ Score: 20907 :BasicUpstart(main) .pc = $80d "Program" //SEG1 Global Constants & labels - .label SCREEN = $400 .const PI2_u4f28 = $6487ed51 .const PI_u4f28 = $3243f6a9 .const PI_HALF_u4f28 = $1921fb54 + .label SCREEN = $400 .label rem16u = 4 .label char_cursor = 8 //SEG2 @begin -//SEG3 [1] phi from @begin to @26 [phi:@begin->@26] -//SEG4 @26 +//SEG3 [1] phi from @begin to @29 [phi:@begin->@29] +//SEG4 @29 //SEG5 [2] call main param-assignment [ ] ( ) -//SEG6 [4] phi from @26 to main [phi:@26->main] +//SEG6 [4] phi from @29 to main [phi:@29->main] jsr main -//SEG7 [3] phi from @26 to @end [phi:@26->@end] +//SEG7 [3] phi from @29 to @end [phi:@29->@end] //SEG8 @end //SEG9 main main: { @@ -8819,7 +9115,7 @@ sin16s_gen: { sta x+3 //SEG132 [62] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] //SEG133 [62] phi (word) sin16s_gen::i#2 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy - //SEG134 [62] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#1 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy + //SEG134 [62] phi (signed word*) sin16s_gen::sintab#2 = (signed word*) sin16s_gen::sintab#0 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy //SEG135 [62] phi (dword) sin16s_gen::x#2 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy //SEG136 sin16s_gen::@1 b1: @@ -8846,7 +9142,7 @@ sin16s_gen: { iny lda _1+1 sta (sintab),y - //SEG143 [68] (signed word*) sin16s_gen::sintab#1 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#1 ] ) -- pwsz1=pwsz1_plus_vbuc1 + //SEG143 [68] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) -- pwsz1=pwsz1_plus_vbuc1 clc lda sintab adc #<2 @@ -8854,7 +9150,7 @@ sin16s_gen: { lda sintab+1 adc #>2 sta sintab+1 - //SEG144 [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ) -- vduz1=vduz1_plus_vduz2 + //SEG144 [69] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -8868,12 +9164,12 @@ sin16s_gen: { lda x+3 adc step+3 sta x+3 - //SEG145 [70] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ) -- vwuz1=_inc_vwuz1 + //SEG145 [70] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG146 [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ) -- vwuz1_lt_vwuc1_then_la1 + //SEG146 [71] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength bcc b1 @@ -8997,71 +9293,71 @@ sin16s: { sta x1 lda _6+3 sta x1+1 - //SEG168 [81] (word) mul_u16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 ] ) -- vwuz1=vwuz2 + //SEG168 [81] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) -- vwuz1=vwuz2 lda x1 - sta mul_u16_sel.v1 + sta mulu16_sel.v1 lda x1+1 - sta mul_u16_sel.v1+1 - //SEG169 [82] (word) mul_u16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 mul_u16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#0 mul_u16_sel::v2#0 ] ) -- vwuz1=vwuz2 + sta mulu16_sel.v1+1 + //SEG169 [82] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) -- vwuz1=vwuz2 lda x1 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda x1+1 - sta mul_u16_sel.v2+1 - //SEG170 [83] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ) - //SEG171 [113] phi from sin16s::@2 to mul_u16_sel [phi:sin16s::@2->mul_u16_sel] - //SEG172 [113] phi (byte) mul_u16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mul_u16_sel#0] -- vbuxx=vbuc1 + sta mulu16_sel.v2+1 + //SEG170 [83] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ) + //SEG171 [113] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG172 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG173 [113] phi (word) mul_u16_sel::v2#5 = (word) mul_u16_sel::v2#0 [phi:sin16s::@2->mul_u16_sel#1] -- register_copy - //SEG174 [113] phi (word) mul_u16_sel::v1#5 = (word) mul_u16_sel::v1#0 [phi:sin16s::@2->mul_u16_sel#2] -- register_copy - jsr mul_u16_sel - //SEG175 [84] (word) mul_u16_sel::return#0 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#0 ] ) - // (word) mul_u16_sel::return#0 = (word) mul_u16_sel::return#12 // register copy zp ZP_WORD:19 + //SEG173 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG174 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + jsr mulu16_sel + //SEG175 [84] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + // (word) mulu16_sel::return#0 = (word) mulu16_sel::return#12 // register copy zp ZP_WORD:19 //SEG176 sin16s::@8 - //SEG177 [85] (word) sin16s::x2#0 ← (word) mul_u16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) -- vwuz1=vwuz2 - lda mul_u16_sel.return + //SEG177 [85] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) -- vwuz1=vwuz2 + lda mulu16_sel.return sta x2 - lda mul_u16_sel.return+1 + lda mulu16_sel.return+1 sta x2+1 - //SEG178 [86] (word) mul_u16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 ] ) - // (word) mul_u16_sel::v1#1 = (word) sin16s::x2#0 // register copy zp ZP_WORD:8 - //SEG179 [87] (word) mul_u16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 mul_u16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v1#1 mul_u16_sel::v2#1 ] ) -- vwuz1=vwuz2 + //SEG178 [86] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) + // (word) mulu16_sel::v1#1 = (word) sin16s::x2#0 // register copy zp ZP_WORD:8 + //SEG179 [87] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) -- vwuz1=vwuz2 lda x1 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda x1+1 - sta mul_u16_sel.v2+1 - //SEG180 [88] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] ) - //SEG181 [113] phi from sin16s::@8 to mul_u16_sel [phi:sin16s::@8->mul_u16_sel] - //SEG182 [113] phi (byte) mul_u16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mul_u16_sel#0] -- vbuxx=vbuc1 + sta mulu16_sel.v2+1 + //SEG180 [88] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ) + //SEG181 [113] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG182 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG183 [113] phi (word) mul_u16_sel::v2#5 = (word) mul_u16_sel::v2#1 [phi:sin16s::@8->mul_u16_sel#1] -- register_copy - //SEG184 [113] phi (word) mul_u16_sel::v1#5 = (word) mul_u16_sel::v1#1 [phi:sin16s::@8->mul_u16_sel#2] -- register_copy - jsr mul_u16_sel - //SEG185 [89] (word) mul_u16_sel::return#1 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#1 ] ) -- vwuz1=vwuz2 - lda mul_u16_sel.return - sta mul_u16_sel.return_1 - lda mul_u16_sel.return+1 - sta mul_u16_sel.return_1+1 + //SEG183 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG184 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + jsr mulu16_sel + //SEG185 [89] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) -- vwuz1=vwuz2 + lda mulu16_sel.return + sta mulu16_sel.return_1 + lda mulu16_sel.return+1 + sta mulu16_sel.return_1+1 //SEG186 sin16s::@9 - //SEG187 [90] (word) sin16s::x3#0 ← (word) mul_u16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) - // (word) sin16s::x3#0 = (word) mul_u16_sel::return#1 // register copy zp ZP_WORD:8 - //SEG188 [91] (word) mul_u16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul_u16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#2 ] ) - // (word) mul_u16_sel::v1#2 = (word) sin16s::x3#0 // register copy zp ZP_WORD:8 - //SEG189 [92] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::x3#0 ] ) - //SEG190 [113] phi from sin16s::@9 to mul_u16_sel [phi:sin16s::@9->mul_u16_sel] - //SEG191 [113] phi (byte) mul_u16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mul_u16_sel#0] -- vbuxx=vbuc1 + //SEG187 [90] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + // (word) sin16s::x3#0 = (word) mulu16_sel::return#1 // register copy zp ZP_WORD:8 + //SEG188 [91] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) + // (word) mulu16_sel::v1#2 = (word) sin16s::x3#0 // register copy zp ZP_WORD:8 + //SEG189 [92] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::x3#0 ] ) + //SEG190 [113] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG191 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG192 [113] phi (word) mul_u16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mul_u16_sel#1] -- vwuz1=vwuc1 + //SEG192 [113] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda #>$10000/6 - sta mul_u16_sel.v2+1 - //SEG193 [113] phi (word) mul_u16_sel::v1#5 = (word) mul_u16_sel::v1#2 [phi:sin16s::@9->mul_u16_sel#2] -- register_copy - jsr mul_u16_sel - //SEG194 [93] (word) mul_u16_sel::return#2 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul_u16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::return#2 ] ) - // (word) mul_u16_sel::return#2 = (word) mul_u16_sel::return#12 // register copy zp ZP_WORD:19 + sta mulu16_sel.v2+1 + //SEG193 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + jsr mulu16_sel + //SEG194 [93] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) + // (word) mulu16_sel::return#2 = (word) mulu16_sel::return#12 // register copy zp ZP_WORD:19 //SEG195 sin16s::@10 - //SEG196 [94] (word) sin16s::x3_6#0 ← (word) mul_u16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) - // (word) sin16s::x3_6#0 = (word) mul_u16_sel::return#2 // register copy zp ZP_WORD:19 + //SEG196 [94] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + // (word) sin16s::x3_6#0 = (word) mulu16_sel::return#2 // register copy zp ZP_WORD:19 //SEG197 [95] (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:64 [ 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 ] ) -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec @@ -9070,47 +9366,47 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG198 [96] (word) mul_u16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#3 ] ) - // (word) mul_u16_sel::v1#3 = (word) sin16s::x3#0 // register copy zp ZP_WORD:8 - //SEG199 [97] (word) mul_u16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#3 mul_u16_sel::v2#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#3 mul_u16_sel::v2#3 ] ) -- vwuz1=vwuz2 + //SEG198 [96] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) + // (word) mulu16_sel::v1#3 = (word) sin16s::x3#0 // register copy zp ZP_WORD:8 + //SEG199 [97] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) -- vwuz1=vwuz2 lda x1 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda x1+1 - sta mul_u16_sel.v2+1 - //SEG200 [98] call mul_u16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 sin16s::usinx#0 ] ) - //SEG201 [113] phi from sin16s::@10 to mul_u16_sel [phi:sin16s::@10->mul_u16_sel] - //SEG202 [113] phi (byte) mul_u16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mul_u16_sel#0] -- vbuxx=vbuc1 + sta mulu16_sel.v2+1 + //SEG200 [98] call mulu16_sel param-assignment [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::usinx#0 ] ) + //SEG201 [113] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG202 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG203 [113] phi (word) mul_u16_sel::v2#5 = (word) mul_u16_sel::v2#3 [phi:sin16s::@10->mul_u16_sel#1] -- register_copy - //SEG204 [113] phi (word) mul_u16_sel::v1#5 = (word) mul_u16_sel::v1#3 [phi:sin16s::@10->mul_u16_sel#2] -- register_copy - jsr mul_u16_sel - //SEG205 [99] (word) mul_u16_sel::return#10 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::return#10 ] ) -- vwuz1=vwuz2 - lda mul_u16_sel.return - sta mul_u16_sel.return_10 - lda mul_u16_sel.return+1 - sta mul_u16_sel.return_10+1 + //SEG203 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG204 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + jsr mulu16_sel + //SEG205 [99] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) -- vwuz1=vwuz2 + lda mulu16_sel.return + sta mulu16_sel.return_10 + lda mulu16_sel.return+1 + sta mulu16_sel.return_10+1 //SEG206 sin16s::@11 - //SEG207 [100] (word) sin16s::x4#0 ← (word) mul_u16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) - // (word) sin16s::x4#0 = (word) mul_u16_sel::return#10 // register copy zp ZP_WORD:8 - //SEG208 [101] (word) mul_u16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul_u16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 mul_u16_sel::v1#4 ] ) - // (word) mul_u16_sel::v1#4 = (word) sin16s::x4#0 // register copy zp ZP_WORD:8 - //SEG209 [102] (word) mul_u16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#4 mul_u16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v1#4 mul_u16_sel::v2#4 ] ) -- vwuz1=vwuz2 + //SEG207 [100] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + // (word) sin16s::x4#0 = (word) mulu16_sel::return#10 // register copy zp ZP_WORD:8 + //SEG208 [101] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) + // (word) mulu16_sel::v1#4 = (word) sin16s::x4#0 // register copy zp ZP_WORD:8 + //SEG209 [102] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) -- vwuz1=vwuz2 lda x1 - sta mul_u16_sel.v2 + sta mulu16_sel.v2 lda x1+1 - sta mul_u16_sel.v2+1 - //SEG210 [103] call mul_u16_sel param-assignment [ sin16s::isUpper#2 mul_u16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 mul_u16_sel::return#12 sin16s::usinx#0 ] ) - //SEG211 [113] phi from sin16s::@11 to mul_u16_sel [phi:sin16s::@11->mul_u16_sel] - //SEG212 [113] phi (byte) mul_u16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mul_u16_sel#0] -- vbuxx=vbuc1 + sta mulu16_sel.v2+1 + //SEG210 [103] call mulu16_sel param-assignment [ sin16s::isUpper#2 mulu16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 mulu16_sel::return#12 sin16s::usinx#0 ] ) + //SEG211 [113] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG212 [113] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG213 [113] phi (word) mul_u16_sel::v2#5 = (word) mul_u16_sel::v2#4 [phi:sin16s::@11->mul_u16_sel#1] -- register_copy - //SEG214 [113] phi (word) mul_u16_sel::v1#5 = (word) mul_u16_sel::v1#4 [phi:sin16s::@11->mul_u16_sel#2] -- register_copy - jsr mul_u16_sel - //SEG215 [104] (word) mul_u16_sel::return#11 ← (word) mul_u16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#11 ] ) - // (word) mul_u16_sel::return#11 = (word) mul_u16_sel::return#12 // register copy zp ZP_WORD:19 + //SEG213 [113] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG214 [113] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + jsr mulu16_sel + //SEG215 [104] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) + // (word) mulu16_sel::return#11 = (word) mulu16_sel::return#12 // register copy zp ZP_WORD:19 //SEG216 sin16s::@12 - //SEG217 [105] (word) sin16s::x5#0 ← (word) mul_u16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) - // (word) sin16s::x5#0 = (word) mul_u16_sel::return#11 // register copy zp ZP_WORD:19 + //SEG217 [105] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:64 [ 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 ] ) + // (word) sin16s::x5#0 = (word) mulu16_sel::return#11 // register copy zp ZP_WORD:19 //SEG218 [106] (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:64 [ 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 ] ) -- vwuz1=vwuz1_ror_4 ldy #4 !: @@ -9151,8 +9447,8 @@ sin16s: { //SEG229 [112] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:64 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#5 ] ) // (signed word~) sin16s::return#5 = (signed word)(word) sin16s::usinx#1 // register copy zp ZP_WORD:6 } -//SEG230 mul_u16_sel -mul_u16_sel: { +//SEG230 mulu16_sel +mulu16_sel: { .label _0 = $f .label _1 = $f .label v1 = 8 @@ -9160,21 +9456,21 @@ mul_u16_sel: { .label return = $13 .label return_1 = 8 .label return_10 = 8 - //SEG231 [114] (word) mul16u::a#1 ← (word) mul_u16_sel::v1#5 [ mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::v2#5 mul_u16_sel::select#5 mul16u::a#1 ] ) -- vwuz1=vwuz2 + //SEG231 [114] (word) mul16u::a#1 ← (word) mulu16_sel::v1#5 [ mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#5 mulu16_sel::select#5 mul16u::a#1 ] ) -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG232 [115] (word) mul16u::b#0 ← (word) mul_u16_sel::v2#5 [ mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) - // (word) mul16u::b#0 = (word) mul_u16_sel::v2#5 // register copy zp ZP_WORD:19 - //SEG233 [116] call mul16u param-assignment [ mul_u16_sel::select#5 mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 ] ) + //SEG232 [115] (word) mul16u::b#0 ← (word) mulu16_sel::v2#5 [ mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::b#0 ] ) + // (word) mul16u::b#0 = (word) mulu16_sel::v2#5 // register copy zp ZP_WORD:19 + //SEG233 [116] call mul16u param-assignment [ mulu16_sel::select#5 mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] ) jsr mul16u - //SEG234 [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul_u16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::return#2 ] ) + //SEG234 [117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#2 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#2 ] ) // (dword) mul16u::return#2 = (dword) mul16u::res#2 // register copy zp ZP_DWORD:15 - //SEG235 mul_u16_sel::@2 - //SEG236 [118] (dword~) mul_u16_sel::$0 ← (dword) mul16u::return#2 [ mul_u16_sel::select#5 mul_u16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::select#5 mul_u16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul_u16_sel::$0 ] ) - // (dword~) mul_u16_sel::$0 = (dword) mul16u::return#2 // register copy zp ZP_DWORD:15 - //SEG237 [119] (dword~) mul_u16_sel::$1 ← (dword~) mul_u16_sel::$0 << (byte) mul_u16_sel::select#5 [ mul_u16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::$1 ] ) -- vduz1=vduz1_rol_vbuxx + //SEG235 mulu16_sel::@2 + //SEG236 [118] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) + // (dword~) mulu16_sel::$0 = (dword) mul16u::return#2 // register copy zp ZP_DWORD:15 + //SEG237 [119] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ 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:64::mulu16_sel:88 [ 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:64::mulu16_sel:92 [ 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:64::mulu16_sel:98 [ 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:64::mulu16_sel:103 [ 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 ] ) -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -9185,13 +9481,13 @@ mul_u16_sel: { dex bne !- !e: - //SEG238 [120] (word) mul_u16_sel::return#12 ← > (dword~) mul_u16_sel::$1 [ mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#12 ] ) -- vwuz1=_hi_vduz2 + //SEG238 [120] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) -- vwuz1=_hi_vduz2 lda _1+2 sta return lda _1+3 sta return+1 - //SEG239 mul_u16_sel::@return - //SEG240 [121] return [ mul_u16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98 [ 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 mul_u16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::return#12 ] ) + //SEG239 mulu16_sel::@return + //SEG240 [121] return [ mulu16_sel::return#12 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) rts } //SEG241 mul16u @@ -9201,7 +9497,7 @@ mul16u: { .label res = $f .label b = $13 .label return = $f - //SEG242 [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] ) -- vduz1=_dword_vwuz2 + //SEG242 [122] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#1 mul16u::mb#0 ] ) -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -9219,24 +9515,24 @@ mul16u: { //SEG246 [123] phi (word) mul16u::a#2 = (word) mul16u::a#1 [phi:mul16u->mul16u::@1#2] -- register_copy //SEG247 mul16u::@1 b1: - //SEG248 [124] 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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) -- vwuz1_neq_0_then_la1 + //SEG248 [124] 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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 //SEG249 mul16u::@return - //SEG250 [125] return [ mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 ] ) + //SEG250 [125] return [ mul16u::res#2 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] ) rts //SEG251 mul16u::@2 b2: - //SEG252 [126] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) -- vbuaa=vwuz1_band_vbuc1 + //SEG252 [126] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG253 [127] 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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) -- vbuaa_eq_0_then_la1 + //SEG253 [127] 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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) -- vbuaa_eq_0_then_la1 cmp #0 beq b4 //SEG254 mul16u::@7 - //SEG255 [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) -- vduz1=vduz1_plus_vduz2 + //SEG255 [128] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -9254,11 +9550,11 @@ mul16u: { //SEG257 [129] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy //SEG258 mul16u::@4 b4: - //SEG259 [130] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ) -- vwuz1=vwuz1_ror_1 + //SEG259 [130] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ) -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG260 [131] (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_gen:5::sin16s:64::mul_u16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:92::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:98::mul16u:116 [ 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 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mul_u16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul_u16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ) -- vduz1=vduz1_rol_1 + //SEG260 [131] (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_gen:5::sin16s:64::mulu16_sel:83::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:88::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:92::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:98::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:64::mulu16_sel:103::mul16u:116 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ) -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.sym b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.sym similarity index 82% rename from src/test/java/dk/camelot64/kickc/test/ref/sinusgen.sym rename to src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.sym index 59aa569da..cec2f1c6d 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.sym @@ -1,4 +1,4 @@ -(label) @26 +(label) @29 (label) @begin (label) @end (dword) PI2_u4f28 @@ -112,33 +112,33 @@ (dword) mul16u::res#6 res zp ZP_DWORD:15 101.0 (dword) mul16u::return (dword) mul16u::return#2 return zp ZP_DWORD:15 4.0 -(word()) mul_u16_sel((word) mul_u16_sel::v1 , (word) mul_u16_sel::v2 , (byte) mul_u16_sel::select) -(dword~) mul_u16_sel::$0 $0 zp ZP_DWORD:15 4.0 -(dword~) mul_u16_sel::$1 $1 zp ZP_DWORD:15 4.0 -(label) mul_u16_sel::@2 -(label) mul_u16_sel::@return -(word) mul_u16_sel::return -(word) mul_u16_sel::return#0 return zp ZP_WORD:19 4.0 -(word) mul_u16_sel::return#1 return#1 zp ZP_WORD:8 4.0 -(word) mul_u16_sel::return#10 return#10 zp ZP_WORD:8 4.0 -(word) mul_u16_sel::return#11 return zp ZP_WORD:19 4.0 -(word) mul_u16_sel::return#12 return zp ZP_WORD:19 1.714285714285714 -(word) mul_u16_sel::return#2 return zp ZP_WORD:19 4.0 -(byte) mul_u16_sel::select -(byte) mul_u16_sel::select#5 reg byte x 0.3333333333333333 -(word) mul_u16_sel::v1 -(word) mul_u16_sel::v1#0 v1 zp ZP_WORD:8 2.0 -(word) mul_u16_sel::v1#1 v1 zp ZP_WORD:8 2.0 -(word) mul_u16_sel::v1#2 v1 zp ZP_WORD:8 4.0 -(word) mul_u16_sel::v1#3 v1 zp ZP_WORD:8 2.0 -(word) mul_u16_sel::v1#4 v1 zp ZP_WORD:8 2.0 -(word) mul_u16_sel::v1#5 v1 zp ZP_WORD:8 12.0 -(word) mul_u16_sel::v2 -(word) mul_u16_sel::v2#0 v2 zp ZP_WORD:19 4.0 -(word) mul_u16_sel::v2#1 v2 zp ZP_WORD:19 4.0 -(word) mul_u16_sel::v2#3 v2 zp ZP_WORD:19 4.0 -(word) mul_u16_sel::v2#4 v2 zp ZP_WORD:19 4.0 -(word) mul_u16_sel::v2#5 v2 zp ZP_WORD:19 5.0 +(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) +(dword~) mulu16_sel::$0 $0 zp ZP_DWORD:15 4.0 +(dword~) mulu16_sel::$1 $1 zp ZP_DWORD:15 4.0 +(label) mulu16_sel::@2 +(label) mulu16_sel::@return +(word) mulu16_sel::return +(word) mulu16_sel::return#0 return zp ZP_WORD:19 4.0 +(word) mulu16_sel::return#1 return#1 zp ZP_WORD:8 4.0 +(word) mulu16_sel::return#10 return#10 zp ZP_WORD:8 4.0 +(word) mulu16_sel::return#11 return zp ZP_WORD:19 4.0 +(word) mulu16_sel::return#12 return zp ZP_WORD:19 1.714285714285714 +(word) mulu16_sel::return#2 return zp ZP_WORD:19 4.0 +(byte) mulu16_sel::select +(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333 +(word) mulu16_sel::v1 +(word) mulu16_sel::v1#0 v1 zp ZP_WORD:8 2.0 +(word) mulu16_sel::v1#1 v1 zp ZP_WORD:8 2.0 +(word) mulu16_sel::v1#2 v1 zp ZP_WORD:8 4.0 +(word) mulu16_sel::v1#3 v1 zp ZP_WORD:8 2.0 +(word) mulu16_sel::v1#4 v1 zp ZP_WORD:8 2.0 +(word) mulu16_sel::v1#5 v1 zp ZP_WORD:8 12.0 +(word) mulu16_sel::v2 +(word) mulu16_sel::v2#0 v2 zp ZP_WORD:19 4.0 +(word) mulu16_sel::v2#1 v2 zp ZP_WORD:19 4.0 +(word) mulu16_sel::v2#3 v2 zp ZP_WORD:19 4.0 +(word) mulu16_sel::v2#4 v2 zp ZP_WORD:19 4.0 +(word) mulu16_sel::v2#5 v2 zp ZP_WORD:19 5.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 @@ -241,7 +241,7 @@ (word) sin16s_gen::i#1 i zp ZP_WORD:4 16.5 (word) sin16s_gen::i#2 i zp ZP_WORD:4 2.75 (signed word*) sin16s_gen::sintab -(signed word*) sin16s_gen::sintab#1 sintab zp ZP_WORD:2 5.5 +(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:27 1.1818181818181819 @@ -250,17 +250,17 @@ (dword) sin16s_gen::x#1 x zp ZP_DWORD:10 7.333333333333333 (dword) sin16s_gen::x#2 x zp ZP_DWORD:10 4.714285714285714 -zp ZP_WORD:2 [ main::st1#2 main::st1#1 print_cls::sc#2 print_cls::sc#1 sin16s_gen::sintab#2 sin16s_gen::sintab#1 divr16u::divisor#6 ] +zp ZP_WORD:2 [ main::st1#2 main::st1#1 print_cls::sc#2 print_cls::sc#1 sin16s_gen::sintab#2 sin16s_gen::sintab#0 divr16u::divisor#6 ] zp ZP_WORD:4 [ print_str::str#3 print_str::str#5 print_str::str#0 sin16s_gen::i#2 sin16s_gen::i#1 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$1 sin16s::usinx#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] -zp ZP_WORD:8 [ 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 mul_u16_sel::v1#5 mul_u16_sel::v1#3 mul_u16_sel::v1#4 mul_u16_sel::v1#0 mul_u16_sel::v1#1 mul_u16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mul_u16_sel::return#1 mul_u16_sel::return#10 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] +zp ZP_WORD:8 [ 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#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] zp ZP_DWORD:10 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_BYTE:14 [ sin16s::isUpper#2 ] -zp ZP_DWORD:15 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mul_u16_sel::$0 mul_u16_sel::$1 ] -zp ZP_WORD:19 [ mul_u16_sel::v2#5 mul_u16_sel::v2#3 mul_u16_sel::v2#4 mul_u16_sel::v2#0 mul_u16_sel::v2#1 mul16u::b#0 mul_u16_sel::return#0 mul_u16_sel::return#12 mul_u16_sel::return#2 sin16s::x3_6#0 mul_u16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 div32u16u::quotient_hi#0 ] -reg byte x [ mul_u16_sel::select#5 ] +zp ZP_DWORD:15 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 ] +zp ZP_WORD:19 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mul16u::b#0 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 div32u16u::quotient_hi#0 ] +reg byte x [ mulu16_sel::select#5 ] zp ZP_WORD:21 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] zp ZP_DWORD:23 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.asm b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.asm new file mode 100644 index 000000000..49f6c888d --- /dev/null +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.asm @@ -0,0 +1,391 @@ +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .const PI2_u4f12 = $6488 + .const PI_u4f12 = $3244 + .const PI_HALF_u4f12 = $1922 + .label SCREEN = $400 + .label char_cursor = 5 + jsr main +main: { + .label wavelength = $78 + .label sb = 4 + jsr sin8s_gen + jsr print_cls + lda #SCREEN + sta char_cursor+1 + ldx #0 + b1: + lda sintab2,x + sta sb + bmi b2 + lda #str1 + sta print_str.str+1 + jsr print_str + b2: + jsr print_sbyte + lda #str + sta print_str.str+1 + jsr print_str + inx + cpx #$78 + bne b1 + rts + str: .text " @" + str1: .text " @" + sintab2: .fill $78, 0 +} +print_str: { + .label str = 2 + 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_sbyte: { + .label b = 4 + lda b + cmp #0 + bpl b1 + lda #'-' + jsr print_char + lda b + eor #$ff + clc + adc #1 + sta b + b1: + jsr print_byte + rts +} +print_byte: { + lda print_sbyte.b + lsr + lsr + lsr + lsr + tay + lda hextab,y + jsr print_char + lda #$f + and print_sbyte.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+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 #main.sintab2 + sta sintab+1 + lda #<0 + sta x + sta x+1 + b1: + lda x + sta sin8s.x + lda x+1 + sta sin8s.x+1 + jsr sin8s + ldy #0 + sta (sintab),y + inc sintab + bne !+ + inc sintab+1 + !: + lda x + clc + adc step + sta x + lda x+1 + adc step+1 + sta x+1 + inc i + bne !+ + inc i+1 + !: + lda i+1 + cmp #>main.wavelength + bcc b1 + bne !+ + lda i + cmp #PI_u4f12 + bcc b4 + bne !+ + lda x + cmp #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_u4f12 + sbc x+1 + sta x+1 + b2: + asl _6 + rol _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + lda _6+1 + sta x1 + tax + tay + lda #0 + sta mulu8_sel.select + jsr mulu8_sel + tax + ldy x1 + lda #1 + sta mulu8_sel.select + jsr mulu8_sel + sta x3 + tax + lda #1 + sta mulu8_sel.select + ldy #$100/6 + jsr mulu8_sel + eor #$ff + sec + adc x1 + sta usinx + ldx x3 + ldy x1 + lda #0 + sta mulu8_sel.select + jsr mulu8_sel + tax + ldy x1 + lda #0 + sta mulu8_sel.select + jsr mulu8_sel + lsr + lsr + lsr + lsr + clc + adc usinx + tax + lda isUpper + beq b15 + txa + eor #$ff + clc + adc #1 + b3: + rts + b15: + txa + jmp b3 +} +mulu8_sel: { + .label _0 = 9 + .label _1 = 9 + .label select = $b + tya + jsr mul8u + ldy select + beq !e+ + !: + asl _1 + rol _1+1 + dey + bne !- + !e: + lda _1+1 + rts +} +mul8u: { + .label mb = $c + .label res = 9 + .label return = 9 + sta mb + lda #0 + sta mb+1 + sta res + sta res+1 + b1: + cpx #0 + bne b2 + rts + b2: + txa + and #1 + cmp #0 + beq b4 + lda res + clc + adc mb + sta res + lda res+1 + adc mb+1 + sta res+1 + b4: + txa + lsr + tax + asl mb + rol mb+1 + jmp b1 +} +div16u: { + .label return = $e + jsr divr16u + rts +} +divr16u: { + .label rem = 2 + .label dividend = 5 + .label quotient = $e + .label return = $e + ldx #0 + txa + sta quotient + sta quotient+1 + lda #PI2_u4f12 + sta dividend+1 + txa + sta rem + sta rem+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 #>main.wavelength + bcc b3 + bne !+ + lda rem + cmp #main.wavelength + sta rem+1 + b3: + inx + cpx #$10 + bne b1 + rts +} diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.cfg b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.cfg new file mode 100644 index 000000000..89eeaaad0 --- /dev/null +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.cfg @@ -0,0 +1,295 @@ +@begin: scope:[] from + [0] phi() [ ] ( ) + to:@29 +@29: scope:[] from @begin + [1] phi() [ ] ( ) + [2] call main param-assignment [ ] ( ) + to:@end +@end: scope:[] from @29 + [3] phi() [ ] ( ) +main: scope:[main] from @29 + [4] phi() [ ] ( main:2 [ ] ) + [5] call sin8s_gen param-assignment [ ] ( main:2 [ ] ) + to:main::@5 +main::@5: scope:[main] from main + [6] phi() [ ] ( main:2 [ ] ) + [7] call print_cls param-assignment [ ] ( main:2 [ ] ) + to:main::@1 +main::@1: scope:[main] from main::@5 main::@8 + [8] (byte*) char_cursor#42 ← phi( main::@5/(const byte*) SCREEN#0 main::@8/(byte*) char_cursor#19 ) [ main::i#2 char_cursor#42 ] ( main:2 [ main::i#2 char_cursor#42 ] ) + [8] (byte) main::i#2 ← phi( main::@5/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@8/(byte) main::i#1 ) [ main::i#2 char_cursor#42 ] ( main:2 [ main::i#2 char_cursor#42 ] ) + [9] (signed byte) main::sb#0 ← *((const signed byte[120]) main::sintab2#0 + (byte) main::i#2) [ main::i#2 char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 char_cursor#42 main::sb#0 ] ) + [10] if((signed byte) main::sb#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::i#2 char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 char_cursor#42 main::sb#0 ] ) + to:main::@3 +main::@3: scope:[main] from main::@1 + [11] phi() [ main::i#2 char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 char_cursor#42 main::sb#0 ] ) + [12] call print_str param-assignment [ main::i#2 char_cursor#19 main::sb#0 ] ( main:2 [ main::i#2 char_cursor#19 main::sb#0 ] ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@3 + [13] (byte*) char_cursor#41 ← phi( main::@1/(byte*) char_cursor#42 main::@3/(byte*) char_cursor#19 ) [ main::i#2 main::sb#0 char_cursor#41 ] ( main:2 [ main::i#2 main::sb#0 char_cursor#41 ] ) + [14] (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0 [ main::i#2 char_cursor#41 print_sbyte::b#1 ] ( main:2 [ main::i#2 char_cursor#41 print_sbyte::b#1 ] ) + [15] call print_sbyte param-assignment [ main::i#2 char_cursor#10 ] ( main:2 [ main::i#2 char_cursor#10 ] ) + to:main::@7 +main::@7: scope:[main] from main::@2 + [16] phi() [ main::i#2 char_cursor#10 ] ( main:2 [ main::i#2 char_cursor#10 ] ) + [17] call print_str param-assignment [ main::i#2 char_cursor#19 ] ( main:2 [ main::i#2 char_cursor#19 ] ) + to:main::@8 +main::@8: scope:[main] from main::@7 + [18] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 char_cursor#19 ] ( main:2 [ main::i#1 char_cursor#19 ] ) + [19] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 120) goto main::@1 [ main::i#1 char_cursor#19 ] ( main:2 [ main::i#1 char_cursor#19 ] ) + to:main::@return +main::@return: scope:[main] from main::@8 + [20] return [ ] ( main:2 [ ] ) + to:@return +print_str: scope:[print_str] from main::@3 main::@7 + [21] (byte*) char_cursor#44 ← phi( main::@3/(byte*) char_cursor#42 main::@7/(byte*) char_cursor#10 ) [ print_str::str#5 char_cursor#44 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 print_str::str#5 char_cursor#44 ] main:2::print_str:17 [ main::i#2 print_str::str#5 char_cursor#44 ] ) + [21] (byte*) print_str::str#5 ← phi( main::@3/(const string) main::str1 main::@7/(const string) main::str ) [ print_str::str#5 char_cursor#44 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 print_str::str#5 char_cursor#44 ] main:2::print_str:17 [ main::i#2 print_str::str#5 char_cursor#44 ] ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + [22] (byte*) char_cursor#19 ← phi( print_str/(byte*) char_cursor#44 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#19 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 print_str::str#3 ] main:2::print_str:17 [ main::i#2 char_cursor#19 print_str::str#3 ] ) + [22] (byte*) print_str::str#3 ← phi( print_str/(byte*) print_str::str#5 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#19 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 print_str::str#3 ] main:2::print_str:17 [ main::i#2 char_cursor#19 print_str::str#3 ] ) + [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ char_cursor#19 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 print_str::str#3 ] main:2::print_str:17 [ main::i#2 char_cursor#19 print_str::str#3 ] ) + to:print_str::@return +print_str::@return: scope:[print_str] from print_str::@1 + [24] return [ char_cursor#19 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 ] main:2::print_str:17 [ main::i#2 char_cursor#19 ] ) + to:@return +print_str::@2: scope:[print_str] from print_str::@1 + [25] *((byte*) char_cursor#19) ← *((byte*) print_str::str#3) [ char_cursor#19 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 print_str::str#3 ] main:2::print_str:17 [ main::i#2 char_cursor#19 print_str::str#3 ] ) + [26] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#19 [ print_str::str#3 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 print_str::str#3 char_cursor#1 ] main:2::print_str:17 [ main::i#2 print_str::str#3 char_cursor#1 ] ) + [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 print_str::str#0 char_cursor#1 ] main:2::print_str:17 [ main::i#2 print_str::str#0 char_cursor#1 ] ) + to:print_str::@1 +print_sbyte: scope:[print_sbyte] from main::@2 + [28] if((signed byte) print_sbyte::b#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 [ char_cursor#41 print_sbyte::b#1 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#41 print_sbyte::b#1 ] ) + to:print_sbyte::@2 +print_sbyte::@2: scope:[print_sbyte] from print_sbyte + [29] phi() [ char_cursor#41 print_sbyte::b#1 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#41 print_sbyte::b#1 ] ) + [30] call print_char param-assignment [ print_sbyte::b#1 char_cursor#10 ] ( main:2::print_sbyte:15 [ main::i#2 print_sbyte::b#1 char_cursor#10 ] ) + to:print_sbyte::@4 +print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@2 + [31] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ char_cursor#10 print_sbyte::b#0 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#10 print_sbyte::b#0 ] ) + to:print_sbyte::@1 +print_sbyte::@1: scope:[print_sbyte] from print_sbyte print_sbyte::@4 + [32] (byte*) char_cursor#37 ← phi( print_sbyte/(byte*) char_cursor#41 print_sbyte::@4/(byte*) char_cursor#10 ) [ print_sbyte::b#3 char_cursor#37 ] ( main:2::print_sbyte:15 [ main::i#2 print_sbyte::b#3 char_cursor#37 ] ) + [32] (signed byte) print_sbyte::b#3 ← phi( print_sbyte/(signed byte) print_sbyte::b#1 print_sbyte::@4/(signed byte) print_sbyte::b#0 ) [ print_sbyte::b#3 char_cursor#37 ] ( main:2::print_sbyte:15 [ main::i#2 print_sbyte::b#3 char_cursor#37 ] ) + [33] call print_byte param-assignment [ char_cursor#10 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#10 ] ) + to:print_sbyte::@return +print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 + [34] return [ char_cursor#10 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#10 ] ) + to:@return +print_byte: scope:[print_byte] from print_sbyte::@1 + [35] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_sbyte::b#3 char_cursor#37 print_byte::$0 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 char_cursor#37 print_byte::$0 ] ) + [36] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 char_cursor#37 print_char::ch#1 ] ) + [37] call print_char param-assignment [ char_cursor#10 print_sbyte::b#3 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 print_sbyte::b#3 ] ) + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [38] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 print_byte::$2 ] ) + [39] (byte) print_char::ch#2 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 print_char::ch#2 ] ) + [40] call print_char param-assignment [ char_cursor#10 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 ] ) + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [41] return [ char_cursor#10 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 ] ) + to:@return +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@2 + [42] (byte*) char_cursor#27 ← phi( print_byte/(byte*) char_cursor#37 print_byte::@1/(byte*) char_cursor#10 print_sbyte::@2/(byte*) char_cursor#41 ) [ print_char::ch#3 char_cursor#27 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 print_char::ch#3 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 print_char::ch#3 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 print_char::ch#3 char_cursor#27 ] ) + [42] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sbyte::@2/(byte) '-' ) [ print_char::ch#3 char_cursor#27 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 print_char::ch#3 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 print_char::ch#3 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 print_char::ch#3 char_cursor#27 ] ) + [43] *((byte*) char_cursor#27) ← (byte) print_char::ch#3 [ char_cursor#27 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 char_cursor#27 ] ) + [44] (byte*) char_cursor#10 ← ++ (byte*) char_cursor#27 [ char_cursor#10 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 char_cursor#10 ] ) + to:print_char::@return +print_char::@return: scope:[print_char] from print_char + [45] return [ char_cursor#10 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 char_cursor#10 ] ) + to:@return +print_cls: scope:[print_cls] from main::@5 + [46] phi() [ ] ( main:2::print_cls:7 [ ] ) + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + [47] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) SCREEN#0 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) + [48] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) + [49] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) + [50] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + [51] return [ ] ( main:2::print_cls:7 [ ] ) + to:@return +sin8s_gen: scope:[sin8s_gen] from main + [52] phi() [ ] ( main:2::sin8s_gen:5 [ ] ) + [53] call div16u param-assignment [ div16u::return#0 ] ( main:2::sin8s_gen:5 [ div16u::return#0 ] ) + [54] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8s_gen:5 [ div16u::return#2 ] ) + to:sin8s_gen::@3 +sin8s_gen::@3: scope:[sin8s_gen] from sin8s_gen + [55] (word) sin8s_gen::step#0 ← (word) div16u::return#2 [ sin8s_gen::step#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 ] ) + to:sin8s_gen::@1 +sin8s_gen::@1: scope:[sin8s_gen] from sin8s_gen::@3 sin8s_gen::@4 + [56] (word) sin8s_gen::i#2 ← phi( sin8s_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s_gen::@4/(word) sin8s_gen::i#1 ) [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ) + [56] (signed byte*) sin8s_gen::sintab#2 ← phi( sin8s_gen::@3/(const signed byte[120]) main::sintab2#0 sin8s_gen::@4/(signed byte*) sin8s_gen::sintab#0 ) [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ) + [56] (word) sin8s_gen::x#2 ← phi( sin8s_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s_gen::@4/(word) sin8s_gen::x#1 ) [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ) + [57] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#0 ] ) + [58] call sin8s param-assignment [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#1 ] ) + [59] (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#1 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#0 ] ) + to:sin8s_gen::@4 +sin8s_gen::@4: scope:[sin8s_gen] from sin8s_gen::@1 + [60] (signed byte~) sin8s_gen::$1 ← (signed byte) sin8s::return#0 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s_gen::$1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s_gen::$1 ] ) + [61] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ) + [62] (signed byte*) sin8s_gen::sintab#0 ← ++ (signed byte*) sin8s_gen::sintab#2 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::i#2 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::i#2 sin8s_gen::sintab#0 ] ) + [63] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ) + [64] (word) sin8s_gen::i#1 ← ++ (word) sin8s_gen::i#2 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ) + [65] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ) + to:sin8s_gen::@return +sin8s_gen::@return: scope:[sin8s_gen] from sin8s_gen::@4 + [66] return [ ] ( main:2::sin8s_gen:5 [ ] ) + to:@return +sin8s: scope:[sin8s] from sin8s_gen::@1 + [67] if((word) sin8s::x#0<(const word) PI_u4f12#0) goto sin8s::@1 [ sin8s::x#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#0 ] ) + to:sin8s::@4 +sin8s::@4: scope:[sin8s] from sin8s + [68] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12#0 [ sin8s::x#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#1 ] ) + to:sin8s::@1 +sin8s::@1: scope:[sin8s] from sin8s sin8s::@4 + [69] (byte) sin8s::isUpper#2 ← phi( sin8s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ sin8s::x#4 sin8s::isUpper#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#4 sin8s::isUpper#2 ] ) + [69] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#0 sin8s::@4/(word) sin8s::x#1 ) [ sin8s::x#4 sin8s::isUpper#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#4 sin8s::isUpper#2 ] ) + [70] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#4 sin8s::isUpper#2 ] ) + to:sin8s::@5 +sin8s::@5: scope:[sin8s] from sin8s::@1 + [71] (word) sin8s::x#2 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 [ sin8s::isUpper#2 sin8s::x#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x#2 ] ) + to:sin8s::@2 +sin8s::@2: scope:[sin8s] from sin8s::@1 sin8s::@5 + [72] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@5/(word) sin8s::x#2 ) [ sin8s::isUpper#2 sin8s::x#6 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x#6 ] ) + [73] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin8s::isUpper#2 sin8s::$6 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::$6 ] ) + [74] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 [ sin8s::isUpper#2 sin8s::x1#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 ] ) + [75] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 ] ) + [76] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 mulu8_sel::v2#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 mulu8_sel::v2#0 ] ) + [77] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ) + [78] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#0 ] ) + to:sin8s::@8 +sin8s::@8: scope:[sin8s] from sin8s::@2 + [79] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x2#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x2#0 ] ) + [80] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 ] ) + [81] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 mulu8_sel::v2#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 mulu8_sel::v2#1 ] ) + [82] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ) + [83] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#1 ] ) + to:sin8s::@9 +sin8s::@9: scope:[sin8s] from sin8s::@8 + [84] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 ] ) + [85] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v1#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v1#2 ] ) + [86] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::x3#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::x3#0 ] ) + [87] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#2 ] ) + to:sin8s::@10 +sin8s::@10: scope:[sin8s] from sin8s::@9 + [88] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::x3_6#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::x3_6#0 ] ) + [89] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) + [90] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 ] ) + [91] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 mulu8_sel::v2#3 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 mulu8_sel::v2#3 ] ) + [92] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::usinx#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::usinx#0 ] ) + [93] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#10 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#10 ] ) + to:sin8s::@11 +sin8s::@11: scope:[sin8s] from sin8s::@10 + [94] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 sin8s::x4#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 sin8s::x4#0 ] ) + [95] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#4 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#4 ] ) + [96] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v1#4 mulu8_sel::v2#4 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v1#4 mulu8_sel::v2#4 ] ) + [97] call mulu8_sel param-assignment [ sin8s::isUpper#2 mulu8_sel::return#12 sin8s::usinx#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 mulu8_sel::return#12 sin8s::usinx#0 ] ) + [98] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#11 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#11 ] ) + to:sin8s::@12 +sin8s::@12: scope:[sin8s] from sin8s::@11 + [99] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 [ sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5#0 ] ) + [100] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5_128#0 ] ) + [101] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#2 sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#1 ] ) + [102] if((byte) sin8s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@15 [ sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::usinx#1 ] ) + to:sin8s::@6 +sin8s::@6: scope:[sin8s] from sin8s::@12 + [103] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#1 [ sin8s::sinx#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::sinx#1 ] ) + to:sin8s::@3 +sin8s::@3: scope:[sin8s] from sin8s::@15 sin8s::@6 + [104] (signed byte) sin8s::return#1 ← phi( sin8s::@15/(signed byte~) sin8s::return#5 sin8s::@6/(signed byte) sin8s::sinx#1 ) [ sin8s::return#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#1 ] ) + to:sin8s::@return +sin8s::@return: scope:[sin8s] from sin8s::@3 + [105] return [ sin8s::return#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#1 ] ) + to:@return +sin8s::@15: scope:[sin8s] from sin8s::@12 + [106] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#1 [ sin8s::return#5 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#5 ] ) + to:sin8s::@3 +mulu8_sel: scope:[mulu8_sel] from sin8s::@10 sin8s::@11 sin8s::@2 sin8s::@8 sin8s::@9 + [107] (byte) mulu8_sel::select#5 ← phi( sin8s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] ) + [107] (byte) mulu8_sel::v2#5 ← phi( sin8s::@10/(byte) mulu8_sel::v2#3 sin8s::@11/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 sin8s::@8/(byte) mulu8_sel::v2#1 sin8s::@9/(word/signed word/dword/signed dword) 256/(byte/signed byte/word/signed word/dword/signed dword) 6 ) [ mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] ) + [107] (byte) mulu8_sel::v1#5 ← phi( sin8s::@10/(byte) mulu8_sel::v1#3 sin8s::@11/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 sin8s::@8/(byte) mulu8_sel::v1#1 sin8s::@9/(byte) mulu8_sel::v1#2 ) [ mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] ) + [108] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 [ mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] ) + [109] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 [ mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] ) + [110] call mul8u param-assignment [ mulu8_sel::select#5 mul8u::res#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] ) + [111] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] ) + to:mulu8_sel::@2 +mulu8_sel::@2: scope:[mulu8_sel] from mulu8_sel + [112] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) + [113] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::$1 ] ) + [114] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#12 ] ) + to:mulu8_sel::@return +mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel::@2 + [115] return [ mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#12 ] ) + to:@return +mul8u: scope:[mul8u] from mulu8_sel + [116] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] ) + to:mul8u::@1 +mul8u::@1: scope:[mul8u] from mul8u mul8u::@4 + [117] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ) + [117] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 ) [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ) + [117] (byte) mul8u::a#2 ← phi( mul8u/(byte) mul8u::a#1 mul8u::@4/(byte) mul8u::a#0 ) [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ) + [118] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ) + to:mul8u::@return +mul8u::@return: scope:[mul8u] from mul8u::@1 + [119] return [ mul8u::res#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] ) + to:@return +mul8u::@2: scope:[mul8u] from mul8u::@1 + [120] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ) + [121] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ) + to:mul8u::@7 +mul8u::@7: scope:[mul8u] from mul8u::@2 + [122] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) + to:mul8u::@4 +mul8u::@4: scope:[mul8u] from mul8u::@2 mul8u::@7 + [123] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 ) [ mul8u::a#2 mul8u::mb#2 mul8u::res#6 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#6 ] ) + [124] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] ) + [125] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] ) + to:mul8u::@1 +div16u: scope:[div16u] from sin8s_gen + [126] phi() [ ] ( main:2::sin8s_gen:5::div16u:53 [ ] ) + [127] call divr16u param-assignment [ divr16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53 [ divr16u::return#0 ] ) + [128] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8s_gen:5::div16u:53 [ divr16u::return#2 ] ) + to:div16u::@2 +div16u::@2: scope:[div16u] from div16u + [129] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53 [ div16u::return#0 ] ) + to:div16u::@return +div16u::@return: scope:[div16u] from div16u::@2 + [130] return [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53 [ div16u::return#0 ] ) + to:@return +divr16u: scope:[divr16u] from div16u + [131] phi() [ ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ ] ) + to:divr16u::@1 +divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 + [132] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ) + [132] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ) + [132] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ) + [132] (word) divr16u::rem#4 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::rem#10 ) [ divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ) + [133] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) + [134] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) + [135] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) + [136] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) + to:divr16u::@4 +divr16u::@4: scope:[divr16u] from divr16u::@1 + [137] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) + to:divr16u::@2 +divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 + [138] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#5 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#5 ] ) + [139] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 ] ) + [140] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) + [141] if((word) divr16u::rem#5<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) + to:divr16u::@5 +divr16u::@5: scope:[divr16u] from divr16u::@2 + [142] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#2 ] ) + [143] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) + to:divr16u::@3 +divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 + [144] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::return#0 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] ) + [144] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::return#0 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] ) + [145] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ) + [146] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ) + to:divr16u::@return +divr16u::@return: scope:[divr16u] from divr16u::@3 + [147] return [ divr16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 ] ) + to:@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.log b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.log new file mode 100644 index 000000000..4e4d90b89 --- /dev/null +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.log @@ -0,0 +1,8600 @@ +PARSING src/test/java/dk/camelot64/kickc/test/kc/sinusgen8.kc +import "sinus.kc" +import "print.kc" + +void main() { + word wavelength = 120; + signed byte[120] sintab2; + sin8s_gen(sintab2, wavelength); + print_cls(); + for(byte i: 0..119) { + signed byte sb = sintab2[i]; + if(sb>=0) { + print_str(" @"); + } + print_sbyte(sb); + print_str(" @"); + } +} + +Importing sinus.kc +PARSING src/test/java/dk/camelot64/kickc/test/kc/sinus.kc +// 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 "division.kc" +import "multiply.kc" + +// PI*2 in u[4.28] format +const dword PI2_u4f28 = $6487ed51; +// PI in u[4.28] format +const dword PI_u4f28 = $3243f6a9; +// PI/2 in u[4.28] format +const dword PI_HALF_u4f28 = $1921FB54; + +// PI*2 in u[4.12] format +const word PI2_u4f12 = $6488; +// PI in u[4.12] format +const word PI_u4f12 = $3244; +// PI/2 in u[4.12] format +const word PI_HALF_u4f12 = $1922; + +// 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_gen(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= PI_u4f28 ) { + x = x - PI_u4f28; + isUpper = 1; + } + if(x >= PI_HALF_u4f28 ) { + x = PI_u4f28 - 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; +} + +// Calculate signed byte sinus sin(x) +// x: unsigned word input u[4.12] in the interval $0000 - PI2_u4f12 +// result: signed byte sin(x) s[0.7] - using the full range -$7f - $7f +signed byte sin8s(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; + byte x1 = >x<<3; // u[1.7] + byte x2 = mulu8_sel(x1, x1, 0); // u[2.6] x^2 + byte x3 = mulu8_sel(x2, x1, 1); // u[2.6] x^3 + byte x3_6 = mulu8_sel(x3, $100/6, 1); // u[1.7] x^3/6; + byte usinx = x1 - x3_6; // u[1.7] x - x^3/6 + byte x4 = mulu8_sel(x3, x1, 0); // u[3.5] x^4 + byte x5 = mulu8_sel(x4, x1, 0); // u[4.4] x^5 + byte x5_128 = x5>>4; // // u[1.7] x^5/128 -- much more efficient than mul_u16_sel(x5, $10000/128, 3); + usinx = usinx + x5_128; // u[1.7] (first bit is always zero) + signed byte sinx = (signed byte)usinx; // s[0.7] + if(isUpper!=0) { + sinx = -(signed byte)usinx; // s[0.7]; + } + return sinx; +} + + +// Generate (small) signed word sinus table - in the limited -$fff - $fff range +// sintab - the table to generate into +// wavelength - the number of sinus points in a total sinus wavelength (the size of the table) +void sin16ss_gen(signed word* sintab, word wavelength) { + // u[4.12] 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; ix; // u[4.12] + byte isUpper = 0; + if(x1 >= PI_u4f12 ) { + x1 = x1 - PI_u4f12; + isUpper = 1; + } + if(x1 >= PI_HALF_u4f12 ) { + x1 = PI_u4f12 - x1; + } + // s[4.12] sinx = x - x^3/6 + x5/128; + word x2 = mulu16_sel(x1, x1, 4); // u[4.12] + word x3 = mulu16_sel(x2, x1, 4); // u[4.12] + word x3_6 = mulu16_sel(x3, $10000/6, 0); // u[4.12] - u[0.16] div6 = 1/6; + word usinx = x1 - x3_6; // u[4.12] + word x4 = mulu16_sel(x3, x1, 4); // u[4.12] + word x5 = mulu16_sel(x4, x1, 4); // u[4.12] + word x5_128 = mulu16_sel(x5, $10000/128, 0); // u[4.12] - u[0.16] div128 = 1/128; + usinx = usinx + x5_128; + signed word sinx; + if(isUpper!=0) { + sinx = -(signed word)usinx; // s[4.12]; + } else { + sinx = (signed word)usinx; // s[4.12] + } + *sintab = sinx; + sintab = sintab + 2; + x = x + step; + } +} + +// Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. +// The select parameter indicates how many of the highest bits of the 32-bit result to skip +word mulu16_sel(word v1, word v2, byte select) { + return >mul16u(v1, v2)<mul8u(v1, v2)<=divisor) { + quotient++; + rem = rem - divisor; + } + } + rem8u = rem; + return quotient; +} + +// Remainder after unsigned 16-bit division +word rem16u = 0; + +// Performs division on two 16 bit unsigned words and an initial remainder +// Returns the quotient dividend/divisor. +// The final remainder will be set into the global variable rem16u +// Implemented using simple binary division +word divr16u(word dividend, word divisor, word rem) { + word quotient = 0; + for( byte i : 0..15) { + rem = rem << 1; + if( (>dividend & $80) != 0 ) { + rem = rem | 1; + } + dividend = dividend << 1; + quotient = quotient << 1; + if(rem>=divisor) { + quotient++; + rem = rem - divisor; + } + } + rem16u = rem; + return quotient; +} + +// Performs division on two 16 bit unsigned words +// Returns the quotient dividend/divisor. +// The remainder will be set into the global variable rem16u +// Implemented using simple binary division +word div16u(word dividend, word divisor) { + return divr16u(dividend, divisor, 0); +} + +// Divide unsigned 32-bit dword dividend with a 16-bit word divisor +// The 16-bit word remainder can be found in rem16u after the division +dword div32u16u(dword dividend, word divisor) { + word quotient_hi = divr16u(>dividend, divisor, 0); + word quotient_lo = divr16u(>1; + mb = mb<<1; + } + return res; +} + +// Multiply of two signed bytes to a signed word +// Fixes offsets introduced by using unsigned multiplication +signed word mul8s(signed byte a, signed byte b) { + word m = mul8u((byte)a, (byte) b); + if(a<0) { + >m = (>m)-(byte)b; + } + if(b<0) { + >m = (>m)-(byte)a; + } + return (signed word)m; +} + +// Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word +dword mul16u(word a, word b) { + dword res = 0; + dword mb = b; + while(a!=0) { + if( (a&1) != 0) { + res = res + mb; + } + a = a>>1; + mb = mb<<1; + } + return res; +} + +// Multiply of two signed words to a signed double word +// Fixes offsets introduced by using unsigned multiplication +signed dword mul16s(signed word a, signed word b) { + dword m = mul16u((word)a, (word) b); + if(a<0) { + >m = (>m)-(word)b; + } + if(b<0) { + >m = (>m)-(word)a; + } + return (signed dword)m; +} + +Adding pre/post-modifier (word) sin16s_gen::i ← ++ (word) sin16s_gen::i +Adding pre/post-modifier (signed byte*) sin8s_gen::sintab ← ++ (signed byte*) sin8s_gen::sintab +Adding pre/post-modifier (word) sin8s_gen::i ← ++ (word) sin8s_gen::i +Adding pre/post-modifier (word) sin16ss_gen::i ← ++ (word) sin16ss_gen::i +Importing print.kc +PARSING src/test/java/dk/camelot64/kickc/test/kc/print.kc + +const byte* SCREEN = $0400; + +byte* line_cursor = SCREEN; +byte* char_cursor = line_cursor; + +// Print a zero-terminated string +void print_str(byte* str) { + while(*str!='@') { + *(char_cursor++) = *(str++); + } +} + +// Print a newline +void print_ln() { + do { + line_cursor = line_cursor + $28; + } while (line_cursorw); + print_byte(dw); + print_word(>4]); + print_char(hextab[b&$f]); +} + +// Print a single char +void print_char(byte ch) { + *(char_cursor++) = ch; +} + +// Clear the screen +void print_cls() { + for(byte* sc=SCREEN; sc!=SCREEN+1000; sc++) { + *sc = ' '; + } + line_cursor = SCREEN; + char_cursor = line_cursor; +} + + + +Adding pre/post-modifier (byte*) char_cursor ← ++ (byte*) char_cursor +Adding pre/post-modifier (byte*) print_str::str ← ++ (byte*) print_str::str +Adding pre/post-modifier (byte*) char_cursor ← ++ (byte*) char_cursor +Adding pre/post-modifier (byte*) print_cls::sc ← ++ (byte*) print_cls::sc + +STATEMENTS + (byte) rem8u ← (byte/signed byte/word/signed word/dword/signed dword) 0 +proc (byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor) + (byte~) div8u::$0 ← call divr8u (byte) div8u::dividend (byte) div8u::divisor (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) div8u::return ← (byte~) div8u::$0 + goto div8u::@return +div8u::@return: + (byte) div8u::return ← (byte) div8u::return + return (byte) div8u::return +endproc // div8u() +proc (byte()) divr8u((byte) divr8u::dividend , (byte) divr8u::divisor , (byte) divr8u::rem) + (byte) divr8u::quotient ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) divr8u::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 +divr8u::@1: + (byte~) divr8u::$0 ← (byte) divr8u::rem << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) divr8u::rem ← (byte~) divr8u::$0 + (byte~) divr8u::$1 ← (byte) divr8u::dividend & (byte/word/signed word/dword/signed dword) 128 + (boolean~) divr8u::$2 ← (byte~) divr8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) divr8u::$3 ← ! (boolean~) divr8u::$2 + if((boolean~) divr8u::$3) goto divr8u::@2 + (byte~) divr8u::$4 ← (byte) divr8u::rem | (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) divr8u::rem ← (byte~) divr8u::$4 +divr8u::@2: + (byte~) divr8u::$5 ← (byte) divr8u::dividend << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) divr8u::dividend ← (byte~) divr8u::$5 + (byte~) divr8u::$6 ← (byte) divr8u::quotient << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) divr8u::quotient ← (byte~) divr8u::$6 + (boolean~) divr8u::$7 ← (byte) divr8u::rem >= (byte) divr8u::divisor + (boolean~) divr8u::$8 ← ! (boolean~) divr8u::$7 + if((boolean~) divr8u::$8) goto divr8u::@3 + (byte) divr8u::quotient ← ++ (byte) divr8u::quotient + (byte/signed byte/word/signed word/dword/signed dword~) divr8u::$9 ← (byte) divr8u::rem - (byte) divr8u::divisor + (byte) divr8u::rem ← (byte/signed byte/word/signed word/dword/signed dword~) divr8u::$9 +divr8u::@3: + (byte) divr8u::i ← ++ (byte) divr8u::i + (boolean~) divr8u::$10 ← (byte) divr8u::i != (byte/signed byte/word/signed word/dword/signed dword) 8 + if((boolean~) divr8u::$10) goto divr8u::@1 + (byte) rem8u ← (byte) divr8u::rem + (byte) divr8u::return ← (byte) divr8u::quotient + goto divr8u::@return +divr8u::@return: + (byte) divr8u::return ← (byte) divr8u::return + return (byte) divr8u::return +endproc // divr8u() + (word) rem16u ← (byte/signed byte/word/signed word/dword/signed dword) 0 +proc (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) + (word) divr16u::quotient ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) divr16u::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 +divr16u::@1: + (word~) divr16u::$0 ← (word) divr16u::rem << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) divr16u::rem ← (word~) divr16u::$0 + (byte~) divr16u::$1 ← > (word) divr16u::dividend + (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 + (boolean~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) divr16u::$4 ← ! (boolean~) divr16u::$3 + if((boolean~) divr16u::$4) goto divr16u::@2 + (word~) divr16u::$5 ← (word) divr16u::rem | (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) divr16u::rem ← (word~) divr16u::$5 +divr16u::@2: + (word~) divr16u::$6 ← (word) divr16u::dividend << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) divr16u::dividend ← (word~) divr16u::$6 + (word~) divr16u::$7 ← (word) divr16u::quotient << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) divr16u::quotient ← (word~) divr16u::$7 + (boolean~) divr16u::$8 ← (word) divr16u::rem >= (word) divr16u::divisor + (boolean~) divr16u::$9 ← ! (boolean~) divr16u::$8 + if((boolean~) divr16u::$9) goto divr16u::@3 + (word) divr16u::quotient ← ++ (word) divr16u::quotient + (word~) divr16u::$10 ← (word) divr16u::rem - (word) divr16u::divisor + (word) divr16u::rem ← (word~) divr16u::$10 +divr16u::@3: + (byte) divr16u::i ← ++ (byte) divr16u::i + (boolean~) divr16u::$11 ← (byte) divr16u::i != (byte/signed byte/word/signed word/dword/signed dword) 16 + if((boolean~) divr16u::$11) goto divr16u::@1 + (word) rem16u ← (word) divr16u::rem + (word) divr16u::return ← (word) divr16u::quotient + goto divr16u::@return +divr16u::@return: + (word) divr16u::return ← (word) divr16u::return + return (word) divr16u::return +endproc // divr16u() +proc (word()) div16u((word) div16u::dividend , (word) div16u::divisor) + (word~) div16u::$0 ← call divr16u (word) div16u::dividend (word) div16u::divisor (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) div16u::return ← (word~) div16u::$0 + goto div16u::@return +div16u::@return: + (word) div16u::return ← (word) div16u::return + return (word) div16u::return +endproc // div16u() +proc (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) + (word~) div32u16u::$0 ← > (dword) div32u16u::dividend + (word~) div32u16u::$1 ← call divr16u (word~) div32u16u::$0 (word) div32u16u::divisor (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) div32u16u::quotient_hi ← (word~) div32u16u::$1 + (word~) div32u16u::$2 ← < (dword) div32u16u::dividend + (word~) div32u16u::$3 ← call divr16u (word~) div32u16u::$2 (word) div32u16u::divisor (word) rem16u + (word) div32u16u::quotient_lo ← (word~) div32u16u::$3 + (dword) div32u16u::quotient ← { (word) div32u16u::quotient_hi, (word) div32u16u::quotient_lo } + (dword) div32u16u::return ← (dword) div32u16u::quotient + goto div32u16u::@return +div32u16u::@return: + (dword) div32u16u::return ← (dword) div32u16u::return + return (dword) div32u16u::return +endproc // div32u16u() + (signed byte) rem8s ← (byte/signed byte/word/signed word/dword/signed dword) 0 +proc (signed byte()) div8s((signed byte) div8s::dividend , (signed byte) div8s::divisor) + (byte) div8s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) div8s::dividendu ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div8s::$0 ← (signed byte) div8s::dividend < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div8s::$1 ← ! (boolean~) div8s::$0 + if((boolean~) div8s::$1) goto div8s::@1 + (signed byte~) div8s::$2 ← - (signed byte) div8s::dividend + (byte~) div8s::$3 ← ((byte)) (signed byte~) div8s::$2 + (byte) div8s::dividendu ← (byte~) div8s::$3 + (byte) div8s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 1 + goto div8s::@2 +div8s::@1: + (byte~) div8s::$4 ← ((byte)) (signed byte) div8s::dividend + (byte) div8s::dividendu ← (byte~) div8s::$4 +div8s::@2: + (byte) div8s::divisoru ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div8s::$5 ← (signed byte) div8s::divisor < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div8s::$6 ← ! (boolean~) div8s::$5 + if((boolean~) div8s::$6) goto div8s::@3 + (signed byte~) div8s::$7 ← - (signed byte) div8s::divisor + (byte~) div8s::$8 ← ((byte)) (signed byte~) div8s::$7 + (byte) div8s::divisoru ← (byte~) div8s::$8 + (byte~) div8s::$9 ← (byte) div8s::neg ^ (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) div8s::neg ← (byte~) div8s::$9 + goto div8s::@4 +div8s::@3: + (byte~) div8s::$10 ← ((byte)) (signed byte) div8s::divisor + (byte) div8s::divisoru ← (byte~) div8s::$10 +div8s::@4: + (byte~) div8s::$11 ← call div8u (byte) div8s::dividendu (byte) div8s::divisoru + (byte) div8s::resultu ← (byte~) div8s::$11 + (boolean~) div8s::$12 ← (byte) div8s::neg == (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div8s::$13 ← ! (boolean~) div8s::$12 + if((boolean~) div8s::$13) goto div8s::@5 + (signed byte~) div8s::$14 ← ((signed byte)) (byte) rem8u + (signed byte) rem8s ← (signed byte~) div8s::$14 + (signed byte~) div8s::$15 ← ((signed byte)) (byte) div8s::resultu + (signed byte) div8s::return ← (signed byte~) div8s::$15 + goto div8s::@return + goto div8s::@6 +div8s::@5: + (signed byte~) div8s::$16 ← ((signed byte)) (byte) rem8u + (signed byte~) div8s::$17 ← - (signed byte~) div8s::$16 + (signed byte) rem8s ← (signed byte~) div8s::$17 + (signed byte~) div8s::$18 ← ((signed byte)) (byte) div8s::resultu + (signed byte~) div8s::$19 ← - (signed byte~) div8s::$18 + (signed byte) div8s::return ← (signed byte~) div8s::$19 + goto div8s::@return +div8s::@6: +div8s::@return: + (signed byte) div8s::return ← (signed byte) div8s::return + return (signed byte) div8s::return +endproc // div8s() + (signed word) rem16s ← (byte/signed byte/word/signed word/dword/signed dword) 0 +proc (signed word()) div16s((signed word) div16s::dividend , (signed word) div16s::divisor) + (byte) div16s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) div16s::dividendu ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div16s::$0 ← (signed word) div16s::dividend < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div16s::$1 ← ! (boolean~) div16s::$0 + if((boolean~) div16s::$1) goto div16s::@1 + (signed word~) div16s::$2 ← - (signed word) div16s::dividend + (word~) div16s::$3 ← ((word)) (signed word~) div16s::$2 + (word) div16s::dividendu ← (word~) div16s::$3 + (byte) div16s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 1 + goto div16s::@2 +div16s::@1: + (word~) div16s::$4 ← ((word)) (signed word) div16s::dividend + (word) div16s::dividendu ← (word~) div16s::$4 +div16s::@2: + (word) div16s::divisoru ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div16s::$5 ← (signed word) div16s::divisor < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div16s::$6 ← ! (boolean~) div16s::$5 + if((boolean~) div16s::$6) goto div16s::@3 + (signed word~) div16s::$7 ← - (signed word) div16s::divisor + (word~) div16s::$8 ← ((word)) (signed word~) div16s::$7 + (word) div16s::divisoru ← (word~) div16s::$8 + (byte~) div16s::$9 ← (byte) div16s::neg ^ (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) div16s::neg ← (byte~) div16s::$9 + goto div16s::@4 +div16s::@3: + (word~) div16s::$10 ← ((word)) (signed word) div16s::divisor + (word) div16s::divisoru ← (word~) div16s::$10 +div16s::@4: + (word~) div16s::$11 ← call div16u (word) div16s::dividendu (word) div16s::divisoru + (word) div16s::resultu ← (word~) div16s::$11 + (boolean~) div16s::$12 ← (byte) div16s::neg == (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div16s::$13 ← ! (boolean~) div16s::$12 + if((boolean~) div16s::$13) goto div16s::@5 + (signed word~) div16s::$14 ← ((signed word)) (word) rem16u + (signed word) rem16s ← (signed word~) div16s::$14 + (signed word~) div16s::$15 ← ((signed word)) (word) div16s::resultu + (signed word) div16s::return ← (signed word~) div16s::$15 + goto div16s::@return + goto div16s::@6 +div16s::@5: + (signed word~) div16s::$16 ← ((signed word)) (word) rem16u + (signed word~) div16s::$17 ← - (signed word~) div16s::$16 + (signed word) rem16s ← (signed word~) div16s::$17 + (signed word~) div16s::$18 ← ((signed word)) (word) div16s::resultu + (signed word~) div16s::$19 ← - (signed word~) div16s::$18 + (signed word) div16s::return ← (signed word~) div16s::$19 + goto div16s::@return +div16s::@6: +div16s::@return: + (signed word) div16s::return ← (signed word) div16s::return + return (signed word) div16s::return +endproc // div16s() +proc (word()) mul8u((byte) mul8u::a , (byte) mul8u::b) + (word) mul8u::res ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) mul8u::mb ← (byte) mul8u::b +mul8u::@1: + (boolean~) mul8u::$0 ← (byte) mul8u::a != (byte/signed byte/word/signed word/dword/signed dword) 0 + if((boolean~) mul8u::$0) goto mul8u::@2 + goto mul8u::@3 +mul8u::@2: + (byte~) mul8u::$1 ← (byte) mul8u::a & (byte/signed byte/word/signed word/dword/signed dword) 1 + (boolean~) mul8u::$2 ← (byte~) mul8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mul8u::$3 ← ! (boolean~) mul8u::$2 + if((boolean~) mul8u::$3) goto mul8u::@4 + (word~) mul8u::$4 ← (word) mul8u::res + (word) mul8u::mb + (word) mul8u::res ← (word~) mul8u::$4 +mul8u::@4: + (byte~) mul8u::$5 ← (byte) mul8u::a >> (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mul8u::a ← (byte~) mul8u::$5 + (word~) mul8u::$6 ← (word) mul8u::mb << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) mul8u::mb ← (word~) mul8u::$6 + goto mul8u::@1 +mul8u::@3: + (word) mul8u::return ← (word) mul8u::res + goto mul8u::@return +mul8u::@return: + (word) mul8u::return ← (word) mul8u::return + return (word) mul8u::return +endproc // mul8u() +proc (signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b) + (byte~) mul8s::$0 ← ((byte)) (signed byte) mul8s::a + (byte~) mul8s::$1 ← ((byte)) (signed byte) mul8s::b + (word~) mul8s::$2 ← call mul8u (byte~) mul8s::$0 (byte~) mul8s::$1 + (word) mul8s::m ← (word~) mul8s::$2 + (boolean~) mul8s::$3 ← (signed byte) mul8s::a < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mul8s::$4 ← ! (boolean~) mul8s::$3 + if((boolean~) mul8s::$4) goto mul8s::@1 + (byte~) mul8s::$5 ← > (word) mul8s::m + (byte~) mul8s::$6 ← > (word) mul8s::m + (byte~) mul8s::$7 ← ((byte)) (signed byte) mul8s::b + (byte/signed byte/word/signed word/dword/signed dword~) mul8s::$8 ← (byte~) mul8s::$6 - (byte~) mul8s::$7 + lval((byte~) mul8s::$5) ← (byte/signed byte/word/signed word/dword/signed dword~) mul8s::$8 +mul8s::@1: + (boolean~) mul8s::$9 ← (signed byte) mul8s::b < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mul8s::$10 ← ! (boolean~) mul8s::$9 + if((boolean~) mul8s::$10) goto mul8s::@2 + (byte~) mul8s::$11 ← > (word) mul8s::m + (byte~) mul8s::$12 ← > (word) mul8s::m + (byte~) mul8s::$13 ← ((byte)) (signed byte) mul8s::a + (byte/signed byte/word/signed word/dword/signed dword~) mul8s::$14 ← (byte~) mul8s::$12 - (byte~) mul8s::$13 + lval((byte~) mul8s::$11) ← (byte/signed byte/word/signed word/dword/signed dword~) mul8s::$14 +mul8s::@2: + (signed word~) mul8s::$15 ← ((signed word)) (word) mul8s::m + (signed word) mul8s::return ← (signed word~) mul8s::$15 + goto mul8s::@return +mul8s::@return: + (signed word) mul8s::return ← (signed word) mul8s::return + return (signed word) mul8s::return +endproc // mul8s() +proc (dword()) mul16u((word) mul16u::a , (word) mul16u::b) + (dword) mul16u::res ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (dword) mul16u::mb ← (word) mul16u::b +mul16u::@1: + (boolean~) mul16u::$0 ← (word) mul16u::a != (byte/signed byte/word/signed word/dword/signed dword) 0 + if((boolean~) mul16u::$0) goto mul16u::@2 + goto mul16u::@3 +mul16u::@2: + (byte~) mul16u::$1 ← (word) mul16u::a & (byte/signed byte/word/signed word/dword/signed dword) 1 + (boolean~) mul16u::$2 ← (byte~) mul16u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mul16u::$3 ← ! (boolean~) mul16u::$2 + if((boolean~) mul16u::$3) goto mul16u::@4 + (dword~) mul16u::$4 ← (dword) mul16u::res + (dword) mul16u::mb + (dword) mul16u::res ← (dword~) mul16u::$4 +mul16u::@4: + (word~) mul16u::$5 ← (word) mul16u::a >> (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) mul16u::a ← (word~) mul16u::$5 + (dword~) mul16u::$6 ← (dword) mul16u::mb << (byte/signed byte/word/signed word/dword/signed dword) 1 + (dword) mul16u::mb ← (dword~) mul16u::$6 + goto mul16u::@1 +mul16u::@3: + (dword) mul16u::return ← (dword) mul16u::res + goto mul16u::@return +mul16u::@return: + (dword) mul16u::return ← (dword) mul16u::return + return (dword) mul16u::return +endproc // mul16u() +proc (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) + (word~) mul16s::$0 ← ((word)) (signed word) mul16s::a + (word~) mul16s::$1 ← ((word)) (signed word) mul16s::b + (dword~) mul16s::$2 ← call mul16u (word~) mul16s::$0 (word~) mul16s::$1 + (dword) mul16s::m ← (dword~) mul16s::$2 + (boolean~) mul16s::$3 ← (signed word) mul16s::a < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mul16s::$4 ← ! (boolean~) mul16s::$3 + if((boolean~) mul16s::$4) goto mul16s::@1 + (word~) mul16s::$5 ← > (dword) mul16s::m + (word~) mul16s::$6 ← > (dword) mul16s::m + (word~) mul16s::$7 ← ((word)) (signed word) mul16s::b + (word~) mul16s::$8 ← (word~) mul16s::$6 - (word~) mul16s::$7 + lval((word~) mul16s::$5) ← (word~) mul16s::$8 +mul16s::@1: + (boolean~) mul16s::$9 ← (signed word) mul16s::b < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mul16s::$10 ← ! (boolean~) mul16s::$9 + if((boolean~) mul16s::$10) goto mul16s::@2 + (word~) mul16s::$11 ← > (dword) mul16s::m + (word~) mul16s::$12 ← > (dword) mul16s::m + (word~) mul16s::$13 ← ((word)) (signed word) mul16s::a + (word~) mul16s::$14 ← (word~) mul16s::$12 - (word~) mul16s::$13 + lval((word~) mul16s::$11) ← (word~) mul16s::$14 +mul16s::@2: + (signed dword~) mul16s::$15 ← ((signed dword)) (dword) mul16s::m + (signed dword) mul16s::return ← (signed dword~) mul16s::$15 + goto mul16s::@return +mul16s::@return: + (signed dword) mul16s::return ← (signed dword) mul16s::return + return (signed dword) mul16s::return +endproc // mul16s() + (dword) PI2_u4f28 ← (dword/signed dword) 1686629713 + (dword) PI_u4f28 ← (dword/signed dword) 843314857 + (dword) PI_HALF_u4f28 ← (dword/signed dword) 421657428 + (word) PI2_u4f12 ← (word/signed word/dword/signed dword) 25736 + (word) PI_u4f12 ← (word/signed word/dword/signed dword) 12868 + (word) PI_HALF_u4f12 ← (word/signed word/dword/signed dword) 6434 +proc (void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength) + (dword~) sin16s_gen::$0 ← call div32u16u (dword) PI2_u4f28 (word) sin16s_gen::wavelength + (dword) sin16s_gen::step ← (dword~) sin16s_gen::$0 + (dword) sin16s_gen::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16s_gen::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 +sin16s_gen::@1: + (signed word~) sin16s_gen::$1 ← call sin16s (dword) sin16s_gen::x + *((signed word*) sin16s_gen::sintab) ← (signed word~) sin16s_gen::$1 + (signed word*~) sin16s_gen::$2 ← (signed word*) sin16s_gen::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2 + (signed word*) sin16s_gen::sintab ← (signed word*~) sin16s_gen::$2 + (dword~) sin16s_gen::$3 ← (dword) sin16s_gen::x + (dword) sin16s_gen::step + (dword) sin16s_gen::x ← (dword~) sin16s_gen::$3 + (word) sin16s_gen::i ← ++ (word) sin16s_gen::i + (boolean~) sin16s_gen::$4 ← (word) sin16s_gen::i < (word) sin16s_gen::wavelength + if((boolean~) sin16s_gen::$4) goto sin16s_gen::@1 +sin16s_gen::@return: + return +endproc // sin16s_gen() +proc (void()) sin8s_gen((signed byte*) sin8s_gen::sintab , (word) sin8s_gen::wavelength) + (word~) sin8s_gen::$0 ← call div16u (word) PI2_u4f12 (word) sin8s_gen::wavelength + (word) sin8s_gen::step ← (word~) sin8s_gen::$0 + (word) sin8s_gen::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin8s_gen::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 +sin8s_gen::@1: + (signed byte~) sin8s_gen::$1 ← call sin8s (word) sin8s_gen::x + *((signed byte*) sin8s_gen::sintab) ← (signed byte~) sin8s_gen::$1 + (signed byte*) sin8s_gen::sintab ← ++ (signed byte*) sin8s_gen::sintab + (word~) sin8s_gen::$2 ← (word) sin8s_gen::x + (word) sin8s_gen::step + (word) sin8s_gen::x ← (word~) sin8s_gen::$2 + (word) sin8s_gen::i ← ++ (word) sin8s_gen::i + (boolean~) sin8s_gen::$3 ← (word) sin8s_gen::i < (word) sin8s_gen::wavelength + if((boolean~) sin8s_gen::$3) goto sin8s_gen::@1 +sin8s_gen::@return: + return +endproc // sin8s_gen() +proc (signed word()) sin16s((dword) sin16s::x) + (byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin16s::$0 ← (dword) sin16s::x >= (dword) PI_u4f28 + (boolean~) sin16s::$1 ← ! (boolean~) sin16s::$0 + if((boolean~) sin16s::$1) goto sin16s::@1 + (dword~) sin16s::$2 ← (dword) sin16s::x - (dword) PI_u4f28 + (dword) sin16s::x ← (dword~) sin16s::$2 + (byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 1 +sin16s::@1: + (boolean~) sin16s::$3 ← (dword) sin16s::x >= (dword) PI_HALF_u4f28 + (boolean~) sin16s::$4 ← ! (boolean~) sin16s::$3 + if((boolean~) sin16s::$4) goto sin16s::@2 + (dword~) sin16s::$5 ← (dword) PI_u4f28 - (dword) sin16s::x + (dword) sin16s::x ← (dword~) sin16s::$5 +sin16s::@2: + (dword~) sin16s::$6 ← (dword) sin16s::x << (byte/signed byte/word/signed word/dword/signed dword) 3 + (word~) sin16s::$7 ← > (dword~) sin16s::$6 + (word) sin16s::x1 ← (word~) sin16s::$7 + (word~) sin16s::$8 ← call mulu16_sel (word) sin16s::x1 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16s::x2 ← (word~) sin16s::$8 + (word~) sin16s::$9 ← call mulu16_sel (word) sin16s::x2 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) sin16s::x3 ← (word~) sin16s::$9 + (word/signed word/dword/signed dword~) sin16s::$10 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 + (word~) sin16s::$11 ← call mulu16_sel (word) sin16s::x3 (word/signed word/dword/signed dword~) sin16s::$10 (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) sin16s::x3_6 ← (word~) sin16s::$11 + (word~) sin16s::$12 ← (word) sin16s::x1 - (word) sin16s::x3_6 + (word) sin16s::usinx ← (word~) sin16s::$12 + (word~) sin16s::$13 ← call mulu16_sel (word) sin16s::x3 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16s::x4 ← (word~) sin16s::$13 + (word~) sin16s::$14 ← call mulu16_sel (word) sin16s::x4 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16s::x5 ← (word~) sin16s::$14 + (word~) sin16s::$15 ← (word) sin16s::x5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + (word) sin16s::x5_128 ← (word~) sin16s::$15 + (word~) sin16s::$16 ← (word) sin16s::usinx + (word) sin16s::x5_128 + (word) sin16s::usinx ← (word~) sin16s::$16 + (signed word~) sin16s::$17 ← ((signed word)) (word) sin16s::usinx + (signed word) sin16s::sinx ← (signed word~) sin16s::$17 + (boolean~) sin16s::$18 ← (byte) sin16s::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin16s::$19 ← ! (boolean~) sin16s::$18 + if((boolean~) sin16s::$19) goto sin16s::@3 + (signed word~) sin16s::$20 ← ((signed word)) (word) sin16s::usinx + (signed word~) sin16s::$21 ← - (signed word~) sin16s::$20 + (signed word) sin16s::sinx ← (signed word~) sin16s::$21 +sin16s::@3: + (signed word) sin16s::return ← (signed word) sin16s::sinx + goto sin16s::@return +sin16s::@return: + (signed word) sin16s::return ← (signed word) sin16s::return + return (signed word) sin16s::return +endproc // sin16s() +proc (signed byte()) sin8s((word) sin8s::x) + (byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin8s::$0 ← (word) sin8s::x >= (word) PI_u4f12 + (boolean~) sin8s::$1 ← ! (boolean~) sin8s::$0 + if((boolean~) sin8s::$1) goto sin8s::@1 + (word~) sin8s::$2 ← (word) sin8s::x - (word) PI_u4f12 + (word) sin8s::x ← (word~) sin8s::$2 + (byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 1 +sin8s::@1: + (boolean~) sin8s::$3 ← (word) sin8s::x >= (word) PI_HALF_u4f12 + (boolean~) sin8s::$4 ← ! (boolean~) sin8s::$3 + if((boolean~) sin8s::$4) goto sin8s::@2 + (word~) sin8s::$5 ← (word) PI_u4f12 - (word) sin8s::x + (word) sin8s::x ← (word~) sin8s::$5 +sin8s::@2: + (word~) sin8s::$6 ← (word) sin8s::x << (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) sin8s::$7 ← > (word~) sin8s::$6 + (byte) sin8s::x1 ← (byte~) sin8s::$7 + (byte~) sin8s::$8 ← call mulu8_sel (byte) sin8s::x1 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) sin8s::x2 ← (byte~) sin8s::$8 + (byte~) sin8s::$9 ← call mulu8_sel (byte) sin8s::x2 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) sin8s::x3 ← (byte~) sin8s::$9 + (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$10 ← (word/signed word/dword/signed dword) 256 / (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte~) sin8s::$11 ← call mulu8_sel (byte) sin8s::x3 (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$10 (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) sin8s::x3_6 ← (byte~) sin8s::$11 + (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$12 ← (byte) sin8s::x1 - (byte) sin8s::x3_6 + (byte) sin8s::usinx ← (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$12 + (byte~) sin8s::$13 ← call mulu8_sel (byte) sin8s::x3 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) sin8s::x4 ← (byte~) sin8s::$13 + (byte~) sin8s::$14 ← call mulu8_sel (byte) sin8s::x4 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) sin8s::x5 ← (byte~) sin8s::$14 + (byte~) sin8s::$15 ← (byte) sin8s::x5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) sin8s::x5_128 ← (byte~) sin8s::$15 + (byte/word~) sin8s::$16 ← (byte) sin8s::usinx + (byte) sin8s::x5_128 + (byte) sin8s::usinx ← (byte/word~) sin8s::$16 + (signed byte~) sin8s::$17 ← ((signed byte)) (byte) sin8s::usinx + (signed byte) sin8s::sinx ← (signed byte~) sin8s::$17 + (boolean~) sin8s::$18 ← (byte) sin8s::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin8s::$19 ← ! (boolean~) sin8s::$18 + if((boolean~) sin8s::$19) goto sin8s::@3 + (signed byte~) sin8s::$20 ← ((signed byte)) (byte) sin8s::usinx + (signed byte~) sin8s::$21 ← - (signed byte~) sin8s::$20 + (signed byte) sin8s::sinx ← (signed byte~) sin8s::$21 +sin8s::@3: + (signed byte) sin8s::return ← (signed byte) sin8s::sinx + goto sin8s::@return +sin8s::@return: + (signed byte) sin8s::return ← (signed byte) sin8s::return + return (signed byte) sin8s::return +endproc // sin8s() +proc (void()) sin16ss_gen((signed word*) sin16ss_gen::sintab , (word) sin16ss_gen::wavelength) + (dword~) sin16ss_gen::$0 ← call div32u16u (dword) PI2_u4f28 (word) sin16ss_gen::wavelength + (dword) sin16ss_gen::step ← (dword~) sin16ss_gen::$0 + (dword) sin16ss_gen::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16ss_gen::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 +sin16ss_gen::@1: + (word~) sin16ss_gen::$1 ← > (dword) sin16ss_gen::x + (word) sin16ss_gen::x1 ← (word~) sin16ss_gen::$1 + (byte) sin16ss_gen::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin16ss_gen::$2 ← (word) sin16ss_gen::x1 >= (word) PI_u4f12 + (boolean~) sin16ss_gen::$3 ← ! (boolean~) sin16ss_gen::$2 + if((boolean~) sin16ss_gen::$3) goto sin16ss_gen::@2 + (word~) sin16ss_gen::$4 ← (word) sin16ss_gen::x1 - (word) PI_u4f12 + (word) sin16ss_gen::x1 ← (word~) sin16ss_gen::$4 + (byte) sin16ss_gen::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 1 +sin16ss_gen::@2: + (boolean~) sin16ss_gen::$5 ← (word) sin16ss_gen::x1 >= (word) PI_HALF_u4f12 + (boolean~) sin16ss_gen::$6 ← ! (boolean~) sin16ss_gen::$5 + if((boolean~) sin16ss_gen::$6) goto sin16ss_gen::@3 + (word~) sin16ss_gen::$7 ← (word) PI_u4f12 - (word) sin16ss_gen::x1 + (word) sin16ss_gen::x1 ← (word~) sin16ss_gen::$7 +sin16ss_gen::@3: + (word~) sin16ss_gen::$8 ← call mulu16_sel (word) sin16ss_gen::x1 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 + (word) sin16ss_gen::x2 ← (word~) sin16ss_gen::$8 + (word~) sin16ss_gen::$9 ← call mulu16_sel (word) sin16ss_gen::x2 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 + (word) sin16ss_gen::x3 ← (word~) sin16ss_gen::$9 + (word/signed word/dword/signed dword~) sin16ss_gen::$10 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 + (word~) sin16ss_gen::$11 ← call mulu16_sel (word) sin16ss_gen::x3 (word/signed word/dword/signed dword~) sin16ss_gen::$10 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16ss_gen::x3_6 ← (word~) sin16ss_gen::$11 + (word~) sin16ss_gen::$12 ← (word) sin16ss_gen::x1 - (word) sin16ss_gen::x3_6 + (word) sin16ss_gen::usinx ← (word~) sin16ss_gen::$12 + (word~) sin16ss_gen::$13 ← call mulu16_sel (word) sin16ss_gen::x3 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 + (word) sin16ss_gen::x4 ← (word~) sin16ss_gen::$13 + (word~) sin16ss_gen::$14 ← call mulu16_sel (word) sin16ss_gen::x4 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 + (word) sin16ss_gen::x5 ← (word~) sin16ss_gen::$14 + (word/signed word/dword/signed dword~) sin16ss_gen::$15 ← (dword/signed dword) 65536 / (byte/word/signed word/dword/signed dword) 128 + (word~) sin16ss_gen::$16 ← call mulu16_sel (word) sin16ss_gen::x5 (word/signed word/dword/signed dword~) sin16ss_gen::$15 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16ss_gen::x5_128 ← (word~) sin16ss_gen::$16 + (word~) sin16ss_gen::$17 ← (word) sin16ss_gen::usinx + (word) sin16ss_gen::x5_128 + (word) sin16ss_gen::usinx ← (word~) sin16ss_gen::$17 + (boolean~) sin16ss_gen::$18 ← (byte) sin16ss_gen::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin16ss_gen::$19 ← ! (boolean~) sin16ss_gen::$18 + if((boolean~) sin16ss_gen::$19) goto sin16ss_gen::@4 + (signed word~) sin16ss_gen::$20 ← ((signed word)) (word) sin16ss_gen::usinx + (signed word~) sin16ss_gen::$21 ← - (signed word~) sin16ss_gen::$20 + (signed word) sin16ss_gen::sinx ← (signed word~) sin16ss_gen::$21 + goto sin16ss_gen::@5 +sin16ss_gen::@4: + (signed word~) sin16ss_gen::$22 ← ((signed word)) (word) sin16ss_gen::usinx + (signed word) sin16ss_gen::sinx ← (signed word~) sin16ss_gen::$22 +sin16ss_gen::@5: + *((signed word*) sin16ss_gen::sintab) ← (signed word) sin16ss_gen::sinx + (signed word*~) sin16ss_gen::$23 ← (signed word*) sin16ss_gen::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2 + (signed word*) sin16ss_gen::sintab ← (signed word*~) sin16ss_gen::$23 + (dword~) sin16ss_gen::$24 ← (dword) sin16ss_gen::x + (dword) sin16ss_gen::step + (dword) sin16ss_gen::x ← (dword~) sin16ss_gen::$24 + (word) sin16ss_gen::i ← ++ (word) sin16ss_gen::i + (boolean~) sin16ss_gen::$25 ← (word) sin16ss_gen::i < (word) sin16ss_gen::wavelength + if((boolean~) sin16ss_gen::$25) goto sin16ss_gen::@1 +sin16ss_gen::@return: + return +endproc // sin16ss_gen() +proc (word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) + (dword~) mulu16_sel::$0 ← call mul16u (word) mulu16_sel::v1 (word) mulu16_sel::v2 + (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select + (word~) mulu16_sel::$2 ← > (dword~) mulu16_sel::$1 + (word) mulu16_sel::return ← (word~) mulu16_sel::$2 + goto mulu16_sel::@return +mulu16_sel::@return: + (word) mulu16_sel::return ← (word) mulu16_sel::return + return (word) mulu16_sel::return +endproc // mulu16_sel() +proc (byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select) + (word~) mulu8_sel::$0 ← call mul8u (byte) mulu8_sel::v1 (byte) mulu8_sel::v2 + (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select + (byte~) mulu8_sel::$2 ← > (word~) mulu8_sel::$1 + (byte) mulu8_sel::return ← (byte~) mulu8_sel::$2 + goto mulu8_sel::@return +mulu8_sel::@return: + (byte) mulu8_sel::return ← (byte) mulu8_sel::return + return (byte) mulu8_sel::return +endproc // mulu8_sel() + (byte*) SCREEN ← (word/signed word/dword/signed dword) 1024 + (byte*) line_cursor ← (byte*) SCREEN + (byte*) char_cursor ← (byte*) line_cursor +proc (void()) print_str((byte*) print_str::str) +print_str::@1: + (boolean~) print_str::$0 ← *((byte*) print_str::str) != (byte) '@' + if((boolean~) print_str::$0) goto print_str::@2 + goto print_str::@3 +print_str::@2: + *((byte*) char_cursor) ← *((byte*) print_str::str) + (byte*) char_cursor ← ++ (byte*) char_cursor + (byte*) print_str::str ← ++ (byte*) print_str::str + goto print_str::@1 +print_str::@3: +print_str::@return: + return +endproc // print_str() +proc (void()) print_ln() +print_ln::@1: + (byte*~) print_ln::$0 ← (byte*) line_cursor + (byte/signed byte/word/signed word/dword/signed dword) 40 + (byte*) line_cursor ← (byte*~) print_ln::$0 + (boolean~) print_ln::$1 ← (byte*) line_cursor < (byte*) char_cursor + if((boolean~) print_ln::$1) goto print_ln::@1 + (byte*) char_cursor ← (byte*) line_cursor +print_ln::@return: + return +endproc // print_ln() +proc (void()) print_sword((signed word) print_sword::w) + (boolean~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0 + if((boolean~) print_sword::$1) goto print_sword::@1 + (void~) print_sword::$2 ← call print_char (byte) '-' + (signed word~) print_sword::$3 ← - (signed word) print_sword::w + (signed word) print_sword::w ← (signed word~) print_sword::$3 +print_sword::@1: + (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w + (void~) print_sword::$5 ← call print_word (word~) print_sword::$4 +print_sword::@return: + return +endproc // print_sword() +proc (void()) print_sbyte((signed byte) print_sbyte::b) + (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0 + if((boolean~) print_sbyte::$1) goto print_sbyte::@1 + (void~) print_sbyte::$2 ← call print_char (byte) '-' + (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b + (signed byte) print_sbyte::b ← (signed byte~) print_sbyte::$3 +print_sbyte::@1: + (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b + (void~) print_sbyte::$5 ← call print_byte (byte~) print_sbyte::$4 +print_sbyte::@return: + return +endproc // print_sbyte() +proc (void()) print_word((word) print_word::w) + (byte~) print_word::$0 ← > (word) print_word::w + (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 + (byte~) print_word::$2 ← < (word) print_word::w + (void~) print_word::$3 ← call print_byte (byte~) print_word::$2 +print_word::@return: + return +endproc // print_word() +proc (void()) print_dword((dword) print_dword::dw) + (word~) print_dword::$0 ← > (dword) print_dword::dw + (void~) print_dword::$1 ← call print_word (word~) print_dword::$0 + (word~) print_dword::$2 ← < (dword) print_dword::dw + (void~) print_dword::$3 ← call print_word (word~) print_dword::$2 +print_dword::@return: + return +endproc // print_dword() +proc (void()) print_sdword((signed dword) print_sdword::dw) + (boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0 + if((boolean~) print_sdword::$1) goto print_sdword::@1 + (void~) print_sdword::$2 ← call print_char (byte) '-' + (signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw + (signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3 +print_sdword::@1: + (dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw + (void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4 +print_sdword::@return: + return +endproc // print_sdword() +proc (void()) print_byte((byte) print_byte::b) + (byte[]) print_byte::hextab ← (string) "0123456789abcdef" + (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4 + (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) + (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word/dword/signed dword) 15 + (void~) print_byte::$3 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$2) +print_byte::@return: + return +endproc // print_byte() +proc (void()) print_char((byte) print_char::ch) + *((byte*) char_cursor) ← (byte) print_char::ch + (byte*) char_cursor ← ++ (byte*) char_cursor +print_char::@return: + return +endproc // print_char() +proc (void()) print_cls() + (byte*) print_cls::sc ← (byte*) SCREEN +print_cls::@1: + *((byte*) print_cls::sc) ← (byte) ' ' + (byte*) print_cls::sc ← ++ (byte*) print_cls::sc + (byte*~) print_cls::$0 ← (byte*) SCREEN + (word/signed word/dword/signed dword) 1000 + (boolean~) print_cls::$1 ← (byte*) print_cls::sc != (byte*~) print_cls::$0 + if((boolean~) print_cls::$1) goto print_cls::@1 + (byte*) line_cursor ← (byte*) SCREEN + (byte*) char_cursor ← (byte*) line_cursor +print_cls::@return: + return +endproc // print_cls() +proc (void()) main() + (word) main::wavelength ← (byte/signed byte/word/signed word/dword/signed dword) 120 + (signed byte[120]) main::sintab2 ← { fill( 120, 0) } + (void~) main::$0 ← call sin8s_gen (signed byte[120]) main::sintab2 (word) main::wavelength + (void~) main::$1 ← call print_cls + (byte) main::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 +main::@1: + (signed byte) main::sb ← *((signed byte[120]) main::sintab2 + (byte) main::i) + (boolean~) main::$2 ← (signed byte) main::sb >= (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) main::$3 ← ! (boolean~) main::$2 + if((boolean~) main::$3) goto main::@2 + (void~) main::$4 ← call print_str (string) " @" +main::@2: + (void~) main::$5 ← call print_sbyte (signed byte) main::sb + (void~) main::$6 ← call print_str (string) " @" + (byte) main::i ← ++ (byte) main::i + (boolean~) main::$7 ← (byte) main::i != (byte/signed byte/word/signed word/dword/signed dword) 120 + if((boolean~) main::$7) goto main::@1 +main::@return: + return +endproc // main() + call main + +SYMBOLS +(word) PI2_u4f12 +(dword) PI2_u4f28 +(word) PI_HALF_u4f12 +(dword) PI_HALF_u4f28 +(word) PI_u4f12 +(dword) PI_u4f28 +(byte*) SCREEN +(byte*) char_cursor +(signed word()) div16s((signed word) div16s::dividend , (signed word) div16s::divisor) +(boolean~) div16s::$0 +(boolean~) div16s::$1 +(word~) div16s::$10 +(word~) div16s::$11 +(boolean~) div16s::$12 +(boolean~) div16s::$13 +(signed word~) div16s::$14 +(signed word~) div16s::$15 +(signed word~) div16s::$16 +(signed word~) div16s::$17 +(signed word~) div16s::$18 +(signed word~) div16s::$19 +(signed word~) div16s::$2 +(word~) div16s::$3 +(word~) div16s::$4 +(boolean~) div16s::$5 +(boolean~) div16s::$6 +(signed word~) div16s::$7 +(word~) div16s::$8 +(byte~) div16s::$9 +(label) div16s::@1 +(label) div16s::@2 +(label) div16s::@3 +(label) div16s::@4 +(label) div16s::@5 +(label) div16s::@6 +(label) div16s::@return +(signed word) div16s::dividend +(word) div16s::dividendu +(signed word) div16s::divisor +(word) div16s::divisoru +(byte) div16s::neg +(word) div16s::resultu +(signed word) div16s::return +(word()) div16u((word) div16u::dividend , (word) div16u::divisor) +(word~) div16u::$0 +(label) div16u::@return +(word) div16u::dividend +(word) div16u::divisor +(word) div16u::return +(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) +(word~) div32u16u::$0 +(word~) div32u16u::$1 +(word~) div32u16u::$2 +(word~) div32u16u::$3 +(label) div32u16u::@return +(dword) div32u16u::dividend +(word) div32u16u::divisor +(dword) div32u16u::quotient +(word) div32u16u::quotient_hi +(word) div32u16u::quotient_lo +(dword) div32u16u::return +(signed byte()) div8s((signed byte) div8s::dividend , (signed byte) div8s::divisor) +(boolean~) div8s::$0 +(boolean~) div8s::$1 +(byte~) div8s::$10 +(byte~) div8s::$11 +(boolean~) div8s::$12 +(boolean~) div8s::$13 +(signed byte~) div8s::$14 +(signed byte~) div8s::$15 +(signed byte~) div8s::$16 +(signed byte~) div8s::$17 +(signed byte~) div8s::$18 +(signed byte~) div8s::$19 +(signed byte~) div8s::$2 +(byte~) div8s::$3 +(byte~) div8s::$4 +(boolean~) div8s::$5 +(boolean~) div8s::$6 +(signed byte~) div8s::$7 +(byte~) div8s::$8 +(byte~) div8s::$9 +(label) div8s::@1 +(label) div8s::@2 +(label) div8s::@3 +(label) div8s::@4 +(label) div8s::@5 +(label) div8s::@6 +(label) div8s::@return +(signed byte) div8s::dividend +(byte) div8s::dividendu +(signed byte) div8s::divisor +(byte) div8s::divisoru +(byte) div8s::neg +(byte) div8s::resultu +(signed byte) div8s::return +(byte()) div8u((byte) div8u::dividend , (byte) div8u::divisor) +(byte~) div8u::$0 +(label) div8u::@return +(byte) div8u::dividend +(byte) div8u::divisor +(byte) div8u::return +(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) +(word~) divr16u::$0 +(byte~) divr16u::$1 +(word~) divr16u::$10 +(boolean~) divr16u::$11 +(byte~) divr16u::$2 +(boolean~) divr16u::$3 +(boolean~) divr16u::$4 +(word~) divr16u::$5 +(word~) divr16u::$6 +(word~) divr16u::$7 +(boolean~) divr16u::$8 +(boolean~) divr16u::$9 +(label) divr16u::@1 +(label) divr16u::@2 +(label) divr16u::@3 +(label) divr16u::@return +(word) divr16u::dividend +(word) divr16u::divisor +(byte) divr16u::i +(word) divr16u::quotient +(word) divr16u::rem +(word) divr16u::return +(byte()) divr8u((byte) divr8u::dividend , (byte) divr8u::divisor , (byte) divr8u::rem) +(byte~) divr8u::$0 +(byte~) divr8u::$1 +(boolean~) divr8u::$10 +(boolean~) divr8u::$2 +(boolean~) divr8u::$3 +(byte~) divr8u::$4 +(byte~) divr8u::$5 +(byte~) divr8u::$6 +(boolean~) divr8u::$7 +(boolean~) divr8u::$8 +(byte/signed byte/word/signed word/dword/signed dword~) divr8u::$9 +(label) divr8u::@1 +(label) divr8u::@2 +(label) divr8u::@3 +(label) divr8u::@return +(byte) divr8u::dividend +(byte) divr8u::divisor +(byte) divr8u::i +(byte) divr8u::quotient +(byte) divr8u::rem +(byte) divr8u::return +(byte*) line_cursor +(void()) main() +(void~) main::$0 +(void~) main::$1 +(boolean~) main::$2 +(boolean~) main::$3 +(void~) main::$4 +(void~) main::$5 +(void~) main::$6 +(boolean~) main::$7 +(label) main::@1 +(label) main::@2 +(label) main::@return +(byte) main::i +(signed byte) main::sb +(signed byte[120]) main::sintab2 +(word) main::wavelength +(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) +(word~) mul16s::$0 +(word~) mul16s::$1 +(boolean~) mul16s::$10 +(word~) mul16s::$11 +(word~) mul16s::$12 +(word~) mul16s::$13 +(word~) mul16s::$14 +(signed dword~) mul16s::$15 +(dword~) mul16s::$2 +(boolean~) mul16s::$3 +(boolean~) mul16s::$4 +(word~) mul16s::$5 +(word~) mul16s::$6 +(word~) mul16s::$7 +(word~) mul16s::$8 +(boolean~) mul16s::$9 +(label) mul16s::@1 +(label) mul16s::@2 +(label) mul16s::@return +(signed word) mul16s::a +(signed word) mul16s::b +(dword) mul16s::m +(signed dword) mul16s::return +(dword()) mul16u((word) mul16u::a , (word) mul16u::b) +(boolean~) mul16u::$0 +(byte~) mul16u::$1 +(boolean~) mul16u::$2 +(boolean~) mul16u::$3 +(dword~) mul16u::$4 +(word~) mul16u::$5 +(dword~) mul16u::$6 +(label) mul16u::@1 +(label) mul16u::@2 +(label) mul16u::@3 +(label) mul16u::@4 +(label) mul16u::@return +(word) mul16u::a +(word) mul16u::b +(dword) mul16u::mb +(dword) mul16u::res +(dword) mul16u::return +(signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b) +(byte~) mul8s::$0 +(byte~) mul8s::$1 +(boolean~) mul8s::$10 +(byte~) mul8s::$11 +(byte~) mul8s::$12 +(byte~) mul8s::$13 +(byte/signed byte/word/signed word/dword/signed dword~) mul8s::$14 +(signed word~) mul8s::$15 +(word~) mul8s::$2 +(boolean~) mul8s::$3 +(boolean~) mul8s::$4 +(byte~) mul8s::$5 +(byte~) mul8s::$6 +(byte~) mul8s::$7 +(byte/signed byte/word/signed word/dword/signed dword~) mul8s::$8 +(boolean~) mul8s::$9 +(label) mul8s::@1 +(label) mul8s::@2 +(label) mul8s::@return +(signed byte) mul8s::a +(signed byte) mul8s::b +(word) mul8s::m +(signed word) mul8s::return +(word()) mul8u((byte) mul8u::a , (byte) mul8u::b) +(boolean~) mul8u::$0 +(byte~) mul8u::$1 +(boolean~) mul8u::$2 +(boolean~) mul8u::$3 +(word~) mul8u::$4 +(byte~) mul8u::$5 +(word~) mul8u::$6 +(label) mul8u::@1 +(label) mul8u::@2 +(label) mul8u::@3 +(label) mul8u::@4 +(label) mul8u::@return +(byte) mul8u::a +(byte) mul8u::b +(word) mul8u::mb +(word) mul8u::res +(word) mul8u::return +(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select) +(dword~) mulu16_sel::$0 +(dword~) mulu16_sel::$1 +(word~) mulu16_sel::$2 +(label) mulu16_sel::@return +(word) mulu16_sel::return +(byte) mulu16_sel::select +(word) mulu16_sel::v1 +(word) mulu16_sel::v2 +(byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select) +(word~) mulu8_sel::$0 +(word~) mulu8_sel::$1 +(byte~) mulu8_sel::$2 +(label) mulu8_sel::@return +(byte) mulu8_sel::return +(byte) mulu8_sel::select +(byte) mulu8_sel::v1 +(byte) mulu8_sel::v2 +(void()) print_byte((byte) print_byte::b) +(byte~) print_byte::$0 +(void~) print_byte::$1 +(byte~) print_byte::$2 +(void~) print_byte::$3 +(label) print_byte::@return +(byte) print_byte::b +(byte[]) print_byte::hextab +(void()) print_char((byte) print_char::ch) +(label) print_char::@return +(byte) print_char::ch +(void()) print_cls() +(byte*~) print_cls::$0 +(boolean~) print_cls::$1 +(label) print_cls::@1 +(label) print_cls::@return +(byte*) print_cls::sc +(void()) print_dword((dword) print_dword::dw) +(word~) print_dword::$0 +(void~) print_dword::$1 +(word~) print_dword::$2 +(void~) print_dword::$3 +(label) print_dword::@return +(dword) print_dword::dw +(void()) print_ln() +(byte*~) print_ln::$0 +(boolean~) print_ln::$1 +(label) print_ln::@1 +(label) print_ln::@return +(void()) print_sbyte((signed byte) print_sbyte::b) +(boolean~) print_sbyte::$0 +(boolean~) print_sbyte::$1 +(void~) print_sbyte::$2 +(signed byte~) print_sbyte::$3 +(byte~) print_sbyte::$4 +(void~) print_sbyte::$5 +(label) print_sbyte::@1 +(label) print_sbyte::@return +(signed byte) print_sbyte::b +(void()) print_sdword((signed dword) print_sdword::dw) +(boolean~) print_sdword::$0 +(boolean~) print_sdword::$1 +(void~) print_sdword::$2 +(signed dword~) print_sdword::$3 +(dword~) print_sdword::$4 +(void~) print_sdword::$5 +(label) print_sdword::@1 +(label) print_sdword::@return +(signed dword) print_sdword::dw +(void()) print_str((byte*) print_str::str) +(boolean~) print_str::$0 +(label) print_str::@1 +(label) print_str::@2 +(label) print_str::@3 +(label) print_str::@return +(byte*) print_str::str +(void()) print_sword((signed word) print_sword::w) +(boolean~) print_sword::$0 +(boolean~) print_sword::$1 +(void~) print_sword::$2 +(signed word~) print_sword::$3 +(word~) print_sword::$4 +(void~) print_sword::$5 +(label) print_sword::@1 +(label) print_sword::@return +(signed word) print_sword::w +(void()) print_word((word) print_word::w) +(byte~) print_word::$0 +(void~) print_word::$1 +(byte~) print_word::$2 +(void~) print_word::$3 +(label) print_word::@return +(word) print_word::w +(signed word) rem16s +(word) rem16u +(signed byte) rem8s +(byte) rem8u +(signed word()) sin16s((dword) sin16s::x) +(boolean~) sin16s::$0 +(boolean~) sin16s::$1 +(word/signed word/dword/signed dword~) sin16s::$10 +(word~) sin16s::$11 +(word~) sin16s::$12 +(word~) sin16s::$13 +(word~) sin16s::$14 +(word~) sin16s::$15 +(word~) sin16s::$16 +(signed word~) sin16s::$17 +(boolean~) sin16s::$18 +(boolean~) sin16s::$19 +(dword~) sin16s::$2 +(signed word~) sin16s::$20 +(signed word~) sin16s::$21 +(boolean~) sin16s::$3 +(boolean~) sin16s::$4 +(dword~) sin16s::$5 +(dword~) sin16s::$6 +(word~) sin16s::$7 +(word~) sin16s::$8 +(word~) sin16s::$9 +(label) sin16s::@1 +(label) sin16s::@2 +(label) sin16s::@3 +(label) sin16s::@return +(byte) sin16s::isUpper +(signed word) sin16s::return +(signed word) sin16s::sinx +(word) sin16s::usinx +(dword) sin16s::x +(word) sin16s::x1 +(word) sin16s::x2 +(word) sin16s::x3 +(word) sin16s::x3_6 +(word) sin16s::x4 +(word) sin16s::x5 +(word) sin16s::x5_128 +(void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength) +(dword~) sin16s_gen::$0 +(signed word~) sin16s_gen::$1 +(signed word*~) sin16s_gen::$2 +(dword~) sin16s_gen::$3 +(boolean~) sin16s_gen::$4 +(label) sin16s_gen::@1 +(label) sin16s_gen::@return +(word) sin16s_gen::i +(signed word*) sin16s_gen::sintab +(dword) sin16s_gen::step +(word) sin16s_gen::wavelength +(dword) sin16s_gen::x +(void()) sin16ss_gen((signed word*) sin16ss_gen::sintab , (word) sin16ss_gen::wavelength) +(dword~) sin16ss_gen::$0 +(word~) sin16ss_gen::$1 +(word/signed word/dword/signed dword~) sin16ss_gen::$10 +(word~) sin16ss_gen::$11 +(word~) sin16ss_gen::$12 +(word~) sin16ss_gen::$13 +(word~) sin16ss_gen::$14 +(word/signed word/dword/signed dword~) sin16ss_gen::$15 +(word~) sin16ss_gen::$16 +(word~) sin16ss_gen::$17 +(boolean~) sin16ss_gen::$18 +(boolean~) sin16ss_gen::$19 +(boolean~) sin16ss_gen::$2 +(signed word~) sin16ss_gen::$20 +(signed word~) sin16ss_gen::$21 +(signed word~) sin16ss_gen::$22 +(signed word*~) sin16ss_gen::$23 +(dword~) sin16ss_gen::$24 +(boolean~) sin16ss_gen::$25 +(boolean~) sin16ss_gen::$3 +(word~) sin16ss_gen::$4 +(boolean~) sin16ss_gen::$5 +(boolean~) sin16ss_gen::$6 +(word~) sin16ss_gen::$7 +(word~) sin16ss_gen::$8 +(word~) sin16ss_gen::$9 +(label) sin16ss_gen::@1 +(label) sin16ss_gen::@2 +(label) sin16ss_gen::@3 +(label) sin16ss_gen::@4 +(label) sin16ss_gen::@5 +(label) sin16ss_gen::@return +(word) sin16ss_gen::i +(byte) sin16ss_gen::isUpper +(signed word*) sin16ss_gen::sintab +(signed word) sin16ss_gen::sinx +(dword) sin16ss_gen::step +(word) sin16ss_gen::usinx +(word) sin16ss_gen::wavelength +(dword) sin16ss_gen::x +(word) sin16ss_gen::x1 +(word) sin16ss_gen::x2 +(word) sin16ss_gen::x3 +(word) sin16ss_gen::x3_6 +(word) sin16ss_gen::x4 +(word) sin16ss_gen::x5 +(word) sin16ss_gen::x5_128 +(signed byte()) sin8s((word) sin8s::x) +(boolean~) sin8s::$0 +(boolean~) sin8s::$1 +(byte/signed byte/word/signed word/dword/signed dword~) sin8s::$10 +(byte~) sin8s::$11 +(byte/signed byte/word/signed word/dword/signed dword~) sin8s::$12 +(byte~) sin8s::$13 +(byte~) sin8s::$14 +(byte~) sin8s::$15 +(byte/word~) sin8s::$16 +(signed byte~) sin8s::$17 +(boolean~) sin8s::$18 +(boolean~) sin8s::$19 +(word~) sin8s::$2 +(signed byte~) sin8s::$20 +(signed byte~) sin8s::$21 +(boolean~) sin8s::$3 +(boolean~) sin8s::$4 +(word~) sin8s::$5 +(word~) sin8s::$6 +(byte~) sin8s::$7 +(byte~) sin8s::$8 +(byte~) sin8s::$9 +(label) sin8s::@1 +(label) sin8s::@2 +(label) sin8s::@3 +(label) sin8s::@return +(byte) sin8s::isUpper +(signed byte) sin8s::return +(signed byte) sin8s::sinx +(byte) sin8s::usinx +(word) sin8s::x +(byte) sin8s::x1 +(byte) sin8s::x2 +(byte) sin8s::x3 +(byte) sin8s::x3_6 +(byte) sin8s::x4 +(byte) sin8s::x5 +(byte) sin8s::x5_128 +(void()) sin8s_gen((signed byte*) sin8s_gen::sintab , (word) sin8s_gen::wavelength) +(word~) sin8s_gen::$0 +(signed byte~) sin8s_gen::$1 +(word~) sin8s_gen::$2 +(boolean~) sin8s_gen::$3 +(label) sin8s_gen::@1 +(label) sin8s_gen::@return +(word) sin8s_gen::i +(signed byte*) sin8s_gen::sintab +(word) sin8s_gen::step +(word) sin8s_gen::wavelength +(word) sin8s_gen::x + +Fixing lo/hi-lvalue with new tmpVar mul8s::$16 mul8s::$16 ← mul8s::$8 +Fixing lo/hi-lvalue with new tmpVar mul8s::$17 mul8s::$17 ← mul8s::$14 +Fixing lo/hi-lvalue with new tmpVar mul16s::$16 mul16s::$16 ← mul16s::$8 +Fixing lo/hi-lvalue with new tmpVar mul16s::$17 mul16s::$17 ← mul16s::$14 +Promoting byte to word in mul8u::mb ← ((word)) mul8u::b +Promoting word to dword in mul16u::mb ← ((dword)) mul16u::b +Promoting word/signed word/dword/signed dword to byte* in SCREEN ← ((byte*)) 1024 +INITIAL CONTROL FLOW GRAPH +@begin: scope:[] from + (byte) rem8u ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@1 +div8u: scope:[div8u] from + (byte~) div8u::$0 ← call divr8u (byte) div8u::dividend (byte) div8u::divisor (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) div8u::return ← (byte~) div8u::$0 + to:div8u::@return +div8u::@return: scope:[div8u] from div8u div8u::@1 + (byte) div8u::return ← (byte) div8u::return + return (byte) div8u::return + to:@return +div8u::@1: scope:[div8u] from + to:div8u::@return +@1: scope:[] from @begin + to:@2 +divr8u: scope:[divr8u] from + (byte) divr8u::quotient ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) divr8u::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:divr8u::@1 +divr8u::@1: scope:[divr8u] from divr8u divr8u::@3 + (byte~) divr8u::$0 ← (byte) divr8u::rem << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) divr8u::rem ← (byte~) divr8u::$0 + (byte~) divr8u::$1 ← (byte) divr8u::dividend & (byte/word/signed word/dword/signed dword) 128 + (boolean~) divr8u::$2 ← (byte~) divr8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) divr8u::$3 ← ! (boolean~) divr8u::$2 + if((boolean~) divr8u::$3) goto divr8u::@2 + to:divr8u::@4 +divr8u::@2: scope:[divr8u] from divr8u::@1 divr8u::@4 + (byte~) divr8u::$5 ← (byte) divr8u::dividend << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) divr8u::dividend ← (byte~) divr8u::$5 + (byte~) divr8u::$6 ← (byte) divr8u::quotient << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) divr8u::quotient ← (byte~) divr8u::$6 + (boolean~) divr8u::$7 ← (byte) divr8u::rem >= (byte) divr8u::divisor + (boolean~) divr8u::$8 ← ! (boolean~) divr8u::$7 + if((boolean~) divr8u::$8) goto divr8u::@3 + to:divr8u::@5 +divr8u::@4: scope:[divr8u] from divr8u::@1 + (byte~) divr8u::$4 ← (byte) divr8u::rem | (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) divr8u::rem ← (byte~) divr8u::$4 + to:divr8u::@2 +divr8u::@3: scope:[divr8u] from divr8u::@2 divr8u::@5 + (byte) divr8u::i ← ++ (byte) divr8u::i + (boolean~) divr8u::$10 ← (byte) divr8u::i != (byte/signed byte/word/signed word/dword/signed dword) 8 + if((boolean~) divr8u::$10) goto divr8u::@1 + to:divr8u::@6 +divr8u::@5: scope:[divr8u] from divr8u::@2 + (byte) divr8u::quotient ← ++ (byte) divr8u::quotient + (byte/signed byte/word/signed word/dword/signed dword~) divr8u::$9 ← (byte) divr8u::rem - (byte) divr8u::divisor + (byte) divr8u::rem ← (byte/signed byte/word/signed word/dword/signed dword~) divr8u::$9 + to:divr8u::@3 +divr8u::@6: scope:[divr8u] from divr8u::@3 + (byte) rem8u ← (byte) divr8u::rem + (byte) divr8u::return ← (byte) divr8u::quotient + to:divr8u::@return +divr8u::@return: scope:[divr8u] from divr8u::@6 divr8u::@7 + (byte) divr8u::return ← (byte) divr8u::return + return (byte) divr8u::return + to:@return +divr8u::@7: scope:[divr8u] from + to:divr8u::@return +@2: scope:[] from @1 + (word) rem16u ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@3 +divr16u: scope:[divr16u] from + (word) divr16u::quotient ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) divr16u::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:divr16u::@1 +divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 + (word~) divr16u::$0 ← (word) divr16u::rem << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) divr16u::rem ← (word~) divr16u::$0 + (byte~) divr16u::$1 ← > (word) divr16u::dividend + (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 + (boolean~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) divr16u::$4 ← ! (boolean~) divr16u::$3 + if((boolean~) divr16u::$4) goto divr16u::@2 + to:divr16u::@4 +divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 + (word~) divr16u::$6 ← (word) divr16u::dividend << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) divr16u::dividend ← (word~) divr16u::$6 + (word~) divr16u::$7 ← (word) divr16u::quotient << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) divr16u::quotient ← (word~) divr16u::$7 + (boolean~) divr16u::$8 ← (word) divr16u::rem >= (word) divr16u::divisor + (boolean~) divr16u::$9 ← ! (boolean~) divr16u::$8 + if((boolean~) divr16u::$9) goto divr16u::@3 + to:divr16u::@5 +divr16u::@4: scope:[divr16u] from divr16u::@1 + (word~) divr16u::$5 ← (word) divr16u::rem | (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) divr16u::rem ← (word~) divr16u::$5 + to:divr16u::@2 +divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 + (byte) divr16u::i ← ++ (byte) divr16u::i + (boolean~) divr16u::$11 ← (byte) divr16u::i != (byte/signed byte/word/signed word/dword/signed dword) 16 + if((boolean~) divr16u::$11) goto divr16u::@1 + to:divr16u::@6 +divr16u::@5: scope:[divr16u] from divr16u::@2 + (word) divr16u::quotient ← ++ (word) divr16u::quotient + (word~) divr16u::$10 ← (word) divr16u::rem - (word) divr16u::divisor + (word) divr16u::rem ← (word~) divr16u::$10 + to:divr16u::@3 +divr16u::@6: scope:[divr16u] from divr16u::@3 + (word) rem16u ← (word) divr16u::rem + (word) divr16u::return ← (word) divr16u::quotient + to:divr16u::@return +divr16u::@return: scope:[divr16u] from divr16u::@6 divr16u::@7 + (word) divr16u::return ← (word) divr16u::return + return (word) divr16u::return + to:@return +divr16u::@7: scope:[divr16u] from + to:divr16u::@return +@3: scope:[] from @2 + to:@4 +div16u: scope:[div16u] from + (word~) div16u::$0 ← call divr16u (word) div16u::dividend (word) div16u::divisor (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) div16u::return ← (word~) div16u::$0 + to:div16u::@return +div16u::@return: scope:[div16u] from div16u div16u::@1 + (word) div16u::return ← (word) div16u::return + return (word) div16u::return + to:@return +div16u::@1: scope:[div16u] from + to:div16u::@return +@4: scope:[] from @3 + to:@5 +div32u16u: scope:[div32u16u] from + (word~) div32u16u::$0 ← > (dword) div32u16u::dividend + (word~) div32u16u::$1 ← call divr16u (word~) div32u16u::$0 (word) div32u16u::divisor (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) div32u16u::quotient_hi ← (word~) div32u16u::$1 + (word~) div32u16u::$2 ← < (dword) div32u16u::dividend + (word~) div32u16u::$3 ← call divr16u (word~) div32u16u::$2 (word) div32u16u::divisor (word) rem16u + (word) div32u16u::quotient_lo ← (word~) div32u16u::$3 + (dword) div32u16u::quotient ← { (word) div32u16u::quotient_hi, (word) div32u16u::quotient_lo } + (dword) div32u16u::return ← (dword) div32u16u::quotient + to:div32u16u::@return +div32u16u::@return: scope:[div32u16u] from div32u16u div32u16u::@1 + (dword) div32u16u::return ← (dword) div32u16u::return + return (dword) div32u16u::return + to:@return +div32u16u::@1: scope:[div32u16u] from + to:div32u16u::@return +@5: scope:[] from @4 + (signed byte) rem8s ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@6 +div8s: scope:[div8s] from + (byte) div8s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) div8s::dividendu ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div8s::$0 ← (signed byte) div8s::dividend < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div8s::$1 ← ! (boolean~) div8s::$0 + if((boolean~) div8s::$1) goto div8s::@1 + to:div8s::@7 +div8s::@1: scope:[div8s] from div8s div8s::@8 + (byte~) div8s::$4 ← ((byte)) (signed byte) div8s::dividend + (byte) div8s::dividendu ← (byte~) div8s::$4 + to:div8s::@2 +div8s::@7: scope:[div8s] from div8s + (signed byte~) div8s::$2 ← - (signed byte) div8s::dividend + (byte~) div8s::$3 ← ((byte)) (signed byte~) div8s::$2 + (byte) div8s::dividendu ← (byte~) div8s::$3 + (byte) div8s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:div8s::@2 +div8s::@2: scope:[div8s] from div8s::@1 div8s::@7 + (byte) div8s::divisoru ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div8s::$5 ← (signed byte) div8s::divisor < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div8s::$6 ← ! (boolean~) div8s::$5 + if((boolean~) div8s::$6) goto div8s::@3 + to:div8s::@9 +div8s::@8: scope:[div8s] from + to:div8s::@1 +div8s::@3: scope:[div8s] from div8s::@10 div8s::@2 + (byte~) div8s::$10 ← ((byte)) (signed byte) div8s::divisor + (byte) div8s::divisoru ← (byte~) div8s::$10 + to:div8s::@4 +div8s::@9: scope:[div8s] from div8s::@2 + (signed byte~) div8s::$7 ← - (signed byte) div8s::divisor + (byte~) div8s::$8 ← ((byte)) (signed byte~) div8s::$7 + (byte) div8s::divisoru ← (byte~) div8s::$8 + (byte~) div8s::$9 ← (byte) div8s::neg ^ (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) div8s::neg ← (byte~) div8s::$9 + to:div8s::@4 +div8s::@4: scope:[div8s] from div8s::@3 div8s::@9 + (byte~) div8s::$11 ← call div8u (byte) div8s::dividendu (byte) div8s::divisoru + (byte) div8s::resultu ← (byte~) div8s::$11 + (boolean~) div8s::$12 ← (byte) div8s::neg == (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div8s::$13 ← ! (boolean~) div8s::$12 + if((boolean~) div8s::$13) goto div8s::@5 + to:div8s::@11 +div8s::@10: scope:[div8s] from + to:div8s::@3 +div8s::@5: scope:[div8s] from div8s::@13 div8s::@4 + (signed byte~) div8s::$16 ← ((signed byte)) (byte) rem8u + (signed byte~) div8s::$17 ← - (signed byte~) div8s::$16 + (signed byte) rem8s ← (signed byte~) div8s::$17 + (signed byte~) div8s::$18 ← ((signed byte)) (byte) div8s::resultu + (signed byte~) div8s::$19 ← - (signed byte~) div8s::$18 + (signed byte) div8s::return ← (signed byte~) div8s::$19 + to:div8s::@return +div8s::@11: scope:[div8s] from div8s::@4 + (signed byte~) div8s::$14 ← ((signed byte)) (byte) rem8u + (signed byte) rem8s ← (signed byte~) div8s::$14 + (signed byte~) div8s::$15 ← ((signed byte)) (byte) div8s::resultu + (signed byte) div8s::return ← (signed byte~) div8s::$15 + to:div8s::@return +div8s::@return: scope:[div8s] from div8s::@11 div8s::@5 div8s::@6 + (signed byte) div8s::return ← (signed byte) div8s::return + return (signed byte) div8s::return + to:@return +div8s::@12: scope:[div8s] from + to:div8s::@6 +div8s::@6: scope:[div8s] from div8s::@12 div8s::@14 + to:div8s::@return +div8s::@13: scope:[div8s] from + to:div8s::@5 +div8s::@14: scope:[div8s] from + to:div8s::@6 +@6: scope:[] from @5 + (signed word) rem16s ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@7 +div16s: scope:[div16s] from + (byte) div16s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) div16s::dividendu ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div16s::$0 ← (signed word) div16s::dividend < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div16s::$1 ← ! (boolean~) div16s::$0 + if((boolean~) div16s::$1) goto div16s::@1 + to:div16s::@7 +div16s::@1: scope:[div16s] from div16s div16s::@8 + (word~) div16s::$4 ← ((word)) (signed word) div16s::dividend + (word) div16s::dividendu ← (word~) div16s::$4 + to:div16s::@2 +div16s::@7: scope:[div16s] from div16s + (signed word~) div16s::$2 ← - (signed word) div16s::dividend + (word~) div16s::$3 ← ((word)) (signed word~) div16s::$2 + (word) div16s::dividendu ← (word~) div16s::$3 + (byte) div16s::neg ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:div16s::@2 +div16s::@2: scope:[div16s] from div16s::@1 div16s::@7 + (word) div16s::divisoru ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div16s::$5 ← (signed word) div16s::divisor < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div16s::$6 ← ! (boolean~) div16s::$5 + if((boolean~) div16s::$6) goto div16s::@3 + to:div16s::@9 +div16s::@8: scope:[div16s] from + to:div16s::@1 +div16s::@3: scope:[div16s] from div16s::@10 div16s::@2 + (word~) div16s::$10 ← ((word)) (signed word) div16s::divisor + (word) div16s::divisoru ← (word~) div16s::$10 + to:div16s::@4 +div16s::@9: scope:[div16s] from div16s::@2 + (signed word~) div16s::$7 ← - (signed word) div16s::divisor + (word~) div16s::$8 ← ((word)) (signed word~) div16s::$7 + (word) div16s::divisoru ← (word~) div16s::$8 + (byte~) div16s::$9 ← (byte) div16s::neg ^ (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) div16s::neg ← (byte~) div16s::$9 + to:div16s::@4 +div16s::@4: scope:[div16s] from div16s::@3 div16s::@9 + (word~) div16s::$11 ← call div16u (word) div16s::dividendu (word) div16s::divisoru + (word) div16s::resultu ← (word~) div16s::$11 + (boolean~) div16s::$12 ← (byte) div16s::neg == (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) div16s::$13 ← ! (boolean~) div16s::$12 + if((boolean~) div16s::$13) goto div16s::@5 + to:div16s::@11 +div16s::@10: scope:[div16s] from + to:div16s::@3 +div16s::@5: scope:[div16s] from div16s::@13 div16s::@4 + (signed word~) div16s::$16 ← ((signed word)) (word) rem16u + (signed word~) div16s::$17 ← - (signed word~) div16s::$16 + (signed word) rem16s ← (signed word~) div16s::$17 + (signed word~) div16s::$18 ← ((signed word)) (word) div16s::resultu + (signed word~) div16s::$19 ← - (signed word~) div16s::$18 + (signed word) div16s::return ← (signed word~) div16s::$19 + to:div16s::@return +div16s::@11: scope:[div16s] from div16s::@4 + (signed word~) div16s::$14 ← ((signed word)) (word) rem16u + (signed word) rem16s ← (signed word~) div16s::$14 + (signed word~) div16s::$15 ← ((signed word)) (word) div16s::resultu + (signed word) div16s::return ← (signed word~) div16s::$15 + to:div16s::@return +div16s::@return: scope:[div16s] from div16s::@11 div16s::@5 div16s::@6 + (signed word) div16s::return ← (signed word) div16s::return + return (signed word) div16s::return + to:@return +div16s::@12: scope:[div16s] from + to:div16s::@6 +div16s::@6: scope:[div16s] from div16s::@12 div16s::@14 + to:div16s::@return +div16s::@13: scope:[div16s] from + to:div16s::@5 +div16s::@14: scope:[div16s] from + to:div16s::@6 +@7: scope:[] from @6 + to:@8 +mul8u: scope:[mul8u] from + (word) mul8u::res ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) mul8u::mb ← ((word)) (byte) mul8u::b + to:mul8u::@1 +mul8u::@1: scope:[mul8u] from mul8u mul8u::@4 + (boolean~) mul8u::$0 ← (byte) mul8u::a != (byte/signed byte/word/signed word/dword/signed dword) 0 + if((boolean~) mul8u::$0) goto mul8u::@2 + to:mul8u::@5 +mul8u::@2: scope:[mul8u] from mul8u::@1 mul8u::@6 + (byte~) mul8u::$1 ← (byte) mul8u::a & (byte/signed byte/word/signed word/dword/signed dword) 1 + (boolean~) mul8u::$2 ← (byte~) mul8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mul8u::$3 ← ! (boolean~) mul8u::$2 + if((boolean~) mul8u::$3) goto mul8u::@4 + to:mul8u::@7 +mul8u::@5: scope:[mul8u] from mul8u::@1 + to:mul8u::@3 +mul8u::@3: scope:[mul8u] from mul8u::@5 mul8u::@8 + (word) mul8u::return ← (word) mul8u::res + to:mul8u::@return +mul8u::@6: scope:[mul8u] from + to:mul8u::@2 +mul8u::@4: scope:[mul8u] from mul8u::@2 mul8u::@7 + (byte~) mul8u::$5 ← (byte) mul8u::a >> (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mul8u::a ← (byte~) mul8u::$5 + (word~) mul8u::$6 ← (word) mul8u::mb << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) mul8u::mb ← (word~) mul8u::$6 + to:mul8u::@1 +mul8u::@7: scope:[mul8u] from mul8u::@2 + (word~) mul8u::$4 ← (word) mul8u::res + (word) mul8u::mb + (word) mul8u::res ← (word~) mul8u::$4 + to:mul8u::@4 +mul8u::@8: scope:[mul8u] from + to:mul8u::@3 +mul8u::@return: scope:[mul8u] from mul8u::@3 mul8u::@9 + (word) mul8u::return ← (word) mul8u::return + return (word) mul8u::return + to:@return +mul8u::@9: scope:[mul8u] from + to:mul8u::@return +@8: scope:[] from @7 + to:@9 +mul8s: scope:[mul8s] from + (byte~) mul8s::$0 ← ((byte)) (signed byte) mul8s::a + (byte~) mul8s::$1 ← ((byte)) (signed byte) mul8s::b + (word~) mul8s::$2 ← call mul8u (byte~) mul8s::$0 (byte~) mul8s::$1 + (word) mul8s::m ← (word~) mul8s::$2 + (boolean~) mul8s::$3 ← (signed byte) mul8s::a < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mul8s::$4 ← ! (boolean~) mul8s::$3 + if((boolean~) mul8s::$4) goto mul8s::@1 + to:mul8s::@3 +mul8s::@1: scope:[mul8s] from mul8s mul8s::@3 + (boolean~) mul8s::$9 ← (signed byte) mul8s::b < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mul8s::$10 ← ! (boolean~) mul8s::$9 + if((boolean~) mul8s::$10) goto mul8s::@2 + to:mul8s::@4 +mul8s::@3: scope:[mul8s] from mul8s + (byte~) mul8s::$5 ← > (word) mul8s::m + (byte~) mul8s::$6 ← > (word) mul8s::m + (byte~) mul8s::$7 ← ((byte)) (signed byte) mul8s::b + (byte/signed byte/word/signed word/dword/signed dword~) mul8s::$8 ← (byte~) mul8s::$6 - (byte~) mul8s::$7 + (byte/signed byte/word/signed word/dword/signed dword~) mul8s::$16 ← (byte/signed byte/word/signed word/dword/signed dword~) mul8s::$8 + (word) mul8s::m ← (word) mul8s::m hi= (byte/signed byte/word/signed word/dword/signed dword~) mul8s::$16 + to:mul8s::@1 +mul8s::@2: scope:[mul8s] from mul8s::@1 mul8s::@4 + (signed word~) mul8s::$15 ← ((signed word)) (word) mul8s::m + (signed word) mul8s::return ← (signed word~) mul8s::$15 + to:mul8s::@return +mul8s::@4: scope:[mul8s] from mul8s::@1 + (byte~) mul8s::$11 ← > (word) mul8s::m + (byte~) mul8s::$12 ← > (word) mul8s::m + (byte~) mul8s::$13 ← ((byte)) (signed byte) mul8s::a + (byte/signed byte/word/signed word/dword/signed dword~) mul8s::$14 ← (byte~) mul8s::$12 - (byte~) mul8s::$13 + (byte/signed byte/word/signed word/dword/signed dword~) mul8s::$17 ← (byte/signed byte/word/signed word/dword/signed dword~) mul8s::$14 + (word) mul8s::m ← (word) mul8s::m hi= (byte/signed byte/word/signed word/dword/signed dword~) mul8s::$17 + to:mul8s::@2 +mul8s::@return: scope:[mul8s] from mul8s::@2 mul8s::@5 + (signed word) mul8s::return ← (signed word) mul8s::return + return (signed word) mul8s::return + to:@return +mul8s::@5: scope:[mul8s] from + to:mul8s::@return +@9: scope:[] from @8 + to:@10 +mul16u: scope:[mul16u] from + (dword) mul16u::res ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (dword) mul16u::mb ← ((dword)) (word) mul16u::b + to:mul16u::@1 +mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 + (boolean~) mul16u::$0 ← (word) mul16u::a != (byte/signed byte/word/signed word/dword/signed dword) 0 + if((boolean~) mul16u::$0) goto mul16u::@2 + to:mul16u::@5 +mul16u::@2: scope:[mul16u] from mul16u::@1 mul16u::@6 + (byte~) mul16u::$1 ← (word) mul16u::a & (byte/signed byte/word/signed word/dword/signed dword) 1 + (boolean~) mul16u::$2 ← (byte~) mul16u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mul16u::$3 ← ! (boolean~) mul16u::$2 + if((boolean~) mul16u::$3) goto mul16u::@4 + to:mul16u::@7 +mul16u::@5: scope:[mul16u] from mul16u::@1 + to:mul16u::@3 +mul16u::@3: scope:[mul16u] from mul16u::@5 mul16u::@8 + (dword) mul16u::return ← (dword) mul16u::res + to:mul16u::@return +mul16u::@6: scope:[mul16u] from + to:mul16u::@2 +mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 + (word~) mul16u::$5 ← (word) mul16u::a >> (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) mul16u::a ← (word~) mul16u::$5 + (dword~) mul16u::$6 ← (dword) mul16u::mb << (byte/signed byte/word/signed word/dword/signed dword) 1 + (dword) mul16u::mb ← (dword~) mul16u::$6 + to:mul16u::@1 +mul16u::@7: scope:[mul16u] from mul16u::@2 + (dword~) mul16u::$4 ← (dword) mul16u::res + (dword) mul16u::mb + (dword) mul16u::res ← (dword~) mul16u::$4 + to:mul16u::@4 +mul16u::@8: scope:[mul16u] from + to:mul16u::@3 +mul16u::@return: scope:[mul16u] from mul16u::@3 mul16u::@9 + (dword) mul16u::return ← (dword) mul16u::return + return (dword) mul16u::return + to:@return +mul16u::@9: scope:[mul16u] from + to:mul16u::@return +@10: scope:[] from @9 + to:@11 +mul16s: scope:[mul16s] from + (word~) mul16s::$0 ← ((word)) (signed word) mul16s::a + (word~) mul16s::$1 ← ((word)) (signed word) mul16s::b + (dword~) mul16s::$2 ← call mul16u (word~) mul16s::$0 (word~) mul16s::$1 + (dword) mul16s::m ← (dword~) mul16s::$2 + (boolean~) mul16s::$3 ← (signed word) mul16s::a < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mul16s::$4 ← ! (boolean~) mul16s::$3 + if((boolean~) mul16s::$4) goto mul16s::@1 + to:mul16s::@3 +mul16s::@1: scope:[mul16s] from mul16s mul16s::@3 + (boolean~) mul16s::$9 ← (signed word) mul16s::b < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mul16s::$10 ← ! (boolean~) mul16s::$9 + if((boolean~) mul16s::$10) goto mul16s::@2 + to:mul16s::@4 +mul16s::@3: scope:[mul16s] from mul16s + (word~) mul16s::$5 ← > (dword) mul16s::m + (word~) mul16s::$6 ← > (dword) mul16s::m + (word~) mul16s::$7 ← ((word)) (signed word) mul16s::b + (word~) mul16s::$8 ← (word~) mul16s::$6 - (word~) mul16s::$7 + (word~) mul16s::$16 ← (word~) mul16s::$8 + (dword) mul16s::m ← (dword) mul16s::m hi= (word~) mul16s::$16 + to:mul16s::@1 +mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4 + (signed dword~) mul16s::$15 ← ((signed dword)) (dword) mul16s::m + (signed dword) mul16s::return ← (signed dword~) mul16s::$15 + to:mul16s::@return +mul16s::@4: scope:[mul16s] from mul16s::@1 + (word~) mul16s::$11 ← > (dword) mul16s::m + (word~) mul16s::$12 ← > (dword) mul16s::m + (word~) mul16s::$13 ← ((word)) (signed word) mul16s::a + (word~) mul16s::$14 ← (word~) mul16s::$12 - (word~) mul16s::$13 + (word~) mul16s::$17 ← (word~) mul16s::$14 + (dword) mul16s::m ← (dword) mul16s::m hi= (word~) mul16s::$17 + to:mul16s::@2 +mul16s::@return: scope:[mul16s] from mul16s::@2 mul16s::@5 + (signed dword) mul16s::return ← (signed dword) mul16s::return + return (signed dword) mul16s::return + to:@return +mul16s::@5: scope:[mul16s] from + to:mul16s::@return +@11: scope:[] from @10 + (dword) PI2_u4f28 ← (dword/signed dword) 1686629713 + (dword) PI_u4f28 ← (dword/signed dword) 843314857 + (dword) PI_HALF_u4f28 ← (dword/signed dword) 421657428 + (word) PI2_u4f12 ← (word/signed word/dword/signed dword) 25736 + (word) PI_u4f12 ← (word/signed word/dword/signed dword) 12868 + (word) PI_HALF_u4f12 ← (word/signed word/dword/signed dword) 6434 + to:@12 +sin16s_gen: scope:[sin16s_gen] from + (dword~) sin16s_gen::$0 ← call div32u16u (dword) PI2_u4f28 (word) sin16s_gen::wavelength + (dword) sin16s_gen::step ← (dword~) sin16s_gen::$0 + (dword) sin16s_gen::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16s_gen::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:sin16s_gen::@1 +sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen sin16s_gen::@1 + (signed word~) sin16s_gen::$1 ← call sin16s (dword) sin16s_gen::x + *((signed word*) sin16s_gen::sintab) ← (signed word~) sin16s_gen::$1 + (signed word*~) sin16s_gen::$2 ← (signed word*) sin16s_gen::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2 + (signed word*) sin16s_gen::sintab ← (signed word*~) sin16s_gen::$2 + (dword~) sin16s_gen::$3 ← (dword) sin16s_gen::x + (dword) sin16s_gen::step + (dword) sin16s_gen::x ← (dword~) sin16s_gen::$3 + (word) sin16s_gen::i ← ++ (word) sin16s_gen::i + (boolean~) sin16s_gen::$4 ← (word) sin16s_gen::i < (word) sin16s_gen::wavelength + if((boolean~) sin16s_gen::$4) goto sin16s_gen::@1 + to:sin16s_gen::@2 +sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen::@1 + to:sin16s_gen::@return +sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@2 + return + to:@return +@12: scope:[] from @11 + to:@13 +sin8s_gen: scope:[sin8s_gen] from + (word~) sin8s_gen::$0 ← call div16u (word) PI2_u4f12 (word) sin8s_gen::wavelength + (word) sin8s_gen::step ← (word~) sin8s_gen::$0 + (word) sin8s_gen::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin8s_gen::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:sin8s_gen::@1 +sin8s_gen::@1: scope:[sin8s_gen] from sin8s_gen sin8s_gen::@1 + (signed byte~) sin8s_gen::$1 ← call sin8s (word) sin8s_gen::x + *((signed byte*) sin8s_gen::sintab) ← (signed byte~) sin8s_gen::$1 + (signed byte*) sin8s_gen::sintab ← ++ (signed byte*) sin8s_gen::sintab + (word~) sin8s_gen::$2 ← (word) sin8s_gen::x + (word) sin8s_gen::step + (word) sin8s_gen::x ← (word~) sin8s_gen::$2 + (word) sin8s_gen::i ← ++ (word) sin8s_gen::i + (boolean~) sin8s_gen::$3 ← (word) sin8s_gen::i < (word) sin8s_gen::wavelength + if((boolean~) sin8s_gen::$3) goto sin8s_gen::@1 + to:sin8s_gen::@2 +sin8s_gen::@2: scope:[sin8s_gen] from sin8s_gen::@1 + to:sin8s_gen::@return +sin8s_gen::@return: scope:[sin8s_gen] from sin8s_gen::@2 + return + to:@return +@13: scope:[] from @12 + to:@14 +sin16s: scope:[sin16s] from + (byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin16s::$0 ← (dword) sin16s::x >= (dword) PI_u4f28 + (boolean~) sin16s::$1 ← ! (boolean~) sin16s::$0 + if((boolean~) sin16s::$1) goto sin16s::@1 + to:sin16s::@4 +sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 + (boolean~) sin16s::$3 ← (dword) sin16s::x >= (dword) PI_HALF_u4f28 + (boolean~) sin16s::$4 ← ! (boolean~) sin16s::$3 + if((boolean~) sin16s::$4) goto sin16s::@2 + to:sin16s::@5 +sin16s::@4: scope:[sin16s] from sin16s + (dword~) sin16s::$2 ← (dword) sin16s::x - (dword) PI_u4f28 + (dword) sin16s::x ← (dword~) sin16s::$2 + (byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:sin16s::@1 +sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 + (dword~) sin16s::$6 ← (dword) sin16s::x << (byte/signed byte/word/signed word/dword/signed dword) 3 + (word~) sin16s::$7 ← > (dword~) sin16s::$6 + (word) sin16s::x1 ← (word~) sin16s::$7 + (word~) sin16s::$8 ← call mulu16_sel (word) sin16s::x1 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16s::x2 ← (word~) sin16s::$8 + (word~) sin16s::$9 ← call mulu16_sel (word) sin16s::x2 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) sin16s::x3 ← (word~) sin16s::$9 + (word/signed word/dword/signed dword~) sin16s::$10 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 + (word~) sin16s::$11 ← call mulu16_sel (word) sin16s::x3 (word/signed word/dword/signed dword~) sin16s::$10 (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) sin16s::x3_6 ← (word~) sin16s::$11 + (word~) sin16s::$12 ← (word) sin16s::x1 - (word) sin16s::x3_6 + (word) sin16s::usinx ← (word~) sin16s::$12 + (word~) sin16s::$13 ← call mulu16_sel (word) sin16s::x3 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16s::x4 ← (word~) sin16s::$13 + (word~) sin16s::$14 ← call mulu16_sel (word) sin16s::x4 (word) sin16s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16s::x5 ← (word~) sin16s::$14 + (word~) sin16s::$15 ← (word) sin16s::x5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + (word) sin16s::x5_128 ← (word~) sin16s::$15 + (word~) sin16s::$16 ← (word) sin16s::usinx + (word) sin16s::x5_128 + (word) sin16s::usinx ← (word~) sin16s::$16 + (signed word~) sin16s::$17 ← ((signed word)) (word) sin16s::usinx + (signed word) sin16s::sinx ← (signed word~) sin16s::$17 + (boolean~) sin16s::$18 ← (byte) sin16s::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin16s::$19 ← ! (boolean~) sin16s::$18 + if((boolean~) sin16s::$19) goto sin16s::@3 + to:sin16s::@6 +sin16s::@5: scope:[sin16s] from sin16s::@1 + (dword~) sin16s::$5 ← (dword) PI_u4f28 - (dword) sin16s::x + (dword) sin16s::x ← (dword~) sin16s::$5 + to:sin16s::@2 +sin16s::@3: scope:[sin16s] from sin16s::@2 sin16s::@6 + (signed word) sin16s::return ← (signed word) sin16s::sinx + to:sin16s::@return +sin16s::@6: scope:[sin16s] from sin16s::@2 + (signed word~) sin16s::$20 ← ((signed word)) (word) sin16s::usinx + (signed word~) sin16s::$21 ← - (signed word~) sin16s::$20 + (signed word) sin16s::sinx ← (signed word~) sin16s::$21 + to:sin16s::@3 +sin16s::@return: scope:[sin16s] from sin16s::@3 sin16s::@7 + (signed word) sin16s::return ← (signed word) sin16s::return + return (signed word) sin16s::return + to:@return +sin16s::@7: scope:[sin16s] from + to:sin16s::@return +@14: scope:[] from @13 + to:@15 +sin8s: scope:[sin8s] from + (byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin8s::$0 ← (word) sin8s::x >= (word) PI_u4f12 + (boolean~) sin8s::$1 ← ! (boolean~) sin8s::$0 + if((boolean~) sin8s::$1) goto sin8s::@1 + to:sin8s::@4 +sin8s::@1: scope:[sin8s] from sin8s sin8s::@4 + (boolean~) sin8s::$3 ← (word) sin8s::x >= (word) PI_HALF_u4f12 + (boolean~) sin8s::$4 ← ! (boolean~) sin8s::$3 + if((boolean~) sin8s::$4) goto sin8s::@2 + to:sin8s::@5 +sin8s::@4: scope:[sin8s] from sin8s + (word~) sin8s::$2 ← (word) sin8s::x - (word) PI_u4f12 + (word) sin8s::x ← (word~) sin8s::$2 + (byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:sin8s::@1 +sin8s::@2: scope:[sin8s] from sin8s::@1 sin8s::@5 + (word~) sin8s::$6 ← (word) sin8s::x << (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) sin8s::$7 ← > (word~) sin8s::$6 + (byte) sin8s::x1 ← (byte~) sin8s::$7 + (byte~) sin8s::$8 ← call mulu8_sel (byte) sin8s::x1 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) sin8s::x2 ← (byte~) sin8s::$8 + (byte~) sin8s::$9 ← call mulu8_sel (byte) sin8s::x2 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) sin8s::x3 ← (byte~) sin8s::$9 + (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$10 ← (word/signed word/dword/signed dword) 256 / (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte~) sin8s::$11 ← call mulu8_sel (byte) sin8s::x3 (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$10 (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) sin8s::x3_6 ← (byte~) sin8s::$11 + (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$12 ← (byte) sin8s::x1 - (byte) sin8s::x3_6 + (byte) sin8s::usinx ← (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$12 + (byte~) sin8s::$13 ← call mulu8_sel (byte) sin8s::x3 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) sin8s::x4 ← (byte~) sin8s::$13 + (byte~) sin8s::$14 ← call mulu8_sel (byte) sin8s::x4 (byte) sin8s::x1 (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) sin8s::x5 ← (byte~) sin8s::$14 + (byte~) sin8s::$15 ← (byte) sin8s::x5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) sin8s::x5_128 ← (byte~) sin8s::$15 + (byte/word~) sin8s::$16 ← (byte) sin8s::usinx + (byte) sin8s::x5_128 + (byte) sin8s::usinx ← (byte/word~) sin8s::$16 + (signed byte~) sin8s::$17 ← ((signed byte)) (byte) sin8s::usinx + (signed byte) sin8s::sinx ← (signed byte~) sin8s::$17 + (boolean~) sin8s::$18 ← (byte) sin8s::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin8s::$19 ← ! (boolean~) sin8s::$18 + if((boolean~) sin8s::$19) goto sin8s::@3 + to:sin8s::@6 +sin8s::@5: scope:[sin8s] from sin8s::@1 + (word~) sin8s::$5 ← (word) PI_u4f12 - (word) sin8s::x + (word) sin8s::x ← (word~) sin8s::$5 + to:sin8s::@2 +sin8s::@3: scope:[sin8s] from sin8s::@2 sin8s::@6 + (signed byte) sin8s::return ← (signed byte) sin8s::sinx + to:sin8s::@return +sin8s::@6: scope:[sin8s] from sin8s::@2 + (signed byte~) sin8s::$20 ← ((signed byte)) (byte) sin8s::usinx + (signed byte~) sin8s::$21 ← - (signed byte~) sin8s::$20 + (signed byte) sin8s::sinx ← (signed byte~) sin8s::$21 + to:sin8s::@3 +sin8s::@return: scope:[sin8s] from sin8s::@3 sin8s::@7 + (signed byte) sin8s::return ← (signed byte) sin8s::return + return (signed byte) sin8s::return + to:@return +sin8s::@7: scope:[sin8s] from + to:sin8s::@return +@15: scope:[] from @14 + to:@16 +sin16ss_gen: scope:[sin16ss_gen] from + (dword~) sin16ss_gen::$0 ← call div32u16u (dword) PI2_u4f28 (word) sin16ss_gen::wavelength + (dword) sin16ss_gen::step ← (dword~) sin16ss_gen::$0 + (dword) sin16ss_gen::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16ss_gen::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:sin16ss_gen::@1 +sin16ss_gen::@1: scope:[sin16ss_gen] from sin16ss_gen sin16ss_gen::@5 + (word~) sin16ss_gen::$1 ← > (dword) sin16ss_gen::x + (word) sin16ss_gen::x1 ← (word~) sin16ss_gen::$1 + (byte) sin16ss_gen::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin16ss_gen::$2 ← (word) sin16ss_gen::x1 >= (word) PI_u4f12 + (boolean~) sin16ss_gen::$3 ← ! (boolean~) sin16ss_gen::$2 + if((boolean~) sin16ss_gen::$3) goto sin16ss_gen::@2 + to:sin16ss_gen::@6 +sin16ss_gen::@2: scope:[sin16ss_gen] from sin16ss_gen::@1 sin16ss_gen::@6 + (boolean~) sin16ss_gen::$5 ← (word) sin16ss_gen::x1 >= (word) PI_HALF_u4f12 + (boolean~) sin16ss_gen::$6 ← ! (boolean~) sin16ss_gen::$5 + if((boolean~) sin16ss_gen::$6) goto sin16ss_gen::@3 + to:sin16ss_gen::@7 +sin16ss_gen::@6: scope:[sin16ss_gen] from sin16ss_gen::@1 + (word~) sin16ss_gen::$4 ← (word) sin16ss_gen::x1 - (word) PI_u4f12 + (word) sin16ss_gen::x1 ← (word~) sin16ss_gen::$4 + (byte) sin16ss_gen::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:sin16ss_gen::@2 +sin16ss_gen::@3: scope:[sin16ss_gen] from sin16ss_gen::@2 sin16ss_gen::@7 + (word~) sin16ss_gen::$8 ← call mulu16_sel (word) sin16ss_gen::x1 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 + (word) sin16ss_gen::x2 ← (word~) sin16ss_gen::$8 + (word~) sin16ss_gen::$9 ← call mulu16_sel (word) sin16ss_gen::x2 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 + (word) sin16ss_gen::x3 ← (word~) sin16ss_gen::$9 + (word/signed word/dword/signed dword~) sin16ss_gen::$10 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 + (word~) sin16ss_gen::$11 ← call mulu16_sel (word) sin16ss_gen::x3 (word/signed word/dword/signed dword~) sin16ss_gen::$10 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16ss_gen::x3_6 ← (word~) sin16ss_gen::$11 + (word~) sin16ss_gen::$12 ← (word) sin16ss_gen::x1 - (word) sin16ss_gen::x3_6 + (word) sin16ss_gen::usinx ← (word~) sin16ss_gen::$12 + (word~) sin16ss_gen::$13 ← call mulu16_sel (word) sin16ss_gen::x3 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 + (word) sin16ss_gen::x4 ← (word~) sin16ss_gen::$13 + (word~) sin16ss_gen::$14 ← call mulu16_sel (word) sin16ss_gen::x4 (word) sin16ss_gen::x1 (byte/signed byte/word/signed word/dword/signed dword) 4 + (word) sin16ss_gen::x5 ← (word~) sin16ss_gen::$14 + (word/signed word/dword/signed dword~) sin16ss_gen::$15 ← (dword/signed dword) 65536 / (byte/word/signed word/dword/signed dword) 128 + (word~) sin16ss_gen::$16 ← call mulu16_sel (word) sin16ss_gen::x5 (word/signed word/dword/signed dword~) sin16ss_gen::$15 (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16ss_gen::x5_128 ← (word~) sin16ss_gen::$16 + (word~) sin16ss_gen::$17 ← (word) sin16ss_gen::usinx + (word) sin16ss_gen::x5_128 + (word) sin16ss_gen::usinx ← (word~) sin16ss_gen::$17 + (boolean~) sin16ss_gen::$18 ← (byte) sin16ss_gen::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin16ss_gen::$19 ← ! (boolean~) sin16ss_gen::$18 + if((boolean~) sin16ss_gen::$19) goto sin16ss_gen::@4 + to:sin16ss_gen::@8 +sin16ss_gen::@7: scope:[sin16ss_gen] from sin16ss_gen::@2 + (word~) sin16ss_gen::$7 ← (word) PI_u4f12 - (word) sin16ss_gen::x1 + (word) sin16ss_gen::x1 ← (word~) sin16ss_gen::$7 + to:sin16ss_gen::@3 +sin16ss_gen::@4: scope:[sin16ss_gen] from sin16ss_gen::@3 sin16ss_gen::@9 + (signed word~) sin16ss_gen::$22 ← ((signed word)) (word) sin16ss_gen::usinx + (signed word) sin16ss_gen::sinx ← (signed word~) sin16ss_gen::$22 + to:sin16ss_gen::@5 +sin16ss_gen::@8: scope:[sin16ss_gen] from sin16ss_gen::@3 + (signed word~) sin16ss_gen::$20 ← ((signed word)) (word) sin16ss_gen::usinx + (signed word~) sin16ss_gen::$21 ← - (signed word~) sin16ss_gen::$20 + (signed word) sin16ss_gen::sinx ← (signed word~) sin16ss_gen::$21 + to:sin16ss_gen::@5 +sin16ss_gen::@5: scope:[sin16ss_gen] from sin16ss_gen::@4 sin16ss_gen::@8 + *((signed word*) sin16ss_gen::sintab) ← (signed word) sin16ss_gen::sinx + (signed word*~) sin16ss_gen::$23 ← (signed word*) sin16ss_gen::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2 + (signed word*) sin16ss_gen::sintab ← (signed word*~) sin16ss_gen::$23 + (dword~) sin16ss_gen::$24 ← (dword) sin16ss_gen::x + (dword) sin16ss_gen::step + (dword) sin16ss_gen::x ← (dword~) sin16ss_gen::$24 + (word) sin16ss_gen::i ← ++ (word) sin16ss_gen::i + (boolean~) sin16ss_gen::$25 ← (word) sin16ss_gen::i < (word) sin16ss_gen::wavelength + if((boolean~) sin16ss_gen::$25) goto sin16ss_gen::@1 + to:sin16ss_gen::@10 +sin16ss_gen::@9: scope:[sin16ss_gen] from + to:sin16ss_gen::@4 +sin16ss_gen::@10: scope:[sin16ss_gen] from sin16ss_gen::@5 + to:sin16ss_gen::@return +sin16ss_gen::@return: scope:[sin16ss_gen] from sin16ss_gen::@10 + return + to:@return +@16: scope:[] from @15 + to:@17 +mulu16_sel: scope:[mulu16_sel] from + (dword~) mulu16_sel::$0 ← call mul16u (word) mulu16_sel::v1 (word) mulu16_sel::v2 + (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select + (word~) mulu16_sel::$2 ← > (dword~) mulu16_sel::$1 + (word) mulu16_sel::return ← (word~) mulu16_sel::$2 + to:mulu16_sel::@return +mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel mulu16_sel::@1 + (word) mulu16_sel::return ← (word) mulu16_sel::return + return (word) mulu16_sel::return + to:@return +mulu16_sel::@1: scope:[mulu16_sel] from + to:mulu16_sel::@return +@17: scope:[] from @16 + to:@18 +mulu8_sel: scope:[mulu8_sel] from + (word~) mulu8_sel::$0 ← call mul8u (byte) mulu8_sel::v1 (byte) mulu8_sel::v2 + (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select + (byte~) mulu8_sel::$2 ← > (word~) mulu8_sel::$1 + (byte) mulu8_sel::return ← (byte~) mulu8_sel::$2 + to:mulu8_sel::@return +mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel mulu8_sel::@1 + (byte) mulu8_sel::return ← (byte) mulu8_sel::return + return (byte) mulu8_sel::return + to:@return +mulu8_sel::@1: scope:[mulu8_sel] from + to:mulu8_sel::@return +@18: scope:[] from @17 + (byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024 + (byte*) line_cursor ← (byte*) SCREEN + (byte*) char_cursor ← (byte*) line_cursor + to:@19 +print_str: scope:[print_str] from + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (boolean~) print_str::$0 ← *((byte*) print_str::str) != (byte) '@' + if((boolean~) print_str::$0) goto print_str::@2 + to:print_str::@4 +print_str::@2: scope:[print_str] from print_str::@1 print_str::@5 + *((byte*) char_cursor) ← *((byte*) print_str::str) + (byte*) char_cursor ← ++ (byte*) char_cursor + (byte*) print_str::str ← ++ (byte*) print_str::str + to:print_str::@1 +print_str::@4: scope:[print_str] from print_str::@1 + to:print_str::@3 +print_str::@3: scope:[print_str] from print_str::@4 print_str::@6 + to:print_str::@return +print_str::@5: scope:[print_str] from + to:print_str::@2 +print_str::@6: scope:[print_str] from + to:print_str::@3 +print_str::@return: scope:[print_str] from print_str::@3 + return + to:@return +@19: scope:[] from @18 + to:@20 +print_ln: scope:[print_ln] from + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*~) print_ln::$0 ← (byte*) line_cursor + (byte/signed byte/word/signed word/dword/signed dword) 40 + (byte*) line_cursor ← (byte*~) print_ln::$0 + (boolean~) print_ln::$1 ← (byte*) line_cursor < (byte*) char_cursor + if((boolean~) print_ln::$1) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + (byte*) char_cursor ← (byte*) line_cursor + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + return + to:@return +@20: scope:[] from @19 + to:@21 +print_sword: scope:[print_sword] from + (boolean~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) print_sword::$1 ← ! (boolean~) print_sword::$0 + if((boolean~) print_sword::$1) goto print_sword::@1 + to:print_sword::@2 +print_sword::@1: scope:[print_sword] from print_sword print_sword::@2 + (word~) print_sword::$4 ← ((word)) (signed word) print_sword::w + (void~) print_sword::$5 ← call print_word (word~) print_sword::$4 + to:print_sword::@return +print_sword::@2: scope:[print_sword] from print_sword + (void~) print_sword::$2 ← call print_char (byte) '-' + (signed word~) print_sword::$3 ← - (signed word) print_sword::w + (signed word) print_sword::w ← (signed word~) print_sword::$3 + to:print_sword::@1 +print_sword::@return: scope:[print_sword] from print_sword::@1 + return + to:@return +@21: scope:[] from @20 + to:@22 +print_sbyte: scope:[print_sbyte] from + (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0 + if((boolean~) print_sbyte::$1) goto print_sbyte::@1 + to:print_sbyte::@2 +print_sbyte::@1: scope:[print_sbyte] from print_sbyte print_sbyte::@2 + (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b + (void~) print_sbyte::$5 ← call print_byte (byte~) print_sbyte::$4 + to:print_sbyte::@return +print_sbyte::@2: scope:[print_sbyte] from print_sbyte + (void~) print_sbyte::$2 ← call print_char (byte) '-' + (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b + (signed byte) print_sbyte::b ← (signed byte~) print_sbyte::$3 + to:print_sbyte::@1 +print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 + return + to:@return +@22: scope:[] from @21 + to:@23 +print_word: scope:[print_word] from + (byte~) print_word::$0 ← > (word) print_word::w + (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 + (byte~) print_word::$2 ← < (word) print_word::w + (void~) print_word::$3 ← call print_byte (byte~) print_word::$2 + to:print_word::@return +print_word::@return: scope:[print_word] from print_word + return + to:@return +@23: scope:[] from @22 + to:@24 +print_dword: scope:[print_dword] from + (word~) print_dword::$0 ← > (dword) print_dword::dw + (void~) print_dword::$1 ← call print_word (word~) print_dword::$0 + (word~) print_dword::$2 ← < (dword) print_dword::dw + (void~) print_dword::$3 ← call print_word (word~) print_dword::$2 + to:print_dword::@return +print_dword::@return: scope:[print_dword] from print_dword + return + to:@return +@24: scope:[] from @23 + to:@25 +print_sdword: scope:[print_sdword] from + (boolean~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) print_sdword::$1 ← ! (boolean~) print_sdword::$0 + if((boolean~) print_sdword::$1) goto print_sdword::@1 + to:print_sdword::@2 +print_sdword::@1: scope:[print_sdword] from print_sdword print_sdword::@2 + (dword~) print_sdword::$4 ← ((dword)) (signed dword) print_sdword::dw + (void~) print_sdword::$5 ← call print_dword (dword~) print_sdword::$4 + to:print_sdword::@return +print_sdword::@2: scope:[print_sdword] from print_sdword + (void~) print_sdword::$2 ← call print_char (byte) '-' + (signed dword~) print_sdword::$3 ← - (signed dword) print_sdword::dw + (signed dword) print_sdword::dw ← (signed dword~) print_sdword::$3 + to:print_sdword::@1 +print_sdword::@return: scope:[print_sdword] from print_sdword::@1 + return + to:@return +@25: scope:[] from @24 + to:@26 +print_byte: scope:[print_byte] from + (byte[]) print_byte::hextab ← (string) "0123456789abcdef" + (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4 + (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) + (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word/dword/signed dword) 15 + (void~) print_byte::$3 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$2) + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte + return + to:@return +@26: scope:[] from @25 + to:@27 +print_char: scope:[print_char] from + *((byte*) char_cursor) ← (byte) print_char::ch + (byte*) char_cursor ← ++ (byte*) char_cursor + to:print_char::@return +print_char::@return: scope:[print_char] from print_char + return + to:@return +@27: scope:[] from @26 + to:@28 +print_cls: scope:[print_cls] from + (byte*) print_cls::sc ← (byte*) SCREEN + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + *((byte*) print_cls::sc) ← (byte) ' ' + (byte*) print_cls::sc ← ++ (byte*) print_cls::sc + (byte*~) print_cls::$0 ← (byte*) SCREEN + (word/signed word/dword/signed dword) 1000 + (boolean~) print_cls::$1 ← (byte*) print_cls::sc != (byte*~) print_cls::$0 + if((boolean~) print_cls::$1) goto print_cls::@1 + to:print_cls::@2 +print_cls::@2: scope:[print_cls] from print_cls::@1 + (byte*) line_cursor ← (byte*) SCREEN + (byte*) char_cursor ← (byte*) line_cursor + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@2 + return + to:@return +@28: scope:[] from @27 + to:@29 +main: scope:[main] from + (word) main::wavelength ← (byte/signed byte/word/signed word/dword/signed dword) 120 + (signed byte[120]) main::sintab2 ← { fill( 120, 0) } + (void~) main::$0 ← call sin8s_gen (signed byte[120]) main::sintab2 (word) main::wavelength + (void~) main::$1 ← call print_cls + (byte) main::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:main::@1 +main::@1: scope:[main] from main main::@2 + (signed byte) main::sb ← *((signed byte[120]) main::sintab2 + (byte) main::i) + (boolean~) main::$2 ← (signed byte) main::sb >= (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) main::$3 ← ! (boolean~) main::$2 + if((boolean~) main::$3) goto main::@2 + to:main::@3 +main::@2: scope:[main] from main::@1 main::@3 + (void~) main::$5 ← call print_sbyte (signed byte) main::sb + (void~) main::$6 ← call print_str (string) " @" + (byte) main::i ← ++ (byte) main::i + (boolean~) main::$7 ← (byte) main::i != (byte/signed byte/word/signed word/dword/signed dword) 120 + if((boolean~) main::$7) goto main::@1 + to:main::@4 +main::@3: scope:[main] from main::@1 + (void~) main::$4 ← call print_str (string) " @" + to:main::@2 +main::@4: scope:[main] from main::@2 + to:main::@return +main::@return: scope:[main] from main::@4 + return + to:@return +@29: scope:[] from @28 + call main + to:@end +@end: scope:[] from @29 + +Removing unused procedure div8s +Removing unused procedure div16s +Removing unused procedure mul8s +Removing unused procedure mul16s +Removing unused procedure sin16s_gen +Removing unused procedure sin16ss_gen +Removing unused procedure print_ln +Removing unused procedure print_sword +Removing unused procedure print_sdword +Removing unused procedure div8u +Removing unused procedure div32u16u +Removing unused procedure sin16s +Removing unused procedure print_dword +Removing unused procedure divr8u +Removing unused procedure mulu16_sel +Removing unused procedure print_word +Removing unused procedure mul16u +Eliminating unused variable (byte) rem8u and assignment [0] (byte) rem8u ← (byte/signed byte/word/signed word/dword/signed dword) 0 +Eliminating unused variable (signed byte) rem8s and assignment [34] (signed byte) rem8s ← (byte/signed byte/word/signed word/dword/signed dword) 0 +Eliminating unused variable (signed word) rem16s and assignment [35] (signed word) rem16s ← (byte/signed byte/word/signed word/dword/signed dword) 0 +Eliminating unused variable (dword) PI2_u4f28 and assignment [53] (dword) PI2_u4f28 ← (dword/signed dword) 1686629713 +Eliminating unused variable (dword) PI_u4f28 and assignment [54] (dword) PI_u4f28 ← (dword/signed dword) 843314857 +Eliminating unused variable (dword) PI_HALF_u4f28 and assignment [55] (dword) PI_HALF_u4f28 ← (dword/signed dword) 421657428 +Eliminating unused variable - keeping the call (void~) print_sbyte::$5 +Eliminating unused variable - keeping the call (void~) print_sbyte::$2 +Eliminating unused variable - keeping the call (void~) print_byte::$1 +Eliminating unused variable - keeping the call (void~) print_byte::$3 +Eliminating unused variable - keeping the call (void~) main::$0 +Eliminating unused variable - keeping the call (void~) main::$1 +Eliminating unused variable - keeping the call (void~) main::$5 +Eliminating unused variable - keeping the call (void~) main::$6 +Eliminating unused variable - keeping the call (void~) main::$4 +Creating constant string variable for inline (const string) print_byte::$4 "0123456789abcdef" +Creating constant string variable for inline (const string) main::str " @" +Creating constant string variable for inline (const string) main::str1 " @" +Removing empty block @1 +Removing empty block divr16u::@7 +Removing empty block @3 +Removing empty block div16u::@1 +Removing empty block @4 +Removing empty block @5 +Removing empty block @6 +Removing empty block @7 +Removing empty block mul8u::@5 +Removing empty block mul8u::@6 +Removing empty block mul8u::@8 +Removing empty block mul8u::@9 +Removing empty block @8 +Removing empty block @9 +Removing empty block @10 +Removing empty block @12 +Removing empty block sin8s_gen::@2 +Removing empty block @13 +Removing empty block @14 +Removing empty block sin8s::@7 +Removing empty block @15 +Removing empty block @16 +Removing empty block @17 +Removing empty block mulu8_sel::@1 +Removing empty block print_str::@4 +Removing empty block print_str::@3 +Removing empty block print_str::@5 +Removing empty block print_str::@6 +Removing empty block @19 +Removing empty block @20 +Removing empty block @21 +Removing empty block @22 +Removing empty block @23 +Removing empty block @24 +Removing empty block @25 +Removing empty block @26 +Removing empty block @27 +Removing empty block @28 +Removing empty block main::@4 +PROCEDURE MODIFY VARIABLE ANALYSIS +divr16u modifies rem16u +div16u modifies rem16u +sin8s_gen modifies rem16u +print_str modifies char_cursor +print_sbyte modifies char_cursor +print_byte modifies char_cursor +print_char modifies char_cursor +print_cls modifies line_cursor +print_cls modifies char_cursor +main modifies rem16u +main modifies line_cursor +main modifies char_cursor + +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... + +CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN +@begin: scope:[] from + to:@2 +@2: scope:[] from @begin + (word) rem16u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@11 +divr16u: scope:[divr16u] from div16u + (word) divr16u::divisor#5 ← phi( div16u/(word) divr16u::divisor#0 ) + (word) divr16u::dividend#4 ← phi( div16u/(word) divr16u::dividend#1 ) + (word) divr16u::rem#9 ← phi( div16u/(word) divr16u::rem#3 ) + (word) divr16u::quotient#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) divr16u::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:divr16u::@1 +divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 + (byte) divr16u::i#5 ← phi( divr16u/(byte) divr16u::i#0 divr16u::@3/(byte) divr16u::i#1 ) + (word) divr16u::divisor#3 ← phi( divr16u/(word) divr16u::divisor#5 divr16u::@3/(word) divr16u::divisor#6 ) + (word) divr16u::quotient#6 ← phi( divr16u/(word) divr16u::quotient#0 divr16u::@3/(word) divr16u::quotient#8 ) + (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#4 divr16u::@3/(word) divr16u::dividend#5 ) + (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#9 divr16u::@3/(word) divr16u::rem#10 ) + (word~) divr16u::$0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) divr16u::rem#0 ← (word~) divr16u::$0 + (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 + (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 + (boolean~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) divr16u::$4 ← ! (boolean~) divr16u::$3 + if((boolean~) divr16u::$4) goto divr16u::@2 + to:divr16u::@4 +divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 + (byte) divr16u::i#3 ← phi( divr16u::@1/(byte) divr16u::i#5 divr16u::@4/(byte) divr16u::i#6 ) + (word) divr16u::divisor#1 ← phi( divr16u::@1/(word) divr16u::divisor#3 divr16u::@4/(word) divr16u::divisor#4 ) + (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + (word) divr16u::quotient#3 ← phi( divr16u::@1/(word) divr16u::quotient#6 divr16u::@4/(word) divr16u::quotient#7 ) + (word) divr16u::dividend#3 ← phi( divr16u::@1/(word) divr16u::dividend#2 divr16u::@4/(word) divr16u::dividend#6 ) + (word~) divr16u::$6 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) divr16u::dividend#0 ← (word~) divr16u::$6 + (word~) divr16u::$7 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) divr16u::quotient#1 ← (word~) divr16u::$7 + (boolean~) divr16u::$8 ← (word) divr16u::rem#5 >= (word) divr16u::divisor#1 + (boolean~) divr16u::$9 ← ! (boolean~) divr16u::$8 + if((boolean~) divr16u::$9) goto divr16u::@3 + to:divr16u::@5 +divr16u::@4: scope:[divr16u] from divr16u::@1 + (byte) divr16u::i#6 ← phi( divr16u::@1/(byte) divr16u::i#5 ) + (word) divr16u::divisor#4 ← phi( divr16u::@1/(word) divr16u::divisor#3 ) + (word) divr16u::quotient#7 ← phi( divr16u::@1/(word) divr16u::quotient#6 ) + (word) divr16u::dividend#6 ← phi( divr16u::@1/(word) divr16u::dividend#2 ) + (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 ) + (word~) divr16u::$5 ← (word) divr16u::rem#6 | (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) divr16u::rem#1 ← (word~) divr16u::$5 + to:divr16u::@2 +divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 + (word) divr16u::divisor#6 ← phi( divr16u::@2/(word) divr16u::divisor#1 divr16u::@5/(word) divr16u::divisor#2 ) + (word) divr16u::quotient#8 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + (word) divr16u::dividend#5 ← phi( divr16u::@2/(word) divr16u::dividend#0 divr16u::@5/(word) divr16u::dividend#7 ) + (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) + (byte) divr16u::i#2 ← phi( divr16u::@2/(byte) divr16u::i#3 divr16u::@5/(byte) divr16u::i#4 ) + (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + (boolean~) divr16u::$11 ← (byte) divr16u::i#1 != (byte/signed byte/word/signed word/dword/signed dword) 16 + if((boolean~) divr16u::$11) goto divr16u::@1 + to:divr16u::@6 +divr16u::@5: scope:[divr16u] from divr16u::@2 + (word) divr16u::dividend#7 ← phi( divr16u::@2/(word) divr16u::dividend#0 ) + (byte) divr16u::i#4 ← phi( divr16u::@2/(byte) divr16u::i#3 ) + (word) divr16u::divisor#2 ← phi( divr16u::@2/(word) divr16u::divisor#1 ) + (word) divr16u::rem#7 ← phi( divr16u::@2/(word) divr16u::rem#5 ) + (word) divr16u::quotient#4 ← phi( divr16u::@2/(word) divr16u::quotient#1 ) + (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#4 + (word~) divr16u::$10 ← (word) divr16u::rem#7 - (word) divr16u::divisor#2 + (word) divr16u::rem#2 ← (word~) divr16u::$10 + to:divr16u::@3 +divr16u::@6: scope:[divr16u] from divr16u::@3 + (word) divr16u::quotient#5 ← phi( divr16u::@3/(word) divr16u::quotient#8 ) + (word) divr16u::rem#8 ← phi( divr16u::@3/(word) divr16u::rem#10 ) + (word) rem16u#1 ← (word) divr16u::rem#8 + (word) divr16u::return#0 ← (word) divr16u::quotient#5 + to:divr16u::@return +divr16u::@return: scope:[divr16u] from divr16u::@6 + (word) rem16u#10 ← phi( divr16u::@6/(word) rem16u#1 ) + (word) divr16u::return#3 ← phi( divr16u::@6/(word) divr16u::return#0 ) + (word) divr16u::return#1 ← (word) divr16u::return#3 + (word) rem16u#2 ← (word) rem16u#10 + return + to:@return +div16u: scope:[div16u] from sin8s_gen + (word) rem16u#18 ← phi( sin8s_gen/(word) rem16u#19 ) + (word) div16u::divisor#1 ← phi( sin8s_gen/(word) div16u::divisor#0 ) + (word) div16u::dividend#1 ← phi( sin8s_gen/(word) div16u::dividend#0 ) + (word) divr16u::dividend#1 ← (word) div16u::dividend#1 + (word) divr16u::divisor#0 ← (word) div16u::divisor#1 + (word) divr16u::rem#3 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + call divr16u param-assignment + (word) divr16u::return#2 ← (word) divr16u::return#1 + to:div16u::@2 +div16u::@2: scope:[div16u] from div16u + (word) rem16u#11 ← phi( div16u/(word) rem16u#2 ) + (word) divr16u::return#4 ← phi( div16u/(word) divr16u::return#2 ) + (word~) div16u::$0 ← (word) divr16u::return#4 + (word) rem16u#3 ← (word) rem16u#11 + (word) div16u::return#0 ← (word~) div16u::$0 + to:div16u::@return +div16u::@return: scope:[div16u] from div16u::@2 + (word) rem16u#12 ← phi( div16u::@2/(word) rem16u#3 ) + (word) div16u::return#3 ← phi( div16u::@2/(word) div16u::return#0 ) + (word) div16u::return#1 ← (word) div16u::return#3 + (word) rem16u#4 ← (word) rem16u#12 + return + to:@return +mul8u: scope:[mul8u] from mulu8_sel + (byte) mul8u::a#5 ← phi( mulu8_sel/(byte) mul8u::a#1 ) + (byte) mul8u::b#1 ← phi( mulu8_sel/(byte) mul8u::b#0 ) + (word) mul8u::res#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#1 + to:mul8u::@1 +mul8u::@1: scope:[mul8u] from mul8u mul8u::@4 + (word) mul8u::mb#5 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) + (word) mul8u::res#4 ← phi( mul8u/(word) mul8u::res#0 mul8u::@4/(word) mul8u::res#6 ) + (byte) mul8u::a#2 ← phi( mul8u/(byte) mul8u::a#5 mul8u::@4/(byte) mul8u::a#0 ) + (boolean~) mul8u::$0 ← (byte) mul8u::a#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 + if((boolean~) mul8u::$0) goto mul8u::@2 + to:mul8u::@3 +mul8u::@2: scope:[mul8u] from mul8u::@1 + (word) mul8u::res#5 ← phi( mul8u::@1/(word) mul8u::res#4 ) + (word) mul8u::mb#4 ← phi( mul8u::@1/(word) mul8u::mb#5 ) + (byte) mul8u::a#3 ← phi( mul8u::@1/(byte) mul8u::a#2 ) + (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + (boolean~) mul8u::$2 ← (byte~) mul8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) mul8u::$3 ← ! (boolean~) mul8u::$2 + if((boolean~) mul8u::$3) goto mul8u::@4 + to:mul8u::@7 +mul8u::@3: scope:[mul8u] from mul8u::@1 + (word) mul8u::res#2 ← phi( mul8u::@1/(word) mul8u::res#4 ) + (word) mul8u::return#0 ← (word) mul8u::res#2 + to:mul8u::@return +mul8u::@4: scope:[mul8u] from mul8u::@2 mul8u::@7 + (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#5 mul8u::@7/(word) mul8u::res#1 ) + (word) mul8u::mb#2 ← phi( mul8u::@2/(word) mul8u::mb#4 mul8u::@7/(word) mul8u::mb#3 ) + (byte) mul8u::a#4 ← phi( mul8u::@2/(byte) mul8u::a#3 mul8u::@7/(byte) mul8u::a#6 ) + (byte~) mul8u::$5 ← (byte) mul8u::a#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) mul8u::a#0 ← (byte~) mul8u::$5 + (word~) mul8u::$6 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) mul8u::mb#1 ← (word~) mul8u::$6 + to:mul8u::@1 +mul8u::@7: scope:[mul8u] from mul8u::@2 + (byte) mul8u::a#6 ← phi( mul8u::@2/(byte) mul8u::a#3 ) + (word) mul8u::mb#3 ← phi( mul8u::@2/(word) mul8u::mb#4 ) + (word) mul8u::res#3 ← phi( mul8u::@2/(word) mul8u::res#5 ) + (word~) mul8u::$4 ← (word) mul8u::res#3 + (word) mul8u::mb#3 + (word) mul8u::res#1 ← (word~) mul8u::$4 + to:mul8u::@4 +mul8u::@return: scope:[mul8u] from mul8u::@3 + (word) mul8u::return#3 ← phi( mul8u::@3/(word) mul8u::return#0 ) + (word) mul8u::return#1 ← (word) mul8u::return#3 + return + to:@return +@11: scope:[] from @2 + (word) rem16u#27 ← phi( @2/(word) rem16u#0 ) + (word) PI2_u4f12#0 ← (word/signed word/dword/signed dword) 25736 + (word) PI_u4f12#0 ← (word/signed word/dword/signed dword) 12868 + (word) PI_HALF_u4f12#0 ← (word/signed word/dword/signed dword) 6434 + to:@18 +sin8s_gen: scope:[sin8s_gen] from main + (signed byte*) sin8s_gen::sintab#5 ← phi( main/(signed byte*) sin8s_gen::sintab#1 ) + (word) rem16u#19 ← phi( main/(word) rem16u#21 ) + (word) sin8s_gen::wavelength#1 ← phi( main/(word) sin8s_gen::wavelength#0 ) + (word) div16u::dividend#0 ← (word) PI2_u4f12#0 + (word) div16u::divisor#0 ← (word) sin8s_gen::wavelength#1 + call div16u param-assignment + (word) div16u::return#2 ← (word) div16u::return#1 + to:sin8s_gen::@3 +sin8s_gen::@3: scope:[sin8s_gen] from sin8s_gen + (word) sin8s_gen::wavelength#4 ← phi( sin8s_gen/(word) sin8s_gen::wavelength#1 ) + (signed byte*) sin8s_gen::sintab#4 ← phi( sin8s_gen/(signed byte*) sin8s_gen::sintab#5 ) + (word) rem16u#13 ← phi( sin8s_gen/(word) rem16u#4 ) + (word) div16u::return#4 ← phi( sin8s_gen/(word) div16u::return#2 ) + (word~) sin8s_gen::$0 ← (word) div16u::return#4 + (word) rem16u#5 ← (word) rem16u#13 + (word) sin8s_gen::step#0 ← (word~) sin8s_gen::$0 + (word) sin8s_gen::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin8s_gen::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:sin8s_gen::@1 +sin8s_gen::@1: scope:[sin8s_gen] from sin8s_gen::@3 sin8s_gen::@4 + (word) rem16u#24 ← phi( sin8s_gen::@3/(word) rem16u#5 sin8s_gen::@4/(word) rem16u#20 ) + (word) sin8s_gen::wavelength#3 ← phi( sin8s_gen::@3/(word) sin8s_gen::wavelength#4 sin8s_gen::@4/(word) sin8s_gen::wavelength#2 ) + (word) sin8s_gen::i#3 ← phi( sin8s_gen::@3/(word) sin8s_gen::i#0 sin8s_gen::@4/(word) sin8s_gen::i#1 ) + (word) sin8s_gen::step#2 ← phi( sin8s_gen::@3/(word) sin8s_gen::step#0 sin8s_gen::@4/(word) sin8s_gen::step#1 ) + (signed byte*) sin8s_gen::sintab#3 ← phi( sin8s_gen::@3/(signed byte*) sin8s_gen::sintab#4 sin8s_gen::@4/(signed byte*) sin8s_gen::sintab#0 ) + (word) sin8s_gen::x#2 ← phi( sin8s_gen::@3/(word) sin8s_gen::x#0 sin8s_gen::@4/(word) sin8s_gen::x#1 ) + (word) sin8s::x#0 ← (word) sin8s_gen::x#2 + call sin8s param-assignment + (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#2 + to:sin8s_gen::@4 +sin8s_gen::@4: scope:[sin8s_gen] from sin8s_gen::@1 + (word) rem16u#20 ← phi( sin8s_gen::@1/(word) rem16u#24 ) + (word) sin8s_gen::wavelength#2 ← phi( sin8s_gen::@1/(word) sin8s_gen::wavelength#3 ) + (word) sin8s_gen::i#2 ← phi( sin8s_gen::@1/(word) sin8s_gen::i#3 ) + (word) sin8s_gen::step#1 ← phi( sin8s_gen::@1/(word) sin8s_gen::step#2 ) + (word) sin8s_gen::x#3 ← phi( sin8s_gen::@1/(word) sin8s_gen::x#2 ) + (signed byte*) sin8s_gen::sintab#2 ← phi( sin8s_gen::@1/(signed byte*) sin8s_gen::sintab#3 ) + (signed byte) sin8s::return#3 ← phi( sin8s_gen::@1/(signed byte) sin8s::return#0 ) + (signed byte~) sin8s_gen::$1 ← (signed byte) sin8s::return#3 + *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 + (signed byte*) sin8s_gen::sintab#0 ← ++ (signed byte*) sin8s_gen::sintab#2 + (word~) sin8s_gen::$2 ← (word) sin8s_gen::x#3 + (word) sin8s_gen::step#1 + (word) sin8s_gen::x#1 ← (word~) sin8s_gen::$2 + (word) sin8s_gen::i#1 ← ++ (word) sin8s_gen::i#2 + (boolean~) sin8s_gen::$3 ← (word) sin8s_gen::i#1 < (word) sin8s_gen::wavelength#2 + if((boolean~) sin8s_gen::$3) goto sin8s_gen::@1 + to:sin8s_gen::@return +sin8s_gen::@return: scope:[sin8s_gen] from sin8s_gen::@4 + (word) rem16u#14 ← phi( sin8s_gen::@4/(word) rem16u#20 ) + (word) rem16u#6 ← (word) rem16u#14 + return + to:@return +sin8s: scope:[sin8s] from sin8s_gen::@1 + (word) sin8s::x#3 ← phi( sin8s_gen::@1/(word) sin8s::x#0 ) + (byte) sin8s::isUpper#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin8s::$0 ← (word) sin8s::x#3 >= (word) PI_u4f12#0 + (boolean~) sin8s::$1 ← ! (boolean~) sin8s::$0 + if((boolean~) sin8s::$1) goto sin8s::@1 + to:sin8s::@4 +sin8s::@1: scope:[sin8s] from sin8s sin8s::@4 + (byte) sin8s::isUpper#8 ← phi( sin8s/(byte) sin8s::isUpper#0 sin8s::@4/(byte) sin8s::isUpper#1 ) + (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#3 sin8s::@4/(word) sin8s::x#1 ) + (boolean~) sin8s::$3 ← (word) sin8s::x#4 >= (word) PI_HALF_u4f12#0 + (boolean~) sin8s::$4 ← ! (boolean~) sin8s::$3 + if((boolean~) sin8s::$4) goto sin8s::@2 + to:sin8s::@5 +sin8s::@4: scope:[sin8s] from sin8s + (word) sin8s::x#5 ← phi( sin8s/(word) sin8s::x#3 ) + (word~) sin8s::$2 ← (word) sin8s::x#5 - (word) PI_u4f12#0 + (word) sin8s::x#1 ← (word~) sin8s::$2 + (byte) sin8s::isUpper#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + to:sin8s::@1 +sin8s::@2: scope:[sin8s] from sin8s::@1 sin8s::@5 + (byte) sin8s::isUpper#7 ← phi( sin8s::@1/(byte) sin8s::isUpper#8 sin8s::@5/(byte) sin8s::isUpper#9 ) + (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@5/(word) sin8s::x#2 ) + (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte~) sin8s::$7 ← > (word~) sin8s::$6 + (byte) sin8s::x1#0 ← (byte~) sin8s::$7 + (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 + (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 + (byte) mulu8_sel::select#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + call mulu8_sel param-assignment + (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#6 + to:sin8s::@8 +sin8s::@8: scope:[sin8s] from sin8s::@2 + (byte) sin8s::isUpper#6 ← phi( sin8s::@2/(byte) sin8s::isUpper#7 ) + (byte) sin8s::x1#1 ← phi( sin8s::@2/(byte) sin8s::x1#0 ) + (byte) mulu8_sel::return#7 ← phi( sin8s::@2/(byte) mulu8_sel::return#0 ) + (byte~) sin8s::$8 ← (byte) mulu8_sel::return#7 + (byte) sin8s::x2#0 ← (byte~) sin8s::$8 + (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 + (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#1 + (byte) mulu8_sel::select#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + call mulu8_sel param-assignment + (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#6 + to:sin8s::@9 +sin8s::@9: scope:[sin8s] from sin8s::@8 + (byte) sin8s::isUpper#5 ← phi( sin8s::@8/(byte) sin8s::isUpper#6 ) + (byte) sin8s::x1#4 ← phi( sin8s::@8/(byte) sin8s::x1#1 ) + (byte) mulu8_sel::return#8 ← phi( sin8s::@8/(byte) mulu8_sel::return#1 ) + (byte~) sin8s::$9 ← (byte) mulu8_sel::return#8 + (byte) sin8s::x3#0 ← (byte~) sin8s::$9 + (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$10 ← (word/signed word/dword/signed dword) 256 / (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 + (byte) mulu8_sel::v2#2 ← (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$10 + (byte) mulu8_sel::select#2 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + call mulu8_sel param-assignment + (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#6 + to:sin8s::@10 +sin8s::@10: scope:[sin8s] from sin8s::@9 + (byte) sin8s::isUpper#4 ← phi( sin8s::@9/(byte) sin8s::isUpper#5 ) + (byte) sin8s::x3#1 ← phi( sin8s::@9/(byte) sin8s::x3#0 ) + (byte) sin8s::x1#2 ← phi( sin8s::@9/(byte) sin8s::x1#4 ) + (byte) mulu8_sel::return#9 ← phi( sin8s::@9/(byte) mulu8_sel::return#2 ) + (byte~) sin8s::$11 ← (byte) mulu8_sel::return#9 + (byte) sin8s::x3_6#0 ← (byte~) sin8s::$11 + (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$12 ← (byte) sin8s::x1#2 - (byte) sin8s::x3_6#0 + (byte) sin8s::usinx#0 ← (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$12 + (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#1 + (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#2 + (byte) mulu8_sel::select#3 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + call mulu8_sel param-assignment + (byte) mulu8_sel::return#3 ← (byte) mulu8_sel::return#6 + to:sin8s::@11 +sin8s::@11: scope:[sin8s] from sin8s::@10 + (byte) sin8s::isUpper#3 ← phi( sin8s::@10/(byte) sin8s::isUpper#4 ) + (byte) sin8s::usinx#4 ← phi( sin8s::@10/(byte) sin8s::usinx#0 ) + (byte) sin8s::x1#3 ← phi( sin8s::@10/(byte) sin8s::x1#2 ) + (byte) mulu8_sel::return#10 ← phi( sin8s::@10/(byte) mulu8_sel::return#3 ) + (byte~) sin8s::$13 ← (byte) mulu8_sel::return#10 + (byte) sin8s::x4#0 ← (byte~) sin8s::$13 + (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 + (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#3 + (byte) mulu8_sel::select#4 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + call mulu8_sel param-assignment + (byte) mulu8_sel::return#4 ← (byte) mulu8_sel::return#6 + to:sin8s::@12 +sin8s::@12: scope:[sin8s] from sin8s::@11 + (byte) sin8s::isUpper#2 ← phi( sin8s::@11/(byte) sin8s::isUpper#3 ) + (byte) sin8s::usinx#2 ← phi( sin8s::@11/(byte) sin8s::usinx#4 ) + (byte) mulu8_sel::return#11 ← phi( sin8s::@11/(byte) mulu8_sel::return#4 ) + (byte~) sin8s::$14 ← (byte) mulu8_sel::return#11 + (byte) sin8s::x5#0 ← (byte~) sin8s::$14 + (byte~) sin8s::$15 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) sin8s::x5_128#0 ← (byte~) sin8s::$15 + (byte/word~) sin8s::$16 ← (byte) sin8s::usinx#2 + (byte) sin8s::x5_128#0 + (byte) sin8s::usinx#1 ← (byte/word~) sin8s::$16 + (signed byte~) sin8s::$17 ← ((signed byte)) (byte) sin8s::usinx#1 + (signed byte) sin8s::sinx#0 ← (signed byte~) sin8s::$17 + (boolean~) sin8s::$18 ← (byte) sin8s::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin8s::$19 ← ! (boolean~) sin8s::$18 + if((boolean~) sin8s::$19) goto sin8s::@3 + to:sin8s::@6 +sin8s::@5: scope:[sin8s] from sin8s::@1 + (byte) sin8s::isUpper#9 ← phi( sin8s::@1/(byte) sin8s::isUpper#8 ) + (word) sin8s::x#7 ← phi( sin8s::@1/(word) sin8s::x#4 ) + (word~) sin8s::$5 ← (word) PI_u4f12#0 - (word) sin8s::x#7 + (word) sin8s::x#2 ← (word~) sin8s::$5 + to:sin8s::@2 +sin8s::@3: scope:[sin8s] from sin8s::@12 sin8s::@6 + (signed byte) sin8s::sinx#2 ← phi( sin8s::@12/(signed byte) sin8s::sinx#0 sin8s::@6/(signed byte) sin8s::sinx#1 ) + (signed byte) sin8s::return#1 ← (signed byte) sin8s::sinx#2 + to:sin8s::@return +sin8s::@6: scope:[sin8s] from sin8s::@12 + (byte) sin8s::usinx#3 ← phi( sin8s::@12/(byte) sin8s::usinx#1 ) + (signed byte~) sin8s::$20 ← ((signed byte)) (byte) sin8s::usinx#3 + (signed byte~) sin8s::$21 ← - (signed byte~) sin8s::$20 + (signed byte) sin8s::sinx#1 ← (signed byte~) sin8s::$21 + to:sin8s::@3 +sin8s::@return: scope:[sin8s] from sin8s::@3 + (signed byte) sin8s::return#4 ← phi( sin8s::@3/(signed byte) sin8s::return#1 ) + (signed byte) sin8s::return#2 ← (signed byte) sin8s::return#4 + return + to:@return +mulu8_sel: scope:[mulu8_sel] from sin8s::@10 sin8s::@11 sin8s::@2 sin8s::@8 sin8s::@9 + (byte) mulu8_sel::select#6 ← phi( sin8s::@10/(byte) mulu8_sel::select#3 sin8s::@11/(byte) mulu8_sel::select#4 sin8s::@2/(byte) mulu8_sel::select#0 sin8s::@8/(byte) mulu8_sel::select#1 sin8s::@9/(byte) mulu8_sel::select#2 ) + (byte) mulu8_sel::v2#5 ← phi( sin8s::@10/(byte) mulu8_sel::v2#3 sin8s::@11/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 sin8s::@8/(byte) mulu8_sel::v2#1 sin8s::@9/(byte) mulu8_sel::v2#2 ) + (byte) mulu8_sel::v1#5 ← phi( sin8s::@10/(byte) mulu8_sel::v1#3 sin8s::@11/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 sin8s::@8/(byte) mulu8_sel::v1#1 sin8s::@9/(byte) mulu8_sel::v1#2 ) + (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 + (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 + call mul8u param-assignment + (word) mul8u::return#2 ← (word) mul8u::return#1 + to:mulu8_sel::@2 +mulu8_sel::@2: scope:[mulu8_sel] from mulu8_sel + (byte) mulu8_sel::select#5 ← phi( mulu8_sel/(byte) mulu8_sel::select#6 ) + (word) mul8u::return#4 ← phi( mulu8_sel/(word) mul8u::return#2 ) + (word~) mulu8_sel::$0 ← (word) mul8u::return#4 + (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 + (byte~) mulu8_sel::$2 ← > (word~) mulu8_sel::$1 + (byte) mulu8_sel::return#5 ← (byte~) mulu8_sel::$2 + to:mulu8_sel::@return +mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel::@2 + (byte) mulu8_sel::return#12 ← phi( mulu8_sel::@2/(byte) mulu8_sel::return#5 ) + (byte) mulu8_sel::return#6 ← (byte) mulu8_sel::return#12 + return + to:@return +@18: scope:[] from @11 + (word) rem16u#26 ← phi( @11/(word) rem16u#27 ) + (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 + (byte*) line_cursor#0 ← (byte*) SCREEN#0 + (byte*) char_cursor#0 ← (byte*) line_cursor#0 + to:@29 +print_str: scope:[print_str] from main::@3 main::@7 + (byte*) char_cursor#44 ← phi( main::@3/(byte*) char_cursor#42 main::@7/(byte*) char_cursor#14 ) + (byte*) print_str::str#5 ← phi( main::@3/(byte*) print_str::str#2 main::@7/(byte*) print_str::str#1 ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#36 ← phi( print_str/(byte*) char_cursor#44 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#3 ← phi( print_str/(byte*) print_str::str#5 print_str::@2/(byte*) print_str::str#0 ) + (boolean~) print_str::$0 ← *((byte*) print_str::str#3) != (byte) '@' + if((boolean~) print_str::$0) goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + (byte*) char_cursor#19 ← phi( print_str::@1/(byte*) char_cursor#36 ) + (byte*) print_str::str#4 ← phi( print_str::@1/(byte*) print_str::str#3 ) + *((byte*) char_cursor#19) ← *((byte*) print_str::str#4) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#19 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#4 + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + (byte*) char_cursor#20 ← phi( print_str::@1/(byte*) char_cursor#36 ) + (byte*) char_cursor#2 ← (byte*) char_cursor#20 + return + to:@return +print_sbyte: scope:[print_sbyte] from main::@2 + (byte*) char_cursor#45 ← phi( main::@2/(byte*) char_cursor#41 ) + (signed byte) print_sbyte::b#2 ← phi( main::@2/(signed byte) print_sbyte::b#1 ) + (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) print_sbyte::$1 ← ! (boolean~) print_sbyte::$0 + if((boolean~) print_sbyte::$1) goto print_sbyte::@1 + to:print_sbyte::@2 +print_sbyte::@1: scope:[print_sbyte] from print_sbyte print_sbyte::@4 + (byte*) char_cursor#37 ← phi( print_sbyte/(byte*) char_cursor#45 print_sbyte::@4/(byte*) char_cursor#4 ) + (signed byte) print_sbyte::b#3 ← phi( print_sbyte/(signed byte) print_sbyte::b#2 print_sbyte::@4/(signed byte) print_sbyte::b#0 ) + (byte~) print_sbyte::$4 ← ((byte)) (signed byte) print_sbyte::b#3 + (byte) print_byte::b#0 ← (byte~) print_sbyte::$4 + call print_byte param-assignment + to:print_sbyte::@3 +print_sbyte::@3: scope:[print_sbyte] from print_sbyte::@1 + (byte*) char_cursor#21 ← phi( print_sbyte::@1/(byte*) char_cursor#8 ) + (byte*) char_cursor#3 ← (byte*) char_cursor#21 + to:print_sbyte::@return +print_sbyte::@2: scope:[print_sbyte] from print_sbyte + (signed byte) print_sbyte::b#5 ← phi( print_sbyte/(signed byte) print_sbyte::b#2 ) + (byte*) char_cursor#38 ← phi( print_sbyte/(byte*) char_cursor#45 ) + (byte) print_char::ch#0 ← (byte) '-' + call print_char param-assignment + to:print_sbyte::@4 +print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@2 + (signed byte) print_sbyte::b#4 ← phi( print_sbyte::@2/(signed byte) print_sbyte::b#5 ) + (byte*) char_cursor#22 ← phi( print_sbyte::@2/(byte*) char_cursor#10 ) + (byte*) char_cursor#4 ← (byte*) char_cursor#22 + (signed byte~) print_sbyte::$3 ← - (signed byte) print_sbyte::b#4 + (signed byte) print_sbyte::b#0 ← (signed byte~) print_sbyte::$3 + to:print_sbyte::@1 +print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@3 + (byte*) char_cursor#23 ← phi( print_sbyte::@3/(byte*) char_cursor#3 ) + (byte*) char_cursor#5 ← (byte*) char_cursor#23 + return + to:@return +print_byte: scope:[print_byte] from print_sbyte::@1 + (byte*) char_cursor#39 ← phi( print_sbyte::@1/(byte*) char_cursor#37 ) + (byte) print_byte::b#1 ← phi( print_sbyte::@1/(byte) print_byte::b#0 ) + (byte[]) print_byte::hextab#0 ← (const string) print_byte::$4 + (byte~) print_byte::$0 ← (byte) print_byte::b#1 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) print_char::ch#1 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) + call print_char param-assignment + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + (byte) print_byte::b#2 ← phi( print_byte/(byte) print_byte::b#1 ) + (byte*) char_cursor#24 ← phi( print_byte/(byte*) char_cursor#10 ) + (byte*) char_cursor#6 ← (byte*) char_cursor#24 + (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte) print_char::ch#2 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) + call print_char param-assignment + to:print_byte::@2 +print_byte::@2: scope:[print_byte] from print_byte::@1 + (byte*) char_cursor#25 ← phi( print_byte::@1/(byte*) char_cursor#10 ) + (byte*) char_cursor#7 ← (byte*) char_cursor#25 + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@2 + (byte*) char_cursor#26 ← phi( print_byte::@2/(byte*) char_cursor#7 ) + (byte*) char_cursor#8 ← (byte*) char_cursor#26 + return + to:@return +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@2 + (byte*) char_cursor#27 ← phi( print_byte/(byte*) char_cursor#39 print_byte::@1/(byte*) char_cursor#6 print_sbyte::@2/(byte*) char_cursor#38 ) + (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sbyte::@2/(byte) print_char::ch#0 ) + *((byte*) char_cursor#27) ← (byte) print_char::ch#3 + (byte*) char_cursor#9 ← ++ (byte*) char_cursor#27 + to:print_char::@return +print_char::@return: scope:[print_char] from print_char + (byte*) char_cursor#28 ← phi( print_char/(byte*) char_cursor#9 ) + (byte*) char_cursor#10 ← (byte*) char_cursor#28 + return + to:@return +print_cls: scope:[print_cls] from main::@5 + (byte*) print_cls::sc#0 ← (byte*) SCREEN#0 + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + (byte*~) print_cls::$0 ← (byte*) SCREEN#0 + (word/signed word/dword/signed dword) 1000 + (boolean~) print_cls::$1 ← (byte*) print_cls::sc#1 != (byte*~) print_cls::$0 + if((boolean~) print_cls::$1) goto print_cls::@1 + to:print_cls::@2 +print_cls::@2: scope:[print_cls] from print_cls::@1 + (byte*) line_cursor#1 ← (byte*) SCREEN#0 + (byte*) char_cursor#11 ← (byte*) line_cursor#1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@2 + (byte*) char_cursor#29 ← phi( print_cls::@2/(byte*) char_cursor#11 ) + (byte*) line_cursor#6 ← phi( print_cls::@2/(byte*) line_cursor#1 ) + (byte*) line_cursor#2 ← (byte*) line_cursor#6 + (byte*) char_cursor#12 ← (byte*) char_cursor#29 + return + to:@return +main: scope:[main] from @29 + (byte*) char_cursor#46 ← phi( @29/(byte*) char_cursor#43 ) + (byte*) line_cursor#13 ← phi( @29/(byte*) line_cursor#12 ) + (word) rem16u#21 ← phi( @29/(word) rem16u#23 ) + (word) main::wavelength#0 ← (byte/signed byte/word/signed word/dword/signed dword) 120 + (signed byte[120]) main::sintab2#0 ← { fill( 120, 0) } + (signed byte*) sin8s_gen::sintab#1 ← (signed byte[120]) main::sintab2#0 + (word) sin8s_gen::wavelength#0 ← (word) main::wavelength#0 + call sin8s_gen param-assignment + to:main::@5 +main::@5: scope:[main] from main + (byte*) char_cursor#40 ← phi( main/(byte*) char_cursor#46 ) + (byte*) line_cursor#10 ← phi( main/(byte*) line_cursor#13 ) + (word) rem16u#15 ← phi( main/(word) rem16u#6 ) + (word) rem16u#7 ← (word) rem16u#15 + call print_cls param-assignment + to:main::@6 +main::@6: scope:[main] from main::@5 + (word) rem16u#31 ← phi( main::@5/(word) rem16u#7 ) + (byte*) char_cursor#30 ← phi( main::@5/(byte*) char_cursor#12 ) + (byte*) line_cursor#7 ← phi( main::@5/(byte*) line_cursor#2 ) + (byte*) line_cursor#3 ← (byte*) line_cursor#7 + (byte*) char_cursor#13 ← (byte*) char_cursor#30 + (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:main::@1 +main::@1: scope:[main] from main::@6 main::@8 + (byte*) line_cursor#16 ← phi( main::@6/(byte*) line_cursor#3 main::@8/(byte*) line_cursor#11 ) + (word) rem16u#29 ← phi( main::@6/(word) rem16u#31 main::@8/(word) rem16u#22 ) + (byte*) char_cursor#47 ← phi( main::@6/(byte*) char_cursor#13 main::@8/(byte*) char_cursor#15 ) + (byte) main::i#2 ← phi( main::@6/(byte) main::i#0 main::@8/(byte) main::i#1 ) + (signed byte) main::sb#0 ← *((signed byte[120]) main::sintab2#0 + (byte) main::i#2) + (boolean~) main::$2 ← (signed byte) main::sb#0 >= (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) main::$3 ← ! (boolean~) main::$2 + if((boolean~) main::$3) goto main::@2 + to:main::@3 +main::@2: scope:[main] from main::@1 main::@9 + (byte*) line_cursor#15 ← phi( main::@1/(byte*) line_cursor#16 main::@9/(byte*) line_cursor#17 ) + (word) rem16u#28 ← phi( main::@1/(word) rem16u#29 main::@9/(word) rem16u#30 ) + (byte) main::i#5 ← phi( main::@1/(byte) main::i#2 main::@9/(byte) main::i#6 ) + (byte*) char_cursor#41 ← phi( main::@1/(byte*) char_cursor#47 main::@9/(byte*) char_cursor#16 ) + (signed byte) main::sb#1 ← phi( main::@1/(signed byte) main::sb#0 main::@9/(signed byte) main::sb#2 ) + (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#1 + call print_sbyte param-assignment + to:main::@7 +main::@7: scope:[main] from main::@2 + (byte*) line_cursor#14 ← phi( main::@2/(byte*) line_cursor#15 ) + (word) rem16u#25 ← phi( main::@2/(word) rem16u#28 ) + (byte) main::i#4 ← phi( main::@2/(byte) main::i#5 ) + (byte*) char_cursor#31 ← phi( main::@2/(byte*) char_cursor#5 ) + (byte*) char_cursor#14 ← (byte*) char_cursor#31 + (byte*) print_str::str#1 ← (const string) main::str + call print_str param-assignment + to:main::@8 +main::@8: scope:[main] from main::@7 + (byte*) line_cursor#11 ← phi( main::@7/(byte*) line_cursor#14 ) + (word) rem16u#22 ← phi( main::@7/(word) rem16u#25 ) + (byte) main::i#3 ← phi( main::@7/(byte) main::i#4 ) + (byte*) char_cursor#32 ← phi( main::@7/(byte*) char_cursor#2 ) + (byte*) char_cursor#15 ← (byte*) char_cursor#32 + (byte) main::i#1 ← ++ (byte) main::i#3 + (boolean~) main::$7 ← (byte) main::i#1 != (byte/signed byte/word/signed word/dword/signed dword) 120 + if((boolean~) main::$7) goto main::@1 + to:main::@return +main::@3: scope:[main] from main::@1 + (byte*) line_cursor#18 ← phi( main::@1/(byte*) line_cursor#16 ) + (word) rem16u#32 ← phi( main::@1/(word) rem16u#29 ) + (byte) main::i#7 ← phi( main::@1/(byte) main::i#2 ) + (signed byte) main::sb#3 ← phi( main::@1/(signed byte) main::sb#0 ) + (byte*) char_cursor#42 ← phi( main::@1/(byte*) char_cursor#47 ) + (byte*) print_str::str#2 ← (const string) main::str1 + call print_str param-assignment + to:main::@9 +main::@9: scope:[main] from main::@3 + (byte*) line_cursor#17 ← phi( main::@3/(byte*) line_cursor#18 ) + (word) rem16u#30 ← phi( main::@3/(word) rem16u#32 ) + (byte) main::i#6 ← phi( main::@3/(byte) main::i#7 ) + (signed byte) main::sb#2 ← phi( main::@3/(signed byte) main::sb#3 ) + (byte*) char_cursor#33 ← phi( main::@3/(byte*) char_cursor#2 ) + (byte*) char_cursor#16 ← (byte*) char_cursor#33 + to:main::@2 +main::@return: scope:[main] from main::@8 + (byte*) char_cursor#34 ← phi( main::@8/(byte*) char_cursor#15 ) + (byte*) line_cursor#8 ← phi( main::@8/(byte*) line_cursor#11 ) + (word) rem16u#16 ← phi( main::@8/(word) rem16u#22 ) + (word) rem16u#8 ← (word) rem16u#16 + (byte*) line_cursor#4 ← (byte*) line_cursor#8 + (byte*) char_cursor#17 ← (byte*) char_cursor#34 + return + to:@return +@29: scope:[] from @18 + (byte*) char_cursor#43 ← phi( @18/(byte*) char_cursor#0 ) + (byte*) line_cursor#12 ← phi( @18/(byte*) line_cursor#0 ) + (word) rem16u#23 ← phi( @18/(word) rem16u#26 ) + call main param-assignment + to:@30 +@30: scope:[] from @29 + (byte*) char_cursor#35 ← phi( @29/(byte*) char_cursor#17 ) + (byte*) line_cursor#9 ← phi( @29/(byte*) line_cursor#4 ) + (word) rem16u#17 ← phi( @29/(word) rem16u#8 ) + (word) rem16u#9 ← (word) rem16u#17 + (byte*) line_cursor#5 ← (byte*) line_cursor#9 + (byte*) char_cursor#18 ← (byte*) char_cursor#35 + to:@end +@end: scope:[] from @30 + +SYMBOL TABLE SSA +(label) @11 +(label) @18 +(label) @2 +(label) @29 +(label) @30 +(label) @begin +(label) @end +(word) PI2_u4f12 +(word) PI2_u4f12#0 +(word) PI_HALF_u4f12 +(word) PI_HALF_u4f12#0 +(word) PI_u4f12 +(word) PI_u4f12#0 +(byte*) SCREEN +(byte*) SCREEN#0 +(byte*) char_cursor +(byte*) char_cursor#0 +(byte*) char_cursor#1 +(byte*) char_cursor#10 +(byte*) char_cursor#11 +(byte*) char_cursor#12 +(byte*) char_cursor#13 +(byte*) char_cursor#14 +(byte*) char_cursor#15 +(byte*) char_cursor#16 +(byte*) char_cursor#17 +(byte*) char_cursor#18 +(byte*) char_cursor#19 +(byte*) char_cursor#2 +(byte*) char_cursor#20 +(byte*) char_cursor#21 +(byte*) char_cursor#22 +(byte*) char_cursor#23 +(byte*) char_cursor#24 +(byte*) char_cursor#25 +(byte*) char_cursor#26 +(byte*) char_cursor#27 +(byte*) char_cursor#28 +(byte*) char_cursor#29 +(byte*) char_cursor#3 +(byte*) char_cursor#30 +(byte*) char_cursor#31 +(byte*) char_cursor#32 +(byte*) char_cursor#33 +(byte*) char_cursor#34 +(byte*) char_cursor#35 +(byte*) char_cursor#36 +(byte*) char_cursor#37 +(byte*) char_cursor#38 +(byte*) char_cursor#39 +(byte*) char_cursor#4 +(byte*) char_cursor#40 +(byte*) char_cursor#41 +(byte*) char_cursor#42 +(byte*) char_cursor#43 +(byte*) char_cursor#44 +(byte*) char_cursor#45 +(byte*) char_cursor#46 +(byte*) char_cursor#47 +(byte*) char_cursor#5 +(byte*) char_cursor#6 +(byte*) char_cursor#7 +(byte*) char_cursor#8 +(byte*) char_cursor#9 +(word()) div16u((word) div16u::dividend , (word) div16u::divisor) +(word~) div16u::$0 +(label) div16u::@2 +(label) div16u::@return +(word) div16u::dividend +(word) div16u::dividend#0 +(word) div16u::dividend#1 +(word) div16u::divisor +(word) div16u::divisor#0 +(word) div16u::divisor#1 +(word) div16u::return +(word) div16u::return#0 +(word) div16u::return#1 +(word) div16u::return#2 +(word) div16u::return#3 +(word) div16u::return#4 +(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) +(word~) divr16u::$0 +(byte~) divr16u::$1 +(word~) divr16u::$10 +(boolean~) divr16u::$11 +(byte~) divr16u::$2 +(boolean~) divr16u::$3 +(boolean~) divr16u::$4 +(word~) divr16u::$5 +(word~) divr16u::$6 +(word~) divr16u::$7 +(boolean~) divr16u::$8 +(boolean~) divr16u::$9 +(label) divr16u::@1 +(label) divr16u::@2 +(label) divr16u::@3 +(label) divr16u::@4 +(label) divr16u::@5 +(label) divr16u::@6 +(label) divr16u::@return +(word) divr16u::dividend +(word) divr16u::dividend#0 +(word) divr16u::dividend#1 +(word) divr16u::dividend#2 +(word) divr16u::dividend#3 +(word) divr16u::dividend#4 +(word) divr16u::dividend#5 +(word) divr16u::dividend#6 +(word) divr16u::dividend#7 +(word) divr16u::divisor +(word) divr16u::divisor#0 +(word) divr16u::divisor#1 +(word) divr16u::divisor#2 +(word) divr16u::divisor#3 +(word) divr16u::divisor#4 +(word) divr16u::divisor#5 +(word) divr16u::divisor#6 +(byte) divr16u::i +(byte) divr16u::i#0 +(byte) divr16u::i#1 +(byte) divr16u::i#2 +(byte) divr16u::i#3 +(byte) divr16u::i#4 +(byte) divr16u::i#5 +(byte) divr16u::i#6 +(word) divr16u::quotient +(word) divr16u::quotient#0 +(word) divr16u::quotient#1 +(word) divr16u::quotient#2 +(word) divr16u::quotient#3 +(word) divr16u::quotient#4 +(word) divr16u::quotient#5 +(word) divr16u::quotient#6 +(word) divr16u::quotient#7 +(word) divr16u::quotient#8 +(word) divr16u::rem +(word) divr16u::rem#0 +(word) divr16u::rem#1 +(word) divr16u::rem#10 +(word) divr16u::rem#2 +(word) divr16u::rem#3 +(word) divr16u::rem#4 +(word) divr16u::rem#5 +(word) divr16u::rem#6 +(word) divr16u::rem#7 +(word) divr16u::rem#8 +(word) divr16u::rem#9 +(word) divr16u::return +(word) divr16u::return#0 +(word) divr16u::return#1 +(word) divr16u::return#2 +(word) divr16u::return#3 +(word) divr16u::return#4 +(byte*) line_cursor +(byte*) line_cursor#0 +(byte*) line_cursor#1 +(byte*) line_cursor#10 +(byte*) line_cursor#11 +(byte*) line_cursor#12 +(byte*) line_cursor#13 +(byte*) line_cursor#14 +(byte*) line_cursor#15 +(byte*) line_cursor#16 +(byte*) line_cursor#17 +(byte*) line_cursor#18 +(byte*) line_cursor#2 +(byte*) line_cursor#3 +(byte*) line_cursor#4 +(byte*) line_cursor#5 +(byte*) line_cursor#6 +(byte*) line_cursor#7 +(byte*) line_cursor#8 +(byte*) line_cursor#9 +(void()) main() +(boolean~) main::$2 +(boolean~) main::$3 +(boolean~) main::$7 +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@5 +(label) main::@6 +(label) main::@7 +(label) main::@8 +(label) main::@9 +(label) main::@return +(byte) main::i +(byte) main::i#0 +(byte) main::i#1 +(byte) main::i#2 +(byte) main::i#3 +(byte) main::i#4 +(byte) main::i#5 +(byte) main::i#6 +(byte) main::i#7 +(signed byte) main::sb +(signed byte) main::sb#0 +(signed byte) main::sb#1 +(signed byte) main::sb#2 +(signed byte) main::sb#3 +(signed byte[120]) main::sintab2 +(signed byte[120]) main::sintab2#0 +(const string) main::str = (string) " @" +(const string) main::str1 = (string) " @" +(word) main::wavelength +(word) main::wavelength#0 +(word()) mul8u((byte) mul8u::a , (byte) mul8u::b) +(boolean~) mul8u::$0 +(byte~) mul8u::$1 +(boolean~) mul8u::$2 +(boolean~) mul8u::$3 +(word~) mul8u::$4 +(byte~) mul8u::$5 +(word~) mul8u::$6 +(label) mul8u::@1 +(label) mul8u::@2 +(label) mul8u::@3 +(label) mul8u::@4 +(label) mul8u::@7 +(label) mul8u::@return +(byte) mul8u::a +(byte) mul8u::a#0 +(byte) mul8u::a#1 +(byte) mul8u::a#2 +(byte) mul8u::a#3 +(byte) mul8u::a#4 +(byte) mul8u::a#5 +(byte) mul8u::a#6 +(byte) mul8u::b +(byte) mul8u::b#0 +(byte) mul8u::b#1 +(word) mul8u::mb +(word) mul8u::mb#0 +(word) mul8u::mb#1 +(word) mul8u::mb#2 +(word) mul8u::mb#3 +(word) mul8u::mb#4 +(word) mul8u::mb#5 +(word) mul8u::res +(word) mul8u::res#0 +(word) mul8u::res#1 +(word) mul8u::res#2 +(word) mul8u::res#3 +(word) mul8u::res#4 +(word) mul8u::res#5 +(word) mul8u::res#6 +(word) mul8u::return +(word) mul8u::return#0 +(word) mul8u::return#1 +(word) mul8u::return#2 +(word) mul8u::return#3 +(word) mul8u::return#4 +(byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select) +(word~) mulu8_sel::$0 +(word~) mulu8_sel::$1 +(byte~) mulu8_sel::$2 +(label) mulu8_sel::@2 +(label) mulu8_sel::@return +(byte) mulu8_sel::return +(byte) mulu8_sel::return#0 +(byte) mulu8_sel::return#1 +(byte) mulu8_sel::return#10 +(byte) mulu8_sel::return#11 +(byte) mulu8_sel::return#12 +(byte) mulu8_sel::return#2 +(byte) mulu8_sel::return#3 +(byte) mulu8_sel::return#4 +(byte) mulu8_sel::return#5 +(byte) mulu8_sel::return#6 +(byte) mulu8_sel::return#7 +(byte) mulu8_sel::return#8 +(byte) mulu8_sel::return#9 +(byte) mulu8_sel::select +(byte) mulu8_sel::select#0 +(byte) mulu8_sel::select#1 +(byte) mulu8_sel::select#2 +(byte) mulu8_sel::select#3 +(byte) mulu8_sel::select#4 +(byte) mulu8_sel::select#5 +(byte) mulu8_sel::select#6 +(byte) mulu8_sel::v1 +(byte) mulu8_sel::v1#0 +(byte) mulu8_sel::v1#1 +(byte) mulu8_sel::v1#2 +(byte) mulu8_sel::v1#3 +(byte) mulu8_sel::v1#4 +(byte) mulu8_sel::v1#5 +(byte) mulu8_sel::v2 +(byte) mulu8_sel::v2#0 +(byte) mulu8_sel::v2#1 +(byte) mulu8_sel::v2#2 +(byte) mulu8_sel::v2#3 +(byte) mulu8_sel::v2#4 +(byte) mulu8_sel::v2#5 +(void()) print_byte((byte) print_byte::b) +(byte~) print_byte::$0 +(byte~) print_byte::$2 +(const string) print_byte::$4 = (string) "0123456789abcdef" +(label) print_byte::@1 +(label) print_byte::@2 +(label) print_byte::@return +(byte) print_byte::b +(byte) print_byte::b#0 +(byte) print_byte::b#1 +(byte) print_byte::b#2 +(byte[]) print_byte::hextab +(byte[]) print_byte::hextab#0 +(void()) print_char((byte) print_char::ch) +(label) print_char::@return +(byte) print_char::ch +(byte) print_char::ch#0 +(byte) print_char::ch#1 +(byte) print_char::ch#2 +(byte) print_char::ch#3 +(void()) print_cls() +(byte*~) print_cls::$0 +(boolean~) print_cls::$1 +(label) print_cls::@1 +(label) print_cls::@2 +(label) print_cls::@return +(byte*) print_cls::sc +(byte*) print_cls::sc#0 +(byte*) print_cls::sc#1 +(byte*) print_cls::sc#2 +(void()) print_sbyte((signed byte) print_sbyte::b) +(boolean~) print_sbyte::$0 +(boolean~) print_sbyte::$1 +(signed byte~) print_sbyte::$3 +(byte~) print_sbyte::$4 +(label) print_sbyte::@1 +(label) print_sbyte::@2 +(label) print_sbyte::@3 +(label) print_sbyte::@4 +(label) print_sbyte::@return +(signed byte) print_sbyte::b +(signed byte) print_sbyte::b#0 +(signed byte) print_sbyte::b#1 +(signed byte) print_sbyte::b#2 +(signed byte) print_sbyte::b#3 +(signed byte) print_sbyte::b#4 +(signed byte) print_sbyte::b#5 +(void()) print_str((byte*) print_str::str) +(boolean~) print_str::$0 +(label) print_str::@1 +(label) print_str::@2 +(label) print_str::@return +(byte*) print_str::str +(byte*) print_str::str#0 +(byte*) print_str::str#1 +(byte*) print_str::str#2 +(byte*) print_str::str#3 +(byte*) print_str::str#4 +(byte*) print_str::str#5 +(word) rem16u +(word) rem16u#0 +(word) rem16u#1 +(word) rem16u#10 +(word) rem16u#11 +(word) rem16u#12 +(word) rem16u#13 +(word) rem16u#14 +(word) rem16u#15 +(word) rem16u#16 +(word) rem16u#17 +(word) rem16u#18 +(word) rem16u#19 +(word) rem16u#2 +(word) rem16u#20 +(word) rem16u#21 +(word) rem16u#22 +(word) rem16u#23 +(word) rem16u#24 +(word) rem16u#25 +(word) rem16u#26 +(word) rem16u#27 +(word) rem16u#28 +(word) rem16u#29 +(word) rem16u#3 +(word) rem16u#30 +(word) rem16u#31 +(word) rem16u#32 +(word) rem16u#4 +(word) rem16u#5 +(word) rem16u#6 +(word) rem16u#7 +(word) rem16u#8 +(word) rem16u#9 +(signed byte()) sin8s((word) sin8s::x) +(boolean~) sin8s::$0 +(boolean~) sin8s::$1 +(byte/signed byte/word/signed word/dword/signed dword~) sin8s::$10 +(byte~) sin8s::$11 +(byte/signed byte/word/signed word/dword/signed dword~) sin8s::$12 +(byte~) sin8s::$13 +(byte~) sin8s::$14 +(byte~) sin8s::$15 +(byte/word~) sin8s::$16 +(signed byte~) sin8s::$17 +(boolean~) sin8s::$18 +(boolean~) sin8s::$19 +(word~) sin8s::$2 +(signed byte~) sin8s::$20 +(signed byte~) sin8s::$21 +(boolean~) sin8s::$3 +(boolean~) sin8s::$4 +(word~) sin8s::$5 +(word~) sin8s::$6 +(byte~) sin8s::$7 +(byte~) sin8s::$8 +(byte~) sin8s::$9 +(label) sin8s::@1 +(label) sin8s::@10 +(label) sin8s::@11 +(label) sin8s::@12 +(label) sin8s::@2 +(label) sin8s::@3 +(label) sin8s::@4 +(label) sin8s::@5 +(label) sin8s::@6 +(label) sin8s::@8 +(label) sin8s::@9 +(label) sin8s::@return +(byte) sin8s::isUpper +(byte) sin8s::isUpper#0 +(byte) sin8s::isUpper#1 +(byte) sin8s::isUpper#2 +(byte) sin8s::isUpper#3 +(byte) sin8s::isUpper#4 +(byte) sin8s::isUpper#5 +(byte) sin8s::isUpper#6 +(byte) sin8s::isUpper#7 +(byte) sin8s::isUpper#8 +(byte) sin8s::isUpper#9 +(signed byte) sin8s::return +(signed byte) sin8s::return#0 +(signed byte) sin8s::return#1 +(signed byte) sin8s::return#2 +(signed byte) sin8s::return#3 +(signed byte) sin8s::return#4 +(signed byte) sin8s::sinx +(signed byte) sin8s::sinx#0 +(signed byte) sin8s::sinx#1 +(signed byte) sin8s::sinx#2 +(byte) sin8s::usinx +(byte) sin8s::usinx#0 +(byte) sin8s::usinx#1 +(byte) sin8s::usinx#2 +(byte) sin8s::usinx#3 +(byte) sin8s::usinx#4 +(word) sin8s::x +(word) sin8s::x#0 +(word) sin8s::x#1 +(word) sin8s::x#2 +(word) sin8s::x#3 +(word) sin8s::x#4 +(word) sin8s::x#5 +(word) sin8s::x#6 +(word) sin8s::x#7 +(byte) sin8s::x1 +(byte) sin8s::x1#0 +(byte) sin8s::x1#1 +(byte) sin8s::x1#2 +(byte) sin8s::x1#3 +(byte) sin8s::x1#4 +(byte) sin8s::x2 +(byte) sin8s::x2#0 +(byte) sin8s::x3 +(byte) sin8s::x3#0 +(byte) sin8s::x3#1 +(byte) sin8s::x3_6 +(byte) sin8s::x3_6#0 +(byte) sin8s::x4 +(byte) sin8s::x4#0 +(byte) sin8s::x5 +(byte) sin8s::x5#0 +(byte) sin8s::x5_128 +(byte) sin8s::x5_128#0 +(void()) sin8s_gen((signed byte*) sin8s_gen::sintab , (word) sin8s_gen::wavelength) +(word~) sin8s_gen::$0 +(signed byte~) sin8s_gen::$1 +(word~) sin8s_gen::$2 +(boolean~) sin8s_gen::$3 +(label) sin8s_gen::@1 +(label) sin8s_gen::@3 +(label) sin8s_gen::@4 +(label) sin8s_gen::@return +(word) sin8s_gen::i +(word) sin8s_gen::i#0 +(word) sin8s_gen::i#1 +(word) sin8s_gen::i#2 +(word) sin8s_gen::i#3 +(signed byte*) sin8s_gen::sintab +(signed byte*) sin8s_gen::sintab#0 +(signed byte*) sin8s_gen::sintab#1 +(signed byte*) sin8s_gen::sintab#2 +(signed byte*) sin8s_gen::sintab#3 +(signed byte*) sin8s_gen::sintab#4 +(signed byte*) sin8s_gen::sintab#5 +(word) sin8s_gen::step +(word) sin8s_gen::step#0 +(word) sin8s_gen::step#1 +(word) sin8s_gen::step#2 +(word) sin8s_gen::wavelength +(word) sin8s_gen::wavelength#0 +(word) sin8s_gen::wavelength#1 +(word) sin8s_gen::wavelength#2 +(word) sin8s_gen::wavelength#3 +(word) sin8s_gen::wavelength#4 +(word) sin8s_gen::x +(word) sin8s_gen::x#0 +(word) sin8s_gen::x#1 +(word) sin8s_gen::x#2 +(word) sin8s_gen::x#3 + +OPTIMIZING CONTROL FLOW GRAPH +Inversing boolean not (boolean~) divr16u::$4 ← (byte~) divr16u::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (boolean~) divr16u::$9 ← (word) divr16u::rem#5 < (word) divr16u::divisor#1 from (boolean~) divr16u::$8 ← (word) divr16u::rem#5 >= (word) divr16u::divisor#1 +Inversing boolean not (boolean~) mul8u::$3 ← (byte~) mul8u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) mul8u::$2 ← (byte~) mul8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (boolean~) sin8s::$1 ← (word) sin8s::x#3 < (word) PI_u4f12#0 from (boolean~) sin8s::$0 ← (word) sin8s::x#3 >= (word) PI_u4f12#0 +Inversing boolean not (boolean~) sin8s::$4 ← (word) sin8s::x#4 < (word) PI_HALF_u4f12#0 from (boolean~) sin8s::$3 ← (word) sin8s::x#4 >= (word) PI_HALF_u4f12#0 +Inversing boolean not (boolean~) sin8s::$19 ← (byte) sin8s::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) sin8s::$18 ← (byte) sin8s::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (boolean~) print_sbyte::$1 ← (signed byte) print_sbyte::b#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) print_sbyte::$0 ← (signed byte) print_sbyte::b#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (boolean~) main::$3 ← (signed byte) main::sb#0 < (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) main::$2 ← (signed byte) main::sb#0 >= (byte/signed byte/word/signed word/dword/signed dword) 0 +Succesful SSA optimization Pass2UnaryNotSimplification +Not aliassing across scopes: divr16u::rem#9 divr16u::rem#3 +Not aliassing across scopes: divr16u::dividend#4 divr16u::dividend#1 +Not aliassing across scopes: divr16u::divisor#5 divr16u::divisor#0 +Not aliassing across scopes: rem16u#1 divr16u::rem#8 +Not aliassing across scopes: div16u::dividend#1 div16u::dividend#0 +Not aliassing across scopes: div16u::divisor#1 div16u::divisor#0 +Not aliassing across scopes: rem16u#18 rem16u#19 +Not aliassing across scopes: divr16u::dividend#1 div16u::dividend#1 +Not aliassing across scopes: divr16u::divisor#0 div16u::divisor#1 +Not aliassing across scopes: divr16u::return#2 divr16u::return#1 +Not aliassing across scopes: rem16u#11 rem16u#2 +Not aliassing across scopes: div16u::$0 divr16u::return#4 +Not aliassing across scopes: mul8u::b#1 mul8u::b#0 +Not aliassing across scopes: mul8u::a#5 mul8u::a#1 +Not aliassing across scopes: sin8s_gen::wavelength#1 sin8s_gen::wavelength#0 +Not aliassing across scopes: rem16u#19 rem16u#21 +Not aliassing across scopes: sin8s_gen::sintab#5 sin8s_gen::sintab#1 +Not aliassing across scopes: div16u::dividend#0 PI2_u4f12#0 +Not aliassing across scopes: div16u::divisor#0 sin8s_gen::wavelength#1 +Not aliassing across scopes: div16u::return#2 div16u::return#1 +Not aliassing across scopes: rem16u#13 rem16u#4 +Not aliassing across scopes: sin8s_gen::$0 div16u::return#4 +Not aliassing across scopes: sin8s::x#0 sin8s_gen::x#2 +Not aliassing across scopes: sin8s::return#0 sin8s::return#2 +Not aliassing across scopes: sin8s_gen::$1 sin8s::return#3 +Not aliassing across scopes: sin8s::x#3 sin8s::x#0 +Not aliassing across scopes: mulu8_sel::v1#0 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::v2#0 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::return#0 mulu8_sel::return#6 +Not aliassing across scopes: sin8s::$8 mulu8_sel::return#7 +Not aliassing across scopes: mulu8_sel::v1#1 sin8s::x2#0 +Not aliassing across scopes: mulu8_sel::v2#1 sin8s::x1#1 +Not aliassing across scopes: mulu8_sel::return#1 mulu8_sel::return#6 +Not aliassing across scopes: sin8s::$9 mulu8_sel::return#8 +Not aliassing across scopes: mulu8_sel::v1#2 sin8s::x3#0 +Not aliassing across scopes: mulu8_sel::return#2 mulu8_sel::return#6 +Not aliassing across scopes: sin8s::$11 mulu8_sel::return#9 +Not aliassing across scopes: mulu8_sel::v1#3 sin8s::x3#1 +Not aliassing across scopes: mulu8_sel::v2#3 sin8s::x1#2 +Not aliassing across scopes: mulu8_sel::return#3 mulu8_sel::return#6 +Not aliassing across scopes: sin8s::$13 mulu8_sel::return#10 +Not aliassing across scopes: mulu8_sel::v1#4 sin8s::x4#0 +Not aliassing across scopes: mulu8_sel::v2#4 sin8s::x1#3 +Not aliassing across scopes: mulu8_sel::return#4 mulu8_sel::return#6 +Not aliassing across scopes: sin8s::$14 mulu8_sel::return#11 +Not aliassing across scopes: mulu8_sel::v1#5 mulu8_sel::v1#3 +Not aliassing across scopes: mulu8_sel::v2#5 mulu8_sel::v2#3 +Not aliassing across scopes: mulu8_sel::select#6 mulu8_sel::select#3 +Not aliassing across scopes: mul8u::a#1 mulu8_sel::v1#5 +Not aliassing across scopes: mul8u::b#0 mulu8_sel::v2#5 +Not aliassing across scopes: mul8u::return#2 mul8u::return#1 +Not aliassing across scopes: mulu8_sel::$0 mul8u::return#4 +Not aliassing across scopes: print_str::str#5 print_str::str#2 +Not aliassing across scopes: char_cursor#44 char_cursor#42 +Not aliassing across scopes: print_sbyte::b#2 print_sbyte::b#1 +Not aliassing across scopes: char_cursor#45 char_cursor#41 +Not aliassing across scopes: char_cursor#21 char_cursor#8 +Not aliassing across scopes: char_cursor#22 char_cursor#10 +Not aliassing across scopes: print_byte::b#1 print_byte::b#0 +Not aliassing across scopes: char_cursor#39 char_cursor#37 +Not aliassing across scopes: char_cursor#24 char_cursor#10 +Not aliassing across scopes: char_cursor#25 char_cursor#10 +Not aliassing across scopes: print_char::ch#3 print_char::ch#1 +Not aliassing across scopes: char_cursor#27 char_cursor#39 +Not aliassing across scopes: print_cls::sc#0 SCREEN#0 +Not aliassing across scopes: line_cursor#1 SCREEN#0 +Not aliassing across scopes: rem16u#21 rem16u#23 +Not aliassing across scopes: line_cursor#13 line_cursor#12 +Not aliassing across scopes: char_cursor#46 char_cursor#43 +Not aliassing across scopes: sin8s_gen::sintab#1 main::sintab2#0 +Not aliassing across scopes: sin8s_gen::wavelength#0 main::wavelength#0 +Not aliassing across scopes: rem16u#15 rem16u#6 +Not aliassing across scopes: line_cursor#7 line_cursor#2 +Not aliassing across scopes: char_cursor#30 char_cursor#12 +Not aliassing across scopes: print_sbyte::b#1 main::sb#1 +Not aliassing across scopes: char_cursor#31 char_cursor#5 +Not aliassing across scopes: char_cursor#32 char_cursor#2 +Not aliassing across scopes: char_cursor#33 char_cursor#2 +Not aliassing across scopes: rem16u#17 rem16u#8 +Not aliassing across scopes: line_cursor#9 line_cursor#4 +Not aliassing across scopes: char_cursor#35 char_cursor#17 +Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#6 +Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#7 +Alias (word) divr16u::quotient#1 = (word~) divr16u::$7 (word) divr16u::quotient#4 +Alias (word) divr16u::dividend#2 = (word) divr16u::dividend#6 +Alias (word) divr16u::quotient#6 = (word) divr16u::quotient#7 +Alias (word) divr16u::divisor#3 = (word) divr16u::divisor#4 +Alias (byte) divr16u::i#5 = (byte) divr16u::i#6 +Alias (word) divr16u::rem#1 = (word~) divr16u::$5 +Alias (word) divr16u::rem#5 = (word) divr16u::rem#7 +Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#2 +Alias (byte) divr16u::i#3 = (byte) divr16u::i#4 +Alias (word) divr16u::rem#2 = (word~) divr16u::$10 +Alias (word) divr16u::rem#10 = (word) divr16u::rem#8 +Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#3 (word) divr16u::return#1 +Alias (word) rem16u#1 = (word) rem16u#10 (word) rem16u#2 +Alias (word) divr16u::return#2 = (word) divr16u::return#4 +Alias (word) rem16u#11 = (word) rem16u#3 (word) rem16u#12 (word) rem16u#4 +Alias (word) div16u::return#0 = (word~) div16u::$0 (word) div16u::return#3 (word) div16u::return#1 +Alias (byte) mul8u::a#2 = (byte) mul8u::a#3 (byte) mul8u::a#6 +Alias (word) mul8u::mb#3 = (word) mul8u::mb#4 (word) mul8u::mb#5 +Alias (word) mul8u::res#2 = (word) mul8u::res#5 (word) mul8u::res#4 (word) mul8u::return#0 (word) mul8u::res#3 (word) mul8u::return#3 (word) mul8u::return#1 +Alias (byte) mul8u::a#0 = (byte~) mul8u::$5 +Alias (word) mul8u::mb#1 = (word~) mul8u::$6 +Alias (word) mul8u::res#1 = (word~) mul8u::$4 +Alias (word) rem16u#0 = (word) rem16u#27 (word) rem16u#26 (word) rem16u#23 +Alias (word) div16u::return#2 = (word) div16u::return#4 +Alias (signed byte*) sin8s_gen::sintab#4 = (signed byte*) sin8s_gen::sintab#5 +Alias (word) sin8s_gen::wavelength#1 = (word) sin8s_gen::wavelength#4 +Alias (word) rem16u#13 = (word) rem16u#5 +Alias (word) sin8s_gen::step#0 = (word~) sin8s_gen::$0 +Alias (signed byte) sin8s::return#0 = (signed byte) sin8s::return#3 +Alias (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#3 +Alias (word) sin8s_gen::x#2 = (word) sin8s_gen::x#3 +Alias (word) sin8s_gen::step#1 = (word) sin8s_gen::step#2 +Alias (word) sin8s_gen::i#2 = (word) sin8s_gen::i#3 +Alias (word) sin8s_gen::wavelength#2 = (word) sin8s_gen::wavelength#3 +Alias (word) rem16u#14 = (word) rem16u#20 (word) rem16u#24 (word) rem16u#6 +Alias (word) sin8s_gen::x#1 = (word~) sin8s_gen::$2 +Alias (word) sin8s::x#3 = (word) sin8s::x#5 +Alias (word) sin8s::x#1 = (word~) sin8s::$2 +Alias (byte) sin8s::x1#0 = (byte~) sin8s::$7 (byte) sin8s::x1#1 (byte) sin8s::x1#4 (byte) sin8s::x1#2 (byte) sin8s::x1#3 +Alias (byte) mulu8_sel::return#0 = (byte) mulu8_sel::return#7 +Alias (byte) sin8s::isUpper#2 = (byte) sin8s::isUpper#6 (byte) sin8s::isUpper#7 (byte) sin8s::isUpper#5 (byte) sin8s::isUpper#4 (byte) sin8s::isUpper#3 +Alias (byte) sin8s::x2#0 = (byte~) sin8s::$8 +Alias (byte) mulu8_sel::return#1 = (byte) mulu8_sel::return#8 +Alias (byte) sin8s::x3#0 = (byte~) sin8s::$9 (byte) sin8s::x3#1 +Alias (byte) mulu8_sel::v2#2 = (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$10 +Alias (byte) mulu8_sel::return#2 = (byte) mulu8_sel::return#9 +Alias (byte) sin8s::x3_6#0 = (byte~) sin8s::$11 +Alias (byte) sin8s::usinx#0 = (byte/signed byte/word/signed word/dword/signed dword~) sin8s::$12 (byte) sin8s::usinx#4 (byte) sin8s::usinx#2 +Alias (byte) mulu8_sel::return#10 = (byte) mulu8_sel::return#3 +Alias (byte) sin8s::x4#0 = (byte~) sin8s::$13 +Alias (byte) mulu8_sel::return#11 = (byte) mulu8_sel::return#4 +Alias (byte) sin8s::x5#0 = (byte~) sin8s::$14 +Alias (byte) sin8s::x5_128#0 = (byte~) sin8s::$15 +Alias (byte) sin8s::usinx#1 = (byte/word~) sin8s::$16 (byte) sin8s::usinx#3 +Alias (signed byte) sin8s::sinx#0 = (signed byte~) sin8s::$17 +Alias (word) sin8s::x#4 = (word) sin8s::x#7 +Alias (byte) sin8s::isUpper#8 = (byte) sin8s::isUpper#9 +Alias (word) sin8s::x#2 = (word~) sin8s::$5 +Alias (signed byte) sin8s::return#1 = (signed byte) sin8s::sinx#2 (signed byte) sin8s::return#4 (signed byte) sin8s::return#2 +Alias (signed byte) sin8s::sinx#1 = (signed byte~) sin8s::$21 +Alias (word) mul8u::return#2 = (word) mul8u::return#4 +Alias (byte) mulu8_sel::select#5 = (byte) mulu8_sel::select#6 +Alias (byte) mulu8_sel::return#12 = (byte) mulu8_sel::return#5 (byte~) mulu8_sel::$2 (byte) mulu8_sel::return#6 +Alias (byte*) SCREEN#0 = (byte*) line_cursor#0 (byte*) char_cursor#0 (byte*) line_cursor#12 (byte*) char_cursor#43 +Alias (byte*) print_str::str#3 = (byte*) print_str::str#4 +Alias (byte*) char_cursor#19 = (byte*) char_cursor#36 (byte*) char_cursor#20 (byte*) char_cursor#2 +Alias (byte) print_byte::b#0 = (byte~) print_sbyte::$4 +Alias (byte*) char_cursor#21 = (byte*) char_cursor#3 (byte*) char_cursor#23 (byte*) char_cursor#5 +Alias (byte*) char_cursor#38 = (byte*) char_cursor#45 +Alias (signed byte) print_sbyte::b#2 = (signed byte) print_sbyte::b#5 (signed byte) print_sbyte::b#4 +Alias (byte*) char_cursor#22 = (byte*) char_cursor#4 +Alias (signed byte) print_sbyte::b#0 = (signed byte~) print_sbyte::$3 +Alias (byte) print_byte::b#1 = (byte) print_byte::b#2 +Alias (byte*) char_cursor#24 = (byte*) char_cursor#6 +Alias (byte*) char_cursor#25 = (byte*) char_cursor#7 (byte*) char_cursor#26 (byte*) char_cursor#8 +Alias (byte*) char_cursor#10 = (byte*) char_cursor#28 (byte*) char_cursor#9 +Alias (byte*) line_cursor#1 = (byte*) char_cursor#11 (byte*) line_cursor#6 (byte*) char_cursor#29 (byte*) line_cursor#2 (byte*) char_cursor#12 +Alias (byte*) line_cursor#10 = (byte*) line_cursor#13 +Alias (byte*) char_cursor#40 = (byte*) char_cursor#46 +Alias (word) rem16u#15 = (word) rem16u#7 (word) rem16u#31 +Alias (byte*) line_cursor#3 = (byte*) line_cursor#7 +Alias (byte*) char_cursor#13 = (byte*) char_cursor#30 +Alias (byte) main::i#3 = (byte) main::i#4 (byte) main::i#5 +Alias (word) rem16u#16 = (word) rem16u#25 (word) rem16u#28 (word) rem16u#22 (word) rem16u#8 +Alias (byte*) line_cursor#11 = (byte*) line_cursor#14 (byte*) line_cursor#15 (byte*) line_cursor#8 (byte*) line_cursor#4 +Alias (byte*) char_cursor#14 = (byte*) char_cursor#31 +Alias (byte*) char_cursor#15 = (byte*) char_cursor#32 (byte*) char_cursor#34 (byte*) char_cursor#17 +Alias (byte*) char_cursor#42 = (byte*) char_cursor#47 +Alias (signed byte) main::sb#0 = (signed byte) main::sb#3 (signed byte) main::sb#2 +Alias (byte) main::i#2 = (byte) main::i#7 (byte) main::i#6 +Alias (word) rem16u#29 = (word) rem16u#32 (word) rem16u#30 +Alias (byte*) line_cursor#16 = (byte*) line_cursor#18 (byte*) line_cursor#17 +Alias (byte*) char_cursor#16 = (byte*) char_cursor#33 +Alias (word) rem16u#17 = (word) rem16u#9 +Alias (byte*) line_cursor#5 = (byte*) line_cursor#9 +Alias (byte*) char_cursor#18 = (byte*) char_cursor#35 +Succesful SSA optimization Pass2AliasElimination +Not aliassing across scopes: divr16u::rem#9 divr16u::rem#3 +Not aliassing across scopes: divr16u::dividend#4 divr16u::dividend#1 +Not aliassing across scopes: divr16u::divisor#5 divr16u::divisor#0 +Not aliassing across scopes: rem16u#1 divr16u::rem#10 +Not aliassing across scopes: div16u::dividend#1 div16u::dividend#0 +Not aliassing across scopes: div16u::divisor#1 div16u::divisor#0 +Not aliassing across scopes: rem16u#18 rem16u#19 +Not aliassing across scopes: divr16u::dividend#1 div16u::dividend#1 +Not aliassing across scopes: divr16u::divisor#0 div16u::divisor#1 +Not aliassing across scopes: divr16u::return#2 divr16u::return#0 +Not aliassing across scopes: rem16u#11 rem16u#1 +Not aliassing across scopes: div16u::return#0 divr16u::return#2 +Not aliassing across scopes: mul8u::b#1 mul8u::b#0 +Not aliassing across scopes: mul8u::a#5 mul8u::a#1 +Not aliassing across scopes: sin8s_gen::wavelength#1 sin8s_gen::wavelength#0 +Not aliassing across scopes: rem16u#19 rem16u#21 +Not aliassing across scopes: sin8s_gen::sintab#4 sin8s_gen::sintab#1 +Not aliassing across scopes: div16u::dividend#0 PI2_u4f12#0 +Not aliassing across scopes: div16u::divisor#0 sin8s_gen::wavelength#1 +Not aliassing across scopes: div16u::return#2 div16u::return#0 +Not aliassing across scopes: rem16u#13 rem16u#11 +Not aliassing across scopes: sin8s_gen::step#0 div16u::return#2 +Not aliassing across scopes: sin8s::x#0 sin8s_gen::x#2 +Not aliassing across scopes: sin8s::return#0 sin8s::return#1 +Not aliassing across scopes: sin8s_gen::$1 sin8s::return#0 +Not aliassing across scopes: sin8s::x#3 sin8s::x#0 +Not aliassing across scopes: mulu8_sel::v1#0 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::v2#0 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::return#0 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x2#0 mulu8_sel::return#0 +Not aliassing across scopes: mulu8_sel::v1#1 sin8s::x2#0 +Not aliassing across scopes: mulu8_sel::v2#1 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::return#1 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x3#0 mulu8_sel::return#1 +Not aliassing across scopes: mulu8_sel::v1#2 sin8s::x3#0 +Not aliassing across scopes: mulu8_sel::return#2 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x3_6#0 mulu8_sel::return#2 +Not aliassing across scopes: mulu8_sel::v1#3 sin8s::x3#0 +Not aliassing across scopes: mulu8_sel::v2#3 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::return#10 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x4#0 mulu8_sel::return#10 +Not aliassing across scopes: mulu8_sel::v1#4 sin8s::x4#0 +Not aliassing across scopes: mulu8_sel::v2#4 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::return#11 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x5#0 mulu8_sel::return#11 +Not aliassing across scopes: mulu8_sel::v1#5 mulu8_sel::v1#3 +Not aliassing across scopes: mulu8_sel::v2#5 mulu8_sel::v2#3 +Not aliassing across scopes: mulu8_sel::select#5 mulu8_sel::select#3 +Not aliassing across scopes: mul8u::a#1 mulu8_sel::v1#5 +Not aliassing across scopes: mul8u::b#0 mulu8_sel::v2#5 +Not aliassing across scopes: mul8u::return#2 mul8u::res#2 +Not aliassing across scopes: mulu8_sel::$0 mul8u::return#2 +Not aliassing across scopes: print_str::str#5 print_str::str#2 +Not aliassing across scopes: char_cursor#44 char_cursor#42 +Not aliassing across scopes: print_sbyte::b#2 print_sbyte::b#1 +Not aliassing across scopes: char_cursor#38 char_cursor#41 +Not aliassing across scopes: char_cursor#21 char_cursor#25 +Not aliassing across scopes: char_cursor#22 char_cursor#10 +Not aliassing across scopes: print_byte::b#1 print_byte::b#0 +Not aliassing across scopes: char_cursor#39 char_cursor#37 +Not aliassing across scopes: char_cursor#24 char_cursor#10 +Not aliassing across scopes: char_cursor#25 char_cursor#10 +Not aliassing across scopes: print_char::ch#3 print_char::ch#1 +Not aliassing across scopes: char_cursor#27 char_cursor#39 +Not aliassing across scopes: print_cls::sc#0 SCREEN#0 +Not aliassing across scopes: line_cursor#1 SCREEN#0 +Not aliassing across scopes: rem16u#21 rem16u#0 +Not aliassing across scopes: line_cursor#10 SCREEN#0 +Not aliassing across scopes: char_cursor#40 SCREEN#0 +Not aliassing across scopes: sin8s_gen::sintab#1 main::sintab2#0 +Not aliassing across scopes: sin8s_gen::wavelength#0 main::wavelength#0 +Not aliassing across scopes: rem16u#15 rem16u#14 +Not aliassing across scopes: line_cursor#3 line_cursor#1 +Not aliassing across scopes: char_cursor#13 line_cursor#1 +Not aliassing across scopes: print_sbyte::b#1 main::sb#1 +Not aliassing across scopes: char_cursor#14 char_cursor#21 +Not aliassing across scopes: char_cursor#15 char_cursor#19 +Not aliassing across scopes: char_cursor#16 char_cursor#19 +Not aliassing across scopes: rem16u#17 rem16u#16 +Not aliassing across scopes: line_cursor#5 line_cursor#11 +Not aliassing across scopes: char_cursor#18 char_cursor#15 +Alias (word) divr16u::dividend#2 = (word) divr16u::dividend#3 +Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 +Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#3 (word) divr16u::divisor#6 +Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5 +Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#5 +Alias (byte) mul8u::a#2 = (byte) mul8u::a#4 +Alias (word) mul8u::mb#2 = (word) mul8u::mb#3 +Alias (byte) sin8s::isUpper#2 = (byte) sin8s::isUpper#8 +Alias (signed byte) main::sb#0 = (signed byte) main::sb#1 +Alias (byte) main::i#2 = (byte) main::i#3 +Alias (word) rem16u#16 = (word) rem16u#29 +Alias (byte*) line_cursor#11 = (byte*) line_cursor#16 +Succesful SSA optimization Pass2AliasElimination +Not aliassing across scopes: divr16u::rem#9 divr16u::rem#3 +Not aliassing across scopes: divr16u::dividend#4 divr16u::dividend#1 +Not aliassing across scopes: divr16u::divisor#5 divr16u::divisor#0 +Not aliassing across scopes: rem16u#1 divr16u::rem#10 +Not aliassing across scopes: div16u::dividend#1 div16u::dividend#0 +Not aliassing across scopes: div16u::divisor#1 div16u::divisor#0 +Not aliassing across scopes: rem16u#18 rem16u#19 +Not aliassing across scopes: divr16u::dividend#1 div16u::dividend#1 +Not aliassing across scopes: divr16u::divisor#0 div16u::divisor#1 +Not aliassing across scopes: divr16u::return#2 divr16u::return#0 +Not aliassing across scopes: rem16u#11 rem16u#1 +Not aliassing across scopes: div16u::return#0 divr16u::return#2 +Not aliassing across scopes: mul8u::b#1 mul8u::b#0 +Not aliassing across scopes: mul8u::a#5 mul8u::a#1 +Not aliassing across scopes: sin8s_gen::wavelength#1 sin8s_gen::wavelength#0 +Not aliassing across scopes: rem16u#19 rem16u#21 +Not aliassing across scopes: sin8s_gen::sintab#4 sin8s_gen::sintab#1 +Not aliassing across scopes: div16u::dividend#0 PI2_u4f12#0 +Not aliassing across scopes: div16u::divisor#0 sin8s_gen::wavelength#1 +Not aliassing across scopes: div16u::return#2 div16u::return#0 +Not aliassing across scopes: rem16u#13 rem16u#11 +Not aliassing across scopes: sin8s_gen::step#0 div16u::return#2 +Not aliassing across scopes: sin8s::x#0 sin8s_gen::x#2 +Not aliassing across scopes: sin8s::return#0 sin8s::return#1 +Not aliassing across scopes: sin8s_gen::$1 sin8s::return#0 +Not aliassing across scopes: sin8s::x#3 sin8s::x#0 +Not aliassing across scopes: mulu8_sel::v1#0 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::v2#0 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::return#0 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x2#0 mulu8_sel::return#0 +Not aliassing across scopes: mulu8_sel::v1#1 sin8s::x2#0 +Not aliassing across scopes: mulu8_sel::v2#1 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::return#1 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x3#0 mulu8_sel::return#1 +Not aliassing across scopes: mulu8_sel::v1#2 sin8s::x3#0 +Not aliassing across scopes: mulu8_sel::return#2 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x3_6#0 mulu8_sel::return#2 +Not aliassing across scopes: mulu8_sel::v1#3 sin8s::x3#0 +Not aliassing across scopes: mulu8_sel::v2#3 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::return#10 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x4#0 mulu8_sel::return#10 +Not aliassing across scopes: mulu8_sel::v1#4 sin8s::x4#0 +Not aliassing across scopes: mulu8_sel::v2#4 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::return#11 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x5#0 mulu8_sel::return#11 +Not aliassing across scopes: mulu8_sel::v1#5 mulu8_sel::v1#3 +Not aliassing across scopes: mulu8_sel::v2#5 mulu8_sel::v2#3 +Not aliassing across scopes: mulu8_sel::select#5 mulu8_sel::select#3 +Not aliassing across scopes: mul8u::a#1 mulu8_sel::v1#5 +Not aliassing across scopes: mul8u::b#0 mulu8_sel::v2#5 +Not aliassing across scopes: mul8u::return#2 mul8u::res#2 +Not aliassing across scopes: mulu8_sel::$0 mul8u::return#2 +Not aliassing across scopes: print_str::str#5 print_str::str#2 +Not aliassing across scopes: char_cursor#44 char_cursor#42 +Not aliassing across scopes: print_sbyte::b#2 print_sbyte::b#1 +Not aliassing across scopes: char_cursor#38 char_cursor#41 +Not aliassing across scopes: char_cursor#21 char_cursor#25 +Not aliassing across scopes: char_cursor#22 char_cursor#10 +Not aliassing across scopes: print_byte::b#1 print_byte::b#0 +Not aliassing across scopes: char_cursor#39 char_cursor#37 +Not aliassing across scopes: char_cursor#24 char_cursor#10 +Not aliassing across scopes: char_cursor#25 char_cursor#10 +Not aliassing across scopes: print_char::ch#3 print_char::ch#1 +Not aliassing across scopes: char_cursor#27 char_cursor#39 +Not aliassing across scopes: print_cls::sc#0 SCREEN#0 +Not aliassing across scopes: line_cursor#1 SCREEN#0 +Not aliassing across scopes: rem16u#21 rem16u#0 +Not aliassing across scopes: line_cursor#10 SCREEN#0 +Not aliassing across scopes: char_cursor#40 SCREEN#0 +Not aliassing across scopes: sin8s_gen::sintab#1 main::sintab2#0 +Not aliassing across scopes: sin8s_gen::wavelength#0 main::wavelength#0 +Not aliassing across scopes: rem16u#15 rem16u#14 +Not aliassing across scopes: line_cursor#3 line_cursor#1 +Not aliassing across scopes: char_cursor#13 line_cursor#1 +Not aliassing across scopes: print_sbyte::b#1 main::sb#0 +Not aliassing across scopes: char_cursor#14 char_cursor#21 +Not aliassing across scopes: char_cursor#15 char_cursor#19 +Not aliassing across scopes: char_cursor#16 char_cursor#19 +Not aliassing across scopes: rem16u#17 rem16u#16 +Not aliassing across scopes: line_cursor#5 line_cursor#11 +Not aliassing across scopes: char_cursor#18 char_cursor#15 +Self Phi Eliminated (word) divr16u::divisor#1 +Self Phi Eliminated (word) sin8s_gen::step#1 +Self Phi Eliminated (word) sin8s_gen::wavelength#2 +Self Phi Eliminated (word) rem16u#14 +Self Phi Eliminated (word) rem16u#16 +Self Phi Eliminated (byte*) line_cursor#11 +Succesful SSA optimization Pass2SelfPhiElimination +Redundant Phi (word) divr16u::rem#9 (word) divr16u::rem#3 +Redundant Phi (word) divr16u::dividend#4 (word) divr16u::dividend#1 +Redundant Phi (word) divr16u::divisor#5 (word) divr16u::divisor#0 +Redundant Phi (word) divr16u::divisor#1 (word) divr16u::divisor#5 +Redundant Phi (word) div16u::dividend#1 (word) div16u::dividend#0 +Redundant Phi (word) div16u::divisor#1 (word) div16u::divisor#0 +Redundant Phi (word) rem16u#18 (word) rem16u#19 +Redundant Phi (word) rem16u#11 (word) rem16u#1 +Redundant Phi (byte) mul8u::b#1 (byte) mul8u::b#0 +Redundant Phi (byte) mul8u::a#5 (byte) mul8u::a#1 +Redundant Phi (word) sin8s_gen::wavelength#1 (word) sin8s_gen::wavelength#0 +Redundant Phi (word) rem16u#19 (word) rem16u#21 +Redundant Phi (signed byte*) sin8s_gen::sintab#4 (signed byte*) sin8s_gen::sintab#1 +Redundant Phi (word) rem16u#13 (word) rem16u#11 +Redundant Phi (word) sin8s_gen::step#1 (word) sin8s_gen::step#0 +Redundant Phi (word) sin8s_gen::wavelength#2 (word) sin8s_gen::wavelength#1 +Redundant Phi (word) rem16u#14 (word) rem16u#13 +Redundant Phi (word) sin8s::x#3 (word) sin8s::x#0 +Redundant Phi (signed byte) print_sbyte::b#2 (signed byte) print_sbyte::b#1 +Redundant Phi (byte*) char_cursor#38 (byte*) char_cursor#41 +Redundant Phi (byte*) char_cursor#21 (byte*) char_cursor#25 +Redundant Phi (byte*) char_cursor#22 (byte*) char_cursor#10 +Redundant Phi (byte) print_byte::b#1 (byte) print_byte::b#0 +Redundant Phi (byte*) char_cursor#39 (byte*) char_cursor#37 +Redundant Phi (byte*) char_cursor#24 (byte*) char_cursor#10 +Redundant Phi (byte*) char_cursor#25 (byte*) char_cursor#10 +Redundant Phi (word) rem16u#21 (word) rem16u#0 +Redundant Phi (byte*) line_cursor#10 (byte*) SCREEN#0 +Redundant Phi (byte*) char_cursor#40 (byte*) SCREEN#0 +Redundant Phi (word) rem16u#15 (word) rem16u#14 +Redundant Phi (byte*) line_cursor#3 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#13 (byte*) line_cursor#1 +Redundant Phi (word) rem16u#16 (word) rem16u#15 +Redundant Phi (byte*) line_cursor#11 (byte*) line_cursor#3 +Redundant Phi (byte*) char_cursor#14 (byte*) char_cursor#21 +Redundant Phi (byte*) char_cursor#15 (byte*) char_cursor#19 +Redundant Phi (byte*) char_cursor#16 (byte*) char_cursor#19 +Redundant Phi (word) rem16u#17 (word) rem16u#16 +Redundant Phi (byte*) line_cursor#5 (byte*) line_cursor#11 +Redundant Phi (byte*) char_cursor#18 (byte*) char_cursor#15 +Succesful SSA optimization Pass2RedundantPhiElimination +Simple Condition (boolean~) divr16u::$4 if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 +Simple Condition (boolean~) divr16u::$9 if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 +Simple Condition (boolean~) divr16u::$11 if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 +Simple Condition (boolean~) mul8u::$0 if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 +Simple Condition (boolean~) mul8u::$3 if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 +Simple Condition (boolean~) sin8s_gen::$3 if((word) sin8s_gen::i#1<(word) sin8s_gen::wavelength#0) goto sin8s_gen::@1 +Simple Condition (boolean~) sin8s::$1 if((word) sin8s::x#0<(word) PI_u4f12#0) goto sin8s::@1 +Simple Condition (boolean~) sin8s::$4 if((word) sin8s::x#4<(word) PI_HALF_u4f12#0) goto sin8s::@2 +Simple Condition (boolean~) sin8s::$19 if((byte) sin8s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@3 +Simple Condition (boolean~) print_str::$0 if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 +Simple Condition (boolean~) print_sbyte::$1 if((signed byte) print_sbyte::b#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 +Simple Condition (boolean~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 +Simple Condition (boolean~) main::$3 if((signed byte) main::sb#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 +Simple Condition (boolean~) main::$7 if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 120) goto main::@1 +Succesful SSA optimization Pass2ConditionalJumpSimplification +Constant (const word) rem16u#0 = 0 +Constant (const word) divr16u::quotient#0 = 0 +Constant (const byte) divr16u::i#0 = 0 +Constant (const word) divr16u::rem#3 = 0 +Constant (const word) mul8u::res#0 = 0 +Constant (const word) PI2_u4f12#0 = 25736 +Constant (const word) PI_u4f12#0 = 12868 +Constant (const word) PI_HALF_u4f12#0 = 6434 +Constant (const word) sin8s_gen::x#0 = 0 +Constant (const word) sin8s_gen::i#0 = 0 +Constant (const byte) sin8s::isUpper#0 = 0 +Constant (const byte) sin8s::isUpper#1 = 1 +Constant (const byte) mulu8_sel::select#0 = 0 +Constant (const byte) mulu8_sel::select#1 = 1 +Constant (const byte) mulu8_sel::v2#2 = 256/6 +Constant (const byte) mulu8_sel::select#2 = 1 +Constant (const byte) mulu8_sel::select#3 = 0 +Constant (const byte) mulu8_sel::select#4 = 0 +Constant (const byte*) SCREEN#0 = ((byte*))1024 +Constant (const byte) print_char::ch#0 = '-' +Constant (const string) print_byte::hextab#0 = print_byte::$4 +Constant (const word) main::wavelength#0 = 120 +Constant (const signed byte[120]) main::sintab2#0 = { fill( 120, 0) } +Constant (const byte) main::i#0 = 0 +Constant (const string) print_str::str#1 = main::str +Constant (const string) print_str::str#2 = main::str1 +Succesful SSA optimization Pass2ConstantIdentification +Constant (const word) div16u::dividend#0 = PI2_u4f12#0 +Constant (const byte*) print_cls::sc#0 = SCREEN#0 +Constant (const byte*) print_cls::$0 = SCREEN#0+1000 +Constant (const byte*) line_cursor#1 = SCREEN#0 +Constant (const signed byte[120]) sin8s_gen::sintab#1 = main::sintab2#0 +Constant (const word) sin8s_gen::wavelength#0 = main::wavelength#0 +Succesful SSA optimization Pass2ConstantIdentification +Constant (const word) divr16u::dividend#1 = div16u::dividend#0 +Constant (const word) div16u::divisor#0 = sin8s_gen::wavelength#0 +Succesful SSA optimization Pass2ConstantIdentification +Constant (const word) divr16u::divisor#0 = div16u::divisor#0 +Succesful SSA optimization Pass2ConstantIdentification +Eliminating unused variable (word) rem16u#1 and assignment [15] (word) rem16u#1 ← (word) divr16u::rem#10 +Eliminating unused constant (const word) rem16u#0 +Succesful SSA optimization PassNEliminateUnusedVars +Eliminating Noop Cast (signed byte) sin8s::sinx#0 ← ((signed byte)) (byte) sin8s::usinx#1 +Eliminating Noop Cast (signed byte~) sin8s::$20 ← ((signed byte)) (byte) sin8s::usinx#1 +Eliminating Noop Cast (byte) print_byte::b#0 ← ((byte)) (signed byte) print_sbyte::b#3 +Succesful SSA optimization Pass2NopCastElimination +Culled Empty Block (label) @2 +Culled Empty Block (label) divr16u::@6 +Culled Empty Block (label) mul8u::@3 +Culled Empty Block (label) @11 +Culled Empty Block (label) @18 +Culled Empty Block (label) print_sbyte::@3 +Culled Empty Block (label) print_byte::@2 +Culled Empty Block (label) print_cls::@2 +Culled Empty Block (label) main::@6 +Culled Empty Block (label) main::@9 +Culled Empty Block (label) @30 +Succesful SSA optimization Pass2CullEmptyBlocks +Not aliassing across scopes: divr16u::return#2 divr16u::return#0 +Not aliassing across scopes: div16u::return#0 divr16u::return#2 +Not aliassing across scopes: mul8u::a#2 mul8u::a#1 +Not aliassing across scopes: div16u::return#2 div16u::return#0 +Not aliassing across scopes: sin8s_gen::step#0 div16u::return#2 +Not aliassing across scopes: sin8s::x#0 sin8s_gen::x#2 +Not aliassing across scopes: sin8s::return#0 sin8s::return#1 +Not aliassing across scopes: sin8s_gen::$1 sin8s::return#0 +Not aliassing across scopes: sin8s::x#4 sin8s::x#0 +Not aliassing across scopes: mulu8_sel::v1#0 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::v2#0 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::return#0 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x2#0 mulu8_sel::return#0 +Not aliassing across scopes: mulu8_sel::v1#1 sin8s::x2#0 +Not aliassing across scopes: mulu8_sel::v2#1 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::return#1 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x3#0 mulu8_sel::return#1 +Not aliassing across scopes: mulu8_sel::v1#2 sin8s::x3#0 +Not aliassing across scopes: mulu8_sel::return#2 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x3_6#0 mulu8_sel::return#2 +Not aliassing across scopes: mulu8_sel::v1#3 sin8s::x3#0 +Not aliassing across scopes: mulu8_sel::v2#3 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::return#10 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x4#0 mulu8_sel::return#10 +Not aliassing across scopes: mulu8_sel::v1#4 sin8s::x4#0 +Not aliassing across scopes: mulu8_sel::v2#4 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::return#11 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x5#0 mulu8_sel::return#11 +Not aliassing across scopes: mulu8_sel::v1#5 mulu8_sel::v1#3 +Not aliassing across scopes: mulu8_sel::v2#5 mulu8_sel::v2#3 +Not aliassing across scopes: mul8u::a#1 mulu8_sel::v1#5 +Not aliassing across scopes: mul8u::b#0 mulu8_sel::v2#5 +Not aliassing across scopes: mul8u::return#2 mul8u::res#2 +Not aliassing across scopes: mulu8_sel::$0 mul8u::return#2 +Not aliassing across scopes: char_cursor#44 char_cursor#42 +Not aliassing across scopes: print_sbyte::b#3 print_sbyte::b#1 +Not aliassing across scopes: char_cursor#37 char_cursor#41 +Not aliassing across scopes: print_char::ch#3 print_char::ch#1 +Not aliassing across scopes: char_cursor#27 char_cursor#37 +Not aliassing across scopes: print_sbyte::b#1 main::sb#0 +Not aliassing across scopes: divr16u::return#2 divr16u::return#0 +Not aliassing across scopes: div16u::return#0 divr16u::return#2 +Not aliassing across scopes: mul8u::a#2 mul8u::a#1 +Not aliassing across scopes: div16u::return#2 div16u::return#0 +Not aliassing across scopes: sin8s_gen::step#0 div16u::return#2 +Not aliassing across scopes: sin8s::x#0 sin8s_gen::x#2 +Not aliassing across scopes: sin8s::return#0 sin8s::return#1 +Not aliassing across scopes: sin8s_gen::$1 sin8s::return#0 +Not aliassing across scopes: sin8s::x#4 sin8s::x#0 +Not aliassing across scopes: mulu8_sel::v1#0 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::v2#0 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::return#0 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x2#0 mulu8_sel::return#0 +Not aliassing across scopes: mulu8_sel::v1#1 sin8s::x2#0 +Not aliassing across scopes: mulu8_sel::v2#1 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::return#1 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x3#0 mulu8_sel::return#1 +Not aliassing across scopes: mulu8_sel::v1#2 sin8s::x3#0 +Not aliassing across scopes: mulu8_sel::return#2 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x3_6#0 mulu8_sel::return#2 +Not aliassing across scopes: mulu8_sel::v1#3 sin8s::x3#0 +Not aliassing across scopes: mulu8_sel::v2#3 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::return#10 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x4#0 mulu8_sel::return#10 +Not aliassing across scopes: mulu8_sel::v1#4 sin8s::x4#0 +Not aliassing across scopes: mulu8_sel::v2#4 sin8s::x1#0 +Not aliassing across scopes: mulu8_sel::return#11 mulu8_sel::return#12 +Not aliassing across scopes: sin8s::x5#0 mulu8_sel::return#11 +Not aliassing across scopes: mulu8_sel::v1#5 mulu8_sel::v1#3 +Not aliassing across scopes: mulu8_sel::v2#5 mulu8_sel::v2#3 +Not aliassing across scopes: mul8u::a#1 mulu8_sel::v1#5 +Not aliassing across scopes: mul8u::b#0 mulu8_sel::v2#5 +Not aliassing across scopes: mul8u::return#2 mul8u::res#2 +Not aliassing across scopes: mulu8_sel::$0 mul8u::return#2 +Not aliassing across scopes: char_cursor#44 char_cursor#42 +Not aliassing across scopes: print_sbyte::b#3 print_sbyte::b#1 +Not aliassing across scopes: char_cursor#37 char_cursor#41 +Not aliassing across scopes: print_char::ch#3 print_char::ch#1 +Not aliassing across scopes: char_cursor#27 char_cursor#37 +Not aliassing across scopes: print_sbyte::b#1 main::sb#0 +OPTIMIZING CONTROL FLOW GRAPH +Inlining constant with var siblings (const word) divr16u::quotient#0 +Inlining constant with var siblings (const word) divr16u::quotient#0 +Inlining constant with var siblings (const word) divr16u::quotient#0 +Inlining constant with var siblings (const byte) divr16u::i#0 +Inlining constant with var siblings (const byte) divr16u::i#0 +Inlining constant with var siblings (const word) divr16u::rem#3 +Inlining constant with var siblings (const word) divr16u::rem#3 +Inlining constant with var siblings (const word) divr16u::rem#3 +Inlining constant with var siblings (const word) divr16u::rem#3 +Inlining constant with var siblings (const word) divr16u::rem#3 +Inlining constant with var siblings (const word) divr16u::rem#3 +Inlining constant with var siblings (const word) divr16u::dividend#1 +Inlining constant with var siblings (const word) divr16u::dividend#1 +Inlining constant with var siblings (const word) mul8u::res#0 +Inlining constant with var siblings (const word) mul8u::res#0 +Inlining constant with var siblings (const word) mul8u::res#0 +Inlining constant with var siblings (const word) sin8s_gen::x#0 +Inlining constant with var siblings (const word) sin8s_gen::x#0 +Inlining constant with var siblings (const word) sin8s_gen::i#0 +Inlining constant with var siblings (const word) sin8s_gen::i#0 +Inlining constant with var siblings (const signed byte[120]) sin8s_gen::sintab#1 +Inlining constant with var siblings (const signed byte[120]) sin8s_gen::sintab#1 +Inlining constant with var siblings (const byte) sin8s::isUpper#0 +Inlining constant with different constant siblings (const byte) sin8s::isUpper#0 +Inlining constant with var siblings (const byte) sin8s::isUpper#1 +Inlining constant with different constant siblings (const byte) sin8s::isUpper#1 +Inlining constant with var siblings (const byte) mulu8_sel::select#0 +Inlining constant with different constant siblings (const byte) mulu8_sel::select#0 +Inlining constant with different constant siblings (const byte) mulu8_sel::select#0 +Inlining constant with var siblings (const byte) mulu8_sel::select#1 +Inlining constant with different constant siblings (const byte) mulu8_sel::select#1 +Inlining constant with different constant siblings (const byte) mulu8_sel::select#1 +Inlining constant with different constant siblings (const byte) mulu8_sel::select#1 +Inlining constant with var siblings (const byte) mulu8_sel::v2#2 +Inlining constant with var siblings (const byte) mulu8_sel::v2#2 +Inlining constant with var siblings (const byte) mulu8_sel::v2#2 +Inlining constant with var siblings (const byte) mulu8_sel::v2#2 +Inlining constant with var siblings (const byte) mulu8_sel::v2#2 +Inlining constant with var siblings (const byte) mulu8_sel::select#2 +Inlining constant with different constant siblings (const byte) mulu8_sel::select#2 +Inlining constant with different constant siblings (const byte) mulu8_sel::select#2 +Inlining constant with different constant siblings (const byte) mulu8_sel::select#2 +Inlining constant with var siblings (const byte) mulu8_sel::select#3 +Inlining constant with different constant siblings (const byte) mulu8_sel::select#3 +Inlining constant with different constant siblings (const byte) mulu8_sel::select#3 +Inlining constant with var siblings (const byte) mulu8_sel::select#4 +Inlining constant with different constant siblings (const byte) mulu8_sel::select#4 +Inlining constant with different constant siblings (const byte) mulu8_sel::select#4 +Inlining constant with var siblings (const string) print_str::str#1 +Inlining constant with var siblings (const string) print_str::str#1 +Inlining constant with var siblings (const string) print_str::str#1 +Inlining constant with var siblings (const string) print_str::str#2 +Inlining constant with var siblings (const string) print_str::str#2 +Inlining constant with var siblings (const string) print_str::str#2 +Inlining constant with var siblings (const byte) print_char::ch#0 +Inlining constant with var siblings (const byte) print_char::ch#0 +Inlining constant with var siblings (const byte) print_char::ch#0 +Inlining constant with var siblings (const byte*) print_cls::sc#0 +Inlining constant with var siblings (const byte*) print_cls::sc#0 +Inlining constant with var siblings (const byte) main::i#0 +Inlining constant with var siblings (const byte) main::i#0 +Constant inlined divr16u::rem#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined print_cls::$0 = (const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000 +Constant inlined divr16u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined line_cursor#1 = (const byte*) SCREEN#0 +Constant inlined sin8s::isUpper#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined sin8s::isUpper#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined sin8s_gen::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined divr16u::quotient#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined div16u::divisor#0 = (const word) main::wavelength#0 +Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined mulu8_sel::select#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined div16u::dividend#0 = (const word) PI2_u4f12#0 +Constant inlined mulu8_sel::select#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined divr16u::divisor#0 = (const word) main::wavelength#0 +Constant inlined mulu8_sel::select#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined mulu8_sel::select#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined mulu8_sel::select#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined divr16u::dividend#1 = (const word) PI2_u4f12#0 +Constant inlined print_cls::sc#0 = (const byte*) SCREEN#0 +Constant inlined mulu8_sel::v2#2 = (word/signed word/dword/signed dword) 256/(byte/signed byte/word/signed word/dword/signed dword) 6 +Constant inlined mul8u::res#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined print_char::ch#0 = (byte) '-' +Constant inlined sin8s_gen::sintab#1 = (const signed byte[120]) main::sintab2#0 +Constant inlined sin8s_gen::wavelength#0 = (const word) main::wavelength#0 +Constant inlined print_str::str#2 = (const string) main::str1 +Constant inlined print_str::str#1 = (const string) main::str +Constant inlined print_byte::$4 = (const string) print_byte::hextab#0 +Constant inlined sin8s_gen::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Succesful SSA optimization Pass2ConstantInlining +Block Sequence Planned @begin @29 @end main main::@5 main::@1 main::@3 main::@2 main::@7 main::@8 main::@return print_str print_str::@1 print_str::@return print_str::@2 print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return sin8s_gen sin8s_gen::@3 sin8s_gen::@1 sin8s_gen::@4 sin8s_gen::@return sin8s sin8s::@4 sin8s::@1 sin8s::@5 sin8s::@2 sin8s::@8 sin8s::@9 sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@6 sin8s::@3 sin8s::@return mulu8_sel mulu8_sel::@2 mulu8_sel::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 div16u div16u::@2 div16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@return +Added new block during phi lifting main::@10(between main::@8 and main::@1) +Added new block during phi lifting main::@11(between main::@1 and main::@2) +Added new block during phi lifting print_sbyte::@5(between print_sbyte and print_sbyte::@1) +Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) +Added new block during phi lifting sin8s_gen::@5(between sin8s_gen::@4 and sin8s_gen::@1) +Added new block during phi lifting sin8s::@13(between sin8s and sin8s::@1) +Fixing phi predecessor for sin8s::isUpper#2 to new block ( sin8s -> sin8s::@13 ) during phi lifting. +Added new block during phi lifting sin8s::@14(between sin8s::@1 and sin8s::@2) +Added new block during phi lifting sin8s::@15(between sin8s::@12 and sin8s::@3) +Added new block during phi lifting mul8u::@10(between mul8u::@2 and mul8u::@4) +Added new block during phi lifting divr16u::@8(between divr16u::@3 and divr16u::@1) +Added new block during phi lifting divr16u::@9(between divr16u::@1 and divr16u::@2) +Added new block during phi lifting divr16u::@10(between divr16u::@2 and divr16u::@3) +Block Sequence Planned @begin @29 @end main main::@5 main::@1 main::@3 main::@2 main::@7 main::@8 main::@return main::@10 main::@11 print_str print_str::@1 print_str::@return print_str::@2 print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return print_sbyte::@5 print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return print_cls::@3 sin8s_gen sin8s_gen::@3 sin8s_gen::@1 sin8s_gen::@4 sin8s_gen::@return sin8s_gen::@5 sin8s sin8s::@4 sin8s::@1 sin8s::@5 sin8s::@2 sin8s::@8 sin8s::@9 sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@6 sin8s::@3 sin8s::@return sin8s::@15 sin8s::@14 sin8s::@13 mulu8_sel mulu8_sel::@2 mulu8_sel::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 mul8u::@10 div16u div16u::@2 div16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@return divr16u::@8 divr16u::@10 divr16u::@9 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @29 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Adding NOP phi() at start of main::@5 +Adding NOP phi() at start of print_cls +Adding NOP phi() at start of sin8s_gen +Adding NOP phi() at start of div16u +Adding NOP phi() at start of divr16u +CALL GRAPH +Calls in [] to main:2 +Calls in [main] to sin8s_gen:5 print_cls:7 print_str:12 print_sbyte:16 print_str:18 +Calls in [print_sbyte] to print_char:38 print_byte:43 +Calls in [print_byte] to print_char:51 print_char:56 +Calls in [sin8s_gen] to div16u:70 sin8s:75 +Calls in [sin8s] to mulu8_sel:101 mulu8_sel:108 mulu8_sel:113 mulu8_sel:121 mulu8_sel:128 +Calls in [mulu8_sel] to mul8u:144 +Calls in [div16u] to divr16u:168 + +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Created 33 initial phi equivalence classes +Coalesced [11] char_cursor#51 ← char_cursor#42 +Coalesced [13] char_cursor#50 ← char_cursor#19 +Coalesced [17] char_cursor#52 ← char_cursor#10 +Coalesced [22] main::i#8 ← main::i#1 +Coalesced [23] char_cursor#48 ← char_cursor#19 +Coalesced (already) [24] char_cursor#49 ← char_cursor#42 +Coalesced [26] print_str::str#6 ← print_str::str#5 +Coalesced (already) [27] char_cursor#53 ← char_cursor#44 +Coalesced [34] print_str::str#7 ← print_str::str#0 +Coalesced [35] char_cursor#54 ← char_cursor#1 +Coalesced [37] char_cursor#59 ← char_cursor#41 +Coalesced [40] print_sbyte::b#7 ← print_sbyte::b#0 +Coalesced [41] char_cursor#56 ← char_cursor#10 +Coalesced [45] print_sbyte::b#6 ← print_sbyte::b#1 +Coalesced (already) [46] char_cursor#55 ← char_cursor#41 +Coalesced [49] print_char::ch#4 ← print_char::ch#1 +Coalesced (already) [50] char_cursor#57 ← char_cursor#37 +Coalesced [54] print_char::ch#5 ← print_char::ch#2 +Coalesced (already) [55] char_cursor#58 ← char_cursor#10 +Coalesced [68] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [84] sin8s_gen::x#4 ← sin8s_gen::x#1 +Coalesced [85] sin8s_gen::sintab#6 ← sin8s_gen::sintab#0 +Coalesced [86] sin8s_gen::i#4 ← sin8s_gen::i#1 +Coalesced [89] sin8s::x#9 ← sin8s::x#1 +Coalesced [93] sin8s::x#11 ← sin8s::x#2 +Coalesced [99] mulu8_sel::v1#8 ← mulu8_sel::v1#0 +Coalesced [100] mulu8_sel::v2#8 ← mulu8_sel::v2#0 +Coalesced [106] mulu8_sel::v1#9 ← mulu8_sel::v1#1 +Coalesced [107] mulu8_sel::v2#9 ← mulu8_sel::v2#1 +Coalesced [112] mulu8_sel::v1#10 ← mulu8_sel::v1#2 +Coalesced [119] mulu8_sel::v1#6 ← mulu8_sel::v1#3 +Coalesced [120] mulu8_sel::v2#6 ← mulu8_sel::v2#3 +Coalesced [126] mulu8_sel::v1#7 ← mulu8_sel::v1#4 +Coalesced [127] mulu8_sel::v2#7 ← mulu8_sel::v2#4 +Coalesced [135] sin8s::return#6 ← sin8s::sinx#1 +Coalesced [139] sin8s::x#10 ← sin8s::x#4 +Coalesced [140] sin8s::x#8 ← sin8s::x#0 +Coalesced [151] mul8u::a#7 ← mul8u::a#1 +Coalesced [152] mul8u::mb#6 ← mul8u::mb#0 +Coalesced [159] mul8u::res#9 ← mul8u::res#1 +Coalesced [163] mul8u::a#8 ← mul8u::a#0 +Coalesced [164] mul8u::res#7 ← mul8u::res#6 +Coalesced [165] mul8u::mb#7 ← mul8u::mb#1 +Coalesced (already) [166] mul8u::res#8 ← mul8u::res#2 +Coalesced [179] divr16u::rem#13 ← divr16u::rem#1 +Coalesced [186] divr16u::rem#15 ← divr16u::rem#2 +Coalesced [187] divr16u::return#6 ← divr16u::quotient#2 +Coalesced [192] divr16u::rem#11 ← divr16u::rem#10 +Coalesced [193] divr16u::dividend#8 ← divr16u::dividend#0 +Coalesced [194] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [195] divr16u::i#7 ← divr16u::i#1 +Coalesced [196] divr16u::rem#14 ← divr16u::rem#5 +Coalesced [197] divr16u::return#5 ← divr16u::quotient#1 +Coalesced [198] divr16u::rem#12 ← divr16u::rem#0 +Coalesced down to 22 phi equivalence classes +Culled Empty Block (label) main::@10 +Culled Empty Block (label) main::@11 +Culled Empty Block (label) print_sbyte::@5 +Culled Empty Block (label) print_cls::@3 +Culled Empty Block (label) sin8s_gen::@5 +Culled Empty Block (label) sin8s::@14 +Culled Empty Block (label) sin8s::@13 +Culled Empty Block (label) mul8u::@10 +Culled Empty Block (label) divr16u::@8 +Culled Empty Block (label) divr16u::@10 +Culled Empty Block (label) divr16u::@9 +Block Sequence Planned @begin @29 @end main main::@5 main::@1 main::@3 main::@2 main::@7 main::@8 main::@return print_str print_str::@1 print_str::@return print_str::@2 print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return sin8s_gen sin8s_gen::@3 sin8s_gen::@1 sin8s_gen::@4 sin8s_gen::@return sin8s sin8s::@4 sin8s::@1 sin8s::@5 sin8s::@2 sin8s::@8 sin8s::@9 sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@6 sin8s::@3 sin8s::@return sin8s::@15 mulu8_sel mulu8_sel::@2 mulu8_sel::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 div16u div16u::@2 div16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@return +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @29 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Adding NOP phi() at start of main::@5 +Adding NOP phi() at start of main::@3 +Adding NOP phi() at start of main::@7 +Adding NOP phi() at start of print_sbyte::@2 +Adding NOP phi() at start of print_cls +Adding NOP phi() at start of sin8s_gen +Adding NOP phi() at start of div16u +Adding NOP phi() at start of divr16u +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() [ ] ( ) + to:@29 +@29: scope:[] from @begin + [1] phi() [ ] ( ) + [2] call main param-assignment [ ] ( ) + to:@end +@end: scope:[] from @29 + [3] phi() [ ] ( ) +main: scope:[main] from @29 + [4] phi() [ ] ( main:2 [ ] ) + [5] call sin8s_gen param-assignment [ ] ( main:2 [ ] ) + to:main::@5 +main::@5: scope:[main] from main + [6] phi() [ ] ( main:2 [ ] ) + [7] call print_cls param-assignment [ ] ( main:2 [ ] ) + to:main::@1 +main::@1: scope:[main] from main::@5 main::@8 + [8] (byte*) char_cursor#42 ← phi( main::@5/(const byte*) SCREEN#0 main::@8/(byte*) char_cursor#19 ) [ main::i#2 char_cursor#42 ] ( main:2 [ main::i#2 char_cursor#42 ] ) + [8] (byte) main::i#2 ← phi( main::@5/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@8/(byte) main::i#1 ) [ main::i#2 char_cursor#42 ] ( main:2 [ main::i#2 char_cursor#42 ] ) + [9] (signed byte) main::sb#0 ← *((const signed byte[120]) main::sintab2#0 + (byte) main::i#2) [ main::i#2 char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 char_cursor#42 main::sb#0 ] ) + [10] if((signed byte) main::sb#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::i#2 char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 char_cursor#42 main::sb#0 ] ) + to:main::@3 +main::@3: scope:[main] from main::@1 + [11] phi() [ main::i#2 char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 char_cursor#42 main::sb#0 ] ) + [12] call print_str param-assignment [ main::i#2 char_cursor#19 main::sb#0 ] ( main:2 [ main::i#2 char_cursor#19 main::sb#0 ] ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@3 + [13] (byte*) char_cursor#41 ← phi( main::@1/(byte*) char_cursor#42 main::@3/(byte*) char_cursor#19 ) [ main::i#2 main::sb#0 char_cursor#41 ] ( main:2 [ main::i#2 main::sb#0 char_cursor#41 ] ) + [14] (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0 [ main::i#2 char_cursor#41 print_sbyte::b#1 ] ( main:2 [ main::i#2 char_cursor#41 print_sbyte::b#1 ] ) + [15] call print_sbyte param-assignment [ main::i#2 char_cursor#10 ] ( main:2 [ main::i#2 char_cursor#10 ] ) + to:main::@7 +main::@7: scope:[main] from main::@2 + [16] phi() [ main::i#2 char_cursor#10 ] ( main:2 [ main::i#2 char_cursor#10 ] ) + [17] call print_str param-assignment [ main::i#2 char_cursor#19 ] ( main:2 [ main::i#2 char_cursor#19 ] ) + to:main::@8 +main::@8: scope:[main] from main::@7 + [18] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 char_cursor#19 ] ( main:2 [ main::i#1 char_cursor#19 ] ) + [19] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 120) goto main::@1 [ main::i#1 char_cursor#19 ] ( main:2 [ main::i#1 char_cursor#19 ] ) + to:main::@return +main::@return: scope:[main] from main::@8 + [20] return [ ] ( main:2 [ ] ) + to:@return +print_str: scope:[print_str] from main::@3 main::@7 + [21] (byte*) char_cursor#44 ← phi( main::@3/(byte*) char_cursor#42 main::@7/(byte*) char_cursor#10 ) [ print_str::str#5 char_cursor#44 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 print_str::str#5 char_cursor#44 ] main:2::print_str:17 [ main::i#2 print_str::str#5 char_cursor#44 ] ) + [21] (byte*) print_str::str#5 ← phi( main::@3/(const string) main::str1 main::@7/(const string) main::str ) [ print_str::str#5 char_cursor#44 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 print_str::str#5 char_cursor#44 ] main:2::print_str:17 [ main::i#2 print_str::str#5 char_cursor#44 ] ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + [22] (byte*) char_cursor#19 ← phi( print_str/(byte*) char_cursor#44 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#19 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 print_str::str#3 ] main:2::print_str:17 [ main::i#2 char_cursor#19 print_str::str#3 ] ) + [22] (byte*) print_str::str#3 ← phi( print_str/(byte*) print_str::str#5 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#19 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 print_str::str#3 ] main:2::print_str:17 [ main::i#2 char_cursor#19 print_str::str#3 ] ) + [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ char_cursor#19 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 print_str::str#3 ] main:2::print_str:17 [ main::i#2 char_cursor#19 print_str::str#3 ] ) + to:print_str::@return +print_str::@return: scope:[print_str] from print_str::@1 + [24] return [ char_cursor#19 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 ] main:2::print_str:17 [ main::i#2 char_cursor#19 ] ) + to:@return +print_str::@2: scope:[print_str] from print_str::@1 + [25] *((byte*) char_cursor#19) ← *((byte*) print_str::str#3) [ char_cursor#19 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 print_str::str#3 ] main:2::print_str:17 [ main::i#2 char_cursor#19 print_str::str#3 ] ) + [26] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#19 [ print_str::str#3 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 print_str::str#3 char_cursor#1 ] main:2::print_str:17 [ main::i#2 print_str::str#3 char_cursor#1 ] ) + [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 print_str::str#0 char_cursor#1 ] main:2::print_str:17 [ main::i#2 print_str::str#0 char_cursor#1 ] ) + to:print_str::@1 +print_sbyte: scope:[print_sbyte] from main::@2 + [28] if((signed byte) print_sbyte::b#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 [ char_cursor#41 print_sbyte::b#1 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#41 print_sbyte::b#1 ] ) + to:print_sbyte::@2 +print_sbyte::@2: scope:[print_sbyte] from print_sbyte + [29] phi() [ char_cursor#41 print_sbyte::b#1 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#41 print_sbyte::b#1 ] ) + [30] call print_char param-assignment [ print_sbyte::b#1 char_cursor#10 ] ( main:2::print_sbyte:15 [ main::i#2 print_sbyte::b#1 char_cursor#10 ] ) + to:print_sbyte::@4 +print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@2 + [31] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ char_cursor#10 print_sbyte::b#0 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#10 print_sbyte::b#0 ] ) + to:print_sbyte::@1 +print_sbyte::@1: scope:[print_sbyte] from print_sbyte print_sbyte::@4 + [32] (byte*) char_cursor#37 ← phi( print_sbyte/(byte*) char_cursor#41 print_sbyte::@4/(byte*) char_cursor#10 ) [ print_sbyte::b#3 char_cursor#37 ] ( main:2::print_sbyte:15 [ main::i#2 print_sbyte::b#3 char_cursor#37 ] ) + [32] (signed byte) print_sbyte::b#3 ← phi( print_sbyte/(signed byte) print_sbyte::b#1 print_sbyte::@4/(signed byte) print_sbyte::b#0 ) [ print_sbyte::b#3 char_cursor#37 ] ( main:2::print_sbyte:15 [ main::i#2 print_sbyte::b#3 char_cursor#37 ] ) + [33] call print_byte param-assignment [ char_cursor#10 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#10 ] ) + to:print_sbyte::@return +print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 + [34] return [ char_cursor#10 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#10 ] ) + to:@return +print_byte: scope:[print_byte] from print_sbyte::@1 + [35] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_sbyte::b#3 char_cursor#37 print_byte::$0 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 char_cursor#37 print_byte::$0 ] ) + [36] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 char_cursor#37 print_char::ch#1 ] ) + [37] call print_char param-assignment [ char_cursor#10 print_sbyte::b#3 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 print_sbyte::b#3 ] ) + to:print_byte::@1 +print_byte::@1: scope:[print_byte] from print_byte + [38] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 print_byte::$2 ] ) + [39] (byte) print_char::ch#2 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 print_char::ch#2 ] ) + [40] call print_char param-assignment [ char_cursor#10 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 ] ) + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte::@1 + [41] return [ char_cursor#10 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 ] ) + to:@return +print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@2 + [42] (byte*) char_cursor#27 ← phi( print_byte/(byte*) char_cursor#37 print_byte::@1/(byte*) char_cursor#10 print_sbyte::@2/(byte*) char_cursor#41 ) [ print_char::ch#3 char_cursor#27 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 print_char::ch#3 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 print_char::ch#3 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 print_char::ch#3 char_cursor#27 ] ) + [42] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sbyte::@2/(byte) '-' ) [ print_char::ch#3 char_cursor#27 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 print_char::ch#3 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 print_char::ch#3 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 print_char::ch#3 char_cursor#27 ] ) + [43] *((byte*) char_cursor#27) ← (byte) print_char::ch#3 [ char_cursor#27 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 char_cursor#27 ] ) + [44] (byte*) char_cursor#10 ← ++ (byte*) char_cursor#27 [ char_cursor#10 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 char_cursor#10 ] ) + to:print_char::@return +print_char::@return: scope:[print_char] from print_char + [45] return [ char_cursor#10 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 char_cursor#10 ] ) + to:@return +print_cls: scope:[print_cls] from main::@5 + [46] phi() [ ] ( main:2::print_cls:7 [ ] ) + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + [47] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) SCREEN#0 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) + [48] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) + [49] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) + [50] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + [51] return [ ] ( main:2::print_cls:7 [ ] ) + to:@return +sin8s_gen: scope:[sin8s_gen] from main + [52] phi() [ ] ( main:2::sin8s_gen:5 [ ] ) + [53] call div16u param-assignment [ div16u::return#0 ] ( main:2::sin8s_gen:5 [ div16u::return#0 ] ) + [54] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8s_gen:5 [ div16u::return#2 ] ) + to:sin8s_gen::@3 +sin8s_gen::@3: scope:[sin8s_gen] from sin8s_gen + [55] (word) sin8s_gen::step#0 ← (word) div16u::return#2 [ sin8s_gen::step#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 ] ) + to:sin8s_gen::@1 +sin8s_gen::@1: scope:[sin8s_gen] from sin8s_gen::@3 sin8s_gen::@4 + [56] (word) sin8s_gen::i#2 ← phi( sin8s_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s_gen::@4/(word) sin8s_gen::i#1 ) [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ) + [56] (signed byte*) sin8s_gen::sintab#2 ← phi( sin8s_gen::@3/(const signed byte[120]) main::sintab2#0 sin8s_gen::@4/(signed byte*) sin8s_gen::sintab#0 ) [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ) + [56] (word) sin8s_gen::x#2 ← phi( sin8s_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s_gen::@4/(word) sin8s_gen::x#1 ) [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ) + [57] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#0 ] ) + [58] call sin8s param-assignment [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#1 ] ) + [59] (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#1 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#0 ] ) + to:sin8s_gen::@4 +sin8s_gen::@4: scope:[sin8s_gen] from sin8s_gen::@1 + [60] (signed byte~) sin8s_gen::$1 ← (signed byte) sin8s::return#0 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s_gen::$1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s_gen::$1 ] ) + [61] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ) + [62] (signed byte*) sin8s_gen::sintab#0 ← ++ (signed byte*) sin8s_gen::sintab#2 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::i#2 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::i#2 sin8s_gen::sintab#0 ] ) + [63] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ) + [64] (word) sin8s_gen::i#1 ← ++ (word) sin8s_gen::i#2 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ) + [65] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ) + to:sin8s_gen::@return +sin8s_gen::@return: scope:[sin8s_gen] from sin8s_gen::@4 + [66] return [ ] ( main:2::sin8s_gen:5 [ ] ) + to:@return +sin8s: scope:[sin8s] from sin8s_gen::@1 + [67] if((word) sin8s::x#0<(const word) PI_u4f12#0) goto sin8s::@1 [ sin8s::x#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#0 ] ) + to:sin8s::@4 +sin8s::@4: scope:[sin8s] from sin8s + [68] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12#0 [ sin8s::x#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#1 ] ) + to:sin8s::@1 +sin8s::@1: scope:[sin8s] from sin8s sin8s::@4 + [69] (byte) sin8s::isUpper#2 ← phi( sin8s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ sin8s::x#4 sin8s::isUpper#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#4 sin8s::isUpper#2 ] ) + [69] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#0 sin8s::@4/(word) sin8s::x#1 ) [ sin8s::x#4 sin8s::isUpper#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#4 sin8s::isUpper#2 ] ) + [70] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#4 sin8s::isUpper#2 ] ) + to:sin8s::@5 +sin8s::@5: scope:[sin8s] from sin8s::@1 + [71] (word) sin8s::x#2 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 [ sin8s::isUpper#2 sin8s::x#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x#2 ] ) + to:sin8s::@2 +sin8s::@2: scope:[sin8s] from sin8s::@1 sin8s::@5 + [72] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@5/(word) sin8s::x#2 ) [ sin8s::isUpper#2 sin8s::x#6 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x#6 ] ) + [73] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin8s::isUpper#2 sin8s::$6 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::$6 ] ) + [74] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 [ sin8s::isUpper#2 sin8s::x1#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 ] ) + [75] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 ] ) + [76] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 mulu8_sel::v2#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 mulu8_sel::v2#0 ] ) + [77] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ) + [78] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#0 ] ) + to:sin8s::@8 +sin8s::@8: scope:[sin8s] from sin8s::@2 + [79] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x2#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x2#0 ] ) + [80] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 ] ) + [81] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 mulu8_sel::v2#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 mulu8_sel::v2#1 ] ) + [82] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ) + [83] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#1 ] ) + to:sin8s::@9 +sin8s::@9: scope:[sin8s] from sin8s::@8 + [84] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 ] ) + [85] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v1#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v1#2 ] ) + [86] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::x3#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::x3#0 ] ) + [87] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#2 ] ) + to:sin8s::@10 +sin8s::@10: scope:[sin8s] from sin8s::@9 + [88] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::x3_6#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::x3_6#0 ] ) + [89] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) + [90] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 ] ) + [91] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 mulu8_sel::v2#3 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 mulu8_sel::v2#3 ] ) + [92] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::usinx#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::usinx#0 ] ) + [93] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#10 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#10 ] ) + to:sin8s::@11 +sin8s::@11: scope:[sin8s] from sin8s::@10 + [94] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 sin8s::x4#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 sin8s::x4#0 ] ) + [95] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#4 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#4 ] ) + [96] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v1#4 mulu8_sel::v2#4 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v1#4 mulu8_sel::v2#4 ] ) + [97] call mulu8_sel param-assignment [ sin8s::isUpper#2 mulu8_sel::return#12 sin8s::usinx#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 mulu8_sel::return#12 sin8s::usinx#0 ] ) + [98] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#11 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#11 ] ) + to:sin8s::@12 +sin8s::@12: scope:[sin8s] from sin8s::@11 + [99] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 [ sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5#0 ] ) + [100] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5_128#0 ] ) + [101] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#2 sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#1 ] ) + [102] if((byte) sin8s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@15 [ sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::usinx#1 ] ) + to:sin8s::@6 +sin8s::@6: scope:[sin8s] from sin8s::@12 + [103] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#1 [ sin8s::sinx#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::sinx#1 ] ) + to:sin8s::@3 +sin8s::@3: scope:[sin8s] from sin8s::@15 sin8s::@6 + [104] (signed byte) sin8s::return#1 ← phi( sin8s::@15/(signed byte~) sin8s::return#5 sin8s::@6/(signed byte) sin8s::sinx#1 ) [ sin8s::return#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#1 ] ) + to:sin8s::@return +sin8s::@return: scope:[sin8s] from sin8s::@3 + [105] return [ sin8s::return#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#1 ] ) + to:@return +sin8s::@15: scope:[sin8s] from sin8s::@12 + [106] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#1 [ sin8s::return#5 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#5 ] ) + to:sin8s::@3 +mulu8_sel: scope:[mulu8_sel] from sin8s::@10 sin8s::@11 sin8s::@2 sin8s::@8 sin8s::@9 + [107] (byte) mulu8_sel::select#5 ← phi( sin8s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] ) + [107] (byte) mulu8_sel::v2#5 ← phi( sin8s::@10/(byte) mulu8_sel::v2#3 sin8s::@11/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 sin8s::@8/(byte) mulu8_sel::v2#1 sin8s::@9/(word/signed word/dword/signed dword) 256/(byte/signed byte/word/signed word/dword/signed dword) 6 ) [ mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] ) + [107] (byte) mulu8_sel::v1#5 ← phi( sin8s::@10/(byte) mulu8_sel::v1#3 sin8s::@11/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 sin8s::@8/(byte) mulu8_sel::v1#1 sin8s::@9/(byte) mulu8_sel::v1#2 ) [ mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v1#5 mulu8_sel::v2#5 mulu8_sel::select#5 ] ) + [108] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 [ mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] ) + [109] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 [ mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] ) + [110] call mul8u param-assignment [ mulu8_sel::select#5 mul8u::res#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] ) + [111] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] ) + to:mulu8_sel::@2 +mulu8_sel::@2: scope:[mulu8_sel] from mulu8_sel + [112] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) + [113] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::$1 ] ) + [114] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#12 ] ) + to:mulu8_sel::@return +mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel::@2 + [115] return [ mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#12 ] ) + to:@return +mul8u: scope:[mul8u] from mulu8_sel + [116] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] ) + to:mul8u::@1 +mul8u::@1: scope:[mul8u] from mul8u mul8u::@4 + [117] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ) + [117] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 ) [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ) + [117] (byte) mul8u::a#2 ← phi( mul8u/(byte) mul8u::a#1 mul8u::@4/(byte) mul8u::a#0 ) [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ) + [118] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ) + to:mul8u::@return +mul8u::@return: scope:[mul8u] from mul8u::@1 + [119] return [ mul8u::res#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] ) + to:@return +mul8u::@2: scope:[mul8u] from mul8u::@1 + [120] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ) + [121] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ) + to:mul8u::@7 +mul8u::@7: scope:[mul8u] from mul8u::@2 + [122] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) + to:mul8u::@4 +mul8u::@4: scope:[mul8u] from mul8u::@2 mul8u::@7 + [123] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 ) [ mul8u::a#2 mul8u::mb#2 mul8u::res#6 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#6 ] ) + [124] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] ) + [125] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] ) + to:mul8u::@1 +div16u: scope:[div16u] from sin8s_gen + [126] phi() [ ] ( main:2::sin8s_gen:5::div16u:53 [ ] ) + [127] call divr16u param-assignment [ divr16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53 [ divr16u::return#0 ] ) + [128] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8s_gen:5::div16u:53 [ divr16u::return#2 ] ) + to:div16u::@2 +div16u::@2: scope:[div16u] from div16u + [129] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53 [ div16u::return#0 ] ) + to:div16u::@return +div16u::@return: scope:[div16u] from div16u::@2 + [130] return [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53 [ div16u::return#0 ] ) + to:@return +divr16u: scope:[divr16u] from div16u + [131] phi() [ ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ ] ) + to:divr16u::@1 +divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 + [132] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ) + [132] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ) + [132] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ) + [132] (word) divr16u::rem#4 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::rem#10 ) [ divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::rem#4 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 ] ) + [133] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) + [134] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) + [135] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) + [136] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) + to:divr16u::@4 +divr16u::@4: scope:[divr16u] from divr16u::@1 + [137] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) + to:divr16u::@2 +divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 + [138] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#5 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#5 ] ) + [139] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 ] ) + [140] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) + [141] if((word) divr16u::rem#5<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) + to:divr16u::@5 +divr16u::@5: scope:[divr16u] from divr16u::@2 + [142] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#2 ] ) + [143] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) + to:divr16u::@3 +divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 + [144] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::return#0 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] ) + [144] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::return#0 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] ) + [145] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ) + [146] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ) + to:divr16u::@return +divr16u::@return: scope:[divr16u] from divr16u::@3 + [147] return [ divr16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 ] ) + to:@return + +DOMINATORS +@begin dominated by @begin +@29 dominated by @29 @begin +@end dominated by @end @29 @begin +main dominated by @29 main @begin +main::@5 dominated by @29 main main::@5 @begin +main::@1 dominated by @29 main main::@1 main::@5 @begin +main::@3 dominated by @29 main main::@1 main::@5 main::@3 @begin +main::@2 dominated by @29 main main::@1 main::@2 main::@5 @begin +main::@7 dominated by main::@7 @29 main main::@1 main::@2 main::@5 @begin +main::@8 dominated by main::@7 main::@8 @29 main main::@1 main::@2 main::@5 @begin +main::@return dominated by main::@7 main::@8 @29 main main::@1 main::@2 main::@5 @begin main::@return +print_str dominated by @29 main main::@1 main::@5 @begin print_str +print_str::@1 dominated by @29 main main::@1 main::@5 @begin print_str::@1 print_str +print_str::@return dominated by @29 main main::@1 main::@5 @begin print_str::@return print_str::@1 print_str +print_str::@2 dominated by @29 main main::@1 main::@5 @begin print_str::@1 print_str::@2 print_str +print_sbyte dominated by @29 main main::@1 main::@2 main::@5 @begin print_sbyte +print_sbyte::@2 dominated by @29 main print_sbyte::@2 main::@1 main::@2 main::@5 @begin print_sbyte +print_sbyte::@4 dominated by @29 main print_sbyte::@4 print_sbyte::@2 main::@1 main::@2 main::@5 @begin print_sbyte +print_sbyte::@1 dominated by @29 main print_sbyte::@1 main::@1 main::@2 main::@5 @begin print_sbyte +print_sbyte::@return dominated by @29 main print_sbyte::@1 main::@1 main::@2 main::@5 @begin print_sbyte::@return print_sbyte +print_byte dominated by @29 main print_sbyte::@1 main::@1 main::@2 main::@5 @begin print_byte print_sbyte +print_byte::@1 dominated by @29 main print_sbyte::@1 main::@1 main::@2 main::@5 @begin print_byte::@1 print_byte print_sbyte +print_byte::@return dominated by @29 main print_sbyte::@1 main::@1 main::@2 main::@5 @begin print_byte::@return print_byte::@1 print_byte print_sbyte +print_char dominated by @29 main print_char main::@1 main::@2 main::@5 @begin print_sbyte +print_char::@return dominated by @29 main print_char main::@1 main::@2 main::@5 print_char::@return @begin print_sbyte +print_cls dominated by @29 main main::@5 @begin print_cls +print_cls::@1 dominated by @29 main main::@5 @begin print_cls::@1 print_cls +print_cls::@return dominated by @29 main main::@5 @begin print_cls::@return print_cls::@1 print_cls +sin8s_gen dominated by @29 main @begin sin8s_gen +sin8s_gen::@3 dominated by @29 main @begin sin8s_gen sin8s_gen::@3 +sin8s_gen::@1 dominated by @29 main @begin sin8s_gen sin8s_gen::@1 sin8s_gen::@3 +sin8s_gen::@4 dominated by @29 main @begin sin8s_gen sin8s_gen::@1 sin8s_gen::@3 sin8s_gen::@4 +sin8s_gen::@return dominated by @29 main @begin sin8s_gen sin8s_gen::@return sin8s_gen::@1 sin8s_gen::@3 sin8s_gen::@4 +sin8s dominated by @29 main sin8s @begin sin8s_gen sin8s_gen::@1 sin8s_gen::@3 +sin8s::@4 dominated by @29 main sin8s @begin sin8s_gen sin8s::@4 sin8s_gen::@1 sin8s_gen::@3 +sin8s::@1 dominated by @29 main sin8s @begin sin8s_gen sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 +sin8s::@5 dominated by @29 main sin8s @begin sin8s_gen sin8s::@1 sin8s::@5 sin8s_gen::@1 sin8s_gen::@3 +sin8s::@2 dominated by @29 main sin8s @begin sin8s_gen sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 +sin8s::@8 dominated by @29 main sin8s @begin sin8s_gen sin8s::@2 sin8s::@1 sin8s::@8 sin8s_gen::@1 sin8s_gen::@3 +sin8s::@9 dominated by @29 main sin8s @begin sin8s_gen sin8s::@2 sin8s::@1 sin8s::@9 sin8s::@8 sin8s_gen::@1 sin8s_gen::@3 +sin8s::@10 dominated by @29 main sin8s @begin sin8s_gen sin8s::@2 sin8s::@1 sin8s::@9 sin8s::@8 sin8s_gen::@1 sin8s_gen::@3 sin8s::@10 +sin8s::@11 dominated by @29 main sin8s @begin sin8s_gen sin8s::@2 sin8s::@1 sin8s::@9 sin8s::@8 sin8s_gen::@1 sin8s_gen::@3 sin8s::@11 sin8s::@10 +sin8s::@12 dominated by @29 main sin8s @begin sin8s_gen sin8s::@2 sin8s::@1 sin8s::@9 sin8s::@8 sin8s_gen::@1 sin8s_gen::@3 sin8s::@12 sin8s::@11 sin8s::@10 +sin8s::@6 dominated by @29 main sin8s @begin sin8s_gen sin8s::@2 sin8s::@1 sin8s::@9 sin8s::@6 sin8s::@8 sin8s_gen::@1 sin8s_gen::@3 sin8s::@12 sin8s::@11 sin8s::@10 +sin8s::@3 dominated by @29 main sin8s @begin sin8s_gen sin8s::@2 sin8s::@1 sin8s::@3 sin8s::@9 sin8s::@8 sin8s_gen::@1 sin8s_gen::@3 sin8s::@12 sin8s::@11 sin8s::@10 +sin8s::@return dominated by @29 main sin8s @begin sin8s_gen sin8s::@2 sin8s::@1 sin8s::@3 sin8s::@9 sin8s::@8 sin8s_gen::@1 sin8s_gen::@3 sin8s::@12 sin8s::@11 sin8s::@10 sin8s::@return +sin8s::@15 dominated by @29 main sin8s @begin sin8s_gen sin8s::@2 sin8s::@1 sin8s::@15 sin8s::@9 sin8s::@8 sin8s_gen::@1 sin8s_gen::@3 sin8s::@12 sin8s::@11 sin8s::@10 +mulu8_sel dominated by @29 main sin8s @begin sin8s_gen sin8s::@2 sin8s::@1 mulu8_sel sin8s_gen::@1 sin8s_gen::@3 +mulu8_sel::@2 dominated by @29 main mulu8_sel::@2 sin8s @begin sin8s_gen sin8s::@2 sin8s::@1 mulu8_sel sin8s_gen::@1 sin8s_gen::@3 +mulu8_sel::@return dominated by @29 main mulu8_sel::@2 sin8s @begin sin8s_gen mulu8_sel::@return sin8s::@2 sin8s::@1 mulu8_sel sin8s_gen::@1 sin8s_gen::@3 +mul8u dominated by @29 main sin8s @begin sin8s_gen mul8u sin8s::@2 sin8s::@1 mulu8_sel sin8s_gen::@1 sin8s_gen::@3 +mul8u::@1 dominated by @29 main sin8s @begin sin8s_gen mul8u sin8s::@2 sin8s::@1 mulu8_sel sin8s_gen::@1 sin8s_gen::@3 mul8u::@1 +mul8u::@return dominated by @29 main sin8s @begin sin8s_gen mul8u sin8s::@2 sin8s::@1 mulu8_sel sin8s_gen::@1 sin8s_gen::@3 mul8u::@return mul8u::@1 +mul8u::@2 dominated by @29 main sin8s @begin sin8s_gen mul8u sin8s::@2 sin8s::@1 mulu8_sel sin8s_gen::@1 sin8s_gen::@3 mul8u::@2 mul8u::@1 +mul8u::@7 dominated by @29 main sin8s @begin sin8s_gen mul8u sin8s::@2 sin8s::@1 mulu8_sel sin8s_gen::@1 sin8s_gen::@3 mul8u::@7 mul8u::@2 mul8u::@1 +mul8u::@4 dominated by @29 main sin8s @begin sin8s_gen mul8u sin8s::@2 sin8s::@1 mulu8_sel sin8s_gen::@1 sin8s_gen::@3 mul8u::@2 mul8u::@1 mul8u::@4 +div16u dominated by @29 main div16u @begin sin8s_gen +div16u::@2 dominated by @29 main div16u @begin sin8s_gen div16u::@2 +div16u::@return dominated by @29 main div16u::@return div16u @begin sin8s_gen div16u::@2 +divr16u dominated by divr16u @29 main div16u @begin sin8s_gen +divr16u::@1 dominated by divr16u @29 divr16u::@1 main div16u @begin sin8s_gen +divr16u::@4 dominated by divr16u @29 divr16u::@1 main divr16u::@4 div16u @begin sin8s_gen +divr16u::@2 dominated by divr16u @29 divr16u::@2 divr16u::@1 main div16u @begin sin8s_gen +divr16u::@5 dominated by divr16u @29 divr16u::@2 divr16u::@1 main divr16u::@5 div16u @begin sin8s_gen +divr16u::@3 dominated by divr16u @29 divr16u::@2 divr16u::@1 main divr16u::@3 div16u @begin sin8s_gen +divr16u::@return dominated by divr16u @29 divr16u::@2 divr16u::@1 main divr16u::@3 div16u @begin sin8s_gen divr16u::@return + +NATURAL LOOPS +Found back edge: Loop head: main::@1 tails: main::@8 blocks: null +Found back edge: Loop head: print_str::@1 tails: print_str::@2 blocks: null +Found back edge: Loop head: print_cls::@1 tails: print_cls::@1 blocks: null +Found back edge: Loop head: sin8s_gen::@1 tails: sin8s_gen::@4 blocks: null +Found back edge: Loop head: mul8u::@1 tails: mul8u::@4 blocks: null +Found back edge: Loop head: divr16u::@1 tails: divr16u::@3 blocks: null +Populated: Loop head: main::@1 tails: main::@8 blocks: main::@8 main::@7 main::@2 main::@1 main::@3 +Populated: Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 +Populated: Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 +Populated: Loop head: sin8s_gen::@1 tails: sin8s_gen::@4 blocks: sin8s_gen::@4 sin8s_gen::@1 +Populated: Loop head: mul8u::@1 tails: mul8u::@4 blocks: mul8u::@4 mul8u::@2 mul8u::@7 mul8u::@1 +Populated: Loop head: divr16u::@1 tails: divr16u::@3 blocks: divr16u::@3 divr16u::@2 divr16u::@5 divr16u::@1 divr16u::@4 +Loop head: main::@1 tails: main::@8 blocks: main::@8 main::@7 main::@2 main::@1 main::@3 +Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 +Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 +Loop head: sin8s_gen::@1 tails: sin8s_gen::@4 blocks: sin8s_gen::@4 sin8s_gen::@1 +Loop head: mul8u::@1 tails: mul8u::@4 blocks: mul8u::@4 mul8u::@2 mul8u::@7 mul8u::@1 +Loop head: divr16u::@1 tails: divr16u::@3 blocks: divr16u::@3 divr16u::@2 divr16u::@5 divr16u::@1 divr16u::@4 + +NATURAL LOOPS WITH DEPTH +Found 0 loops in scope [] +Found 1 loops in scope [main] + Loop head: main::@1 tails: main::@8 blocks: main::@8 main::@7 main::@2 main::@1 main::@3 +Found 1 loops in scope [sin8s_gen] + Loop head: sin8s_gen::@1 tails: sin8s_gen::@4 blocks: sin8s_gen::@4 sin8s_gen::@1 +Found 1 loops in scope [print_cls] + Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 +Found 1 loops in scope [print_str] + Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 +Found 0 loops in scope [print_sbyte] +Found 0 loops in scope [div16u] +Found 0 loops in scope [sin8s] +Found 0 loops in scope [print_char] +Found 0 loops in scope [print_byte] +Found 1 loops in scope [divr16u] + Loop head: divr16u::@1 tails: divr16u::@3 blocks: divr16u::@3 divr16u::@2 divr16u::@5 divr16u::@1 divr16u::@4 +Found 0 loops in scope [mulu8_sel] +Found 1 loops in scope [mul8u] + Loop head: mul8u::@1 tails: mul8u::@4 blocks: mul8u::@4 mul8u::@2 mul8u::@7 mul8u::@1 +Loop head: main::@1 tails: main::@8 blocks: main::@8 main::@7 main::@2 main::@1 main::@3 depth: 1 +Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 depth: 2 +Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 depth: 1 +Loop head: sin8s_gen::@1 tails: sin8s_gen::@4 blocks: sin8s_gen::@4 sin8s_gen::@1 depth: 1 +Loop head: mul8u::@1 tails: mul8u::@4 blocks: mul8u::@4 mul8u::@2 mul8u::@7 mul8u::@1 depth: 2 +Loop head: divr16u::@1 tails: divr16u::@3 blocks: divr16u::@3 divr16u::@2 divr16u::@5 divr16u::@1 divr16u::@4 depth: 1 + + +VARIABLE REGISTER WEIGHTS +(word) PI2_u4f12 +(word) PI_HALF_u4f12 +(word) PI_u4f12 +(byte*) SCREEN +(byte*) char_cursor +(byte*) char_cursor#1 101.0 +(byte*) char_cursor#10 1.3076923076923075 +(byte*) char_cursor#19 40.875 +(byte*) char_cursor#27 5.0 +(byte*) char_cursor#37 2.0 +(byte*) char_cursor#41 6.5 +(byte*) char_cursor#42 8.25 +(byte*) char_cursor#44 24.0 +(word()) div16u((word) div16u::dividend , (word) div16u::divisor) +(word) div16u::dividend +(word) div16u::divisor +(word) div16u::return +(word) div16u::return#0 1.3333333333333333 +(word) div16u::return#2 4.0 +(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) +(byte~) divr16u::$1 22.0 +(byte~) divr16u::$2 22.0 +(word) divr16u::dividend +(word) divr16u::dividend#0 2.75 +(word) divr16u::dividend#2 4.714285714285714 +(word) divr16u::divisor +(byte) divr16u::i +(byte) divr16u::i#1 16.5 +(byte) divr16u::i#2 1.6923076923076923 +(word) divr16u::quotient +(word) divr16u::quotient#1 16.5 +(word) divr16u::quotient#2 11.0 +(word) divr16u::quotient#3 2.75 +(word) divr16u::rem +(word) divr16u::rem#0 8.25 +(word) divr16u::rem#1 22.0 +(word) divr16u::rem#10 11.0 +(word) divr16u::rem#2 22.0 +(word) divr16u::rem#4 22.0 +(word) divr16u::rem#5 11.0 +(word) divr16u::return +(word) divr16u::return#0 7.000000000000001 +(word) divr16u::return#2 4.0 +(byte*) line_cursor +(void()) main() +(byte) main::i +(byte) main::i#1 16.5 +(byte) main::i#2 3.3000000000000003 +(signed byte) main::sb +(signed byte) main::sb#0 6.6000000000000005 +(signed byte[120]) main::sintab2 +(word) main::wavelength +(word()) mul8u((byte) mul8u::a , (byte) mul8u::b) +(byte~) mul8u::$1 202.0 +(byte) mul8u::a +(byte) mul8u::a#0 101.0 +(byte) mul8u::a#1 1.3333333333333333 +(byte) mul8u::a#2 67.66666666666666 +(byte) mul8u::b +(byte) mul8u::b#0 4.0 +(word) mul8u::mb +(word) mul8u::mb#0 4.0 +(word) mul8u::mb#1 202.0 +(word) mul8u::mb#2 43.57142857142858 +(word) mul8u::res +(word) mul8u::res#1 202.0 +(word) mul8u::res#2 50.83333333333333 +(word) mul8u::res#6 101.0 +(word) mul8u::return +(word) mul8u::return#2 4.0 +(byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select) +(word~) mulu8_sel::$0 4.0 +(word~) mulu8_sel::$1 4.0 +(byte) mulu8_sel::return +(byte) mulu8_sel::return#0 4.0 +(byte) mulu8_sel::return#1 4.0 +(byte) mulu8_sel::return#10 4.0 +(byte) mulu8_sel::return#11 4.0 +(byte) mulu8_sel::return#12 1.714285714285714 +(byte) mulu8_sel::return#2 4.0 +(byte) mulu8_sel::select +(byte) mulu8_sel::select#5 0.3333333333333333 +(byte) mulu8_sel::v1 +(byte) mulu8_sel::v1#0 2.0 +(byte) mulu8_sel::v1#1 2.0 +(byte) mulu8_sel::v1#2 4.0 +(byte) mulu8_sel::v1#3 2.0 +(byte) mulu8_sel::v1#4 2.0 +(byte) mulu8_sel::v1#5 12.0 +(byte) mulu8_sel::v2 +(byte) mulu8_sel::v2#0 4.0 +(byte) mulu8_sel::v2#1 4.0 +(byte) mulu8_sel::v2#3 4.0 +(byte) mulu8_sel::v2#4 4.0 +(byte) mulu8_sel::v2#5 5.0 +(void()) print_byte((byte) print_byte::b) +(byte~) print_byte::$0 4.0 +(byte~) print_byte::$2 4.0 +(byte) print_byte::b +(byte[]) print_byte::hextab +(void()) print_char((byte) print_char::ch) +(byte) print_char::ch +(byte) print_char::ch#1 4.0 +(byte) print_char::ch#2 4.0 +(byte) print_char::ch#3 6.0 +(void()) print_cls() +(byte*) print_cls::sc +(byte*) print_cls::sc#1 16.5 +(byte*) print_cls::sc#2 16.5 +(void()) print_sbyte((signed byte) print_sbyte::b) +(signed byte) print_sbyte::b +(signed byte) print_sbyte::b#0 4.0 +(signed byte) print_sbyte::b#1 4.25 +(signed byte) print_sbyte::b#3 1.0 +(void()) print_str((byte*) print_str::str) +(byte*) print_str::str +(byte*) print_str::str#0 202.0 +(byte*) print_str::str#3 101.5 +(byte*) print_str::str#5 2.0 +(word) rem16u +(signed byte()) sin8s((word) sin8s::x) +(word~) sin8s::$6 4.0 +(byte) sin8s::isUpper +(byte) sin8s::isUpper#2 0.06060606060606061 +(signed byte) sin8s::return +(signed byte) sin8s::return#0 22.0 +(signed byte) sin8s::return#1 5.0 +(signed byte~) sin8s::return#5 4.0 +(signed byte) sin8s::sinx +(signed byte) sin8s::sinx#1 4.0 +(byte) sin8s::usinx +(byte) sin8s::usinx#0 0.3333333333333333 +(byte) sin8s::usinx#1 1.0 +(word) sin8s::x +(word) sin8s::x#0 8.5 +(word) sin8s::x#1 4.0 +(word) sin8s::x#2 4.0 +(word) sin8s::x#4 5.0 +(word) sin8s::x#6 6.0 +(byte) sin8s::x1 +(byte) sin8s::x1#0 0.6363636363636365 +(byte) sin8s::x2 +(byte) sin8s::x2#0 4.0 +(byte) sin8s::x3 +(byte) sin8s::x3#0 1.0 +(byte) sin8s::x3_6 +(byte) sin8s::x3_6#0 4.0 +(byte) sin8s::x4 +(byte) sin8s::x4#0 4.0 +(byte) sin8s::x5 +(byte) sin8s::x5#0 4.0 +(byte) sin8s::x5_128 +(byte) sin8s::x5_128#0 4.0 +(void()) sin8s_gen((signed byte*) sin8s_gen::sintab , (word) sin8s_gen::wavelength) +(signed byte~) sin8s_gen::$1 22.0 +(word) sin8s_gen::i +(word) sin8s_gen::i#1 16.5 +(word) sin8s_gen::i#2 2.75 +(signed byte*) sin8s_gen::sintab +(signed byte*) sin8s_gen::sintab#0 5.5 +(signed byte*) sin8s_gen::sintab#2 5.5 +(word) sin8s_gen::step +(word) sin8s_gen::step#0 1.1818181818181819 +(word) sin8s_gen::wavelength +(word) sin8s_gen::x +(word) sin8s_gen::x#1 7.333333333333333 +(word) sin8s_gen::x#2 4.714285714285714 + +Initial phi equivalence classes +[ main::i#2 main::i#1 ] +[ print_str::str#3 print_str::str#5 print_str::str#0 ] +[ print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#0 ] +[ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] +[ char_cursor#27 char_cursor#37 char_cursor#44 char_cursor#41 char_cursor#42 char_cursor#19 char_cursor#10 char_cursor#1 ] +[ print_cls::sc#2 print_cls::sc#1 ] +[ sin8s_gen::x#2 sin8s_gen::x#1 ] +[ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] +[ sin8s_gen::i#2 sin8s_gen::i#1 ] +[ sin8s::isUpper#2 ] +[ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] +[ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] +[ mulu8_sel::v1#5 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 mulu8_sel::v1#1 mulu8_sel::v1#2 ] +[ mulu8_sel::v2#5 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 mulu8_sel::v2#1 ] +[ mulu8_sel::select#5 ] +[ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] +[ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] +[ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +[ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +[ divr16u::dividend#2 divr16u::dividend#0 ] +[ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] +[ divr16u::i#2 divr16u::i#1 ] +Added variable main::sb#0 to zero page equivalence class [ main::sb#0 ] +Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ] +Added variable print_byte::$2 to zero page equivalence class [ print_byte::$2 ] +Added variable div16u::return#2 to zero page equivalence class [ div16u::return#2 ] +Added variable sin8s_gen::step#0 to zero page equivalence class [ sin8s_gen::step#0 ] +Added variable sin8s::return#0 to zero page equivalence class [ sin8s::return#0 ] +Added variable sin8s_gen::$1 to zero page equivalence class [ sin8s_gen::$1 ] +Added variable sin8s::$6 to zero page equivalence class [ sin8s::$6 ] +Added variable sin8s::x1#0 to zero page equivalence class [ sin8s::x1#0 ] +Added variable mulu8_sel::return#0 to zero page equivalence class [ mulu8_sel::return#0 ] +Added variable sin8s::x2#0 to zero page equivalence class [ sin8s::x2#0 ] +Added variable mulu8_sel::return#1 to zero page equivalence class [ mulu8_sel::return#1 ] +Added variable sin8s::x3#0 to zero page equivalence class [ sin8s::x3#0 ] +Added variable mulu8_sel::return#2 to zero page equivalence class [ mulu8_sel::return#2 ] +Added variable sin8s::x3_6#0 to zero page equivalence class [ sin8s::x3_6#0 ] +Added variable sin8s::usinx#0 to zero page equivalence class [ sin8s::usinx#0 ] +Added variable mulu8_sel::return#10 to zero page equivalence class [ mulu8_sel::return#10 ] +Added variable sin8s::x4#0 to zero page equivalence class [ sin8s::x4#0 ] +Added variable mulu8_sel::return#11 to zero page equivalence class [ mulu8_sel::return#11 ] +Added variable sin8s::x5#0 to zero page equivalence class [ sin8s::x5#0 ] +Added variable sin8s::x5_128#0 to zero page equivalence class [ sin8s::x5_128#0 ] +Added variable sin8s::usinx#1 to zero page equivalence class [ sin8s::usinx#1 ] +Added variable mul8u::b#0 to zero page equivalence class [ mul8u::b#0 ] +Added variable mul8u::return#2 to zero page equivalence class [ mul8u::return#2 ] +Added variable mulu8_sel::$0 to zero page equivalence class [ mulu8_sel::$0 ] +Added variable mulu8_sel::$1 to zero page equivalence class [ mulu8_sel::$1 ] +Added variable mulu8_sel::return#12 to zero page equivalence class [ mulu8_sel::return#12 ] +Added variable mul8u::$1 to zero page equivalence class [ mul8u::$1 ] +Added variable divr16u::return#2 to zero page equivalence class [ divr16u::return#2 ] +Added variable div16u::return#0 to zero page equivalence class [ div16u::return#0 ] +Added variable divr16u::$1 to zero page equivalence class [ divr16u::$1 ] +Added variable divr16u::$2 to zero page equivalence class [ divr16u::$2 ] +Complete equivalence classes +[ main::i#2 main::i#1 ] +[ print_str::str#3 print_str::str#5 print_str::str#0 ] +[ print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#0 ] +[ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] +[ char_cursor#27 char_cursor#37 char_cursor#44 char_cursor#41 char_cursor#42 char_cursor#19 char_cursor#10 char_cursor#1 ] +[ print_cls::sc#2 print_cls::sc#1 ] +[ sin8s_gen::x#2 sin8s_gen::x#1 ] +[ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] +[ sin8s_gen::i#2 sin8s_gen::i#1 ] +[ sin8s::isUpper#2 ] +[ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] +[ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] +[ mulu8_sel::v1#5 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 mulu8_sel::v1#1 mulu8_sel::v1#2 ] +[ mulu8_sel::v2#5 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 mulu8_sel::v2#1 ] +[ mulu8_sel::select#5 ] +[ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] +[ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] +[ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +[ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +[ divr16u::dividend#2 divr16u::dividend#0 ] +[ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] +[ divr16u::i#2 divr16u::i#1 ] +[ main::sb#0 ] +[ print_byte::$0 ] +[ print_byte::$2 ] +[ div16u::return#2 ] +[ sin8s_gen::step#0 ] +[ sin8s::return#0 ] +[ sin8s_gen::$1 ] +[ sin8s::$6 ] +[ sin8s::x1#0 ] +[ mulu8_sel::return#0 ] +[ sin8s::x2#0 ] +[ mulu8_sel::return#1 ] +[ sin8s::x3#0 ] +[ mulu8_sel::return#2 ] +[ sin8s::x3_6#0 ] +[ sin8s::usinx#0 ] +[ mulu8_sel::return#10 ] +[ sin8s::x4#0 ] +[ mulu8_sel::return#11 ] +[ sin8s::x5#0 ] +[ sin8s::x5_128#0 ] +[ sin8s::usinx#1 ] +[ mul8u::b#0 ] +[ mul8u::return#2 ] +[ mulu8_sel::$0 ] +[ mulu8_sel::$1 ] +[ mulu8_sel::return#12 ] +[ mul8u::$1 ] +[ divr16u::return#2 ] +[ div16u::return#0 ] +[ divr16u::$1 ] +[ divr16u::$2 ] +Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Allocated zp ZP_WORD:3 [ print_str::str#3 print_str::str#5 print_str::str#0 ] +Allocated zp ZP_BYTE:5 [ print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#0 ] +Allocated zp ZP_BYTE:6 [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] +Allocated zp ZP_WORD:7 [ char_cursor#27 char_cursor#37 char_cursor#44 char_cursor#41 char_cursor#42 char_cursor#19 char_cursor#10 char_cursor#1 ] +Allocated zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] +Allocated zp ZP_WORD:11 [ sin8s_gen::x#2 sin8s_gen::x#1 ] +Allocated zp ZP_WORD:13 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] +Allocated zp ZP_WORD:15 [ sin8s_gen::i#2 sin8s_gen::i#1 ] +Allocated zp ZP_BYTE:17 [ sin8s::isUpper#2 ] +Allocated zp ZP_WORD:18 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] +Allocated zp ZP_BYTE:20 [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] +Allocated zp ZP_BYTE:21 [ mulu8_sel::v1#5 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 mulu8_sel::v1#1 mulu8_sel::v1#2 ] +Allocated zp ZP_BYTE:22 [ mulu8_sel::v2#5 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 mulu8_sel::v2#1 ] +Allocated zp ZP_BYTE:23 [ mulu8_sel::select#5 ] +Allocated zp ZP_BYTE:24 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] +Allocated zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] +Allocated zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +Allocated zp ZP_WORD:29 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +Allocated zp ZP_WORD:31 [ divr16u::dividend#2 divr16u::dividend#0 ] +Allocated zp ZP_WORD:33 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] +Allocated zp ZP_BYTE:35 [ divr16u::i#2 divr16u::i#1 ] +Allocated zp ZP_BYTE:36 [ main::sb#0 ] +Allocated zp ZP_BYTE:37 [ print_byte::$0 ] +Allocated zp ZP_BYTE:38 [ print_byte::$2 ] +Allocated zp ZP_WORD:39 [ div16u::return#2 ] +Allocated zp ZP_WORD:41 [ sin8s_gen::step#0 ] +Allocated zp ZP_BYTE:43 [ sin8s::return#0 ] +Allocated zp ZP_BYTE:44 [ sin8s_gen::$1 ] +Allocated zp ZP_WORD:45 [ sin8s::$6 ] +Allocated zp ZP_BYTE:47 [ sin8s::x1#0 ] +Allocated zp ZP_BYTE:48 [ mulu8_sel::return#0 ] +Allocated zp ZP_BYTE:49 [ sin8s::x2#0 ] +Allocated zp ZP_BYTE:50 [ mulu8_sel::return#1 ] +Allocated zp ZP_BYTE:51 [ sin8s::x3#0 ] +Allocated zp ZP_BYTE:52 [ mulu8_sel::return#2 ] +Allocated zp ZP_BYTE:53 [ sin8s::x3_6#0 ] +Allocated zp ZP_BYTE:54 [ sin8s::usinx#0 ] +Allocated zp ZP_BYTE:55 [ mulu8_sel::return#10 ] +Allocated zp ZP_BYTE:56 [ sin8s::x4#0 ] +Allocated zp ZP_BYTE:57 [ mulu8_sel::return#11 ] +Allocated zp ZP_BYTE:58 [ sin8s::x5#0 ] +Allocated zp ZP_BYTE:59 [ sin8s::x5_128#0 ] +Allocated zp ZP_BYTE:60 [ sin8s::usinx#1 ] +Allocated zp ZP_BYTE:61 [ mul8u::b#0 ] +Allocated zp ZP_WORD:62 [ mul8u::return#2 ] +Allocated zp ZP_WORD:64 [ mulu8_sel::$0 ] +Allocated zp ZP_WORD:66 [ mulu8_sel::$1 ] +Allocated zp ZP_BYTE:68 [ mulu8_sel::return#12 ] +Allocated zp ZP_BYTE:69 [ mul8u::$1 ] +Allocated zp ZP_WORD:70 [ divr16u::return#2 ] +Allocated zp ZP_WORD:72 [ div16u::return#0 ] +Allocated zp ZP_BYTE:74 [ divr16u::$1 ] +Allocated zp ZP_BYTE:75 [ divr16u::$2 ] + +INITIAL ASM +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .const PI2_u4f12 = $6488 + .const PI_u4f12 = $3244 + .const PI_HALF_u4f12 = $1922 + .label SCREEN = $400 + .label char_cursor = 7 +//SEG2 @begin +bbegin: +//SEG3 [1] phi from @begin to @29 [phi:@begin->@29] +b29_from_bbegin: + jmp b29 +//SEG4 @29 +b29: +//SEG5 [2] call main param-assignment [ ] ( ) +//SEG6 [4] phi from @29 to main [phi:@29->main] +main_from_b29: + jsr main +//SEG7 [3] phi from @29 to @end [phi:@29->@end] +bend_from_b29: + jmp bend +//SEG8 @end +bend: +//SEG9 main +main: { + .label wavelength = $78 + .label sb = $24 + .label i = 2 + //SEG10 [5] call sin8s_gen param-assignment [ ] ( main:2 [ ] ) + //SEG11 [52] phi from main to sin8s_gen [phi:main->sin8s_gen] + sin8s_gen_from_main: + jsr sin8s_gen + //SEG12 [6] phi from main to main::@5 [phi:main->main::@5] + b5_from_main: + jmp b5 + //SEG13 main::@5 + b5: + //SEG14 [7] call print_cls param-assignment [ ] ( main:2 [ ] ) + //SEG15 [46] phi from main::@5 to print_cls [phi:main::@5->print_cls] + print_cls_from_b5: + jsr print_cls + //SEG16 [8] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + b1_from_b5: + //SEG17 [8] phi (byte*) char_cursor#42 = (const byte*) SCREEN#0 [phi:main::@5->main::@1#0] -- pbuz1=pbuc1 + lda #SCREEN + sta char_cursor+1 + //SEG18 [8] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@1#1] -- vbuz1=vbuc1 + lda #0 + sta i + jmp b1 + //SEG19 [8] phi from main::@8 to main::@1 [phi:main::@8->main::@1] + b1_from_b8: + //SEG20 [8] phi (byte*) char_cursor#42 = (byte*) char_cursor#19 [phi:main::@8->main::@1#0] -- register_copy + //SEG21 [8] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@8->main::@1#1] -- register_copy + jmp b1 + //SEG22 main::@1 + b1: + //SEG23 [9] (signed byte) main::sb#0 ← *((const signed byte[120]) main::sintab2#0 + (byte) main::i#2) [ main::i#2 char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 char_cursor#42 main::sb#0 ] ) -- vbsz1=pbsc1_derefidx_vbuz2 + ldy i + lda sintab2,y + sta sb + //SEG24 [10] if((signed byte) main::sb#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::i#2 char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 char_cursor#42 main::sb#0 ] ) -- vbsz1_lt_0_then_la1 + lda sb + bmi b2_from_b1 + //SEG25 [11] phi from main::@1 to main::@3 [phi:main::@1->main::@3] + b3_from_b1: + jmp b3 + //SEG26 main::@3 + b3: + //SEG27 [12] call print_str param-assignment [ main::i#2 char_cursor#19 main::sb#0 ] ( main:2 [ main::i#2 char_cursor#19 main::sb#0 ] ) + //SEG28 [21] phi from main::@3 to print_str [phi:main::@3->print_str] + print_str_from_b3: + //SEG29 [21] phi (byte*) char_cursor#44 = (byte*) char_cursor#42 [phi:main::@3->print_str#0] -- register_copy + //SEG30 [21] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + //SEG31 [13] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + b2_from_b1: + b2_from_b3: + //SEG32 [13] phi (byte*) char_cursor#41 = (byte*) char_cursor#42 [phi:main::@1/main::@3->main::@2#0] -- register_copy + jmp b2 + //SEG33 main::@2 + b2: + //SEG34 [14] (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0 [ main::i#2 char_cursor#41 print_sbyte::b#1 ] ( main:2 [ main::i#2 char_cursor#41 print_sbyte::b#1 ] ) -- vbsz1=vbsz2 + lda sb + sta print_sbyte.b + //SEG35 [15] call print_sbyte param-assignment [ main::i#2 char_cursor#10 ] ( main:2 [ main::i#2 char_cursor#10 ] ) + jsr print_sbyte + //SEG36 [16] phi from main::@2 to main::@7 [phi:main::@2->main::@7] + b7_from_b2: + jmp b7 + //SEG37 main::@7 + b7: + //SEG38 [17] call print_str param-assignment [ main::i#2 char_cursor#19 ] ( main:2 [ main::i#2 char_cursor#19 ] ) + //SEG39 [21] phi from main::@7 to print_str [phi:main::@7->print_str] + print_str_from_b7: + //SEG40 [21] phi (byte*) char_cursor#44 = (byte*) char_cursor#10 [phi:main::@7->print_str#0] -- register_copy + //SEG41 [21] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + jmp b8 + //SEG42 main::@8 + b8: + //SEG43 [18] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 char_cursor#19 ] ( main:2 [ main::i#1 char_cursor#19 ] ) -- vbuz1=_inc_vbuz1 + inc i + //SEG44 [19] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 120) goto main::@1 [ main::i#1 char_cursor#19 ] ( main:2 [ main::i#1 char_cursor#19 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda i + cmp #$78 + bne b1_from_b8 + jmp breturn + //SEG45 main::@return + breturn: + //SEG46 [20] return [ ] ( main:2 [ ] ) + rts + str: .text " @" + str1: .text " @" + sintab2: .fill $78, 0 +} +//SEG47 print_str +print_str: { + .label str = 3 + //SEG48 [22] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + b1_from_print_str: + b1_from_b2: + //SEG49 [22] phi (byte*) char_cursor#19 = (byte*) char_cursor#44 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG50 [22] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + jmp b1 + //SEG51 print_str::@1 + b1: + //SEG52 [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ char_cursor#19 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 print_str::str#3 ] main:2::print_str:17 [ main::i#2 char_cursor#19 print_str::str#3 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 + ldy #0 + lda (str),y + cmp #'@' + bne b2 + jmp breturn + //SEG53 print_str::@return + breturn: + //SEG54 [24] return [ char_cursor#19 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 ] main:2::print_str:17 [ main::i#2 char_cursor#19 ] ) + rts + //SEG55 print_str::@2 + b2: + //SEG56 [25] *((byte*) char_cursor#19) ← *((byte*) print_str::str#3) [ char_cursor#19 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 print_str::str#3 ] main:2::print_str:17 [ main::i#2 char_cursor#19 print_str::str#3 ] ) -- _deref_pbuz1=_deref_pbuz2 + ldy #0 + lda (str),y + ldy #0 + sta (char_cursor),y + //SEG57 [26] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#19 [ print_str::str#3 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 print_str::str#3 char_cursor#1 ] main:2::print_str:17 [ main::i#2 print_str::str#3 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + inc char_cursor + bne !+ + inc char_cursor+1 + !: + //SEG58 [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 print_str::str#0 char_cursor#1 ] main:2::print_str:17 [ main::i#2 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + inc str + bne !+ + inc str+1 + !: + jmp b1_from_b2 +} +//SEG59 print_sbyte +print_sbyte: { + .label b = 5 + //SEG60 [28] if((signed byte) print_sbyte::b#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 [ char_cursor#41 print_sbyte::b#1 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#41 print_sbyte::b#1 ] ) -- vbsz1_ge_0_then_la1 + lda b + cmp #0 + bpl b1_from_print_sbyte + //SEG61 [29] phi from print_sbyte to print_sbyte::@2 [phi:print_sbyte->print_sbyte::@2] + b2_from_print_sbyte: + jmp b2 + //SEG62 print_sbyte::@2 + b2: + //SEG63 [30] call print_char param-assignment [ print_sbyte::b#1 char_cursor#10 ] ( main:2::print_sbyte:15 [ main::i#2 print_sbyte::b#1 char_cursor#10 ] ) + //SEG64 [42] phi from print_sbyte::@2 to print_char [phi:print_sbyte::@2->print_char] + print_char_from_b2: + //SEG65 [42] phi (byte*) char_cursor#27 = (byte*) char_cursor#41 [phi:print_sbyte::@2->print_char#0] -- register_copy + //SEG66 [42] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sbyte::@2->print_char#1] -- vbuz1=vbuc1 + lda #'-' + sta print_char.ch + jsr print_char + jmp b4 + //SEG67 print_sbyte::@4 + b4: + //SEG68 [31] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ char_cursor#10 print_sbyte::b#0 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#10 print_sbyte::b#0 ] ) -- vbsz1=_neg_vbsz1 + lda b + eor #$ff + clc + adc #1 + sta b + //SEG69 [32] phi from print_sbyte print_sbyte::@4 to print_sbyte::@1 [phi:print_sbyte/print_sbyte::@4->print_sbyte::@1] + b1_from_print_sbyte: + b1_from_b4: + //SEG70 [32] phi (byte*) char_cursor#37 = (byte*) char_cursor#41 [phi:print_sbyte/print_sbyte::@4->print_sbyte::@1#0] -- register_copy + //SEG71 [32] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:print_sbyte/print_sbyte::@4->print_sbyte::@1#1] -- register_copy + jmp b1 + //SEG72 print_sbyte::@1 + b1: + //SEG73 [33] call print_byte param-assignment [ char_cursor#10 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#10 ] ) + jsr print_byte + jmp breturn + //SEG74 print_sbyte::@return + breturn: + //SEG75 [34] return [ char_cursor#10 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#10 ] ) + rts +} +//SEG76 print_byte +print_byte: { + .label _0 = $25 + .label _2 = $26 + //SEG77 [35] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_sbyte::b#3 char_cursor#37 print_byte::$0 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 char_cursor#37 print_byte::$0 ] ) -- vbuz1=vbuz2_ror_4 + lda print_sbyte.b + lsr + lsr + lsr + lsr + sta _0 + //SEG78 [36] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 char_cursor#37 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy _0 + lda hextab,y + sta print_char.ch + //SEG79 [37] call print_char param-assignment [ char_cursor#10 print_sbyte::b#3 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 print_sbyte::b#3 ] ) + //SEG80 [42] phi from print_byte to print_char [phi:print_byte->print_char] + print_char_from_print_byte: + //SEG81 [42] phi (byte*) char_cursor#27 = (byte*) char_cursor#37 [phi:print_byte->print_char#0] -- register_copy + //SEG82 [42] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + jsr print_char + jmp b1 + //SEG83 print_byte::@1 + b1: + //SEG84 [38] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 print_byte::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 + lda #$f + and print_sbyte.b + sta _2 + //SEG85 [39] (byte) print_char::ch#2 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 print_char::ch#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy _2 + lda hextab,y + sta print_char.ch + //SEG86 [40] call print_char param-assignment [ char_cursor#10 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 ] ) + //SEG87 [42] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + print_char_from_b1: + //SEG88 [42] phi (byte*) char_cursor#27 = (byte*) char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG89 [42] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + jsr print_char + jmp breturn + //SEG90 print_byte::@return + breturn: + //SEG91 [41] return [ char_cursor#10 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 ] ) + rts + hextab: .text "0123456789abcdef" +} +//SEG92 print_char +print_char: { + .label ch = 6 + //SEG93 [43] *((byte*) char_cursor#27) ← (byte) print_char::ch#3 [ char_cursor#27 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 char_cursor#27 ] ) -- _deref_pbuz1=vbuz2 + lda ch + ldy #0 + sta (char_cursor),y + //SEG94 [44] (byte*) char_cursor#10 ← ++ (byte*) char_cursor#27 [ char_cursor#10 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 char_cursor#10 ] ) -- pbuz1=_inc_pbuz1 + inc char_cursor + bne !+ + inc char_cursor+1 + !: + jmp breturn + //SEG95 print_char::@return + breturn: + //SEG96 [45] return [ char_cursor#10 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 char_cursor#10 ] ) + rts +} +//SEG97 print_cls +print_cls: { + .label sc = 9 + //SEG98 [47] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + b1_from_print_cls: + //SEG99 [47] phi (byte*) print_cls::sc#2 = (const byte*) SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + lda #SCREEN + sta sc+1 + jmp b1 + //SEG100 [47] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + b1_from_b1: + //SEG101 [47] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + jmp b1 + //SEG102 print_cls::@1 + b1: + //SEG103 [48] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 + lda #' ' + ldy #0 + sta (sc),y + //SEG104 [49] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 + inc sc + bne !+ + inc sc+1 + !: + //SEG105 [50] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) -- pbuz1_neq_pbuc1_then_la1 + lda sc+1 + cmp #>SCREEN+$3e8 + bne b1_from_b1 + lda sc + cmp #div16u] + div16u_from_sin8s_gen: + jsr div16u + //SEG111 [54] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8s_gen:5 [ div16u::return#2 ] ) -- vwuz1=vwuz2 + lda div16u.return + sta div16u.return_2 + lda div16u.return+1 + sta div16u.return_2+1 + jmp b3 + //SEG112 sin8s_gen::@3 + b3: + //SEG113 [55] (word) sin8s_gen::step#0 ← (word) div16u::return#2 [ sin8s_gen::step#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 ] ) -- vwuz1=vwuz2 + lda div16u.return_2 + sta step + lda div16u.return_2+1 + sta step+1 + //SEG114 [56] phi from sin8s_gen::@3 to sin8s_gen::@1 [phi:sin8s_gen::@3->sin8s_gen::@1] + b1_from_b3: + //SEG115 [56] phi (word) sin8s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- vwuz1=vbuc1 + lda #<0 + sta i + lda #>0 + sta i+1 + //SEG116 [56] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[120]) main::sintab2#0 [phi:sin8s_gen::@3->sin8s_gen::@1#1] -- pbsz1=pbsc1 + lda #main.sintab2 + sta sintab+1 + //SEG117 [56] phi (word) sin8s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#2] -- vwuz1=vbuc1 + lda #<0 + sta x + lda #>0 + sta x+1 + jmp b1 + //SEG118 [56] phi from sin8s_gen::@4 to sin8s_gen::@1 [phi:sin8s_gen::@4->sin8s_gen::@1] + b1_from_b4: + //SEG119 [56] phi (word) sin8s_gen::i#2 = (word) sin8s_gen::i#1 [phi:sin8s_gen::@4->sin8s_gen::@1#0] -- register_copy + //SEG120 [56] phi (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#0 [phi:sin8s_gen::@4->sin8s_gen::@1#1] -- register_copy + //SEG121 [56] phi (word) sin8s_gen::x#2 = (word) sin8s_gen::x#1 [phi:sin8s_gen::@4->sin8s_gen::@1#2] -- register_copy + jmp b1 + //SEG122 sin8s_gen::@1 + b1: + //SEG123 [57] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#0 ] ) -- vwuz1=vwuz2 + lda x + sta sin8s.x + lda x+1 + sta sin8s.x+1 + //SEG124 [58] call sin8s param-assignment [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#1 ] ) + jsr sin8s + //SEG125 [59] (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#1 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#0 ] ) -- vbsz1=vbsz2 + lda sin8s.return_1 + sta sin8s.return + jmp b4 + //SEG126 sin8s_gen::@4 + b4: + //SEG127 [60] (signed byte~) sin8s_gen::$1 ← (signed byte) sin8s::return#0 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s_gen::$1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s_gen::$1 ] ) -- vbsz1=vbsz2 + lda sin8s.return + sta _1 + //SEG128 [61] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ) -- _deref_pbsz1=vbsz2 + lda _1 + ldy #0 + sta (sintab),y + //SEG129 [62] (signed byte*) sin8s_gen::sintab#0 ← ++ (signed byte*) sin8s_gen::sintab#2 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::i#2 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::i#2 sin8s_gen::sintab#0 ] ) -- pbsz1=_inc_pbsz1 + inc sintab + bne !+ + inc sintab+1 + !: + //SEG130 [63] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ) -- vwuz1=vwuz1_plus_vwuz2 + lda x + clc + adc step + sta x + lda x+1 + adc step+1 + sta x+1 + //SEG131 [64] (word) sin8s_gen::i#1 ← ++ (word) sin8s_gen::i#2 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ) -- vwuz1=_inc_vwuz1 + inc i + bne !+ + inc i+1 + !: + //SEG132 [65] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ) -- vwuz1_lt_vwuc1_then_la1 + lda i+1 + cmp #>main.wavelength + bcc b1_from_b4 + bne !+ + lda i + cmp #PI_u4f12 + bcc b1_from_sin8s + bne !+ + lda x + cmp #PI_u4f12 + sta x+1 + //SEG139 [69] phi from sin8s::@4 to sin8s::@1 [phi:sin8s::@4->sin8s::@1] + b1_from_b4: + //SEG140 [69] phi (byte) sin8s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@4->sin8s::@1#0] -- vbuz1=vbuc1 + lda #1 + sta isUpper + //SEG141 [69] phi (word) sin8s::x#4 = (word) sin8s::x#1 [phi:sin8s::@4->sin8s::@1#1] -- register_copy + jmp b1 + //SEG142 [69] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + b1_from_sin8s: + //SEG143 [69] phi (byte) sin8s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + lda #0 + sta isUpper + //SEG144 [69] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s->sin8s::@1#1] -- register_copy + jmp b1 + //SEG145 sin8s::@1 + b1: + //SEG146 [70] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#4 sin8s::isUpper#2 ] ) -- vwuz1_lt_vwuc1_then_la1 + lda x+1 + cmp #>PI_HALF_u4f12 + bcc b2_from_b1 + bne !+ + lda x + cmp #PI_u4f12 + sbc x+1 + sta x+1 + //SEG149 [72] phi from sin8s::@1 sin8s::@5 to sin8s::@2 [phi:sin8s::@1/sin8s::@5->sin8s::@2] + b2_from_b1: + b2_from_b5: + //SEG150 [72] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@5->sin8s::@2#0] -- register_copy + jmp b2 + //SEG151 sin8s::@2 + b2: + //SEG152 [73] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin8s::isUpper#2 sin8s::$6 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::$6 ] ) -- vwuz1=vwuz2_rol_3 + lda x + asl + sta _6 + lda x+1 + rol + sta _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + //SEG153 [74] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 [ sin8s::isUpper#2 sin8s::x1#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 ] ) -- vbuz1=_hi_vwuz2 + lda _6+1 + sta x1 + //SEG154 [75] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 ] ) -- vbuz1=vbuz2 + lda x1 + sta mulu8_sel.v1 + //SEG155 [76] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 mulu8_sel::v2#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 mulu8_sel::v2#0 ] ) -- vbuz1=vbuz2 + lda x1 + sta mulu8_sel.v2 + //SEG156 [77] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ) + //SEG157 [107] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + mulu8_sel_from_b2: + //SEG158 [107] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 + lda #0 + sta mulu8_sel.select + //SEG159 [107] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG160 [107] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy + jsr mulu8_sel + //SEG161 [78] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#0 ] ) -- vbuz1=vbuz2 + lda mulu8_sel.return_12 + sta mulu8_sel.return + jmp b8 + //SEG162 sin8s::@8 + b8: + //SEG163 [79] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x2#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x2#0 ] ) -- vbuz1=vbuz2 + lda mulu8_sel.return + sta x2 + //SEG164 [80] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 ] ) -- vbuz1=vbuz2 + lda x2 + sta mulu8_sel.v1 + //SEG165 [81] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 mulu8_sel::v2#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 mulu8_sel::v2#1 ] ) -- vbuz1=vbuz2 + lda x1 + sta mulu8_sel.v2 + //SEG166 [82] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ) + //SEG167 [107] phi from sin8s::@8 to mulu8_sel [phi:sin8s::@8->mulu8_sel] + mulu8_sel_from_b8: + //SEG168 [107] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@8->mulu8_sel#0] -- vbuz1=vbuc1 + lda #1 + sta mulu8_sel.select + //SEG169 [107] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@8->mulu8_sel#1] -- register_copy + //SEG170 [107] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@8->mulu8_sel#2] -- register_copy + jsr mulu8_sel + //SEG171 [83] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#1 ] ) -- vbuz1=vbuz2 + lda mulu8_sel.return_12 + sta mulu8_sel.return_1 + jmp b9 + //SEG172 sin8s::@9 + b9: + //SEG173 [84] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 ] ) -- vbuz1=vbuz2 + lda mulu8_sel.return_1 + sta x3 + //SEG174 [85] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v1#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v1#2 ] ) -- vbuz1=vbuz2 + lda x3 + sta mulu8_sel.v1 + //SEG175 [86] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::x3#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::x3#0 ] ) + //SEG176 [107] phi from sin8s::@9 to mulu8_sel [phi:sin8s::@9->mulu8_sel] + mulu8_sel_from_b9: + //SEG177 [107] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@9->mulu8_sel#0] -- vbuz1=vbuc1 + lda #1 + sta mulu8_sel.select + //SEG178 [107] phi (byte) mulu8_sel::v2#5 = (word/signed word/dword/signed dword) 256/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin8s::@9->mulu8_sel#1] -- vbuz1=vbuc1 + lda #$100/6 + sta mulu8_sel.v2 + //SEG179 [107] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@9->mulu8_sel#2] -- register_copy + jsr mulu8_sel + //SEG180 [87] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#2 ] ) -- vbuz1=vbuz2 + lda mulu8_sel.return_12 + sta mulu8_sel.return_2 + jmp b10 + //SEG181 sin8s::@10 + b10: + //SEG182 [88] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::x3_6#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::x3_6#0 ] ) -- vbuz1=vbuz2 + lda mulu8_sel.return_2 + sta x3_6 + //SEG183 [89] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) -- vbuz1=vbuz2_minus_vbuz3 + lda x1 + sec + sbc x3_6 + sta usinx + //SEG184 [90] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 ] ) -- vbuz1=vbuz2 + lda x3 + sta mulu8_sel.v1 + //SEG185 [91] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 mulu8_sel::v2#3 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 mulu8_sel::v2#3 ] ) -- vbuz1=vbuz2 + lda x1 + sta mulu8_sel.v2 + //SEG186 [92] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::usinx#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::usinx#0 ] ) + //SEG187 [107] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + mulu8_sel_from_b10: + //SEG188 [107] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 + lda #0 + sta mulu8_sel.select + //SEG189 [107] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@10->mulu8_sel#1] -- register_copy + //SEG190 [107] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@10->mulu8_sel#2] -- register_copy + jsr mulu8_sel + //SEG191 [93] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#10 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#10 ] ) -- vbuz1=vbuz2 + lda mulu8_sel.return_12 + sta mulu8_sel.return_10 + jmp b11 + //SEG192 sin8s::@11 + b11: + //SEG193 [94] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 sin8s::x4#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 sin8s::x4#0 ] ) -- vbuz1=vbuz2 + lda mulu8_sel.return_10 + sta x4 + //SEG194 [95] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#4 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#4 ] ) -- vbuz1=vbuz2 + lda x4 + sta mulu8_sel.v1 + //SEG195 [96] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v1#4 mulu8_sel::v2#4 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v1#4 mulu8_sel::v2#4 ] ) -- vbuz1=vbuz2 + lda x1 + sta mulu8_sel.v2 + //SEG196 [97] call mulu8_sel param-assignment [ sin8s::isUpper#2 mulu8_sel::return#12 sin8s::usinx#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 mulu8_sel::return#12 sin8s::usinx#0 ] ) + //SEG197 [107] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + mulu8_sel_from_b11: + //SEG198 [107] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 + lda #0 + sta mulu8_sel.select + //SEG199 [107] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@11->mulu8_sel#1] -- register_copy + //SEG200 [107] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + jsr mulu8_sel + //SEG201 [98] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#11 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#11 ] ) -- vbuz1=vbuz2 + lda mulu8_sel.return_12 + sta mulu8_sel.return_11 + jmp b12 + //SEG202 sin8s::@12 + b12: + //SEG203 [99] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 [ sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5#0 ] ) -- vbuz1=vbuz2 + lda mulu8_sel.return_11 + sta x5 + //SEG204 [100] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5_128#0 ] ) -- vbuz1=vbuz2_ror_4 + lda x5 + lsr + lsr + lsr + lsr + sta x5_128 + //SEG205 [101] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#2 sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#1 ] ) -- vbuz1=vbuz2_plus_vbuz3 + lda usinx + clc + adc x5_128 + sta usinx_1 + //SEG206 [102] if((byte) sin8s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@15 [ sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::usinx#1 ] ) -- vbuz1_eq_0_then_la1 + lda isUpper + beq b15 + jmp b6 + //SEG207 sin8s::@6 + b6: + //SEG208 [103] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#1 [ sin8s::sinx#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::sinx#1 ] ) -- vbsz1=_neg_vbsz2 + lda usinx_1 + eor #$ff + clc + adc #1 + sta sinx + //SEG209 [104] phi from sin8s::@15 sin8s::@6 to sin8s::@3 [phi:sin8s::@15/sin8s::@6->sin8s::@3] + b3_from_b15: + b3_from_b6: + //SEG210 [104] phi (signed byte) sin8s::return#1 = (signed byte~) sin8s::return#5 [phi:sin8s::@15/sin8s::@6->sin8s::@3#0] -- register_copy + jmp b3 + //SEG211 sin8s::@3 + b3: + jmp breturn + //SEG212 sin8s::@return + breturn: + //SEG213 [105] return [ sin8s::return#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#1 ] ) + rts + //SEG214 sin8s::@15 + b15: + //SEG215 [106] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#1 [ sin8s::return#5 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#5 ] ) -- vbsz1=vbsz2 + lda usinx_1 + sta return_5 + jmp b3_from_b15 +} +//SEG216 mulu8_sel +mulu8_sel: { + .label _0 = $40 + .label _1 = $42 + .label v1 = $15 + .label v2 = $16 + .label return = $30 + .label return_1 = $32 + .label return_2 = $34 + .label return_10 = $37 + .label return_11 = $39 + .label select = $17 + .label return_12 = $44 + //SEG217 [108] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 [ mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] ) -- vbuz1=vbuz2 + lda v1 + sta mul8u.a + //SEG218 [109] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 [ mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] ) -- vbuz1=vbuz2 + lda v2 + sta mul8u.b + //SEG219 [110] call mul8u param-assignment [ mulu8_sel::select#5 mul8u::res#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] ) + jsr mul8u + //SEG220 [111] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] ) -- vwuz1=vwuz2 + lda mul8u.res + sta mul8u.return + lda mul8u.res+1 + sta mul8u.return+1 + jmp b2 + //SEG221 mulu8_sel::@2 + b2: + //SEG222 [112] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) -- vwuz1=vwuz2 + lda mul8u.return + sta _0 + lda mul8u.return+1 + sta _0+1 + //SEG223 [113] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::$1 ] ) -- vwuz1=vwuz2_rol_vbuz3 + lda _0 + sta _1 + lda _0+1 + sta _1+1 + ldy select + beq !e+ + !: + asl _1 + rol _1+1 + dey + bne !- + !e: + //SEG224 [114] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#12 ] ) -- vbuz1=_hi_vwuz2 + lda _1+1 + sta return_12 + jmp breturn + //SEG225 mulu8_sel::@return + breturn: + //SEG226 [115] return [ mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#12 ] ) + rts +} +//SEG227 mul8u +mul8u: { + .label _1 = $45 + .label mb = $1b + .label a = $18 + .label res = $19 + .label b = $3d + .label return = $3e + //SEG228 [116] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] ) -- vwuz1=_word_vbuz2 + lda b + sta mb + lda #0 + sta mb+1 + //SEG229 [117] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + b1_from_mul8u: + //SEG230 [117] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG231 [117] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + lda #<0 + sta res + lda #>0 + sta res+1 + //SEG232 [117] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy + jmp b1 + //SEG233 mul8u::@1 + b1: + //SEG234 [118] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ) -- vbuz1_neq_0_then_la1 + lda a + bne b2 + jmp breturn + //SEG235 mul8u::@return + breturn: + //SEG236 [119] return [ mul8u::res#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] ) + rts + //SEG237 mul8u::@2 + b2: + //SEG238 [120] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ) -- vbuz1=vbuz2_band_vbuc1 + lda #1 + and a + sta _1 + //SEG239 [121] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ) -- vbuz1_eq_0_then_la1 + lda _1 + beq b4_from_b2 + jmp b7 + //SEG240 mul8u::@7 + b7: + //SEG241 [122] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) -- vwuz1=vwuz1_plus_vwuz2 + lda res + clc + adc mb + sta res + lda res+1 + adc mb+1 + sta res+1 + //SEG242 [123] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + b4_from_b2: + b4_from_b7: + //SEG243 [123] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + jmp b4 + //SEG244 mul8u::@4 + b4: + //SEG245 [124] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] ) -- vbuz1=vbuz1_ror_1 + lsr a + //SEG246 [125] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] ) -- vwuz1=vwuz1_rol_1 + asl mb + rol mb+1 + //SEG247 [117] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + b1_from_b4: + //SEG248 [117] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG249 [117] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG250 [117] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + jmp b1 +} +//SEG251 div16u +div16u: { + .label return = $48 + .label return_2 = $27 + //SEG252 [127] call divr16u param-assignment [ divr16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53 [ divr16u::return#0 ] ) + //SEG253 [131] phi from div16u to divr16u [phi:div16u->divr16u] + divr16u_from_div16u: + jsr divr16u + //SEG254 [128] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8s_gen:5::div16u:53 [ divr16u::return#2 ] ) -- vwuz1=vwuz2 + lda divr16u.return + sta divr16u.return_2 + lda divr16u.return+1 + sta divr16u.return_2+1 + jmp b2 + //SEG255 div16u::@2 + b2: + //SEG256 [129] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53 [ div16u::return#0 ] ) -- vwuz1=vwuz2 + lda divr16u.return_2 + sta return + lda divr16u.return_2+1 + sta return+1 + jmp breturn + //SEG257 div16u::@return + breturn: + //SEG258 [130] return [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53 [ div16u::return#0 ] ) + rts +} +//SEG259 divr16u +divr16u: { + .label _1 = $4a + .label _2 = $4b + .label rem = $1d + .label dividend = $1f + .label quotient = $21 + .label i = $23 + .label return = $21 + .label return_2 = $46 + //SEG260 [132] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + b1_from_divr16u: + //SEG261 [132] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + lda #0 + sta i + //SEG262 [132] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + lda #<0 + sta quotient + lda #>0 + sta quotient+1 + //SEG263 [132] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + lda #PI2_u4f12 + sta dividend+1 + //SEG264 [132] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + lda #<0 + sta rem + lda #>0 + sta rem+1 + jmp b1 + //SEG265 [132] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + b1_from_b3: + //SEG266 [132] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG267 [132] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG268 [132] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG269 [132] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + jmp b1 + //SEG270 divr16u::@1 + b1: + //SEG271 [133] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) -- vwuz1=vwuz1_rol_1 + asl rem + rol rem+1 + //SEG272 [134] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) -- vbuz1=_hi_vwuz2 + lda dividend+1 + sta _1 + //SEG273 [135] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 + lda #$80 + and _1 + sta _2 + //SEG274 [136] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) -- vbuz1_eq_0_then_la1 + lda _2 + beq b2_from_b1 + jmp b4 + //SEG275 divr16u::@4 + b4: + //SEG276 [137] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) -- vwuz1=vwuz1_bor_vbuc1 + lda #1 + ora rem + sta rem + //SEG277 [138] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + b2_from_b1: + b2_from_b4: + //SEG278 [138] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + jmp b2 + //SEG279 divr16u::@2 + b2: + //SEG280 [139] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 ] ) -- vwuz1=vwuz1_rol_1 + asl dividend + rol dividend+1 + //SEG281 [140] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) -- vwuz1=vwuz1_rol_1 + asl quotient + rol quotient+1 + //SEG282 [141] if((word) divr16u::rem#5<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) -- vwuz1_lt_vwuc1_then_la1 + lda rem+1 + cmp #>main.wavelength + bcc b3_from_b2 + bne !+ + lda rem + cmp #main.wavelength + sta rem+1 + //SEG286 [144] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + b3_from_b2: + b3_from_b5: + //SEG287 [144] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG288 [144] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + jmp b3 + //SEG289 divr16u::@3 + b3: + //SEG290 [145] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ) -- vbuz1=_inc_vbuz1 + inc i + //SEG291 [146] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda i + cmp #$10 + bne b1_from_b3 + jmp breturn + //SEG292 divr16u::@return + breturn: + //SEG293 [147] return [ divr16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 ] ) + rts +} + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ char_cursor#19 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 print_str::str#3 ] main:2::print_str:17 [ main::i#2 char_cursor#19 print_str::str#3 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ main::sb#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:36 [ main::sb#0 ] +Statement [25] *((byte*) char_cursor#19) ← *((byte*) print_str::str#3) [ char_cursor#19 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 print_str::str#3 ] main:2::print_str:17 [ main::i#2 char_cursor#19 print_str::str#3 ] ) always clobbers reg byte a reg byte y +Statement [31] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ char_cursor#10 print_sbyte::b#0 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#10 print_sbyte::b#0 ] ) always clobbers reg byte a +Statement [38] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a +Statement [43] *((byte*) char_cursor#27) ← (byte) print_char::ch#3 [ char_cursor#27 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 char_cursor#27 ] ) always clobbers reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:5 [ print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#0 ] +Statement [48] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [50] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [54] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8s_gen:5 [ div16u::return#2 ] ) always clobbers reg byte a +Statement [55] (word) sin8s_gen::step#0 ← (word) div16u::return#2 [ sin8s_gen::step#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 ] ) always clobbers reg byte a +Statement [57] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#0 ] ) always clobbers reg byte a +Statement [61] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ) always clobbers reg byte y +Statement [63] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ) always clobbers reg byte a +Statement [65] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ) always clobbers reg byte a +Statement [67] if((word) sin8s::x#0<(const word) PI_u4f12#0) goto sin8s::@1 [ sin8s::x#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#0 ] ) always clobbers reg byte a +Statement [68] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12#0 [ sin8s::x#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#1 ] ) always clobbers reg byte a +Statement [70] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#4 sin8s::isUpper#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:17 [ sin8s::isUpper#2 ] +Statement [71] (word) sin8s::x#2 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 [ sin8s::isUpper#2 sin8s::x#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x#2 ] ) always clobbers reg byte a +Statement [73] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin8s::isUpper#2 sin8s::$6 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::$6 ] ) always clobbers reg byte a +Statement [74] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 [ sin8s::isUpper#2 sin8s::x1#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 ] ) always clobbers reg byte a +Statement [89] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ sin8s::x1#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ sin8s::x3#0 ] +Statement [103] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#1 [ sin8s::sinx#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::sinx#1 ] ) always clobbers reg byte a +Statement [111] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ mulu8_sel::select#5 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:54 [ sin8s::usinx#0 ] +Statement [112] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) always clobbers reg byte a +Potential register analysis [113] mulu8_sel::$1 ← mulu8_sel::$0 << mulu8_sel::select#5 missing fragment vwuz1=vwuz2_rol_vbuxx allocation: reg byte x [ mulu8_sel::select#5 ] zp ZP_WORD:66 [ mulu8_sel::$1 ] zp ZP_WORD:64 [ mulu8_sel::$0 ] +Potential register analysis [113] mulu8_sel::$1 ← mulu8_sel::$0 << mulu8_sel::select#5 missing fragment vwuz1=vwuz2_rol_vbuyy allocation: reg byte y [ mulu8_sel::select#5 ] zp ZP_WORD:66 [ mulu8_sel::$1 ] zp ZP_WORD:64 [ mulu8_sel::$0 ] +MISSING FRAGMENTS + vwuz1=vwuz2_rol_vbuxx + vwuz1=vwuz2_rol_vbuyy +Statement [113] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::$1 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:17 [ sin8s::isUpper#2 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:47 [ sin8s::x1#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:51 [ sin8s::x3#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:54 [ sin8s::usinx#0 ] +Statement [114] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#12 ] ) always clobbers reg byte a +Statement [116] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] +Statement [120] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a +Statement [122] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [128] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8s_gen:5::div16u:53 [ divr16u::return#2 ] ) always clobbers reg byte a +Statement [129] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53 [ div16u::return#0 ] ) always clobbers reg byte a +Statement [134] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ divr16u::i#2 divr16u::i#1 ] +Statement [135] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a +Statement [137] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [141] if((word) divr16u::rem#5<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [143] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [9] (signed byte) main::sb#0 ← *((const signed byte[120]) main::sintab2#0 + (byte) main::i#2) [ main::i#2 char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 char_cursor#42 main::sb#0 ] ) always clobbers reg byte a +Statement [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ char_cursor#19 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 print_str::str#3 ] main:2::print_str:17 [ main::i#2 char_cursor#19 print_str::str#3 ] ) always clobbers reg byte a reg byte y +Statement [25] *((byte*) char_cursor#19) ← *((byte*) print_str::str#3) [ char_cursor#19 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 print_str::str#3 ] main:2::print_str:17 [ main::i#2 char_cursor#19 print_str::str#3 ] ) always clobbers reg byte a reg byte y +Statement [31] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ char_cursor#10 print_sbyte::b#0 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#10 print_sbyte::b#0 ] ) always clobbers reg byte a +Statement [38] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a +Statement [43] *((byte*) char_cursor#27) ← (byte) print_char::ch#3 [ char_cursor#27 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 char_cursor#27 ] ) always clobbers reg byte y +Statement [48] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [50] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [54] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8s_gen:5 [ div16u::return#2 ] ) always clobbers reg byte a +Statement [55] (word) sin8s_gen::step#0 ← (word) div16u::return#2 [ sin8s_gen::step#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 ] ) always clobbers reg byte a +Statement [57] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#0 ] ) always clobbers reg byte a +Statement [61] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ) always clobbers reg byte y +Statement [63] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ) always clobbers reg byte a +Statement [65] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ) always clobbers reg byte a +Statement [67] if((word) sin8s::x#0<(const word) PI_u4f12#0) goto sin8s::@1 [ sin8s::x#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#0 ] ) always clobbers reg byte a +Statement [68] (word) sin8s::x#1 ← (word) sin8s::x#0 - (const word) PI_u4f12#0 [ sin8s::x#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#1 ] ) always clobbers reg byte a +Statement [70] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#4 sin8s::isUpper#2 ] ) always clobbers reg byte a +Statement [71] (word) sin8s::x#2 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 [ sin8s::isUpper#2 sin8s::x#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x#2 ] ) always clobbers reg byte a +Statement [73] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin8s::isUpper#2 sin8s::$6 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::$6 ] ) always clobbers reg byte a +Statement [74] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 [ sin8s::isUpper#2 sin8s::x1#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 ] ) always clobbers reg byte a +Statement [89] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) always clobbers reg byte a +Statement [101] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#2 sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#1 ] ) always clobbers reg byte a +Statement [103] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#1 [ sin8s::sinx#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::sinx#1 ] ) always clobbers reg byte a +Statement [111] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] ) always clobbers reg byte a +Statement [112] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) always clobbers reg byte a +Potential register analysis [113] mulu8_sel::$1 ← mulu8_sel::$0 << mulu8_sel::select#5 missing fragment vwuz1=vwuz2_rol_vbuxx allocation: reg byte x [ mulu8_sel::select#5 ] zp ZP_WORD:66 [ mulu8_sel::$1 ] zp ZP_WORD:64 [ mulu8_sel::$0 ] +Potential register analysis [113] mulu8_sel::$1 ← mulu8_sel::$0 << mulu8_sel::select#5 missing fragment vwuz1=vwuz2_rol_vbuyy allocation: reg byte y [ mulu8_sel::select#5 ] zp ZP_WORD:66 [ mulu8_sel::$1 ] zp ZP_WORD:64 [ mulu8_sel::$0 ] +MISSING FRAGMENTS + vwuz1=vwuz2_rol_vbuxx + vwuz1=vwuz2_rol_vbuyy +Statement [113] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::$1 ] ) always clobbers reg byte a reg byte y +Statement [114] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#12 ] ) always clobbers reg byte a +Statement [116] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] ) always clobbers reg byte a +Statement [120] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a +Statement [122] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [128] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8s_gen:5::div16u:53 [ divr16u::return#2 ] ) always clobbers reg byte a +Statement [129] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53 [ div16u::return#0 ] ) always clobbers reg byte a +Statement [134] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [135] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a +Statement [137] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [141] if((word) divr16u::rem#5<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [143] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , +Potential registers zp ZP_WORD:3 [ print_str::str#3 print_str::str#5 print_str::str#0 ] : zp ZP_WORD:3 , +Potential registers zp ZP_BYTE:5 [ print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#0 ] : zp ZP_BYTE:5 , reg byte a , reg byte x , +Potential registers zp ZP_BYTE:6 [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:7 [ char_cursor#27 char_cursor#37 char_cursor#44 char_cursor#41 char_cursor#42 char_cursor#19 char_cursor#10 char_cursor#1 ] : zp ZP_WORD:7 , +Potential registers zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:9 , +Potential registers zp ZP_WORD:11 [ sin8s_gen::x#2 sin8s_gen::x#1 ] : zp ZP_WORD:11 , +Potential registers zp ZP_WORD:13 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] : zp ZP_WORD:13 , +Potential registers zp ZP_WORD:15 [ sin8s_gen::i#2 sin8s_gen::i#1 ] : zp ZP_WORD:15 , +Potential registers zp ZP_BYTE:17 [ sin8s::isUpper#2 ] : zp ZP_BYTE:17 , reg byte x , +Potential registers zp ZP_WORD:18 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] : zp ZP_WORD:18 , +Potential registers zp ZP_BYTE:20 [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:21 [ mulu8_sel::v1#5 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 mulu8_sel::v1#1 mulu8_sel::v1#2 ] : zp ZP_BYTE:21 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:22 [ mulu8_sel::v2#5 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 mulu8_sel::v2#1 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:23 [ mulu8_sel::select#5 ] : zp ZP_BYTE:23 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:24 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] : zp ZP_BYTE:24 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] : zp ZP_WORD:25 , +Potential registers zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] : zp ZP_WORD:27 , +Potential registers zp ZP_WORD:29 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] : zp ZP_WORD:29 , +Potential registers zp ZP_WORD:31 [ divr16u::dividend#2 divr16u::dividend#0 ] : zp ZP_WORD:31 , +Potential registers zp ZP_WORD:33 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] : zp ZP_WORD:33 , +Potential registers zp ZP_BYTE:35 [ divr16u::i#2 divr16u::i#1 ] : zp ZP_BYTE:35 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:36 [ main::sb#0 ] : zp ZP_BYTE:36 , reg byte x , +Potential registers zp ZP_BYTE:37 [ print_byte::$0 ] : zp ZP_BYTE:37 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:38 [ print_byte::$2 ] : zp ZP_BYTE:38 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:39 [ div16u::return#2 ] : zp ZP_WORD:39 , +Potential registers zp ZP_WORD:41 [ sin8s_gen::step#0 ] : zp ZP_WORD:41 , +Potential registers zp ZP_BYTE:43 [ sin8s::return#0 ] : zp ZP_BYTE:43 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:44 [ sin8s_gen::$1 ] : zp ZP_BYTE:44 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:45 [ sin8s::$6 ] : zp ZP_WORD:45 , +Potential registers zp ZP_BYTE:47 [ sin8s::x1#0 ] : zp ZP_BYTE:47 , reg byte x , +Potential registers zp ZP_BYTE:48 [ mulu8_sel::return#0 ] : zp ZP_BYTE:48 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:49 [ sin8s::x2#0 ] : zp ZP_BYTE:49 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:50 [ mulu8_sel::return#1 ] : zp ZP_BYTE:50 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:51 [ sin8s::x3#0 ] : zp ZP_BYTE:51 , reg byte x , +Potential registers zp ZP_BYTE:52 [ mulu8_sel::return#2 ] : zp ZP_BYTE:52 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:53 [ sin8s::x3_6#0 ] : zp ZP_BYTE:53 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:54 [ sin8s::usinx#0 ] : zp ZP_BYTE:54 , reg byte x , +Potential registers zp ZP_BYTE:55 [ mulu8_sel::return#10 ] : zp ZP_BYTE:55 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:56 [ sin8s::x4#0 ] : zp ZP_BYTE:56 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:57 [ mulu8_sel::return#11 ] : zp ZP_BYTE:57 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:58 [ sin8s::x5#0 ] : zp ZP_BYTE:58 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:59 [ sin8s::x5_128#0 ] : zp ZP_BYTE:59 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:60 [ sin8s::usinx#1 ] : zp ZP_BYTE:60 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:61 [ mul8u::b#0 ] : zp ZP_BYTE:61 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:62 [ mul8u::return#2 ] : zp ZP_WORD:62 , +Potential registers zp ZP_WORD:64 [ mulu8_sel::$0 ] : zp ZP_WORD:64 , +Potential registers zp ZP_WORD:66 [ mulu8_sel::$1 ] : zp ZP_WORD:66 , +Potential registers zp ZP_BYTE:68 [ mulu8_sel::return#12 ] : zp ZP_BYTE:68 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:69 [ mul8u::$1 ] : zp ZP_BYTE:69 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:70 [ divr16u::return#2 ] : zp ZP_WORD:70 , +Potential registers zp ZP_WORD:72 [ div16u::return#0 ] : zp ZP_WORD:72 , +Potential registers zp ZP_BYTE:74 [ divr16u::$1 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:75 [ divr16u::$2 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , + +REGISTER UPLIFT SCOPES +Uplift Scope [mul8u] 353.83: zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 249.57: zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 202: zp ZP_BYTE:69 [ mul8u::$1 ] 170: zp ZP_BYTE:24 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 4: zp ZP_BYTE:61 [ mul8u::b#0 ] 4: zp ZP_WORD:62 [ mul8u::return#2 ] +Uplift Scope [print_str] 305.5: zp ZP_WORD:3 [ print_str::str#3 print_str::str#5 print_str::str#0 ] +Uplift Scope [divr16u] 96.25: zp ZP_WORD:29 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 37.25: zp ZP_WORD:33 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:74 [ divr16u::$1 ] 22: zp ZP_BYTE:75 [ divr16u::$2 ] 18.19: zp ZP_BYTE:35 [ divr16u::i#2 divr16u::i#1 ] 7.46: zp ZP_WORD:31 [ divr16u::dividend#2 divr16u::dividend#0 ] 4: zp ZP_WORD:70 [ divr16u::return#2 ] +Uplift Scope [] 188.93: zp ZP_WORD:7 [ char_cursor#27 char_cursor#37 char_cursor#44 char_cursor#41 char_cursor#42 char_cursor#19 char_cursor#10 char_cursor#1 ] +Uplift Scope [sin8s] 27.5: zp ZP_WORD:18 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] 22: zp ZP_BYTE:43 [ sin8s::return#0 ] 13: zp ZP_BYTE:20 [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] 4: zp ZP_WORD:45 [ sin8s::$6 ] 4: zp ZP_BYTE:49 [ sin8s::x2#0 ] 4: zp ZP_BYTE:53 [ sin8s::x3_6#0 ] 4: zp ZP_BYTE:56 [ sin8s::x4#0 ] 4: zp ZP_BYTE:58 [ sin8s::x5#0 ] 4: zp ZP_BYTE:59 [ sin8s::x5_128#0 ] 1: zp ZP_BYTE:51 [ sin8s::x3#0 ] 1: zp ZP_BYTE:60 [ sin8s::usinx#1 ] 0.64: zp ZP_BYTE:47 [ sin8s::x1#0 ] 0.33: zp ZP_BYTE:54 [ sin8s::usinx#0 ] 0.06: zp ZP_BYTE:17 [ sin8s::isUpper#2 ] +Uplift Scope [mulu8_sel] 24: zp ZP_BYTE:21 [ mulu8_sel::v1#5 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 mulu8_sel::v1#1 mulu8_sel::v1#2 ] 21: zp ZP_BYTE:22 [ mulu8_sel::v2#5 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 mulu8_sel::v2#1 ] 4: zp ZP_BYTE:48 [ mulu8_sel::return#0 ] 4: zp ZP_BYTE:50 [ mulu8_sel::return#1 ] 4: zp ZP_BYTE:52 [ mulu8_sel::return#2 ] 4: zp ZP_BYTE:55 [ mulu8_sel::return#10 ] 4: zp ZP_BYTE:57 [ mulu8_sel::return#11 ] 4: zp ZP_WORD:64 [ mulu8_sel::$0 ] 4: zp ZP_WORD:66 [ mulu8_sel::$1 ] 1.71: zp ZP_BYTE:68 [ mulu8_sel::return#12 ] 0.33: zp ZP_BYTE:23 [ mulu8_sel::select#5 ] +Uplift Scope [sin8s_gen] 22: zp ZP_BYTE:44 [ sin8s_gen::$1 ] 19.25: zp ZP_WORD:15 [ sin8s_gen::i#2 sin8s_gen::i#1 ] 12.05: zp ZP_WORD:11 [ sin8s_gen::x#2 sin8s_gen::x#1 ] 11: zp ZP_WORD:13 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] 1.18: zp ZP_WORD:41 [ sin8s_gen::step#0 ] +Uplift Scope [print_cls] 33: zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] +Uplift Scope [main] 19.8: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 6.6: zp ZP_BYTE:36 [ main::sb#0 ] +Uplift Scope [print_char] 14: zp ZP_BYTE:6 [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] +Uplift Scope [print_sbyte] 9.25: zp ZP_BYTE:5 [ print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#0 ] +Uplift Scope [print_byte] 4: zp ZP_BYTE:37 [ print_byte::$0 ] 4: zp ZP_BYTE:38 [ print_byte::$2 ] +Uplift Scope [div16u] 4: zp ZP_WORD:39 [ div16u::return#2 ] 1.33: zp ZP_WORD:72 [ div16u::return#0 ] + +Uplifting [mul8u] best 18894 combination zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] reg byte a [ mul8u::b#0 ] zp ZP_WORD:62 [ mul8u::return#2 ] +Uplifting [print_str] best 18894 combination zp ZP_WORD:3 [ print_str::str#3 print_str::str#5 print_str::str#0 ] +Uplifting [divr16u] best 18704 combination zp ZP_WORD:29 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:33 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:31 [ divr16u::dividend#2 divr16u::dividend#0 ] zp ZP_WORD:70 [ divr16u::return#2 ] +Uplifting [] best 18704 combination zp ZP_WORD:7 [ char_cursor#27 char_cursor#37 char_cursor#44 char_cursor#41 char_cursor#42 char_cursor#19 char_cursor#10 char_cursor#1 ] +Uplift attempts [sin8s] 10000/1048576 (limiting to 10000) +Uplifting [sin8s] best 18580 combination zp ZP_WORD:18 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] reg byte a [ sin8s::return#0 ] reg byte a [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] zp ZP_WORD:45 [ sin8s::$6 ] reg byte a [ sin8s::x2#0 ] reg byte a [ sin8s::x3_6#0 ] reg byte a [ sin8s::x4#0 ] reg byte a [ sin8s::x5#0 ] reg byte a [ sin8s::x5_128#0 ] zp ZP_BYTE:51 [ sin8s::x3#0 ] zp ZP_BYTE:60 [ sin8s::usinx#1 ] zp ZP_BYTE:47 [ sin8s::x1#0 ] zp ZP_BYTE:54 [ sin8s::usinx#0 ] zp ZP_BYTE:17 [ sin8s::isUpper#2 ] +Limited combination testing to 10000 combinations of 1048576 possible. +Uplift attempts [mulu8_sel] 10000/196608 (limiting to 10000) +Uplifting [mulu8_sel] best 18520 combination reg byte x [ mulu8_sel::v1#5 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 mulu8_sel::v1#1 mulu8_sel::v1#2 ] reg byte y [ mulu8_sel::v2#5 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 mulu8_sel::v2#1 ] reg byte a [ mulu8_sel::return#0 ] reg byte a [ mulu8_sel::return#1 ] reg byte a [ mulu8_sel::return#2 ] reg byte a [ mulu8_sel::return#10 ] reg byte a [ mulu8_sel::return#11 ] zp ZP_WORD:64 [ mulu8_sel::$0 ] zp ZP_WORD:66 [ mulu8_sel::$1 ] zp ZP_BYTE:68 [ mulu8_sel::return#12 ] zp ZP_BYTE:23 [ mulu8_sel::select#5 ] +Limited combination testing to 10000 combinations of 196608 possible. +Uplifting [sin8s_gen] best 18460 combination reg byte a [ sin8s_gen::$1 ] zp ZP_WORD:15 [ sin8s_gen::i#2 sin8s_gen::i#1 ] zp ZP_WORD:11 [ sin8s_gen::x#2 sin8s_gen::x#1 ] zp ZP_WORD:13 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] zp ZP_WORD:41 [ sin8s_gen::step#0 ] +Uplifting [print_cls] best 18460 combination zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [main] best 18340 combination reg byte x [ main::i#2 main::i#1 ] zp ZP_BYTE:36 [ main::sb#0 ] +Uplifting [print_char] best 18328 combination reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] +Uplifting [print_sbyte] best 18328 combination zp ZP_BYTE:5 [ print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#0 ] +Uplifting [print_byte] best 18320 combination reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [div16u] best 18320 combination zp ZP_WORD:39 [ div16u::return#2 ] zp ZP_WORD:72 [ div16u::return#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:5 [ print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#0 ] +Uplifting [print_sbyte] best 18320 combination zp ZP_BYTE:5 [ print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:36 [ main::sb#0 ] +Uplifting [main] best 18320 combination zp ZP_BYTE:36 [ main::sb#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:68 [ mulu8_sel::return#12 ] +Uplifting [mulu8_sel] best 18302 combination reg byte a [ mulu8_sel::return#12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:51 [ sin8s::x3#0 ] +Uplifting [sin8s] best 18302 combination zp ZP_BYTE:51 [ sin8s::x3#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:60 [ sin8s::usinx#1 ] +Uplifting [sin8s] best 18299 combination reg byte x [ sin8s::usinx#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:47 [ sin8s::x1#0 ] +Uplifting [sin8s] best 18299 combination zp ZP_BYTE:47 [ sin8s::x1#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:23 [ mulu8_sel::select#5 ] +Uplifting [mulu8_sel] best 18299 combination zp ZP_BYTE:23 [ mulu8_sel::select#5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:54 [ sin8s::usinx#0 ] +Uplifting [sin8s] best 18299 combination zp ZP_BYTE:54 [ sin8s::usinx#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:17 [ sin8s::isUpper#2 ] +Uplifting [sin8s] best 18299 combination zp ZP_BYTE:17 [ sin8s::isUpper#2 ] +Coalescing zero page register with common assignment [ zp ZP_BYTE:5 [ print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#0 ] ] with [ zp ZP_BYTE:36 [ main::sb#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] ] with [ zp ZP_WORD:45 [ sin8s::$6 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:62 [ mul8u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:33 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:70 [ divr16u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:39 [ div16u::return#2 ] ] with [ zp ZP_WORD:41 [ sin8s_gen::step#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:39 [ div16u::return#2 sin8s_gen::step#0 ] ] with [ zp ZP_WORD:72 [ div16u::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:64 [ mulu8_sel::$0 ] ] with [ zp ZP_WORD:66 [ mulu8_sel::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 ] ] with [ zp ZP_WORD:64 [ mulu8_sel::$0 mulu8_sel::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:33 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:39 [ div16u::return#2 sin8s_gen::step#0 div16u::return#0 ] ] - score: 1 +Coalescing zero page register [ zp ZP_WORD:3 [ print_str::str#3 print_str::str#5 print_str::str#0 ] ] with [ zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ print_str::str#3 print_str::str#5 print_str::str#0 print_cls::sc#2 print_cls::sc#1 ] ] with [ zp ZP_WORD:11 [ sin8s_gen::x#2 sin8s_gen::x#1 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ print_str::str#3 print_str::str#5 print_str::str#0 print_cls::sc#2 print_cls::sc#1 sin8s_gen::x#2 sin8s_gen::x#1 ] ] with [ zp ZP_WORD:29 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#0 main::sb#0 ] ] with [ zp ZP_BYTE:17 [ sin8s::isUpper#2 ] ] +Coalescing zero page register [ zp ZP_WORD:7 [ char_cursor#27 char_cursor#37 char_cursor#44 char_cursor#41 char_cursor#42 char_cursor#19 char_cursor#10 char_cursor#1 ] ] with [ zp ZP_WORD:13 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] ] +Coalescing zero page register [ zp ZP_WORD:7 [ char_cursor#27 char_cursor#37 char_cursor#44 char_cursor#41 char_cursor#42 char_cursor#19 char_cursor#10 char_cursor#1 sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] ] with [ zp ZP_WORD:31 [ divr16u::dividend#2 divr16u::dividend#0 ] ] +Coalescing zero page register [ zp ZP_WORD:18 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$6 ] ] with [ zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] ] +Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ print_str::str#3 print_str::str#5 print_str::str#0 print_cls::sc#2 print_cls::sc#1 sin8s_gen::x#2 sin8s_gen::x#1 divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#0 main::sb#0 sin8s::isUpper#2 ] +Allocated (was zp ZP_WORD:7) zp ZP_WORD:5 [ char_cursor#27 char_cursor#37 char_cursor#44 char_cursor#41 char_cursor#42 char_cursor#19 char_cursor#10 char_cursor#1 sin8s_gen::sintab#2 sin8s_gen::sintab#0 divr16u::dividend#2 divr16u::dividend#0 ] +Allocated (was zp ZP_WORD:15) zp ZP_WORD:7 [ sin8s_gen::i#2 sin8s_gen::i#1 ] +Allocated (was zp ZP_WORD:18) zp ZP_WORD:9 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$6 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] +Allocated (was zp ZP_BYTE:23) zp ZP_BYTE:11 [ mulu8_sel::select#5 ] +Allocated (was zp ZP_WORD:27) zp ZP_WORD:12 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +Allocated (was zp ZP_WORD:33) zp ZP_WORD:14 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 div16u::return#2 sin8s_gen::step#0 div16u::return#0 ] +Allocated (was zp ZP_BYTE:47) zp ZP_BYTE:16 [ sin8s::x1#0 ] +Allocated (was zp ZP_BYTE:51) zp ZP_BYTE:17 [ sin8s::x3#0 ] +Allocated (was zp ZP_BYTE:54) zp ZP_BYTE:18 [ sin8s::usinx#0 ] + +ASSEMBLER BEFORE OPTIMIZATION +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .const PI2_u4f12 = $6488 + .const PI_u4f12 = $3244 + .const PI_HALF_u4f12 = $1922 + .label SCREEN = $400 + .label char_cursor = 5 +//SEG2 @begin +bbegin: +//SEG3 [1] phi from @begin to @29 [phi:@begin->@29] +b29_from_bbegin: + jmp b29 +//SEG4 @29 +b29: +//SEG5 [2] call main param-assignment [ ] ( ) +//SEG6 [4] phi from @29 to main [phi:@29->main] +main_from_b29: + jsr main +//SEG7 [3] phi from @29 to @end [phi:@29->@end] +bend_from_b29: + jmp bend +//SEG8 @end +bend: +//SEG9 main +main: { + .label wavelength = $78 + .label sb = 4 + //SEG10 [5] call sin8s_gen param-assignment [ ] ( main:2 [ ] ) + //SEG11 [52] phi from main to sin8s_gen [phi:main->sin8s_gen] + sin8s_gen_from_main: + jsr sin8s_gen + //SEG12 [6] phi from main to main::@5 [phi:main->main::@5] + b5_from_main: + jmp b5 + //SEG13 main::@5 + b5: + //SEG14 [7] call print_cls param-assignment [ ] ( main:2 [ ] ) + //SEG15 [46] phi from main::@5 to print_cls [phi:main::@5->print_cls] + print_cls_from_b5: + jsr print_cls + //SEG16 [8] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + b1_from_b5: + //SEG17 [8] phi (byte*) char_cursor#42 = (const byte*) SCREEN#0 [phi:main::@5->main::@1#0] -- pbuz1=pbuc1 + lda #SCREEN + sta char_cursor+1 + //SEG18 [8] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@1#1] -- vbuxx=vbuc1 + ldx #0 + jmp b1 + //SEG19 [8] phi from main::@8 to main::@1 [phi:main::@8->main::@1] + b1_from_b8: + //SEG20 [8] phi (byte*) char_cursor#42 = (byte*) char_cursor#19 [phi:main::@8->main::@1#0] -- register_copy + //SEG21 [8] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@8->main::@1#1] -- register_copy + jmp b1 + //SEG22 main::@1 + b1: + //SEG23 [9] (signed byte) main::sb#0 ← *((const signed byte[120]) main::sintab2#0 + (byte) main::i#2) [ main::i#2 char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 char_cursor#42 main::sb#0 ] ) -- vbsz1=pbsc1_derefidx_vbuxx + lda sintab2,x + sta sb + //SEG24 [10] if((signed byte) main::sb#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::i#2 char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 char_cursor#42 main::sb#0 ] ) -- vbsz1_lt_0_then_la1 + lda sb + bmi b2_from_b1 + //SEG25 [11] phi from main::@1 to main::@3 [phi:main::@1->main::@3] + b3_from_b1: + jmp b3 + //SEG26 main::@3 + b3: + //SEG27 [12] call print_str param-assignment [ main::i#2 char_cursor#19 main::sb#0 ] ( main:2 [ main::i#2 char_cursor#19 main::sb#0 ] ) + //SEG28 [21] phi from main::@3 to print_str [phi:main::@3->print_str] + print_str_from_b3: + //SEG29 [21] phi (byte*) char_cursor#44 = (byte*) char_cursor#42 [phi:main::@3->print_str#0] -- register_copy + //SEG30 [21] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + //SEG31 [13] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + b2_from_b1: + b2_from_b3: + //SEG32 [13] phi (byte*) char_cursor#41 = (byte*) char_cursor#42 [phi:main::@1/main::@3->main::@2#0] -- register_copy + jmp b2 + //SEG33 main::@2 + b2: + //SEG34 [14] (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0 [ main::i#2 char_cursor#41 print_sbyte::b#1 ] ( main:2 [ main::i#2 char_cursor#41 print_sbyte::b#1 ] ) + // (signed byte) print_sbyte::b#1 = (signed byte) main::sb#0 // register copy zp ZP_BYTE:4 + //SEG35 [15] call print_sbyte param-assignment [ main::i#2 char_cursor#10 ] ( main:2 [ main::i#2 char_cursor#10 ] ) + jsr print_sbyte + //SEG36 [16] phi from main::@2 to main::@7 [phi:main::@2->main::@7] + b7_from_b2: + jmp b7 + //SEG37 main::@7 + b7: + //SEG38 [17] call print_str param-assignment [ main::i#2 char_cursor#19 ] ( main:2 [ main::i#2 char_cursor#19 ] ) + //SEG39 [21] phi from main::@7 to print_str [phi:main::@7->print_str] + print_str_from_b7: + //SEG40 [21] phi (byte*) char_cursor#44 = (byte*) char_cursor#10 [phi:main::@7->print_str#0] -- register_copy + //SEG41 [21] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + jmp b8 + //SEG42 main::@8 + b8: + //SEG43 [18] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 char_cursor#19 ] ( main:2 [ main::i#1 char_cursor#19 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG44 [19] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 120) goto main::@1 [ main::i#1 char_cursor#19 ] ( main:2 [ main::i#1 char_cursor#19 ] ) -- vbuxx_neq_vbuc1_then_la1 + cpx #$78 + bne b1_from_b8 + jmp breturn + //SEG45 main::@return + breturn: + //SEG46 [20] return [ ] ( main:2 [ ] ) + rts + str: .text " @" + str1: .text " @" + sintab2: .fill $78, 0 +} +//SEG47 print_str +print_str: { + .label str = 2 + //SEG48 [22] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + b1_from_print_str: + b1_from_b2: + //SEG49 [22] phi (byte*) char_cursor#19 = (byte*) char_cursor#44 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG50 [22] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + jmp b1 + //SEG51 print_str::@1 + b1: + //SEG52 [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ char_cursor#19 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 print_str::str#3 ] main:2::print_str:17 [ main::i#2 char_cursor#19 print_str::str#3 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 + ldy #0 + lda (str),y + cmp #'@' + bne b2 + jmp breturn + //SEG53 print_str::@return + breturn: + //SEG54 [24] return [ char_cursor#19 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 ] main:2::print_str:17 [ main::i#2 char_cursor#19 ] ) + rts + //SEG55 print_str::@2 + b2: + //SEG56 [25] *((byte*) char_cursor#19) ← *((byte*) print_str::str#3) [ char_cursor#19 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 print_str::str#3 ] main:2::print_str:17 [ main::i#2 char_cursor#19 print_str::str#3 ] ) -- _deref_pbuz1=_deref_pbuz2 + ldy #0 + lda (str),y + ldy #0 + sta (char_cursor),y + //SEG57 [26] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#19 [ print_str::str#3 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 print_str::str#3 char_cursor#1 ] main:2::print_str:17 [ main::i#2 print_str::str#3 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + inc char_cursor + bne !+ + inc char_cursor+1 + !: + //SEG58 [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 print_str::str#0 char_cursor#1 ] main:2::print_str:17 [ main::i#2 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + inc str + bne !+ + inc str+1 + !: + jmp b1_from_b2 +} +//SEG59 print_sbyte +print_sbyte: { + .label b = 4 + //SEG60 [28] if((signed byte) print_sbyte::b#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 [ char_cursor#41 print_sbyte::b#1 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#41 print_sbyte::b#1 ] ) -- vbsz1_ge_0_then_la1 + lda b + cmp #0 + bpl b1_from_print_sbyte + //SEG61 [29] phi from print_sbyte to print_sbyte::@2 [phi:print_sbyte->print_sbyte::@2] + b2_from_print_sbyte: + jmp b2 + //SEG62 print_sbyte::@2 + b2: + //SEG63 [30] call print_char param-assignment [ print_sbyte::b#1 char_cursor#10 ] ( main:2::print_sbyte:15 [ main::i#2 print_sbyte::b#1 char_cursor#10 ] ) + //SEG64 [42] phi from print_sbyte::@2 to print_char [phi:print_sbyte::@2->print_char] + print_char_from_b2: + //SEG65 [42] phi (byte*) char_cursor#27 = (byte*) char_cursor#41 [phi:print_sbyte::@2->print_char#0] -- register_copy + //SEG66 [42] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sbyte::@2->print_char#1] -- vbuaa=vbuc1 + lda #'-' + jsr print_char + jmp b4 + //SEG67 print_sbyte::@4 + b4: + //SEG68 [31] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ char_cursor#10 print_sbyte::b#0 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#10 print_sbyte::b#0 ] ) -- vbsz1=_neg_vbsz1 + lda b + eor #$ff + clc + adc #1 + sta b + //SEG69 [32] phi from print_sbyte print_sbyte::@4 to print_sbyte::@1 [phi:print_sbyte/print_sbyte::@4->print_sbyte::@1] + b1_from_print_sbyte: + b1_from_b4: + //SEG70 [32] phi (byte*) char_cursor#37 = (byte*) char_cursor#41 [phi:print_sbyte/print_sbyte::@4->print_sbyte::@1#0] -- register_copy + //SEG71 [32] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:print_sbyte/print_sbyte::@4->print_sbyte::@1#1] -- register_copy + jmp b1 + //SEG72 print_sbyte::@1 + b1: + //SEG73 [33] call print_byte param-assignment [ char_cursor#10 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#10 ] ) + jsr print_byte + jmp breturn + //SEG74 print_sbyte::@return + breturn: + //SEG75 [34] return [ char_cursor#10 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#10 ] ) + rts +} +//SEG76 print_byte +print_byte: { + //SEG77 [35] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_sbyte::b#3 char_cursor#37 print_byte::$0 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 char_cursor#37 print_byte::$0 ] ) -- vbuaa=vbuz1_ror_4 + lda print_sbyte.b + lsr + lsr + lsr + lsr + //SEG78 [36] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 char_cursor#37 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + tay + lda hextab,y + //SEG79 [37] call print_char param-assignment [ char_cursor#10 print_sbyte::b#3 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 print_sbyte::b#3 ] ) + //SEG80 [42] phi from print_byte to print_char [phi:print_byte->print_char] + print_char_from_print_byte: + //SEG81 [42] phi (byte*) char_cursor#27 = (byte*) char_cursor#37 [phi:print_byte->print_char#0] -- register_copy + //SEG82 [42] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + jsr print_char + jmp b1 + //SEG83 print_byte::@1 + b1: + //SEG84 [38] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 print_byte::$2 ] ) -- vbuaa=vbuz1_band_vbuc1 + lda #$f + and print_sbyte.b + //SEG85 [39] (byte) print_char::ch#2 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + tay + lda hextab,y + //SEG86 [40] call print_char param-assignment [ char_cursor#10 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 ] ) + //SEG87 [42] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + print_char_from_b1: + //SEG88 [42] phi (byte*) char_cursor#27 = (byte*) char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG89 [42] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + jsr print_char + jmp breturn + //SEG90 print_byte::@return + breturn: + //SEG91 [41] return [ char_cursor#10 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 ] ) + rts + hextab: .text "0123456789abcdef" +} +//SEG92 print_char +print_char: { + //SEG93 [43] *((byte*) char_cursor#27) ← (byte) print_char::ch#3 [ char_cursor#27 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 char_cursor#27 ] ) -- _deref_pbuz1=vbuaa + ldy #0 + sta (char_cursor),y + //SEG94 [44] (byte*) char_cursor#10 ← ++ (byte*) char_cursor#27 [ char_cursor#10 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 char_cursor#10 ] ) -- pbuz1=_inc_pbuz1 + inc char_cursor + bne !+ + inc char_cursor+1 + !: + jmp breturn + //SEG95 print_char::@return + breturn: + //SEG96 [45] return [ char_cursor#10 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 char_cursor#10 ] ) + rts +} +//SEG97 print_cls +print_cls: { + .label sc = 2 + //SEG98 [47] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + b1_from_print_cls: + //SEG99 [47] phi (byte*) print_cls::sc#2 = (const byte*) SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + lda #SCREEN + sta sc+1 + jmp b1 + //SEG100 [47] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + b1_from_b1: + //SEG101 [47] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + jmp b1 + //SEG102 print_cls::@1 + b1: + //SEG103 [48] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 + lda #' ' + ldy #0 + sta (sc),y + //SEG104 [49] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 + inc sc + bne !+ + inc sc+1 + !: + //SEG105 [50] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) -- pbuz1_neq_pbuc1_then_la1 + lda sc+1 + cmp #>SCREEN+$3e8 + bne b1_from_b1 + lda sc + cmp #div16u] + div16u_from_sin8s_gen: + jsr div16u + //SEG111 [54] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8s_gen:5 [ div16u::return#2 ] ) + // (word) div16u::return#2 = (word) div16u::return#0 // register copy zp ZP_WORD:14 + jmp b3 + //SEG112 sin8s_gen::@3 + b3: + //SEG113 [55] (word) sin8s_gen::step#0 ← (word) div16u::return#2 [ sin8s_gen::step#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 ] ) + // (word) sin8s_gen::step#0 = (word) div16u::return#2 // register copy zp ZP_WORD:14 + //SEG114 [56] phi from sin8s_gen::@3 to sin8s_gen::@1 [phi:sin8s_gen::@3->sin8s_gen::@1] + b1_from_b3: + //SEG115 [56] phi (word) sin8s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- vwuz1=vbuc1 + lda #<0 + sta i + lda #>0 + sta i+1 + //SEG116 [56] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[120]) main::sintab2#0 [phi:sin8s_gen::@3->sin8s_gen::@1#1] -- pbsz1=pbsc1 + lda #main.sintab2 + sta sintab+1 + //SEG117 [56] phi (word) sin8s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#2] -- vwuz1=vbuc1 + lda #<0 + sta x + lda #>0 + sta x+1 + jmp b1 + //SEG118 [56] phi from sin8s_gen::@4 to sin8s_gen::@1 [phi:sin8s_gen::@4->sin8s_gen::@1] + b1_from_b4: + //SEG119 [56] phi (word) sin8s_gen::i#2 = (word) sin8s_gen::i#1 [phi:sin8s_gen::@4->sin8s_gen::@1#0] -- register_copy + //SEG120 [56] phi (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#0 [phi:sin8s_gen::@4->sin8s_gen::@1#1] -- register_copy + //SEG121 [56] phi (word) sin8s_gen::x#2 = (word) sin8s_gen::x#1 [phi:sin8s_gen::@4->sin8s_gen::@1#2] -- register_copy + jmp b1 + //SEG122 sin8s_gen::@1 + b1: + //SEG123 [57] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#0 ] ) -- vwuz1=vwuz2 + lda x + sta sin8s.x + lda x+1 + sta sin8s.x+1 + //SEG124 [58] call sin8s param-assignment [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#1 ] ) + jsr sin8s + //SEG125 [59] (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#1 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#0 ] ) + // (signed byte) sin8s::return#0 = (signed byte) sin8s::return#1 // register copy reg byte a + jmp b4 + //SEG126 sin8s_gen::@4 + b4: + //SEG127 [60] (signed byte~) sin8s_gen::$1 ← (signed byte) sin8s::return#0 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s_gen::$1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s_gen::$1 ] ) + // (signed byte~) sin8s_gen::$1 = (signed byte) sin8s::return#0 // register copy reg byte a + //SEG128 [61] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ) -- _deref_pbsz1=vbsaa + ldy #0 + sta (sintab),y + //SEG129 [62] (signed byte*) sin8s_gen::sintab#0 ← ++ (signed byte*) sin8s_gen::sintab#2 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::i#2 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::i#2 sin8s_gen::sintab#0 ] ) -- pbsz1=_inc_pbsz1 + inc sintab + bne !+ + inc sintab+1 + !: + //SEG130 [63] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ) -- vwuz1=vwuz1_plus_vwuz2 + lda x + clc + adc step + sta x + lda x+1 + adc step+1 + sta x+1 + //SEG131 [64] (word) sin8s_gen::i#1 ← ++ (word) sin8s_gen::i#2 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ) -- vwuz1=_inc_vwuz1 + inc i + bne !+ + inc i+1 + !: + //SEG132 [65] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ) -- vwuz1_lt_vwuc1_then_la1 + lda i+1 + cmp #>main.wavelength + bcc b1_from_b4 + bne !+ + lda i + cmp #PI_u4f12 + bcc b1_from_sin8s + bne !+ + lda x + cmp #PI_u4f12 + sta x+1 + //SEG139 [69] phi from sin8s::@4 to sin8s::@1 [phi:sin8s::@4->sin8s::@1] + b1_from_b4: + //SEG140 [69] phi (byte) sin8s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@4->sin8s::@1#0] -- vbuz1=vbuc1 + lda #1 + sta isUpper + //SEG141 [69] phi (word) sin8s::x#4 = (word) sin8s::x#1 [phi:sin8s::@4->sin8s::@1#1] -- register_copy + jmp b1 + //SEG142 [69] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + b1_from_sin8s: + //SEG143 [69] phi (byte) sin8s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + lda #0 + sta isUpper + //SEG144 [69] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s->sin8s::@1#1] -- register_copy + jmp b1 + //SEG145 sin8s::@1 + b1: + //SEG146 [70] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#4 sin8s::isUpper#2 ] ) -- vwuz1_lt_vwuc1_then_la1 + lda x+1 + cmp #>PI_HALF_u4f12 + bcc b2_from_b1 + bne !+ + lda x + cmp #PI_u4f12 + sbc x+1 + sta x+1 + //SEG149 [72] phi from sin8s::@1 sin8s::@5 to sin8s::@2 [phi:sin8s::@1/sin8s::@5->sin8s::@2] + b2_from_b1: + b2_from_b5: + //SEG150 [72] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@5->sin8s::@2#0] -- register_copy + jmp b2 + //SEG151 sin8s::@2 + b2: + //SEG152 [73] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin8s::isUpper#2 sin8s::$6 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::$6 ] ) -- vwuz1=vwuz1_rol_3 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + //SEG153 [74] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 [ sin8s::isUpper#2 sin8s::x1#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 ] ) -- vbuz1=_hi_vwuz2 + lda _6+1 + sta x1 + //SEG154 [75] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 ] ) -- vbuxx=vbuz1 + ldx x1 + //SEG155 [76] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 mulu8_sel::v2#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 mulu8_sel::v2#0 ] ) -- vbuyy=vbuz1 + ldy x1 + //SEG156 [77] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ) + //SEG157 [107] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + mulu8_sel_from_b2: + //SEG158 [107] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 + lda #0 + sta mulu8_sel.select + //SEG159 [107] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG160 [107] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy + jsr mulu8_sel + //SEG161 [78] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#0 ] ) + // (byte) mulu8_sel::return#0 = (byte) mulu8_sel::return#12 // register copy reg byte a + jmp b8 + //SEG162 sin8s::@8 + b8: + //SEG163 [79] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x2#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x2#0 ] ) + // (byte) sin8s::x2#0 = (byte) mulu8_sel::return#0 // register copy reg byte a + //SEG164 [80] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 ] ) -- vbuxx=vbuaa + tax + //SEG165 [81] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 mulu8_sel::v2#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 mulu8_sel::v2#1 ] ) -- vbuyy=vbuz1 + ldy x1 + //SEG166 [82] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ) + //SEG167 [107] phi from sin8s::@8 to mulu8_sel [phi:sin8s::@8->mulu8_sel] + mulu8_sel_from_b8: + //SEG168 [107] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@8->mulu8_sel#0] -- vbuz1=vbuc1 + lda #1 + sta mulu8_sel.select + //SEG169 [107] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@8->mulu8_sel#1] -- register_copy + //SEG170 [107] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@8->mulu8_sel#2] -- register_copy + jsr mulu8_sel + //SEG171 [83] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#1 ] ) + // (byte) mulu8_sel::return#1 = (byte) mulu8_sel::return#12 // register copy reg byte a + jmp b9 + //SEG172 sin8s::@9 + b9: + //SEG173 [84] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 ] ) -- vbuz1=vbuaa + sta x3 + //SEG174 [85] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v1#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v1#2 ] ) -- vbuxx=vbuz1 + ldx x3 + //SEG175 [86] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::x3#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::x3#0 ] ) + //SEG176 [107] phi from sin8s::@9 to mulu8_sel [phi:sin8s::@9->mulu8_sel] + mulu8_sel_from_b9: + //SEG177 [107] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@9->mulu8_sel#0] -- vbuz1=vbuc1 + lda #1 + sta mulu8_sel.select + //SEG178 [107] phi (byte) mulu8_sel::v2#5 = (word/signed word/dword/signed dword) 256/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin8s::@9->mulu8_sel#1] -- vbuyy=vbuc1 + ldy #$100/6 + //SEG179 [107] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@9->mulu8_sel#2] -- register_copy + jsr mulu8_sel + //SEG180 [87] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#2 ] ) + // (byte) mulu8_sel::return#2 = (byte) mulu8_sel::return#12 // register copy reg byte a + jmp b10 + //SEG181 sin8s::@10 + b10: + //SEG182 [88] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::x3_6#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::x3_6#0 ] ) + // (byte) sin8s::x3_6#0 = (byte) mulu8_sel::return#2 // register copy reg byte a + //SEG183 [89] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) -- vbuz1=vbuz2_minus_vbuaa + eor #$ff + sec + adc x1 + sta usinx + //SEG184 [90] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 ] ) -- vbuxx=vbuz1 + ldx x3 + //SEG185 [91] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 mulu8_sel::v2#3 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 mulu8_sel::v2#3 ] ) -- vbuyy=vbuz1 + ldy x1 + //SEG186 [92] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::usinx#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::usinx#0 ] ) + //SEG187 [107] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + mulu8_sel_from_b10: + //SEG188 [107] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 + lda #0 + sta mulu8_sel.select + //SEG189 [107] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@10->mulu8_sel#1] -- register_copy + //SEG190 [107] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@10->mulu8_sel#2] -- register_copy + jsr mulu8_sel + //SEG191 [93] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#10 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#10 ] ) + // (byte) mulu8_sel::return#10 = (byte) mulu8_sel::return#12 // register copy reg byte a + jmp b11 + //SEG192 sin8s::@11 + b11: + //SEG193 [94] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 sin8s::x4#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 sin8s::x4#0 ] ) + // (byte) sin8s::x4#0 = (byte) mulu8_sel::return#10 // register copy reg byte a + //SEG194 [95] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#4 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#4 ] ) -- vbuxx=vbuaa + tax + //SEG195 [96] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v1#4 mulu8_sel::v2#4 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v1#4 mulu8_sel::v2#4 ] ) -- vbuyy=vbuz1 + ldy x1 + //SEG196 [97] call mulu8_sel param-assignment [ sin8s::isUpper#2 mulu8_sel::return#12 sin8s::usinx#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 mulu8_sel::return#12 sin8s::usinx#0 ] ) + //SEG197 [107] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + mulu8_sel_from_b11: + //SEG198 [107] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 + lda #0 + sta mulu8_sel.select + //SEG199 [107] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@11->mulu8_sel#1] -- register_copy + //SEG200 [107] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + jsr mulu8_sel + //SEG201 [98] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#11 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#11 ] ) + // (byte) mulu8_sel::return#11 = (byte) mulu8_sel::return#12 // register copy reg byte a + jmp b12 + //SEG202 sin8s::@12 + b12: + //SEG203 [99] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 [ sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5#0 ] ) + // (byte) sin8s::x5#0 = (byte) mulu8_sel::return#11 // register copy reg byte a + //SEG204 [100] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5_128#0 ] ) -- vbuaa=vbuaa_ror_4 + lsr + lsr + lsr + lsr + //SEG205 [101] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#2 sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#1 ] ) -- vbuxx=vbuz1_plus_vbuaa + clc + adc usinx + tax + //SEG206 [102] if((byte) sin8s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@15 [ sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::usinx#1 ] ) -- vbuz1_eq_0_then_la1 + lda isUpper + beq b15 + jmp b6 + //SEG207 sin8s::@6 + b6: + //SEG208 [103] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#1 [ sin8s::sinx#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::sinx#1 ] ) -- vbsaa=_neg_vbsxx + txa + eor #$ff + clc + adc #1 + //SEG209 [104] phi from sin8s::@15 sin8s::@6 to sin8s::@3 [phi:sin8s::@15/sin8s::@6->sin8s::@3] + b3_from_b15: + b3_from_b6: + //SEG210 [104] phi (signed byte) sin8s::return#1 = (signed byte~) sin8s::return#5 [phi:sin8s::@15/sin8s::@6->sin8s::@3#0] -- register_copy + jmp b3 + //SEG211 sin8s::@3 + b3: + jmp breturn + //SEG212 sin8s::@return + breturn: + //SEG213 [105] return [ sin8s::return#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#1 ] ) + rts + //SEG214 sin8s::@15 + b15: + //SEG215 [106] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#1 [ sin8s::return#5 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#5 ] ) -- vbsaa=vbsxx + txa + jmp b3_from_b15 +} +//SEG216 mulu8_sel +mulu8_sel: { + .label _0 = 9 + .label _1 = 9 + .label select = $b + //SEG217 [108] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 [ mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] ) + // (byte) mul8u::a#1 = (byte) mulu8_sel::v1#5 // register copy reg byte x + //SEG218 [109] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 [ mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] ) -- vbuaa=vbuyy + tya + //SEG219 [110] call mul8u param-assignment [ mulu8_sel::select#5 mul8u::res#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] ) + jsr mul8u + //SEG220 [111] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] ) + // (word) mul8u::return#2 = (word) mul8u::res#2 // register copy zp ZP_WORD:9 + jmp b2 + //SEG221 mulu8_sel::@2 + b2: + //SEG222 [112] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) + // (word~) mulu8_sel::$0 = (word) mul8u::return#2 // register copy zp ZP_WORD:9 + //SEG223 [113] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::$1 ] ) -- vwuz1=vwuz1_rol_vbuz2 + ldy select + beq !e+ + !: + asl _1 + rol _1+1 + dey + bne !- + !e: + //SEG224 [114] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#12 ] ) -- vbuaa=_hi_vwuz1 + lda _1+1 + jmp breturn + //SEG225 mulu8_sel::@return + breturn: + //SEG226 [115] return [ mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#12 ] ) + rts +} +//SEG227 mul8u +mul8u: { + .label mb = $c + .label res = 9 + .label return = 9 + //SEG228 [116] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] ) -- vwuz1=_word_vbuaa + sta mb + lda #0 + sta mb+1 + //SEG229 [117] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + b1_from_mul8u: + //SEG230 [117] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG231 [117] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + lda #<0 + sta res + lda #>0 + sta res+1 + //SEG232 [117] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy + jmp b1 + //SEG233 mul8u::@1 + b1: + //SEG234 [118] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ) -- vbuxx_neq_0_then_la1 + cpx #0 + bne b2 + jmp breturn + //SEG235 mul8u::@return + breturn: + //SEG236 [119] return [ mul8u::res#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] ) + rts + //SEG237 mul8u::@2 + b2: + //SEG238 [120] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ) -- vbuaa=vbuxx_band_vbuc1 + txa + and #1 + //SEG239 [121] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ) -- vbuaa_eq_0_then_la1 + cmp #0 + beq b4_from_b2 + jmp b7 + //SEG240 mul8u::@7 + b7: + //SEG241 [122] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) -- vwuz1=vwuz1_plus_vwuz2 + lda res + clc + adc mb + sta res + lda res+1 + adc mb+1 + sta res+1 + //SEG242 [123] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + b4_from_b2: + b4_from_b7: + //SEG243 [123] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + jmp b4 + //SEG244 mul8u::@4 + b4: + //SEG245 [124] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] ) -- vbuxx=vbuxx_ror_1 + txa + lsr + tax + //SEG246 [125] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] ) -- vwuz1=vwuz1_rol_1 + asl mb + rol mb+1 + //SEG247 [117] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + b1_from_b4: + //SEG248 [117] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG249 [117] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG250 [117] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + jmp b1 +} +//SEG251 div16u +div16u: { + .label return = $e + //SEG252 [127] call divr16u param-assignment [ divr16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53 [ divr16u::return#0 ] ) + //SEG253 [131] phi from div16u to divr16u [phi:div16u->divr16u] + divr16u_from_div16u: + jsr divr16u + //SEG254 [128] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8s_gen:5::div16u:53 [ divr16u::return#2 ] ) + // (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:14 + jmp b2 + //SEG255 div16u::@2 + b2: + //SEG256 [129] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53 [ div16u::return#0 ] ) + // (word) div16u::return#0 = (word) divr16u::return#2 // register copy zp ZP_WORD:14 + jmp breturn + //SEG257 div16u::@return + breturn: + //SEG258 [130] return [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53 [ div16u::return#0 ] ) + rts +} +//SEG259 divr16u +divr16u: { + .label rem = 2 + .label dividend = 5 + .label quotient = $e + .label return = $e + //SEG260 [132] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + b1_from_divr16u: + //SEG261 [132] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + ldx #0 + //SEG262 [132] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + lda #<0 + sta quotient + lda #>0 + sta quotient+1 + //SEG263 [132] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + lda #PI2_u4f12 + sta dividend+1 + //SEG264 [132] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + lda #<0 + sta rem + lda #>0 + sta rem+1 + jmp b1 + //SEG265 [132] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + b1_from_b3: + //SEG266 [132] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG267 [132] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG268 [132] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG269 [132] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + jmp b1 + //SEG270 divr16u::@1 + b1: + //SEG271 [133] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) -- vwuz1=vwuz1_rol_1 + asl rem + rol rem+1 + //SEG272 [134] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) -- vbuaa=_hi_vwuz1 + lda dividend+1 + //SEG273 [135] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) -- vbuaa=vbuaa_band_vbuc1 + and #$80 + //SEG274 [136] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) -- vbuaa_eq_0_then_la1 + cmp #0 + beq b2_from_b1 + jmp b4 + //SEG275 divr16u::@4 + b4: + //SEG276 [137] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) -- vwuz1=vwuz1_bor_vbuc1 + lda #1 + ora rem + sta rem + //SEG277 [138] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + b2_from_b1: + b2_from_b4: + //SEG278 [138] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + jmp b2 + //SEG279 divr16u::@2 + b2: + //SEG280 [139] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 ] ) -- vwuz1=vwuz1_rol_1 + asl dividend + rol dividend+1 + //SEG281 [140] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) -- vwuz1=vwuz1_rol_1 + asl quotient + rol quotient+1 + //SEG282 [141] if((word) divr16u::rem#5<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) -- vwuz1_lt_vwuc1_then_la1 + lda rem+1 + cmp #>main.wavelength + bcc b3_from_b2 + bne !+ + lda rem + cmp #main.wavelength + sta rem+1 + //SEG286 [144] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + b3_from_b2: + b3_from_b5: + //SEG287 [144] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG288 [144] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + jmp b3 + //SEG289 divr16u::@3 + b3: + //SEG290 [145] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG291 [146] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + cpx #$10 + bne b1_from_b3 + jmp breturn + //SEG292 divr16u::@return + breturn: + //SEG293 [147] return [ divr16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 ] ) + rts +} + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp b29 +Removing instruction jmp bend +Removing instruction jmp b5 +Removing instruction jmp b1 +Removing instruction jmp b3 +Removing instruction jmp b2 +Removing instruction jmp b7 +Removing instruction jmp b8 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp b2 +Removing instruction jmp b4 +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp b3 +Removing instruction jmp b1 +Removing instruction jmp b4 +Removing instruction jmp breturn +Removing instruction jmp b4 +Removing instruction jmp b1 +Removing instruction jmp b5 +Removing instruction jmp b2 +Removing instruction jmp b8 +Removing instruction jmp b9 +Removing instruction jmp b10 +Removing instruction jmp b11 +Removing instruction jmp b12 +Removing instruction jmp b6 +Removing instruction jmp b3 +Removing instruction jmp breturn +Removing instruction jmp b2 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp b7 +Removing instruction jmp b4 +Removing instruction jmp b2 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b4 +Removing instruction jmp b2 +Removing instruction jmp b5 +Removing instruction jmp b3 +Removing instruction jmp breturn +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction lda sb +Removing instruction ldy #0 +Removing instruction lda #>0 +Removing instruction lda #>0 +Replacing instruction ldx x1 with TAX +Replacing instruction ldy x1 with TAY +Replacing instruction ldx x3 with TAX +Removing instruction lda #>0 +Replacing instruction lda #<0 with TXA +Removing instruction lda #>0 +Replacing instruction lda #<0 with TXA +Removing instruction lda #>0 +Succesful ASM optimization Pass5UnnecesaryLoadElimination +Replacing label b2_from_b1 with b2 +Replacing label b1_from_b8 with b1 +Replacing label b1_from_b2 with b1 +Replacing label b1_from_print_sbyte with b1 +Replacing label b1_from_b1 with b1 +Replacing label b1_from_b1 with b1 +Replacing label b1_from_b4 with b1 +Replacing label b1_from_b4 with b1 +Replacing label b2_from_b1 with b2 +Replacing label b2_from_b1 with b2 +Replacing label b3_from_b15 with b3 +Replacing label b4_from_b2 with b4 +Replacing label b2_from_b1 with b2 +Replacing label b3_from_b2 with b3 +Replacing label b3_from_b2 with b3 +Replacing label b1_from_b3 with b1 +Removing instruction bbegin: +Removing instruction b29_from_bbegin: +Removing instruction main_from_b29: +Removing instruction bend_from_b29: +Removing instruction b5_from_main: +Removing instruction print_cls_from_b5: +Removing instruction b1_from_b8: +Removing instruction b3_from_b1: +Removing instruction print_str_from_b3: +Removing instruction b2_from_b1: +Removing instruction b2_from_b3: +Removing instruction b7_from_b2: +Removing instruction print_str_from_b7: +Removing instruction b1_from_print_str: +Removing instruction b1_from_b2: +Removing instruction b2_from_print_sbyte: +Removing instruction print_char_from_b2: +Removing instruction b1_from_print_sbyte: +Removing instruction b1_from_b4: +Removing instruction b1_from_b1: +Removing instruction b1_from_b4: +Removing instruction b2_from_b1: +Removing instruction b2_from_b5: +Removing instruction b3_from_b15: +Removing instruction b3_from_b6: +Removing instruction breturn: +Removing instruction b4_from_b2: +Removing instruction b4_from_b7: +Removing instruction b1_from_b3: +Removing instruction b2_from_b1: +Removing instruction b2_from_b4: +Removing instruction b3_from_b2: +Removing instruction b3_from_b5: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction b29: +Removing instruction bend: +Removing instruction sin8s_gen_from_main: +Removing instruction b5: +Removing instruction b1_from_b5: +Removing instruction b3: +Removing instruction b7: +Removing instruction b8: +Removing instruction breturn: +Removing instruction breturn: +Removing instruction b2: +Removing instruction b4: +Removing instruction breturn: +Removing instruction print_char_from_print_byte: +Removing instruction b1: +Removing instruction print_char_from_b1: +Removing instruction breturn: +Removing instruction breturn: +Removing instruction b1_from_print_cls: +Removing instruction breturn: +Removing instruction div16u_from_sin8s_gen: +Removing instruction b3: +Removing instruction b1_from_b3: +Removing instruction b4: +Removing instruction breturn: +Removing instruction b4: +Removing instruction b1_from_b4: +Removing instruction b5: +Removing instruction mulu8_sel_from_b2: +Removing instruction b8: +Removing instruction mulu8_sel_from_b8: +Removing instruction b9: +Removing instruction mulu8_sel_from_b9: +Removing instruction b10: +Removing instruction mulu8_sel_from_b10: +Removing instruction b11: +Removing instruction mulu8_sel_from_b11: +Removing instruction b12: +Removing instruction b6: +Removing instruction b2: +Removing instruction breturn: +Removing instruction b1_from_mul8u: +Removing instruction breturn: +Removing instruction b7: +Removing instruction b1_from_b4: +Removing instruction divr16u_from_div16u: +Removing instruction b2: +Removing instruction breturn: +Removing instruction b1_from_divr16u: +Removing instruction b4: +Removing instruction b5: +Removing instruction breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Relabelling long label b1_from_sin8s to b4 +Succesful ASM optimization Pass5RelabelLongLabels +Removing instruction jmp b1 +Removing instruction jmp b1 +Removing instruction jmp b1 +Removing instruction jmp b1 +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction lda #<0 +Succesful ASM optimization Pass5UnnecesaryLoadElimination + +FINAL SYMBOL TABLE +(label) @29 +(label) @begin +(label) @end +(word) PI2_u4f12 +(const word) PI2_u4f12#0 PI2_u4f12 = (word/signed word/dword/signed dword) 25736 +(word) PI_HALF_u4f12 +(const word) PI_HALF_u4f12#0 PI_HALF_u4f12 = (word/signed word/dword/signed dword) 6434 +(word) PI_u4f12 +(const word) PI_u4f12#0 PI_u4f12 = (word/signed word/dword/signed dword) 12868 +(byte*) SCREEN +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) char_cursor +(byte*) char_cursor#1 char_cursor zp ZP_WORD:5 101.0 +(byte*) char_cursor#10 char_cursor zp ZP_WORD:5 1.3076923076923075 +(byte*) char_cursor#19 char_cursor zp ZP_WORD:5 40.875 +(byte*) char_cursor#27 char_cursor zp ZP_WORD:5 5.0 +(byte*) char_cursor#37 char_cursor zp ZP_WORD:5 2.0 +(byte*) char_cursor#41 char_cursor zp ZP_WORD:5 6.5 +(byte*) char_cursor#42 char_cursor zp ZP_WORD:5 8.25 +(byte*) char_cursor#44 char_cursor zp ZP_WORD:5 24.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:14 1.3333333333333333 +(word) div16u::return#2 return zp ZP_WORD:14 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:5 2.75 +(word) divr16u::dividend#2 dividend zp ZP_WORD:5 4.714285714285714 +(word) divr16u::divisor +(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:14 16.5 +(word) divr16u::quotient#2 quotient zp ZP_WORD:14 11.0 +(word) divr16u::quotient#3 quotient zp ZP_WORD:14 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 +(word) divr16u::rem#10 rem zp ZP_WORD:2 11.0 +(word) divr16u::rem#2 rem zp ZP_WORD:2 22.0 +(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:14 7.000000000000001 +(word) divr16u::return#2 return zp ZP_WORD:14 4.0 +(byte*) line_cursor +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@5 +(label) main::@7 +(label) main::@8 +(label) main::@return +(byte) main::i +(byte) main::i#1 reg byte x 16.5 +(byte) main::i#2 reg byte x 3.3000000000000003 +(signed byte) main::sb +(signed byte) main::sb#0 sb zp ZP_BYTE:4 6.6000000000000005 +(signed byte[120]) main::sintab2 +(const signed byte[120]) main::sintab2#0 sintab2 = { fill( 120, 0) } +(const string) main::str str = (string) " @" +(const string) main::str1 str1 = (string) " @" +(word) main::wavelength +(const word) main::wavelength#0 wavelength = (byte/signed byte/word/signed word/dword/signed dword) 120 +(word()) mul8u((byte) mul8u::a , (byte) mul8u::b) +(byte~) mul8u::$1 reg byte a 202.0 +(label) mul8u::@1 +(label) mul8u::@2 +(label) mul8u::@4 +(label) mul8u::@7 +(label) mul8u::@return +(byte) mul8u::a +(byte) mul8u::a#0 reg byte x 101.0 +(byte) mul8u::a#1 reg byte x 1.3333333333333333 +(byte) mul8u::a#2 reg byte x 67.66666666666666 +(byte) mul8u::b +(byte) mul8u::b#0 reg byte a 4.0 +(word) mul8u::mb +(word) mul8u::mb#0 mb zp ZP_WORD:12 4.0 +(word) mul8u::mb#1 mb zp ZP_WORD:12 202.0 +(word) mul8u::mb#2 mb zp ZP_WORD:12 43.57142857142858 +(word) mul8u::res +(word) mul8u::res#1 res zp ZP_WORD:9 202.0 +(word) mul8u::res#2 res zp ZP_WORD:9 50.83333333333333 +(word) mul8u::res#6 res zp ZP_WORD:9 101.0 +(word) mul8u::return +(word) mul8u::return#2 return zp ZP_WORD:9 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:9 4.0 +(word~) mulu8_sel::$1 $1 zp ZP_WORD:9 4.0 +(label) mulu8_sel::@2 +(label) mulu8_sel::@return +(byte) mulu8_sel::return +(byte) mulu8_sel::return#0 reg byte a 4.0 +(byte) mulu8_sel::return#1 reg byte a 4.0 +(byte) mulu8_sel::return#10 reg byte a 4.0 +(byte) mulu8_sel::return#11 reg byte a 4.0 +(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:11 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 +(byte) mulu8_sel::v1#2 reg byte x 4.0 +(byte) mulu8_sel::v1#3 reg byte x 2.0 +(byte) mulu8_sel::v1#4 reg byte x 2.0 +(byte) mulu8_sel::v1#5 reg byte x 12.0 +(byte) mulu8_sel::v2 +(byte) mulu8_sel::v2#0 reg byte y 4.0 +(byte) mulu8_sel::v2#1 reg byte y 4.0 +(byte) mulu8_sel::v2#3 reg byte y 4.0 +(byte) mulu8_sel::v2#4 reg byte y 4.0 +(byte) mulu8_sel::v2#5 reg byte y 5.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::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_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:4 4.0 +(signed byte) print_sbyte::b#1 b zp ZP_BYTE:4 4.25 +(signed byte) print_sbyte::b#3 b zp ZP_BYTE:4 1.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:2 202.0 +(byte*) print_str::str#3 str zp ZP_WORD:2 101.5 +(byte*) print_str::str#5 str zp ZP_WORD:2 2.0 +(word) rem16u +(signed byte()) sin8s((word) sin8s::x) +(word~) sin8s::$6 $6 zp ZP_WORD:9 4.0 +(label) sin8s::@1 +(label) sin8s::@10 +(label) sin8s::@11 +(label) sin8s::@12 +(label) sin8s::@15 +(label) sin8s::@2 +(label) sin8s::@3 +(label) sin8s::@4 +(label) sin8s::@5 +(label) sin8s::@6 +(label) sin8s::@8 +(label) sin8s::@9 +(label) sin8s::@return +(byte) sin8s::isUpper +(byte) sin8s::isUpper#2 isUpper zp ZP_BYTE:4 0.06060606060606061 +(signed byte) sin8s::return +(signed byte) sin8s::return#0 reg byte a 22.0 +(signed byte) sin8s::return#1 reg byte a 5.0 +(signed byte~) sin8s::return#5 reg byte a 4.0 +(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:18 0.3333333333333333 +(byte) sin8s::usinx#1 reg byte x 1.0 +(word) sin8s::x +(word) sin8s::x#0 x zp ZP_WORD:9 8.5 +(word) sin8s::x#1 x zp ZP_WORD:9 4.0 +(word) sin8s::x#2 x zp ZP_WORD:9 4.0 +(word) sin8s::x#4 x zp ZP_WORD:9 5.0 +(word) sin8s::x#6 x zp ZP_WORD:9 6.0 +(byte) sin8s::x1 +(byte) sin8s::x1#0 x1 zp ZP_BYTE:16 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:17 1.0 +(byte) sin8s::x3_6 +(byte) sin8s::x3_6#0 reg byte a 4.0 +(byte) sin8s::x4 +(byte) sin8s::x4#0 reg byte a 4.0 +(byte) sin8s::x5 +(byte) sin8s::x5#0 reg byte a 4.0 +(byte) sin8s::x5_128 +(byte) sin8s::x5_128#0 reg byte a 4.0 +(void()) sin8s_gen((signed byte*) sin8s_gen::sintab , (word) sin8s_gen::wavelength) +(signed byte~) sin8s_gen::$1 reg byte a 22.0 +(label) sin8s_gen::@1 +(label) sin8s_gen::@3 +(label) sin8s_gen::@4 +(label) sin8s_gen::@return +(word) sin8s_gen::i +(word) sin8s_gen::i#1 i zp ZP_WORD:7 16.5 +(word) sin8s_gen::i#2 i zp ZP_WORD:7 2.75 +(signed byte*) sin8s_gen::sintab +(signed byte*) sin8s_gen::sintab#0 sintab zp ZP_WORD:5 5.5 +(signed byte*) sin8s_gen::sintab#2 sintab zp ZP_WORD:5 5.5 +(word) sin8s_gen::step +(word) sin8s_gen::step#0 step zp ZP_WORD:14 1.1818181818181819 +(word) sin8s_gen::wavelength +(word) sin8s_gen::x +(word) sin8s_gen::x#1 x zp ZP_WORD:2 7.333333333333333 +(word) sin8s_gen::x#2 x zp ZP_WORD:2 4.714285714285714 + +reg byte x [ main::i#2 main::i#1 ] +zp ZP_WORD:2 [ print_str::str#3 print_str::str#5 print_str::str#0 print_cls::sc#2 print_cls::sc#1 sin8s_gen::x#2 sin8s_gen::x#1 divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +zp ZP_BYTE:4 [ print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#0 main::sb#0 sin8s::isUpper#2 ] +reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] +zp ZP_WORD:5 [ char_cursor#27 char_cursor#37 char_cursor#44 char_cursor#41 char_cursor#42 char_cursor#19 char_cursor#10 char_cursor#1 sin8s_gen::sintab#2 sin8s_gen::sintab#0 divr16u::dividend#2 divr16u::dividend#0 ] +zp ZP_WORD:7 [ sin8s_gen::i#2 sin8s_gen::i#1 ] +zp ZP_WORD:9 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$6 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] +reg byte a [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] +reg byte x [ mulu8_sel::v1#5 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 mulu8_sel::v1#1 mulu8_sel::v1#2 ] +reg byte y [ mulu8_sel::v2#5 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 mulu8_sel::v2#1 ] +zp ZP_BYTE:11 [ mulu8_sel::select#5 ] +reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] +zp ZP_WORD:12 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +zp ZP_WORD:14 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 div16u::return#2 sin8s_gen::step#0 div16u::return#0 ] +reg byte x [ divr16u::i#2 divr16u::i#1 ] +reg byte a [ print_byte::$0 ] +reg byte a [ print_byte::$2 ] +reg byte a [ sin8s::return#0 ] +reg byte a [ sin8s_gen::$1 ] +zp ZP_BYTE:16 [ 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:17 [ sin8s::x3#0 ] +reg byte a [ mulu8_sel::return#2 ] +reg byte a [ sin8s::x3_6#0 ] +zp ZP_BYTE:18 [ sin8s::usinx#0 ] +reg byte a [ mulu8_sel::return#10 ] +reg byte a [ sin8s::x4#0 ] +reg byte a [ mulu8_sel::return#11 ] +reg byte a [ sin8s::x5#0 ] +reg byte a [ sin8s::x5_128#0 ] +reg byte x [ sin8s::usinx#1 ] +reg byte a [ mul8u::b#0 ] +reg byte a [ mulu8_sel::return#12 ] +reg byte a [ mul8u::$1 ] +reg byte a [ divr16u::$1 ] +reg byte a [ divr16u::$2 ] + + +FINAL ASSEMBLER +Score: 14925 + +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .const PI2_u4f12 = $6488 + .const PI_u4f12 = $3244 + .const PI_HALF_u4f12 = $1922 + .label SCREEN = $400 + .label char_cursor = 5 +//SEG2 @begin +//SEG3 [1] phi from @begin to @29 [phi:@begin->@29] +//SEG4 @29 +//SEG5 [2] call main param-assignment [ ] ( ) +//SEG6 [4] phi from @29 to main [phi:@29->main] + jsr main +//SEG7 [3] phi from @29 to @end [phi:@29->@end] +//SEG8 @end +//SEG9 main +main: { + .label wavelength = $78 + .label sb = 4 + //SEG10 [5] call sin8s_gen param-assignment [ ] ( main:2 [ ] ) + //SEG11 [52] phi from main to sin8s_gen [phi:main->sin8s_gen] + jsr sin8s_gen + //SEG12 [6] phi from main to main::@5 [phi:main->main::@5] + //SEG13 main::@5 + //SEG14 [7] call print_cls param-assignment [ ] ( main:2 [ ] ) + //SEG15 [46] phi from main::@5 to print_cls [phi:main::@5->print_cls] + jsr print_cls + //SEG16 [8] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG17 [8] phi (byte*) char_cursor#42 = (const byte*) SCREEN#0 [phi:main::@5->main::@1#0] -- pbuz1=pbuc1 + lda #SCREEN + sta char_cursor+1 + //SEG18 [8] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@5->main::@1#1] -- vbuxx=vbuc1 + ldx #0 + //SEG19 [8] phi from main::@8 to main::@1 [phi:main::@8->main::@1] + //SEG20 [8] phi (byte*) char_cursor#42 = (byte*) char_cursor#19 [phi:main::@8->main::@1#0] -- register_copy + //SEG21 [8] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@8->main::@1#1] -- register_copy + //SEG22 main::@1 + b1: + //SEG23 [9] (signed byte) main::sb#0 ← *((const signed byte[120]) main::sintab2#0 + (byte) main::i#2) [ main::i#2 char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 char_cursor#42 main::sb#0 ] ) -- vbsz1=pbsc1_derefidx_vbuxx + lda sintab2,x + sta sb + //SEG24 [10] if((signed byte) main::sb#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::i#2 char_cursor#42 main::sb#0 ] ( main:2 [ main::i#2 char_cursor#42 main::sb#0 ] ) -- vbsz1_lt_0_then_la1 + bmi b2 + //SEG25 [11] phi from main::@1 to main::@3 [phi:main::@1->main::@3] + //SEG26 main::@3 + //SEG27 [12] call print_str param-assignment [ main::i#2 char_cursor#19 main::sb#0 ] ( main:2 [ main::i#2 char_cursor#19 main::sb#0 ] ) + //SEG28 [21] phi from main::@3 to print_str [phi:main::@3->print_str] + //SEG29 [21] phi (byte*) char_cursor#44 = (byte*) char_cursor#42 [phi:main::@3->print_str#0] -- register_copy + //SEG30 [21] phi (byte*) print_str::str#5 = (const string) main::str1 [phi:main::@3->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + //SEG31 [13] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG32 [13] phi (byte*) char_cursor#41 = (byte*) char_cursor#42 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG33 main::@2 + b2: + //SEG34 [14] (signed byte) print_sbyte::b#1 ← (signed byte) main::sb#0 [ main::i#2 char_cursor#41 print_sbyte::b#1 ] ( main:2 [ main::i#2 char_cursor#41 print_sbyte::b#1 ] ) + // (signed byte) print_sbyte::b#1 = (signed byte) main::sb#0 // register copy zp ZP_BYTE:4 + //SEG35 [15] call print_sbyte param-assignment [ main::i#2 char_cursor#10 ] ( main:2 [ main::i#2 char_cursor#10 ] ) + jsr print_sbyte + //SEG36 [16] phi from main::@2 to main::@7 [phi:main::@2->main::@7] + //SEG37 main::@7 + //SEG38 [17] call print_str param-assignment [ main::i#2 char_cursor#19 ] ( main:2 [ main::i#2 char_cursor#19 ] ) + //SEG39 [21] phi from main::@7 to print_str [phi:main::@7->print_str] + //SEG40 [21] phi (byte*) char_cursor#44 = (byte*) char_cursor#10 [phi:main::@7->print_str#0] -- register_copy + //SEG41 [21] phi (byte*) print_str::str#5 = (const string) main::str [phi:main::@7->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + //SEG42 main::@8 + //SEG43 [18] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 char_cursor#19 ] ( main:2 [ main::i#1 char_cursor#19 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG44 [19] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 120) goto main::@1 [ main::i#1 char_cursor#19 ] ( main:2 [ main::i#1 char_cursor#19 ] ) -- vbuxx_neq_vbuc1_then_la1 + cpx #$78 + bne b1 + //SEG45 main::@return + //SEG46 [20] return [ ] ( main:2 [ ] ) + rts + str: .text " @" + str1: .text " @" + sintab2: .fill $78, 0 +} +//SEG47 print_str +print_str: { + .label str = 2 + //SEG48 [22] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG49 [22] phi (byte*) char_cursor#19 = (byte*) char_cursor#44 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG50 [22] phi (byte*) print_str::str#3 = (byte*) print_str::str#5 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG51 print_str::@1 + b1: + //SEG52 [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ char_cursor#19 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 print_str::str#3 ] main:2::print_str:17 [ main::i#2 char_cursor#19 print_str::str#3 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 + ldy #0 + lda (str),y + cmp #'@' + bne b2 + //SEG53 print_str::@return + //SEG54 [24] return [ char_cursor#19 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 ] main:2::print_str:17 [ main::i#2 char_cursor#19 ] ) + rts + //SEG55 print_str::@2 + b2: + //SEG56 [25] *((byte*) char_cursor#19) ← *((byte*) print_str::str#3) [ char_cursor#19 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 char_cursor#19 print_str::str#3 ] main:2::print_str:17 [ main::i#2 char_cursor#19 print_str::str#3 ] ) -- _deref_pbuz1=_deref_pbuz2 + ldy #0 + lda (str),y + sta (char_cursor),y + //SEG57 [26] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#19 [ print_str::str#3 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 print_str::str#3 char_cursor#1 ] main:2::print_str:17 [ main::i#2 print_str::str#3 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + inc char_cursor + bne !+ + inc char_cursor+1 + !: + //SEG58 [27] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 print_str::str#0 char_cursor#1 ] main:2::print_str:17 [ main::i#2 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + inc str + bne !+ + inc str+1 + !: + jmp b1 +} +//SEG59 print_sbyte +print_sbyte: { + .label b = 4 + //SEG60 [28] if((signed byte) print_sbyte::b#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 [ char_cursor#41 print_sbyte::b#1 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#41 print_sbyte::b#1 ] ) -- vbsz1_ge_0_then_la1 + lda b + cmp #0 + bpl b1 + //SEG61 [29] phi from print_sbyte to print_sbyte::@2 [phi:print_sbyte->print_sbyte::@2] + //SEG62 print_sbyte::@2 + //SEG63 [30] call print_char param-assignment [ print_sbyte::b#1 char_cursor#10 ] ( main:2::print_sbyte:15 [ main::i#2 print_sbyte::b#1 char_cursor#10 ] ) + //SEG64 [42] phi from print_sbyte::@2 to print_char [phi:print_sbyte::@2->print_char] + //SEG65 [42] phi (byte*) char_cursor#27 = (byte*) char_cursor#41 [phi:print_sbyte::@2->print_char#0] -- register_copy + //SEG66 [42] phi (byte) print_char::ch#3 = (byte) '-' [phi:print_sbyte::@2->print_char#1] -- vbuaa=vbuc1 + lda #'-' + jsr print_char + //SEG67 print_sbyte::@4 + //SEG68 [31] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ char_cursor#10 print_sbyte::b#0 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#10 print_sbyte::b#0 ] ) -- vbsz1=_neg_vbsz1 + lda b + eor #$ff + clc + adc #1 + sta b + //SEG69 [32] phi from print_sbyte print_sbyte::@4 to print_sbyte::@1 [phi:print_sbyte/print_sbyte::@4->print_sbyte::@1] + //SEG70 [32] phi (byte*) char_cursor#37 = (byte*) char_cursor#41 [phi:print_sbyte/print_sbyte::@4->print_sbyte::@1#0] -- register_copy + //SEG71 [32] phi (signed byte) print_sbyte::b#3 = (signed byte) print_sbyte::b#1 [phi:print_sbyte/print_sbyte::@4->print_sbyte::@1#1] -- register_copy + //SEG72 print_sbyte::@1 + b1: + //SEG73 [33] call print_byte param-assignment [ char_cursor#10 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#10 ] ) + jsr print_byte + //SEG74 print_sbyte::@return + //SEG75 [34] return [ char_cursor#10 ] ( main:2::print_sbyte:15 [ main::i#2 char_cursor#10 ] ) + rts +} +//SEG76 print_byte +print_byte: { + //SEG77 [35] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_sbyte::b#3 char_cursor#37 print_byte::$0 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 char_cursor#37 print_byte::$0 ] ) -- vbuaa=vbuz1_ror_4 + lda print_sbyte.b + lsr + lsr + lsr + lsr + //SEG78 [36] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 char_cursor#37 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + tay + lda hextab,y + //SEG79 [37] call print_char param-assignment [ char_cursor#10 print_sbyte::b#3 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 print_sbyte::b#3 ] ) + //SEG80 [42] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG81 [42] phi (byte*) char_cursor#27 = (byte*) char_cursor#37 [phi:print_byte->print_char#0] -- register_copy + //SEG82 [42] phi (byte) print_char::ch#3 = (byte) print_char::ch#1 [phi:print_byte->print_char#1] -- register_copy + jsr print_char + //SEG83 print_byte::@1 + //SEG84 [38] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 print_byte::$2 ] ) -- vbuaa=vbuz1_band_vbuc1 + lda #$f + and print_sbyte.b + //SEG85 [39] (byte) print_char::ch#2 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + tay + lda hextab,y + //SEG86 [40] call print_char param-assignment [ char_cursor#10 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 ] ) + //SEG87 [42] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG88 [42] phi (byte*) char_cursor#27 = (byte*) char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG89 [42] phi (byte) print_char::ch#3 = (byte) print_char::ch#2 [phi:print_byte::@1->print_char#1] -- register_copy + jsr print_char + //SEG90 print_byte::@return + //SEG91 [41] return [ char_cursor#10 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 char_cursor#10 ] ) + rts + hextab: .text "0123456789abcdef" +} +//SEG92 print_char +print_char: { + //SEG93 [43] *((byte*) char_cursor#27) ← (byte) print_char::ch#3 [ char_cursor#27 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 char_cursor#27 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 char_cursor#27 ] ) -- _deref_pbuz1=vbuaa + ldy #0 + sta (char_cursor),y + //SEG94 [44] (byte*) char_cursor#10 ← ++ (byte*) char_cursor#27 [ char_cursor#10 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 char_cursor#10 ] ) -- pbuz1=_inc_pbuz1 + inc char_cursor + bne !+ + inc char_cursor+1 + !: + //SEG95 print_char::@return + //SEG96 [45] return [ char_cursor#10 ] ( main:2::print_sbyte:15::print_char:30 [ main::i#2 print_sbyte::b#1 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:37 [ main::i#2 print_sbyte::b#3 char_cursor#10 ] main:2::print_sbyte:15::print_byte:33::print_char:40 [ main::i#2 char_cursor#10 ] ) + rts +} +//SEG97 print_cls +print_cls: { + .label sc = 2 + //SEG98 [47] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG99 [47] phi (byte*) print_cls::sc#2 = (const byte*) SCREEN#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + lda #SCREEN + sta sc+1 + //SEG100 [47] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG101 [47] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG102 print_cls::@1 + b1: + //SEG103 [48] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:7 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 + lda #' ' + ldy #0 + sta (sc),y + //SEG104 [49] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 + inc sc + bne !+ + inc sc+1 + !: + //SEG105 [50] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:7 [ print_cls::sc#1 ] ) -- pbuz1_neq_pbuc1_then_la1 + lda sc+1 + cmp #>SCREEN+$3e8 + bne b1 + lda sc + cmp #div16u] + jsr div16u + //SEG111 [54] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8s_gen:5 [ div16u::return#2 ] ) + // (word) div16u::return#2 = (word) div16u::return#0 // register copy zp ZP_WORD:14 + //SEG112 sin8s_gen::@3 + //SEG113 [55] (word) sin8s_gen::step#0 ← (word) div16u::return#2 [ sin8s_gen::step#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 ] ) + // (word) sin8s_gen::step#0 = (word) div16u::return#2 // register copy zp ZP_WORD:14 + //SEG114 [56] phi from sin8s_gen::@3 to sin8s_gen::@1 [phi:sin8s_gen::@3->sin8s_gen::@1] + //SEG115 [56] phi (word) sin8s_gen::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#0] -- vwuz1=vbuc1 + lda #<0 + sta i + sta i+1 + //SEG116 [56] phi (signed byte*) sin8s_gen::sintab#2 = (const signed byte[120]) main::sintab2#0 [phi:sin8s_gen::@3->sin8s_gen::@1#1] -- pbsz1=pbsc1 + lda #main.sintab2 + sta sintab+1 + //SEG117 [56] phi (word) sin8s_gen::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s_gen::@3->sin8s_gen::@1#2] -- vwuz1=vbuc1 + lda #<0 + sta x + sta x+1 + //SEG118 [56] phi from sin8s_gen::@4 to sin8s_gen::@1 [phi:sin8s_gen::@4->sin8s_gen::@1] + //SEG119 [56] phi (word) sin8s_gen::i#2 = (word) sin8s_gen::i#1 [phi:sin8s_gen::@4->sin8s_gen::@1#0] -- register_copy + //SEG120 [56] phi (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#0 [phi:sin8s_gen::@4->sin8s_gen::@1#1] -- register_copy + //SEG121 [56] phi (word) sin8s_gen::x#2 = (word) sin8s_gen::x#1 [phi:sin8s_gen::@4->sin8s_gen::@1#2] -- register_copy + //SEG122 sin8s_gen::@1 + b1: + //SEG123 [57] (word) sin8s::x#0 ← (word) sin8s_gen::x#2 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#0 ] ) -- vwuz1=vwuz2 + lda x + sta sin8s.x + lda x+1 + sta sin8s.x+1 + //SEG124 [58] call sin8s param-assignment [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#1 ] ) + jsr sin8s + //SEG125 [59] (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#1 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#0 ] ) + // (signed byte) sin8s::return#0 = (signed byte) sin8s::return#1 // register copy reg byte a + //SEG126 sin8s_gen::@4 + //SEG127 [60] (signed byte~) sin8s_gen::$1 ← (signed byte) sin8s::return#0 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s_gen::$1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s_gen::$1 ] ) + // (signed byte~) sin8s_gen::$1 = (signed byte) sin8s::return#0 // register copy reg byte a + //SEG128 [61] *((signed byte*) sin8s_gen::sintab#2) ← (signed byte~) sin8s_gen::$1 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 ] ) -- _deref_pbsz1=vbsaa + ldy #0 + sta (sintab),y + //SEG129 [62] (signed byte*) sin8s_gen::sintab#0 ← ++ (signed byte*) sin8s_gen::sintab#2 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::i#2 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::i#2 sin8s_gen::sintab#0 ] ) -- pbsz1=_inc_pbsz1 + inc sintab + bne !+ + inc sintab+1 + !: + //SEG130 [63] (word) sin8s_gen::x#1 ← (word) sin8s_gen::x#2 + (word) sin8s_gen::step#0 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::i#2 sin8s_gen::x#1 sin8s_gen::sintab#0 ] ) -- vwuz1=vwuz1_plus_vwuz2 + lda x + clc + adc step + sta x + lda x+1 + adc step+1 + sta x+1 + //SEG131 [64] (word) sin8s_gen::i#1 ← ++ (word) sin8s_gen::i#2 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ) -- vwuz1=_inc_vwuz1 + inc i + bne !+ + inc i+1 + !: + //SEG132 [65] if((word) sin8s_gen::i#1<(const word) main::wavelength#0) goto sin8s_gen::@1 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ( main:2::sin8s_gen:5 [ sin8s_gen::step#0 sin8s_gen::x#1 sin8s_gen::sintab#0 sin8s_gen::i#1 ] ) -- vwuz1_lt_vwuc1_then_la1 + lda i+1 + cmp #>main.wavelength + bcc b1 + bne !+ + lda i + cmp #PI_u4f12 + bcc b4 + bne !+ + lda x + cmp #PI_u4f12 + sta x+1 + //SEG139 [69] phi from sin8s::@4 to sin8s::@1 [phi:sin8s::@4->sin8s::@1] + //SEG140 [69] phi (byte) sin8s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@4->sin8s::@1#0] -- vbuz1=vbuc1 + lda #1 + sta isUpper + //SEG141 [69] phi (word) sin8s::x#4 = (word) sin8s::x#1 [phi:sin8s::@4->sin8s::@1#1] -- register_copy + jmp b1 + //SEG142 [69] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + b4: + //SEG143 [69] phi (byte) sin8s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + lda #0 + sta isUpper + //SEG144 [69] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG145 sin8s::@1 + b1: + //SEG146 [70] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::x#4 sin8s::isUpper#2 ] ) -- vwuz1_lt_vwuc1_then_la1 + lda x+1 + cmp #>PI_HALF_u4f12 + bcc b2 + bne !+ + lda x + cmp #PI_u4f12 + sbc x+1 + sta x+1 + //SEG149 [72] phi from sin8s::@1 sin8s::@5 to sin8s::@2 [phi:sin8s::@1/sin8s::@5->sin8s::@2] + //SEG150 [72] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@5->sin8s::@2#0] -- register_copy + //SEG151 sin8s::@2 + b2: + //SEG152 [73] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin8s::isUpper#2 sin8s::$6 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::$6 ] ) -- vwuz1=vwuz1_rol_3 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + asl _6 + rol _6+1 + //SEG153 [74] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 [ sin8s::isUpper#2 sin8s::x1#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 ] ) -- vbuz1=_hi_vwuz2 + lda _6+1 + sta x1 + //SEG154 [75] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 ] ) -- vbuxx=vbuz1 + tax + //SEG155 [76] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 mulu8_sel::v2#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#0 mulu8_sel::v2#0 ] ) -- vbuyy=vbuz1 + tay + //SEG156 [77] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ) + //SEG157 [107] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG158 [107] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 + lda #0 + sta mulu8_sel.select + //SEG159 [107] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG160 [107] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy + jsr mulu8_sel + //SEG161 [78] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#0 ] ) + // (byte) mulu8_sel::return#0 = (byte) mulu8_sel::return#12 // register copy reg byte a + //SEG162 sin8s::@8 + //SEG163 [79] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x2#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x2#0 ] ) + // (byte) sin8s::x2#0 = (byte) mulu8_sel::return#0 // register copy reg byte a + //SEG164 [80] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 ] ) -- vbuxx=vbuaa + tax + //SEG165 [81] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 mulu8_sel::v2#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v1#1 mulu8_sel::v2#1 ] ) -- vbuyy=vbuz1 + ldy x1 + //SEG166 [82] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] ) + //SEG167 [107] phi from sin8s::@8 to mulu8_sel [phi:sin8s::@8->mulu8_sel] + //SEG168 [107] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@8->mulu8_sel#0] -- vbuz1=vbuc1 + lda #1 + sta mulu8_sel.select + //SEG169 [107] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@8->mulu8_sel#1] -- register_copy + //SEG170 [107] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@8->mulu8_sel#2] -- register_copy + jsr mulu8_sel + //SEG171 [83] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#1 ] ) + // (byte) mulu8_sel::return#1 = (byte) mulu8_sel::return#12 // register copy reg byte a + //SEG172 sin8s::@9 + //SEG173 [84] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 ] ) -- vbuz1=vbuaa + sta x3 + //SEG174 [85] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v1#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v1#2 ] ) -- vbuxx=vbuz1 + tax + //SEG175 [86] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::x3#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::x3#0 ] ) + //SEG176 [107] phi from sin8s::@9 to mulu8_sel [phi:sin8s::@9->mulu8_sel] + //SEG177 [107] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@9->mulu8_sel#0] -- vbuz1=vbuc1 + lda #1 + sta mulu8_sel.select + //SEG178 [107] phi (byte) mulu8_sel::v2#5 = (word/signed word/dword/signed dword) 256/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin8s::@9->mulu8_sel#1] -- vbuyy=vbuc1 + ldy #$100/6 + //SEG179 [107] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@9->mulu8_sel#2] -- register_copy + jsr mulu8_sel + //SEG180 [87] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#2 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#2 ] ) + // (byte) mulu8_sel::return#2 = (byte) mulu8_sel::return#12 // register copy reg byte a + //SEG181 sin8s::@10 + //SEG182 [88] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::x3_6#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::x3_6#0 ] ) + // (byte) sin8s::x3_6#0 = (byte) mulu8_sel::return#2 // register copy reg byte a + //SEG183 [89] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) -- vbuz1=vbuz2_minus_vbuaa + eor #$ff + sec + adc x1 + sta usinx + //SEG184 [90] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 ] ) -- vbuxx=vbuz1 + ldx x3 + //SEG185 [91] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 mulu8_sel::v2#3 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#3 mulu8_sel::v2#3 ] ) -- vbuyy=vbuz1 + ldy x1 + //SEG186 [92] call mulu8_sel param-assignment [ sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::usinx#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 sin8s::usinx#0 ] ) + //SEG187 [107] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG188 [107] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 + lda #0 + sta mulu8_sel.select + //SEG189 [107] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@10->mulu8_sel#1] -- register_copy + //SEG190 [107] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@10->mulu8_sel#2] -- register_copy + jsr mulu8_sel + //SEG191 [93] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#10 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#10 ] ) + // (byte) mulu8_sel::return#10 = (byte) mulu8_sel::return#12 // register copy reg byte a + //SEG192 sin8s::@11 + //SEG193 [94] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 sin8s::x4#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 sin8s::x4#0 ] ) + // (byte) sin8s::x4#0 = (byte) mulu8_sel::return#10 // register copy reg byte a + //SEG194 [95] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 [ sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#4 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v1#4 ] ) -- vbuxx=vbuaa + tax + //SEG195 [96] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 [ sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v1#4 mulu8_sel::v2#4 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v1#4 mulu8_sel::v2#4 ] ) -- vbuyy=vbuz1 + ldy x1 + //SEG196 [97] call mulu8_sel param-assignment [ sin8s::isUpper#2 mulu8_sel::return#12 sin8s::usinx#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 mulu8_sel::return#12 sin8s::usinx#0 ] ) + //SEG197 [107] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG198 [107] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 + lda #0 + sta mulu8_sel.select + //SEG199 [107] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@11->mulu8_sel#1] -- register_copy + //SEG200 [107] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + jsr mulu8_sel + //SEG201 [98] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 [ sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#11 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#11 ] ) + // (byte) mulu8_sel::return#11 = (byte) mulu8_sel::return#12 // register copy reg byte a + //SEG202 sin8s::@12 + //SEG203 [99] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 [ sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5#0 ] ) + // (byte) sin8s::x5#0 = (byte) mulu8_sel::return#11 // register copy reg byte a + //SEG204 [100] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 sin8s::x5_128#0 ] ) -- vbuaa=vbuaa_ror_4 + lsr + lsr + lsr + lsr + //SEG205 [101] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#2 sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#1 ] ) -- vbuxx=vbuz1_plus_vbuaa + clc + adc usinx + tax + //SEG206 [102] if((byte) sin8s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@15 [ sin8s::usinx#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::usinx#1 ] ) -- vbuz1_eq_0_then_la1 + lda isUpper + beq b15 + //SEG207 sin8s::@6 + //SEG208 [103] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#1 [ sin8s::sinx#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::sinx#1 ] ) -- vbsaa=_neg_vbsxx + txa + eor #$ff + clc + adc #1 + //SEG209 [104] phi from sin8s::@15 sin8s::@6 to sin8s::@3 [phi:sin8s::@15/sin8s::@6->sin8s::@3] + //SEG210 [104] phi (signed byte) sin8s::return#1 = (signed byte~) sin8s::return#5 [phi:sin8s::@15/sin8s::@6->sin8s::@3#0] -- register_copy + //SEG211 sin8s::@3 + b3: + //SEG212 sin8s::@return + //SEG213 [105] return [ sin8s::return#1 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#1 ] ) + rts + //SEG214 sin8s::@15 + b15: + //SEG215 [106] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#1 [ sin8s::return#5 ] ( main:2::sin8s_gen:5::sin8s:58 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::return#5 ] ) -- vbsaa=vbsxx + txa + jmp b3 +} +//SEG216 mulu8_sel +mulu8_sel: { + .label _0 = 9 + .label _1 = 9 + .label select = $b + //SEG217 [108] (byte) mul8u::a#1 ← (byte) mulu8_sel::v1#5 [ mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::v2#5 mulu8_sel::select#5 mul8u::a#1 ] ) + // (byte) mul8u::a#1 = (byte) mulu8_sel::v1#5 // register copy reg byte x + //SEG218 [109] (byte) mul8u::b#0 ← (byte) mulu8_sel::v2#5 [ mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::b#0 ] ) -- vbuaa=vbuyy + tya + //SEG219 [110] call mul8u param-assignment [ mulu8_sel::select#5 mul8u::res#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] ) + jsr mul8u + //SEG220 [111] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#2 ] ) + // (word) mul8u::return#2 = (word) mul8u::res#2 // register copy zp ZP_WORD:9 + //SEG221 mulu8_sel::@2 + //SEG222 [112] (word~) mulu8_sel::$0 ← (word) mul8u::return#2 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) + // (word~) mulu8_sel::$0 = (word) mul8u::return#2 // register copy zp ZP_WORD:9 + //SEG223 [113] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::$1 ] ) -- vwuz1=vwuz1_rol_vbuz2 + ldy select + beq !e+ + !: + asl _1 + rol _1+1 + dey + bne !- + !e: + //SEG224 [114] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#12 ] ) -- vbuaa=_hi_vwuz1 + lda _1+1 + //SEG225 mulu8_sel::@return + //SEG226 [115] return [ mulu8_sel::return#12 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::return#12 ] ) + rts +} +//SEG227 mul8u +mul8u: { + .label mb = $c + .label res = 9 + .label return = 9 + //SEG228 [116] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#0 [ mul8u::a#1 mul8u::mb#0 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#1 mul8u::mb#0 ] ) -- vwuz1=_word_vbuaa + sta mb + lda #0 + sta mb+1 + //SEG229 [117] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG230 [117] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG231 [117] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + sta res + sta res+1 + //SEG232 [117] phi (byte) mul8u::a#2 = (byte) mul8u::a#1 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG233 mul8u::@1 + b1: + //SEG234 [118] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ) -- vbuxx_neq_0_then_la1 + cpx #0 + bne b2 + //SEG235 mul8u::@return + //SEG236 [119] return [ mul8u::res#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 ] ) + rts + //SEG237 mul8u::@2 + b2: + //SEG238 [120] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 mul8u::$1 ] ) -- vbuaa=vbuxx_band_vbuc1 + txa + and #1 + //SEG239 [121] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 [ mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#2 mul8u::mb#2 ] ) -- vbuaa_eq_0_then_la1 + cmp #0 + beq b4 + //SEG240 mul8u::@7 + //SEG241 [122] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) -- vwuz1=vwuz1_plus_vwuz2 + lda res + clc + adc mb + sta res + lda res+1 + adc mb+1 + sta res+1 + //SEG242 [123] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG243 [123] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG244 mul8u::@4 + b4: + //SEG245 [124] (byte) mul8u::a#0 ← (byte) mul8u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::mb#2 mul8u::a#0 mul8u::res#6 ] ) -- vbuxx=vbuxx_ror_1 + txa + lsr + tax + //SEG246 [125] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] ( main:2::sin8s_gen:5::sin8s:58::mulu8_sel:77::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:82::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:86::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:92::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] main:2::sin8s_gen:5::sin8s:58::mulu8_sel:97::mul8u:110 [ sin8s_gen::step#0 sin8s_gen::x#2 sin8s_gen::sintab#2 sin8s_gen::i#2 sin8s::isUpper#2 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#0 mul8u::res#6 mul8u::mb#1 ] ) -- vwuz1=vwuz1_rol_1 + asl mb + rol mb+1 + //SEG247 [117] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG248 [117] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG249 [117] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG250 [117] phi (byte) mul8u::a#2 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + jmp b1 +} +//SEG251 div16u +div16u: { + .label return = $e + //SEG252 [127] call divr16u param-assignment [ divr16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53 [ divr16u::return#0 ] ) + //SEG253 [131] phi from div16u to divr16u [phi:div16u->divr16u] + jsr divr16u + //SEG254 [128] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8s_gen:5::div16u:53 [ divr16u::return#2 ] ) + // (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:14 + //SEG255 div16u::@2 + //SEG256 [129] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53 [ div16u::return#0 ] ) + // (word) div16u::return#0 = (word) divr16u::return#2 // register copy zp ZP_WORD:14 + //SEG257 div16u::@return + //SEG258 [130] return [ div16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53 [ div16u::return#0 ] ) + rts +} +//SEG259 divr16u +divr16u: { + .label rem = 2 + .label dividend = 5 + .label quotient = $e + .label return = $e + //SEG260 [132] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG261 [132] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + ldx #0 + //SEG262 [132] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + txa + sta quotient + sta quotient+1 + //SEG263 [132] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + lda #PI2_u4f12 + sta dividend+1 + //SEG264 [132] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + txa + sta rem + sta rem+1 + //SEG265 [132] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG266 [132] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG267 [132] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG268 [132] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG269 [132] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG270 divr16u::@1 + b1: + //SEG271 [133] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) -- vwuz1=vwuz1_rol_1 + asl rem + rol rem+1 + //SEG272 [134] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) -- vbuaa=_hi_vwuz1 + lda dividend+1 + //SEG273 [135] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) -- vbuaa=vbuaa_band_vbuc1 + and #$80 + //SEG274 [136] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) -- vbuaa_eq_0_then_la1 + cmp #0 + beq b2 + //SEG275 divr16u::@4 + //SEG276 [137] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) -- vwuz1=vwuz1_bor_vbuc1 + lda #1 + ora rem + sta rem + //SEG277 [138] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG278 [138] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG279 divr16u::@2 + b2: + //SEG280 [139] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 ] ) -- vwuz1=vwuz1_rol_1 + asl dividend + rol dividend+1 + //SEG281 [140] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) -- vwuz1=vwuz1_rol_1 + asl quotient + rol quotient+1 + //SEG282 [141] if((word) divr16u::rem#5<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) -- vwuz1_lt_vwuc1_then_la1 + lda rem+1 + cmp #>main.wavelength + bcc b3 + bne !+ + lda rem + cmp #main.wavelength + sta rem+1 + //SEG286 [144] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG287 [144] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG288 [144] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG289 divr16u::@3 + b3: + //SEG290 [145] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG291 [146] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + cpx #$10 + bne b1 + //SEG292 divr16u::@return + //SEG293 [147] return [ divr16u::return#0 ] ( main:2::sin8s_gen:5::div16u:53::divr16u:127 [ divr16u::return#0 ] ) + rts +} + diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.sym b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.sym new file mode 100644 index 000000000..83a0ed3da --- /dev/null +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.sym @@ -0,0 +1,269 @@ +(label) @29 +(label) @begin +(label) @end +(word) PI2_u4f12 +(const word) PI2_u4f12#0 PI2_u4f12 = (word/signed word/dword/signed dword) 25736 +(word) PI_HALF_u4f12 +(const word) PI_HALF_u4f12#0 PI_HALF_u4f12 = (word/signed word/dword/signed dword) 6434 +(word) PI_u4f12 +(const word) PI_u4f12#0 PI_u4f12 = (word/signed word/dword/signed dword) 12868 +(byte*) SCREEN +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) char_cursor +(byte*) char_cursor#1 char_cursor zp ZP_WORD:5 101.0 +(byte*) char_cursor#10 char_cursor zp ZP_WORD:5 1.3076923076923075 +(byte*) char_cursor#19 char_cursor zp ZP_WORD:5 40.875 +(byte*) char_cursor#27 char_cursor zp ZP_WORD:5 5.0 +(byte*) char_cursor#37 char_cursor zp ZP_WORD:5 2.0 +(byte*) char_cursor#41 char_cursor zp ZP_WORD:5 6.5 +(byte*) char_cursor#42 char_cursor zp ZP_WORD:5 8.25 +(byte*) char_cursor#44 char_cursor zp ZP_WORD:5 24.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:14 1.3333333333333333 +(word) div16u::return#2 return zp ZP_WORD:14 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:5 2.75 +(word) divr16u::dividend#2 dividend zp ZP_WORD:5 4.714285714285714 +(word) divr16u::divisor +(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:14 16.5 +(word) divr16u::quotient#2 quotient zp ZP_WORD:14 11.0 +(word) divr16u::quotient#3 quotient zp ZP_WORD:14 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 +(word) divr16u::rem#10 rem zp ZP_WORD:2 11.0 +(word) divr16u::rem#2 rem zp ZP_WORD:2 22.0 +(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:14 7.000000000000001 +(word) divr16u::return#2 return zp ZP_WORD:14 4.0 +(byte*) line_cursor +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@5 +(label) main::@7 +(label) main::@8 +(label) main::@return +(byte) main::i +(byte) main::i#1 reg byte x 16.5 +(byte) main::i#2 reg byte x 3.3000000000000003 +(signed byte) main::sb +(signed byte) main::sb#0 sb zp ZP_BYTE:4 6.6000000000000005 +(signed byte[120]) main::sintab2 +(const signed byte[120]) main::sintab2#0 sintab2 = { fill( 120, 0) } +(const string) main::str str = (string) " @" +(const string) main::str1 str1 = (string) " @" +(word) main::wavelength +(const word) main::wavelength#0 wavelength = (byte/signed byte/word/signed word/dword/signed dword) 120 +(word()) mul8u((byte) mul8u::a , (byte) mul8u::b) +(byte~) mul8u::$1 reg byte a 202.0 +(label) mul8u::@1 +(label) mul8u::@2 +(label) mul8u::@4 +(label) mul8u::@7 +(label) mul8u::@return +(byte) mul8u::a +(byte) mul8u::a#0 reg byte x 101.0 +(byte) mul8u::a#1 reg byte x 1.3333333333333333 +(byte) mul8u::a#2 reg byte x 67.66666666666666 +(byte) mul8u::b +(byte) mul8u::b#0 reg byte a 4.0 +(word) mul8u::mb +(word) mul8u::mb#0 mb zp ZP_WORD:12 4.0 +(word) mul8u::mb#1 mb zp ZP_WORD:12 202.0 +(word) mul8u::mb#2 mb zp ZP_WORD:12 43.57142857142858 +(word) mul8u::res +(word) mul8u::res#1 res zp ZP_WORD:9 202.0 +(word) mul8u::res#2 res zp ZP_WORD:9 50.83333333333333 +(word) mul8u::res#6 res zp ZP_WORD:9 101.0 +(word) mul8u::return +(word) mul8u::return#2 return zp ZP_WORD:9 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:9 4.0 +(word~) mulu8_sel::$1 $1 zp ZP_WORD:9 4.0 +(label) mulu8_sel::@2 +(label) mulu8_sel::@return +(byte) mulu8_sel::return +(byte) mulu8_sel::return#0 reg byte a 4.0 +(byte) mulu8_sel::return#1 reg byte a 4.0 +(byte) mulu8_sel::return#10 reg byte a 4.0 +(byte) mulu8_sel::return#11 reg byte a 4.0 +(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:11 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 +(byte) mulu8_sel::v1#2 reg byte x 4.0 +(byte) mulu8_sel::v1#3 reg byte x 2.0 +(byte) mulu8_sel::v1#4 reg byte x 2.0 +(byte) mulu8_sel::v1#5 reg byte x 12.0 +(byte) mulu8_sel::v2 +(byte) mulu8_sel::v2#0 reg byte y 4.0 +(byte) mulu8_sel::v2#1 reg byte y 4.0 +(byte) mulu8_sel::v2#3 reg byte y 4.0 +(byte) mulu8_sel::v2#4 reg byte y 4.0 +(byte) mulu8_sel::v2#5 reg byte y 5.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::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_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:4 4.0 +(signed byte) print_sbyte::b#1 b zp ZP_BYTE:4 4.25 +(signed byte) print_sbyte::b#3 b zp ZP_BYTE:4 1.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:2 202.0 +(byte*) print_str::str#3 str zp ZP_WORD:2 101.5 +(byte*) print_str::str#5 str zp ZP_WORD:2 2.0 +(word) rem16u +(signed byte()) sin8s((word) sin8s::x) +(word~) sin8s::$6 $6 zp ZP_WORD:9 4.0 +(label) sin8s::@1 +(label) sin8s::@10 +(label) sin8s::@11 +(label) sin8s::@12 +(label) sin8s::@15 +(label) sin8s::@2 +(label) sin8s::@3 +(label) sin8s::@4 +(label) sin8s::@5 +(label) sin8s::@6 +(label) sin8s::@8 +(label) sin8s::@9 +(label) sin8s::@return +(byte) sin8s::isUpper +(byte) sin8s::isUpper#2 isUpper zp ZP_BYTE:4 0.06060606060606061 +(signed byte) sin8s::return +(signed byte) sin8s::return#0 reg byte a 22.0 +(signed byte) sin8s::return#1 reg byte a 5.0 +(signed byte~) sin8s::return#5 reg byte a 4.0 +(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:18 0.3333333333333333 +(byte) sin8s::usinx#1 reg byte x 1.0 +(word) sin8s::x +(word) sin8s::x#0 x zp ZP_WORD:9 8.5 +(word) sin8s::x#1 x zp ZP_WORD:9 4.0 +(word) sin8s::x#2 x zp ZP_WORD:9 4.0 +(word) sin8s::x#4 x zp ZP_WORD:9 5.0 +(word) sin8s::x#6 x zp ZP_WORD:9 6.0 +(byte) sin8s::x1 +(byte) sin8s::x1#0 x1 zp ZP_BYTE:16 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:17 1.0 +(byte) sin8s::x3_6 +(byte) sin8s::x3_6#0 reg byte a 4.0 +(byte) sin8s::x4 +(byte) sin8s::x4#0 reg byte a 4.0 +(byte) sin8s::x5 +(byte) sin8s::x5#0 reg byte a 4.0 +(byte) sin8s::x5_128 +(byte) sin8s::x5_128#0 reg byte a 4.0 +(void()) sin8s_gen((signed byte*) sin8s_gen::sintab , (word) sin8s_gen::wavelength) +(signed byte~) sin8s_gen::$1 reg byte a 22.0 +(label) sin8s_gen::@1 +(label) sin8s_gen::@3 +(label) sin8s_gen::@4 +(label) sin8s_gen::@return +(word) sin8s_gen::i +(word) sin8s_gen::i#1 i zp ZP_WORD:7 16.5 +(word) sin8s_gen::i#2 i zp ZP_WORD:7 2.75 +(signed byte*) sin8s_gen::sintab +(signed byte*) sin8s_gen::sintab#0 sintab zp ZP_WORD:5 5.5 +(signed byte*) sin8s_gen::sintab#2 sintab zp ZP_WORD:5 5.5 +(word) sin8s_gen::step +(word) sin8s_gen::step#0 step zp ZP_WORD:14 1.1818181818181819 +(word) sin8s_gen::wavelength +(word) sin8s_gen::x +(word) sin8s_gen::x#1 x zp ZP_WORD:2 7.333333333333333 +(word) sin8s_gen::x#2 x zp ZP_WORD:2 4.714285714285714 + +reg byte x [ main::i#2 main::i#1 ] +zp ZP_WORD:2 [ print_str::str#3 print_str::str#5 print_str::str#0 print_cls::sc#2 print_cls::sc#1 sin8s_gen::x#2 sin8s_gen::x#1 divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +zp ZP_BYTE:4 [ print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#0 main::sb#0 sin8s::isUpper#2 ] +reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] +zp ZP_WORD:5 [ char_cursor#27 char_cursor#37 char_cursor#44 char_cursor#41 char_cursor#42 char_cursor#19 char_cursor#10 char_cursor#1 sin8s_gen::sintab#2 sin8s_gen::sintab#0 divr16u::dividend#2 divr16u::dividend#0 ] +zp ZP_WORD:7 [ sin8s_gen::i#2 sin8s_gen::i#1 ] +zp ZP_WORD:9 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$6 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] +reg byte a [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] +reg byte x [ mulu8_sel::v1#5 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 mulu8_sel::v1#1 mulu8_sel::v1#2 ] +reg byte y [ mulu8_sel::v2#5 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 mulu8_sel::v2#1 ] +zp ZP_BYTE:11 [ mulu8_sel::select#5 ] +reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] +zp ZP_WORD:12 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] +zp ZP_WORD:14 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 div16u::return#2 sin8s_gen::step#0 div16u::return#0 ] +reg byte x [ divr16u::i#2 divr16u::i#1 ] +reg byte a [ print_byte::$0 ] +reg byte a [ print_byte::$2 ] +reg byte a [ sin8s::return#0 ] +reg byte a [ sin8s_gen::$1 ] +zp ZP_BYTE:16 [ 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:17 [ sin8s::x3#0 ] +reg byte a [ mulu8_sel::return#2 ] +reg byte a [ sin8s::x3_6#0 ] +zp ZP_BYTE:18 [ sin8s::usinx#0 ] +reg byte a [ mulu8_sel::return#10 ] +reg byte a [ sin8s::x4#0 ] +reg byte a [ mulu8_sel::return#11 ] +reg byte a [ sin8s::x5#0 ] +reg byte a [ sin8s::x5_128#0 ] +reg byte x [ sin8s::usinx#1 ] +reg byte a [ mul8u::b#0 ] +reg byte a [ mulu8_sel::return#12 ] +reg byte a [ mul8u::$1 ] +reg byte a [ divr16u::$1 ] +reg byte a [ divr16u::$2 ]