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