
void main()
main: scope:[main]  from
  [0] phi()
  [1] call init_points
  to:main::@1
main::@1: scope:[main]  from main
  [2] phi()
  [3] call print_points
  to:main::@return
main::@return: scope:[main]  from main::@1
  [4] return 
  to:@return

void init_points()
init_points: scope:[init_points]  from main
  [5] phi()
  to:init_points::@1
init_points::@1: scope:[init_points]  from init_points init_points::@3
  [6] init_points::pos#10 = phi( init_points/$a, init_points::@3/init_points::pos#2 )
  [6] init_points::i#10 = phi( init_points/0, init_points::@3/init_points::i#1 )
  to:init_points::getPoint1
init_points::getPoint1: scope:[init_points]  from init_points::@1
  [7] init_points::getPoint1_$0 = init_points::i#10 << 1
  [8] init_points::getPoint1_return#0 = points + init_points::getPoint1_$0
  to:init_points::pointXpos1
init_points::pointXpos1: scope:[init_points]  from init_points::getPoint1
  [9] phi()
  to:init_points::@2
init_points::@2: scope:[init_points]  from init_points::pointXpos1
  [10] points[init_points::getPoint1_$0] = init_points::pos#10
  [11] init_points::pos#1 = init_points::pos#10 + $a
  to:init_points::pointYpos1
init_points::pointYpos1: scope:[init_points]  from init_points::@2
  [12] phi()
  to:init_points::@3
init_points::@3: scope:[init_points]  from init_points::pointYpos1
  [13] init_points::getPoint1_return#0[1] = init_points::pos#1
  [14] init_points::pos#2 = init_points::pos#1 + $a
  [15] init_points::i#1 = ++ init_points::i#10
  [16] if(init_points::i#1!=NUM_POINTS-1+1) goto init_points::@1
  to:init_points::@return
init_points::@return: scope:[init_points]  from init_points::@3
  [17] return 
  to:@return

void print_points()
print_points: scope:[print_points]  from main::@1
  [18] phi()
  [19] call print_cls
  to:print_points::@1
print_points::@1: scope:[print_points]  from print_points print_points::@7
  [20] print_line_cursor#26 = phi( print_points/print_screen#0, print_points::@7/print_line_cursor#0 )
  [20] print_char_cursor#48 = phi( print_points/print_screen#0, print_points::@7/print_char_cursor#66 )
  [20] print_points::i#10 = phi( print_points/0, print_points::@7/print_points::i#1 )
  to:print_points::getPoint1
print_points::getPoint1: scope:[print_points]  from print_points::@1
  [21] print_points::getPoint1_$0 = print_points::i#10 << 1
  [22] print_points::point#0 = points + print_points::getPoint1_$0
  to:print_points::pointXpos1
print_points::pointXpos1: scope:[print_points]  from print_points::getPoint1
  [23] phi()
  to:print_points::@2
print_points::@2: scope:[print_points]  from print_points::pointXpos1
  [24] print_uchar::b#0 = points[print_points::getPoint1_$0]
  [25] call print_uchar
  to:print_points::@4
print_points::@4: scope:[print_points]  from print_points::@2
  [26] phi()
  [27] call print_str
  to:print_points::pointYpos1
print_points::pointYpos1: scope:[print_points]  from print_points::@4
  [28] phi()
  to:print_points::@3
print_points::@3: scope:[print_points]  from print_points::pointYpos1
  [29] print_uchar::b#1 = print_points::point#0[1]
  [30] call print_uchar
  to:print_points::@5
print_points::@5: scope:[print_points]  from print_points::@3
  [31] phi()
  [32] call print_ln
  to:print_points::@6
print_points::@6: scope:[print_points]  from print_points::@5
  [33] print_points::i#1 = ++ print_points::i#10
  [34] if(print_points::i#1!=NUM_POINTS-1+1) goto print_points::@7
  to:print_points::@return
print_points::@return: scope:[print_points]  from print_points::@6
  [35] return 
  to:@return
print_points::@7: scope:[print_points]  from print_points::@6
  [36] print_char_cursor#66 = print_line_cursor#0
  to:print_points::@1

void print_cls()
print_cls: scope:[print_cls]  from print_points
  [37] phi()
  [38] call memset
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls
  [39] return 
  to:@return

void print_uchar(char b)
print_uchar: scope:[print_uchar]  from print_points::@2 print_points::@3
  [40] print_char_cursor#45 = phi( print_points::@2/print_char_cursor#48, print_points::@3/print_char_cursor#30 )
  [40] print_uchar::b#2 = phi( print_points::@2/print_uchar::b#0, print_points::@3/print_uchar::b#1 )
  [41] print_uchar::$0 = print_uchar::b#2 >> 4
  [42] print_char::ch#1 = print_hextab[print_uchar::$0]
  [43] call print_char
  to:print_uchar::@1
print_uchar::@1: scope:[print_uchar]  from print_uchar
  [44] print_uchar::$2 = print_uchar::b#2 & $f
  [45] print_char::ch#2 = print_hextab[print_uchar::$2]
  [46] call print_char
  to:print_uchar::@return
print_uchar::@return: scope:[print_uchar]  from print_uchar::@1
  [47] return 
  to:@return

void print_str(char *str)
print_str: scope:[print_str]  from print_points::@4
  [48] phi()
  to:print_str::@1
print_str::@1: scope:[print_str]  from print_str print_str::@3
  [49] print_str::str#2 = phi( print_str/print_points::str, print_str::@3/print_str::str#0 )
  [50] if(0!=*print_str::str#2) goto print_str::@2
  to:print_str::@return
print_str::@return: scope:[print_str]  from print_str::@1
  [51] return 
  to:@return
print_str::@2: scope:[print_str]  from print_str::@1
  [52] print_char::ch#0 = *print_str::str#2
  [53] call print_char
  to:print_str::@3
print_str::@3: scope:[print_str]  from print_str::@2
  [54] print_str::str#0 = ++ print_str::str#2
  to:print_str::@1

void print_ln()
print_ln: scope:[print_ln]  from print_points::@5
  [55] phi()
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  [56] print_line_cursor#12 = phi( print_ln/print_line_cursor#26, print_ln::@1/print_line_cursor#0 )
  [57] print_line_cursor#0 = print_line_cursor#12 + $28
  [58] if(print_line_cursor#0<print_char_cursor#30) goto print_ln::@1
  to:print_ln::@return
print_ln::@return: scope:[print_ln]  from print_ln::@1
  [59] return 
  to:@return

void * memset(void *str , char c , unsigned int num)
memset: scope:[memset]  from print_cls
  [60] phi()
  to:memset::@1
memset::@1: scope:[memset]  from memset memset::@2
  [61] memset::dst#2 = phi( memset/(char *)memset::str#0, memset::@2/memset::dst#1 )
  [62] if(memset::dst#2!=memset::end#0) goto memset::@2
  to:memset::@return
memset::@return: scope:[memset]  from memset::@1
  [63] return 
  to:@return
memset::@2: scope:[memset]  from memset::@1
  [64] *memset::dst#2 = memset::c#0
  [65] memset::dst#1 = ++ memset::dst#2
  to:memset::@1

void print_char(char ch)
print_char: scope:[print_char]  from print_str::@2 print_uchar print_uchar::@1
  [66] print_char_cursor#29 = phi( print_str::@2/print_char_cursor#30, print_uchar/print_char_cursor#45, print_uchar::@1/print_char_cursor#30 )
  [66] print_char::ch#3 = phi( print_str::@2/print_char::ch#0, print_uchar/print_char::ch#1, print_uchar::@1/print_char::ch#2 )
  [67] *print_char_cursor#29 = print_char::ch#3
  [68] print_char_cursor#30 = ++ print_char_cursor#29
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [69] return 
  to:@return
