
void main()
main: scope:[main]  from
  [0] phi()
  [1] call init_font_hex
  to:main::toD0181
main::toD0181: scope:[main]  from main
  [2] phi()
  to:main::@1
main::@1: scope:[main]  from main::toD0181
  [3] *D018 = main::toD0181_return#0
  [4] call clock_start
  to:main::@3
main::@3: scope:[main]  from main::@1
  [5] phi()
  [6] call init_angle_screen
  to:main::@4
main::@4: scope:[main]  from main::@3
  [7] phi()
  [8] call clock
  [9] clock::return#2 = clock::return#0
  to:main::@5
main::@5: scope:[main]  from main::@4
  [10] main::$4 = clock::return#2
  [11] main::cyclecount#0 = main::$4 - CLOCKS_PER_INIT
  [12] print_ulong_at::dw#0 = main::cyclecount#0
  [13] call print_ulong_at
  to:main::toD0182
main::toD0182: scope:[main]  from main::@5
  [14] phi()
  to:main::@2
main::@2: scope:[main]  from main::toD0182
  [15] *D018 = main::toD0182_return#0
  to:main::@return
main::@return: scope:[main]  from main::@2
  [16] return 
  to:@return

void init_font_hex(char *charset)
init_font_hex: scope:[init_font_hex]  from main
  [17] phi()
  to:init_font_hex::@1
init_font_hex::@1: scope:[init_font_hex]  from init_font_hex init_font_hex::@5
  [18] init_font_hex::c#6 = phi( init_font_hex/0, init_font_hex::@5/init_font_hex::c#1 )
  [18] init_font_hex::proto_hi#6 = phi( init_font_hex/FONT_HEX_PROTO, init_font_hex::@5/init_font_hex::proto_hi#1 )
  [18] init_font_hex::charset#5 = phi( init_font_hex/CHARSET, init_font_hex::@5/init_font_hex::charset#0 )
  to:init_font_hex::@2
init_font_hex::@2: scope:[init_font_hex]  from init_font_hex::@1 init_font_hex::@4
  [19] init_font_hex::c1#4 = phi( init_font_hex::@1/0, init_font_hex::@4/init_font_hex::c1#1 )
  [19] init_font_hex::proto_lo#4 = phi( init_font_hex::@1/FONT_HEX_PROTO, init_font_hex::@4/init_font_hex::proto_lo#1 )
  [19] init_font_hex::charset#2 = phi( init_font_hex::@1/init_font_hex::charset#5, init_font_hex::@4/init_font_hex::charset#0 )
  [20] *init_font_hex::charset#2 = 0
  to:init_font_hex::@3
init_font_hex::@3: scope:[init_font_hex]  from init_font_hex::@2 init_font_hex::@3
  [21] init_font_hex::idx#5 = phi( init_font_hex::@2/1, init_font_hex::@3/init_font_hex::idx#2 )
  [21] init_font_hex::i#2 = phi( init_font_hex::@2/0, init_font_hex::@3/init_font_hex::i#1 )
  [22] init_font_hex::$0 = init_font_hex::proto_hi#6[init_font_hex::i#2] << 4
  [23] init_font_hex::$1 = init_font_hex::proto_lo#4[init_font_hex::i#2] << 1
  [24] init_font_hex::$2 = init_font_hex::$0 | init_font_hex::$1
  [25] init_font_hex::charset#2[init_font_hex::idx#5] = init_font_hex::$2
  [26] init_font_hex::idx#2 = ++ init_font_hex::idx#5
  [27] init_font_hex::i#1 = ++ init_font_hex::i#2
  [28] if(init_font_hex::i#1!=5) goto init_font_hex::@3
  to:init_font_hex::@4
init_font_hex::@4: scope:[init_font_hex]  from init_font_hex::@3
  [29] init_font_hex::charset#2[init_font_hex::idx#2] = 0
  [30] init_font_hex::idx#3 = ++ init_font_hex::idx#2
  [31] init_font_hex::charset#2[init_font_hex::idx#3] = 0
  [32] init_font_hex::proto_lo#1 = init_font_hex::proto_lo#4 + 5
  [33] init_font_hex::charset#0 = init_font_hex::charset#2 + 8
  [34] init_font_hex::c1#1 = ++ init_font_hex::c1#4
  [35] if(init_font_hex::c1#1!=$10) goto init_font_hex::@2
  to:init_font_hex::@5
init_font_hex::@5: scope:[init_font_hex]  from init_font_hex::@4
  [36] init_font_hex::proto_hi#1 = init_font_hex::proto_hi#6 + 5
  [37] init_font_hex::c#1 = ++ init_font_hex::c#6
  [38] if(init_font_hex::c#1!=$10) goto init_font_hex::@1
  to:init_font_hex::@return
init_font_hex::@return: scope:[init_font_hex]  from init_font_hex::@5
  [39] return 
  to:@return

void clock_start()
clock_start: scope:[clock_start]  from main::@1
  [40] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0
  [41] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
  [42] *CIA2_TIMER_AB = $ffffffff
  [43] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
  [44] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START
  to:clock_start::@return
clock_start::@return: scope:[clock_start]  from clock_start
  [45] return 
  to:@return

void init_angle_screen(char *screen)
init_angle_screen: scope:[init_angle_screen]  from main::@3
  [46] phi()
  to:init_angle_screen::@1
init_angle_screen::@1: scope:[init_angle_screen]  from init_angle_screen init_angle_screen::@4
  [47] init_angle_screen::screen_bottomline#6 = phi( init_angle_screen/SCREEN+(unsigned int)$28*$c, init_angle_screen::@4/init_angle_screen::screen_bottomline#1 )
  [47] init_angle_screen::screen_topline#6 = phi( init_angle_screen/SCREEN+(unsigned int)$28*$c, init_angle_screen::@4/init_angle_screen::screen_topline#1 )
  [47] init_angle_screen::y#5 = phi( init_angle_screen/0, init_angle_screen::@4/init_angle_screen::y#1 )
  to:init_angle_screen::@2
init_angle_screen::@2: scope:[init_angle_screen]  from init_angle_screen::@1 init_angle_screen::@5
  [48] init_angle_screen::xb#2 = phi( init_angle_screen::@1/$27, init_angle_screen::@5/init_angle_screen::xb#1 )
  [48] init_angle_screen::x#2 = phi( init_angle_screen::@1/0, init_angle_screen::@5/init_angle_screen::x#1 )
  [49] if(init_angle_screen::x#2<$13+1) goto init_angle_screen::@3
  to:init_angle_screen::@4
init_angle_screen::@4: scope:[init_angle_screen]  from init_angle_screen::@2
  [50] init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#6 - $28
  [51] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28
  [52] init_angle_screen::y#1 = ++ init_angle_screen::y#5
  [53] if(init_angle_screen::y#1!=$d) goto init_angle_screen::@1
  to:init_angle_screen::@return
init_angle_screen::@return: scope:[init_angle_screen]  from init_angle_screen::@4
  [54] return 
  to:@return
init_angle_screen::@3: scope:[init_angle_screen]  from init_angle_screen::@2
  [55] init_angle_screen::$3 = init_angle_screen::x#2 << 1
  [56] init_angle_screen::$4 = $27 - init_angle_screen::$3
  [57] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0
  [58] init_angle_screen::$6 = init_angle_screen::y#5 << 1
  [59] init_angle_screen::yw#0 = init_angle_screen::$6 w= 0
  [60] atan2_16::x#0 = (int)init_angle_screen::xw#0
  [61] atan2_16::y#0 = (int)init_angle_screen::yw#0
  [62] call atan2_16
  [63] atan2_16::return#2 = atan2_16::return#0
  to:init_angle_screen::@5
init_angle_screen::@5: scope:[init_angle_screen]  from init_angle_screen::@3
  [64] init_angle_screen::angle_w#0 = atan2_16::return#2
  [65] init_angle_screen::$9 = init_angle_screen::angle_w#0 + $80
  [66] init_angle_screen::ang_w#0 = byte1  init_angle_screen::$9
  [67] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0
  [68] init_angle_screen::$11 = - init_angle_screen::ang_w#0
  [69] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$11
  [70] init_angle_screen::$12 = $80 + init_angle_screen::ang_w#0
  [71] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$12
  [72] init_angle_screen::$13 = $80 - init_angle_screen::ang_w#0
  [73] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$13
  [74] init_angle_screen::x#1 = ++ init_angle_screen::x#2
  [75] init_angle_screen::xb#1 = -- init_angle_screen::xb#2
  to:init_angle_screen::@2

unsigned long clock()
clock: scope:[clock]  from main::@4
  [76] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0
  [77] clock::return#0 = $ffffffff - *CIA2_TIMER_AB
  [78] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START
  to:clock::@return
clock::@return: scope:[clock]  from clock
  [79] return 
  to:@return

void print_ulong_at(unsigned long dw , char *at)
print_ulong_at: scope:[print_ulong_at]  from main::@5
  [80] print_uint_at::w#0 = word1  print_ulong_at::dw#0
  [81] call print_uint_at
  to:print_ulong_at::@1
print_ulong_at::@1: scope:[print_ulong_at]  from print_ulong_at
  [82] print_uint_at::w#1 = word0  print_ulong_at::dw#0
  [83] call print_uint_at
  to:print_ulong_at::@return
print_ulong_at::@return: scope:[print_ulong_at]  from print_ulong_at::@1
  [84] return 
  to:@return

unsigned int atan2_16(int x , int y)
atan2_16: scope:[atan2_16]  from init_angle_screen::@3
  [85] if(atan2_16::y#0>=0) goto atan2_16::@1
  to:atan2_16::@2
atan2_16::@2: scope:[atan2_16]  from atan2_16
  [86] atan2_16::$2 = - atan2_16::y#0
  to:atan2_16::@3
atan2_16::@3: scope:[atan2_16]  from atan2_16::@1 atan2_16::@2
  [87] atan2_16::yi#0 = phi( atan2_16::@1/atan2_16::yi#16, atan2_16::@2/atan2_16::$2 )
  [88] if(atan2_16::x#0>=0) goto atan2_16::@4
  to:atan2_16::@5
atan2_16::@5: scope:[atan2_16]  from atan2_16::@3
  [89] atan2_16::$7 = - atan2_16::x#0
  to:atan2_16::@6
atan2_16::@6: scope:[atan2_16]  from atan2_16::@4 atan2_16::@5
  [90] atan2_16::xi#0 = phi( atan2_16::@4/atan2_16::xi#13, atan2_16::@5/atan2_16::$7 )
  to:atan2_16::@10
atan2_16::@10: scope:[atan2_16]  from atan2_16::@19 atan2_16::@6
  [91] atan2_16::angle#12 = phi( atan2_16::@19/atan2_16::angle#13, atan2_16::@6/0 )
  [91] atan2_16::i#2 = phi( atan2_16::@19/atan2_16::i#1, atan2_16::@6/0 )
  [91] atan2_16::xi#3 = phi( atan2_16::@19/atan2_16::xi#8, atan2_16::@6/atan2_16::xi#0 )
  [91] atan2_16::yi#3 = phi( atan2_16::@19/atan2_16::yi#8, atan2_16::@6/atan2_16::yi#0 )
  [92] if(atan2_16::yi#3!=0) goto atan2_16::@11
  to:atan2_16::@12
atan2_16::@12: scope:[atan2_16]  from atan2_16::@10 atan2_16::@19
  [93] atan2_16::angle#6 = phi( atan2_16::@10/atan2_16::angle#12, atan2_16::@19/atan2_16::angle#13 )
  [94] atan2_16::angle#1 = atan2_16::angle#6 >> 1
  [95] if(atan2_16::x#0>=0) goto atan2_16::@7
  to:atan2_16::@21
atan2_16::@21: scope:[atan2_16]  from atan2_16::@12
  [96] atan2_16::angle#4 = $8000 - atan2_16::angle#1
  to:atan2_16::@7
atan2_16::@7: scope:[atan2_16]  from atan2_16::@12 atan2_16::@21
  [97] atan2_16::angle#11 = phi( atan2_16::@12/atan2_16::angle#1, atan2_16::@21/atan2_16::angle#4 )
  [98] if(atan2_16::y#0>=0) goto atan2_16::@8
  to:atan2_16::@9
atan2_16::@9: scope:[atan2_16]  from atan2_16::@7
  [99] atan2_16::angle#5 = - atan2_16::angle#11
  to:atan2_16::@8
atan2_16::@8: scope:[atan2_16]  from atan2_16::@7 atan2_16::@9
  [100] atan2_16::return#0 = phi( atan2_16::@7/atan2_16::angle#11, atan2_16::@9/atan2_16::angle#5 )
  to:atan2_16::@return
atan2_16::@return: scope:[atan2_16]  from atan2_16::@8
  [101] return 
  to:@return
atan2_16::@11: scope:[atan2_16]  from atan2_16::@10
  [102] atan2_16::shift#5 = atan2_16::i#2
  [103] atan2_16::xd#10 = atan2_16::xi#3
  [104] atan2_16::yd#10 = atan2_16::yi#3
  to:atan2_16::@13
atan2_16::@13: scope:[atan2_16]  from atan2_16::@11 atan2_16::@14
  [105] atan2_16::yd#3 = phi( atan2_16::@11/atan2_16::yd#10, atan2_16::@14/atan2_16::yd#1 )
  [105] atan2_16::xd#3 = phi( atan2_16::@11/atan2_16::xd#10, atan2_16::@14/atan2_16::xd#1 )
  [105] atan2_16::shift#2 = phi( atan2_16::@11/atan2_16::shift#5, atan2_16::@14/atan2_16::shift#1 )
  [106] if(atan2_16::shift#2>=2) goto atan2_16::@14
  to:atan2_16::@15
atan2_16::@15: scope:[atan2_16]  from atan2_16::@13
  [107] if(0==atan2_16::shift#2) goto atan2_16::@17
  to:atan2_16::@16
atan2_16::@16: scope:[atan2_16]  from atan2_16::@15
  [108] atan2_16::xd#2 = atan2_16::xd#3 >> 1
  [109] atan2_16::yd#2 = atan2_16::yd#3 >> 1
  to:atan2_16::@17
atan2_16::@17: scope:[atan2_16]  from atan2_16::@15 atan2_16::@16
  [110] atan2_16::xd#5 = phi( atan2_16::@15/atan2_16::xd#3, atan2_16::@16/atan2_16::xd#2 )
  [110] atan2_16::yd#5 = phi( atan2_16::@15/atan2_16::yd#3, atan2_16::@16/atan2_16::yd#2 )
  [111] if(atan2_16::yi#3>=0) goto atan2_16::@18
  to:atan2_16::@20
atan2_16::@20: scope:[atan2_16]  from atan2_16::@17
  [112] atan2_16::xi#2 = atan2_16::xi#3 - atan2_16::yd#5
  [113] atan2_16::yi#2 = atan2_16::yi#3 + atan2_16::xd#5
  [114] atan2_16::$23 = atan2_16::i#2 << 1
  [115] atan2_16::angle#3 = atan2_16::angle#12 - CORDIC_ATAN2_ANGLES_16[atan2_16::$23]
  to:atan2_16::@19
atan2_16::@19: scope:[atan2_16]  from atan2_16::@18 atan2_16::@20
  [116] atan2_16::xi#8 = phi( atan2_16::@18/atan2_16::xi#1, atan2_16::@20/atan2_16::xi#2 )
  [116] atan2_16::angle#13 = phi( atan2_16::@18/atan2_16::angle#2, atan2_16::@20/atan2_16::angle#3 )
  [116] atan2_16::yi#8 = phi( atan2_16::@18/atan2_16::yi#1, atan2_16::@20/atan2_16::yi#2 )
  [117] atan2_16::i#1 = ++ atan2_16::i#2
  [118] if(atan2_16::i#1==CORDIC_ITERATIONS_16-1+1) goto atan2_16::@12
  to:atan2_16::@10
atan2_16::@18: scope:[atan2_16]  from atan2_16::@17
  [119] atan2_16::xi#1 = atan2_16::xi#3 + atan2_16::yd#5
  [120] atan2_16::yi#1 = atan2_16::yi#3 - atan2_16::xd#5
  [121] atan2_16::$22 = atan2_16::i#2 << 1
  [122] atan2_16::angle#2 = atan2_16::angle#12 + CORDIC_ATAN2_ANGLES_16[atan2_16::$22]
  to:atan2_16::@19
atan2_16::@14: scope:[atan2_16]  from atan2_16::@13
  [123] atan2_16::xd#1 = atan2_16::xd#3 >> 2
  [124] atan2_16::yd#1 = atan2_16::yd#3 >> 2
  [125] atan2_16::shift#1 = atan2_16::shift#2 - 2
  to:atan2_16::@13
atan2_16::@4: scope:[atan2_16]  from atan2_16::@3
  [126] atan2_16::xi#13 = atan2_16::x#0
  to:atan2_16::@6
atan2_16::@1: scope:[atan2_16]  from atan2_16
  [127] atan2_16::yi#16 = atan2_16::y#0
  to:atan2_16::@3

void print_uint_at(unsigned int w , char *at)
print_uint_at: scope:[print_uint_at]  from print_ulong_at print_ulong_at::@1
  [128] print_uint_at::at#2 = phi( print_ulong_at/main::BASE_SCREEN, print_ulong_at::@1/main::BASE_SCREEN+4 )
  [128] print_uint_at::w#2 = phi( print_ulong_at/print_uint_at::w#0, print_ulong_at::@1/print_uint_at::w#1 )
  [129] print_uchar_at::b#0 = byte1  print_uint_at::w#2
  [130] print_uchar_at::at#0 = print_uint_at::at#2
  [131] call print_uchar_at
  to:print_uint_at::@1
print_uint_at::@1: scope:[print_uint_at]  from print_uint_at
  [132] print_uchar_at::b#1 = byte0  print_uint_at::w#2
  [133] print_uchar_at::at#1 = print_uint_at::at#2 + 2
  [134] call print_uchar_at
  to:print_uint_at::@return
print_uint_at::@return: scope:[print_uint_at]  from print_uint_at::@1
  [135] return 
  to:@return

void print_uchar_at(char b , char *at)
print_uchar_at: scope:[print_uchar_at]  from print_uint_at print_uint_at::@1
  [136] print_uchar_at::at#2 = phi( print_uint_at/print_uchar_at::at#0, print_uint_at::@1/print_uchar_at::at#1 )
  [136] print_uchar_at::b#2 = phi( print_uint_at/print_uchar_at::b#0, print_uint_at::@1/print_uchar_at::b#1 )
  [137] print_uchar_at::$0 = print_uchar_at::b#2 >> 4
  [138] print_char_at::ch#0 = print_hextab[print_uchar_at::$0]
  [139] print_char_at::at#0 = print_uchar_at::at#2
  [140] call print_char_at
  to:print_uchar_at::@1
print_uchar_at::@1: scope:[print_uchar_at]  from print_uchar_at
  [141] print_uchar_at::$2 = print_uchar_at::b#2 & $f
  [142] print_char_at::at#1 = print_uchar_at::at#2 + 1
  [143] print_char_at::ch#1 = print_hextab[print_uchar_at::$2]
  [144] call print_char_at
  to:print_uchar_at::@return
print_uchar_at::@return: scope:[print_uchar_at]  from print_uchar_at::@1
  [145] return 
  to:@return

void print_char_at(char ch , char *at)
print_char_at: scope:[print_char_at]  from print_uchar_at print_uchar_at::@1
  [146] print_char_at::at#2 = phi( print_uchar_at/print_char_at::at#0, print_uchar_at::@1/print_char_at::at#1 )
  [146] print_char_at::ch#2 = phi( print_uchar_at/print_char_at::ch#0, print_uchar_at::@1/print_char_at::ch#1 )
  [147] *print_char_at::at#2 = print_char_at::ch#2
  to:print_char_at::@return
print_char_at::@return: scope:[print_char_at]  from print_char_at
  [148] return 
  to:@return
