@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()
main: scope:[main]  from @1
  [4] phi()
  [5] call init_points 
  to:main::@1
main::@1: scope:[main]  from main
  [6] phi()
  [7] call print_points 
  to:main::@return
main::@return: scope:[main]  from main::@1
  [8] return 
  to:@return
print_points: scope:[print_points]  from main::@1
  [9] phi()
  [10] call print_cls 
  to:print_points::@1
print_points::@1: scope:[print_points]  from print_points print_points::@7
  [11] (byte*) print_line_cursor#24 ← phi( print_points::@7/(byte*) print_line_cursor#1 print_points/(byte*) 1024 )
  [11] (byte*) print_char_cursor#45 ← phi( print_points::@7/(byte*~) print_char_cursor#66 print_points/(byte*) 1024 )
  [11] (byte) print_points::i#10 ← phi( print_points::@7/(byte) print_points::i#1 print_points/(byte) 0 )
  to:print_points::getPoint1
print_points::getPoint1: scope:[print_points]  from print_points::@1
  [12] (byte~) print_points::getPoint1_$0#0 ← (byte) print_points::i#10 << (byte) 1
  [13] (byte*) print_points::point#0 ← (const byte[NUM_POINTS#0*SIZEOF_POINT#0]) points#0 + (byte~) print_points::getPoint1_$0#0
  to:print_points::pointXpos1
print_points::pointXpos1: scope:[print_points]  from print_points::getPoint1
  [14] phi()
  to:print_points::@2
print_points::@2: scope:[print_points]  from print_points::pointXpos1
  [15] (byte) print_byte::b#0 ← *((const byte[NUM_POINTS#0*SIZEOF_POINT#0]) points#0 + (byte~) print_points::getPoint1_$0#0)
  [16] call print_byte 
  to:print_points::@4
print_points::@4: scope:[print_points]  from print_points::@2
  [17] phi()
  [18] call print_str 
  to:print_points::pointYpos1
print_points::pointYpos1: scope:[print_points]  from print_points::@4
  [19] phi()
  to:print_points::@3
print_points::@3: scope:[print_points]  from print_points::pointYpos1
  [20] (byte) print_byte::b#1 ← *((byte*) print_points::point#0 + (byte) 1)
  [21] call print_byte 
  to:print_points::@5
print_points::@5: scope:[print_points]  from print_points::@3
  [22] phi()
  [23] call print_ln 
  to:print_points::@6
print_points::@6: scope:[print_points]  from print_points::@5
  [24] (byte) print_points::i#1 ← ++ (byte) print_points::i#10
  [25] if((byte) print_points::i#1!=(const byte) NUM_POINTS#0-(byte) 1+(byte) 1) goto print_points::@7
  to:print_points::@return
print_points::@return: scope:[print_points]  from print_points::@6
  [26] return 
  to:@return
print_points::@7: scope:[print_points]  from print_points::@6
  [27] (byte*~) print_char_cursor#66 ← (byte*) print_line_cursor#1
  to:print_points::@1
print_ln: scope:[print_ln]  from print_points::@5
  [28] phi()
  to:print_ln::@1
print_ln::@1: scope:[print_ln]  from print_ln print_ln::@1
  [29] (byte*) print_line_cursor#11 ← phi( print_ln/(byte*) print_line_cursor#24 print_ln::@1/(byte*) print_line_cursor#1 )
  [30] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#11 + (byte) $28
  [31] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#29) goto print_ln::@1
  to:print_ln::@return
print_ln::@return: scope:[print_ln]  from print_ln::@1
  [32] return 
  to:@return
print_byte: scope:[print_byte]  from print_points::@2 print_points::@3
  [33] (byte*) print_char_cursor#42 ← phi( print_points::@2/(byte*) print_char_cursor#45 print_points::@3/(byte*) print_char_cursor#2 )
  [33] (byte) print_byte::b#2 ← phi( print_points::@2/(byte) print_byte::b#0 print_points::@3/(byte) print_byte::b#1 )
  [34] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
  [35] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
  [36] call print_char 
  to:print_byte::@1
print_byte::@1: scope:[print_byte]  from print_byte
  [37] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
  [38] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
  [39] call print_char 
  to:print_byte::@return
print_byte::@return: scope:[print_byte]  from print_byte::@1
  [40] return 
  to:@return
print_char: scope:[print_char]  from print_byte print_byte::@1
  [41] (byte*) print_char_cursor#28 ← phi( print_byte/(byte*) print_char_cursor#42 print_byte::@1/(byte*) print_char_cursor#29 )
  [41] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 )
  [42] *((byte*) print_char_cursor#28) ← (byte) print_char::ch#2
  [43] (byte*) print_char_cursor#29 ← ++ (byte*) print_char_cursor#28
  to:print_char::@return
print_char::@return: scope:[print_char]  from print_char
  [44] return 
  to:@return
print_str: scope:[print_str]  from print_points::@4
  [45] phi()
  to:print_str::@1
print_str::@1: scope:[print_str]  from print_str print_str::@2
  [46] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#29 print_str::@2/(byte*) print_char_cursor#1 )
  [46] (byte*) print_str::str#2 ← phi( print_str/(const string) print_points::str print_str::@2/(byte*) print_str::str#0 )
  [47] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2
  to:print_str::@return
print_str::@return: scope:[print_str]  from print_str::@1
  [48] return 
  to:@return
print_str::@2: scope:[print_str]  from print_str::@1
  [49] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#2)
  [50] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2
  [51] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#2
  to:print_str::@1
print_cls: scope:[print_cls]  from print_points
  [52] phi()
  [53] call memset 
  to:print_cls::@return
print_cls::@return: scope:[print_cls]  from print_cls
  [54] return 
  to:@return
memset: scope:[memset]  from print_cls
  [55] phi()
  to:memset::@1
memset::@1: scope:[memset]  from memset memset::@1
  [56] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@1/(byte*) memset::dst#1 )
  [57] *((byte*) memset::dst#2) ← (const byte) memset::c#0
  [58] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
  [59] if((byte*) memset::dst#1!=(const byte*) memset::end#0) goto memset::@1
  to:memset::@return
memset::@return: scope:[memset]  from memset::@1
  [60] return 
  to:@return
init_points: scope:[init_points]  from main
  [61] phi()
  to:init_points::@1
init_points::@1: scope:[init_points]  from init_points init_points::@3
  [62] (byte) init_points::pos#10 ← phi( init_points/(byte) $a init_points::@3/(byte) init_points::pos#2 )
  [62] (byte) init_points::i#10 ← phi( init_points/(byte) 0 init_points::@3/(byte) init_points::i#1 )
  to:init_points::getPoint1
init_points::getPoint1: scope:[init_points]  from init_points::@1
  [63] (byte~) init_points::getPoint1_$0#0 ← (byte) init_points::i#10 << (byte) 1
  [64] (byte*) init_points::getPoint1_return#0 ← (const byte[NUM_POINTS#0*SIZEOF_POINT#0]) points#0 + (byte~) init_points::getPoint1_$0#0
  to:init_points::pointXpos1
init_points::pointXpos1: scope:[init_points]  from init_points::getPoint1
  [65] phi()
  to:init_points::@2
init_points::@2: scope:[init_points]  from init_points::pointXpos1
  [66] *((const byte[NUM_POINTS#0*SIZEOF_POINT#0]) points#0 + (byte~) init_points::getPoint1_$0#0) ← (byte) init_points::pos#10
  [67] (byte) init_points::pos#1 ← (byte) init_points::pos#10 + (byte) $a
  to:init_points::pointYpos1
init_points::pointYpos1: scope:[init_points]  from init_points::@2
  [68] phi()
  to:init_points::@3
init_points::@3: scope:[init_points]  from init_points::pointYpos1
  [69] *((byte*) init_points::getPoint1_return#0 + (byte) 1) ← (byte) init_points::pos#1
  [70] (byte) init_points::pos#2 ← (byte) init_points::pos#1 + (byte) $a
  [71] (byte) init_points::i#1 ← ++ (byte) init_points::i#10
  [72] if((byte) init_points::i#1!=(const byte) NUM_POINTS#0-(byte) 1+(byte) 1) goto init_points::@1
  to:init_points::@return
init_points::@return: scope:[init_points]  from init_points::@3
  [73] return 
  to:@return
