@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call main 
  to:@end
@end: scope:[]  from @1
  [3] phi()
main: scope:[main]  from @1
  asm { sei  }
  [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
  [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
  [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3
  to:main::vicSelectGfxBank1
main::vicSelectGfxBank1: scope:[main]  from main
  [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte) 3
  to:main::vicSelectGfxBank1_toDd001
main::vicSelectGfxBank1_toDd001: scope:[main]  from main::vicSelectGfxBank1
  [9] phi()
  to:main::vicSelectGfxBank1_@1
main::vicSelectGfxBank1_@1: scope:[main]  from main::vicSelectGfxBank1_toDd001
  [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0
  to:main::toD0181
main::toD0181: scope:[main]  from main::vicSelectGfxBank1_@1
  [11] phi()
  to:main::@4
main::@4: scope:[main]  from main::toD0181
  [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0
  [13] call bitmap_init 
  to:main::@5
main::@5: scope:[main]  from main::@4
  [14] phi()
  [15] call bitmap_clear 
  to:main::@6
main::@6: scope:[main]  from main::@5
  [16] phi()
  [17] call screen_fill 
  to:main::@1
main::@1: scope:[main]  from main::@6 main::@8
  [18] (byte) main::i#2 ← phi( main::@6/(byte) 0 main::@8/(byte) main::i#1 )
  [19] (byte) point_init::point_idx#0 ← (byte) main::i#2
  [20] call point_init 
  to:main::@7
main::@7: scope:[main]  from main::@1
  [21] (byte~) main::$13 ← (byte) main::i#2 << (byte) 1
  [22] (word) bitmap_plot::x#0 ← *((const word[SIZE#0]) x_start#0 + (byte~) main::$13)
  [23] (byte) bitmap_plot::y#0 ← *((const byte[SIZE#0]) y_start#0 + (byte) main::i#2)
  [24] call bitmap_plot 
  to:main::@8
main::@8: scope:[main]  from main::@7
  [25] (byte) main::i#1 ← ++ (byte) main::i#2
  [26] if((byte) main::i#1!=(const byte) SIZE#0-(byte) 1+(byte) 1) goto main::@1
  to:main::@2
main::@2: scope:[main]  from main::@2 main::@3 main::@8
  [27] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@2
  [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0)
  to:main::@2
bitmap_plot: scope:[bitmap_plot]  from main::@7
  [29] (word) bitmap_plot::plotter#0 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0)
  [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8
  [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1
  [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0
  [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2)
  to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot]  from bitmap_plot
  [34] return 
  to:@return
point_init: scope:[point_init]  from main::@1
  [35] (byte~) point_init::$18 ← (byte) point_init::point_idx#0 << (byte) 1
  [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[SIZE#0]) x_end#0 + (byte~) point_init::$18) - (signed word)*((const word[SIZE#0]) x_start#0 + (byte~) point_init::$18)
  [37] (signed word~) point_init::$3 ← (signed word)*((const byte[SIZE#0]) y_end#0 + (byte) point_init::point_idx#0)
  [38] (signed word~) point_init::$4 ← (signed word)*((const byte[SIZE#0]) y_start#0 + (byte) point_init::point_idx#0)
  [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$3 - (signed word~) point_init::$4
  to:point_init::abs16s1
point_init::abs16s1: scope:[point_init]  from point_init
  [40] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::abs16s1_@1
  to:point_init::abs16s1_@3
point_init::abs16s1_@3: scope:[point_init]  from point_init::abs16s1
  [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1
  to:point_init::abs16s1_@return
point_init::abs16s1_@return: scope:[point_init]  from point_init::abs16s1_@1 point_init::abs16s1_@3
  [42] (word) point_init::abs16s1_return#2 ← phi( point_init::abs16s1_@1/(word~) point_init::abs16s1_return#5 point_init::abs16s1_@3/(word~) point_init::abs16s1_return#6 )
  to:point_init::abs16s2
point_init::abs16s2: scope:[point_init]  from point_init::abs16s1_@return
  [43] if((signed word) point_init::y_diff#0<(signed byte) 0) goto point_init::abs16s2_@1
  to:point_init::abs16s2_@3
point_init::abs16s2_@3: scope:[point_init]  from point_init::abs16s2
  [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0
  to:point_init::abs16s2_@return
point_init::abs16s2_@return: scope:[point_init]  from point_init::abs16s2_@1 point_init::abs16s2_@3
  [45] (word) point_init::abs16s2_return#2 ← phi( point_init::abs16s2_@1/(word~) point_init::abs16s2_return#5 point_init::abs16s2_@3/(word~) point_init::abs16s2_return#6 )
  to:point_init::@6
point_init::@6: scope:[point_init]  from point_init::abs16s2_@return
  [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1
  to:point_init::@2
point_init::@2: scope:[point_init]  from point_init::@6 point_init::@7
  [47] (byte~) point_init::$20 ← (byte) point_init::point_idx#0 << (byte) 1
  [48] (word~) point_init::$9 ← *((const word[SIZE#0]) x_start#0 + (byte~) point_init::$20) << (byte) 4
  [49] *((const word[SIZE#0]) x_cur#0 + (byte~) point_init::$20) ← (word~) point_init::$9
  [50] (word~) point_init::$10 ← (word)*((const byte[SIZE#0]) y_start#0 + (byte) point_init::point_idx#0)
  [51] (word~) point_init::$11 ← (word~) point_init::$10 << (byte) 4
  [52] *((const word[SIZE#0]) y_cur#0 + (byte~) point_init::$20) ← (word~) point_init::$11
  [53] *((const byte[SIZE#0]) delay#0 + (byte) point_init::point_idx#0) ← (const byte) DELAY#0
  to:point_init::@return
point_init::@return: scope:[point_init]  from point_init::@2
  [54] return 
  to:@return
point_init::@1: scope:[point_init]  from point_init::@6
  [55] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4
  to:point_init::@3
point_init::@3: scope:[point_init]  from point_init::@1
  [56] *((const signed byte[SIZE#0]) x_add#0 + (byte) point_init::point_idx#0) ← (signed byte) $10
  to:point_init::@5
point_init::@5: scope:[point_init]  from point_init::@3 point_init::@4
  [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1
  [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0
  [59] call divr16s 
  [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
  to:point_init::@7
point_init::@7: scope:[point_init]  from point_init::@5
  [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3
  [62] (byte~) point_init::$14 ← > (signed word) point_init::x_stepf#0
  [63] (byte~) point_init::$16 ← (byte~) point_init::$14 >> (byte) 4
  [64] *((const signed byte[SIZE#0]) y_add#0 + (byte) point_init::point_idx#0) ← (signed byte)(byte~) point_init::$16
  to:point_init::@2
point_init::@4: scope:[point_init]  from point_init::@1
  [65] *((const signed byte[SIZE#0]) x_add#0 + (byte) point_init::point_idx#0) ← (signed byte) -$10
  to:point_init::@5
point_init::abs16s2_@1: scope:[point_init]  from point_init::abs16s2
  [66] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0
  [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0
  to:point_init::abs16s2_@return
point_init::abs16s1_@1: scope:[point_init]  from point_init::abs16s1
  [68] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1
  [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0
  to:point_init::abs16s1_@return
divr16s: scope:[divr16s]  from point_init::@5
  [70] phi()
  to:divr16s::@10
divr16s::@10: scope:[divr16s]  from divr16s
  [71] if((signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1
  to:divr16s::@6
divr16s::@6: scope:[divr16s]  from divr16s::@10
  [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0
  to:divr16s::@2
divr16s::@2: scope:[divr16s]  from divr16s::@1 divr16s::@6
  [73] (word) divr16s::remu#3 ← phi( divr16s::@1/(word~) divr16s::remu#7 divr16s::@6/(word~) divr16s::remu#8 )
  [73] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte) 1 divr16s::@6/(byte) 0 )
  [74] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3
  to:divr16s::@7
divr16s::@7: scope:[divr16s]  from divr16s::@2
  [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0
  to:divr16s::@4
divr16s::@4: scope:[divr16s]  from divr16s::@3 divr16s::@7
  [76] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@7/(byte) divr16s::neg#3 )
  [76] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@7/(word~) divr16s::divisoru#5 )
  [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3
  [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3
  [79] call divr16u 
  [80] (word) divr16u::return#2 ← (word) divr16u::return#0
  to:divr16s::@9
divr16s::@9: scope:[divr16s]  from divr16s::@4
  [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2
  [82] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5
  to:divr16s::@8
divr16s::@8: scope:[divr16s]  from divr16s::@9
  [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0
  to:divr16s::@return
divr16s::@return: scope:[divr16s]  from divr16s::@5 divr16s::@8
  [84] (signed word) divr16s::return#2 ← phi( divr16s::@8/(signed word) divr16s::return#1 divr16s::@5/(signed word~) divr16s::return#7 )
  [85] return 
  to:@return
divr16s::@5: scope:[divr16s]  from divr16s::@9
  [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0
  to:divr16s::@return
divr16s::@3: scope:[divr16s]  from divr16s::@2
  [87] (signed word) divr16s::divisoru#1 ← - (signed word) divr16s::divisor#0
  [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1
  [89] (word~) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1
  to:divr16s::@4
divr16s::@1: scope:[divr16s]  from divr16s::@10
  [90] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0
  [91] (word~) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1
  to:divr16s::@2
divr16u: scope:[divr16u]  from divr16s::@4
  [92] phi()
  to:divr16u::@1
divr16u::@1: scope:[divr16u]  from divr16u divr16u::@3
  [93] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
  [93] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
  [93] (word) divr16u::dividend#2 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::dividend#0 )
  [93] (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#3 divr16u::@3/(word) divr16u::rem#9 )
  [94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte) 1
  [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2
  [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
  [97] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
  to:divr16u::@4
divr16u::@4: scope:[divr16u]  from divr16u::@1
  [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
  to:divr16u::@2
divr16u::@2: scope:[divr16u]  from divr16u::@1 divr16u::@4
  [99] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
  [100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte) 1
  [101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
  [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3
  to:divr16u::@5
divr16u::@5: scope:[divr16u]  from divr16u::@2
  [103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
  [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0
  to:divr16u::@3
divr16u::@3: scope:[divr16u]  from divr16u::@2 divr16u::@5
  [105] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
  [105] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 )
  [106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
  [107] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
  to:divr16u::@return
divr16u::@return: scope:[divr16u]  from divr16u::@3
  [108] return 
  to:@return
screen_fill: scope:[screen_fill]  from main::@6
  [109] phi()
  to:screen_fill::@1
screen_fill::@1: scope:[screen_fill]  from screen_fill screen_fill::@3
  [110] (byte) screen_fill::y#4 ← phi( screen_fill/(byte) 0 screen_fill::@3/(byte) screen_fill::y#1 )
  [110] (byte*) screen_fill::screen#3 ← phi( screen_fill/(const byte*) SCREEN#0 screen_fill::@3/(byte*) screen_fill::screen#1 )
  to:screen_fill::@2
screen_fill::@2: scope:[screen_fill]  from screen_fill::@1 screen_fill::@2
  [111] (byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte) 0 screen_fill::@2/(byte) screen_fill::x#1 )
  [111] (byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 )
  [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0
  [113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2
  [114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2
  [115] if((byte) screen_fill::x#1!=(byte) $28) goto screen_fill::@2
  to:screen_fill::@3
screen_fill::@3: scope:[screen_fill]  from screen_fill::@2
  [116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4
  [117] if((byte) screen_fill::y#1!=(byte) $19) goto screen_fill::@1
  to:screen_fill::@return
screen_fill::@return: scope:[screen_fill]  from screen_fill::@3
  [118] return 
  to:@return
bitmap_clear: scope:[bitmap_clear]  from main::@5
  [119] (word) bitmap_clear::bitmap#0 ← *((const byte[$100]) bitmap_plot_yhi#0) w= *((const byte[$100]) bitmap_plot_ylo#0)
  [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0
  to:bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear]  from bitmap_clear bitmap_clear::@3
  [121] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 )
  [121] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 )
  to:bitmap_clear::@2
bitmap_clear::@2: scope:[bitmap_clear]  from bitmap_clear::@1 bitmap_clear::@2
  [122] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 )
  [122] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 )
  [123] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0
  [124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2
  [125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2
  [126] if((byte) bitmap_clear::x#1!=(byte) $c8) goto bitmap_clear::@2
  to:bitmap_clear::@3
bitmap_clear::@3: scope:[bitmap_clear]  from bitmap_clear::@2
  [127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4
  [128] if((byte) bitmap_clear::y#1!=(byte) $28) goto bitmap_clear::@1
  to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear]  from bitmap_clear::@3
  [129] return 
  to:@return
bitmap_init: scope:[bitmap_init]  from main::@4
  [130] phi()
  to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init]  from bitmap_init bitmap_init::@2
  [131] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
  [131] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 )
  [132] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
  [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1
  [134] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6
  to:bitmap_init::@2
bitmap_init::@6: scope:[bitmap_init]  from bitmap_init::@1
  [135] phi()
  to:bitmap_init::@2
bitmap_init::@2: scope:[bitmap_init]  from bitmap_init::@1 bitmap_init::@6
  [136] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 )
  [137] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
  [138] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1
  to:bitmap_init::@3
bitmap_init::@3: scope:[bitmap_init]  from bitmap_init::@2 bitmap_init::@4
  [139] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 )
  [139] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 )
  [140] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
  [141] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
  [142] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4
  [143] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
  [144] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
  [145] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
  [146] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4
  to:bitmap_init::@5
bitmap_init::@5: scope:[bitmap_init]  from bitmap_init::@3
  [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8
  to:bitmap_init::@4
bitmap_init::@4: scope:[bitmap_init]  from bitmap_init::@3 bitmap_init::@5
  [148] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 )
  [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
  [150] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3
  to:bitmap_init::@return
bitmap_init::@return: scope:[bitmap_init]  from bitmap_init::@4
  [151] return 
  to:@return
