@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] (byte) frame_cnt#0 ← (byte) 1
  to:@2
@2: scope:[]  from @1
  [2] phi()
  [3] call main 
  to:@end
@end: scope:[]  from @2
  [4] phi()
main: scope:[main]  from @2
  [5] phi()
  [6] call sin16s_gen2 
  to:main::@9
main::@9: scope:[main]  from main
  [7] phi()
  [8] call bitmap_init 
  to:main::@10
main::@10: scope:[main]  from main::@9
  [9] phi()
  [10] call bitmap_clear 
  to:main::@11
main::@11: scope:[main]  from main::@10
  [11] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3
  to:main::toD0181
main::toD0181: scope:[main]  from main::@11
  [12] phi()
  to:main::@8
main::@8: scope:[main]  from main::toD0181
  [13] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0
  [14] call init_irq 
  to:main::@1
main::@1: scope:[main]  from main::@5 main::@8
  [15] (byte) main::r_add#10 ← phi( main::@8/(byte) $20 main::@5/(byte) main::r_add#12 )
  [15] (word) main::idx_y#3 ← phi( main::@8/(byte) $80 main::@5/(word) main::idx_y#10 )
  [15] (signed word) main::r#10 ← phi( main::@8/(signed byte) 0 main::@5/(signed word) main::r#1 )
  [15] (word) main::idx_x#11 ← phi( main::@8/(byte) 0 main::@5/(word) main::idx_x#10 )
  to:main::@2
main::@2: scope:[main]  from main::@1
  [16] (word~) main::$32 ← (word) main::idx_x#11 << (byte) 1
  [17] (signed word*~) main::$34 ← (const signed word[$200]) SINUS#0 + (word~) main::$32
  [18] (signed word) main::cos_x#0 ← *((signed word*~) main::$34)
  [19] (signed word) mul16s::a#1 ← (signed word) main::r#10
  [20] (signed word) mul16s::b#1 ← (signed word) main::cos_x#0
  [21] call mul16s 
  [22] (signed dword) mul16s::return#3 ← (signed dword) mul16s::return#0
  to:main::@12
main::@12: scope:[main]  from main::@2
  [23] (signed dword) main::xpos#0 ← (signed dword) mul16s::return#3
  [24] (word~) main::$10 ← > (signed dword) main::xpos#0
  [25] (signed word~) main::$11 ← (signed word)(word~) main::$10 >> (signed byte) 2
  [26] (signed word) main::x#0 ← (signed word) $a0 + (signed word~) main::$11
  [27] (word~) main::$33 ← (word) main::idx_y#3 << (byte) 1
  [28] (signed word*~) main::$35 ← (const signed word[$200]) SINUS#0 + (word~) main::$33
  [29] (signed word) main::sin_y#0 ← *((signed word*~) main::$35)
  [30] (signed word) mul16s::a#2 ← (signed word) main::r#10
  [31] (signed word) mul16s::b#2 ← (signed word) main::sin_y#0
  [32] call mul16s 
  [33] (signed dword) mul16s::return#4 ← (signed dword) mul16s::return#0
  to:main::@13
main::@13: scope:[main]  from main::@12
  [34] (signed dword) main::ypos#0 ← (signed dword) mul16s::return#4
  [35] (word~) main::$16 ← > (signed dword) main::ypos#0
  [36] (signed word~) main::$17 ← (signed word)(word~) main::$16 >> (signed byte) 2
  [37] (signed word) main::y#0 ← (signed byte) $64 + (signed word~) main::$17
  [38] (byte) bitmap_plot::y#0 ← (byte)(word)(signed word) main::y#0
  [39] (word) bitmap_plot::x#0 ← (word)(signed word) main::x#0
  [40] call bitmap_plot 
  to:main::@14
main::@14: scope:[main]  from main::@13
  [41] *((const byte[$100]) plots_per_frame#0 + (byte) frame_cnt#0) ← ++ *((const byte[$100]) plots_per_frame#0 + (byte) frame_cnt#0)
  [42] (word) main::idx_x#1 ← (word) main::idx_x#11 + (byte) main::r_add#10
  [43] if((word) main::idx_x#1<(word) $200) goto main::@16
  to:main::@3
main::@16: scope:[main]  from main::@14
  [44] phi()
  to:main::@3
main::@3: scope:[main]  from main::@14 main::@16
  [45] (word) main::idx_x#10 ← phi( main::@14/(byte) 0 main::@16/(word) main::idx_x#1 )
  [46] (word) main::idx_y#1 ← (word) main::idx_y#3 + (byte) main::r_add#10
  [47] if((word) main::idx_y#1<(word) $200) goto main::@17
  to:main::@4
main::@17: scope:[main]  from main::@3
  [48] phi()
  to:main::@4
main::@4: scope:[main]  from main::@17 main::@3
  [49] (word) main::idx_y#10 ← phi( main::@3/(byte) 0 main::@17/(word) main::idx_y#1 )
  [50] (signed word) main::r#1 ← (signed word) main::r#10 + (byte) main::r_add#10
  [51] if((word) main::idx_x#10!=(byte) 0) goto main::@5
  to:main::@15
main::@15: scope:[main]  from main::@4
  [52] if((byte) main::r_add#10==(byte) 1) goto main::@5
  to:main::@6
main::@6: scope:[main]  from main::@15
  [53] (byte) main::r_add#1 ← (byte) main::r_add#10 >> (byte) 1
  to:main::@5
main::@5: scope:[main]  from main::@15 main::@4 main::@6
  [54] (byte) main::r_add#12 ← phi( main::@6/(byte) main::r_add#1 main::@4/(byte) main::r_add#10 )
  [55] if((signed word) main::r#1>=(signed word)(number) $200*(number) $c+(number) $100) goto main::@7
  to:main::@1
main::@7: scope:[main]  from main::@5 main::@7
  [56] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0)
  to:main::@7
bitmap_plot: scope:[bitmap_plot]  from main::@13
  [57] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0)
  [58] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8
  [59] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1
  [60] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0
  [61] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2)
  to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot]  from bitmap_plot
  [62] return 
  to:@return
mul16s: scope:[mul16s]  from main::@12 main::@2 sin16s_gen2::@4
  [63] (signed word) mul16s::b#3 ← phi( main::@2/(signed word) mul16s::b#1 main::@12/(signed word) mul16s::b#2 sin16s_gen2::@4/(const signed word) sin16s_gen2::ampl#0 )
  [63] (signed word) mul16s::a#3 ← phi( main::@2/(signed word) mul16s::a#1 main::@12/(signed word) mul16s::a#2 sin16s_gen2::@4/(signed word) mul16s::a#0 )
  [64] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#3
  [65] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#3
  [66] call mul16u 
  [67] (dword) mul16u::return#2 ← (dword) mul16u::res#2
  to:mul16s::@5
mul16s::@5: scope:[mul16s]  from mul16s
  [68] (dword) mul16s::m#0 ← (dword) mul16u::return#2
  [69] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1
  to:mul16s::@3
mul16s::@3: scope:[mul16s]  from mul16s::@5
  [70] (word~) mul16s::$9 ← > (dword) mul16s::m#0
  [71] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#3
  [72] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
  to:mul16s::@1
mul16s::@1: scope:[mul16s]  from mul16s::@3 mul16s::@5
  [73] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@5/(dword) mul16s::m#0 )
  [74] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2
  to:mul16s::@4
mul16s::@4: scope:[mul16s]  from mul16s::@1
  [75] (word~) mul16s::$13 ← > (dword) mul16s::m#5
  [76] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#3
  [77] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17
  to:mul16s::@2
mul16s::@2: scope:[mul16s]  from mul16s::@1 mul16s::@4
  [78] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 )
  [79] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4
  to:mul16s::@return
mul16s::@return: scope:[mul16s]  from mul16s::@2
  [80] return 
  to:@return
mul16u: scope:[mul16u]  from mul16s mulu16_sel
  [81] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mulu16_sel/(word) mul16u::a#2 )
  [81] (dword) mul16u::mb#0 ← phi( mul16s/(word) mul16u::b#0 mulu16_sel/(word) mul16u::b#1 )
  to:mul16u::@1
mul16u::@1: scope:[mul16u]  from mul16u mul16u::@3
  [82] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 )
  [82] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 )
  [82] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 )
  [83] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2
  to:mul16u::@return
mul16u::@return: scope:[mul16u]  from mul16u::@1
  [84] return 
  to:@return
mul16u::@2: scope:[mul16u]  from mul16u::@1
  [85] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1
  [86] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3
  to:mul16u::@4
mul16u::@4: scope:[mul16u]  from mul16u::@2
  [87] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
  to:mul16u::@3
mul16u::@3: scope:[mul16u]  from mul16u::@2 mul16u::@4
  [88] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
  [89] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1
  [90] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1
  to:mul16u::@1
init_irq: scope:[init_irq]  from main::@8
  asm { sei  }
  [92] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
  [93] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
  [94] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0
  [95] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte) $80
  [96] *((const byte*) RASTER#0) ← (byte) 0
  [97] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0
  [98] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq()
  asm { cli  }
  to:init_irq::@return
init_irq::@return: scope:[init_irq]  from init_irq
  [100] return 
  to:@return
bitmap_clear: scope:[bitmap_clear]  from main::@10
  [101] phi()
  [102] call memset 
  to:bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear]  from bitmap_clear
  [103] phi()
  [104] call memset 
  to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear]  from bitmap_clear::@1
  [105] return 
  to:@return
memset: scope:[memset]  from bitmap_clear bitmap_clear::@1
  [106] (byte) memset::c#4 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 )
  [106] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) SCREEN#0 bitmap_clear::@1/(void*)(const byte*) BITMAP#0 )
  [106] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 )
  [107] if((word) memset::num#2<=(byte) 0) goto memset::@return
  to:memset::@1
memset::@1: scope:[memset]  from memset
  [108] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2
  [109] (byte*~) memset::dst#4 ← (byte*)(void*) memset::str#3
  to:memset::@2
memset::@2: scope:[memset]  from memset::@1 memset::@3
  [110] (byte*) memset::dst#2 ← phi( memset::@1/(byte*~) memset::dst#4 memset::@3/(byte*) memset::dst#1 )
  [111] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3
  to:memset::@return
memset::@return: scope:[memset]  from memset memset::@2
  [112] return 
  to:@return
memset::@3: scope:[memset]  from memset::@2
  [113] *((byte*) memset::dst#2) ← (byte) memset::c#4
  [114] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
  to:memset::@2
bitmap_init: scope:[bitmap_init]  from main::@9
  [115] phi()
  to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init]  from bitmap_init bitmap_init::@2
  [116] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
  [116] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 )
  [117] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
  [118] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1
  [119] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6
  to:bitmap_init::@2
bitmap_init::@6: scope:[bitmap_init]  from bitmap_init::@1
  [120] phi()
  to:bitmap_init::@2
bitmap_init::@2: scope:[bitmap_init]  from bitmap_init::@1 bitmap_init::@6
  [121] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 )
  [122] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
  [123] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1
  to:bitmap_init::@3
bitmap_init::@3: scope:[bitmap_init]  from bitmap_init::@2 bitmap_init::@4
  [124] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 )
  [124] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 )
  [125] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
  [126] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
  [127] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4
  [128] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
  [129] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
  [130] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
  [131] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4
  to:bitmap_init::@5
bitmap_init::@5: scope:[bitmap_init]  from bitmap_init::@3
  [132] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8
  to:bitmap_init::@4
bitmap_init::@4: scope:[bitmap_init]  from bitmap_init::@3 bitmap_init::@5
  [133] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 )
  [134] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
  [135] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3
  to:bitmap_init::@return
bitmap_init::@return: scope:[bitmap_init]  from bitmap_init::@4
  [136] return 
  to:@return
sin16s_gen2: scope:[sin16s_gen2]  from main
  [137] phi()
  [138] call div32u16u 
  [139] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
  to:sin16s_gen2::@3
sin16s_gen2::@3: scope:[sin16s_gen2]  from sin16s_gen2
  [140] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2
  to:sin16s_gen2::@2
sin16s_gen2::@2: scope:[sin16s_gen2]  from sin16s_gen2::@1 sin16s_gen2::@3
  [141] (signed word*) sin16s_gen2::sintab#10 ← phi( sin16s_gen2::@1/(signed word*) sin16s_gen2::sintab#0 sin16s_gen2::@3/(const signed word[$200]) SINUS#0 )
  [141] (dword) sin16s_gen2::x#6 ← phi( sin16s_gen2::@1/(dword) sin16s_gen2::x#1 sin16s_gen2::@3/(byte) 0 )
  [141] (word) sin16s_gen2::i#6 ← phi( sin16s_gen2::@1/(word) sin16s_gen2::i#1 sin16s_gen2::@3/(byte) 0 )
  [142] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#6
  [143] call sin16s 
  [144] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
  to:sin16s_gen2::@4
sin16s_gen2::@4: scope:[sin16s_gen2]  from sin16s_gen2::@2
  [145] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0
  [146] call mul16s 
  [147] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0
  to:sin16s_gen2::@5
sin16s_gen2::@5: scope:[sin16s_gen2]  from sin16s_gen2::@4
  [148] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2
  [149] (word~) sin16s_gen2::$9 ← > (signed dword~) sin16s_gen2::$6
  [150] *((signed word*) sin16s_gen2::sintab#10) ← (signed word)(word~) sin16s_gen2::$9
  [151] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#10 + (const byte) SIZEOF_SIGNED_WORD
  [152] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#6 + (dword) sin16s_gen2::step#0
  [153] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#6
  to:sin16s_gen2::@1
sin16s_gen2::@1: scope:[sin16s_gen2]  from sin16s_gen2::@5
  [154] if((word) sin16s_gen2::i#1<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2
  to:sin16s_gen2::@return
sin16s_gen2::@return: scope:[sin16s_gen2]  from sin16s_gen2::@1
  [155] return 
  to:@return
sin16s: scope:[sin16s]  from sin16s_gen2::@2
  [156] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
  to:sin16s::@4
sin16s::@4: scope:[sin16s]  from sin16s
  [157] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
  to:sin16s::@1
sin16s::@1: scope:[sin16s]  from sin16s sin16s::@4
  [158] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 )
  [158] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
  [159] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
  to:sin16s::@5
sin16s::@5: scope:[sin16s]  from sin16s::@1
  [160] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
  to:sin16s::@2
sin16s::@2: scope:[sin16s]  from sin16s::@1 sin16s::@5
  [161] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
  [162] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3
  [163] (word) sin16s::x1#0 ← > (dword~) sin16s::$4
  [164] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
  [165] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
  [166] call mulu16_sel 
  [167] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
  to:sin16s::@7
sin16s::@7: scope:[sin16s]  from sin16s::@2
  [168] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
  [169] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
  [170] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
  [171] call mulu16_sel 
  [172] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
  to:sin16s::@8
sin16s::@8: scope:[sin16s]  from sin16s::@7
  [173] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
  [174] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
  [175] call mulu16_sel 
  [176] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
  to:sin16s::@9
sin16s::@9: scope:[sin16s]  from sin16s::@8
  [177] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
  [178] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
  [179] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
  [180] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
  [181] call mulu16_sel 
  [182] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
  to:sin16s::@10
sin16s::@10: scope:[sin16s]  from sin16s::@9
  [183] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
  [184] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
  [185] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
  [186] call mulu16_sel 
  [187] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
  to:sin16s::@11
sin16s::@11: scope:[sin16s]  from sin16s::@10
  [188] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
  [189] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4
  [190] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
  [191] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12
  to:sin16s::@6
sin16s::@6: scope:[sin16s]  from sin16s::@11
  [192] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
  to:sin16s::@3
sin16s::@3: scope:[sin16s]  from sin16s::@12 sin16s::@6
  [193] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
  to:sin16s::@return
sin16s::@return: scope:[sin16s]  from sin16s::@3
  [194] return 
  to:@return
sin16s::@12: scope:[sin16s]  from sin16s::@11
  [195] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
  to:sin16s::@3
mulu16_sel: scope:[mulu16_sel]  from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9
  [196] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 )
  [196] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 )
  [196] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 )
  [197] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
  [198] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
  [199] call mul16u 
  [200] (dword) mul16u::return#3 ← (dword) mul16u::res#2
  to:mulu16_sel::@1
mulu16_sel::@1: scope:[mulu16_sel]  from mulu16_sel
  [201] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
  [202] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
  [203] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
  to:mulu16_sel::@return
mulu16_sel::@return: scope:[mulu16_sel]  from mulu16_sel::@1
  [204] return 
  to:@return
div32u16u: scope:[div32u16u]  from sin16s_gen2
  [205] phi()
  [206] call divr16u 
  [207] (word) divr16u::return#2 ← (word) divr16u::return#0
  to:div32u16u::@1
div32u16u::@1: scope:[div32u16u]  from div32u16u
  [208] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
  [209] (word) divr16u::rem#4 ← (word) rem16u#1
  [210] call divr16u 
  [211] (word) divr16u::return#3 ← (word) divr16u::return#0
  to:div32u16u::@2
div32u16u::@2: scope:[div32u16u]  from div32u16u::@1
  [212] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
  [213] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
  to:div32u16u::@return
div32u16u::@return: scope:[div32u16u]  from div32u16u::@2
  [214] return 
  to:@return
divr16u: scope:[divr16u]  from div32u16u div32u16u::@1
  [215] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 )
  [215] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 )
  to:divr16u::@1
divr16u::@1: scope:[divr16u]  from divr16u divr16u::@3
  [216] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
  [216] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
  [216] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
  [216] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
  [217] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1
  [218] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
  [219] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
  [220] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
  to:divr16u::@4
divr16u::@4: scope:[divr16u]  from divr16u::@1
  [221] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
  to:divr16u::@2
divr16u::@2: scope:[divr16u]  from divr16u::@1 divr16u::@4
  [222] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
  [223] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1
  [224] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
  [225] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3
  to:divr16u::@5
divr16u::@5: scope:[divr16u]  from divr16u::@2
  [226] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
  [227] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0
  to:divr16u::@3
divr16u::@3: scope:[divr16u]  from divr16u::@2 divr16u::@5
  [228] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
  [228] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
  [229] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
  [230] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
  to:divr16u::@6
divr16u::@6: scope:[divr16u]  from divr16u::@3
  [231] (word) rem16u#1 ← (word) divr16u::rem#11
  to:divr16u::@return
divr16u::@return: scope:[divr16u]  from divr16u::@6
  [232] return 
  to:@return
irq: scope:[irq]  from
  [233] *((const byte*) BGCOL#0) ← (const byte) WHITE#0
  [234] if((byte) 0==(byte) frame_cnt#0) goto irq::@1
  to:irq::@2
irq::@2: scope:[irq]  from irq
  [235] (byte) frame_cnt#1 ← ++ (byte) frame_cnt#0
  to:irq::@1
irq::@1: scope:[irq]  from irq irq::@2
  [236] (byte) frame_cnt#2 ← phi( irq/(byte) frame_cnt#0 irq::@2/(byte) frame_cnt#1 )
  [237] *((const byte*) BGCOL#0) ← (const byte) BLACK#0
  [238] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
  to:irq::@return
irq::@return: scope:[irq]  from irq::@1
  [239] return 
  to:@return
