
void main()
main: scope:[main]  from
  asm { sei  }
  [1] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
  [2] *PROCPORT = PROCPORT_RAM_IO
  [3] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3
  to:main::vicSelectGfxBank1
main::vicSelectGfxBank1: scope:[main]  from main
  [4] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_PORT_A_DDR) = 3
  to:main::vicSelectGfxBank1_toDd001
main::vicSelectGfxBank1_toDd001: scope:[main]  from main::vicSelectGfxBank1
  [5] phi()
  to:main::vicSelectGfxBank1_@1
main::vicSelectGfxBank1_@1: scope:[main]  from main::vicSelectGfxBank1_toDd001
  [6] *((char *)CIA2) = main::vicSelectGfxBank1_toDd001_return#0
  to:main::toD0181
main::toD0181: scope:[main]  from main::vicSelectGfxBank1_@1
  [7] phi()
  to:main::@4
main::@4: scope:[main]  from main::toD0181
  [8] *D018 = main::toD0181_return#0
  [9] call bitmap_init
  to:main::@5
main::@5: scope:[main]  from main::@4
  [10] phi()
  [11] call bitmap_clear
  to:main::@6
main::@6: scope:[main]  from main::@5
  [12] phi()
  [13] call screen_fill
  to:main::@1
main::@1: scope:[main]  from main::@6 main::@8
  [14] main::i#2 = phi( main::@8/main::i#1, main::@6/0 )
  [15] point_init::point_idx#0 = main::i#2
  [16] call point_init
  to:main::@7
main::@7: scope:[main]  from main::@1
  [17] main::$10 = main::i#2 << 1
  [18] bitmap_plot::x#0 = x_start[main::$10]
  [19] bitmap_plot::y#0 = y_start[main::i#2]
  [20] call bitmap_plot
  to:main::@8
main::@8: scope:[main]  from main::@7
  [21] main::i#1 = ++ main::i#2
  [22] if(main::i#1!=SIZE-1+1) goto main::@1
  to:main::@2
main::@2: scope:[main]  from main::@2 main::@3 main::@8
  [23] if(*RASTER!=$ff) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@2
  [24] *BORDER_COLOR = ++ *BORDER_COLOR
  to:main::@2

void bitmap_init(char *bitmap)
bitmap_init: scope:[bitmap_init]  from main::@4
  [25] phi()
  to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init]  from bitmap_init bitmap_init::@2
  [26] bitmap_init::x#2 = phi( bitmap_init/0, bitmap_init::@2/bitmap_init::x#1 )
  [26] bitmap_init::bits#3 = phi( bitmap_init/$80, bitmap_init::@2/bitmap_init::bits#4 )
  [27] bitmap_plot_bit[bitmap_init::x#2] = bitmap_init::bits#3
  [28] bitmap_init::bits#1 = bitmap_init::bits#3 >> 1
  [29] if(bitmap_init::bits#1!=0) goto bitmap_init::@6
  to:bitmap_init::@2
bitmap_init::@6: scope:[bitmap_init]  from bitmap_init::@1
  [30] phi()
  to:bitmap_init::@2
bitmap_init::@2: scope:[bitmap_init]  from bitmap_init::@1 bitmap_init::@6
  [31] bitmap_init::bits#4 = phi( bitmap_init::@6/bitmap_init::bits#1, bitmap_init::@1/$80 )
  [32] bitmap_init::x#1 = ++ bitmap_init::x#2
  [33] if(bitmap_init::x#1!=0) goto bitmap_init::@1
  to:bitmap_init::@3
bitmap_init::@3: scope:[bitmap_init]  from bitmap_init::@2 bitmap_init::@4
  [34] bitmap_init::yoffs#2 = phi( bitmap_init::@2/BITMAP, bitmap_init::@4/bitmap_init::yoffs#4 )
  [34] bitmap_init::y#2 = phi( bitmap_init::@2/0, bitmap_init::@4/bitmap_init::y#1 )
  [35] bitmap_init::$7 = bitmap_init::y#2 & 7
  [36] bitmap_init::$4 = byte0  bitmap_init::yoffs#2
  [37] bitmap_init::$5 = bitmap_init::$7 | bitmap_init::$4
  [38] bitmap_plot_ylo[bitmap_init::y#2] = bitmap_init::$5
  [39] bitmap_init::$6 = byte1  bitmap_init::yoffs#2
  [40] bitmap_plot_yhi[bitmap_init::y#2] = bitmap_init::$6
  [41] if(bitmap_init::$7!=7) goto bitmap_init::@4
  to:bitmap_init::@5
bitmap_init::@5: scope:[bitmap_init]  from bitmap_init::@3
  [42] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (unsigned int)$28*8
  to:bitmap_init::@4
bitmap_init::@4: scope:[bitmap_init]  from bitmap_init::@3 bitmap_init::@5
  [43] bitmap_init::yoffs#4 = phi( bitmap_init::@3/bitmap_init::yoffs#2, bitmap_init::@5/bitmap_init::yoffs#1 )
  [44] bitmap_init::y#1 = ++ bitmap_init::y#2
  [45] if(bitmap_init::y#1!=0) goto bitmap_init::@3
  to:bitmap_init::@return
bitmap_init::@return: scope:[bitmap_init]  from bitmap_init::@4
  [46] return 
  to:@return

void bitmap_clear()
bitmap_clear: scope:[bitmap_clear]  from main::@5
  [47] bitmap_clear::bitmap#0 = *bitmap_plot_yhi w= *bitmap_plot_ylo
  [48] bitmap_clear::bitmap#5 = (char *)bitmap_clear::bitmap#0
  to:bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear]  from bitmap_clear bitmap_clear::@3
  [49] bitmap_clear::y#4 = phi( bitmap_clear/0, bitmap_clear::@3/bitmap_clear::y#1 )
  [49] bitmap_clear::bitmap#3 = phi( bitmap_clear/bitmap_clear::bitmap#5, bitmap_clear::@3/bitmap_clear::bitmap#1 )
  to:bitmap_clear::@2
bitmap_clear::@2: scope:[bitmap_clear]  from bitmap_clear::@1 bitmap_clear::@2
  [50] bitmap_clear::x#2 = phi( bitmap_clear::@1/0, bitmap_clear::@2/bitmap_clear::x#1 )
  [50] bitmap_clear::bitmap#2 = phi( bitmap_clear::@1/bitmap_clear::bitmap#3, bitmap_clear::@2/bitmap_clear::bitmap#1 )
  [51] *bitmap_clear::bitmap#2 = 0
  [52] bitmap_clear::bitmap#1 = ++ bitmap_clear::bitmap#2
  [53] bitmap_clear::x#1 = ++ bitmap_clear::x#2
  [54] if(bitmap_clear::x#1!=$c8) goto bitmap_clear::@2
  to:bitmap_clear::@3
bitmap_clear::@3: scope:[bitmap_clear]  from bitmap_clear::@2
  [55] bitmap_clear::y#1 = ++ bitmap_clear::y#4
  [56] if(bitmap_clear::y#1!=$28) goto bitmap_clear::@1
  to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear]  from bitmap_clear::@3
  [57] return 
  to:@return

void screen_fill(char *screen , char ch)
screen_fill: scope:[screen_fill]  from main::@6
  [58] phi()
  to:screen_fill::@1
screen_fill::@1: scope:[screen_fill]  from screen_fill screen_fill::@3
  [59] screen_fill::y#4 = phi( screen_fill/0, screen_fill::@3/screen_fill::y#1 )
  [59] screen_fill::screen#3 = phi( screen_fill/SCREEN, screen_fill::@3/screen_fill::screen#1 )
  to:screen_fill::@2
screen_fill::@2: scope:[screen_fill]  from screen_fill::@1 screen_fill::@2
  [60] screen_fill::x#2 = phi( screen_fill::@1/0, screen_fill::@2/screen_fill::x#1 )
  [60] screen_fill::screen#2 = phi( screen_fill::@1/screen_fill::screen#3, screen_fill::@2/screen_fill::screen#1 )
  [61] *screen_fill::screen#2 = screen_fill::ch#0
  [62] screen_fill::screen#1 = ++ screen_fill::screen#2
  [63] screen_fill::x#1 = ++ screen_fill::x#2
  [64] if(screen_fill::x#1!=$28) goto screen_fill::@2
  to:screen_fill::@3
screen_fill::@3: scope:[screen_fill]  from screen_fill::@2
  [65] screen_fill::y#1 = ++ screen_fill::y#4
  [66] if(screen_fill::y#1!=$19) goto screen_fill::@1
  to:screen_fill::@return
screen_fill::@return: scope:[screen_fill]  from screen_fill::@3
  [67] return 
  to:@return

void point_init(char point_idx)
point_init: scope:[point_init]  from main::@1
  [68] point_init::$13 = point_init::point_idx#0 << 1
  [69] point_init::x_diff#1 = (int)x_end[point_init::$13] - (int)x_start[point_init::$13]
  [70] point_init::$17 = (int)y_end[point_init::point_idx#0]
  [71] point_init::$18 = (int)y_start[point_init::point_idx#0]
  [72] point_init::y_diff#0 = point_init::$17 - point_init::$18
  to:point_init::abs16s1
point_init::abs16s1: scope:[point_init]  from point_init
  [73] if(point_init::x_diff#1<0) goto point_init::abs16s1_@1
  to:point_init::abs16s1_@3
point_init::abs16s1_@3: scope:[point_init]  from point_init::abs16s1
  [74] point_init::abs16s1_return#6 = (unsigned int)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
  [75] point_init::abs16s1_return#2 = phi( point_init::abs16s1_@1/point_init::abs16s1_return#5, point_init::abs16s1_@3/point_init::abs16s1_return#6 )
  to:point_init::abs16s2
point_init::abs16s2: scope:[point_init]  from point_init::abs16s1_@return
  [76] if(point_init::y_diff#0<0) goto point_init::abs16s2_@1
  to:point_init::abs16s2_@3
point_init::abs16s2_@3: scope:[point_init]  from point_init::abs16s2
  [77] point_init::abs16s2_return#6 = (unsigned int)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
  [78] point_init::abs16s2_return#2 = phi( point_init::abs16s2_@1/point_init::abs16s2_return#5, point_init::abs16s2_@3/point_init::abs16s2_return#6 )
  to:point_init::@6
point_init::@6: scope:[point_init]  from point_init::abs16s2_@return
  [79] if(point_init::abs16s1_return#2>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
  [80] point_init::$5 = x_start[point_init::$13] << 4
  [81] x_cur[point_init::$13] = point_init::$5
  [82] point_init::$19 = (unsigned int)y_start[point_init::point_idx#0]
  [83] point_init::$6 = point_init::$19 << 4
  [84] y_cur[point_init::$13] = point_init::$6
  [85] delay[point_init::point_idx#0] = DELAY
  to:point_init::@return
point_init::@return: scope:[point_init]  from point_init::@2
  [86] return 
  to:@return
point_init::@1: scope:[point_init]  from point_init::@6
  [87] if(point_init::x_diff#1<0) goto point_init::@4
  to:point_init::@3
point_init::@3: scope:[point_init]  from point_init::@1
  [88] x_add[point_init::point_idx#0] = $10
  to:point_init::@5
point_init::@5: scope:[point_init]  from point_init::@3 point_init::@4
  [89] divr16s::divisor#0 = point_init::x_diff#1
  [90] divr16s::rem#0 = point_init::y_diff#0
  [91] call divr16s
  [92] divr16s::return#3 = divr16s::return#2
  to:point_init::@7
point_init::@7: scope:[point_init]  from point_init::@5
  [93] point_init::x_stepf#0 = divr16s::return#3
  [94] point_init::$9 = byte1  point_init::x_stepf#0
  [95] point_init::$10 = point_init::$9 >> 4
  [96] y_add[point_init::point_idx#0] = (signed char)point_init::$10
  to:point_init::@2
point_init::@4: scope:[point_init]  from point_init::@1
  [97] x_add[point_init::point_idx#0] = -$10
  to:point_init::@5
point_init::abs16s2_@1: scope:[point_init]  from point_init::abs16s2
  [98] point_init::abs16s2_return#0 = - point_init::y_diff#0
  [99] point_init::abs16s2_return#5 = (unsigned int)point_init::abs16s2_return#0
  to:point_init::abs16s2_@return
point_init::abs16s1_@1: scope:[point_init]  from point_init::abs16s1
  [100] point_init::abs16s1_return#0 = - point_init::x_diff#1
  [101] point_init::abs16s1_return#5 = (unsigned int)point_init::abs16s1_return#0
  to:point_init::abs16s1_@return

void bitmap_plot(unsigned int x , char y)
bitmap_plot: scope:[bitmap_plot]  from main::@7
  [102] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#0] w= bitmap_plot_ylo[bitmap_plot::y#0]
  [103] bitmap_plot::$1 = bitmap_plot::x#0 & $fff8
  [104] bitmap_plot::plotter#1 = (char *)bitmap_plot::plotter#0 + bitmap_plot::$1
  [105] bitmap_plot::$2 = byte0  bitmap_plot::x#0
  [106] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2]
  to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot]  from bitmap_plot
  [107] return 
  to:@return

int divr16s(int dividend , int divisor , int rem)
divr16s: scope:[divr16s]  from point_init::@5
  [108] phi()
  to:divr16s::@10
divr16s::@10: scope:[divr16s]  from divr16s
  [109] if(divr16s::rem#0<0) goto divr16s::@1
  to:divr16s::@6
divr16s::@6: scope:[divr16s]  from divr16s::@10
  [110] divr16s::remu#8 = (unsigned int)divr16s::rem#0
  to:divr16s::@2
divr16s::@2: scope:[divr16s]  from divr16s::@1 divr16s::@6
  [111] divr16s::remu#3 = phi( divr16s::@1/divr16s::remu#7, divr16s::@6/divr16s::remu#8 )
  [111] divr16s::neg#3 = phi( divr16s::@1/1, divr16s::@6/0 )
  [112] if(divr16s::divisor#0<0) goto divr16s::@3
  to:divr16s::@7
divr16s::@7: scope:[divr16s]  from divr16s::@2
  [113] divr16s::divisoru#5 = (unsigned int)divr16s::divisor#0
  to:divr16s::@4
divr16s::@4: scope:[divr16s]  from divr16s::@3 divr16s::@7
  [114] divr16s::neg#4 = phi( divr16s::@3/divr16s::neg#2, divr16s::@7/divr16s::neg#3 )
  [114] divr16s::divisoru#3 = phi( divr16s::@3/divr16s::divisoru#4, divr16s::@7/divr16s::divisoru#5 )
  [115] divr16u::divisor#0 = divr16s::divisoru#3
  [116] divr16u::rem#3 = divr16s::remu#3
  [117] call divr16u
  [118] divr16u::return#2 = divr16u::return#0
  to:divr16s::@9
divr16s::@9: scope:[divr16s]  from divr16s::@4
  [119] divr16s::resultu#0 = divr16u::return#2
  [120] if(divr16s::neg#4==0) goto divr16s::@5
  to:divr16s::@8
divr16s::@8: scope:[divr16s]  from divr16s::@9
  [121] divr16s::return#1 = - (int)divr16s::resultu#0
  to:divr16s::@return
divr16s::@return: scope:[divr16s]  from divr16s::@5 divr16s::@8
  [122] divr16s::return#2 = phi( divr16s::@5/divr16s::return#6, divr16s::@8/divr16s::return#1 )
  [123] return 
  to:@return
divr16s::@5: scope:[divr16s]  from divr16s::@9
  [124] divr16s::return#6 = (int)divr16s::resultu#0
  to:divr16s::@return
divr16s::@3: scope:[divr16s]  from divr16s::@2
  [125] divr16s::divisoru#1 = - divr16s::divisor#0
  [126] divr16s::neg#2 = divr16s::neg#3 ^ 1
  [127] divr16s::divisoru#4 = (unsigned int)divr16s::divisoru#1
  to:divr16s::@4
divr16s::@1: scope:[divr16s]  from divr16s::@10
  [128] divr16s::remu#1 = - divr16s::rem#0
  [129] divr16s::remu#7 = (unsigned int)divr16s::remu#1
  to:divr16s::@2

unsigned int divr16u(unsigned int dividend , unsigned int divisor , unsigned int rem)
divr16u: scope:[divr16u]  from divr16s::@4
  [130] phi()
  to:divr16u::@1
divr16u::@1: scope:[divr16u]  from divr16u divr16u::@3
  [131] divr16u::i#2 = phi( divr16u/0, divr16u::@3/divr16u::i#1 )
  [131] divr16u::quotient#3 = phi( divr16u/0, divr16u::@3/divr16u::return#0 )
  [131] divr16u::dividend#2 = phi( divr16u/0, divr16u::@3/divr16u::dividend#0 )
  [131] divr16u::rem#4 = phi( divr16u/divr16u::rem#3, divr16u::@3/divr16u::rem#9 )
  [132] divr16u::rem#0 = divr16u::rem#4 << 1
  [133] divr16u::$1 = byte1  divr16u::dividend#2
  [134] divr16u::$2 = divr16u::$1 & $80
  [135] if(divr16u::$2==0) goto divr16u::@2
  to:divr16u::@4
divr16u::@4: scope:[divr16u]  from divr16u::@1
  [136] divr16u::rem#1 = divr16u::rem#0 | 1
  to:divr16u::@2
divr16u::@2: scope:[divr16u]  from divr16u::@1 divr16u::@4
  [137] divr16u::rem#5 = phi( divr16u::@1/divr16u::rem#0, divr16u::@4/divr16u::rem#1 )
  [138] divr16u::dividend#0 = divr16u::dividend#2 << 1
  [139] divr16u::quotient#1 = divr16u::quotient#3 << 1
  [140] if(divr16u::rem#5<divr16u::divisor#0) goto divr16u::@3
  to:divr16u::@5
divr16u::@5: scope:[divr16u]  from divr16u::@2
  [141] divr16u::quotient#2 = ++ divr16u::quotient#1
  [142] divr16u::rem#2 = divr16u::rem#5 - divr16u::divisor#0
  to:divr16u::@3
divr16u::@3: scope:[divr16u]  from divr16u::@2 divr16u::@5
  [143] divr16u::return#0 = phi( divr16u::@2/divr16u::quotient#1, divr16u::@5/divr16u::quotient#2 )
  [143] divr16u::rem#9 = phi( divr16u::@2/divr16u::rem#5, divr16u::@5/divr16u::rem#2 )
  [144] divr16u::i#1 = ++ divr16u::i#2
  [145] if(divr16u::i#1!=$10) goto divr16u::@1
  to:divr16u::@return
divr16u::@return: scope:[divr16u]  from divr16u::@3
  [146] return 
  to:@return
