@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 bitmap_init 
  to:main::@5
main::@5: scope:[main]  from main
  [6] phi()
  [7] call bitmap_clear 
  to:main::@6
main::@6: scope:[main]  from main::@5
  [8] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3
  to:main::toD0181
main::toD0181: scope:[main]  from main::@6
  [9] phi()
  to:main::@4
main::@4: scope:[main]  from main::toD0181
  [10] *((const byte*) D018) ← (const byte) main::toD0181_return#0
  to:main::@1
main::@1: scope:[main]  from main::@4 main::@7
  [11] (byte) main::a#2 ← phi( main::@4/(byte) 0 main::@7/(byte) main::a#1 )
  [11] (byte) main::i#2 ← phi( main::@4/(byte) 0 main::@7/(byte) main::i#1 )
  [12] if((byte) main::i#2!=(byte) 8) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@1 main::@3
  [13] *((const byte*) SCREEN+(word) $3e7) ← ++ *((const byte*) SCREEN+(word) $3e7)
  to:main::@3
main::@2: scope:[main]  from main::@1
  [14] (word~) main::$4 ← (word)*((const byte*) COSTAB + (byte) main::a#2)
  [15] (word) bitmap_line::x1#0 ← (word~) main::$4 + (byte) $78
  [16] (word) bitmap_line::y1#0 ← (word)*((const byte*) SINTAB + (byte) main::a#2)
  [17] (word~) main::$8 ← (word)*((const byte*) COSTAB+(byte) $20 + (byte) main::a#2)
  [18] (word) bitmap_line::x2#0 ← (word~) main::$8 + (byte) $78
  [19] (word) bitmap_line::y2#0 ← (word)*((const byte*) SINTAB+(byte) $20 + (byte) main::a#2)
  [20] call bitmap_line 
  to:main::@7
main::@7: scope:[main]  from main::@2
  [21] (byte) main::a#1 ← (byte) main::a#2 + (byte) $20
  [22] (byte) main::i#1 ← ++ (byte) main::i#2
  to:main::@1

(void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2)
bitmap_line: scope:[bitmap_line]  from main::@2
  [23] (word) abs_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0
  [24] call abs_u16 
  [25] (word) abs_u16::return#0 ← (word) abs_u16::return#4
  to:bitmap_line::@12
bitmap_line::@12: scope:[bitmap_line]  from bitmap_line
  [26] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0
  [27] (word) abs_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0
  [28] call abs_u16 
  [29] (word) abs_u16::return#1 ← (word) abs_u16::return#4
  to:bitmap_line::@13
bitmap_line::@13: scope:[bitmap_line]  from bitmap_line::@12
  [30] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1
  [31] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1
  to:bitmap_line::@18
bitmap_line::@18: scope:[bitmap_line]  from bitmap_line::@13
  [32] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4
  to:bitmap_line::@1
bitmap_line::@1: scope:[bitmap_line]  from bitmap_line::@13 bitmap_line::@18
  [33] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#0 - (word) bitmap_line::x1#0
  [34] call sgn_u16 
  [35] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4
  to:bitmap_line::@14
bitmap_line::@14: scope:[bitmap_line]  from bitmap_line::@1
  [36] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0
  [37] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#0 - (word) bitmap_line::y1#0
  [38] call sgn_u16 
  [39] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4
  to:bitmap_line::@15
bitmap_line::@15: scope:[bitmap_line]  from bitmap_line::@14
  [40] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1
  [41] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2
  to:bitmap_line::@5
bitmap_line::@5: scope:[bitmap_line]  from bitmap_line::@15
  [42] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1
  to:bitmap_line::@6
bitmap_line::@6: scope:[bitmap_line]  from bitmap_line::@5 bitmap_line::@7
  [43] (word) bitmap_line::e#3 ← phi( bitmap_line::@5/(word) bitmap_line::e#0 bitmap_line::@7/(word) bitmap_line::e#6 )
  [43] (word) bitmap_line::x#13 ← phi( bitmap_line::@5/(word) bitmap_line::x1#0 bitmap_line::@7/(word) bitmap_line::x#12 )
  [43] (word) bitmap_line::y#4 ← phi( bitmap_line::@5/(word) bitmap_line::y1#0 bitmap_line::@7/(word) bitmap_line::y#1 )
  [44] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4
  [45] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13
  [46] call bitmap_plot 
  to:bitmap_line::@16
bitmap_line::@16: scope:[bitmap_line]  from bitmap_line::@6
  [47] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0
  [48] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0
  [49] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7
  to:bitmap_line::@8
bitmap_line::@8: scope:[bitmap_line]  from bitmap_line::@16
  [50] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0
  [51] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0
  to:bitmap_line::@7
bitmap_line::@7: scope:[bitmap_line]  from bitmap_line::@16 bitmap_line::@8
  [52] (word) bitmap_line::e#6 ← phi( bitmap_line::@16/(word) bitmap_line::e#1 bitmap_line::@8/(word) bitmap_line::e#2 )
  [52] (word) bitmap_line::x#12 ← phi( bitmap_line::@16/(word) bitmap_line::x#13 bitmap_line::@8/(word) bitmap_line::x#1 )
  [53] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#0) goto bitmap_line::@6
  to:bitmap_line::@3
bitmap_line::@3: scope:[bitmap_line]  from bitmap_line::@10 bitmap_line::@7
  [54] (word) bitmap_line::x#6 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@7/(word) bitmap_line::x#12 )
  [54] (word) bitmap_line::y#7 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@7/(word) bitmap_line::y#1 )
  [55] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7
  [56] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6
  [57] call bitmap_plot 
  to:bitmap_line::@return
bitmap_line::@return: scope:[bitmap_line]  from bitmap_line::@3 bitmap_line::@4
  [58] return 
  to:@return
bitmap_line::@2: scope:[bitmap_line]  from bitmap_line::@15
  [59] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1
  to:bitmap_line::@9
bitmap_line::@9: scope:[bitmap_line]  from bitmap_line::@10 bitmap_line::@2
  [60] (word) bitmap_line::e1#3 ← phi( bitmap_line::@10/(word) bitmap_line::e1#6 bitmap_line::@2/(word) bitmap_line::e1#0 )
  [60] (word) bitmap_line::x#7 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@2/(word) bitmap_line::x1#0 )
  [60] (word) bitmap_line::y#15 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@2/(word) bitmap_line::y1#0 )
  [61] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15
  [62] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7
  [63] call bitmap_plot 
  to:bitmap_line::@17
bitmap_line::@17: scope:[bitmap_line]  from bitmap_line::@9
  [64] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0
  [65] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0
  [66] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10
  to:bitmap_line::@11
bitmap_line::@11: scope:[bitmap_line]  from bitmap_line::@17
  [67] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0
  [68] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0
  to:bitmap_line::@10
bitmap_line::@10: scope:[bitmap_line]  from bitmap_line::@11 bitmap_line::@17
  [69] (word) bitmap_line::e1#6 ← phi( bitmap_line::@11/(word) bitmap_line::e1#2 bitmap_line::@17/(word) bitmap_line::e1#1 )
  [69] (word) bitmap_line::y#13 ← phi( bitmap_line::@11/(word) bitmap_line::y#2 bitmap_line::@17/(word) bitmap_line::y#15 )
  [70] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#0) goto bitmap_line::@9
  to:bitmap_line::@3
bitmap_line::@4: scope:[bitmap_line]  from bitmap_line::@18
  [71] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y1#0
  [72] (word) bitmap_plot::x#0 ← (word) bitmap_line::x1#0
  [73] call bitmap_plot 
  to:bitmap_line::@return

(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
bitmap_plot: scope:[bitmap_plot]  from bitmap_line::@3 bitmap_line::@4 bitmap_line::@6 bitmap_line::@9
  [74] (word) bitmap_plot::x#4 ← phi( bitmap_line::@9/(word) bitmap_plot::x#3 bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@6/(word) bitmap_plot::x#1 )
  [74] (byte) bitmap_plot::y#4 ← phi( bitmap_line::@9/(byte) bitmap_plot::y#3 bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@6/(byte) bitmap_plot::y#1 )
  [75] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4)
  [76] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#4 & (word) $fff8
  [77] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1
  [78] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#4
  [79] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte*) bitmap_plot_bit + (byte~) bitmap_plot::$2)
  to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot]  from bitmap_plot
  [80] return 
  to:@return

(word()) sgn_u16((word) sgn_u16::w)
sgn_u16: scope:[sgn_u16]  from bitmap_line::@1 bitmap_line::@14
  [81] (word) sgn_u16::w#2 ← phi( bitmap_line::@1/(word) sgn_u16::w#0 bitmap_line::@14/(word) sgn_u16::w#1 )
  [82] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2
  [83] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80
  [84] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1
  to:sgn_u16::@return
sgn_u16::@1: scope:[sgn_u16]  from sgn_u16
  [85] phi()
  to:sgn_u16::@return
sgn_u16::@return: scope:[sgn_u16]  from sgn_u16 sgn_u16::@1
  [86] (word) sgn_u16::return#4 ← phi( sgn_u16::@1/(byte) -1 sgn_u16/(byte) 1 )
  [87] return 
  to:@return

(word()) abs_u16((word) abs_u16::w)
abs_u16: scope:[abs_u16]  from bitmap_line bitmap_line::@12
  [88] (word) abs_u16::w#2 ← phi( bitmap_line/(word) abs_u16::w#0 bitmap_line::@12/(word) abs_u16::w#1 )
  [89] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2
  [90] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80
  [91] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1
  to:abs_u16::@return
abs_u16::@1: scope:[abs_u16]  from abs_u16
  [92] (word) abs_u16::return#2 ← - (word) abs_u16::w#2
  to:abs_u16::@return
abs_u16::@return: scope:[abs_u16]  from abs_u16 abs_u16::@1
  [93] (word) abs_u16::return#4 ← phi( abs_u16::@1/(word) abs_u16::return#2 abs_u16/(word) abs_u16::w#2 )
  [94] return 
  to:@return

(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
bitmap_clear: scope:[bitmap_clear]  from main::@5
  [95] phi()
  [96] call memset 
  to:bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear]  from bitmap_clear
  [97] phi()
  [98] call memset 
  to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear]  from bitmap_clear::@1
  [99] return 
  to:@return

(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
memset: scope:[memset]  from bitmap_clear bitmap_clear::@1
  [100] (byte) memset::c#4 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 )
  [100] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) SCREEN bitmap_clear::@1/(void*)(const byte*) BITMAP )
  [100] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 )
  [101] if((word) memset::num#2<=(byte) 0) goto memset::@return
  to:memset::@1
memset::@1: scope:[memset]  from memset
  [102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2
  [103] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
  to:memset::@2
memset::@2: scope:[memset]  from memset::@1 memset::@3
  [104] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 )
  [105] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3
  to:memset::@return
memset::@return: scope:[memset]  from memset memset::@2
  [106] return 
  to:@return
memset::@3: scope:[memset]  from memset::@2
  [107] *((byte*) memset::dst#2) ← (byte) memset::c#4
  [108] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
  to:memset::@2

(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
bitmap_init: scope:[bitmap_init]  from main
  [109] phi()
  to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init]  from bitmap_init bitmap_init::@2
  [110] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
  [110] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 )
  [111] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
  [112] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1
  [113] 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
  [114] phi()
  to:bitmap_init::@2
bitmap_init::@2: scope:[bitmap_init]  from bitmap_init::@1 bitmap_init::@6
  [115] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 )
  [116] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
  [117] 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
  [118] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP bitmap_init::@4/(byte*) bitmap_init::yoffs#4 )
  [118] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 )
  [119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
  [120] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
  [121] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4
  [122] *((const byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
  [123] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
  [124] *((const byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
  [125] 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
  [126] (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
  [127] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 )
  [128] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
  [129] 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
  [130] return 
  to:@return
