@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()

(void()) main()
main: scope:[main]  from @1
  [4] phi()
  [5] call fill 
  to:main::@4
main::@4: scope:[main]  from main
  [6] phi()
  [7] call fill 
  to:main::@5
main::@5: scope:[main]  from main::@4
  [8] *((const byte*) BORDERCOL) ← (const byte) BLUE
  [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3
  [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400
  to:main::@1
main::@1: scope:[main]  from main::@5 main::@6
  [11] (signed word) main::i#2 ← phi( main::@5/(signed word) 1 main::@6/(signed word) main::i#1 )
  [12] if((signed word) main::i#2<(signed word) $b4) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@1 main::@3
  [13] phi()
  to:main::@3
main::@2: scope:[main]  from main::@1
  [14] (signed word) circle::r#0 ← (signed word) main::i#2
  [15] call circle 
  to:main::@6
main::@6: scope:[main]  from main::@2
  [16] (signed word) main::i#1 ← (signed word) main::i#2 + (signed byte) 5
  to:main::@1

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

(void()) plot((signed word) plot::x , (signed word) plot::y)
plot: scope:[plot]  from circle::@10 circle::@11 circle::@12 circle::@4 circle::@6 circle::@7 circle::@8 circle::@9
  [57] (signed word) plot::y#8 ← phi( circle::@6/(signed word) plot::y#1 circle::@7/(signed word) plot::y#2 circle::@8/(signed word) plot::y#3 circle::@9/(signed word) plot::y#4 circle::@10/(signed word) plot::y#5 circle::@11/(signed word) plot::y#6 circle::@12/(signed word) plot::y#7 circle::@4/(signed word) plot::y#0 )
  [57] (signed word) plot::x#8 ← phi( circle::@6/(signed word) plot::x#1 circle::@7/(signed word) plot::x#2 circle::@8/(signed word) plot::x#3 circle::@9/(signed word) plot::x#4 circle::@10/(signed word) plot::x#5 circle::@11/(signed word) plot::x#6 circle::@12/(signed word) plot::x#7 circle::@4/(signed word) plot::x#0 )
  [58] if((signed word) plot::x#8<(signed byte) 0) goto plot::@return
  to:plot::@4
plot::@4: scope:[plot]  from plot
  [59] if((signed word) plot::x#8>(signed word) $13f) goto plot::@return
  to:plot::@3
plot::@3: scope:[plot]  from plot::@4
  [60] if((signed word) plot::y#8<(signed byte) 0) goto plot::@return
  to:plot::@2
plot::@2: scope:[plot]  from plot::@3
  [61] if((signed word) plot::y#8>=(signed word) $c7+(signed byte) 1) goto plot::@return
  to:plot::@1
plot::@1: scope:[plot]  from plot::@2
  [62] (signed word~) plot::$8 ← (signed word) plot::x#8 & (signed dword) $fff8
  [63] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$8
  [64] (byte~) plot::$9 ← < (signed word) plot::y#8
  [65] (byte~) plot::$10 ← (byte~) plot::$9 & (byte) 7
  [66] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$10
  [67] (signed word~) plot::$11 ← (signed word) plot::y#8 >> (signed byte) 3
  [68] (signed word~) plot::$15 ← (signed word~) plot::$11 << (byte) 2
  [69] (signed word~) plot::$16 ← (signed word~) plot::$15 + (signed word~) plot::$11
  [70] (signed word~) plot::$12 ← (signed word~) plot::$16 << (byte) 6
  [71] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$12
  [72] (signed byte~) plot::$13 ← (signed word) plot::x#8 & (signed byte) 7
  [73] (byte~) plot::$14 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$13)
  [74] *((byte*) plot::location#3) ← (byte~) plot::$14
  to:plot::@return
plot::@return: scope:[plot]  from plot plot::@1 plot::@2 plot::@3 plot::@4
  [75] return 
  to:@return

(void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val)
fill: scope:[fill]  from main main::@4
  [76] (byte) fill::val#4 ← phi( main/(byte) 0 main::@4/(byte) $16 )
  [76] (signed word) fill::size#2 ← phi( main/(signed word)(number) $28*(number) $19*(number) 8 main::@4/(signed word)(number) $28*(number) $19 )
  [76] (byte*) fill::addr#0 ← phi( main/(const byte*) BITMAP main::@4/(const byte*) SCREEN )
  [77] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2
  to:fill::@1
fill::@1: scope:[fill]  from fill fill::@2
  [78] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@2/(byte*) fill::addr#1 )
  [79] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2
  to:fill::@return
fill::@return: scope:[fill]  from fill::@1
  [80] return 
  to:@return
fill::@2: scope:[fill]  from fill::@1
  [81] *((byte*) fill::addr#2) ← (byte) fill::val#4
  [82] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2
  to:fill::@1
