Identified constant variable (signed word) circle::x
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx 
Culled Empty Block (label) @1
Culled Empty Block (label) @2
Culled Empty Block (label) @3
Culled Empty Block (label) @4
Culled Empty Block (label) main::@4
Culled Empty Block (label) main::@3
Culled Empty Block (label) main::@5
Culled Empty Block (label) main::@6
Culled Empty Block (label) main::@8
Culled Empty Block (label) @5
Culled Empty Block (label) circle::@6
Culled Empty Block (label) circle::@3
Culled Empty Block (label) circle::@7
Culled Empty Block (label) circle::@9
Culled Empty Block (label) circle::@10
Culled Empty Block (label) @6
Culled Empty Block (label) plot::@2
Culled Empty Block (label) plot::@3
Culled Empty Block (label) @7
Culled Empty Block (label) fill::@4
Culled Empty Block (label) fill::@3
Culled Empty Block (label) fill::@5
Culled Empty Block (label) fill::@6

CONTROL FLOW GRAPH SSA
@begin: scope:[]  from
  to:@8

(void()) main()
main: scope:[main]  from @8
  (byte*) fill::start#0 ← (const byte*) BITMAP
  (signed word) fill::size#0 ← (number) $28*(number) $19*(number) 8
  (byte) fill::val#0 ← (number) 0
  call fill 
  to:main::@9
main::@9: scope:[main]  from main
  (byte*) fill::start#1 ← (const byte*) SCREEN
  (signed word) fill::size#1 ← (number) $28*(number) $19
  (byte) fill::val#1 ← (number) $16
  call fill 
  to:main::@10
main::@10: scope:[main]  from main::@9
  *((const byte*) BORDERCOL) ← (const byte) BLUE
  *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(number) 3
  *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(number) $3fff/(number) $40|(word)(const byte*) BITMAP&(number) $3fff/(number) $400
  (signed word) main::i#0 ← (signed word) 1
  to:main::@1
main::@1: scope:[main]  from main::@10 main::@11
  (signed word) main::i#2 ← phi( main::@10/(signed word) main::i#0 main::@11/(signed word) main::i#1 )
  (bool~) main::$2 ← (signed word) main::i#2 < (number) $b4
  if((bool~) main::$2) goto main::@2
  to:main::@7
main::@2: scope:[main]  from main::@1
  (signed word) main::i#3 ← phi( main::@1/(signed word) main::i#2 )
  (signed word) circle::xc#0 ← (number) $a0
  (signed word) circle::yc#0 ← (number) $64
  (signed word) circle::r#0 ← (signed word) main::i#3
  call circle 
  to:main::@11
main::@11: scope:[main]  from main::@2
  (signed word) main::i#4 ← phi( main::@2/(signed word) main::i#3 )
  (signed word) main::i#1 ← (signed word) main::i#4 + (number) 5
  to:main::@1
main::@7: scope:[main]  from main::@1 main::@7
  if(true) goto main::@7
  to:main::@return
main::@return: scope:[main]  from main::@7
  return 
  to:@return

(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
circle: scope:[circle]  from main::@2
  (signed word) circle::yc#13 ← phi( main::@2/(signed word) circle::yc#0 )
  (signed word) circle::xc#13 ← phi( main::@2/(signed word) circle::xc#0 )
  (signed word) circle::r#1 ← phi( main::@2/(signed word) circle::r#0 )
  (signed word) circle::y#0 ← (signed word) circle::r#1
  (signed word~) circle::$0 ← (signed word) circle::r#1 << (number) 1
  (number~) circle::$1 ← (number) 3 - (signed word~) circle::$0
  (signed word) circle::p#0 ← (number~) circle::$1
  (signed word) circle::x1#0 ← (signed word) 0
  to:circle::@1
circle::@1: scope:[circle]  from circle circle::@18
  (signed word) circle::yc#12 ← phi( circle/(signed word) circle::yc#13 circle::@18/(signed word) circle::yc#14 )
  (signed word) circle::xc#12 ← phi( circle/(signed word) circle::xc#13 circle::@18/(signed word) circle::xc#14 )
  (signed word) circle::p#6 ← phi( circle/(signed word) circle::p#0 circle::@18/(signed word) circle::p#7 )
  (signed word) circle::y#2 ← phi( circle/(signed word) circle::y#0 circle::@18/(signed word) circle::y#12 )
  (signed word) circle::x1#2 ← phi( circle/(signed word) circle::x1#0 circle::@18/(signed word) circle::x1#1 )
  (bool~) circle::$2 ← (signed word) circle::x1#2 <= (signed word) circle::y#2
  if((bool~) circle::$2) goto circle::@2
  to:circle::@return
circle::@2: scope:[circle]  from circle::@1
  (signed word) circle::yc#11 ← phi( circle::@1/(signed word) circle::yc#12 )
  (signed word) circle::xc#11 ← phi( circle::@1/(signed word) circle::xc#12 )
  (signed word) circle::y#13 ← phi( circle::@1/(signed word) circle::y#2 )
  (signed word) circle::x1#14 ← phi( circle::@1/(signed word) circle::x1#2 )
  (signed word) circle::p#3 ← phi( circle::@1/(signed word) circle::p#6 )
  (bool~) circle::$3 ← (signed word) circle::p#3 < (number) 0
  if((bool~) circle::$3) goto circle::@4
  to:circle::@8
circle::@4: scope:[circle]  from circle::@2
  (signed word) circle::y#14 ← phi( circle::@2/(signed word) circle::y#13 )
  (signed word) circle::yc#9 ← phi( circle::@2/(signed word) circle::yc#11 )
  (signed word) circle::xc#9 ← phi( circle::@2/(signed word) circle::xc#11 )
  (signed word) circle::p#4 ← phi( circle::@2/(signed word) circle::p#3 )
  (signed word) circle::x1#3 ← phi( circle::@2/(signed word) circle::x1#14 )
  (signed word~) circle::$9 ← (signed word) circle::x1#3 << (number) 2
  (signed word~) circle::$10 ← (signed word) circle::p#4 + (signed word~) circle::$9
  (number~) circle::$11 ← (signed word~) circle::$10 + (number) 6
  (signed word) circle::p#1 ← (number~) circle::$11
  to:circle::@5
circle::@8: scope:[circle]  from circle::@2
  (signed word) circle::yc#10 ← phi( circle::@2/(signed word) circle::yc#11 )
  (signed word) circle::xc#10 ← phi( circle::@2/(signed word) circle::xc#11 )
  (signed word) circle::p#5 ← phi( circle::@2/(signed word) circle::p#3 )
  (signed word) circle::x1#4 ← phi( circle::@2/(signed word) circle::x1#14 )
  (signed word) circle::y#3 ← phi( circle::@2/(signed word) circle::y#13 )
  (number~) circle::$4 ← (signed word) circle::y#3 - (number) 1
  (signed word) circle::y#1 ← (number~) circle::$4
  (signed word~) circle::$5 ← (signed word) circle::x1#4 - (signed word) circle::y#1
  (signed word~) circle::$6 ← (signed word~) circle::$5 << (number) 2
  (signed word~) circle::$7 ← (signed word) circle::p#5 + (signed word~) circle::$6
  (number~) circle::$8 ← (signed word~) circle::$7 + (number) $a
  (signed word) circle::p#2 ← (number~) circle::$8
  to:circle::@5
circle::@5: scope:[circle]  from circle::@4 circle::@8
  (signed word) circle::p#15 ← phi( circle::@4/(signed word) circle::p#1 circle::@8/(signed word) circle::p#2 )
  (signed word) circle::y#4 ← phi( circle::@4/(signed word) circle::y#14 circle::@8/(signed word) circle::y#1 )
  (signed word) circle::yc#1 ← phi( circle::@4/(signed word) circle::yc#9 circle::@8/(signed word) circle::yc#10 )
  (signed word) circle::x1#5 ← phi( circle::@4/(signed word) circle::x1#3 circle::@8/(signed word) circle::x1#4 )
  (signed word) circle::xc#1 ← phi( circle::@4/(signed word) circle::xc#9 circle::@8/(signed word) circle::xc#10 )
  (signed word~) circle::$12 ← (signed word) circle::xc#1 + (signed word) circle::x1#5
  (signed word~) circle::$13 ← (signed word) circle::yc#1 - (signed word) circle::y#4
  (signed word) plot::x#0 ← (signed word~) circle::$12
  (signed word) plot::y#0 ← (signed word~) circle::$13
  call plot 
  to:circle::@11
circle::@11: scope:[circle]  from circle::@5
  (signed word) circle::p#14 ← phi( circle::@5/(signed word) circle::p#15 )
  (signed word) circle::y#5 ← phi( circle::@5/(signed word) circle::y#4 )
  (signed word) circle::yc#2 ← phi( circle::@5/(signed word) circle::yc#1 )
  (signed word) circle::x1#6 ← phi( circle::@5/(signed word) circle::x1#5 )
  (signed word) circle::xc#2 ← phi( circle::@5/(signed word) circle::xc#1 )
  (signed word~) circle::$15 ← (signed word) circle::xc#2 - (signed word) circle::x1#6
  (signed word~) circle::$16 ← (signed word) circle::yc#2 - (signed word) circle::y#5
  (signed word) plot::x#1 ← (signed word~) circle::$15
  (signed word) plot::y#1 ← (signed word~) circle::$16
  call plot 
  to:circle::@12
circle::@12: scope:[circle]  from circle::@11
  (signed word) circle::p#13 ← phi( circle::@11/(signed word) circle::p#14 )
  (signed word) circle::y#6 ← phi( circle::@11/(signed word) circle::y#5 )
  (signed word) circle::yc#3 ← phi( circle::@11/(signed word) circle::yc#2 )
  (signed word) circle::x1#7 ← phi( circle::@11/(signed word) circle::x1#6 )
  (signed word) circle::xc#3 ← phi( circle::@11/(signed word) circle::xc#2 )
  (signed word~) circle::$18 ← (signed word) circle::xc#3 + (signed word) circle::x1#7
  (signed word~) circle::$19 ← (signed word) circle::yc#3 + (signed word) circle::y#6
  (signed word) plot::x#2 ← (signed word~) circle::$18
  (signed word) plot::y#2 ← (signed word~) circle::$19
  call plot 
  to:circle::@13
circle::@13: scope:[circle]  from circle::@12
  (signed word) circle::p#12 ← phi( circle::@12/(signed word) circle::p#13 )
  (signed word) circle::y#7 ← phi( circle::@12/(signed word) circle::y#6 )
  (signed word) circle::yc#4 ← phi( circle::@12/(signed word) circle::yc#3 )
  (signed word) circle::x1#8 ← phi( circle::@12/(signed word) circle::x1#7 )
  (signed word) circle::xc#4 ← phi( circle::@12/(signed word) circle::xc#3 )
  (signed word~) circle::$21 ← (signed word) circle::xc#4 - (signed word) circle::x1#8
  (signed word~) circle::$22 ← (signed word) circle::yc#4 + (signed word) circle::y#7
  (signed word) plot::x#3 ← (signed word~) circle::$21
  (signed word) plot::y#3 ← (signed word~) circle::$22
  call plot 
  to:circle::@14
circle::@14: scope:[circle]  from circle::@13
  (signed word) circle::p#11 ← phi( circle::@13/(signed word) circle::p#12 )
  (signed word) circle::x1#9 ← phi( circle::@13/(signed word) circle::x1#8 )
  (signed word) circle::yc#5 ← phi( circle::@13/(signed word) circle::yc#4 )
  (signed word) circle::y#8 ← phi( circle::@13/(signed word) circle::y#7 )
  (signed word) circle::xc#5 ← phi( circle::@13/(signed word) circle::xc#4 )
  (signed word~) circle::$24 ← (signed word) circle::xc#5 + (signed word) circle::y#8
  (signed word~) circle::$25 ← (signed word) circle::yc#5 - (signed word) circle::x1#9
  (signed word) plot::x#4 ← (signed word~) circle::$24
  (signed word) plot::y#4 ← (signed word~) circle::$25
  call plot 
  to:circle::@15
circle::@15: scope:[circle]  from circle::@14
  (signed word) circle::p#10 ← phi( circle::@14/(signed word) circle::p#11 )
  (signed word) circle::x1#10 ← phi( circle::@14/(signed word) circle::x1#9 )
  (signed word) circle::yc#6 ← phi( circle::@14/(signed word) circle::yc#5 )
  (signed word) circle::y#9 ← phi( circle::@14/(signed word) circle::y#8 )
  (signed word) circle::xc#6 ← phi( circle::@14/(signed word) circle::xc#5 )
  (signed word~) circle::$27 ← (signed word) circle::xc#6 - (signed word) circle::y#9
  (signed word~) circle::$28 ← (signed word) circle::yc#6 - (signed word) circle::x1#10
  (signed word) plot::x#5 ← (signed word~) circle::$27
  (signed word) plot::y#5 ← (signed word~) circle::$28
  call plot 
  to:circle::@16
circle::@16: scope:[circle]  from circle::@15
  (signed word) circle::p#9 ← phi( circle::@15/(signed word) circle::p#10 )
  (signed word) circle::x1#11 ← phi( circle::@15/(signed word) circle::x1#10 )
  (signed word) circle::yc#7 ← phi( circle::@15/(signed word) circle::yc#6 )
  (signed word) circle::y#10 ← phi( circle::@15/(signed word) circle::y#9 )
  (signed word) circle::xc#7 ← phi( circle::@15/(signed word) circle::xc#6 )
  (signed word~) circle::$30 ← (signed word) circle::xc#7 + (signed word) circle::y#10
  (signed word~) circle::$31 ← (signed word) circle::yc#7 + (signed word) circle::x1#11
  (signed word) plot::x#6 ← (signed word~) circle::$30
  (signed word) plot::y#6 ← (signed word~) circle::$31
  call plot 
  to:circle::@17
circle::@17: scope:[circle]  from circle::@16
  (signed word) circle::p#8 ← phi( circle::@16/(signed word) circle::p#9 )
  (signed word) circle::x1#12 ← phi( circle::@16/(signed word) circle::x1#11 )
  (signed word) circle::yc#8 ← phi( circle::@16/(signed word) circle::yc#7 )
  (signed word) circle::y#11 ← phi( circle::@16/(signed word) circle::y#10 )
  (signed word) circle::xc#8 ← phi( circle::@16/(signed word) circle::xc#7 )
  (signed word~) circle::$33 ← (signed word) circle::xc#8 - (signed word) circle::y#11
  (signed word~) circle::$34 ← (signed word) circle::yc#8 + (signed word) circle::x1#12
  (signed word) plot::x#7 ← (signed word~) circle::$33
  (signed word) plot::y#7 ← (signed word~) circle::$34
  call plot 
  to:circle::@18
circle::@18: scope:[circle]  from circle::@17
  (signed word) circle::yc#14 ← phi( circle::@17/(signed word) circle::yc#8 )
  (signed word) circle::xc#14 ← phi( circle::@17/(signed word) circle::xc#8 )
  (signed word) circle::p#7 ← phi( circle::@17/(signed word) circle::p#8 )
  (signed word) circle::y#12 ← phi( circle::@17/(signed word) circle::y#11 )
  (signed word) circle::x1#13 ← phi( circle::@17/(signed word) circle::x1#12 )
  (signed word) circle::x1#1 ← ++ (signed word) circle::x1#13
  to:circle::@1
circle::@return: scope:[circle]  from circle::@1
  return 
  to:@return

(void()) plot((signed word) plot::x , (signed word) plot::y)
plot: scope:[plot]  from circle::@11 circle::@12 circle::@13 circle::@14 circle::@15 circle::@16 circle::@17 circle::@5
  (signed word) plot::y#8 ← phi( circle::@11/(signed word) plot::y#1 circle::@12/(signed word) plot::y#2 circle::@13/(signed word) plot::y#3 circle::@14/(signed word) plot::y#4 circle::@15/(signed word) plot::y#5 circle::@16/(signed word) plot::y#6 circle::@17/(signed word) plot::y#7 circle::@5/(signed word) plot::y#0 )
  (signed word) plot::x#8 ← phi( circle::@11/(signed word) plot::x#1 circle::@12/(signed word) plot::x#2 circle::@13/(signed word) plot::x#3 circle::@14/(signed word) plot::x#4 circle::@15/(signed word) plot::x#5 circle::@16/(signed word) plot::x#6 circle::@17/(signed word) plot::x#7 circle::@5/(signed word) plot::x#0 )
  (bool~) plot::$0 ← (signed word) plot::x#8 < (number) 0
  (bool~) plot::$1 ← (signed word) plot::x#8 > (number) $13f
  (bool~) plot::$2 ← (bool~) plot::$0 || (bool~) plot::$1
  (bool~) plot::$3 ← (signed word) plot::y#8 < (number) 0
  (bool~) plot::$4 ← (bool~) plot::$2 || (bool~) plot::$3
  (bool~) plot::$5 ← (signed word) plot::y#8 > (number) $c7
  (bool~) plot::$6 ← (bool~) plot::$4 || (bool~) plot::$5
  (bool~) plot::$7 ← ! (bool~) plot::$6
  if((bool~) plot::$7) goto plot::@1
  to:plot::@return
plot::@1: scope:[plot]  from plot
  (signed word) plot::y#9 ← phi( plot/(signed word) plot::y#8 )
  (signed word) plot::x#9 ← phi( plot/(signed word) plot::x#8 )
  (byte*) plot::location#0 ← (const byte*) BITMAP
  (number~) plot::$8 ← (signed word) plot::x#9 & (number) $fff8
  (byte*) plot::location#1 ← (byte*) plot::location#0 + (number~) plot::$8
  (byte~) plot::$9 ← < (signed word) plot::y#9
  (number~) plot::$10 ← (byte~) plot::$9 & (number) 7
  (byte*) plot::location#2 ← (byte*) plot::location#1 + (number~) plot::$10
  (signed word~) plot::$11 ← (signed word) plot::y#9 >> (number) 3
  (number~) plot::$12 ← (signed word~) plot::$11 * (number) $140
  (byte*) plot::location#3 ← (byte*) plot::location#2 + (number~) plot::$12
  (number~) plot::$13 ← (signed word) plot::x#9 & (number) 7
  (byte~) plot::$14 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (number~) plot::$13)
  *((byte*) plot::location#3) ← (byte~) plot::$14
  to:plot::@return
plot::@return: scope:[plot]  from plot plot::@1
  return 
  to:@return

(void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val)
fill: scope:[fill]  from main main::@9
  (byte) fill::val#4 ← phi( main/(byte) fill::val#0 main::@9/(byte) fill::val#1 )
  (signed word) fill::size#2 ← phi( main/(signed word) fill::size#0 main::@9/(signed word) fill::size#1 )
  (byte*) fill::start#2 ← phi( main/(byte*) fill::start#0 main::@9/(byte*) fill::start#1 )
  (byte*~) fill::$0 ← (byte*) fill::start#2 + (signed word) fill::size#2
  (byte*) fill::end#0 ← (byte*~) fill::$0
  (byte*) fill::addr#0 ← (byte*) fill::start#2
  to:fill::@1
fill::@1: scope:[fill]  from fill fill::@2
  (byte) fill::val#3 ← phi( fill/(byte) fill::val#4 fill::@2/(byte) fill::val#2 )
  (byte*) fill::end#1 ← phi( fill/(byte*) fill::end#0 fill::@2/(byte*) fill::end#2 )
  (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@2/(byte*) fill::addr#1 )
  (bool~) fill::$1 ← (byte*) fill::addr#2 != (byte*) fill::end#1
  if((bool~) fill::$1) goto fill::@2
  to:fill::@return
fill::@2: scope:[fill]  from fill::@1
  (byte*) fill::end#2 ← phi( fill::@1/(byte*) fill::end#1 )
  (byte*) fill::addr#3 ← phi( fill::@1/(byte*) fill::addr#2 )
  (byte) fill::val#2 ← phi( fill::@1/(byte) fill::val#3 )
  *((byte*) fill::addr#3) ← (byte) fill::val#2
  (byte*) fill::addr#1 ← ++ (byte*) fill::addr#3
  to:fill::@1
fill::@return: scope:[fill]  from fill::@1
  return 
  to:@return
@8: scope:[]  from @begin
  call main 
  to:@9
@9: scope:[]  from @8
  to:@end
@end: scope:[]  from @9

SYMBOL TABLE SSA
(label) @8
(label) @9
(label) @begin
(label) @end
(const byte*) BITMAP = (byte*)(number) $2000
(const byte) BLUE = (byte) 6
(const byte*) BORDERCOL = (byte*)(number) $d020
(const byte*) D011 = (byte*)(number) $d011
(const byte*) SCREEN = (byte*)(number) $400
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte*) VIC_MEMORY = (byte*)(number) $d018
(const byte) VIC_RSEL = (byte) 8
(const byte*) bitmask[]  = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
(signed word~) circle::$0
(number~) circle::$1
(signed word~) circle::$10
(number~) circle::$11
(signed word~) circle::$12
(signed word~) circle::$13
(signed word~) circle::$15
(signed word~) circle::$16
(signed word~) circle::$18
(signed word~) circle::$19
(bool~) circle::$2
(signed word~) circle::$21
(signed word~) circle::$22
(signed word~) circle::$24
(signed word~) circle::$25
(signed word~) circle::$27
(signed word~) circle::$28
(bool~) circle::$3
(signed word~) circle::$30
(signed word~) circle::$31
(signed word~) circle::$33
(signed word~) circle::$34
(number~) circle::$4
(signed word~) circle::$5
(signed word~) circle::$6
(signed word~) circle::$7
(number~) circle::$8
(signed word~) circle::$9
(label) circle::@1
(label) circle::@11
(label) circle::@12
(label) circle::@13
(label) circle::@14
(label) circle::@15
(label) circle::@16
(label) circle::@17
(label) circle::@18
(label) circle::@2
(label) circle::@4
(label) circle::@5
(label) circle::@8
(label) circle::@return
(signed word) circle::p
(signed word) circle::p#0
(signed word) circle::p#1
(signed word) circle::p#10
(signed word) circle::p#11
(signed word) circle::p#12
(signed word) circle::p#13
(signed word) circle::p#14
(signed word) circle::p#15
(signed word) circle::p#2
(signed word) circle::p#3
(signed word) circle::p#4
(signed word) circle::p#5
(signed word) circle::p#6
(signed word) circle::p#7
(signed word) circle::p#8
(signed word) circle::p#9
(signed word) circle::r
(signed word) circle::r#0
(signed word) circle::r#1
(signed word) circle::x1
(signed word) circle::x1#0
(signed word) circle::x1#1
(signed word) circle::x1#10
(signed word) circle::x1#11
(signed word) circle::x1#12
(signed word) circle::x1#13
(signed word) circle::x1#14
(signed word) circle::x1#2
(signed word) circle::x1#3
(signed word) circle::x1#4
(signed word) circle::x1#5
(signed word) circle::x1#6
(signed word) circle::x1#7
(signed word) circle::x1#8
(signed word) circle::x1#9
(signed word) circle::xc
(signed word) circle::xc#0
(signed word) circle::xc#1
(signed word) circle::xc#10
(signed word) circle::xc#11
(signed word) circle::xc#12
(signed word) circle::xc#13
(signed word) circle::xc#14
(signed word) circle::xc#2
(signed word) circle::xc#3
(signed word) circle::xc#4
(signed word) circle::xc#5
(signed word) circle::xc#6
(signed word) circle::xc#7
(signed word) circle::xc#8
(signed word) circle::xc#9
(signed word) circle::y
(signed word) circle::y#0
(signed word) circle::y#1
(signed word) circle::y#10
(signed word) circle::y#11
(signed word) circle::y#12
(signed word) circle::y#13
(signed word) circle::y#14
(signed word) circle::y#2
(signed word) circle::y#3
(signed word) circle::y#4
(signed word) circle::y#5
(signed word) circle::y#6
(signed word) circle::y#7
(signed word) circle::y#8
(signed word) circle::y#9
(signed word) circle::yc
(signed word) circle::yc#0
(signed word) circle::yc#1
(signed word) circle::yc#10
(signed word) circle::yc#11
(signed word) circle::yc#12
(signed word) circle::yc#13
(signed word) circle::yc#14
(signed word) circle::yc#2
(signed word) circle::yc#3
(signed word) circle::yc#4
(signed word) circle::yc#5
(signed word) circle::yc#6
(signed word) circle::yc#7
(signed word) circle::yc#8
(signed word) circle::yc#9
(void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val)
(byte*~) fill::$0
(bool~) fill::$1
(label) fill::@1
(label) fill::@2
(label) fill::@return
(byte*) fill::addr
(byte*) fill::addr#0
(byte*) fill::addr#1
(byte*) fill::addr#2
(byte*) fill::addr#3
(byte*) fill::end
(byte*) fill::end#0
(byte*) fill::end#1
(byte*) fill::end#2
(signed word) fill::size
(signed word) fill::size#0
(signed word) fill::size#1
(signed word) fill::size#2
(byte*) fill::start
(byte*) fill::start#0
(byte*) fill::start#1
(byte*) fill::start#2
(byte) fill::val
(byte) fill::val#0
(byte) fill::val#1
(byte) fill::val#2
(byte) fill::val#3
(byte) fill::val#4
(void()) main()
(bool~) main::$2
(label) main::@1
(label) main::@10
(label) main::@11
(label) main::@2
(label) main::@7
(label) main::@9
(label) main::@return
(signed word) main::i
(signed word) main::i#0
(signed word) main::i#1
(signed word) main::i#2
(signed word) main::i#3
(signed word) main::i#4
(void()) plot((signed word) plot::x , (signed word) plot::y)
(bool~) plot::$0
(bool~) plot::$1
(number~) plot::$10
(signed word~) plot::$11
(number~) plot::$12
(number~) plot::$13
(byte~) plot::$14
(bool~) plot::$2
(bool~) plot::$3
(bool~) plot::$4
(bool~) plot::$5
(bool~) plot::$6
(bool~) plot::$7
(number~) plot::$8
(byte~) plot::$9
(label) plot::@1
(label) plot::@return
(byte*) plot::location
(byte*) plot::location#0
(byte*) plot::location#1
(byte*) plot::location#2
(byte*) plot::location#3
(signed word) plot::x
(signed word) plot::x#0
(signed word) plot::x#1
(signed word) plot::x#2
(signed word) plot::x#3
(signed word) plot::x#4
(signed word) plot::x#5
(signed word) plot::x#6
(signed word) plot::x#7
(signed word) plot::x#8
(signed word) plot::x#9
(signed word) plot::y
(signed word) plot::y#0
(signed word) plot::y#1
(signed word) plot::y#2
(signed word) plot::y#3
(signed word) plot::y#4
(signed word) plot::y#5
(signed word) plot::y#6
(signed word) plot::y#7
(signed word) plot::y#8
(signed word) plot::y#9

Adding number conversion cast (snumber) $28*$19*8 in (signed word) fill::size#0 ← (number) $28*(number) $19*(number) 8
Adding number conversion cast (unumber) 0 in (byte) fill::val#0 ← (number) 0
Adding number conversion cast (snumber) $28*$19 in (signed word) fill::size#1 ← (number) $28*(number) $19
Adding number conversion cast (unumber) $16 in (byte) fill::val#1 ← (number) $16
Adding number conversion cast (unumber) VIC_BMM|VIC_DEN|VIC_RSEL|3 in *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(number) 3
Adding number conversion cast (unumber) 3 in *((const byte*) D011) ← ((unumber)) (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(number) 3
Adding number conversion cast (unumber) $3fff in *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(number) $3fff/(number) $40|(word)(const byte*) BITMAP&(number) $3fff/(number) $400
Adding number conversion cast (unumber) $3fff in *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(unumber)(number) $3fff/(number) $40|(word)(const byte*) BITMAP&(number) $3fff/(number) $400
Adding number conversion cast (snumber) $b4 in (bool~) main::$2 ← (signed word) main::i#2 < (number) $b4
Adding number conversion cast (snumber) $a0 in (signed word) circle::xc#0 ← (number) $a0
Adding number conversion cast (snumber) $64 in (signed word) circle::yc#0 ← (number) $64
Adding number conversion cast (snumber) 5 in (signed word) main::i#1 ← (signed word) main::i#4 + (number) 5
Adding number conversion cast (snumber) 1 in (signed word~) circle::$0 ← (signed word) circle::r#1 << (number) 1
Adding number conversion cast (snumber) 3 in (number~) circle::$1 ← (number) 3 - (signed word~) circle::$0
Adding number conversion cast (snumber) circle::$1 in (number~) circle::$1 ← (snumber)(number) 3 - (signed word~) circle::$0
Adding number conversion cast (snumber) 0 in (bool~) circle::$3 ← (signed word) circle::p#3 < (number) 0
Adding number conversion cast (snumber) 2 in (signed word~) circle::$9 ← (signed word) circle::x1#3 << (number) 2
Adding number conversion cast (snumber) 6 in (number~) circle::$11 ← (signed word~) circle::$10 + (number) 6
Adding number conversion cast (snumber) circle::$11 in (number~) circle::$11 ← (signed word~) circle::$10 + (snumber)(number) 6
Adding number conversion cast (snumber) 1 in (number~) circle::$4 ← (signed word) circle::y#3 - (number) 1
Adding number conversion cast (snumber) circle::$4 in (number~) circle::$4 ← (signed word) circle::y#3 - (snumber)(number) 1
Adding number conversion cast (snumber) 2 in (signed word~) circle::$6 ← (signed word~) circle::$5 << (number) 2
Adding number conversion cast (snumber) $a in (number~) circle::$8 ← (signed word~) circle::$7 + (number) $a
Adding number conversion cast (snumber) circle::$8 in (number~) circle::$8 ← (signed word~) circle::$7 + (snumber)(number) $a
Adding number conversion cast (snumber) 0 in (bool~) plot::$0 ← (signed word) plot::x#8 < (number) 0
Adding number conversion cast (snumber) $13f in (bool~) plot::$1 ← (signed word) plot::x#8 > (number) $13f
Adding number conversion cast (snumber) 0 in (bool~) plot::$3 ← (signed word) plot::y#8 < (number) 0
Adding number conversion cast (snumber) $c7 in (bool~) plot::$5 ← (signed word) plot::y#8 > (number) $c7
Adding number conversion cast (snumber) $fff8 in (number~) plot::$8 ← (signed word) plot::x#9 & (number) $fff8
Adding number conversion cast (snumber) plot::$8 in (number~) plot::$8 ← (signed word) plot::x#9 & (snumber)(number) $fff8
Adding number conversion cast (unumber) 7 in (number~) plot::$10 ← (byte~) plot::$9 & (number) 7
Adding number conversion cast (unumber) plot::$10 in (number~) plot::$10 ← (byte~) plot::$9 & (unumber)(number) 7
Adding number conversion cast (snumber) 3 in (signed word~) plot::$11 ← (signed word) plot::y#9 >> (number) 3
Adding number conversion cast (snumber) $140 in (number~) plot::$12 ← (signed word~) plot::$11 * (number) $140
Adding number conversion cast (snumber) plot::$12 in (number~) plot::$12 ← (signed word~) plot::$11 * (snumber)(number) $140
Adding number conversion cast (snumber) 7 in (number~) plot::$13 ← (signed word) plot::x#9 & (number) 7
Adding number conversion cast (snumber) plot::$13 in (number~) plot::$13 ← (signed word) plot::x#9 & (snumber)(number) 7
Successful SSA optimization PassNAddNumberTypeConversions
Adding number conversion cast (unumber) $40 in *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(unumber)(number) $3fff/(number) $40|(word)(const byte*) BITMAP&(unumber)(number) $3fff/(number) $400
Adding number conversion cast (unumber) $400 in *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(unumber)(number) $3fff/(unumber)(number) $40|(word)(const byte*) BITMAP&(unumber)(number) $3fff/(number) $400
Successful SSA optimization PassNAddNumberTypeConversions
Inlining cast (signed word) fill::size#0 ← (snumber)(number) $28*(number) $19*(number) 8
Inlining cast (byte) fill::val#0 ← (unumber)(number) 0
Inlining cast (signed word) fill::size#1 ← (snumber)(number) $28*(number) $19
Inlining cast (byte) fill::val#1 ← (unumber)(number) $16
Inlining cast *((const byte*) D011) ← (unumber)(const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3
Inlining cast (signed word) circle::xc#0 ← (snumber)(number) $a0
Inlining cast (signed word) circle::yc#0 ← (snumber)(number) $64
Successful SSA optimization Pass2InlineCast
Simplifying constant pointer cast (byte*) 53280
Simplifying constant pointer cast (byte*) 53265
Simplifying constant pointer cast (byte*) 53272
Simplifying constant pointer cast (byte*) 1024
Simplifying constant pointer cast (byte*) 8192
Simplifying constant integer cast 0
Simplifying constant integer cast $16
Simplifying constant integer cast (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(unumber)(number) 3
Simplifying constant integer cast 3
Simplifying constant integer cast $3fff
Simplifying constant integer cast $40
Simplifying constant integer cast $3fff
Simplifying constant integer cast $400
Simplifying constant integer cast $b4
Simplifying constant integer cast $a0
Simplifying constant integer cast $64
Simplifying constant integer cast 5
Simplifying constant integer cast 1
Simplifying constant integer cast 3
Simplifying constant integer cast 0
Simplifying constant integer cast 2
Simplifying constant integer cast 6
Simplifying constant integer cast 1
Simplifying constant integer cast 2
Simplifying constant integer cast $a
Simplifying constant integer cast 0
Simplifying constant integer cast $13f
Simplifying constant integer cast 0
Simplifying constant integer cast $c7
Simplifying constant integer cast $fff8
Simplifying constant integer cast 7
Simplifying constant integer cast 3
Simplifying constant integer cast $140
Simplifying constant integer cast 7
Successful SSA optimization PassNCastSimplification
Finalized unsigned number type (byte) 0
Finalized unsigned number type (byte) $16
Finalized unsigned number type (byte) 3
Finalized unsigned number type (word) $3fff
Finalized unsigned number type (byte) $40
Finalized unsigned number type (word) $3fff
Finalized unsigned number type (word) $400
Finalized signed number type (signed word) $b4
Finalized signed number type (signed word) $a0
Finalized signed number type (signed byte) $64
Finalized signed number type (signed byte) 5
Finalized signed number type (signed byte) 1
Finalized signed number type (signed byte) 3
Finalized signed number type (signed byte) 0
Finalized signed number type (signed byte) 2
Finalized signed number type (signed byte) 6
Finalized signed number type (signed byte) 1
Finalized signed number type (signed byte) 2
Finalized signed number type (signed byte) $a
Finalized signed number type (signed byte) 0
Finalized signed number type (signed word) $13f
Finalized signed number type (signed byte) 0
Finalized signed number type (signed word) $c7
Finalized signed number type (signed dword) $fff8
Finalized unsigned number type (byte) 7
Finalized signed number type (signed byte) 3
Finalized signed number type (signed word) $140
Finalized signed number type (signed byte) 7
Successful SSA optimization PassNFinalizeNumberTypeConversions
Inferred type updated to signed word in (snumber~) circle::$1 ← (signed byte) 3 - (signed word~) circle::$0
Inferred type updated to signed word in (snumber~) circle::$11 ← (signed word~) circle::$10 + (signed byte) 6
Inferred type updated to signed word in (snumber~) circle::$4 ← (signed word) circle::y#3 - (signed byte) 1
Inferred type updated to signed word in (snumber~) circle::$8 ← (signed word~) circle::$7 + (signed byte) $a
Inferred type updated to signed word in (snumber~) plot::$8 ← (signed word) plot::x#9 & (signed dword) $fff8
Inferred type updated to byte in (unumber~) plot::$10 ← (byte~) plot::$9 & (byte) 7
Inferred type updated to signed word in (snumber~) plot::$12 ← (signed word~) plot::$11 * (signed word) $140
Inferred type updated to signed byte in (snumber~) plot::$13 ← (signed word) plot::x#9 & (signed byte) 7
Alias (signed word) main::i#2 = (signed word) main::i#3 (signed word) main::i#4 
Alias (signed word) circle::y#0 = (signed word) circle::r#1 
Alias (signed word) circle::p#0 = (signed word~) circle::$1 
Alias (signed word) circle::p#3 = (signed word) circle::p#6 (signed word) circle::p#4 (signed word) circle::p#5 
Alias (signed word) circle::x1#14 = (signed word) circle::x1#2 (signed word) circle::x1#3 (signed word) circle::x1#4 
Alias (signed word) circle::y#13 = (signed word) circle::y#2 (signed word) circle::y#14 (signed word) circle::y#3 
Alias (signed word) circle::xc#10 = (signed word) circle::xc#11 (signed word) circle::xc#12 (signed word) circle::xc#9 
Alias (signed word) circle::yc#10 = (signed word) circle::yc#11 (signed word) circle::yc#12 (signed word) circle::yc#9 
Alias (signed word) circle::p#1 = (signed word~) circle::$11 
Alias (signed word) circle::y#1 = (signed word~) circle::$4 
Alias (signed word) circle::p#2 = (signed word~) circle::$8 
Alias (signed word) plot::x#0 = (signed word~) circle::$12 
Alias (signed word) plot::y#0 = (signed word~) circle::$13 
Alias (signed word) circle::xc#1 = (signed word) circle::xc#2 (signed word) circle::xc#3 (signed word) circle::xc#4 (signed word) circle::xc#5 (signed word) circle::xc#6 (signed word) circle::xc#7 (signed word) circle::xc#8 (signed word) circle::xc#14 
Alias (signed word) circle::x1#10 = (signed word) circle::x1#6 (signed word) circle::x1#5 (signed word) circle::x1#7 (signed word) circle::x1#8 (signed word) circle::x1#9 (signed word) circle::x1#11 (signed word) circle::x1#12 (signed word) circle::x1#13 
Alias (signed word) circle::yc#1 = (signed word) circle::yc#2 (signed word) circle::yc#3 (signed word) circle::yc#4 (signed word) circle::yc#5 (signed word) circle::yc#6 (signed word) circle::yc#7 (signed word) circle::yc#8 (signed word) circle::yc#14 
Alias (signed word) circle::y#10 = (signed word) circle::y#5 (signed word) circle::y#4 (signed word) circle::y#6 (signed word) circle::y#7 (signed word) circle::y#8 (signed word) circle::y#9 (signed word) circle::y#11 (signed word) circle::y#12 
Alias (signed word) circle::p#10 = (signed word) circle::p#14 (signed word) circle::p#15 (signed word) circle::p#13 (signed word) circle::p#12 (signed word) circle::p#11 (signed word) circle::p#9 (signed word) circle::p#8 (signed word) circle::p#7 
Alias (signed word) plot::x#1 = (signed word~) circle::$15 
Alias (signed word) plot::y#1 = (signed word~) circle::$16 
Alias (signed word) plot::x#2 = (signed word~) circle::$18 
Alias (signed word) plot::y#2 = (signed word~) circle::$19 
Alias (signed word) plot::x#3 = (signed word~) circle::$21 
Alias (signed word) plot::y#3 = (signed word~) circle::$22 
Alias (signed word) plot::x#4 = (signed word~) circle::$24 
Alias (signed word) plot::y#4 = (signed word~) circle::$25 
Alias (signed word) plot::x#5 = (signed word~) circle::$27 
Alias (signed word) plot::y#5 = (signed word~) circle::$28 
Alias (signed word) plot::x#6 = (signed word~) circle::$30 
Alias (signed word) plot::y#6 = (signed word~) circle::$31 
Alias (signed word) plot::x#7 = (signed word~) circle::$33 
Alias (signed word) plot::y#7 = (signed word~) circle::$34 
Alias (signed word) plot::x#8 = (signed word) plot::x#9 
Alias (signed word) plot::y#8 = (signed word) plot::y#9 
Alias (byte*) fill::end#0 = (byte*~) fill::$0 
Alias (byte*) fill::addr#0 = (byte*) fill::start#2 
Alias (byte) fill::val#2 = (byte) fill::val#3 
Alias (byte*) fill::addr#2 = (byte*) fill::addr#3 
Alias (byte*) fill::end#1 = (byte*) fill::end#2 
Successful SSA optimization Pass2AliasElimination
Alias (signed word) circle::xc#1 = (signed word) circle::xc#10 
Alias (signed word) circle::x1#10 = (signed word) circle::x1#14 
Alias (signed word) circle::yc#1 = (signed word) circle::yc#10 
Successful SSA optimization Pass2AliasElimination
Identical Phi Values (signed word) circle::y#0 (signed word) circle::r#0
Identical Phi Values (signed word) circle::xc#13 (signed word) circle::xc#0
Identical Phi Values (signed word) circle::yc#13 (signed word) circle::yc#0
Identical Phi Values (signed word) circle::xc#1 (signed word) circle::xc#13
Identical Phi Values (signed word) circle::yc#1 (signed word) circle::yc#13
Identical Phi Values (byte*) fill::end#1 (byte*) fill::end#0
Identical Phi Values (byte) fill::val#2 (byte) fill::val#4
Successful SSA optimization Pass2IdenticalPhiElimination
Simple Condition (bool~) main::$2 [14] if((signed word) main::i#2<(signed word) $b4) goto main::@2
Simple Condition (bool~) circle::$2 [32] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2
Simple Condition (bool~) circle::$3 [35] if((signed word) circle::p#3<(signed byte) 0) goto circle::@4
Simple Condition (bool~) fill::$1 [130] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2
Successful SSA optimization Pass2ConditionalJumpSimplification
Rewriting ! if()-condition to reversed if() [108] (bool~) plot::$7 ← ! (bool~) plot::$6
Rewriting || if()-condition to two if()s [107] (bool~) plot::$6 ← (bool~) plot::$4 || (bool~) plot::$5
Rewriting || if()-condition to two if()s [105] (bool~) plot::$4 ← (bool~) plot::$2 || (bool~) plot::$3
Rewriting || if()-condition to two if()s [103] (bool~) plot::$2 ← (bool~) plot::$0 || (bool~) plot::$1
Successful SSA optimization Pass2ConditionalAndOrRewriting
Constant right-side identified [1] (signed word) fill::size#0 ← (snumber)(number) $28*(number) $19*(number) 8
Constant right-side identified [5] (signed word) fill::size#1 ← (snumber)(number) $28*(number) $19
Successful SSA optimization Pass2ConstantRValueConsolidation
Constant (const byte*) fill::start#0 = BITMAP
Constant (const signed word) fill::size#0 = (snumber)$28*$19*8
Constant (const byte) fill::val#0 = 0
Constant (const byte*) fill::start#1 = SCREEN
Constant (const signed word) fill::size#1 = (snumber)$28*$19
Constant (const byte) fill::val#1 = $16
Constant (const signed word) main::i#0 = 1
Constant (const signed word) circle::xc#0 = $a0
Constant (const signed word) circle::yc#0 = $64
Constant (const signed word) circle::x1#0 = 0
Constant (const byte*) plot::location#0 = BITMAP
Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [22] if(true) goto main::@7
Successful SSA optimization Pass2ConstantIfs
Removing unused block main::@return
Successful SSA optimization Pass2EliminateUnusedBlocks
Simple Condition (bool~) plot::$0 [55] if((signed word) plot::x#8<(signed byte) 0) goto plot::@return
Simple Condition (bool~) plot::$5 [76] if((signed word) plot::y#8>(signed word) $c7) goto plot::@return
Simple Condition (bool~) plot::$3 [77] if((signed word) plot::y#8<(signed byte) 0) goto plot::@return
Simple Condition (bool~) plot::$1 [78] if((signed word) plot::x#8>(signed word) $13f) goto plot::@return
Successful SSA optimization Pass2ConditionalJumpSimplification
Rewriting conditional comparison [76] if((signed word) plot::y#8>(signed word) $c7) goto plot::@return
Adding number conversion cast (snumber) $c7+1 in if((signed word) plot::y#8>=(signed word) $c7+(number) 1) goto plot::@return
Adding number conversion cast (snumber) 1 in if((signed word) plot::y#8>=(snumber)(signed word) $c7+(number) 1) goto plot::@return
Successful SSA optimization PassNAddNumberTypeConversions
Simplifying constant integer cast (signed word) $c7+(snumber)(number) 1
Simplifying constant integer cast 1
Successful SSA optimization PassNCastSimplification
Finalized signed number type (signed byte) 1
Successful SSA optimization PassNFinalizeNumberTypeConversions
Rewriting multiplication to use shift and addition[58] (signed word~) plot::$12 ← (signed word~) plot::$11 * (signed word) $140
Inlining constant with var siblings (const signed word) main::i#0
Inlining constant with var siblings (const signed word) circle::x1#0
Inlining constant with var siblings (const byte*) plot::location#0
Inlining constant with var siblings (const signed word) fill::size#0
Inlining constant with var siblings (const byte) fill::val#0
Inlining constant with var siblings (const signed word) fill::size#1
Inlining constant with var siblings (const byte) fill::val#1
Constant inlined fill::val#0 = (byte) 0
Constant inlined plot::location#0 = (const byte*) BITMAP
Constant inlined fill::start#1 = (const byte*) SCREEN
Constant inlined fill::start#0 = (const byte*) BITMAP
Constant inlined circle::x1#0 = (signed word) 0
Constant inlined fill::val#1 = (byte) $16
Constant inlined main::i#0 = (signed word) 1
Constant inlined fill::size#1 = (signed word)(number) $28*(number) $19
Constant inlined fill::size#0 = (signed word)(number) $28*(number) $19*(number) 8
Successful SSA optimization Pass2ConstantInlining
Alias (signed word~) plot::$12 = (signed word~) plot::$17 
Successful SSA optimization Pass2AliasElimination
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @8
Adding NOP phi() at start of @9
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@9
Adding NOP phi() at start of main::@7
CALL GRAPH
Calls in [] to main:2 
Calls in [main] to fill:6 fill:8 circle:16 
Calls in [circle] to plot:39 plot:44 plot:49 plot:54 plot:59 plot:64 plot:69 plot:74 

Created 12 initial phi equivalence classes
Coalesced [18] main::i#5 ← main::i#1
Coalesced [21] circle::y#15 ← circle::r#0
Coalesced [22] circle::p#16 ← circle::p#0
Coalesced [32] circle::y#18 ← circle::y#1
Coalesced [33] circle::p#19 ← circle::p#2
Coalesced [37] plot::x#17 ← plot::x#0
Coalesced [38] plot::y#17 ← plot::y#0
Coalesced [42] plot::x#10 ← plot::x#1
Coalesced [43] plot::y#10 ← plot::y#1
Coalesced [47] plot::x#11 ← plot::x#2
Coalesced [48] plot::y#11 ← plot::y#2
Coalesced [52] plot::x#12 ← plot::x#3
Coalesced [53] plot::y#12 ← plot::y#3
Coalesced [57] plot::x#13 ← plot::x#4
Coalesced [58] plot::y#13 ← plot::y#4
Coalesced [62] plot::x#14 ← plot::x#5
Coalesced [63] plot::y#14 ← plot::y#5
Coalesced [67] plot::x#15 ← plot::x#6
Coalesced [68] plot::y#15 ← plot::y#6
Coalesced [72] plot::x#16 ← plot::x#7
Coalesced [73] plot::y#16 ← plot::y#7
Coalesced [76] circle::x1#15 ← circle::x1#1
Coalesced [77] circle::y#16 ← circle::y#10
Coalesced [78] circle::p#17 ← circle::p#10
Coalesced (already) [82] circle::y#17 ← circle::y#13
Coalesced [83] circle::p#18 ← circle::p#1
Coalesced [105] fill::addr#4 ← fill::addr#0
Coalesced [111] fill::addr#5 ← fill::addr#1
Coalesced down to 9 phi equivalence classes
Culled Empty Block (label) @9
Renumbering block @8 to @1
Renumbering block main::@7 to main::@3
Renumbering block main::@9 to main::@4
Renumbering block main::@10 to main::@5
Renumbering block main::@11 to main::@6
Renumbering block circle::@4 to circle::@3
Renumbering block circle::@5 to circle::@4
Renumbering block circle::@8 to circle::@5
Renumbering block circle::@11 to circle::@6
Renumbering block circle::@12 to circle::@7
Renumbering block circle::@13 to circle::@8
Renumbering block circle::@14 to circle::@9
Renumbering block circle::@15 to circle::@10
Renumbering block circle::@16 to circle::@11
Renumbering block circle::@17 to circle::@12
Renumbering block circle::@18 to circle::@13
Renumbering block plot::@4 to plot::@2
Renumbering block plot::@5 to plot::@3
Renumbering block plot::@6 to plot::@4
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @1
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@4
Adding NOP phi() at start of main::@3

FINAL CONTROL FLOW GRAPH
@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


VARIABLE REGISTER WEIGHTS
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
(signed word~) circle::$0 4.0
(signed word~) circle::$10 202.0
(signed word~) circle::$5 202.0
(signed word~) circle::$6 202.0
(signed word~) circle::$7 202.0
(signed word~) circle::$9 202.0
(signed word) circle::p
(signed word) circle::p#0 4.0
(signed word) circle::p#1 202.0
(signed word) circle::p#10 11.653846153846153
(signed word) circle::p#2 202.0
(signed word) circle::p#3 58.00000000000001
(signed word) circle::r
(signed word) circle::r#0 5.0
(signed word) circle::x1
(signed word) circle::x1#1 202.0
(signed word) circle::x1#10 36.47222222222223
(signed word) circle::xc
(signed word) circle::y
(signed word) circle::y#1 60.599999999999994
(signed word) circle::y#10 42.73076923076923
(signed word) circle::y#13 67.66666666666666
(signed word) circle::yc
(void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val)
(byte*) fill::addr
(byte*) fill::addr#0 2.0
(byte*) fill::addr#1 22.0
(byte*) fill::addr#2 15.333333333333332
(byte*) fill::end
(byte*) fill::end#0 2.6
(signed word) fill::size
(signed word) fill::size#2 2.0
(byte*) fill::start
(byte) fill::val
(byte) fill::val#4 1.8333333333333333
(void()) main()
(signed word) main::i
(signed word) main::i#1 22.0
(signed word) main::i#2 11.0
(void()) plot((signed word) plot::x , (signed word) plot::y)
(byte~) plot::$10 4.0
(signed word~) plot::$11 3.0
(signed word~) plot::$12 4.0
(signed byte~) plot::$13 4.0
(byte~) plot::$14 4.0
(signed word~) plot::$15 4.0
(signed word~) plot::$16 4.0
(signed word~) plot::$8 4.0
(byte~) plot::$9 4.0
(byte*) plot::location
(byte*) plot::location#1 1.3333333333333333
(byte*) plot::location#2 0.8
(byte*) plot::location#3 2.0
(signed word) plot::x
(signed word) plot::x#0 101.0
(signed word) plot::x#1 101.0
(signed word) plot::x#2 101.0
(signed word) plot::x#3 101.0
(signed word) plot::x#4 101.0
(signed word) plot::x#5 101.0
(signed word) plot::x#6 101.0
(signed word) plot::x#7 101.0
(signed word) plot::x#8 54.4
(signed word) plot::y
(signed word) plot::y#0 202.0
(signed word) plot::y#1 202.0
(signed word) plot::y#2 202.0
(signed word) plot::y#3 202.0
(signed word) plot::y#4 202.0
(signed word) plot::y#5 202.0
(signed word) plot::y#6 202.0
(signed word) plot::y#7 202.0
(signed word) plot::y#8 81.60000000000001

Initial phi equivalence classes
[ main::i#2 main::i#1 ]
[ circle::x1#10 circle::x1#1 ]
[ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ]
[ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ]
[ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ]
[ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ]
[ fill::size#2 ]
[ fill::val#4 ]
[ fill::addr#2 fill::addr#0 fill::addr#1 ]
Added variable circle::$0 to live range equivalence class [ circle::$0 ]
Added variable circle::$5 to live range equivalence class [ circle::$5 ]
Added variable circle::$6 to live range equivalence class [ circle::$6 ]
Added variable circle::$7 to live range equivalence class [ circle::$7 ]
Added variable circle::$9 to live range equivalence class [ circle::$9 ]
Added variable circle::$10 to live range equivalence class [ circle::$10 ]
Added variable plot::$8 to live range equivalence class [ plot::$8 ]
Added variable plot::location#1 to live range equivalence class [ plot::location#1 ]
Added variable plot::$9 to live range equivalence class [ plot::$9 ]
Added variable plot::$10 to live range equivalence class [ plot::$10 ]
Added variable plot::location#2 to live range equivalence class [ plot::location#2 ]
Added variable plot::$11 to live range equivalence class [ plot::$11 ]
Added variable plot::$15 to live range equivalence class [ plot::$15 ]
Added variable plot::$16 to live range equivalence class [ plot::$16 ]
Added variable plot::$12 to live range equivalence class [ plot::$12 ]
Added variable plot::location#3 to live range equivalence class [ plot::location#3 ]
Added variable plot::$13 to live range equivalence class [ plot::$13 ]
Added variable plot::$14 to live range equivalence class [ plot::$14 ]
Added variable fill::end#0 to live range equivalence class [ fill::end#0 ]
Complete equivalence classes
[ main::i#2 main::i#1 ]
[ circle::x1#10 circle::x1#1 ]
[ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ]
[ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ]
[ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ]
[ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ]
[ fill::size#2 ]
[ fill::val#4 ]
[ fill::addr#2 fill::addr#0 fill::addr#1 ]
[ circle::$0 ]
[ circle::$5 ]
[ circle::$6 ]
[ circle::$7 ]
[ circle::$9 ]
[ circle::$10 ]
[ plot::$8 ]
[ plot::location#1 ]
[ plot::$9 ]
[ plot::$10 ]
[ plot::location#2 ]
[ plot::$11 ]
[ plot::$15 ]
[ plot::$16 ]
[ plot::$12 ]
[ plot::location#3 ]
[ plot::$13 ]
[ plot::$14 ]
[ fill::end#0 ]
Allocated zp[2]:2 [ main::i#2 main::i#1 ]
Allocated zp[2]:4 [ circle::x1#10 circle::x1#1 ]
Allocated zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ]
Allocated zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ]
Allocated zp[2]:10 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ]
Allocated zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ]
Allocated zp[2]:14 [ fill::size#2 ]
Allocated zp[1]:16 [ fill::val#4 ]
Allocated zp[2]:17 [ fill::addr#2 fill::addr#0 fill::addr#1 ]
Allocated zp[2]:19 [ circle::$0 ]
Allocated zp[2]:21 [ circle::$5 ]
Allocated zp[2]:23 [ circle::$6 ]
Allocated zp[2]:25 [ circle::$7 ]
Allocated zp[2]:27 [ circle::$9 ]
Allocated zp[2]:29 [ circle::$10 ]
Allocated zp[2]:31 [ plot::$8 ]
Allocated zp[2]:33 [ plot::location#1 ]
Allocated zp[1]:35 [ plot::$9 ]
Allocated zp[1]:36 [ plot::$10 ]
Allocated zp[2]:37 [ plot::location#2 ]
Allocated zp[2]:39 [ plot::$11 ]
Allocated zp[2]:41 [ plot::$15 ]
Allocated zp[2]:43 [ plot::$16 ]
Allocated zp[2]:45 [ plot::$12 ]
Allocated zp[2]:47 [ plot::location#3 ]
Allocated zp[1]:49 [ plot::$13 ]
Allocated zp[1]:50 [ plot::$14 ]
Allocated zp[2]:51 [ fill::end#0 ]

INITIAL ASM
Target platform is c64basic / MOS6502X
  // File Comments
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(__bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  .label BORDERCOL = $d020
  .label D011 = $d011
  .const VIC_BMM = $20
  .const VIC_DEN = $10
  .const VIC_RSEL = 8
  .label VIC_MEMORY = $d018
  .const BLUE = 6
  .label SCREEN = $400
  .label BITMAP = $2000
  // @begin
__bbegin:
  // [1] phi from @begin to @1 [phi:@begin->@1]
__b1_from___bbegin:
  jmp __b1
  // @1
__b1:
  // [2] call main 
  // [4] phi from @1 to main [phi:@1->main]
main_from___b1:
  jsr main
  // [3] phi from @1 to @end [phi:@1->@end]
__bend_from___b1:
  jmp __bend
  // @end
__bend:
  // main
main: {
    .label i = 2
    // [5] call fill 
    // [76] phi from main to fill [phi:main->fill]
  fill_from_main:
    // [76] phi (byte) fill::val#4 = (byte) 0 [phi:main->fill#0] -- vbuz1=vbuc1 
    lda #0
    sta.z fill.val
    // [76] phi (signed word) fill::size#2 = (signed word)(number) $28*(number) $19*(number) 8 [phi:main->fill#1] -- vwsz1=vwsc1 
    lda #<$28*$19*8
    sta.z fill.size
    lda #>$28*$19*8
    sta.z fill.size+1
    // [76] phi (byte*) fill::addr#0 = (const byte*) BITMAP [phi:main->fill#2] -- pbuz1=pbuc1 
    lda #<BITMAP
    sta.z fill.addr
    lda #>BITMAP
    sta.z fill.addr+1
    jsr fill
    // [6] phi from main to main::@4 [phi:main->main::@4]
  __b4_from_main:
    jmp __b4
    // main::@4
  __b4:
    // [7] call fill 
    // [76] phi from main::@4 to fill [phi:main::@4->fill]
  fill_from___b4:
    // [76] phi (byte) fill::val#4 = (byte) $16 [phi:main::@4->fill#0] -- vbuz1=vbuc1 
    lda #$16
    sta.z fill.val
    // [76] phi (signed word) fill::size#2 = (signed word)(number) $28*(number) $19 [phi:main::@4->fill#1] -- vwsz1=vwsc1 
    lda #<$28*$19
    sta.z fill.size
    lda #>$28*$19
    sta.z fill.size+1
    // [76] phi (byte*) fill::addr#0 = (const byte*) SCREEN [phi:main::@4->fill#2] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta.z fill.addr
    lda #>SCREEN
    sta.z fill.addr+1
    jsr fill
    jmp __b5
    // main::@5
  __b5:
    // [8] *((const byte*) BORDERCOL) ← (const byte) BLUE -- _deref_pbuc1=vbuc2 
    lda #BLUE
    sta BORDERCOL
    // [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2 
    lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
    sta D011
    // [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 -- _deref_pbuc1=vbuc2 
    lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400
    sta VIC_MEMORY
    // [11] phi from main::@5 to main::@1 [phi:main::@5->main::@1]
  __b1_from___b5:
    // [11] phi (signed word) main::i#2 = (signed word) 1 [phi:main::@5->main::@1#0] -- vwsz1=vwsc1 
    lda #<1
    sta.z i
    lda #>1
    sta.z i+1
    jmp __b1
    // main::@1
  __b1:
    // [12] if((signed word) main::i#2<(signed word) $b4) goto main::@2 -- vwsz1_lt_vwsc1_then_la1 
    lda.z i
    cmp #<$b4
    lda.z i+1
    sbc #>$b4
    bvc !+
    eor #$80
  !:
    bmi __b2
    // [13] phi from main::@1 main::@3 to main::@3 [phi:main::@1/main::@3->main::@3]
  __b3_from___b1:
  __b3_from___b3:
    jmp __b3
    // main::@3
  __b3:
    jmp __b3_from___b3
    // main::@2
  __b2:
    // [14] (signed word) circle::r#0 ← (signed word) main::i#2 -- vwsz1=vwsz2 
    lda.z i
    sta.z circle.r
    lda.z i+1
    sta.z circle.r+1
    // [15] call circle 
    jsr circle
    jmp __b6
    // main::@6
  __b6:
    // [16] (signed word) main::i#1 ← (signed word) main::i#2 + (signed byte) 5 -- vwsz1=vwsz1_plus_vbsc1 
    lda.z i
    clc
    adc #<5
    sta.z i
    lda.z i+1
    adc #>5
    sta.z i+1
    // [11] phi from main::@6 to main::@1 [phi:main::@6->main::@1]
  __b1_from___b6:
    // [11] phi (signed word) main::i#2 = (signed word) main::i#1 [phi:main::@6->main::@1#0] -- register_copy 
    jmp __b1
}
  // circle
// circle(signed word zp(6) r)
circle: {
    .const xc = $a0
    .const yc = $64
    .label __0 = $13
    .label __5 = $15
    .label __6 = $17
    .label __7 = $19
    .label __9 = $1b
    .label __10 = $1d
    .label r = 6
    .label p = 8
    .label y = 6
    .label x1 = 4
    // [17] (signed word~) circle::$0 ← (signed word) circle::r#0 << (signed byte) 1 -- vwsz1=vwsz2_rol_1 
    lda.z r
    asl
    sta.z __0
    lda.z r+1
    rol
    sta.z __0+1
    // [18] (signed word) circle::p#0 ← (signed byte) 3 - (signed word~) circle::$0 -- vwsz1=vwuc1_minus_vwsz2 
    sec
    lda #<3
    sbc.z __0
    sta.z p
    lda #>3
    sbc.z __0+1
    sta.z p+1
    // [19] phi from circle to circle::@1 [phi:circle->circle::@1]
  __b1_from_circle:
    // [19] phi (signed word) circle::p#3 = (signed word) circle::p#0 [phi:circle->circle::@1#0] -- register_copy 
    // [19] phi (signed word) circle::y#13 = (signed word) circle::r#0 [phi:circle->circle::@1#1] -- register_copy 
    // [19] phi (signed word) circle::x1#10 = (signed word) 0 [phi:circle->circle::@1#2] -- vwsz1=vwsc1 
    lda #<0
    sta.z x1
    lda #>0
    sta.z x1+1
    jmp __b1
    // circle::@1
  __b1:
    // [20] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 -- vwsz1_le_vwsz2_then_la1 
    lda.z y
    cmp.z x1
    lda.z y+1
    sbc.z x1+1
    bvc !+
    eor #$80
  !:
    bpl __b2
    jmp __breturn
    // circle::@return
  __breturn:
    // [21] return 
    rts
    // circle::@2
  __b2:
    // [22] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 -- vwsz1_lt_0_then_la1 
    lda.z p+1
    bmi __b3
    jmp __b5
    // circle::@5
  __b5:
    // [23] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 -- vwsz1=vwsz1_minus_1 
    sec
    lda.z y
    sbc #1
    sta.z y
    bcs !+
    dec.z y+1
  !:
    // [24] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 -- vwsz1=vwsz2_minus_vwsz3 
    lda.z x1
    sec
    sbc.z y
    sta.z __5
    lda.z x1+1
    sbc.z y+1
    sta.z __5+1
    // [25] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 -- vwsz1=vwsz2_rol_2 
    lda.z __5
    asl
    sta.z __6
    lda.z __5+1
    rol
    sta.z __6+1
    asl.z __6
    rol.z __6+1
    // [26] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 -- vwsz1=vwsz2_plus_vwsz3 
    lda.z p
    clc
    adc.z __6
    sta.z __7
    lda.z p+1
    adc.z __6+1
    sta.z __7+1
    // [27] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a -- vwsz1=vwsz2_plus_vbsc1 
    lda.z __7
    clc
    adc #<$a
    sta.z p
    lda.z __7+1
    adc #>$a
    sta.z p+1
    // [28] phi from circle::@3 circle::@5 to circle::@4 [phi:circle::@3/circle::@5->circle::@4]
  __b4_from___b3:
  __b4_from___b5:
    // [28] phi (signed word) circle::p#10 = (signed word) circle::p#1 [phi:circle::@3/circle::@5->circle::@4#0] -- register_copy 
    // [28] phi (signed word) circle::y#10 = (signed word) circle::y#13 [phi:circle::@3/circle::@5->circle::@4#1] -- register_copy 
    jmp __b4
    // circle::@4
  __b4:
    // [29] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z x1
    clc
    adc #<xc
    sta.z plot.x
    lda.z x1+1
    adc #>xc
    sta.z plot.x+1
    // [30] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<yc
    sec
    sbc.z y
    sta.z plot.y
    lda #>yc
    sbc.z y+1
    sta.z plot.y+1
    // [31] call plot 
    // [57] phi from circle::@4 to plot [phi:circle::@4->plot]
  plot_from___b4:
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#0 [phi:circle::@4->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#0 [phi:circle::@4->plot#1] -- register_copy 
    jsr plot
    jmp __b6
    // circle::@6
  __b6:
    // [32] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<xc
    sec
    sbc.z x1
    sta.z plot.x
    lda #>xc
    sbc.z x1+1
    sta.z plot.x+1
    // [33] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<yc
    sec
    sbc.z y
    sta.z plot.y
    lda #>yc
    sbc.z y+1
    sta.z plot.y+1
    // [34] call plot 
    // [57] phi from circle::@6 to plot [phi:circle::@6->plot]
  plot_from___b6:
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#1 [phi:circle::@6->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#1 [phi:circle::@6->plot#1] -- register_copy 
    jsr plot
    jmp __b7
    // circle::@7
  __b7:
    // [35] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z x1
    clc
    adc #<xc
    sta.z plot.x
    lda.z x1+1
    adc #>xc
    sta.z plot.x+1
    // [36] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z y
    clc
    adc #<yc
    sta.z plot.y
    lda.z y+1
    adc #>yc
    sta.z plot.y+1
    // [37] call plot 
    // [57] phi from circle::@7 to plot [phi:circle::@7->plot]
  plot_from___b7:
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#2 [phi:circle::@7->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#2 [phi:circle::@7->plot#1] -- register_copy 
    jsr plot
    jmp __b8
    // circle::@8
  __b8:
    // [38] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<xc
    sec
    sbc.z x1
    sta.z plot.x
    lda #>xc
    sbc.z x1+1
    sta.z plot.x+1
    // [39] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z y
    clc
    adc #<yc
    sta.z plot.y
    lda.z y+1
    adc #>yc
    sta.z plot.y+1
    // [40] call plot 
    // [57] phi from circle::@8 to plot [phi:circle::@8->plot]
  plot_from___b8:
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#3 [phi:circle::@8->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#3 [phi:circle::@8->plot#1] -- register_copy 
    jsr plot
    jmp __b9
    // circle::@9
  __b9:
    // [41] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z y
    clc
    adc #<xc
    sta.z plot.x
    lda.z y+1
    adc #>xc
    sta.z plot.x+1
    // [42] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<yc
    sec
    sbc.z x1
    sta.z plot.y
    lda #>yc
    sbc.z x1+1
    sta.z plot.y+1
    // [43] call plot 
    // [57] phi from circle::@9 to plot [phi:circle::@9->plot]
  plot_from___b9:
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#4 [phi:circle::@9->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#4 [phi:circle::@9->plot#1] -- register_copy 
    jsr plot
    jmp __b10
    // circle::@10
  __b10:
    // [44] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<xc
    sec
    sbc.z y
    sta.z plot.x
    lda #>xc
    sbc.z y+1
    sta.z plot.x+1
    // [45] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<yc
    sec
    sbc.z x1
    sta.z plot.y
    lda #>yc
    sbc.z x1+1
    sta.z plot.y+1
    // [46] call plot 
    // [57] phi from circle::@10 to plot [phi:circle::@10->plot]
  plot_from___b10:
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#5 [phi:circle::@10->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#5 [phi:circle::@10->plot#1] -- register_copy 
    jsr plot
    jmp __b11
    // circle::@11
  __b11:
    // [47] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z y
    clc
    adc #<xc
    sta.z plot.x
    lda.z y+1
    adc #>xc
    sta.z plot.x+1
    // [48] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z x1
    clc
    adc #<yc
    sta.z plot.y
    lda.z x1+1
    adc #>yc
    sta.z plot.y+1
    // [49] call plot 
    // [57] phi from circle::@11 to plot [phi:circle::@11->plot]
  plot_from___b11:
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#6 [phi:circle::@11->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#6 [phi:circle::@11->plot#1] -- register_copy 
    jsr plot
    jmp __b12
    // circle::@12
  __b12:
    // [50] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<xc
    sec
    sbc.z y
    sta.z plot.x
    lda #>xc
    sbc.z y+1
    sta.z plot.x+1
    // [51] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z x1
    clc
    adc #<yc
    sta.z plot.y
    lda.z x1+1
    adc #>yc
    sta.z plot.y+1
    // [52] call plot 
    // [57] phi from circle::@12 to plot [phi:circle::@12->plot]
  plot_from___b12:
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#7 [phi:circle::@12->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#7 [phi:circle::@12->plot#1] -- register_copy 
    jsr plot
    jmp __b13
    // circle::@13
  __b13:
    // [53] (signed word) circle::x1#1 ← ++ (signed word) circle::x1#10 -- vwsz1=_inc_vwsz1 
    inc.z x1
    bne !+
    inc.z x1+1
  !:
    // [19] phi from circle::@13 to circle::@1 [phi:circle::@13->circle::@1]
  __b1_from___b13:
    // [19] phi (signed word) circle::p#3 = (signed word) circle::p#10 [phi:circle::@13->circle::@1#0] -- register_copy 
    // [19] phi (signed word) circle::y#13 = (signed word) circle::y#10 [phi:circle::@13->circle::@1#1] -- register_copy 
    // [19] phi (signed word) circle::x1#10 = (signed word) circle::x1#1 [phi:circle::@13->circle::@1#2] -- register_copy 
    jmp __b1
    // circle::@3
  __b3:
    // [54] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 -- vwsz1=vwsz2_rol_2 
    lda.z x1
    asl
    sta.z __9
    lda.z x1+1
    rol
    sta.z __9+1
    asl.z __9
    rol.z __9+1
    // [55] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 -- vwsz1=vwsz2_plus_vwsz3 
    lda.z p
    clc
    adc.z __9
    sta.z __10
    lda.z p+1
    adc.z __9+1
    sta.z __10+1
    // [56] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 -- vwsz1=vwsz2_plus_vbsc1 
    lda.z __10
    clc
    adc #<6
    sta.z p
    lda.z __10+1
    adc #>6
    sta.z p+1
    jmp __b4_from___b3
}
  // plot
// plot(signed word zp($a) x, signed word zp($c) y)
plot: {
    .label __8 = $1f
    .label __9 = $23
    .label __10 = $24
    .label __11 = $27
    .label __12 = $2d
    .label __13 = $31
    .label __14 = $32
    .label x = $a
    .label y = $c
    .label location = $21
    .label location_1 = $25
    .label location_2 = $2f
    .label __15 = $29
    .label __16 = $2b
    // [58] if((signed word) plot::x#8<(signed byte) 0) goto plot::@return -- vwsz1_lt_0_then_la1 
    lda.z x+1
    bmi __breturn
    jmp __b4
    // plot::@4
  __b4:
    // [59] if((signed word) plot::x#8>(signed word) $13f) goto plot::@return -- vwsz1_gt_vwsc1_then_la1 
    lda #<$13f
    cmp.z x
    lda #>$13f
    sbc.z x+1
    bvc !+
    eor #$80
  !:
    bmi __breturn
    jmp __b3
    // plot::@3
  __b3:
    // [60] if((signed word) plot::y#8<(signed byte) 0) goto plot::@return -- vwsz1_lt_0_then_la1 
    lda.z y+1
    bmi __breturn
    jmp __b2
    // plot::@2
  __b2:
    // [61] if((signed word) plot::y#8>=(signed word) $c7+(signed byte) 1) goto plot::@return -- vwsz1_ge_vwsc1_then_la1 
    lda.z y
    cmp #<$c7+1
    lda.z y+1
    sbc #>$c7+1
    bvc !+
    eor #$80
  !:
    bpl __breturn
    jmp __b1
    // plot::@1
  __b1:
    // [62] (signed word~) plot::$8 ← (signed word) plot::x#8 & (signed dword) $fff8 -- vwsz1=vwsz2_band_vdsc1 
    lda.z x
    and #<$fff8
    sta.z __8
    lda.z x+1
    and #>$fff8
    sta.z __8+1
    // [63] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$8 -- pbuz1=pbuc1_plus_vwsz2 
    lda #<BITMAP
    clc
    adc.z __8
    sta.z location
    lda #>BITMAP
    adc.z __8+1
    sta.z location+1
    // [64] (byte~) plot::$9 ← < (signed word) plot::y#8 -- vbuz1=_lo_vwsz2 
    lda.z y
    sta.z __9
    // [65] (byte~) plot::$10 ← (byte~) plot::$9 & (byte) 7 -- vbuz1=vbuz2_band_vbuc1 
    lda #7
    and.z __9
    sta.z __10
    // [66] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$10 -- pbuz1=pbuz2_plus_vbuz3 
    lda.z __10
    clc
    adc.z location
    sta.z location_1
    lda #0
    adc.z location+1
    sta.z location_1+1
    // [67] (signed word~) plot::$11 ← (signed word) plot::y#8 >> (signed byte) 3 -- vwsz1=vwsz2_ror_3 
    lda.z y+1
    cmp #$80
    ror
    sta.z __11+1
    lda.z y
    ror
    sta.z __11
    lda.z __11+1
    cmp #$80
    ror.z __11+1
    ror.z __11
    lda.z __11+1
    cmp #$80
    ror.z __11+1
    ror.z __11
    // [68] (signed word~) plot::$15 ← (signed word~) plot::$11 << (byte) 2 -- vwsz1=vwsz2_rol_2 
    lda.z __11
    asl
    sta.z __15
    lda.z __11+1
    rol
    sta.z __15+1
    asl.z __15
    rol.z __15+1
    // [69] (signed word~) plot::$16 ← (signed word~) plot::$15 + (signed word~) plot::$11 -- vwsz1=vwsz2_plus_vwsz3 
    lda.z __15
    clc
    adc.z __11
    sta.z __16
    lda.z __15+1
    adc.z __11+1
    sta.z __16+1
    // [70] (signed word~) plot::$12 ← (signed word~) plot::$16 << (byte) 6 -- vwsz1=vwsz2_rol_6 
    lda.z __16
    asl
    sta.z __12
    lda.z __16+1
    rol
    sta.z __12+1
    asl.z __12
    rol.z __12+1
    asl.z __12
    rol.z __12+1
    asl.z __12
    rol.z __12+1
    asl.z __12
    rol.z __12+1
    asl.z __12
    rol.z __12+1
    // [71] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$12 -- pbuz1=pbuz2_plus_vwsz3 
    lda.z location_1
    clc
    adc.z __12
    sta.z location_2
    lda.z location_1+1
    adc.z __12+1
    sta.z location_2+1
    // [72] (signed byte~) plot::$13 ← (signed word) plot::x#8 & (signed byte) 7 -- vbsz1=vwsz2_band_vbsc1 
    lda #7
    and.z x
    sta.z __13
    // [73] (byte~) plot::$14 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$13) -- vbuz1=_deref_pbuz2_bor_pbuc1_derefidx_vbsz3 
    ldy #0
    lda (location_2),y
    ldy.z __13
    ora bitmask,y
    sta.z __14
    // [74] *((byte*) plot::location#3) ← (byte~) plot::$14 -- _deref_pbuz1=vbuz2 
    lda.z __14
    ldy #0
    sta (location_2),y
    jmp __breturn
    // plot::@return
  __breturn:
    // [75] return 
    rts
}
  // fill
// Fill some memory with a value
// fill(signed word zp($e) size, byte zp($10) val)
fill: {
    .label end = $33
    .label addr = $11
    .label size = $e
    .label val = $10
    // [77] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 -- pbuz1=pbuz2_plus_vwsz3 
    lda.z addr
    clc
    adc.z size
    sta.z end
    lda.z addr+1
    adc.z size+1
    sta.z end+1
    // [78] phi from fill fill::@2 to fill::@1 [phi:fill/fill::@2->fill::@1]
  __b1_from_fill:
  __b1_from___b2:
    // [78] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@2->fill::@1#0] -- register_copy 
    jmp __b1
    // fill::@1
  __b1:
    // [79] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 -- pbuz1_neq_pbuz2_then_la1 
    lda.z addr+1
    cmp.z end+1
    bne __b2
    lda.z addr
    cmp.z end
    bne __b2
    jmp __breturn
    // fill::@return
  __breturn:
    // [80] return 
    rts
    // fill::@2
  __b2:
    // [81] *((byte*) fill::addr#2) ← (byte) fill::val#4 -- _deref_pbuz1=vbuz2 
    lda.z val
    ldy #0
    sta (addr),y
    // [82] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 
    inc.z addr
    bne !+
    inc.z addr+1
  !:
    jmp __b1_from___b2
}
  // File Data
  bitmask: .byte $80, $40, $20, $10, 8, 4, 2, 1

REGISTER UPLIFT POTENTIAL REGISTERS
Statement [8] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [12] if((signed word) main::i#2<(signed word) $b4) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a 
Statement [14] (signed word) circle::r#0 ← (signed word) main::i#2 [ main::i#2 circle::r#0 ] ( main:2 [ main::i#2 circle::r#0 ] ) always clobbers reg byte a 
Statement [16] (signed word) main::i#1 ← (signed word) main::i#2 + (signed byte) 5 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a 
Statement [17] (signed word~) circle::$0 ← (signed word) circle::r#0 << (signed byte) 1 [ circle::r#0 circle::$0 ] ( main:2::circle:15 [ main::i#2 circle::r#0 circle::$0 ] ) always clobbers reg byte a 
Statement [18] (signed word) circle::p#0 ← (signed byte) 3 - (signed word~) circle::$0 [ circle::r#0 circle::p#0 ] ( main:2::circle:15 [ main::i#2 circle::r#0 circle::p#0 ] ) always clobbers reg byte a 
Statement [20] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a 
Statement [22] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a 
Statement [23] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 ] ) always clobbers reg byte a 
Statement [24] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ) always clobbers reg byte a 
Statement [25] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ) always clobbers reg byte a 
Statement [26] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [ circle::x1#10 circle::y#1 circle::$7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#1 circle::$7 ] ) always clobbers reg byte a 
Statement [27] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a [ circle::x1#10 circle::y#1 circle::p#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#1 circle::p#2 ] ) always clobbers reg byte a 
Statement [29] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ) always clobbers reg byte a 
Statement [30] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ) always clobbers reg byte a 
Statement [32] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ) always clobbers reg byte a 
Statement [33] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ) always clobbers reg byte a 
Statement [35] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ) always clobbers reg byte a 
Statement [36] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ) always clobbers reg byte a 
Statement [38] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ) always clobbers reg byte a 
Statement [39] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ) always clobbers reg byte a 
Statement [41] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ) always clobbers reg byte a 
Statement [42] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ) always clobbers reg byte a 
Statement [44] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ) always clobbers reg byte a 
Statement [45] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ) always clobbers reg byte a 
Statement [47] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ) always clobbers reg byte a 
Statement [48] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ) always clobbers reg byte a 
Statement [50] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ) always clobbers reg byte a 
Statement [51] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ) always clobbers reg byte a 
Statement [54] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ) always clobbers reg byte a 
Statement [55] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [ circle::x1#10 circle::y#13 circle::$10 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::$10 ] ) always clobbers reg byte a 
Statement [56] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#1 ] ) always clobbers reg byte a 
Statement [58] if((signed word) plot::x#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a 
Statement [59] if((signed word) plot::x#8>(signed word) $13f) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a 
Statement [60] if((signed word) plot::y#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a 
Statement [61] if((signed word) plot::y#8>=(signed word) $c7+(signed byte) 1) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a 
Statement [62] (signed word~) plot::$8 ← (signed word) plot::x#8 & (signed dword) $fff8 [ plot::x#8 plot::y#8 plot::$8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] ) always clobbers reg byte a 
Statement [63] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$8 [ plot::x#8 plot::y#8 plot::location#1 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] ) always clobbers reg byte a 
Statement [64] (byte~) plot::$9 ← < (signed word) plot::y#8 [ plot::x#8 plot::y#8 plot::location#1 plot::$9 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] ) always clobbers reg byte a 
Statement [66] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$10 [ plot::x#8 plot::y#8 plot::location#2 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] ) always clobbers reg byte a 
Statement [67] (signed word~) plot::$11 ← (signed word) plot::y#8 >> (signed byte) 3 [ plot::x#8 plot::location#2 plot::$11 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] ) always clobbers reg byte a 
Statement [68] (signed word~) plot::$15 ← (signed word~) plot::$11 << (byte) 2 [ plot::x#8 plot::location#2 plot::$11 plot::$15 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] ) always clobbers reg byte a 
Statement [69] (signed word~) plot::$16 ← (signed word~) plot::$15 + (signed word~) plot::$11 [ plot::x#8 plot::location#2 plot::$16 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] ) always clobbers reg byte a 
Statement [70] (signed word~) plot::$12 ← (signed word~) plot::$16 << (byte) 6 [ plot::x#8 plot::location#2 plot::$12 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] ) always clobbers reg byte a 
Statement [71] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$12 [ plot::x#8 plot::location#3 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] ) always clobbers reg byte a 
Statement [72] (signed byte~) plot::$13 ← (signed word) plot::x#8 & (signed byte) 7 [ plot::location#3 plot::$13 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] ) always clobbers reg byte a 
Statement [73] (byte~) plot::$14 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$13) [ plot::location#3 plot::$14 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] ) always clobbers reg byte a reg byte y 
Statement [74] *((byte*) plot::location#3) ← (byte~) plot::$14 [ ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] ) always clobbers reg byte y 
Statement [77] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( main:2::fill:5 [ fill::addr#0 fill::val#4 fill::end#0 ] main:2::fill:7 [ fill::addr#0 fill::val#4 fill::end#0 ] ) always clobbers reg byte a 
Removing always clobbered register reg byte a as potential for zp[1]:16 [ fill::val#4 ]
Statement [79] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a 
Statement [81] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y 
Removing always clobbered register reg byte y as potential for zp[1]:16 [ fill::val#4 ]
Statement [8] *((const byte*) BORDERCOL) ← (const byte) BLUE [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( main:2 [ ] ) always clobbers reg byte a 
Statement [12] if((signed word) main::i#2<(signed word) $b4) goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a 
Statement [14] (signed word) circle::r#0 ← (signed word) main::i#2 [ main::i#2 circle::r#0 ] ( main:2 [ main::i#2 circle::r#0 ] ) always clobbers reg byte a 
Statement [16] (signed word) main::i#1 ← (signed word) main::i#2 + (signed byte) 5 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a 
Statement [17] (signed word~) circle::$0 ← (signed word) circle::r#0 << (signed byte) 1 [ circle::r#0 circle::$0 ] ( main:2::circle:15 [ main::i#2 circle::r#0 circle::$0 ] ) always clobbers reg byte a 
Statement [18] (signed word) circle::p#0 ← (signed byte) 3 - (signed word~) circle::$0 [ circle::r#0 circle::p#0 ] ( main:2::circle:15 [ main::i#2 circle::r#0 circle::p#0 ] ) always clobbers reg byte a 
Statement [20] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a 
Statement [22] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 ] ) always clobbers reg byte a 
Statement [23] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 ] ) always clobbers reg byte a 
Statement [24] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 [ circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 circle::$5 ] ) always clobbers reg byte a 
Statement [25] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 [ circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::p#3 circle::y#1 circle::$6 ] ) always clobbers reg byte a 
Statement [26] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 [ circle::x1#10 circle::y#1 circle::$7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#1 circle::$7 ] ) always clobbers reg byte a 
Statement [27] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a [ circle::x1#10 circle::y#1 circle::p#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#1 circle::p#2 ] ) always clobbers reg byte a 
Statement [29] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#0 ] ) always clobbers reg byte a 
Statement [30] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#0 plot::y#0 ] ) always clobbers reg byte a 
Statement [32] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#1 ] ) always clobbers reg byte a 
Statement [33] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#1 plot::y#1 ] ) always clobbers reg byte a 
Statement [35] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#2 ] ) always clobbers reg byte a 
Statement [36] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#2 plot::y#2 ] ) always clobbers reg byte a 
Statement [38] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#3 ] ) always clobbers reg byte a 
Statement [39] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#3 plot::y#3 ] ) always clobbers reg byte a 
Statement [41] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#4 ] ) always clobbers reg byte a 
Statement [42] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#4 plot::y#4 ] ) always clobbers reg byte a 
Statement [44] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#5 ] ) always clobbers reg byte a 
Statement [45] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#5 plot::y#5 ] ) always clobbers reg byte a 
Statement [47] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#6 ] ) always clobbers reg byte a 
Statement [48] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#6 plot::y#6 ] ) always clobbers reg byte a 
Statement [50] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#7 ] ) always clobbers reg byte a 
Statement [51] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#7 plot::y#7 ] ) always clobbers reg byte a 
Statement [54] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 [ circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 circle::$9 ] ) always clobbers reg byte a 
Statement [55] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 [ circle::x1#10 circle::y#13 circle::$10 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::$10 ] ) always clobbers reg byte a 
Statement [56] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( main:2::circle:15 [ main::i#2 circle::x1#10 circle::y#13 circle::p#1 ] ) always clobbers reg byte a 
Statement [58] if((signed word) plot::x#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a 
Statement [59] if((signed word) plot::x#8>(signed word) $13f) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a 
Statement [60] if((signed word) plot::y#8<(signed byte) 0) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a 
Statement [61] if((signed word) plot::y#8>=(signed word) $c7+(signed byte) 1) goto plot::@return [ plot::x#8 plot::y#8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 ] ) always clobbers reg byte a 
Statement [62] (signed word~) plot::$8 ← (signed word) plot::x#8 & (signed dword) $fff8 [ plot::x#8 plot::y#8 plot::$8 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$8 ] ) always clobbers reg byte a 
Statement [63] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$8 [ plot::x#8 plot::y#8 plot::location#1 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] ) always clobbers reg byte a 
Statement [64] (byte~) plot::$9 ← < (signed word) plot::y#8 [ plot::x#8 plot::y#8 plot::location#1 plot::$9 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$9 ] ) always clobbers reg byte a 
Statement [66] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$10 [ plot::x#8 plot::y#8 plot::location#2 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] ) always clobbers reg byte a 
Statement [67] (signed word~) plot::$11 ← (signed word) plot::y#8 >> (signed byte) 3 [ plot::x#8 plot::location#2 plot::$11 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 ] ) always clobbers reg byte a 
Statement [68] (signed word~) plot::$15 ← (signed word~) plot::$11 << (byte) 2 [ plot::x#8 plot::location#2 plot::$11 plot::$15 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$11 plot::$15 ] ) always clobbers reg byte a 
Statement [69] (signed word~) plot::$16 ← (signed word~) plot::$15 + (signed word~) plot::$11 [ plot::x#8 plot::location#2 plot::$16 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$16 ] ) always clobbers reg byte a 
Statement [70] (signed word~) plot::$12 ← (signed word~) plot::$16 << (byte) 6 [ plot::x#8 plot::location#2 plot::$12 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$12 ] ) always clobbers reg byte a 
Statement [71] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$12 [ plot::x#8 plot::location#3 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] ) always clobbers reg byte a 
Statement [72] (signed byte~) plot::$13 ← (signed word) plot::x#8 & (signed byte) 7 [ plot::location#3 plot::$13 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] ) always clobbers reg byte a 
Statement [73] (byte~) plot::$14 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$13) [ plot::location#3 plot::$14 ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] ) always clobbers reg byte a reg byte y 
Statement [74] *((byte*) plot::location#3) ← (byte~) plot::$14 [ ] ( main:2::circle:15::plot:31 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] main:2::circle:15::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] ) always clobbers reg byte y 
Statement [77] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( main:2::fill:5 [ fill::addr#0 fill::val#4 fill::end#0 ] main:2::fill:7 [ fill::addr#0 fill::val#4 fill::end#0 ] ) always clobbers reg byte a 
Statement [79] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a 
Statement [81] *((byte*) fill::addr#2) ← (byte) fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( main:2::fill:5 [ fill::val#4 fill::end#0 fill::addr#2 ] main:2::fill:7 [ fill::val#4 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y 
Potential registers zp[2]:2 [ main::i#2 main::i#1 ] : zp[2]:2 , 
Potential registers zp[2]:4 [ circle::x1#10 circle::x1#1 ] : zp[2]:4 , 
Potential registers zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] : zp[2]:6 , 
Potential registers zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] : zp[2]:8 , 
Potential registers zp[2]:10 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] : zp[2]:10 , 
Potential registers zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] : zp[2]:12 , 
Potential registers zp[2]:14 [ fill::size#2 ] : zp[2]:14 , 
Potential registers zp[1]:16 [ fill::val#4 ] : zp[1]:16 , reg byte x , 
Potential registers zp[2]:17 [ fill::addr#2 fill::addr#0 fill::addr#1 ] : zp[2]:17 , 
Potential registers zp[2]:19 [ circle::$0 ] : zp[2]:19 , 
Potential registers zp[2]:21 [ circle::$5 ] : zp[2]:21 , 
Potential registers zp[2]:23 [ circle::$6 ] : zp[2]:23 , 
Potential registers zp[2]:25 [ circle::$7 ] : zp[2]:25 , 
Potential registers zp[2]:27 [ circle::$9 ] : zp[2]:27 , 
Potential registers zp[2]:29 [ circle::$10 ] : zp[2]:29 , 
Potential registers zp[2]:31 [ plot::$8 ] : zp[2]:31 , 
Potential registers zp[2]:33 [ plot::location#1 ] : zp[2]:33 , 
Potential registers zp[1]:35 [ plot::$9 ] : zp[1]:35 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:36 [ plot::$10 ] : zp[1]:36 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:37 [ plot::location#2 ] : zp[2]:37 , 
Potential registers zp[2]:39 [ plot::$11 ] : zp[2]:39 , 
Potential registers zp[2]:41 [ plot::$15 ] : zp[2]:41 , 
Potential registers zp[2]:43 [ plot::$16 ] : zp[2]:43 , 
Potential registers zp[2]:45 [ plot::$12 ] : zp[2]:45 , 
Potential registers zp[2]:47 [ plot::location#3 ] : zp[2]:47 , 
Potential registers zp[1]:49 [ plot::$13 ] : zp[1]:49 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[1]:50 [ plot::$14 ] : zp[1]:50 , reg byte a , reg byte x , reg byte y , 
Potential registers zp[2]:51 [ fill::end#0 ] : zp[2]:51 , 

REGISTER UPLIFT SCOPES
Uplift Scope [plot] 1,697.6: zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] 862.4: zp[2]:10 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] 4: zp[2]:31 [ plot::$8 ] 4: zp[1]:35 [ plot::$9 ] 4: zp[1]:36 [ plot::$10 ] 4: zp[2]:41 [ plot::$15 ] 4: zp[2]:43 [ plot::$16 ] 4: zp[2]:45 [ plot::$12 ] 4: zp[1]:49 [ plot::$13 ] 4: zp[1]:50 [ plot::$14 ] 3: zp[2]:39 [ plot::$11 ] 2: zp[2]:47 [ plot::location#3 ] 1.33: zp[2]:33 [ plot::location#1 ] 0.8: zp[2]:37 [ plot::location#2 ] 
Uplift Scope [circle] 477.65: zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] 238.47: zp[2]:4 [ circle::x1#10 circle::x1#1 ] 202: zp[2]:21 [ circle::$5 ] 202: zp[2]:23 [ circle::$6 ] 202: zp[2]:25 [ circle::$7 ] 202: zp[2]:27 [ circle::$9 ] 202: zp[2]:29 [ circle::$10 ] 176: zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] 4: zp[2]:19 [ circle::$0 ] 
Uplift Scope [fill] 39.33: zp[2]:17 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 2.6: zp[2]:51 [ fill::end#0 ] 2: zp[2]:14 [ fill::size#2 ] 1.83: zp[1]:16 [ fill::val#4 ] 
Uplift Scope [main] 33: zp[2]:2 [ main::i#2 main::i#1 ] 
Uplift Scope [] 

Uplifting [plot] best 53688 combination zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] zp[2]:10 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] zp[2]:31 [ plot::$8 ] reg byte a [ plot::$9 ] reg byte a [ plot::$10 ] zp[2]:41 [ plot::$15 ] zp[2]:43 [ plot::$16 ] zp[2]:45 [ plot::$12 ] reg byte a [ plot::$13 ] reg byte a [ plot::$14 ] zp[2]:39 [ plot::$11 ] zp[2]:47 [ plot::location#3 ] zp[2]:33 [ plot::location#1 ] zp[2]:37 [ plot::location#2 ] 
Limited combination testing to 100 combinations of 256 possible.
Uplifting [circle] best 53688 combination zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] zp[2]:4 [ circle::x1#10 circle::x1#1 ] zp[2]:21 [ circle::$5 ] zp[2]:23 [ circle::$6 ] zp[2]:25 [ circle::$7 ] zp[2]:27 [ circle::$9 ] zp[2]:29 [ circle::$10 ] zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] zp[2]:19 [ circle::$0 ] 
Uplifting [fill] best 53672 combination zp[2]:17 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp[2]:51 [ fill::end#0 ] zp[2]:14 [ fill::size#2 ] reg byte x [ fill::val#4 ] 
Uplifting [main] best 53672 combination zp[2]:2 [ main::i#2 main::i#1 ] 
Uplifting [] best 53672 combination 
Coalescing zero page register [ zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] ] with [ zp[2]:25 [ circle::$7 ] ] - score: 2
Coalescing zero page register [ zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 ] ] with [ zp[2]:29 [ circle::$10 ] ] - score: 2
Coalescing zero page register [ zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 ] ] with [ zp[2]:19 [ circle::$0 ] ] - score: 1
Coalescing zero page register [ zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 ] ] with [ zp[2]:39 [ plot::$11 ] ] - score: 1
Coalescing zero page register [ zp[2]:14 [ fill::size#2 ] ] with [ zp[2]:51 [ fill::end#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:21 [ circle::$5 ] ] with [ zp[2]:23 [ circle::$6 ] ] - score: 1
Coalescing zero page register [ zp[2]:31 [ plot::$8 ] ] with [ zp[2]:33 [ plot::location#1 ] ] - score: 1
Coalescing zero page register [ zp[2]:37 [ plot::location#2 ] ] with [ zp[2]:47 [ plot::location#3 ] ] - score: 1
Coalescing zero page register [ zp[2]:41 [ plot::$15 ] ] with [ zp[2]:43 [ plot::$16 ] ] - score: 1
Coalescing zero page register [ zp[2]:31 [ plot::$8 plot::location#1 ] ] with [ zp[2]:37 [ plot::location#2 plot::location#3 ] ] - score: 1
Coalescing zero page register [ zp[2]:41 [ plot::$15 plot::$16 ] ] with [ zp[2]:45 [ plot::$12 ] ] - score: 1
Coalescing zero page register [ zp[2]:14 [ fill::size#2 fill::end#0 ] ] with [ zp[2]:2 [ main::i#2 main::i#1 ] ]
Coalescing zero page register [ zp[2]:17 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ] with [ zp[2]:4 [ circle::x1#10 circle::x1#1 ] ]
Coalescing zero page register [ zp[2]:21 [ circle::$5 circle::$6 ] ] with [ zp[2]:10 [ plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ] ]
Coalescing zero page register [ zp[2]:27 [ circle::$9 ] ] with [ zp[2]:12 [ plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::$11 ] ]
Allocated (was zp[2]:6) zp[2]:2 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ]
Allocated (was zp[2]:8) zp[2]:4 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 circle::$0 ]
Allocated (was zp[2]:14) zp[2]:6 [ fill::size#2 fill::end#0 main::i#2 main::i#1 ]
Allocated (was zp[2]:17) zp[2]:8 [ fill::addr#2 fill::addr#0 fill::addr#1 circle::x1#10 circle::x1#1 ]
Allocated (was zp[2]:21) zp[2]:10 [ circle::$5 circle::$6 plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ]
Allocated (was zp[2]:27) zp[2]:12 [ circle::$9 plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::$11 ]
Allocated (was zp[2]:31) zp[2]:14 [ plot::$8 plot::location#1 plot::location#2 plot::location#3 ]
Allocated (was zp[2]:41) zp[2]:16 [ plot::$15 plot::$16 plot::$12 ]

ASSEMBLER BEFORE OPTIMIZATION
  // File Comments
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(__bbegin)
.pc = $80d "Program"
  // Global Constants & labels
  .label BORDERCOL = $d020
  .label D011 = $d011
  .const VIC_BMM = $20
  .const VIC_DEN = $10
  .const VIC_RSEL = 8
  .label VIC_MEMORY = $d018
  .const BLUE = 6
  .label SCREEN = $400
  .label BITMAP = $2000
  // @begin
__bbegin:
  // [1] phi from @begin to @1 [phi:@begin->@1]
__b1_from___bbegin:
  jmp __b1
  // @1
__b1:
  // [2] call main 
  // [4] phi from @1 to main [phi:@1->main]
main_from___b1:
  jsr main
  // [3] phi from @1 to @end [phi:@1->@end]
__bend_from___b1:
  jmp __bend
  // @end
__bend:
  // main
main: {
    .label i = 6
    // [5] call fill 
    // [76] phi from main to fill [phi:main->fill]
  fill_from_main:
    // [76] phi (byte) fill::val#4 = (byte) 0 [phi:main->fill#0] -- vbuxx=vbuc1 
    ldx #0
    // [76] phi (signed word) fill::size#2 = (signed word)(number) $28*(number) $19*(number) 8 [phi:main->fill#1] -- vwsz1=vwsc1 
    lda #<$28*$19*8
    sta.z fill.size
    lda #>$28*$19*8
    sta.z fill.size+1
    // [76] phi (byte*) fill::addr#0 = (const byte*) BITMAP [phi:main->fill#2] -- pbuz1=pbuc1 
    lda #<BITMAP
    sta.z fill.addr
    lda #>BITMAP
    sta.z fill.addr+1
    jsr fill
    // [6] phi from main to main::@4 [phi:main->main::@4]
  __b4_from_main:
    jmp __b4
    // main::@4
  __b4:
    // [7] call fill 
    // [76] phi from main::@4 to fill [phi:main::@4->fill]
  fill_from___b4:
    // [76] phi (byte) fill::val#4 = (byte) $16 [phi:main::@4->fill#0] -- vbuxx=vbuc1 
    ldx #$16
    // [76] phi (signed word) fill::size#2 = (signed word)(number) $28*(number) $19 [phi:main::@4->fill#1] -- vwsz1=vwsc1 
    lda #<$28*$19
    sta.z fill.size
    lda #>$28*$19
    sta.z fill.size+1
    // [76] phi (byte*) fill::addr#0 = (const byte*) SCREEN [phi:main::@4->fill#2] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta.z fill.addr
    lda #>SCREEN
    sta.z fill.addr+1
    jsr fill
    jmp __b5
    // main::@5
  __b5:
    // [8] *((const byte*) BORDERCOL) ← (const byte) BLUE -- _deref_pbuc1=vbuc2 
    lda #BLUE
    sta BORDERCOL
    // [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2 
    lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
    sta D011
    // [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 -- _deref_pbuc1=vbuc2 
    lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400
    sta VIC_MEMORY
    // [11] phi from main::@5 to main::@1 [phi:main::@5->main::@1]
  __b1_from___b5:
    // [11] phi (signed word) main::i#2 = (signed word) 1 [phi:main::@5->main::@1#0] -- vwsz1=vwsc1 
    lda #<1
    sta.z i
    lda #>1
    sta.z i+1
    jmp __b1
    // main::@1
  __b1:
    // [12] if((signed word) main::i#2<(signed word) $b4) goto main::@2 -- vwsz1_lt_vwsc1_then_la1 
    lda.z i
    cmp #<$b4
    lda.z i+1
    sbc #>$b4
    bvc !+
    eor #$80
  !:
    bmi __b2
    // [13] phi from main::@1 main::@3 to main::@3 [phi:main::@1/main::@3->main::@3]
  __b3_from___b1:
  __b3_from___b3:
    jmp __b3
    // main::@3
  __b3:
    jmp __b3_from___b3
    // main::@2
  __b2:
    // [14] (signed word) circle::r#0 ← (signed word) main::i#2 -- vwsz1=vwsz2 
    lda.z i
    sta.z circle.r
    lda.z i+1
    sta.z circle.r+1
    // [15] call circle 
    jsr circle
    jmp __b6
    // main::@6
  __b6:
    // [16] (signed word) main::i#1 ← (signed word) main::i#2 + (signed byte) 5 -- vwsz1=vwsz1_plus_vbsc1 
    lda.z i
    clc
    adc #<5
    sta.z i
    lda.z i+1
    adc #>5
    sta.z i+1
    // [11] phi from main::@6 to main::@1 [phi:main::@6->main::@1]
  __b1_from___b6:
    // [11] phi (signed word) main::i#2 = (signed word) main::i#1 [phi:main::@6->main::@1#0] -- register_copy 
    jmp __b1
}
  // circle
// circle(signed word zp(2) r)
circle: {
    .const xc = $a0
    .const yc = $64
    .label __0 = 4
    .label __5 = $a
    .label __6 = $a
    .label __7 = 4
    .label __9 = $c
    .label __10 = 4
    .label r = 2
    .label p = 4
    .label y = 2
    .label x1 = 8
    // [17] (signed word~) circle::$0 ← (signed word) circle::r#0 << (signed byte) 1 -- vwsz1=vwsz2_rol_1 
    lda.z r
    asl
    sta.z __0
    lda.z r+1
    rol
    sta.z __0+1
    // [18] (signed word) circle::p#0 ← (signed byte) 3 - (signed word~) circle::$0 -- vwsz1=vwuc1_minus_vwsz1 
    sec
    lda #<3
    sbc.z p
    sta.z p
    lda #>3
    sbc.z p+1
    sta.z p+1
    // [19] phi from circle to circle::@1 [phi:circle->circle::@1]
  __b1_from_circle:
    // [19] phi (signed word) circle::p#3 = (signed word) circle::p#0 [phi:circle->circle::@1#0] -- register_copy 
    // [19] phi (signed word) circle::y#13 = (signed word) circle::r#0 [phi:circle->circle::@1#1] -- register_copy 
    // [19] phi (signed word) circle::x1#10 = (signed word) 0 [phi:circle->circle::@1#2] -- vwsz1=vwsc1 
    lda #<0
    sta.z x1
    lda #>0
    sta.z x1+1
    jmp __b1
    // circle::@1
  __b1:
    // [20] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 -- vwsz1_le_vwsz2_then_la1 
    lda.z y
    cmp.z x1
    lda.z y+1
    sbc.z x1+1
    bvc !+
    eor #$80
  !:
    bpl __b2
    jmp __breturn
    // circle::@return
  __breturn:
    // [21] return 
    rts
    // circle::@2
  __b2:
    // [22] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 -- vwsz1_lt_0_then_la1 
    lda.z p+1
    bmi __b3
    jmp __b5
    // circle::@5
  __b5:
    // [23] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 -- vwsz1=vwsz1_minus_1 
    sec
    lda.z y
    sbc #1
    sta.z y
    bcs !+
    dec.z y+1
  !:
    // [24] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 -- vwsz1=vwsz2_minus_vwsz3 
    lda.z x1
    sec
    sbc.z y
    sta.z __5
    lda.z x1+1
    sbc.z y+1
    sta.z __5+1
    // [25] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 -- vwsz1=vwsz1_rol_2 
    asl.z __6
    rol.z __6+1
    asl.z __6
    rol.z __6+1
    // [26] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 -- vwsz1=vwsz1_plus_vwsz2 
    lda.z __7
    clc
    adc.z __6
    sta.z __7
    lda.z __7+1
    adc.z __6+1
    sta.z __7+1
    // [27] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a -- vwsz1=vwsz1_plus_vbsc1 
    lda.z p
    clc
    adc #<$a
    sta.z p
    lda.z p+1
    adc #>$a
    sta.z p+1
    // [28] phi from circle::@3 circle::@5 to circle::@4 [phi:circle::@3/circle::@5->circle::@4]
  __b4_from___b3:
  __b4_from___b5:
    // [28] phi (signed word) circle::p#10 = (signed word) circle::p#1 [phi:circle::@3/circle::@5->circle::@4#0] -- register_copy 
    // [28] phi (signed word) circle::y#10 = (signed word) circle::y#13 [phi:circle::@3/circle::@5->circle::@4#1] -- register_copy 
    jmp __b4
    // circle::@4
  __b4:
    // [29] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z x1
    clc
    adc #<xc
    sta.z plot.x
    lda.z x1+1
    adc #>xc
    sta.z plot.x+1
    // [30] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<yc
    sec
    sbc.z y
    sta.z plot.y
    lda #>yc
    sbc.z y+1
    sta.z plot.y+1
    // [31] call plot 
    // [57] phi from circle::@4 to plot [phi:circle::@4->plot]
  plot_from___b4:
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#0 [phi:circle::@4->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#0 [phi:circle::@4->plot#1] -- register_copy 
    jsr plot
    jmp __b6
    // circle::@6
  __b6:
    // [32] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<xc
    sec
    sbc.z x1
    sta.z plot.x
    lda #>xc
    sbc.z x1+1
    sta.z plot.x+1
    // [33] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<yc
    sec
    sbc.z y
    sta.z plot.y
    lda #>yc
    sbc.z y+1
    sta.z plot.y+1
    // [34] call plot 
    // [57] phi from circle::@6 to plot [phi:circle::@6->plot]
  plot_from___b6:
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#1 [phi:circle::@6->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#1 [phi:circle::@6->plot#1] -- register_copy 
    jsr plot
    jmp __b7
    // circle::@7
  __b7:
    // [35] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z x1
    clc
    adc #<xc
    sta.z plot.x
    lda.z x1+1
    adc #>xc
    sta.z plot.x+1
    // [36] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z y
    clc
    adc #<yc
    sta.z plot.y
    lda.z y+1
    adc #>yc
    sta.z plot.y+1
    // [37] call plot 
    // [57] phi from circle::@7 to plot [phi:circle::@7->plot]
  plot_from___b7:
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#2 [phi:circle::@7->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#2 [phi:circle::@7->plot#1] -- register_copy 
    jsr plot
    jmp __b8
    // circle::@8
  __b8:
    // [38] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<xc
    sec
    sbc.z x1
    sta.z plot.x
    lda #>xc
    sbc.z x1+1
    sta.z plot.x+1
    // [39] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z y
    clc
    adc #<yc
    sta.z plot.y
    lda.z y+1
    adc #>yc
    sta.z plot.y+1
    // [40] call plot 
    // [57] phi from circle::@8 to plot [phi:circle::@8->plot]
  plot_from___b8:
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#3 [phi:circle::@8->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#3 [phi:circle::@8->plot#1] -- register_copy 
    jsr plot
    jmp __b9
    // circle::@9
  __b9:
    // [41] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z y
    clc
    adc #<xc
    sta.z plot.x
    lda.z y+1
    adc #>xc
    sta.z plot.x+1
    // [42] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<yc
    sec
    sbc.z x1
    sta.z plot.y
    lda #>yc
    sbc.z x1+1
    sta.z plot.y+1
    // [43] call plot 
    // [57] phi from circle::@9 to plot [phi:circle::@9->plot]
  plot_from___b9:
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#4 [phi:circle::@9->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#4 [phi:circle::@9->plot#1] -- register_copy 
    jsr plot
    jmp __b10
    // circle::@10
  __b10:
    // [44] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<xc
    sec
    sbc.z y
    sta.z plot.x
    lda #>xc
    sbc.z y+1
    sta.z plot.x+1
    // [45] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<yc
    sec
    sbc.z x1
    sta.z plot.y
    lda #>yc
    sbc.z x1+1
    sta.z plot.y+1
    // [46] call plot 
    // [57] phi from circle::@10 to plot [phi:circle::@10->plot]
  plot_from___b10:
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#5 [phi:circle::@10->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#5 [phi:circle::@10->plot#1] -- register_copy 
    jsr plot
    jmp __b11
    // circle::@11
  __b11:
    // [47] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z y
    clc
    adc #<xc
    sta.z plot.x
    lda.z y+1
    adc #>xc
    sta.z plot.x+1
    // [48] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z x1
    clc
    adc #<yc
    sta.z plot.y
    lda.z x1+1
    adc #>yc
    sta.z plot.y+1
    // [49] call plot 
    // [57] phi from circle::@11 to plot [phi:circle::@11->plot]
  plot_from___b11:
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#6 [phi:circle::@11->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#6 [phi:circle::@11->plot#1] -- register_copy 
    jsr plot
    jmp __b12
    // circle::@12
  __b12:
    // [50] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<xc
    sec
    sbc.z y
    sta.z plot.x
    lda #>xc
    sbc.z y+1
    sta.z plot.x+1
    // [51] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z x1
    clc
    adc #<yc
    sta.z plot.y
    lda.z x1+1
    adc #>yc
    sta.z plot.y+1
    // [52] call plot 
    // [57] phi from circle::@12 to plot [phi:circle::@12->plot]
  plot_from___b12:
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#7 [phi:circle::@12->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#7 [phi:circle::@12->plot#1] -- register_copy 
    jsr plot
    jmp __b13
    // circle::@13
  __b13:
    // [53] (signed word) circle::x1#1 ← ++ (signed word) circle::x1#10 -- vwsz1=_inc_vwsz1 
    inc.z x1
    bne !+
    inc.z x1+1
  !:
    // [19] phi from circle::@13 to circle::@1 [phi:circle::@13->circle::@1]
  __b1_from___b13:
    // [19] phi (signed word) circle::p#3 = (signed word) circle::p#10 [phi:circle::@13->circle::@1#0] -- register_copy 
    // [19] phi (signed word) circle::y#13 = (signed word) circle::y#10 [phi:circle::@13->circle::@1#1] -- register_copy 
    // [19] phi (signed word) circle::x1#10 = (signed word) circle::x1#1 [phi:circle::@13->circle::@1#2] -- register_copy 
    jmp __b1
    // circle::@3
  __b3:
    // [54] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 -- vwsz1=vwsz2_rol_2 
    lda.z x1
    asl
    sta.z __9
    lda.z x1+1
    rol
    sta.z __9+1
    asl.z __9
    rol.z __9+1
    // [55] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 -- vwsz1=vwsz1_plus_vwsz2 
    lda.z __10
    clc
    adc.z __9
    sta.z __10
    lda.z __10+1
    adc.z __9+1
    sta.z __10+1
    // [56] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 -- vwsz1=vwsz1_plus_vbsc1 
    lda.z p
    clc
    adc #<6
    sta.z p
    lda.z p+1
    adc #>6
    sta.z p+1
    jmp __b4_from___b3
}
  // plot
// plot(signed word zp($a) x, signed word zp($c) y)
plot: {
    .label __8 = $e
    .label __11 = $c
    .label __12 = $10
    .label x = $a
    .label y = $c
    .label location = $e
    .label __15 = $10
    .label __16 = $10
    // [58] if((signed word) plot::x#8<(signed byte) 0) goto plot::@return -- vwsz1_lt_0_then_la1 
    lda.z x+1
    bmi __breturn
    jmp __b4
    // plot::@4
  __b4:
    // [59] if((signed word) plot::x#8>(signed word) $13f) goto plot::@return -- vwsz1_gt_vwsc1_then_la1 
    lda #<$13f
    cmp.z x
    lda #>$13f
    sbc.z x+1
    bvc !+
    eor #$80
  !:
    bmi __breturn
    jmp __b3
    // plot::@3
  __b3:
    // [60] if((signed word) plot::y#8<(signed byte) 0) goto plot::@return -- vwsz1_lt_0_then_la1 
    lda.z y+1
    bmi __breturn
    jmp __b2
    // plot::@2
  __b2:
    // [61] if((signed word) plot::y#8>=(signed word) $c7+(signed byte) 1) goto plot::@return -- vwsz1_ge_vwsc1_then_la1 
    lda.z y
    cmp #<$c7+1
    lda.z y+1
    sbc #>$c7+1
    bvc !+
    eor #$80
  !:
    bpl __breturn
    jmp __b1
    // plot::@1
  __b1:
    // [62] (signed word~) plot::$8 ← (signed word) plot::x#8 & (signed dword) $fff8 -- vwsz1=vwsz2_band_vdsc1 
    lda.z x
    and #<$fff8
    sta.z __8
    lda.z x+1
    and #>$fff8
    sta.z __8+1
    // [63] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$8 -- pbuz1=pbuc1_plus_vwsz1 
    clc
    lda.z location
    adc #<BITMAP
    sta.z location
    lda.z location+1
    adc #>BITMAP
    sta.z location+1
    // [64] (byte~) plot::$9 ← < (signed word) plot::y#8 -- vbuaa=_lo_vwsz1 
    lda.z y
    // [65] (byte~) plot::$10 ← (byte~) plot::$9 & (byte) 7 -- vbuaa=vbuaa_band_vbuc1 
    and #7
    // [66] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$10 -- pbuz1=pbuz1_plus_vbuaa 
    clc
    adc.z location
    sta.z location
    bcc !+
    inc.z location+1
  !:
    // [67] (signed word~) plot::$11 ← (signed word) plot::y#8 >> (signed byte) 3 -- vwsz1=vwsz1_ror_3 
    lda.z __11+1
    cmp #$80
    ror.z __11+1
    ror.z __11
    lda.z __11+1
    cmp #$80
    ror.z __11+1
    ror.z __11
    lda.z __11+1
    cmp #$80
    ror.z __11+1
    ror.z __11
    // [68] (signed word~) plot::$15 ← (signed word~) plot::$11 << (byte) 2 -- vwsz1=vwsz2_rol_2 
    lda.z __11
    asl
    sta.z __15
    lda.z __11+1
    rol
    sta.z __15+1
    asl.z __15
    rol.z __15+1
    // [69] (signed word~) plot::$16 ← (signed word~) plot::$15 + (signed word~) plot::$11 -- vwsz1=vwsz1_plus_vwsz2 
    lda.z __16
    clc
    adc.z __11
    sta.z __16
    lda.z __16+1
    adc.z __11+1
    sta.z __16+1
    // [70] (signed word~) plot::$12 ← (signed word~) plot::$16 << (byte) 6 -- vwsz1=vwsz1_rol_6 
    lda.z __12+1
    sta.z $ff
    lda.z __12
    sta.z __12+1
    lda #0
    sta.z __12
    lsr.z $ff
    ror.z __12+1
    ror.z __12
    lsr.z $ff
    ror.z __12+1
    ror.z __12
    // [71] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$12 -- pbuz1=pbuz1_plus_vwsz2 
    lda.z location
    clc
    adc.z __12
    sta.z location
    lda.z location+1
    adc.z __12+1
    sta.z location+1
    // [72] (signed byte~) plot::$13 ← (signed word) plot::x#8 & (signed byte) 7 -- vbsaa=vwsz1_band_vbsc1 
    lda #7
    and.z x
    // [73] (byte~) plot::$14 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$13) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbsaa 
    tay
    lda bitmask,y
    ldy #0
    ora (location),y
    // [74] *((byte*) plot::location#3) ← (byte~) plot::$14 -- _deref_pbuz1=vbuaa 
    ldy #0
    sta (location),y
    jmp __breturn
    // plot::@return
  __breturn:
    // [75] return 
    rts
}
  // fill
// Fill some memory with a value
// fill(signed word zp(6) size, byte register(X) val)
fill: {
    .label end = 6
    .label addr = 8
    .label size = 6
    // [77] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 -- pbuz1=pbuz2_plus_vwsz1 
    lda.z end
    clc
    adc.z addr
    sta.z end
    lda.z end+1
    adc.z addr+1
    sta.z end+1
    // [78] phi from fill fill::@2 to fill::@1 [phi:fill/fill::@2->fill::@1]
  __b1_from_fill:
  __b1_from___b2:
    // [78] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@2->fill::@1#0] -- register_copy 
    jmp __b1
    // fill::@1
  __b1:
    // [79] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 -- pbuz1_neq_pbuz2_then_la1 
    lda.z addr+1
    cmp.z end+1
    bne __b2
    lda.z addr
    cmp.z end
    bne __b2
    jmp __breturn
    // fill::@return
  __breturn:
    // [80] return 
    rts
    // fill::@2
  __b2:
    // [81] *((byte*) fill::addr#2) ← (byte) fill::val#4 -- _deref_pbuz1=vbuxx 
    txa
    ldy #0
    sta (addr),y
    // [82] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 
    inc.z addr
    bne !+
    inc.z addr+1
  !:
    jmp __b1_from___b2
}
  // File Data
  bitmask: .byte $80, $40, $20, $10, 8, 4, 2, 1

ASSEMBLER OPTIMIZATIONS
Removing instruction jmp __b1
Removing instruction jmp __bend
Removing instruction jmp __b4
Removing instruction jmp __b5
Removing instruction jmp __b1
Removing instruction jmp __b3
Removing instruction jmp __b6
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b5
Removing instruction jmp __b4
Removing instruction jmp __b6
Removing instruction jmp __b7
Removing instruction jmp __b8
Removing instruction jmp __b9
Removing instruction jmp __b10
Removing instruction jmp __b11
Removing instruction jmp __b12
Removing instruction jmp __b13
Removing instruction jmp __b4
Removing instruction jmp __b3
Removing instruction jmp __b2
Removing instruction jmp __b1
Removing instruction jmp __breturn
Removing instruction jmp __b1
Removing instruction jmp __breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda #>0
Removing instruction ldy #0
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label __bbegin with __b1
Replacing label __b3_from___b3 with __b3
Replacing label __b4_from___b3 with __b4
Replacing label __b1_from___b2 with __b1
Removing instruction __bbegin:
Removing instruction __b1_from___bbegin:
Removing instruction main_from___b1:
Removing instruction __bend_from___b1:
Removing instruction __b4_from_main:
Removing instruction fill_from___b4:
Removing instruction __b3_from___b1:
Removing instruction __b3_from___b3:
Removing instruction __b4_from___b3:
Removing instruction __b4_from___b5:
Removing instruction __b1_from_fill:
Removing instruction __b1_from___b2:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction __bend:
Removing instruction fill_from_main:
Removing instruction __b4:
Removing instruction __b5:
Removing instruction __b1_from___b5:
Removing instruction __b6:
Removing instruction __b1_from___b6:
Removing instruction __b1_from_circle:
Removing instruction __breturn:
Removing instruction __b5:
Removing instruction plot_from___b4:
Removing instruction __b6:
Removing instruction plot_from___b6:
Removing instruction __b7:
Removing instruction plot_from___b7:
Removing instruction __b8:
Removing instruction plot_from___b8:
Removing instruction __b9:
Removing instruction plot_from___b9:
Removing instruction __b10:
Removing instruction plot_from___b10:
Removing instruction __b11:
Removing instruction plot_from___b11:
Removing instruction __b12:
Removing instruction plot_from___b12:
Removing instruction __b13:
Removing instruction __b1_from___b13:
Removing instruction __b4:
Removing instruction __b3:
Removing instruction __b2:
Removing instruction __b1:
Removing instruction __breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Updating BasicUpstart to call main directly
Removing instruction jsr main
Succesful ASM optimization Pass5SkipBegin
Removing instruction __b1:
Succesful ASM optimization Pass5UnusedLabelElimination
Fixing long branch [112] bmi __b3 to bpl
Fixing long branch [309] bmi __breturn to bpl
Fixing long branch [319] bmi __breturn to bpl
Fixing long branch [323] bmi __breturn to bpl
Fixing long branch [333] bpl __breturn to bmi

FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
(const byte*) BITMAP = (byte*) 8192
(const byte) BLUE = (byte) 6
(const byte*) BORDERCOL = (byte*) 53280
(const byte*) D011 = (byte*) 53265
(const byte*) SCREEN = (byte*) 1024
(const byte) VIC_BMM = (byte) $20
(const byte) VIC_DEN = (byte) $10
(const byte*) VIC_MEMORY = (byte*) 53272
(const byte) VIC_RSEL = (byte) 8
(const byte*) bitmask[]  = { (byte) $80, (byte) $40, (byte) $20, (byte) $10, (byte) 8, (byte) 4, (byte) 2, (byte) 1 }
(void()) circle((signed word) circle::xc , (signed word) circle::yc , (signed word) circle::r)
(signed word~) circle::$0 zp[2]:4 4.0
(signed word~) circle::$10 zp[2]:4 202.0
(signed word~) circle::$5 zp[2]:10 202.0
(signed word~) circle::$6 zp[2]:10 202.0
(signed word~) circle::$7 zp[2]:4 202.0
(signed word~) circle::$9 zp[2]:12 202.0
(label) circle::@1
(label) circle::@10
(label) circle::@11
(label) circle::@12
(label) circle::@13
(label) circle::@2
(label) circle::@3
(label) circle::@4
(label) circle::@5
(label) circle::@6
(label) circle::@7
(label) circle::@8
(label) circle::@9
(label) circle::@return
(signed word) circle::p
(signed word) circle::p#0 p zp[2]:4 4.0
(signed word) circle::p#1 p zp[2]:4 202.0
(signed word) circle::p#10 p zp[2]:4 11.653846153846153
(signed word) circle::p#2 p zp[2]:4 202.0
(signed word) circle::p#3 p zp[2]:4 58.00000000000001
(signed word) circle::r
(signed word) circle::r#0 r zp[2]:2 5.0
(signed word) circle::x1
(signed word) circle::x1#1 x1 zp[2]:8 202.0
(signed word) circle::x1#10 x1 zp[2]:8 36.47222222222223
(signed word) circle::xc
(const signed word) circle::xc#0 xc = (signed word) $a0
(signed word) circle::y
(signed word) circle::y#1 y zp[2]:2 60.599999999999994
(signed word) circle::y#10 y zp[2]:2 42.73076923076923
(signed word) circle::y#13 y zp[2]:2 67.66666666666666
(signed word) circle::yc
(const signed word) circle::yc#0 yc = (signed byte) $64
(void()) fill((byte*) fill::start , (signed word) fill::size , (byte) fill::val)
(label) fill::@1
(label) fill::@2
(label) fill::@return
(byte*) fill::addr
(byte*) fill::addr#0 addr zp[2]:8 2.0
(byte*) fill::addr#1 addr zp[2]:8 22.0
(byte*) fill::addr#2 addr zp[2]:8 15.333333333333332
(byte*) fill::end
(byte*) fill::end#0 end zp[2]:6 2.6
(signed word) fill::size
(signed word) fill::size#2 size zp[2]:6 2.0
(byte*) fill::start
(byte) fill::val
(byte) fill::val#4 reg byte x 1.8333333333333333
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@6
(signed word) main::i
(signed word) main::i#1 i zp[2]:6 22.0
(signed word) main::i#2 i zp[2]:6 11.0
(void()) plot((signed word) plot::x , (signed word) plot::y)
(byte~) plot::$10 reg byte a 4.0
(signed word~) plot::$11 zp[2]:12 3.0
(signed word~) plot::$12 zp[2]:16 4.0
(signed byte~) plot::$13 reg byte a 4.0
(byte~) plot::$14 reg byte a 4.0
(signed word~) plot::$15 zp[2]:16 4.0
(signed word~) plot::$16 zp[2]:16 4.0
(signed word~) plot::$8 zp[2]:14 4.0
(byte~) plot::$9 reg byte a 4.0
(label) plot::@1
(label) plot::@2
(label) plot::@3
(label) plot::@4
(label) plot::@return
(byte*) plot::location
(byte*) plot::location#1 location zp[2]:14 1.3333333333333333
(byte*) plot::location#2 location zp[2]:14 0.8
(byte*) plot::location#3 location zp[2]:14 2.0
(signed word) plot::x
(signed word) plot::x#0 x zp[2]:10 101.0
(signed word) plot::x#1 x zp[2]:10 101.0
(signed word) plot::x#2 x zp[2]:10 101.0
(signed word) plot::x#3 x zp[2]:10 101.0
(signed word) plot::x#4 x zp[2]:10 101.0
(signed word) plot::x#5 x zp[2]:10 101.0
(signed word) plot::x#6 x zp[2]:10 101.0
(signed word) plot::x#7 x zp[2]:10 101.0
(signed word) plot::x#8 x zp[2]:10 54.4
(signed word) plot::y
(signed word) plot::y#0 y zp[2]:12 202.0
(signed word) plot::y#1 y zp[2]:12 202.0
(signed word) plot::y#2 y zp[2]:12 202.0
(signed word) plot::y#3 y zp[2]:12 202.0
(signed word) plot::y#4 y zp[2]:12 202.0
(signed word) plot::y#5 y zp[2]:12 202.0
(signed word) plot::y#6 y zp[2]:12 202.0
(signed word) plot::y#7 y zp[2]:12 202.0
(signed word) plot::y#8 y zp[2]:12 81.60000000000001

zp[2]:2 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ]
zp[2]:4 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 circle::$0 ]
zp[2]:6 [ fill::size#2 fill::end#0 main::i#2 main::i#1 ]
reg byte x [ fill::val#4 ]
zp[2]:8 [ fill::addr#2 fill::addr#0 fill::addr#1 circle::x1#10 circle::x1#1 ]
zp[2]:10 [ circle::$5 circle::$6 plot::x#8 plot::x#1 plot::x#2 plot::x#3 plot::x#4 plot::x#5 plot::x#6 plot::x#7 plot::x#0 ]
zp[2]:12 [ circle::$9 plot::y#8 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::$11 ]
zp[2]:14 [ plot::$8 plot::location#1 plot::location#2 plot::location#3 ]
reg byte a [ plot::$9 ]
reg byte a [ plot::$10 ]
zp[2]:16 [ plot::$15 plot::$16 plot::$12 ]
reg byte a [ plot::$13 ]
reg byte a [ plot::$14 ]


FINAL ASSEMBLER
Score: 51752

  // File Comments
  // Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
  // Global Constants & labels
  .label BORDERCOL = $d020
  .label D011 = $d011
  .const VIC_BMM = $20
  .const VIC_DEN = $10
  .const VIC_RSEL = 8
  .label VIC_MEMORY = $d018
  .const BLUE = 6
  .label SCREEN = $400
  .label BITMAP = $2000
  // @begin
  // [1] phi from @begin to @1 [phi:@begin->@1]
  // @1
  // [2] call main 
  // [4] phi from @1 to main [phi:@1->main]
  // [3] phi from @1 to @end [phi:@1->@end]
  // @end
  // main
main: {
    .label i = 6
    // fill(BITMAP,40*25*8,0)
    // [5] call fill 
    // [76] phi from main to fill [phi:main->fill]
    // [76] phi (byte) fill::val#4 = (byte) 0 [phi:main->fill#0] -- vbuxx=vbuc1 
    ldx #0
    // [76] phi (signed word) fill::size#2 = (signed word)(number) $28*(number) $19*(number) 8 [phi:main->fill#1] -- vwsz1=vwsc1 
    lda #<$28*$19*8
    sta.z fill.size
    lda #>$28*$19*8
    sta.z fill.size+1
    // [76] phi (byte*) fill::addr#0 = (const byte*) BITMAP [phi:main->fill#2] -- pbuz1=pbuc1 
    lda #<BITMAP
    sta.z fill.addr
    lda #>BITMAP
    sta.z fill.addr+1
    jsr fill
    // [6] phi from main to main::@4 [phi:main->main::@4]
    // main::@4
    // fill(SCREEN,40*25,$16)
    // [7] call fill 
    // [76] phi from main::@4 to fill [phi:main::@4->fill]
    // [76] phi (byte) fill::val#4 = (byte) $16 [phi:main::@4->fill#0] -- vbuxx=vbuc1 
    ldx #$16
    // [76] phi (signed word) fill::size#2 = (signed word)(number) $28*(number) $19 [phi:main::@4->fill#1] -- vwsz1=vwsc1 
    lda #<$28*$19
    sta.z fill.size
    lda #>$28*$19
    sta.z fill.size+1
    // [76] phi (byte*) fill::addr#0 = (const byte*) SCREEN [phi:main::@4->fill#2] -- pbuz1=pbuc1 
    lda #<SCREEN
    sta.z fill.addr
    lda #>SCREEN
    sta.z fill.addr+1
    jsr fill
    // main::@5
    // *BORDERCOL = BLUE
    // [8] *((const byte*) BORDERCOL) ← (const byte) BLUE -- _deref_pbuc1=vbuc2 
    lda #BLUE
    sta BORDERCOL
    // *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
    // [9] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2 
    lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
    sta D011
    // *VIC_MEMORY =  (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400))
    // [10] *((const byte*) VIC_MEMORY) ← (byte)(word)(const byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const byte*) BITMAP&(word) $3fff/(word) $400 -- _deref_pbuc1=vbuc2 
    lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400
    sta VIC_MEMORY
    // [11] phi from main::@5 to main::@1 [phi:main::@5->main::@1]
    // [11] phi (signed word) main::i#2 = (signed word) 1 [phi:main::@5->main::@1#0] -- vwsz1=vwsc1 
    lda #<1
    sta.z i
    lda #>1
    sta.z i+1
    // main::@1
  __b1:
    // for (int i = 1; i < 180; i += 5)
    // [12] if((signed word) main::i#2<(signed word) $b4) goto main::@2 -- vwsz1_lt_vwsc1_then_la1 
    lda.z i
    cmp #<$b4
    lda.z i+1
    sbc #>$b4
    bvc !+
    eor #$80
  !:
    bmi __b2
    // [13] phi from main::@1 main::@3 to main::@3 [phi:main::@1/main::@3->main::@3]
    // main::@3
  __b3:
    jmp __b3
    // main::@2
  __b2:
    // circle(160,100,i)
    // [14] (signed word) circle::r#0 ← (signed word) main::i#2 -- vwsz1=vwsz2 
    lda.z i
    sta.z circle.r
    lda.z i+1
    sta.z circle.r+1
    // [15] call circle 
    jsr circle
    // main::@6
    // i += 5
    // [16] (signed word) main::i#1 ← (signed word) main::i#2 + (signed byte) 5 -- vwsz1=vwsz1_plus_vbsc1 
    lda.z i
    clc
    adc #<5
    sta.z i
    lda.z i+1
    adc #>5
    sta.z i+1
    // [11] phi from main::@6 to main::@1 [phi:main::@6->main::@1]
    // [11] phi (signed word) main::i#2 = (signed word) main::i#1 [phi:main::@6->main::@1#0] -- register_copy 
    jmp __b1
}
  // circle
// circle(signed word zp(2) r)
circle: {
    .const xc = $a0
    .const yc = $64
    .label __0 = 4
    .label __5 = $a
    .label __6 = $a
    .label __7 = 4
    .label __9 = $c
    .label __10 = 4
    .label r = 2
    .label p = 4
    .label y = 2
    .label x1 = 8
    // r << 1
    // [17] (signed word~) circle::$0 ← (signed word) circle::r#0 << (signed byte) 1 -- vwsz1=vwsz2_rol_1 
    lda.z r
    asl
    sta.z __0
    lda.z r+1
    rol
    sta.z __0+1
    // p = 3-(r << 1)
    // [18] (signed word) circle::p#0 ← (signed byte) 3 - (signed word~) circle::$0 -- vwsz1=vwuc1_minus_vwsz1 
    sec
    lda #<3
    sbc.z p
    sta.z p
    lda #>3
    sbc.z p+1
    sta.z p+1
    // [19] phi from circle to circle::@1 [phi:circle->circle::@1]
    // [19] phi (signed word) circle::p#3 = (signed word) circle::p#0 [phi:circle->circle::@1#0] -- register_copy 
    // [19] phi (signed word) circle::y#13 = (signed word) circle::r#0 [phi:circle->circle::@1#1] -- register_copy 
    // [19] phi (signed word) circle::x1#10 = (signed word) 0 [phi:circle->circle::@1#2] -- vwsz1=vwsc1 
    lda #<0
    sta.z x1
    sta.z x1+1
    // circle::@1
  __b1:
    // for(int x = 0; x <= y; x ++)
    // [20] if((signed word) circle::x1#10<=(signed word) circle::y#13) goto circle::@2 -- vwsz1_le_vwsz2_then_la1 
    lda.z y
    cmp.z x1
    lda.z y+1
    sbc.z x1+1
    bvc !+
    eor #$80
  !:
    bpl __b2
    // circle::@return
    // }
    // [21] return 
    rts
    // circle::@2
  __b2:
    // if(p < 0)
    // [22] if((signed word) circle::p#3<(signed byte) 0) goto circle::@3 -- vwsz1_lt_0_then_la1 
    lda.z p+1
    bpl !__b3+
    jmp __b3
  !__b3:
    // circle::@5
    // y=y-1
    // [23] (signed word) circle::y#1 ← (signed word) circle::y#13 - (signed byte) 1 -- vwsz1=vwsz1_minus_1 
    sec
    lda.z y
    sbc #1
    sta.z y
    bcs !+
    dec.z y+1
  !:
    // x-y
    // [24] (signed word~) circle::$5 ← (signed word) circle::x1#10 - (signed word) circle::y#1 -- vwsz1=vwsz2_minus_vwsz3 
    lda.z x1
    sec
    sbc.z y
    sta.z __5
    lda.z x1+1
    sbc.z y+1
    sta.z __5+1
    // (x-y) << 2
    // [25] (signed word~) circle::$6 ← (signed word~) circle::$5 << (signed byte) 2 -- vwsz1=vwsz1_rol_2 
    asl.z __6
    rol.z __6+1
    asl.z __6
    rol.z __6+1
    // p + ((x-y) << 2)
    // [26] (signed word~) circle::$7 ← (signed word) circle::p#3 + (signed word~) circle::$6 -- vwsz1=vwsz1_plus_vwsz2 
    lda.z __7
    clc
    adc.z __6
    sta.z __7
    lda.z __7+1
    adc.z __6+1
    sta.z __7+1
    // p = p + ((x-y) << 2) + 10
    // [27] (signed word) circle::p#2 ← (signed word~) circle::$7 + (signed byte) $a -- vwsz1=vwsz1_plus_vbsc1 
    lda.z p
    clc
    adc #<$a
    sta.z p
    lda.z p+1
    adc #>$a
    sta.z p+1
    // [28] phi from circle::@3 circle::@5 to circle::@4 [phi:circle::@3/circle::@5->circle::@4]
    // [28] phi (signed word) circle::p#10 = (signed word) circle::p#1 [phi:circle::@3/circle::@5->circle::@4#0] -- register_copy 
    // [28] phi (signed word) circle::y#10 = (signed word) circle::y#13 [phi:circle::@3/circle::@5->circle::@4#1] -- register_copy 
    // circle::@4
  __b4:
    // plot(xc+x,yc-y)
    // [29] (signed word) plot::x#0 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z x1
    clc
    adc #<xc
    sta.z plot.x
    lda.z x1+1
    adc #>xc
    sta.z plot.x+1
    // [30] (signed word) plot::y#0 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<yc
    sec
    sbc.z y
    sta.z plot.y
    lda #>yc
    sbc.z y+1
    sta.z plot.y+1
    // [31] call plot 
    // [57] phi from circle::@4 to plot [phi:circle::@4->plot]
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#0 [phi:circle::@4->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#0 [phi:circle::@4->plot#1] -- register_copy 
    jsr plot
    // circle::@6
    // plot(xc-x,yc-y)
    // [32] (signed word) plot::x#1 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<xc
    sec
    sbc.z x1
    sta.z plot.x
    lda #>xc
    sbc.z x1+1
    sta.z plot.x+1
    // [33] (signed word) plot::y#1 ← (const signed word) circle::yc#0 - (signed word) circle::y#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<yc
    sec
    sbc.z y
    sta.z plot.y
    lda #>yc
    sbc.z y+1
    sta.z plot.y+1
    // [34] call plot 
    // [57] phi from circle::@6 to plot [phi:circle::@6->plot]
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#1 [phi:circle::@6->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#1 [phi:circle::@6->plot#1] -- register_copy 
    jsr plot
    // circle::@7
    // plot(xc+x,yc+y)
    // [35] (signed word) plot::x#2 ← (const signed word) circle::xc#0 + (signed word) circle::x1#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z x1
    clc
    adc #<xc
    sta.z plot.x
    lda.z x1+1
    adc #>xc
    sta.z plot.x+1
    // [36] (signed word) plot::y#2 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z y
    clc
    adc #<yc
    sta.z plot.y
    lda.z y+1
    adc #>yc
    sta.z plot.y+1
    // [37] call plot 
    // [57] phi from circle::@7 to plot [phi:circle::@7->plot]
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#2 [phi:circle::@7->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#2 [phi:circle::@7->plot#1] -- register_copy 
    jsr plot
    // circle::@8
    // plot(xc-x,yc+y)
    // [38] (signed word) plot::x#3 ← (const signed word) circle::xc#0 - (signed word) circle::x1#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<xc
    sec
    sbc.z x1
    sta.z plot.x
    lda #>xc
    sbc.z x1+1
    sta.z plot.x+1
    // [39] (signed word) plot::y#3 ← (const signed word) circle::yc#0 + (signed word) circle::y#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z y
    clc
    adc #<yc
    sta.z plot.y
    lda.z y+1
    adc #>yc
    sta.z plot.y+1
    // [40] call plot 
    // [57] phi from circle::@8 to plot [phi:circle::@8->plot]
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#3 [phi:circle::@8->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#3 [phi:circle::@8->plot#1] -- register_copy 
    jsr plot
    // circle::@9
    // plot(xc+y,yc-x)
    // [41] (signed word) plot::x#4 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z y
    clc
    adc #<xc
    sta.z plot.x
    lda.z y+1
    adc #>xc
    sta.z plot.x+1
    // [42] (signed word) plot::y#4 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<yc
    sec
    sbc.z x1
    sta.z plot.y
    lda #>yc
    sbc.z x1+1
    sta.z plot.y+1
    // [43] call plot 
    // [57] phi from circle::@9 to plot [phi:circle::@9->plot]
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#4 [phi:circle::@9->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#4 [phi:circle::@9->plot#1] -- register_copy 
    jsr plot
    // circle::@10
    // plot(xc-y,yc-x)
    // [44] (signed word) plot::x#5 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<xc
    sec
    sbc.z y
    sta.z plot.x
    lda #>xc
    sbc.z y+1
    sta.z plot.x+1
    // [45] (signed word) plot::y#5 ← (const signed word) circle::yc#0 - (signed word) circle::x1#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<yc
    sec
    sbc.z x1
    sta.z plot.y
    lda #>yc
    sbc.z x1+1
    sta.z plot.y+1
    // [46] call plot 
    // [57] phi from circle::@10 to plot [phi:circle::@10->plot]
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#5 [phi:circle::@10->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#5 [phi:circle::@10->plot#1] -- register_copy 
    jsr plot
    // circle::@11
    // plot(xc+y,yc+x)
    // [47] (signed word) plot::x#6 ← (const signed word) circle::xc#0 + (signed word) circle::y#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z y
    clc
    adc #<xc
    sta.z plot.x
    lda.z y+1
    adc #>xc
    sta.z plot.x+1
    // [48] (signed word) plot::y#6 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z x1
    clc
    adc #<yc
    sta.z plot.y
    lda.z x1+1
    adc #>yc
    sta.z plot.y+1
    // [49] call plot 
    // [57] phi from circle::@11 to plot [phi:circle::@11->plot]
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#6 [phi:circle::@11->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#6 [phi:circle::@11->plot#1] -- register_copy 
    jsr plot
    // circle::@12
    // plot(xc-y,yc+x)
    // [50] (signed word) plot::x#7 ← (const signed word) circle::xc#0 - (signed word) circle::y#10 -- vwsz1=vwsc1_minus_vwsz2 
    lda #<xc
    sec
    sbc.z y
    sta.z plot.x
    lda #>xc
    sbc.z y+1
    sta.z plot.x+1
    // [51] (signed word) plot::y#7 ← (const signed word) circle::yc#0 + (signed word) circle::x1#10 -- vwsz1=vwsc1_plus_vwsz2 
    lda.z x1
    clc
    adc #<yc
    sta.z plot.y
    lda.z x1+1
    adc #>yc
    sta.z plot.y+1
    // [52] call plot 
    // [57] phi from circle::@12 to plot [phi:circle::@12->plot]
    // [57] phi (signed word) plot::y#8 = (signed word) plot::y#7 [phi:circle::@12->plot#0] -- register_copy 
    // [57] phi (signed word) plot::x#8 = (signed word) plot::x#7 [phi:circle::@12->plot#1] -- register_copy 
    jsr plot
    // circle::@13
    // for(int x = 0; x <= y; x ++)
    // [53] (signed word) circle::x1#1 ← ++ (signed word) circle::x1#10 -- vwsz1=_inc_vwsz1 
    inc.z x1
    bne !+
    inc.z x1+1
  !:
    // [19] phi from circle::@13 to circle::@1 [phi:circle::@13->circle::@1]
    // [19] phi (signed word) circle::p#3 = (signed word) circle::p#10 [phi:circle::@13->circle::@1#0] -- register_copy 
    // [19] phi (signed word) circle::y#13 = (signed word) circle::y#10 [phi:circle::@13->circle::@1#1] -- register_copy 
    // [19] phi (signed word) circle::x1#10 = (signed word) circle::x1#1 [phi:circle::@13->circle::@1#2] -- register_copy 
    jmp __b1
    // circle::@3
  __b3:
    // x << 2
    // [54] (signed word~) circle::$9 ← (signed word) circle::x1#10 << (signed byte) 2 -- vwsz1=vwsz2_rol_2 
    lda.z x1
    asl
    sta.z __9
    lda.z x1+1
    rol
    sta.z __9+1
    asl.z __9
    rol.z __9+1
    // p + (x << 2)
    // [55] (signed word~) circle::$10 ← (signed word) circle::p#3 + (signed word~) circle::$9 -- vwsz1=vwsz1_plus_vwsz2 
    lda.z __10
    clc
    adc.z __9
    sta.z __10
    lda.z __10+1
    adc.z __9+1
    sta.z __10+1
    // p = p + (x << 2) + 6
    // [56] (signed word) circle::p#1 ← (signed word~) circle::$10 + (signed byte) 6 -- vwsz1=vwsz1_plus_vbsc1 
    lda.z p
    clc
    adc #<6
    sta.z p
    lda.z p+1
    adc #>6
    sta.z p+1
    jmp __b4
}
  // plot
// plot(signed word zp($a) x, signed word zp($c) y)
plot: {
    .label __8 = $e
    .label __11 = $c
    .label __12 = $10
    .label x = $a
    .label y = $c
    .label location = $e
    .label __15 = $10
    .label __16 = $10
    // if (x < 0 || x > 319 || y < 0 || y > 199)
    // [58] if((signed word) plot::x#8<(signed byte) 0) goto plot::@return -- vwsz1_lt_0_then_la1 
    lda.z x+1
    bpl !__breturn+
    jmp __breturn
  !__breturn:
    // plot::@4
    // [59] if((signed word) plot::x#8>(signed word) $13f) goto plot::@return -- vwsz1_gt_vwsc1_then_la1 
    lda #<$13f
    cmp.z x
    lda #>$13f
    sbc.z x+1
    bvc !+
    eor #$80
  !:
    bpl !__breturn+
    jmp __breturn
  !__breturn:
    // plot::@3
    // [60] if((signed word) plot::y#8<(signed byte) 0) goto plot::@return -- vwsz1_lt_0_then_la1 
    lda.z y+1
    bpl !__breturn+
    jmp __breturn
  !__breturn:
    // plot::@2
    // [61] if((signed word) plot::y#8>=(signed word) $c7+(signed byte) 1) goto plot::@return -- vwsz1_ge_vwsc1_then_la1 
    lda.z y
    cmp #<$c7+1
    lda.z y+1
    sbc #>$c7+1
    bvc !+
    eor #$80
  !:
    bmi !__breturn+
    jmp __breturn
  !__breturn:
    // plot::@1
    // x & $fff8
    // [62] (signed word~) plot::$8 ← (signed word) plot::x#8 & (signed dword) $fff8 -- vwsz1=vwsz2_band_vdsc1 
    lda.z x
    and #<$fff8
    sta.z __8
    lda.z x+1
    and #>$fff8
    sta.z __8+1
    // location += x & $fff8
    // [63] (byte*) plot::location#1 ← (const byte*) BITMAP + (signed word~) plot::$8 -- pbuz1=pbuc1_plus_vwsz1 
    clc
    lda.z location
    adc #<BITMAP
    sta.z location
    lda.z location+1
    adc #>BITMAP
    sta.z location+1
    // <y
    // [64] (byte~) plot::$9 ← < (signed word) plot::y#8 -- vbuaa=_lo_vwsz1 
    lda.z y
    // <y & 7
    // [65] (byte~) plot::$10 ← (byte~) plot::$9 & (byte) 7 -- vbuaa=vbuaa_band_vbuc1 
    and #7
    // location += <y & 7
    // [66] (byte*) plot::location#2 ← (byte*) plot::location#1 + (byte~) plot::$10 -- pbuz1=pbuz1_plus_vbuaa 
    clc
    adc.z location
    sta.z location
    bcc !+
    inc.z location+1
  !:
    // y >> 3
    // [67] (signed word~) plot::$11 ← (signed word) plot::y#8 >> (signed byte) 3 -- vwsz1=vwsz1_ror_3 
    lda.z __11+1
    cmp #$80
    ror.z __11+1
    ror.z __11
    lda.z __11+1
    cmp #$80
    ror.z __11+1
    ror.z __11
    lda.z __11+1
    cmp #$80
    ror.z __11+1
    ror.z __11
    // (y >> 3) * 320
    // [68] (signed word~) plot::$15 ← (signed word~) plot::$11 << (byte) 2 -- vwsz1=vwsz2_rol_2 
    lda.z __11
    asl
    sta.z __15
    lda.z __11+1
    rol
    sta.z __15+1
    asl.z __15
    rol.z __15+1
    // [69] (signed word~) plot::$16 ← (signed word~) plot::$15 + (signed word~) plot::$11 -- vwsz1=vwsz1_plus_vwsz2 
    lda.z __16
    clc
    adc.z __11
    sta.z __16
    lda.z __16+1
    adc.z __11+1
    sta.z __16+1
    // [70] (signed word~) plot::$12 ← (signed word~) plot::$16 << (byte) 6 -- vwsz1=vwsz1_rol_6 
    lda.z __12+1
    sta.z $ff
    lda.z __12
    sta.z __12+1
    lda #0
    sta.z __12
    lsr.z $ff
    ror.z __12+1
    ror.z __12
    lsr.z $ff
    ror.z __12+1
    ror.z __12
    // location += ((y >> 3) * 320)
    // [71] (byte*) plot::location#3 ← (byte*) plot::location#2 + (signed word~) plot::$12 -- pbuz1=pbuz1_plus_vwsz2 
    lda.z location
    clc
    adc.z __12
    sta.z location
    lda.z location+1
    adc.z __12+1
    sta.z location+1
    // x & 7
    // [72] (signed byte~) plot::$13 ← (signed word) plot::x#8 & (signed byte) 7 -- vbsaa=vwsz1_band_vbsc1 
    lda #7
    and.z x
    // (*location) | bitmask[x & 7]
    // [73] (byte~) plot::$14 ← *((byte*) plot::location#3) | *((const byte*) bitmask + (signed byte~) plot::$13) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbsaa 
    tay
    lda bitmask,y
    ldy #0
    ora (location),y
    // (*location) = (*location) | bitmask[x & 7]
    // [74] *((byte*) plot::location#3) ← (byte~) plot::$14 -- _deref_pbuz1=vbuaa 
    sta (location),y
    // plot::@return
  __breturn:
    // }
    // [75] return 
    rts
}
  // fill
// Fill some memory with a value
// fill(signed word zp(6) size, byte register(X) val)
fill: {
    .label end = 6
    .label addr = 8
    .label size = 6
    // end = start + size
    // [77] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (signed word) fill::size#2 -- pbuz1=pbuz2_plus_vwsz1 
    lda.z end
    clc
    adc.z addr
    sta.z end
    lda.z end+1
    adc.z addr+1
    sta.z end+1
    // [78] phi from fill fill::@2 to fill::@1 [phi:fill/fill::@2->fill::@1]
    // [78] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@2->fill::@1#0] -- register_copy 
    // fill::@1
  __b1:
    // for(byte* addr = start; addr!=end; addr++)
    // [79] if((byte*) fill::addr#2!=(byte*) fill::end#0) goto fill::@2 -- pbuz1_neq_pbuz2_then_la1 
    lda.z addr+1
    cmp.z end+1
    bne __b2
    lda.z addr
    cmp.z end
    bne __b2
    // fill::@return
    // }
    // [80] return 
    rts
    // fill::@2
  __b2:
    // *addr = val
    // [81] *((byte*) fill::addr#2) ← (byte) fill::val#4 -- _deref_pbuz1=vbuxx 
    txa
    ldy #0
    sta (addr),y
    // for(byte* addr = start; addr!=end; addr++)
    // [82] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 
    inc.z addr
    bne !+
    inc.z addr+1
  !:
    jmp __b1
}
  // File Data
  bitmask: .byte $80, $40, $20, $10, 8, 4, 2, 1

