
void main()
main: scope:[main]  from
  [0] phi()
  [1] call fill
  to:main::@2
main::@2: scope:[main]  from main
  [2] phi()
  [3] call fill
  to:main::@3
main::@3: scope:[main]  from main::@2
  [4] *BORDER_COLOR = BLUE
  [5] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
  [6] *VICII_MEMORY = (char)(unsigned int)SCREEN&$3fff/$40|(unsigned int)BITMAP&$3fff/$400
  [7] call circle
  to:main::@1
main::@1: scope:[main]  from main::@1 main::@3
  [8] phi()
  to:main::@1

void fill(char *start , int size , char val)
fill: scope:[fill]  from main main::@2
  [9] fill::val#4 = phi( main/0, main::@2/$16 )
  [9] fill::size#2 = phi( main/(int)$28*$19*8, main::@2/(int)$28*$19 )
  [9] fill::addr#0 = phi( main/BITMAP, main::@2/SCREEN )
  [10] fill::end#0 = fill::addr#0 + fill::size#2
  to:fill::@1
fill::@1: scope:[fill]  from fill fill::@2
  [11] fill::addr#2 = phi( fill/fill::addr#0, fill::@2/fill::addr#1 )
  [12] if(fill::addr#2!=fill::end#0) goto fill::@2
  to:fill::@return
fill::@return: scope:[fill]  from fill::@1
  [13] return 
  to:@return
fill::@2: scope:[fill]  from fill::@1
  [14] *fill::addr#2 = fill::val#4
  [15] fill::addr#1 = ++ fill::addr#2
  to:fill::@1

void circle(int xc , int yc , int r)
circle: scope:[circle]  from main::@3
  [16] phi()
  to:circle::@1
circle::@1: scope:[circle]  from circle circle::@13
  [17] circle::p#3 = phi( circle/3-circle::r#0<<1, circle::@13/circle::p#10 )
  [17] circle::y#13 = phi( circle/circle::r#0, circle::@13/circle::y#10 )
  [17] circle::x1#10 = phi( circle/0, circle::@13/circle::x1#1 )
  [18] if(circle::x1#10<=circle::y#13) goto circle::@2
  to:circle::@return
circle::@return: scope:[circle]  from circle::@1
  [19] return 
  to:@return
circle::@2: scope:[circle]  from circle::@1
  [20] if(circle::p#3<0) goto circle::@3
  to:circle::@5
circle::@5: scope:[circle]  from circle::@2
  [21] circle::y#1 = circle::y#13 - 1
  [22] circle::$5 = circle::x1#10 - circle::y#1
  [23] circle::$6 = circle::$5 << 2
  [24] circle::$7 = circle::p#3 + circle::$6
  [25] circle::p#2 = circle::$7 + $a
  to:circle::@4
circle::@4: scope:[circle]  from circle::@3 circle::@5
  [26] circle::p#10 = phi( circle::@3/circle::p#1, circle::@5/circle::p#2 )
  [26] circle::y#10 = phi( circle::@3/circle::y#13, circle::@5/circle::y#1 )
  [27] plot::x#0 = circle::xc#0 + circle::x1#10
  [28] plot::y#0 = circle::yc#0 - circle::y#10
  [29] call plot
  to:circle::@6
circle::@6: scope:[circle]  from circle::@4
  [30] plot::x#1 = circle::xc#0 - circle::x1#10
  [31] plot::y#1 = circle::yc#0 - circle::y#10
  [32] call plot
  to:circle::@7
circle::@7: scope:[circle]  from circle::@6
  [33] plot::x#2 = circle::xc#0 + circle::x1#10
  [34] plot::y#2 = circle::yc#0 + circle::y#10
  [35] call plot
  to:circle::@8
circle::@8: scope:[circle]  from circle::@7
  [36] plot::x#3 = circle::xc#0 - circle::x1#10
  [37] plot::y#3 = circle::yc#0 + circle::y#10
  [38] call plot
  to:circle::@9
circle::@9: scope:[circle]  from circle::@8
  [39] plot::x#4 = circle::xc#0 + circle::y#10
  [40] plot::y#4 = circle::yc#0 - circle::x1#10
  [41] call plot
  to:circle::@10
circle::@10: scope:[circle]  from circle::@9
  [42] plot::x#5 = circle::xc#0 - circle::y#10
  [43] plot::y#5 = circle::yc#0 - circle::x1#10
  [44] call plot
  to:circle::@11
circle::@11: scope:[circle]  from circle::@10
  [45] plot::x#6 = circle::xc#0 + circle::y#10
  [46] plot::y#6 = circle::yc#0 + circle::x1#10
  [47] call plot
  to:circle::@12
circle::@12: scope:[circle]  from circle::@11
  [48] plot::x#7 = circle::xc#0 - circle::y#10
  [49] plot::y#7 = circle::yc#0 + circle::x1#10
  [50] call plot
  to:circle::@13
circle::@13: scope:[circle]  from circle::@12
  [51] circle::x1#1 = ++ circle::x1#10
  to:circle::@1
circle::@3: scope:[circle]  from circle::@2
  [52] circle::$9 = circle::x1#10 << 2
  [53] circle::$10 = circle::p#3 + circle::$9
  [54] circle::p#1 = circle::$10 + 6
  to:circle::@4

void plot(int x , int y)
plot: scope:[plot]  from circle::@10 circle::@11 circle::@12 circle::@4 circle::@6 circle::@7 circle::@8 circle::@9
  [55] plot::y#8 = phi( circle::@10/plot::y#5, circle::@11/plot::y#6, circle::@12/plot::y#7, circle::@4/plot::y#0, circle::@6/plot::y#1, circle::@7/plot::y#2, circle::@8/plot::y#3, circle::@9/plot::y#4 )
  [55] plot::x#8 = phi( circle::@10/plot::x#5, circle::@11/plot::x#6, circle::@12/plot::x#7, circle::@4/plot::x#0, circle::@6/plot::x#1, circle::@7/plot::x#2, circle::@8/plot::x#3, circle::@9/plot::x#4 )
  [56] plot::$0 = plot::x#8 & $fff8
  [57] plot::location#1 = BITMAP + plot::$0
  [58] plot::$6 = (char)plot::y#8
  [59] plot::$1 = plot::$6 & 7
  [60] plot::location#2 = plot::location#1 + plot::$1
  [61] plot::$2 = plot::y#8 >> 3
  [62] plot::$7 = plot::$2 << 2
  [63] plot::$8 = plot::$7 + plot::$2
  [64] plot::$3 = plot::$8 << 6
  [65] plot::location#3 = plot::location#2 + plot::$3
  [66] plot::$4 = plot::x#8 & 7
  [67] plot::$5 = *plot::location#3 | bitmask[plot::$4]
  [68] *plot::location#3 = plot::$5
  to:plot::@return
plot::@return: scope:[plot]  from plot
  [69] return 
  to:@return
