
void main()
main: scope:[main]  from
  [0] *(primenum+1*SIZEOF_INT) = 2
  [1] *(primenum+2*SIZEOF_INT) = 3
  to:main::@1
main::@1: scope:[main]  from main main::@11
  [2] print_char_cursor#41 = phi( main/print_screen#0, main::@11/print_char_cursor#21 )
  [2] lastprime#17 = phi( main/2, main::@11/lastprime#1 )
  [2] testnum#15 = phi( main/3, main::@11/testnum#11 )
  [2] lasttest#13 = phi( main/2, main::@11/lasttest#19 )
  [3] main::$12 = lasttest#13 << 1
  [4] main::$16 = primenum + main::$12
  [5] main::p#0 = *main::$16
  [6] mul16s::a#0 = main::p#0
  [7] mul16s::b#0 = main::p#0
  [8] call mul16s
  [9] mul16s::return#2 = mul16s::return#0
  to:main::@8
main::@8: scope:[main]  from main::@1
  [10] main::$0 = mul16s::return#2
  [11] main::$15 = (int)main::$0
  [12] if(testnum#15<=main::$15) goto main::@2
  to:main::@7
main::@7: scope:[main]  from main::@8
  [13] lasttest#1 = ++ lasttest#13
  to:main::@2
main::@2: scope:[main]  from main::@7 main::@8
  [14] lasttest#19 = phi( main::@7/lasttest#1, main::@8/lasttest#13 )
  [15] testnum#1 = testnum#15 + 2
  to:main::@3
main::@3: scope:[main]  from main::@2 main::@4
  [16] testnum#10 = phi( main::@2/testnum#1, main::@4/testnum#11 )
  [16] primeptr#7 = phi( main::@2/2, main::@4/primeptr#10 )
  [17] main::$13 = primeptr#7 << 1
  [18] div16s::dividend#0 = testnum#10
  [19] main::$17 = primenum + main::$13
  [20] div16s::divisor#0 = *main::$17
  [21] call div16s
  to:main::@9
main::@9: scope:[main]  from main::@3
  [22] primeptr#1 = ++ primeptr#7
  [23] if(rem16s#10!=0) goto main::@4
  to:main::@5
main::@5: scope:[main]  from main::@9
  [24] testnum#2 = testnum#10 + 2
  to:main::@4
main::@4: scope:[main]  from main::@5 main::@9
  [25] testnum#11 = phi( main::@5/testnum#2, main::@9/testnum#10 )
  [25] primeptr#10 = phi( main::@5/2, main::@9/primeptr#1 )
  [26] if(primeptr#10<=lasttest#19) goto main::@3
  to:main::@6
main::@6: scope:[main]  from main::@4
  [27] lastprime#1 = ++ lastprime#17
  [28] main::$14 = lastprime#1 << 1
  [29] main::$18 = primenum + main::$14
  [30] *main::$18 = testnum#11
  [31] print_sint_decimal::w#1 = testnum#11
  [32] call print_sint_decimal
  to:main::@10
main::@10: scope:[main]  from main::@6
  [33] phi()
  [34] call print_char
  to:main::@11
main::@11: scope:[main]  from main::@10
  [35] if(lastprime#1<$3e8) goto main::@1
  to:main::@return
main::@return: scope:[main]  from main::@11
  [36] return 
  to:@return

long mul16s(int a , int b)
mul16s: scope:[mul16s]  from main::@1
  [37] mul16u::a#1 = (unsigned int)mul16s::a#0
  [38] mul16u::b#0 = (unsigned int)mul16s::b#0
  [39] call mul16u
  [40] mul16u::return#2 = mul16u::res#2
  to:mul16s::@5
mul16s::@5: scope:[mul16s]  from mul16s
  [41] mul16s::m#0 = mul16u::return#2
  [42] if(mul16s::a#0>=0) goto mul16s::@1
  to:mul16s::@3
mul16s::@3: scope:[mul16s]  from mul16s::@5
  [43] mul16s::$6 = word1  mul16s::m#0
  [44] mul16s::$11 = mul16s::$6 - (unsigned int)mul16s::b#0
  [45] mul16s::m#1 = mul16s::m#0 word1= mul16s::$11
  to:mul16s::@1
mul16s::@1: scope:[mul16s]  from mul16s::@3 mul16s::@5
  [46] mul16s::m#5 = phi( mul16s::@3/mul16s::m#1, mul16s::@5/mul16s::m#0 )
  [47] if(mul16s::b#0>=0) goto mul16s::@2
  to:mul16s::@4
mul16s::@4: scope:[mul16s]  from mul16s::@1
  [48] mul16s::$9 = word1  mul16s::m#5
  [49] mul16s::$12 = mul16s::$9 - (unsigned int)mul16s::a#0
  [50] mul16s::m#2 = mul16s::m#5 word1= mul16s::$12
  to:mul16s::@2
mul16s::@2: scope:[mul16s]  from mul16s::@1 mul16s::@4
  [51] mul16s::m#4 = phi( mul16s::@1/mul16s::m#5, mul16s::@4/mul16s::m#2 )
  [52] mul16s::return#0 = (long)mul16s::m#4
  to:mul16s::@return
mul16s::@return: scope:[mul16s]  from mul16s::@2
  [53] return 
  to:@return

int div16s(int dividend , int divisor)
div16s: scope:[div16s]  from main::@3
  [54] divr16s::dividend#0 = div16s::dividend#0
  [55] divr16s::divisor#0 = div16s::divisor#0
  [56] call divr16s
  to:div16s::@return
div16s::@return: scope:[div16s]  from div16s
  [57] return 
  to:@return

void print_sint_decimal(int w)
print_sint_decimal: scope:[print_sint_decimal]  from main::@6
  [58] if(print_sint_decimal::w#1<0) goto print_sint_decimal::@1
  to:print_sint_decimal::@3
print_sint_decimal::@3: scope:[print_sint_decimal]  from print_sint_decimal
  [59] phi()
  [60] call print_char
  to:print_sint_decimal::@2
print_sint_decimal::@2: scope:[print_sint_decimal]  from print_sint_decimal::@3 print_sint_decimal::@4
  [61] print_sint_decimal::w#4 = phi( print_sint_decimal::@4/print_sint_decimal::w#0, print_sint_decimal::@3/print_sint_decimal::w#1 )
  [62] utoa::value#0 = (unsigned int)print_sint_decimal::w#4
  [63] call utoa
  to:print_sint_decimal::@5
print_sint_decimal::@5: scope:[print_sint_decimal]  from print_sint_decimal::@2
  [64] phi()
  [65] call print_str
  to:print_sint_decimal::@return
print_sint_decimal::@return: scope:[print_sint_decimal]  from print_sint_decimal::@5
  [66] return 
  to:@return
print_sint_decimal::@1: scope:[print_sint_decimal]  from print_sint_decimal
  [67] phi()
  [68] call print_char
  to:print_sint_decimal::@4
print_sint_decimal::@4: scope:[print_sint_decimal]  from print_sint_decimal::@1
  [69] print_sint_decimal::w#0 = - print_sint_decimal::w#1
  to:print_sint_decimal::@2

void print_char(char ch)
print_char: scope:[print_char]  from main::@10 print_sint_decimal::@1 print_sint_decimal::@3 print_str::@2
  [70] print_char_cursor#20 = phi( main::@10/print_char_cursor#21, print_sint_decimal::@1/print_char_cursor#41, print_sint_decimal::@3/print_char_cursor#41, print_str::@2/print_char_cursor#21 )
  [70] print_char::ch#4 = phi( main::@10/' ', print_sint_decimal::@1/'-', print_sint_decimal::@3/' ', print_str::@2/print_char::ch#0 )
  [71] *print_char_cursor#20 = print_char::ch#4
  [72] print_char_cursor#21 = ++ print_char_cursor#20
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [73] return 
  to:@return

unsigned long mul16u(unsigned int a , unsigned int b)
mul16u: scope:[mul16u]  from mul16s
  [74] mul16u::mb#0 = (unsigned long)mul16u::b#0
  to:mul16u::@1
mul16u::@1: scope:[mul16u]  from mul16u mul16u::@3
  [75] mul16u::mb#2 = phi( mul16u/mul16u::mb#0, mul16u::@3/mul16u::mb#1 )
  [75] mul16u::res#2 = phi( mul16u/0, mul16u::@3/mul16u::res#6 )
  [75] mul16u::a#2 = phi( mul16u/mul16u::a#1, mul16u::@3/mul16u::a#0 )
  [76] if(mul16u::a#2!=0) goto mul16u::@2
  to:mul16u::@return
mul16u::@return: scope:[mul16u]  from mul16u::@1
  [77] return 
  to:@return
mul16u::@2: scope:[mul16u]  from mul16u::@1
  [78] mul16u::$1 = mul16u::a#2 & 1
  [79] if(mul16u::$1==0) goto mul16u::@3
  to:mul16u::@4
mul16u::@4: scope:[mul16u]  from mul16u::@2
  [80] mul16u::res#1 = mul16u::res#2 + mul16u::mb#2
  to:mul16u::@3
mul16u::@3: scope:[mul16u]  from mul16u::@2 mul16u::@4
  [81] mul16u::res#6 = phi( mul16u::@2/mul16u::res#2, mul16u::@4/mul16u::res#1 )
  [82] mul16u::a#0 = mul16u::a#2 >> 1
  [83] mul16u::mb#1 = mul16u::mb#2 << 1
  to:mul16u::@1

int divr16s(int dividend , int divisor , int rem)
divr16s: scope:[divr16s]  from div16s
  [84] if(divr16s::dividend#0<0) goto divr16s::@1
  to:divr16s::@6
divr16s::@6: scope:[divr16s]  from divr16s
  [85] divr16s::dividendu#8 = (unsigned int)divr16s::dividend#0
  to:divr16s::@2
divr16s::@2: scope:[divr16s]  from divr16s::@1 divr16s::@6
  [86] divr16s::dividendu#3 = phi( divr16s::@1/divr16s::dividendu#7, divr16s::@6/divr16s::dividendu#8 )
  [86] divr16s::neg#3 = phi( divr16s::@1/1, divr16s::@6/0 )
  [87] if(divr16s::divisor#0<0) goto divr16s::@3
  to:divr16s::@7
divr16s::@7: scope:[divr16s]  from divr16s::@2
  [88] divr16s::divisoru#5 = (unsigned int)divr16s::divisor#0
  to:divr16s::@4
divr16s::@4: scope:[divr16s]  from divr16s::@3 divr16s::@7
  [89] divr16s::neg#4 = phi( divr16s::@3/divr16s::neg#2, divr16s::@7/divr16s::neg#3 )
  [89] divr16s::divisoru#3 = phi( divr16s::@3/divr16s::divisoru#4, divr16s::@7/divr16s::divisoru#5 )
  [90] divr16u::dividend#1 = divr16s::dividendu#3
  [91] divr16u::divisor#0 = divr16s::divisoru#3
  [92] call divr16u
  to:divr16s::@9
divr16s::@9: scope:[divr16s]  from divr16s::@4
  [93] if(divr16s::neg#4==0) goto divr16s::@5
  to:divr16s::@8
divr16s::@8: scope:[divr16s]  from divr16s::@9
  [94] rem16s#1 = - (int)rem16u#0
  to:divr16s::@return
divr16s::@return: scope:[divr16s]  from divr16s::@5 divr16s::@8
  [95] rem16s#10 = phi( divr16s::@5/rem16s#30, divr16s::@8/rem16s#1 )
  [96] return 
  to:@return
divr16s::@5: scope:[divr16s]  from divr16s::@9
  [97] rem16s#30 = (int)rem16u#0
  to:divr16s::@return
divr16s::@3: scope:[divr16s]  from divr16s::@2
  [98] divr16s::divisoru#1 = - divr16s::divisor#0
  [99] divr16s::neg#2 = divr16s::neg#3 ^ 1
  [100] divr16s::divisoru#4 = (unsigned int)divr16s::divisoru#1
  to:divr16s::@4
divr16s::@1: scope:[divr16s]  from divr16s
  [101] divr16s::dividendu#1 = - divr16s::dividend#0
  [102] divr16s::dividendu#7 = (unsigned int)divr16s::dividendu#1
  to:divr16s::@2

void utoa(unsigned int value , char *buffer , char radix)
utoa: scope:[utoa]  from print_sint_decimal::@2
  [103] phi()
  to:utoa::@1
utoa::@1: scope:[utoa]  from utoa utoa::@4
  [104] utoa::buffer#11 = phi( utoa::@4/utoa::buffer#14, utoa/decimal_digits )
  [104] utoa::started#2 = phi( utoa::@4/utoa::started#4, utoa/0 )
  [104] utoa::value#2 = phi( utoa::@4/utoa::value#6, utoa/utoa::value#0 )
  [104] utoa::digit#2 = phi( utoa::@4/utoa::digit#1, utoa/0 )
  [105] if(utoa::digit#2<utoa::max_digits#1-1) goto utoa::@2
  to:utoa::@3
utoa::@3: scope:[utoa]  from utoa::@1
  [106] utoa::$11 = (char)utoa::value#2
  [107] *utoa::buffer#11 = DIGITS[utoa::$11]
  [108] utoa::buffer#4 = ++ utoa::buffer#11
  [109] *utoa::buffer#4 = 0
  to:utoa::@return
utoa::@return: scope:[utoa]  from utoa::@3
  [110] return 
  to:@return
utoa::@2: scope:[utoa]  from utoa::@1
  [111] utoa::$10 = utoa::digit#2 << 1
  [112] utoa::digit_value#0 = RADIX_DECIMAL_VALUES[utoa::$10]
  [113] if(0!=utoa::started#2) goto utoa::@5
  to:utoa::@7
utoa::@7: scope:[utoa]  from utoa::@2
  [114] if(utoa::value#2>=utoa::digit_value#0) goto utoa::@5
  to:utoa::@4
utoa::@4: scope:[utoa]  from utoa::@6 utoa::@7
  [115] utoa::buffer#14 = phi( utoa::@7/utoa::buffer#11, utoa::@6/utoa::buffer#5 )
  [115] utoa::started#4 = phi( utoa::@7/utoa::started#2, utoa::@6/1 )
  [115] utoa::value#6 = phi( utoa::@7/utoa::value#2, utoa::@6/utoa::value#1 )
  [116] utoa::digit#1 = ++ utoa::digit#2
  to:utoa::@1
utoa::@5: scope:[utoa]  from utoa::@2 utoa::@7
  [117] utoa_append::buffer#0 = utoa::buffer#11
  [118] utoa_append::value#0 = utoa::value#2
  [119] utoa_append::sub#0 = utoa::digit_value#0
  [120] call utoa_append
  [121] utoa_append::return#0 = utoa_append::value#2
  to:utoa::@6
utoa::@6: scope:[utoa]  from utoa::@5
  [122] utoa::value#1 = utoa_append::return#0
  [123] utoa::buffer#5 = ++ utoa::buffer#11
  to:utoa::@4

void print_str(char *str)
print_str: scope:[print_str]  from print_sint_decimal::@5
  [124] phi()
  to:print_str::@1
print_str::@1: scope:[print_str]  from print_str print_str::@3
  [125] print_str::str#2 = phi( print_str/decimal_digits, print_str::@3/print_str::str#0 )
  [126] if(0!=*print_str::str#2) goto print_str::@2
  to:print_str::@return
print_str::@return: scope:[print_str]  from print_str::@1
  [127] return 
  to:@return
print_str::@2: scope:[print_str]  from print_str::@1
  [128] print_char::ch#0 = *print_str::str#2
  [129] call print_char
  to:print_str::@3
print_str::@3: scope:[print_str]  from print_str::@2
  [130] print_str::str#0 = ++ print_str::str#2
  to:print_str::@1

unsigned int divr16u(unsigned int dividend , unsigned int divisor , unsigned int rem)
divr16u: scope:[divr16u]  from divr16s::@4
  [131] phi()
  to:divr16u::@1
divr16u::@1: scope:[divr16u]  from divr16u divr16u::@3
  [132] divr16u::i#2 = phi( divr16u/0, divr16u::@3/divr16u::i#1 )
  [132] divr16u::quotient#3 = phi( divr16u/0, divr16u::@3/divr16u::return#0 )
  [132] divr16u::dividend#2 = phi( divr16u/divr16u::dividend#1, divr16u::@3/divr16u::dividend#0 )
  [132] divr16u::rem#4 = phi( divr16u/0, divr16u::@3/divr16u::rem#10 )
  [133] divr16u::rem#0 = divr16u::rem#4 << 1
  [134] divr16u::$1 = byte1  divr16u::dividend#2
  [135] divr16u::$2 = divr16u::$1 & $80
  [136] if(divr16u::$2==0) goto divr16u::@2
  to:divr16u::@4
divr16u::@4: scope:[divr16u]  from divr16u::@1
  [137] divr16u::rem#1 = divr16u::rem#0 | 1
  to:divr16u::@2
divr16u::@2: scope:[divr16u]  from divr16u::@1 divr16u::@4
  [138] divr16u::rem#5 = phi( divr16u::@1/divr16u::rem#0, divr16u::@4/divr16u::rem#1 )
  [139] divr16u::dividend#0 = divr16u::dividend#2 << 1
  [140] divr16u::quotient#1 = divr16u::quotient#3 << 1
  [141] if(divr16u::rem#5<divr16u::divisor#0) goto divr16u::@3
  to:divr16u::@5
divr16u::@5: scope:[divr16u]  from divr16u::@2
  [142] divr16u::quotient#2 = ++ divr16u::quotient#1
  [143] divr16u::rem#2 = divr16u::rem#5 - divr16u::divisor#0
  to:divr16u::@3
divr16u::@3: scope:[divr16u]  from divr16u::@2 divr16u::@5
  [144] divr16u::return#0 = phi( divr16u::@2/divr16u::quotient#1, divr16u::@5/divr16u::quotient#2 )
  [144] divr16u::rem#10 = phi( divr16u::@2/divr16u::rem#5, divr16u::@5/divr16u::rem#2 )
  [145] divr16u::i#1 = ++ divr16u::i#2
  [146] if(divr16u::i#1!=$10) goto divr16u::@1
  to:divr16u::@6
divr16u::@6: scope:[divr16u]  from divr16u::@3
  [147] rem16u#0 = divr16u::rem#10
  to:divr16u::@return
divr16u::@return: scope:[divr16u]  from divr16u::@6
  [148] return 
  to:@return

unsigned int utoa_append(char *buffer , unsigned int value , unsigned int sub)
utoa_append: scope:[utoa_append]  from utoa::@5
  [149] phi()
  to:utoa_append::@1
utoa_append::@1: scope:[utoa_append]  from utoa_append utoa_append::@2
  [150] utoa_append::digit#2 = phi( utoa_append/0, utoa_append::@2/utoa_append::digit#1 )
  [150] utoa_append::value#2 = phi( utoa_append/utoa_append::value#0, utoa_append::@2/utoa_append::value#1 )
  [151] if(utoa_append::value#2>=utoa_append::sub#0) goto utoa_append::@2
  to:utoa_append::@3
utoa_append::@3: scope:[utoa_append]  from utoa_append::@1
  [152] *utoa_append::buffer#0 = DIGITS[utoa_append::digit#2]
  to:utoa_append::@return
utoa_append::@return: scope:[utoa_append]  from utoa_append::@3
  [153] return 
  to:@return
utoa_append::@2: scope:[utoa_append]  from utoa_append::@1
  [154] utoa_append::digit#1 = ++ utoa_append::digit#2
  [155] utoa_append::value#1 = utoa_append::value#2 - utoa_append::sub#0
  to:utoa_append::@1
