@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
    .for (var y=0; y<6	; y++)
        .for (var x=0;x<40; x++)
            .for(var cp=0; cp<8; cp++)
                .byte logoPic.getMulticolorByte(x,cp+y*8)
 }}
  to:@2
@2: scope:[]  from @1
  [2] phi()
  [3] call main 
  to:@end
@end: scope:[]  from @2
  [4] phi()
main: scope:[main]  from @2
  asm { sei  }
  [6] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0
  [7] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0
  [8] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0)
  [9] *((const byte*) BGCOL3#0) ← (const byte) BLACK#0
  to:main::toD0181
main::toD0181: scope:[main]  from main
  [10] phi()
  to:main::@3
main::@3: scope:[main]  from main::toD0181
  [11] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0
  [12] *((const byte*) D016#0) ← (const byte) VIC_MCM#0
  [13] call memset 
  to:main::@4
main::@4: scope:[main]  from main::@3
  [14] phi()
  [15] call memset 
  to:main::@1
main::@1: scope:[main]  from main::@1 main::@4
  [16] (byte) main::ch#2 ← phi( main::@1/(byte) main::ch#1 main::@4/(byte) 0 )
  [17] *((const byte*) SCREEN#0 + (byte) main::ch#2) ← (byte) main::ch#2
  [18] (byte) main::ch#1 ← ++ (byte) main::ch#2
  [19] if((byte) main::ch#1!=(byte) $f0) goto main::@1
  to:main::@2
main::@2: scope:[main]  from main::@1
  [20] phi()
  [21] call sin16s_gen2 
  to:main::@5
main::@5: scope:[main]  from main::@2
  [22] phi()
  [23] call loop 
  to:main::@return
main::@return: scope:[main]  from main::@5
  [24] return 
  to:@return
loop: scope:[loop]  from main::@5
  [25] phi()
  to:loop::@1
loop::@1: scope:[loop]  from loop loop::@4
  [26] (word) xsin_idx#11 ← phi( loop/(byte) 0 loop::@4/(word) xsin_idx#19 )
  to:loop::@2
loop::@2: scope:[loop]  from loop::@1 loop::@2
  [27] if(*((const byte*) RASTER#0)!=(byte) $ff) goto loop::@2
  to:loop::@3
loop::@3: scope:[loop]  from loop::@2
  [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0)
  [29] (word~) loop::$5 ← (word) xsin_idx#11 << (byte) 1
  [30] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word~) loop::$5
  [31] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1)
  [32] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0
  [33] call render_logo 
  to:loop::@5
loop::@5: scope:[loop]  from loop::@3
  [34] (word) xsin_idx#3 ← ++ (word) xsin_idx#11
  [35] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0) goto loop::@6
  to:loop::@4
loop::@6: scope:[loop]  from loop::@5
  [36] phi()
  to:loop::@4
loop::@4: scope:[loop]  from loop::@5 loop::@6
  [37] (word) xsin_idx#19 ← phi( loop::@5/(byte) 0 loop::@6/(word) xsin_idx#3 )
  [38] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0)
  to:loop::@1
render_logo: scope:[render_logo]  from loop::@3
  [39] (byte~) render_logo::$0 ← (byte)(signed word) render_logo::xpos#0
  [40] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte) 7
  [41] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1
  [42] *((const byte*) D016#0) ← (byte~) render_logo::$2
  [43] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte) 3
  [44] (signed byte) render_logo::x_char#0 ← (signed byte)(signed word~) render_logo::$3
  [45] if((signed word) render_logo::xpos#0<(signed byte) 0) goto render_logo::@1
  to:render_logo::@2
render_logo::@2: scope:[render_logo]  from render_logo render_logo::@4
  [46] (byte) render_logo::screen_idx#18 ← phi( render_logo/(byte) 0 render_logo::@4/(byte) render_logo::screen_idx#3 )
  [47] if((byte) render_logo::screen_idx#18!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@3
  to:render_logo::@5
render_logo::@5: scope:[render_logo]  from render_logo::@2 render_logo::@7
  [48] (byte) render_logo::logo_idx#10 ← phi( render_logo::@7/(byte) render_logo::logo_idx#3 render_logo::@2/(byte) 0 )
  [48] (byte) render_logo::screen_idx#10 ← phi( render_logo::@7/(byte) render_logo::screen_idx#4 render_logo::@2/(byte) render_logo::screen_idx#18 )
  [49] if((byte) render_logo::screen_idx#10!=(byte) $28) goto render_logo::@6
  to:render_logo::@return
render_logo::@return: scope:[render_logo]  from render_logo::@11 render_logo::@5
  [50] return 
  to:@return
render_logo::@6: scope:[render_logo]  from render_logo::@5
  [51] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#10) ← (byte) render_logo::logo_idx#10
  to:render_logo::@15_1
render_logo::@15_1: scope:[render_logo]  from render_logo::@6
  [52] (byte~) render_logo::$33 ← (byte) render_logo::logo_idx#10 + (byte) $28*(byte) 1
  [53] *((const byte*) SCREEN#0+(byte) $28*(byte) 1 + (byte) render_logo::screen_idx#10) ← (byte~) render_logo::$33
  to:render_logo::@15_2
render_logo::@15_2: scope:[render_logo]  from render_logo::@15_1
  [54] (byte~) render_logo::$36 ← (byte) render_logo::logo_idx#10 + (byte) $28*(byte) 2
  [55] *((const byte*) SCREEN#0+(byte) $28*(byte) 2 + (byte) render_logo::screen_idx#10) ← (byte~) render_logo::$36
  to:render_logo::@15_3
render_logo::@15_3: scope:[render_logo]  from render_logo::@15_2
  [56] (byte~) render_logo::$39 ← (byte) render_logo::logo_idx#10 + (byte) $28*(byte) 3
  [57] *((const byte*) SCREEN#0+(byte) $28*(byte) 3 + (byte) render_logo::screen_idx#10) ← (byte~) render_logo::$39
  to:render_logo::@15_4
render_logo::@15_4: scope:[render_logo]  from render_logo::@15_3
  [58] (byte~) render_logo::$42 ← (byte) render_logo::logo_idx#10 + (byte) $28*(byte) 4
  [59] *((const byte*) SCREEN#0+(byte) $28*(byte) 4 + (byte) render_logo::screen_idx#10) ← (byte~) render_logo::$42
  to:render_logo::@15_5
render_logo::@15_5: scope:[render_logo]  from render_logo::@15_4
  [60] (byte~) render_logo::$45 ← (byte) render_logo::logo_idx#10 + (byte) $28*(byte) 5
  [61] *((const byte*) SCREEN#0+(byte) $28*(byte) 5 + (byte) render_logo::screen_idx#10) ← (byte~) render_logo::$45
  to:render_logo::@7
render_logo::@7: scope:[render_logo]  from render_logo::@15_5
  [62] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#10
  [63] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10
  to:render_logo::@5
render_logo::@3: scope:[render_logo]  from render_logo::@2
  [64] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#18) ← (byte) 0
  to:render_logo::@7_1
render_logo::@7_1: scope:[render_logo]  from render_logo::@3
  [65] *((const byte*) SCREEN#0+(byte) $28*(byte) 1 + (byte) render_logo::screen_idx#18) ← (byte) 0
  to:render_logo::@7_2
render_logo::@7_2: scope:[render_logo]  from render_logo::@7_1
  [66] *((const byte*) SCREEN#0+(byte) $28*(byte) 2 + (byte) render_logo::screen_idx#18) ← (byte) 0
  to:render_logo::@7_3
render_logo::@7_3: scope:[render_logo]  from render_logo::@7_2
  [67] *((const byte*) SCREEN#0+(byte) $28*(byte) 3 + (byte) render_logo::screen_idx#18) ← (byte) 0
  to:render_logo::@7_4
render_logo::@7_4: scope:[render_logo]  from render_logo::@7_3
  [68] *((const byte*) SCREEN#0+(byte) $28*(byte) 4 + (byte) render_logo::screen_idx#18) ← (byte) 0
  to:render_logo::@7_5
render_logo::@7_5: scope:[render_logo]  from render_logo::@7_4
  [69] *((const byte*) SCREEN#0+(byte) $28*(byte) 5 + (byte) render_logo::screen_idx#18) ← (byte) 0
  to:render_logo::@4
render_logo::@4: scope:[render_logo]  from render_logo::@7_5
  [70] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#18
  to:render_logo::@2
render_logo::@1: scope:[render_logo]  from render_logo
  [71] (signed byte) render_logo::logo_idx#1 ← - (signed byte) render_logo::x_char#0
  [72] (byte~) render_logo::logo_idx#14 ← (byte)(signed byte) render_logo::logo_idx#1
  to:render_logo::@8
render_logo::@8: scope:[render_logo]  from render_logo::@1 render_logo::@10
  [73] (byte) render_logo::screen_idx#21 ← phi( render_logo::@1/(byte) 0 render_logo::@10/(byte) render_logo::screen_idx#5 )
  [73] (byte) render_logo::logo_idx#11 ← phi( render_logo::@1/(byte~) render_logo::logo_idx#14 render_logo::@10/(byte) render_logo::logo_idx#4 )
  [74] if((byte) render_logo::logo_idx#11!=(byte) $28) goto render_logo::@9
  to:render_logo::@11
render_logo::@11: scope:[render_logo]  from render_logo::@13 render_logo::@8
  [75] (byte) render_logo::screen_idx#15 ← phi( render_logo::@8/(byte) render_logo::screen_idx#21 render_logo::@13/(byte) render_logo::screen_idx#6 )
  [76] if((byte) render_logo::screen_idx#15!=(byte) $28) goto render_logo::@12
  to:render_logo::@return
render_logo::@12: scope:[render_logo]  from render_logo::@11
  [77] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#15) ← (byte) 0
  to:render_logo::@32_1
render_logo::@32_1: scope:[render_logo]  from render_logo::@12
  [78] *((const byte*) SCREEN#0+(byte) $28*(byte) 1 + (byte) render_logo::screen_idx#15) ← (byte) 0
  to:render_logo::@32_2
render_logo::@32_2: scope:[render_logo]  from render_logo::@32_1
  [79] *((const byte*) SCREEN#0+(byte) $28*(byte) 2 + (byte) render_logo::screen_idx#15) ← (byte) 0
  to:render_logo::@32_3
render_logo::@32_3: scope:[render_logo]  from render_logo::@32_2
  [80] *((const byte*) SCREEN#0+(byte) $28*(byte) 3 + (byte) render_logo::screen_idx#15) ← (byte) 0
  to:render_logo::@32_4
render_logo::@32_4: scope:[render_logo]  from render_logo::@32_3
  [81] *((const byte*) SCREEN#0+(byte) $28*(byte) 4 + (byte) render_logo::screen_idx#15) ← (byte) 0
  to:render_logo::@32_5
render_logo::@32_5: scope:[render_logo]  from render_logo::@32_4
  [82] *((const byte*) SCREEN#0+(byte) $28*(byte) 5 + (byte) render_logo::screen_idx#15) ← (byte) 0
  to:render_logo::@13
render_logo::@13: scope:[render_logo]  from render_logo::@32_5
  [83] (byte) render_logo::screen_idx#6 ← ++ (byte) render_logo::screen_idx#15
  to:render_logo::@11
render_logo::@9: scope:[render_logo]  from render_logo::@8
  [84] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#21) ← (byte) render_logo::logo_idx#11
  to:render_logo::@24_1
render_logo::@24_1: scope:[render_logo]  from render_logo::@9
  [85] (byte~) render_logo::$73 ← (byte) render_logo::logo_idx#11 + (byte) $28*(byte) 1
  [86] *((const byte*) SCREEN#0+(byte) $28*(byte) 1 + (byte) render_logo::screen_idx#21) ← (byte~) render_logo::$73
  to:render_logo::@24_2
render_logo::@24_2: scope:[render_logo]  from render_logo::@24_1
  [87] (byte~) render_logo::$76 ← (byte) render_logo::logo_idx#11 + (byte) $28*(byte) 2
  [88] *((const byte*) SCREEN#0+(byte) $28*(byte) 2 + (byte) render_logo::screen_idx#21) ← (byte~) render_logo::$76
  to:render_logo::@24_3
render_logo::@24_3: scope:[render_logo]  from render_logo::@24_2
  [89] (byte~) render_logo::$79 ← (byte) render_logo::logo_idx#11 + (byte) $28*(byte) 3
  [90] *((const byte*) SCREEN#0+(byte) $28*(byte) 3 + (byte) render_logo::screen_idx#21) ← (byte~) render_logo::$79
  to:render_logo::@24_4
render_logo::@24_4: scope:[render_logo]  from render_logo::@24_3
  [91] (byte~) render_logo::$82 ← (byte) render_logo::logo_idx#11 + (byte) $28*(byte) 4
  [92] *((const byte*) SCREEN#0+(byte) $28*(byte) 4 + (byte) render_logo::screen_idx#21) ← (byte~) render_logo::$82
  to:render_logo::@24_5
render_logo::@24_5: scope:[render_logo]  from render_logo::@24_4
  [93] (byte~) render_logo::$85 ← (byte) render_logo::logo_idx#11 + (byte) $28*(byte) 5
  [94] *((const byte*) SCREEN#0+(byte) $28*(byte) 5 + (byte) render_logo::screen_idx#21) ← (byte~) render_logo::$85
  to:render_logo::@10
render_logo::@10: scope:[render_logo]  from render_logo::@24_5
  [95] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#21
  [96] (byte) render_logo::logo_idx#4 ← ++ (byte) render_logo::logo_idx#11
  to:render_logo::@8
sin16s_gen2: scope:[sin16s_gen2]  from main::@2
  [97] phi()
  [98] call div32u16u 
  [99] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
  to:sin16s_gen2::@2
sin16s_gen2::@2: scope:[sin16s_gen2]  from sin16s_gen2
  [100] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2
  to:sin16s_gen2::@1
sin16s_gen2::@1: scope:[sin16s_gen2]  from sin16s_gen2::@2 sin16s_gen2::@4
  [101] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@2/(byte) 0 sin16s_gen2::@4/(word) sin16s_gen2::i#1 )
  [101] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@2/(const signed word[XSIN_SIZE#0]) xsin#0 sin16s_gen2::@4/(signed word*) sin16s_gen2::sintab#0 )
  [101] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@2/(byte) 0 sin16s_gen2::@4/(dword) sin16s_gen2::x#1 )
  [102] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2
  [103] call sin16s 
  [104] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
  to:sin16s_gen2::@3
sin16s_gen2::@3: scope:[sin16s_gen2]  from sin16s_gen2::@1
  [105] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0
  [106] call mul16s 
  [107] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0
  to:sin16s_gen2::@4
sin16s_gen2::@4: scope:[sin16s_gen2]  from sin16s_gen2::@3
  [108] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2
  [109] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$5
  [110] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8
  [111] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
  [112] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0
  [113] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2
  [114] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1
  to:sin16s_gen2::@return
sin16s_gen2::@return: scope:[sin16s_gen2]  from sin16s_gen2::@4
  [115] return 
  to:@return
mul16s: scope:[mul16s]  from sin16s_gen2::@3
  [116] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#0
  [117] call mul16u 
  [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2
  to:mul16s::@4
mul16s::@4: scope:[mul16s]  from mul16s
  [119] (dword) mul16s::m#0 ← (dword) mul16u::return#2
  [120] if((signed word) mul16s::a#0>=(signed byte) 0) goto mul16s::@1
  to:mul16s::@3
mul16s::@3: scope:[mul16s]  from mul16s::@4
  [121] (word~) mul16s::$9 ← > (dword) mul16s::m#0
  [122] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(const signed word) sin16s_gen2::ampl#0
  [123] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
  to:mul16s::@1
mul16s::@1: scope:[mul16s]  from mul16s::@3 mul16s::@4
  [124] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@4/(dword) mul16s::m#0 )
  to:mul16s::@2
mul16s::@2: scope:[mul16s]  from mul16s::@1
  [125] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4
  to:mul16s::@return
mul16s::@return: scope:[mul16s]  from mul16s::@2
  [126] return 
  to:@return
mul16u: scope:[mul16u]  from mul16s mulu16_sel
  [127] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mulu16_sel/(word) mul16u::a#2 )
  [127] (dword) mul16u::mb#0 ← phi( mul16s/(word)(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 )
  to:mul16u::@1
mul16u::@1: scope:[mul16u]  from mul16u mul16u::@3
  [128] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 )
  [128] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 )
  [128] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 )
  [129] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2
  to:mul16u::@return
mul16u::@return: scope:[mul16u]  from mul16u::@1
  [130] return 
  to:@return
mul16u::@2: scope:[mul16u]  from mul16u::@1
  [131] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1
  [132] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3
  to:mul16u::@4
mul16u::@4: scope:[mul16u]  from mul16u::@2
  [133] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
  to:mul16u::@3
mul16u::@3: scope:[mul16u]  from mul16u::@2 mul16u::@4
  [134] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
  [135] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1
  [136] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1
  to:mul16u::@1
sin16s: scope:[sin16s]  from sin16s_gen2::@1
  [137] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
  to:sin16s::@4
sin16s::@4: scope:[sin16s]  from sin16s
  [138] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
  to:sin16s::@1
sin16s::@1: scope:[sin16s]  from sin16s sin16s::@4
  [139] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 )
  [139] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
  [140] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
  to:sin16s::@5
sin16s::@5: scope:[sin16s]  from sin16s::@1
  [141] (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
  [142] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
  [143] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3
  [144] (word) sin16s::x1#0 ← > (dword~) sin16s::$4
  [145] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
  [146] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
  [147] call mulu16_sel 
  [148] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
  to:sin16s::@7
sin16s::@7: scope:[sin16s]  from sin16s::@2
  [149] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
  [150] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
  [151] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
  [152] call mulu16_sel 
  [153] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
  to:sin16s::@8
sin16s::@8: scope:[sin16s]  from sin16s::@7
  [154] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
  [155] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
  [156] call mulu16_sel 
  [157] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
  to:sin16s::@9
sin16s::@9: scope:[sin16s]  from sin16s::@8
  [158] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
  [159] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
  [160] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
  [161] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
  [162] call mulu16_sel 
  [163] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
  to:sin16s::@10
sin16s::@10: scope:[sin16s]  from sin16s::@9
  [164] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
  [165] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
  [166] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
  [167] call mulu16_sel 
  [168] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
  to:sin16s::@11
sin16s::@11: scope:[sin16s]  from sin16s::@10
  [169] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
  [170] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4
  [171] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
  [172] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12
  to:sin16s::@6
sin16s::@6: scope:[sin16s]  from sin16s::@11
  [173] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
  to:sin16s::@3
sin16s::@3: scope:[sin16s]  from sin16s::@12 sin16s::@6
  [174] (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
  [175] return 
  to:@return
sin16s::@12: scope:[sin16s]  from sin16s::@11
  [176] (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
  [177] (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 )
  [177] (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 )
  [177] (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 )
  [178] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
  [179] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
  [180] call mul16u 
  [181] (dword) mul16u::return#3 ← (dword) mul16u::res#2
  to:mulu16_sel::@1
mulu16_sel::@1: scope:[mulu16_sel]  from mulu16_sel
  [182] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
  [183] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
  [184] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
  to:mulu16_sel::@return
mulu16_sel::@return: scope:[mulu16_sel]  from mulu16_sel::@1
  [185] return 
  to:@return
div32u16u: scope:[div32u16u]  from sin16s_gen2
  [186] phi()
  [187] call divr16u 
  [188] (word) divr16u::return#2 ← (word) divr16u::return#0
  to:div32u16u::@1
div32u16u::@1: scope:[div32u16u]  from div32u16u
  [189] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
  [190] (word) divr16u::rem#4 ← (word) rem16u#1
  [191] call divr16u 
  [192] (word) divr16u::return#3 ← (word) divr16u::return#0
  to:div32u16u::@2
div32u16u::@2: scope:[div32u16u]  from div32u16u::@1
  [193] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
  [194] (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
  [195] return 
  to:@return
divr16u: scope:[divr16u]  from div32u16u div32u16u::@1
  [196] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 )
  [196] (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
  [197] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
  [197] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
  [197] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
  [197] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
  [198] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1
  [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
  [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
  [201] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
  to:divr16u::@4
divr16u::@4: scope:[divr16u]  from divr16u::@1
  [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
  to:divr16u::@2
divr16u::@2: scope:[divr16u]  from divr16u::@1 divr16u::@4
  [203] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
  [204] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1
  [205] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
  [206] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3
  to:divr16u::@5
divr16u::@5: scope:[divr16u]  from divr16u::@2
  [207] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
  [208] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0
  to:divr16u::@3
divr16u::@3: scope:[divr16u]  from divr16u::@2 divr16u::@5
  [209] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
  [209] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
  [210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
  [211] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
  to:divr16u::@6
divr16u::@6: scope:[divr16u]  from divr16u::@3
  [212] (word) rem16u#1 ← (word) divr16u::rem#11
  to:divr16u::@return
divr16u::@return: scope:[divr16u]  from divr16u::@6
  [213] return 
  to:@return
memset: scope:[memset]  from main::@3 main::@4
  [214] (byte) memset::c#3 ← phi( main::@3/(const byte) BLACK#0 main::@4/(const byte) WHITE#0|(byte) 8 )
  [214] (void*) memset::str#3 ← phi( main::@3/(void*)(const byte*) SCREEN#0 main::@4/(void*)(const byte*) COLS#0 )
  to:memset::@1
memset::@1: scope:[memset]  from memset
  [215] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) $3e8
  [216] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#3
  to:memset::@2
memset::@2: scope:[memset]  from memset::@1 memset::@2
  [217] (byte*) memset::dst#2 ← phi( memset::@1/(byte*~) memset::dst#3 memset::@2/(byte*) memset::dst#1 )
  [218] *((byte*) memset::dst#2) ← (byte) memset::c#3
  [219] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
  [220] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@2
  to:memset::@return
memset::@return: scope:[memset]  from memset::@2
  [221] return 
  to:@return
