@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 initscreen 
  to:main::@1
main::@1: scope:[main]  from main main::@2
  [6] phi()
  [7] call render 
  to:main::@2
main::@2: scope:[main]  from main::@1
  [8] phi()
  [9] call animate 
  to:main::@1
animate: scope:[animate]  from main::@2
  [10] (byte~) animate::$0 ← *((const byte[]) XPOS#0) + (byte) 1
  [11] *((const byte[]) XPOS#0) ← (byte~) animate::$0
  [12] if(*((const byte[]) XPOS#0)!=(byte) $28) goto animate::@1
  to:animate::@5
animate::@5: scope:[animate]  from animate
  [13] *((const byte[]) XPOS#0) ← (byte) 0
  to:animate::@1
animate::@1: scope:[animate]  from animate animate::@5
  [14] (byte~) animate::$3 ← *((const byte[]) YPOS#0) + (byte) 1
  [15] *((const byte[]) YPOS#0) ← (byte~) animate::$3
  [16] if(*((const byte[]) YPOS#0)!=(byte) $19) goto animate::@2
  to:animate::@6
animate::@6: scope:[animate]  from animate::@1
  [17] *((const byte[]) YPOS#0) ← (byte) 0
  to:animate::@2
animate::@2: scope:[animate]  from animate::@1 animate::@6
  [18] (byte~) animate::$6 ← *((const byte[]) XPOS#0+(byte) 1) - (byte) 1
  [19] *((const byte[]) XPOS#0+(byte) 1) ← (byte~) animate::$6
  [20] if(*((const byte[]) XPOS#0+(byte) 1)!=(byte) $ff) goto animate::@3
  to:animate::@7
animate::@7: scope:[animate]  from animate::@2
  [21] *((const byte[]) XPOS#0+(byte) 1) ← (byte) $28
  to:animate::@3
animate::@3: scope:[animate]  from animate::@2 animate::@7
  [22] (byte~) animate::$9 ← *((const byte[]) YPOS#0+(byte) 2) + (byte) 1
  [23] *((const byte[]) YPOS#0+(byte) 2) ← (byte~) animate::$9
  [24] if(*((const byte[]) YPOS#0+(byte) 2)!=(byte) $19) goto animate::@4
  to:animate::@8
animate::@8: scope:[animate]  from animate::@3
  [25] *((const byte[]) YPOS#0+(byte) 2) ← (byte) 0
  to:animate::@4
animate::@4: scope:[animate]  from animate::@3 animate::@8
  [26] (byte~) animate::$12 ← *((const byte[]) YPOS#0+(byte) 3) - (byte) 1
  [27] *((const byte[]) YPOS#0+(byte) 3) ← (byte~) animate::$12
  [28] if(*((const byte[]) YPOS#0+(byte) 3)!=(byte) $ff) goto animate::@return
  to:animate::@9
animate::@9: scope:[animate]  from animate::@4
  [29] *((const byte[]) YPOS#0+(byte) 3) ← (byte) $19
  [30] (byte~) animate::$15 ← *((const byte[]) XPOS#0+(byte) 3) + (byte) 7
  [31] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$15
  [32] if(*((const byte[]) XPOS#0+(byte) 3)<(byte) $28) goto animate::@return
  to:animate::@10
animate::@10: scope:[animate]  from animate::@9
  [33] (byte~) animate::$18 ← *((const byte[]) XPOS#0+(byte) 3) - (byte) $28
  [34] *((const byte[]) XPOS#0+(byte) 3) ← (byte~) animate::$18
  to:animate::@return
animate::@return: scope:[animate]  from animate::@10 animate::@4 animate::@9
  [35] return 
  to:@return
render: scope:[render]  from main::@1
  [36] phi()
  to:render::@1
render::@1: scope:[render]  from render render::@3
  [37] (byte*) render::colline#5 ← phi( render/(const byte*) COLORS#0 render::@3/(byte*) render::colline#1 )
  [37] (byte) render::y#4 ← phi( render/(byte) 0 render::@3/(byte) render::y#1 )
  to:render::@2
render::@2: scope:[render]  from render::@1 render::@4
  [38] (byte) render::x#2 ← phi( render::@1/(byte) 0 render::@4/(byte) render::x#1 )
  [39] (byte) findcol::x#0 ← (byte) render::x#2
  [40] (byte) findcol::y#0 ← (byte) render::y#4
  [41] call findcol 
  [42] (byte) findcol::return#0 ← (byte) findcol::return#3
  to:render::@4
render::@4: scope:[render]  from render::@2
  [43] (byte) render::col#0 ← (byte) findcol::return#0
  [44] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0
  [45] (byte) render::x#1 ← ++ (byte) render::x#2
  [46] if((byte) render::x#1!=(byte) $28) goto render::@2
  to:render::@3
render::@3: scope:[render]  from render::@4
  [47] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte) $28
  [48] (byte) render::y#1 ← ++ (byte) render::y#4
  [49] if((byte) render::y#1!=(byte) $19) goto render::@1
  to:render::@return
render::@return: scope:[render]  from render::@3
  [50] return 
  to:@return
findcol: scope:[findcol]  from render::@2
  [51] phi()
  to:findcol::@2
findcol::@2: scope:[findcol]  from findcol findcol::@13
  [52] (byte) findcol::mindiff#13 ← phi( findcol::@13/(byte~) findcol::mindiff#23 findcol/(byte) $ff )
  [52] (byte) findcol::mincol#15 ← phi( findcol::@13/(byte) findcol::mincol#10 findcol/(byte) 0 )
  [52] (byte) findcol::i#14 ← phi( findcol::@13/(byte) findcol::i#1 findcol/(byte) 0 )
  [53] (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#14)
  [54] (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#14)
  [55] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@3
  to:findcol::@9
findcol::@9: scope:[findcol]  from findcol::@2
  [56] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@3
  to:findcol::@return
findcol::@return: scope:[findcol]  from findcol::@1 findcol::@9
  [57] (byte) findcol::return#3 ← phi( findcol::@9/(byte) 0 findcol::@1/(byte) findcol::mincol#10 )
  [58] return 
  to:@return
findcol::@3: scope:[findcol]  from findcol::@2 findcol::@9
  [59] if((byte) findcol::x#0<(byte) findcol::xp#0) goto findcol::@4
  to:findcol::@10
findcol::@10: scope:[findcol]  from findcol::@3
  [60] (byte) findcol::diff#2 ← (byte) findcol::x#0 - (byte) findcol::xp#0
  to:findcol::@5
findcol::@5: scope:[findcol]  from findcol::@10 findcol::@4
  [61] (byte) findcol::diff#5 ← phi( findcol::@10/(byte) findcol::diff#2 findcol::@4/(byte) findcol::diff#1 )
  [62] if((byte) findcol::y#0<(byte) findcol::yp#0) goto findcol::@6
  to:findcol::@11
findcol::@11: scope:[findcol]  from findcol::@5
  [63] (byte~) findcol::$9 ← (byte) findcol::y#0 - (byte) findcol::yp#0
  [64] (byte) findcol::diff#4 ← (byte) findcol::diff#5 + (byte~) findcol::$9
  to:findcol::@7
findcol::@7: scope:[findcol]  from findcol::@11 findcol::@6
  [65] (byte) findcol::diff#7 ← phi( findcol::@11/(byte) findcol::diff#4 findcol::@6/(byte) findcol::diff#3 )
  [66] if((byte) findcol::diff#7>=(byte) findcol::mindiff#13) goto findcol::@14
  to:findcol::@12
findcol::@12: scope:[findcol]  from findcol::@7
  [67] (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#14)
  to:findcol::@8
findcol::@8: scope:[findcol]  from findcol::@12 findcol::@14
  [68] (byte) findcol::mindiff#10 ← phi( findcol::@12/(byte) findcol::diff#7 findcol::@14/(byte~) findcol::mindiff#25 )
  [68] (byte) findcol::mincol#10 ← phi( findcol::@12/(byte) findcol::mincol#1 findcol::@14/(byte) findcol::mincol#15 )
  [69] (byte) findcol::i#1 ← ++ (byte) findcol::i#14
  to:findcol::@1
findcol::@1: scope:[findcol]  from findcol::@8
  [70] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@13
  to:findcol::@return
findcol::@13: scope:[findcol]  from findcol::@1
  [71] (byte~) findcol::mindiff#23 ← (byte) findcol::mindiff#10
  to:findcol::@2
findcol::@14: scope:[findcol]  from findcol::@7
  [72] (byte~) findcol::mindiff#25 ← (byte) findcol::mindiff#13
  to:findcol::@8
findcol::@6: scope:[findcol]  from findcol::@5
  [73] (byte~) findcol::$11 ← (byte) findcol::yp#0 - (byte) findcol::y#0
  [74] (byte) findcol::diff#3 ← (byte) findcol::diff#5 + (byte~) findcol::$11
  to:findcol::@7
findcol::@4: scope:[findcol]  from findcol::@3
  [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0
  to:findcol::@5
initscreen: scope:[initscreen]  from main
  [76] phi()
  to:initscreen::@2
initscreen::@2: scope:[initscreen]  from initscreen initscreen::@1
  [77] (byte*) initscreen::screen#4 ← phi( initscreen::@1/(byte*) initscreen::screen#1 initscreen/(const byte*) SCREEN#0 )
  [78] *((byte*) initscreen::screen#4) ← (const byte) FILL#0
  [79] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#4
  to:initscreen::@1
initscreen::@1: scope:[initscreen]  from initscreen::@2
  [80] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) $3e8) goto initscreen::@2
  to:initscreen::@return
initscreen::@return: scope:[initscreen]  from initscreen::@1
  [81] return 
  to:@return
