@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::@2 main::@2: scope:[main] from main [6] phi() [7] call fill to:main::@3 main::@3: scope:[main] from main::@2 [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 [11] call circle to:main::@1 main::@1: scope:[main] from main::@1 main::@3 [12] phi() to:main::@1 (void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r) circle: scope:[circle] from main::@3 [13] phi() to:circle::@1 circle::@1: scope:[circle] from circle circle::@13 [14] (signed word) circle::p#3 ← phi( circle/(signed byte) 3-(const signed word) circle::r#0<<(signed byte) 1 circle::@13/(signed word) circle::p#10 ) [14] (signed word) circle::y#13 ← phi( circle/(const signed word) circle::r#0 circle::@13/(signed word) circle::y#10 ) [14] (signed word) circle::x1#10 ← phi( circle/(signed byte) 0 circle::@13/(signed word) circle::x1#1 ) [15] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 to:circle::@return circle::@return: scope:[circle] from circle::@1 [16] return to:@return circle::@2: scope:[circle] from circle::@1 [17] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 to:circle::@5 circle::@5: scope:[circle] from circle::@2 [18] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [19] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [20] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [21] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [22] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a to:circle::@4 circle::@4: scope:[circle] from circle::@3 circle::@5 [23] (signed word) circle::p#10 ← phi( circle::@3/(signed word) circle::p#1 circle::@5/(signed word) circle::p#2 ) [23] (signed word) circle::y#10 ← phi( circle::@3/(signed word) circle::y#13 circle::@5/(signed word) circle::y#1 ) [24] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [25] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [26] call plot to:circle::@6 circle::@6: scope:[circle] from circle::@4 [27] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [28] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [29] call plot to:circle::@7 circle::@7: scope:[circle] from circle::@6 [30] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [31] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [32] call plot to:circle::@8 circle::@8: scope:[circle] from circle::@7 [33] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [34] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [35] call plot to:circle::@9 circle::@9: scope:[circle] from circle::@8 [36] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [37] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [38] call plot to:circle::@10 circle::@10: scope:[circle] from circle::@9 [39] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [40] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [41] call plot to:circle::@11 circle::@11: scope:[circle] from circle::@10 [42] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [43] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [44] call plot to:circle::@12 circle::@12: scope:[circle] from circle::@11 [45] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [46] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [47] call plot to:circle::@13 circle::@13: scope:[circle] from circle::@12 [48] (signed word) circle::x1#1 ← ++ (signed word) circle::x1#10 to:circle::@1 circle::@3: scope:[circle] from circle::@2 [49] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [50] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [51] (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 [52] (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 ) [52] (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 ) [53] (signed word~) plot::$0 ← (signed word) plot::x#8 & (signed dword) $fff8 [54] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$0 [55] (byte~) plot::$1 ← < (signed word) plot::y#8 [56] (byte~) plot::$2 ← (byte~) plot::$1 & (byte) 7 [57] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$2 [58] (signed word~) plot::$3 ← (signed word) plot::y#8 >> (signed byte) 3 [59] (signed word) plot::$7 ← (signed word~) plot::$3 << (byte) 2 [60] (signed word) plot::$8 ← (signed word) plot::$7 + (signed word~) plot::$3 [61] (signed word~) plot::$4 ← (signed word) plot::$8 << (byte) 6 [62] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$4 [63] (signed byte~) plot::$5 ← (signed word) plot::x#8 & (signed byte) 7 [64] (byte~) plot::$6 ← *((byte*) plot::location#3) | *((const byte[]) bitmask + (signed byte~) plot::$5) [65] *((byte*) plot::location#3) ← (byte~) plot::$6 to:plot::@return plot::@return: scope:[plot] from plot [66] return to:@return (void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val) fill: scope:[fill] from main main::@2 [67] (byte) fill::val#4 ← phi( main/(byte) 0 main::@2/(byte) $16 ) [67] (signed word) fill::size#2 ← phi( main/(signed word)(number) $28*(number) $19*(number) 8 main::@2/(signed word)(number) $28*(number) $19 ) [67] (byte*) fill::addr#0 ← phi( main/(const byte*) BITMAP main::@2/(const byte*) SCREEN ) [68] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 to:fill::@1 fill::@1: scope:[fill] from fill fill::@2 [69] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@2/(byte*) fill::addr#1 ) [70] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 to:fill::@return fill::@return: scope:[fill] from fill::@1 [71] return to:@return fill::@2: scope:[fill] from fill::@1 [72] *((byte*) fill::addr#2) ← (byte) fill::val#4 [73] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 to:fill::@1