@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()

(void()) main()
main: scope:[main]  from @1
  [4] phi()
  [5] call print_cls 
  to:main::@1
main::@1: scope:[main]  from main
  [6] phi()
  [7] call sin8u_table 
  to:main::@return
main::@return: scope:[main]  from main::@1
  [8] return 
  to:@return

(void()) sin8u_table((byte*) sin8u_table::sintab , (word) sin8u_table::tabsize , (byte) sin8u_table::min , (byte) sin8u_table::max)
sin8u_table: scope:[sin8u_table]  from main::@1
  [9] phi()
  [10] call div16u 
  [11] (word) div16u::return#2 ← (word) div16u::return#0
  to:sin8u_table::@3
sin8u_table::@3: scope:[sin8u_table]  from sin8u_table
  [12] (word) sin8u_table::step#0 ← (word) div16u::return#2
  [13] call print_str 
  to:sin8u_table::@4
sin8u_table::@4: scope:[sin8u_table]  from sin8u_table::@3
  [14] (word) print_word::w#1 ← (word) sin8u_table::step#0
  [15] call print_word 
  to:sin8u_table::@5
sin8u_table::@5: scope:[sin8u_table]  from sin8u_table::@4
  [16] phi()
  [17] call print_str 
  to:sin8u_table::@6
sin8u_table::@6: scope:[sin8u_table]  from sin8u_table::@5
  [18] phi()
  [19] call print_byte 
  to:sin8u_table::@7
sin8u_table::@7: scope:[sin8u_table]  from sin8u_table::@6
  [20] phi()
  [21] call print_str 
  to:sin8u_table::@8
sin8u_table::@8: scope:[sin8u_table]  from sin8u_table::@7
  [22] phi()
  [23] call print_byte 
  to:sin8u_table::@9
sin8u_table::@9: scope:[sin8u_table]  from sin8u_table::@8
  [24] phi()
  [25] call print_str 
  to:sin8u_table::@10
sin8u_table::@10: scope:[sin8u_table]  from sin8u_table::@9
  [26] phi()
  [27] call print_byte 
  to:sin8u_table::@11
sin8u_table::@11: scope:[sin8u_table]  from sin8u_table::@10
  [28] phi()
  [29] call print_str 
  to:sin8u_table::@12
sin8u_table::@12: scope:[sin8u_table]  from sin8u_table::@11
  [30] phi()
  [31] call print_byte 
  to:sin8u_table::@13
sin8u_table::@13: scope:[sin8u_table]  from sin8u_table::@12
  [32] phi()
  [33] call print_ln 
  to:sin8u_table::@1
sin8u_table::@1: scope:[sin8u_table]  from sin8u_table::@13 sin8u_table::@24
  [34] (byte*) sin8u_table::sintab#2 ← phi( sin8u_table::@13/(const byte*) main::sintab sin8u_table::@24/(byte*) sin8u_table::sintab#1 )
  [34] (word) sin8u_table::x#10 ← phi( sin8u_table::@13/(word) 0 sin8u_table::@24/(word) sin8u_table::x#1 )
  [34] (word) sin8u_table::i#10 ← phi( sin8u_table::@13/(word) 0 sin8u_table::@24/(word) sin8u_table::i#1 )
  [35] if((word) sin8u_table::i#10<(const word) main::tabsize) goto sin8u_table::@2
  to:sin8u_table::@return
sin8u_table::@return: scope:[sin8u_table]  from sin8u_table::@1
  [36] return 
  to:@return
sin8u_table::@2: scope:[sin8u_table]  from sin8u_table::@1
  [37] (word) sin8s::x#2 ← (word) sin8u_table::x#10
  [38] call sin8s 
  [39] (signed byte) sin8s::return#2 ← (signed byte) sin8s::return#0
  to:sin8u_table::@14
sin8u_table::@14: scope:[sin8u_table]  from sin8u_table::@2
  [40] (signed byte) sin8u_table::sinx#0 ← (signed byte) sin8s::return#2
  [41] (signed byte) mul8su::a#0 ← (signed byte) sin8u_table::sinx#0
  [42] call mul8su 
  to:sin8u_table::@15
sin8u_table::@15: scope:[sin8u_table]  from sin8u_table::@14
  [43] (signed word) sin8u_table::sinx_sc#0 ← (signed word)(word) mul8su::m#2
  [44] (byte~) sin8u_table::$22 ← > (signed word) sin8u_table::sinx_sc#0
  [45] (byte) sin8u_table::sinx_tr#0 ← (const byte) sin8u_table::mid#0 + (byte~) sin8u_table::$22
  [46] *((byte*) sin8u_table::sintab#2) ← (byte) sin8u_table::sinx_tr#0
  [47] (byte*) sin8u_table::sintab#1 ← ++ (byte*) sin8u_table::sintab#2
  [48] (byte*) print_char_cursor#118 ← (byte*) print_line_cursor#1
  [49] call print_str 
  to:sin8u_table::@16
sin8u_table::@16: scope:[sin8u_table]  from sin8u_table::@15
  [50] (word) print_word::w#2 ← (word) sin8u_table::x#10
  [51] call print_word 
  to:sin8u_table::@17
sin8u_table::@17: scope:[sin8u_table]  from sin8u_table::@16
  [52] phi()
  [53] call print_str 
  to:sin8u_table::@18
sin8u_table::@18: scope:[sin8u_table]  from sin8u_table::@17
  [54] (signed byte) print_sbyte::b#1 ← (signed byte) sin8u_table::sinx#0
  [55] call print_sbyte 
  to:sin8u_table::@19
sin8u_table::@19: scope:[sin8u_table]  from sin8u_table::@18
  [56] phi()
  [57] call print_str 
  to:sin8u_table::@20
sin8u_table::@20: scope:[sin8u_table]  from sin8u_table::@19
  [58] (signed word) print_sword::w#1 ← (signed word) sin8u_table::sinx_sc#0
  [59] call print_sword 
  to:sin8u_table::@21
sin8u_table::@21: scope:[sin8u_table]  from sin8u_table::@20
  [60] phi()
  [61] call print_str 
  to:sin8u_table::@22
sin8u_table::@22: scope:[sin8u_table]  from sin8u_table::@21
  [62] (byte) print_byte::b#7 ← (byte) sin8u_table::sinx_tr#0
  [63] call print_byte 
  to:sin8u_table::@23
sin8u_table::@23: scope:[sin8u_table]  from sin8u_table::@22
  [64] phi()
  [65] call print_ln 
  to:sin8u_table::@24
sin8u_table::@24: scope:[sin8u_table]  from sin8u_table::@23
  [66] (word) sin8u_table::x#1 ← (word) sin8u_table::x#10 + (word) sin8u_table::step#0
  [67] (word) sin8u_table::i#1 ← ++ (word) sin8u_table::i#10
  to:sin8u_table::@1

(void()) print_ln()
print_ln: scope:[print_ln]  from sin8u_table::@13 sin8u_table::@23
  [68] (byte*) print_line_cursor#23 ← phi( sin8u_table::@13/(byte*) 1024 sin8u_table::@23/(byte*) print_line_cursor#1 )
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  [69] (byte*) print_line_cursor#12 ← phi( print_ln/(byte*) print_line_cursor#23 print_ln::@1/(byte*) print_line_cursor#1 )
  [70] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#12 + (byte) $28
  [71] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#19) goto print_ln::@1
  to:print_ln::@return
print_ln::@return: scope:[print_ln]  from print_ln::@1
  [72] return 
  to:@return

(void()) print_byte((byte) print_byte::b)
print_byte: scope:[print_byte]  from print_sbyte::@2 print_word print_word::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@22 sin8u_table::@6 sin8u_table::@8
  [73] (byte*) print_char_cursor#103 ← phi( print_sbyte::@2/(byte*) print_char_cursor#19 print_word/(byte*) print_char_cursor#102 print_word::@1/(byte*) print_char_cursor#19 sin8u_table::@6/(byte*) print_char_cursor#2 sin8u_table::@8/(byte*) print_char_cursor#2 sin8u_table::@10/(byte*) print_char_cursor#2 sin8u_table::@12/(byte*) print_char_cursor#2 sin8u_table::@22/(byte*) print_char_cursor#2 )
  [73] (byte) print_byte::b#8 ← phi( print_sbyte::@2/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 sin8u_table::@6/(const byte) sin8u_table::min#0 sin8u_table::@8/(const byte) sin8u_table::max#0 sin8u_table::@10/(const byte) sin8u_table::amplitude#0 sin8u_table::@12/(const byte) sin8u_table::mid#0 sin8u_table::@22/(byte) print_byte::b#7 )
  [74] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte) 4
  [75] (byte) print_char::ch#4 ← *((const byte*) print_hextab + (byte~) print_byte::$0)
  [76] call print_char 
  to:print_byte::@1
print_byte::@1: scope:[print_byte]  from print_byte
  [77] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte) $f
  [78] (byte) print_char::ch#5 ← *((const byte*) print_hextab + (byte~) print_byte::$2)
  [79] call print_char 
  to:print_byte::@return
print_byte::@return: scope:[print_byte]  from print_byte::@1
  [80] return 
  to:@return

(void()) print_char((byte) print_char::ch)
print_char: scope:[print_char]  from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@1 print_sword::@3
  [81] (byte*) print_char_cursor#66 ← phi( print_byte/(byte*) print_char_cursor#103 print_byte::@1/(byte*) print_char_cursor#19 print_sbyte::@1/(byte*) print_char_cursor#2 print_sbyte::@3/(byte*) print_char_cursor#2 print_sword::@1/(byte*) print_char_cursor#2 print_sword::@3/(byte*) print_char_cursor#2 )
  [81] (byte) print_char::ch#6 ← phi( print_byte/(byte) print_char::ch#4 print_byte::@1/(byte) print_char::ch#5 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@1/(byte) '-' print_sword::@3/(byte) ' ' )
  [82] *((byte*) print_char_cursor#66) ← (byte) print_char::ch#6
  [83] (byte*) print_char_cursor#19 ← ++ (byte*) print_char_cursor#66
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [84] return 
  to:@return

(void()) print_str((byte*) print_str::str)
print_str: scope:[print_str]  from sin8u_table::@11 sin8u_table::@15 sin8u_table::@17 sin8u_table::@19 sin8u_table::@21 sin8u_table::@3 sin8u_table::@5 sin8u_table::@7 sin8u_table::@9
  [85] (byte*) print_char_cursor#109 ← phi( sin8u_table::@7/(byte*) print_char_cursor#19 sin8u_table::@9/(byte*) print_char_cursor#19 sin8u_table::@11/(byte*) print_char_cursor#19 sin8u_table::@15/(byte*) print_char_cursor#118 sin8u_table::@17/(byte*) print_char_cursor#19 sin8u_table::@19/(byte*) print_char_cursor#19 sin8u_table::@21/(byte*) print_char_cursor#19 sin8u_table::@3/(byte*) 1024 sin8u_table::@5/(byte*) print_char_cursor#19 )
  [85] (byte*) print_str::str#12 ← phi( sin8u_table::@7/(const string) sin8u_table::str2 sin8u_table::@9/(const string) sin8u_table::str3 sin8u_table::@11/(const string) sin8u_table::str4 sin8u_table::@15/(const string) sin8u_table::str5 sin8u_table::@17/(const string) sin8u_table::str6 sin8u_table::@19/(const string) sin8u_table::str7 sin8u_table::@21/(const string) sin8u_table::str8 sin8u_table::@3/(const string) sin8u_table::str sin8u_table::@5/(const string) sin8u_table::str1 )
  to:print_str::@1
print_str::@1: scope:[print_str]  from print_str print_str::@2
  [86] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#109 print_str::@2/(byte*) print_char_cursor#1 )
  [86] (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#12 print_str::@2/(byte*) print_str::str#0 )
  [87] if((byte) 0!=*((byte*) print_str::str#10)) goto print_str::@2
  to:print_str::@return
print_str::@return: scope:[print_str]  from print_str::@1
  [88] return 
  to:@return
print_str::@2: scope:[print_str]  from print_str::@1
  [89] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10)
  [90] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2
  [91] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10
  to:print_str::@1

(void()) print_sword((signed word) print_sword::w)
print_sword: scope:[print_sword]  from sin8u_table::@20
  [92] if((signed word) print_sword::w#1<(signed byte) 0) goto print_sword::@1
  to:print_sword::@3
print_sword::@3: scope:[print_sword]  from print_sword
  [93] phi()
  [94] call print_char 
  to:print_sword::@2
print_sword::@2: scope:[print_sword]  from print_sword::@3 print_sword::@4
  [95] (signed word) print_sword::w#4 ← phi( print_sword::@4/(signed word) print_sword::w#0 print_sword::@3/(signed word) print_sword::w#1 )
  [96] (word) print_word::w#0 ← (word)(signed word) print_sword::w#4
  [97] call print_word 
  to:print_sword::@return
print_sword::@return: scope:[print_sword]  from print_sword::@2
  [98] return 
  to:@return
print_sword::@1: scope:[print_sword]  from print_sword
  [99] phi()
  [100] call print_char 
  to:print_sword::@4
print_sword::@4: scope:[print_sword]  from print_sword::@1
  [101] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1
  to:print_sword::@2

(void()) print_word((word) print_word::w)
print_word: scope:[print_word]  from print_sword::@2 sin8u_table::@16 sin8u_table::@4
  [102] (byte*) print_char_cursor#102 ← phi( print_sword::@2/(byte*) print_char_cursor#19 sin8u_table::@16/(byte*) print_char_cursor#2 sin8u_table::@4/(byte*) print_char_cursor#2 )
  [102] (word) print_word::w#3 ← phi( print_sword::@2/(word) print_word::w#0 sin8u_table::@16/(word) print_word::w#2 sin8u_table::@4/(word) print_word::w#1 )
  [103] (byte) print_byte::b#1 ← > (word) print_word::w#3
  [104] call print_byte 
  to:print_word::@1
print_word::@1: scope:[print_word]  from print_word
  [105] (byte) print_byte::b#2 ← < (word) print_word::w#3
  [106] call print_byte 
  to:print_word::@return
print_word::@return: scope:[print_word]  from print_word::@1
  [107] return 
  to:@return

(void()) print_sbyte((signed byte) print_sbyte::b)
print_sbyte: scope:[print_sbyte]  from sin8u_table::@18
  [108] if((signed byte) print_sbyte::b#1<(signed byte) 0) goto print_sbyte::@1
  to:print_sbyte::@3
print_sbyte::@3: scope:[print_sbyte]  from print_sbyte
  [109] phi()
  [110] call print_char 
  to:print_sbyte::@2
print_sbyte::@2: scope:[print_sbyte]  from print_sbyte::@3 print_sbyte::@4
  [111] (signed byte) print_sbyte::b#4 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#1 )
  [112] (byte) print_byte::b#0 ← (byte)(signed byte) print_sbyte::b#4
  [113] call print_byte 
  to:print_sbyte::@return
print_sbyte::@return: scope:[print_sbyte]  from print_sbyte::@2
  [114] return 
  to:@return
print_sbyte::@1: scope:[print_sbyte]  from print_sbyte
  [115] phi()
  [116] call print_char 
  to:print_sbyte::@4
print_sbyte::@4: scope:[print_sbyte]  from print_sbyte::@1
  [117] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1
  to:print_sbyte::@2

(signed word()) mul8su((signed byte) mul8su::a , (byte) mul8su::b)
mul8su: scope:[mul8su]  from sin8u_table::@14
  [118] (byte) mul8u::a#1 ← (byte)(signed byte) mul8su::a#0
  [119] call mul8u 
  [120] (word) mul8u::return#2 ← (word) mul8u::res#2
  to:mul8su::@3
mul8su::@3: scope:[mul8su]  from mul8su
  [121] (word) mul8su::m#0 ← (word) mul8u::return#2
  [122] if((signed byte) mul8su::a#0>=(signed byte) 0) goto mul8su::@1
  to:mul8su::@2
mul8su::@2: scope:[mul8su]  from mul8su::@3
  [123] (byte~) mul8su::$7 ← > (word) mul8su::m#0
  [124] (byte~) mul8su::$10 ← (byte~) mul8su::$7 - (const byte) mul8su::b#0
  [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10
  to:mul8su::@1
mul8su::@1: scope:[mul8su]  from mul8su::@2 mul8su::@3
  [126] (word) mul8su::m#2 ← phi( mul8su::@2/(word) mul8su::m#1 mul8su::@3/(word) mul8su::m#0 )
  to:mul8su::@return
mul8su::@return: scope:[mul8su]  from mul8su::@1
  [127] return 
  to:@return

(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
mul8u: scope:[mul8u]  from mul8su mulu8_sel
  [128] (byte) mul8u::a#6 ← phi( mul8su/(byte) mul8u::a#1 mulu8_sel/(byte) mul8u::a#2 )
  [128] (byte) mul8u::b#2 ← phi( mul8su/(const byte) mul8su::b#0 mulu8_sel/(byte) mul8u::b#1 )
  [129] (word) mul8u::mb#0 ← (word)(byte) mul8u::b#2
  to:mul8u::@1
mul8u::@1: scope:[mul8u]  from mul8u mul8u::@3
  [130] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@3/(word) mul8u::mb#1 )
  [130] (word) mul8u::res#2 ← phi( mul8u/(word) 0 mul8u::@3/(word) mul8u::res#6 )
  [130] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 )
  [131] if((byte) mul8u::a#3!=(byte) 0) goto mul8u::@2
  to:mul8u::@return
mul8u::@return: scope:[mul8u]  from mul8u::@1
  [132] return 
  to:@return
mul8u::@2: scope:[mul8u]  from mul8u::@1
  [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte) 1
  [134] if((byte~) mul8u::$1==(byte) 0) goto mul8u::@3
  to:mul8u::@4
mul8u::@4: scope:[mul8u]  from mul8u::@2
  [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
  to:mul8u::@3
mul8u::@3: scope:[mul8u]  from mul8u::@2 mul8u::@4
  [136] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 )
  [137] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte) 1
  [138] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte) 1
  to:mul8u::@1

(signed byte()) sin8s((word) sin8s::x)
sin8s: scope:[sin8s]  from sin8u_table::@2
  [139] if((word) sin8s::x#2<(const word) PI_u4f12) goto sin8s::@1
  to:sin8s::@5
sin8s::@5: scope:[sin8s]  from sin8s
  [140] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12
  to:sin8s::@1
sin8s::@1: scope:[sin8s]  from sin8s sin8s::@5
  [141] (byte) sin8s::isUpper#10 ← phi( sin8s/(byte) 0 sin8s::@5/(byte) 1 )
  [141] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#2 sin8s::@5/(word) sin8s::x#0 )
  [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12) goto sin8s::@2
  to:sin8s::@6
sin8s::@6: scope:[sin8s]  from sin8s::@1
  [143] (word) sin8s::x#1 ← (const word) PI_u4f12 - (word) sin8s::x#4
  to:sin8s::@2
sin8s::@2: scope:[sin8s]  from sin8s::@1 sin8s::@6
  [144] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@6/(word) sin8s::x#1 )
  [145] (word~) sin8s::$4 ← (word) sin8s::x#6 << (byte) 3
  [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$4
  [147] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0
  [148] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0
  [149] call mulu8_sel 
  [150] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12
  to:sin8s::@9
sin8s::@9: scope:[sin8s]  from sin8s::@2
  [151] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0
  [152] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0
  [153] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0
  [154] call mulu8_sel 
  [155] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12
  to:sin8s::@10
sin8s::@10: scope:[sin8s]  from sin8s::@9
  [156] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1
  [157] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0
  [158] call mulu8_sel 
  [159] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12
  to:sin8s::@11
sin8s::@11: scope:[sin8s]  from sin8s::@10
  [160] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2
  [161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0
  [162] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0
  [163] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0
  [164] call mulu8_sel 
  [165] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12
  to:sin8s::@12
sin8s::@12: scope:[sin8s]  from sin8s::@11
  [166] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10
  [167] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0
  [168] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0
  [169] call mulu8_sel 
  [170] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12
  to:sin8s::@13
sin8s::@13: scope:[sin8s]  from sin8s::@12
  [171] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11
  [172] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte) 4
  [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0
  [174] if((byte) sin8s::usinx#1<(byte) $80) goto sin8s::@3
  to:sin8s::@7
sin8s::@7: scope:[sin8s]  from sin8s::@13
  [175] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1
  to:sin8s::@3
sin8s::@3: scope:[sin8s]  from sin8s::@13 sin8s::@7
  [176] (byte) sin8s::usinx#4 ← phi( sin8s::@13/(byte) sin8s::usinx#1 sin8s::@7/(byte) sin8s::usinx#2 )
  [177] if((byte) sin8s::isUpper#10==(byte) 0) goto sin8s::@14
  to:sin8s::@8
sin8s::@8: scope:[sin8s]  from sin8s::@3
  [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4
  to:sin8s::@4
sin8s::@4: scope:[sin8s]  from sin8s::@14 sin8s::@8
  [179] (signed byte) sin8s::return#0 ← phi( sin8s::@14/(signed byte) sin8s::return#5 sin8s::@8/(signed byte) sin8s::sinx#1 )
  to:sin8s::@return
sin8s::@return: scope:[sin8s]  from sin8s::@4
  [180] return 
  to:@return
sin8s::@14: scope:[sin8s]  from sin8s::@3
  [181] (signed byte) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4
  to:sin8s::@4

(byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select)
mulu8_sel: scope:[mulu8_sel]  from sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@2 sin8s::@9
  [182] (byte) mulu8_sel::select#5 ← phi( sin8s::@9/(byte) 1 sin8s::@10/(byte) 1 sin8s::@11/(byte) 0 sin8s::@12/(byte) 0 sin8s::@2/(byte) 0 )
  [182] (byte) mulu8_sel::v2#5 ← phi( sin8s::@9/(byte) mulu8_sel::v2#1 sin8s::@10/(const byte) sin8s::DIV_6 sin8s::@11/(byte) mulu8_sel::v2#3 sin8s::@12/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 )
  [182] (byte) mulu8_sel::v1#5 ← phi( sin8s::@9/(byte) mulu8_sel::v1#1 sin8s::@10/(byte) mulu8_sel::v1#2 sin8s::@11/(byte) mulu8_sel::v1#3 sin8s::@12/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 )
  [183] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5
  [184] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5
  [185] call mul8u 
  [186] (word) mul8u::return#3 ← (word) mul8u::res#2
  to:mulu8_sel::@1
mulu8_sel::@1: scope:[mulu8_sel]  from mulu8_sel
  [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3
  [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5
  [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1
  to:mulu8_sel::@return
mulu8_sel::@return: scope:[mulu8_sel]  from mulu8_sel::@1
  [190] return 
  to:@return

(word()) div16u((word) div16u::dividend , (word) div16u::divisor)
div16u: scope:[div16u]  from sin8u_table
  [191] phi()
  [192] call divr16u 
  [193] (word) divr16u::return#2 ← (word) divr16u::return#0
  to:div16u::@1
div16u::@1: scope:[div16u]  from div16u
  [194] (word) div16u::return#0 ← (word) divr16u::return#2
  to:div16u::@return
div16u::@return: scope:[div16u]  from div16u::@1
  [195] return 
  to:@return

(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
divr16u: scope:[divr16u]  from div16u
  [196] phi()
  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/(word) 0 divr16u::@3/(word) divr16u::return#0 )
  [197] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12 divr16u::@3/(word) divr16u::dividend#0 )
  [197] (word) divr16u::rem#4 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::rem#9 )
  [198] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1
  [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2
  [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#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
  [204] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1
  [205] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
  [206] if((word) divr16u::rem#5<(const word) main::tabsize) 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#5 - (const word) main::tabsize
  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#9 ← phi( divr16u::@2/(word) divr16u::rem#5 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::@return
divr16u::@return: scope:[divr16u]  from divr16u::@3
  [212] return 
  to:@return

(void()) print_cls()
print_cls: scope:[print_cls]  from main
  [213] phi()
  [214] call memset 
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls
  [215] return 
  to:@return

(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset]  from print_cls
  [216] phi()
  to:memset::@1
memset::@1: scope:[memset]  from memset memset::@2
  [217] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 )
  [218] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2
  to:memset::@return
memset::@return: scope:[memset]  from memset::@1
  [219] return 
  to:@return
memset::@2: scope:[memset]  from memset::@1
  [220] *((byte*) memset::dst#2) ← (const byte) memset::c#0
  [221] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
  to:memset::@1
