@begin: scope:[]  from
  [0] phi()
  to:@1
@1: scope:[]  from @begin
  [1] phi()
  [2] call malloc 
  to:@4
@4: scope:[]  from @1
  [3] (void*) SCREEN_DIST#0 ← (void*)(byte*) malloc::mem#0
  [4] call malloc 
  to:@5
@5: scope:[]  from @4
  [5] (void*) SCREEN_ANGLE#0 ← (void*)(byte*) malloc::mem#0
  to:@2
@2: scope:[]  from @5
  [6] phi()
  [7] call malloc 
  to:@6
@6: scope:[]  from @2
  [8] (void*) BUCKET_SIZES#0 ← (void*)(byte*) malloc::mem#0
  [9] call malloc 
  to:@7
@7: scope:[]  from @6
  [10] (void*) BUCKETS#0 ← (void*)(byte*) malloc::mem#0
  [11] call malloc 
  to:@8
@8: scope:[]  from @7
  [12] (void*) BUCKET_IDX#0 ← (void*)(byte*) malloc::mem#0
  to:@3
@3: scope:[]  from @8
  [13] phi()
  [14] call main 
  to:@end
@end: scope:[]  from @3
  [15] phi()
main: scope:[main]  from @3
  asm { sei  }
  [17] (byte*) init_dist_screen::screen#0 ← (byte[])(void*) SCREEN_DIST#0
  [18] call init_dist_screen 
  to:main::@15
main::@15: scope:[main]  from main
  [19] (byte*) init_angle_screen::screen#0 ← (byte[])(void*) SCREEN_ANGLE#0
  [20] call init_angle_screen 
  to:main::@16
main::@16: scope:[main]  from main::@15
  [21] (byte*) init_buckets::screen#0 ← (byte[])(void*) SCREEN_DIST#0
  [22] call init_buckets 
  to:main::@1
main::@1: scope:[main]  from main::@11 main::@12 main::@16
  [23] (byte) main::bucket_idx#6 ← phi( main::@11/(byte) main::bucket_idx#6 main::@12/(byte) main::bucket_idx#1 main::@16/(byte) 0 )
  to:main::@2
main::@2: scope:[main]  from main::@1 main::@2
  [24] if(*((const byte*) RASTER#0)!=(byte) $ff) goto main::@2
  to:main::@3
main::@3: scope:[main]  from main::@2
  [25] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0)
  [26] (byte~) main::$21 ← (byte) main::bucket_idx#6 << (byte) 1
  [27] (word[]) main::bucket#0 ← *((word*[])(void*) BUCKETS#0 + (byte~) main::$21)
  [28] (byte) main::bucket_size#0 ← *((byte[])(void*) BUCKET_SIZES#0 + (byte) main::bucket_idx#6)
  [29] if((byte) main::bucket_size#0<=(byte) 0) goto main::@4
  to:main::@5
main::@5: scope:[main]  from main::@3 main::@8
  [30] (byte) main::min_angle#2 ← phi( main::@8/(byte) main::min_angle#5 main::@3/(byte) $ff )
  [30] (word) main::min_offset#2 ← phi( main::@8/(word~) main::min_offset#8 main::@3/(word) $ffff )
  [30] (byte) main::i#2 ← phi( main::@8/(byte) main::i#1 main::@3/(byte) 0 )
  [31] if((byte) main::i#2<(byte) main::bucket_size#0) goto main::@6
  to:main::@7
main::@7: scope:[main]  from main::@5
  [32] if((word) main::min_offset#2==(word) $ffff) goto main::@4
  to:main::@11
main::@11: scope:[main]  from main::@7
  [33] (byte*) main::fill1#0 ← (const byte*) SCREEN_FILL#0 + (word) main::min_offset#2
  [34] *((byte*) main::fill1#0) ← (const byte) FILL_CHAR#0
  [35] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0)
  to:main::@1
main::@4: scope:[main]  from main::@3 main::@7
  [36] (byte) main::bucket_idx#1 ← ++ (byte) main::bucket_idx#6
  [37] if((byte) main::bucket_idx#1!=(const byte) NUM_BUCKETS#0) goto main::@12
  to:main::@13
main::@13: scope:[main]  from main::@4
  [38] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0)
  to:main::@14
main::@14: scope:[main]  from main::@13 main::@14
  [39] *((const byte*) COLS#0+(word) $3e7) ← ++ *((const byte*) COLS#0+(word) $3e7)
  to:main::@14
main::@12: scope:[main]  from main::@4
  [40] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0)
  to:main::@1
main::@6: scope:[main]  from main::@5
  [41] (byte~) main::$22 ← (byte) main::i#2 << (byte) 1
  [42] (word) main::offset#0 ← *((word[]) main::bucket#0 + (byte~) main::$22)
  [43] (byte*) main::fill#0 ← (const byte*) SCREEN_FILL#0 + (word) main::offset#0
  [44] if(*((byte*) main::fill#0)==(const byte) FILL_CHAR#0) goto main::@18
  to:main::@9
main::@9: scope:[main]  from main::@6
  [45] (byte*) main::angle#0 ← (byte[])(void*) SCREEN_ANGLE#0 + (word) main::offset#0
  [46] if(*((byte*) main::angle#0)>(byte) main::min_angle#2) goto main::@17
  to:main::@10
main::@10: scope:[main]  from main::@9
  [47] (byte) main::min_angle#1 ← *((byte*) main::angle#0)
  to:main::@8
main::@8: scope:[main]  from main::@10 main::@17 main::@18
  [48] (byte) main::min_angle#5 ← phi( main::@17/(byte) main::min_angle#2 main::@10/(byte) main::min_angle#1 main::@18/(byte) main::min_angle#2 )
  [48] (word) main::min_offset#5 ← phi( main::@17/(word~) main::min_offset#9 main::@10/(word) main::offset#0 main::@18/(word~) main::min_offset#11 )
  [49] (byte) main::i#1 ← ++ (byte) main::i#2
  [50] (word~) main::min_offset#8 ← (word) main::min_offset#5
  to:main::@5
main::@17: scope:[main]  from main::@9
  [51] (word~) main::min_offset#9 ← (word) main::min_offset#2
  to:main::@8
main::@18: scope:[main]  from main::@6
  [52] (word~) main::min_offset#11 ← (word) main::min_offset#2
  to:main::@8
init_buckets: scope:[init_buckets]  from main::@16
  [53] phi()
  to:init_buckets::@1
init_buckets::@1: scope:[init_buckets]  from init_buckets init_buckets::@1
  [54] (byte) init_buckets::i#2 ← phi( init_buckets/(byte) 0 init_buckets::@1/(byte) init_buckets::i#1 )
  [55] *((byte[])(void*) BUCKET_SIZES#0 + (byte) init_buckets::i#2) ← (byte) 0
  [56] (byte) init_buckets::i#1 ← ++ (byte) init_buckets::i#2
  [57] if((byte) init_buckets::i#1!=(const byte) NUM_BUCKETS#0-(byte) 1+(byte) 1) goto init_buckets::@1
  to:init_buckets::@2
init_buckets::@2: scope:[init_buckets]  from init_buckets::@1
  [58] (byte*~) init_buckets::dist#6 ← (byte*) init_buckets::screen#0
  to:init_buckets::@3
init_buckets::@3: scope:[init_buckets]  from init_buckets::@2 init_buckets::@3
  [59] (word) init_buckets::i1#2 ← phi( init_buckets::@2/(word) 0 init_buckets::@3/(word) init_buckets::i1#1 )
  [59] (byte*) init_buckets::dist#4 ← phi( init_buckets::@2/(byte*~) init_buckets::dist#6 init_buckets::@3/(byte*) init_buckets::dist#1 )
  [60] *((byte[])(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) ← ++ *((byte[])(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4))
  [61] (byte*) init_buckets::dist#1 ← ++ (byte*) init_buckets::dist#4
  [62] (word) init_buckets::i1#1 ← ++ (word) init_buckets::i1#2
  [63] if((word) init_buckets::i1#1!=(word) $3e8) goto init_buckets::@3
  to:init_buckets::@4
init_buckets::@4: scope:[init_buckets]  from init_buckets::@3 init_buckets::@8
  [64] (word) init_buckets::i2#2 ← phi( init_buckets::@8/(word) init_buckets::i2#1 init_buckets::@3/(word) 0 )
  [65] (byte*~) init_buckets::$15 ← (byte[])(void*) BUCKET_SIZES#0 + (word) init_buckets::i2#2
  [66] (word) malloc::size#6 ← *((byte*~) init_buckets::$15) << (byte) 1
  [67] call malloc 
  to:init_buckets::@8
init_buckets::@8: scope:[init_buckets]  from init_buckets::@4
  [68] (void*~) init_buckets::$5 ← (void*)(byte*) malloc::mem#0
  [69] (word~) init_buckets::$12 ← (word) init_buckets::i2#2 << (byte) 1
  [70] (word**~) init_buckets::$16 ← (word*[])(void*) BUCKETS#0 + (word~) init_buckets::$12
  [71] *((word**~) init_buckets::$16) ← (word*)(void*~) init_buckets::$5
  [72] (word) init_buckets::i2#1 ← ++ (word) init_buckets::i2#2
  [73] if((word) init_buckets::i2#1!=(const byte) NUM_BUCKETS#0-(byte) 1+(byte) 1) goto init_buckets::@4
  to:init_buckets::@5
init_buckets::@5: scope:[init_buckets]  from init_buckets::@5 init_buckets::@8
  [74] (byte) init_buckets::i3#2 ← phi( init_buckets::@8/(byte) 0 init_buckets::@5/(byte) init_buckets::i3#1 )
  [75] *((byte[])(void*) BUCKET_IDX#0 + (byte) init_buckets::i3#2) ← (byte) 0
  [76] (byte) init_buckets::i3#1 ← ++ (byte) init_buckets::i3#2
  [77] if((byte) init_buckets::i3#1!=(const byte) NUM_BUCKETS#0-(byte) 1+(byte) 1) goto init_buckets::@5
  to:init_buckets::@6
init_buckets::@6: scope:[init_buckets]  from init_buckets::@5
  [78] (byte*~) init_buckets::dist#8 ← (byte*) init_buckets::screen#0
  to:init_buckets::@7
init_buckets::@7: scope:[init_buckets]  from init_buckets::@6 init_buckets::@7
  [79] (word) init_buckets::i4#2 ← phi( init_buckets::@6/(word) 0 init_buckets::@7/(word) init_buckets::i4#1 )
  [79] (byte*) init_buckets::dist#5 ← phi( init_buckets::@6/(byte*~) init_buckets::dist#8 init_buckets::@7/(byte*) init_buckets::dist#3 )
  [80] (byte) init_buckets::distance#0 ← *((byte*) init_buckets::dist#5)
  [81] (word~) init_buckets::$9 ← (word)(byte) init_buckets::distance#0
  [82] (word~) init_buckets::$13 ← (word~) init_buckets::$9 << (byte) 1
  [83] (word**~) init_buckets::$17 ← (word*[])(void*) BUCKETS#0 + (word~) init_buckets::$13
  [84] (word*) init_buckets::bucket#0 ← *((word**~) init_buckets::$17)
  [85] (word~) init_buckets::$10 ← (byte*) init_buckets::dist#5 - (byte*) init_buckets::screen#0
  [86] (byte~) init_buckets::$14 ← *((byte[])(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) << (byte) 1
  [87] *((word*) init_buckets::bucket#0 + (byte~) init_buckets::$14) ← (word~) init_buckets::$10
  [88] *((byte[])(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0) ← ++ *((byte[])(void*) BUCKET_IDX#0 + (byte) init_buckets::distance#0)
  [89] (byte*) init_buckets::dist#3 ← ++ (byte*) init_buckets::dist#5
  [90] (word) init_buckets::i4#1 ← ++ (word) init_buckets::i4#2
  [91] if((word) init_buckets::i4#1!=(word) $3e8) goto init_buckets::@7
  to:init_buckets::@return
init_buckets::@return: scope:[init_buckets]  from init_buckets::@7
  [92] return 
  to:@return
malloc: scope:[malloc]  from @1 @2 @4 @6 @7 init_buckets::@4 init_squares
  [93] (word) malloc::size#7 ← phi( @1/(word) $3e8 @2/(const byte) NUM_BUCKETS#0*(const byte) SIZEOF_BYTE @4/(word) $3e8 @6/(const byte) NUM_BUCKETS#0*(const byte) SIZEOF_POINTER @7/(const byte) NUM_BUCKETS#0*(const byte) SIZEOF_BYTE init_buckets::@4/(word) malloc::size#6 init_squares/(const byte) NUM_SQUARES#3*(const byte) SIZEOF_WORD )
  [93] (byte*) heap_head#18 ← phi( @1/(const byte*) HEAP_TOP#0 @2/(byte*) heap_head#1 @4/(byte*) heap_head#1 @6/(byte*) heap_head#1 @7/(byte*) heap_head#1 init_buckets::@4/(byte*) heap_head#1 init_squares/(byte*) heap_head#1 )
  [94] (byte*) malloc::mem#0 ← (byte*) heap_head#18 - (word) malloc::size#7
  [95] (byte*) heap_head#1 ← (byte*) malloc::mem#0
  to:malloc::@return
malloc::@return: scope:[malloc]  from malloc
  [96] return 
  to:@return
init_angle_screen: scope:[init_angle_screen]  from main::@15
  [97] (byte*) init_angle_screen::screen_topline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c
  [98] (byte*) init_angle_screen::screen_bottomline#0 ← (byte*) init_angle_screen::screen#0 + (word)(number) $28*(number) $c
  to:init_angle_screen::@1
init_angle_screen::@1: scope:[init_angle_screen]  from init_angle_screen init_angle_screen::@4
  [99] (byte*) init_angle_screen::screen_bottomline#6 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_bottomline#0 init_angle_screen::@4/(byte*) init_angle_screen::screen_bottomline#1 )
  [99] (byte*) init_angle_screen::screen_topline#6 ← phi( init_angle_screen/(byte*) init_angle_screen::screen_topline#0 init_angle_screen::@4/(byte*) init_angle_screen::screen_topline#1 )
  [99] (byte) init_angle_screen::y#5 ← phi( init_angle_screen/(byte) 0 init_angle_screen::@4/(byte) init_angle_screen::y#1 )
  to:init_angle_screen::@3
init_angle_screen::@3: scope:[init_angle_screen]  from init_angle_screen::@1 init_angle_screen::@2
  [100] (byte) init_angle_screen::xb#5 ← phi( init_angle_screen::@2/(byte) init_angle_screen::xb#1 init_angle_screen::@1/(byte) $27 )
  [100] (byte) init_angle_screen::x#5 ← phi( init_angle_screen::@2/(byte) init_angle_screen::x#1 init_angle_screen::@1/(byte) 0 )
  [101] (byte~) init_angle_screen::$3 ← (byte) init_angle_screen::x#5 << (byte) 1
  [102] (byte~) init_angle_screen::$4 ← (byte) $27 - (byte~) init_angle_screen::$3
  [103] (word) init_angle_screen::xw#0 ← (byte~) init_angle_screen::$4 w= (byte) 0
  [104] (byte~) init_angle_screen::$7 ← (byte) init_angle_screen::y#5 << (byte) 1
  [105] (word) init_angle_screen::yw#0 ← (byte~) init_angle_screen::$7 w= (byte) 0
  [106] (signed word) atan2_16::x#0 ← (signed word)(word) init_angle_screen::xw#0
  [107] (signed word) atan2_16::y#0 ← (signed word)(word) init_angle_screen::yw#0
  [108] call atan2_16 
  [109] (word) atan2_16::return#2 ← (word) atan2_16::return#0
  to:init_angle_screen::@5
init_angle_screen::@5: scope:[init_angle_screen]  from init_angle_screen::@3
  [110] (word) init_angle_screen::angle_w#0 ← (word) atan2_16::return#2
  [111] (word~) init_angle_screen::$11 ← (word) init_angle_screen::angle_w#0 + (byte) $80
  [112] (byte) init_angle_screen::ang_w#0 ← > (word~) init_angle_screen::$11
  [113] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::xb#5) ← (byte) init_angle_screen::ang_w#0
  [114] (byte~) init_angle_screen::$13 ← - (byte) init_angle_screen::ang_w#0
  [115] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::xb#5) ← (byte~) init_angle_screen::$13
  [116] (byte~) init_angle_screen::$14 ← (byte) $80 + (byte) init_angle_screen::ang_w#0
  [117] *((byte*) init_angle_screen::screen_topline#6 + (byte) init_angle_screen::x#5) ← (byte~) init_angle_screen::$14
  [118] (byte~) init_angle_screen::$15 ← (byte) $80 - (byte) init_angle_screen::ang_w#0
  [119] *((byte*) init_angle_screen::screen_bottomline#6 + (byte) init_angle_screen::x#5) ← (byte~) init_angle_screen::$15
  [120] (byte) init_angle_screen::x#1 ← ++ (byte) init_angle_screen::x#5
  [121] (byte) init_angle_screen::xb#1 ← -- (byte) init_angle_screen::xb#5
  to:init_angle_screen::@2
init_angle_screen::@2: scope:[init_angle_screen]  from init_angle_screen::@5
  [122] if((byte) init_angle_screen::x#1<(byte) $13+(byte) 1) goto init_angle_screen::@3
  to:init_angle_screen::@4
init_angle_screen::@4: scope:[init_angle_screen]  from init_angle_screen::@2
  [123] (byte*) init_angle_screen::screen_topline#1 ← (byte*) init_angle_screen::screen_topline#6 - (byte) $28
  [124] (byte*) init_angle_screen::screen_bottomline#1 ← (byte*) init_angle_screen::screen_bottomline#6 + (byte) $28
  [125] (byte) init_angle_screen::y#1 ← ++ (byte) init_angle_screen::y#5
  [126] if((byte) init_angle_screen::y#1!=(byte) $d) goto init_angle_screen::@1
  to:init_angle_screen::@return
init_angle_screen::@return: scope:[init_angle_screen]  from init_angle_screen::@4
  [127] return 
  to:@return
atan2_16: scope:[atan2_16]  from init_angle_screen::@3
  [128] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@1
  to:atan2_16::@2
atan2_16::@2: scope:[atan2_16]  from atan2_16
  [129] (signed word~) atan2_16::$2 ← - (signed word) atan2_16::y#0
  to:atan2_16::@3
atan2_16::@3: scope:[atan2_16]  from atan2_16::@1 atan2_16::@2
  [130] (signed word) atan2_16::yi#0 ← phi( atan2_16::@1/(signed word~) atan2_16::yi#16 atan2_16::@2/(signed word~) atan2_16::$2 )
  [131] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@4
  to:atan2_16::@5
atan2_16::@5: scope:[atan2_16]  from atan2_16::@3
  [132] (signed word~) atan2_16::$7 ← - (signed word) atan2_16::x#0
  to:atan2_16::@6
atan2_16::@6: scope:[atan2_16]  from atan2_16::@4 atan2_16::@5
  [133] (signed word) atan2_16::xi#0 ← phi( atan2_16::@4/(signed word~) atan2_16::xi#13 atan2_16::@5/(signed word~) atan2_16::$7 )
  to:atan2_16::@10
atan2_16::@10: scope:[atan2_16]  from atan2_16::@19 atan2_16::@6
  [134] (word) atan2_16::angle#12 ← phi( atan2_16::@19/(word) atan2_16::angle#13 atan2_16::@6/(byte) 0 )
  [134] (byte) atan2_16::i#2 ← phi( atan2_16::@19/(byte) atan2_16::i#1 atan2_16::@6/(byte) 0 )
  [134] (signed word) atan2_16::xi#3 ← phi( atan2_16::@19/(signed word) atan2_16::xi#8 atan2_16::@6/(signed word) atan2_16::xi#0 )
  [134] (signed word) atan2_16::yi#3 ← phi( atan2_16::@19/(signed word) atan2_16::yi#8 atan2_16::@6/(signed word) atan2_16::yi#0 )
  [135] if((signed word) atan2_16::yi#3!=(signed byte) 0) goto atan2_16::@11
  to:atan2_16::@12
atan2_16::@12: scope:[atan2_16]  from atan2_16::@10 atan2_16::@19
  [136] (word) atan2_16::angle#6 ← phi( atan2_16::@10/(word) atan2_16::angle#12 atan2_16::@19/(word) atan2_16::angle#13 )
  [137] (word) atan2_16::angle#1 ← (word) atan2_16::angle#6 >> (byte) 1
  [138] if((signed word) atan2_16::x#0>=(signed byte) 0) goto atan2_16::@7
  to:atan2_16::@21
atan2_16::@21: scope:[atan2_16]  from atan2_16::@12
  [139] (word) atan2_16::angle#4 ← (word) $8000 - (word) atan2_16::angle#1
  to:atan2_16::@7
atan2_16::@7: scope:[atan2_16]  from atan2_16::@12 atan2_16::@21
  [140] (word) atan2_16::angle#11 ← phi( atan2_16::@12/(word) atan2_16::angle#1 atan2_16::@21/(word) atan2_16::angle#4 )
  [141] if((signed word) atan2_16::y#0>=(signed byte) 0) goto atan2_16::@8
  to:atan2_16::@9
atan2_16::@9: scope:[atan2_16]  from atan2_16::@7
  [142] (word) atan2_16::angle#5 ← - (word) atan2_16::angle#11
  to:atan2_16::@8
atan2_16::@8: scope:[atan2_16]  from atan2_16::@7 atan2_16::@9
  [143] (word) atan2_16::return#0 ← phi( atan2_16::@9/(word) atan2_16::angle#5 atan2_16::@7/(word) atan2_16::angle#11 )
  to:atan2_16::@return
atan2_16::@return: scope:[atan2_16]  from atan2_16::@8
  [144] return 
  to:@return
atan2_16::@11: scope:[atan2_16]  from atan2_16::@10
  [145] (byte~) atan2_16::shift#5 ← (byte) atan2_16::i#2
  [146] (signed word~) atan2_16::xd#10 ← (signed word) atan2_16::xi#3
  [147] (signed word~) atan2_16::yd#10 ← (signed word) atan2_16::yi#3
  to:atan2_16::@13
atan2_16::@13: scope:[atan2_16]  from atan2_16::@11 atan2_16::@14
  [148] (signed word) atan2_16::yd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::yd#10 atan2_16::@14/(signed word) atan2_16::yd#1 )
  [148] (signed word) atan2_16::xd#3 ← phi( atan2_16::@11/(signed word~) atan2_16::xd#10 atan2_16::@14/(signed word) atan2_16::xd#1 )
  [148] (byte) atan2_16::shift#2 ← phi( atan2_16::@11/(byte~) atan2_16::shift#5 atan2_16::@14/(byte) atan2_16::shift#1 )
  [149] if((byte) atan2_16::shift#2>=(byte) 2) goto atan2_16::@14
  to:atan2_16::@15
atan2_16::@15: scope:[atan2_16]  from atan2_16::@13
  [150] if((byte) 0==(byte) atan2_16::shift#2) goto atan2_16::@17
  to:atan2_16::@16
atan2_16::@16: scope:[atan2_16]  from atan2_16::@15
  [151] (signed word) atan2_16::xd#2 ← (signed word) atan2_16::xd#3 >> (signed byte) 1
  [152] (signed word) atan2_16::yd#2 ← (signed word) atan2_16::yd#3 >> (signed byte) 1
  to:atan2_16::@17
atan2_16::@17: scope:[atan2_16]  from atan2_16::@15 atan2_16::@16
  [153] (signed word) atan2_16::xd#5 ← phi( atan2_16::@15/(signed word) atan2_16::xd#3 atan2_16::@16/(signed word) atan2_16::xd#2 )
  [153] (signed word) atan2_16::yd#5 ← phi( atan2_16::@15/(signed word) atan2_16::yd#3 atan2_16::@16/(signed word) atan2_16::yd#2 )
  [154] if((signed word) atan2_16::yi#3>=(signed byte) 0) goto atan2_16::@18
  to:atan2_16::@20
atan2_16::@20: scope:[atan2_16]  from atan2_16::@17
  [155] (signed word) atan2_16::xi#2 ← (signed word) atan2_16::xi#3 - (signed word) atan2_16::yd#5
  [156] (signed word) atan2_16::yi#2 ← (signed word) atan2_16::yi#3 + (signed word) atan2_16::xd#5
  [157] (byte~) atan2_16::$24 ← (byte) atan2_16::i#2 << (byte) 1
  [158] (word) atan2_16::angle#3 ← (word) atan2_16::angle#12 - *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$24)
  to:atan2_16::@19
atan2_16::@19: scope:[atan2_16]  from atan2_16::@18 atan2_16::@20
  [159] (signed word) atan2_16::xi#8 ← phi( atan2_16::@18/(signed word) atan2_16::xi#1 atan2_16::@20/(signed word) atan2_16::xi#2 )
  [159] (word) atan2_16::angle#13 ← phi( atan2_16::@18/(word) atan2_16::angle#2 atan2_16::@20/(word) atan2_16::angle#3 )
  [159] (signed word) atan2_16::yi#8 ← phi( atan2_16::@18/(signed word) atan2_16::yi#1 atan2_16::@20/(signed word) atan2_16::yi#2 )
  [160] (byte) atan2_16::i#1 ← ++ (byte) atan2_16::i#2
  [161] if((byte) atan2_16::i#1==(const byte) CORDIC_ITERATIONS_16#0-(byte) 1+(byte) 1) goto atan2_16::@12
  to:atan2_16::@10
atan2_16::@18: scope:[atan2_16]  from atan2_16::@17
  [162] (signed word) atan2_16::xi#1 ← (signed word) atan2_16::xi#3 + (signed word) atan2_16::yd#5
  [163] (signed word) atan2_16::yi#1 ← (signed word) atan2_16::yi#3 - (signed word) atan2_16::xd#5
  [164] (byte~) atan2_16::$23 ← (byte) atan2_16::i#2 << (byte) 1
  [165] (word) atan2_16::angle#2 ← (word) atan2_16::angle#12 + *((const word[CORDIC_ITERATIONS_16#0]) CORDIC_ATAN2_ANGLES_16#0 + (byte~) atan2_16::$23)
  to:atan2_16::@19
atan2_16::@14: scope:[atan2_16]  from atan2_16::@13
  [166] (signed word) atan2_16::xd#1 ← (signed word) atan2_16::xd#3 >> (signed byte) 2
  [167] (signed word) atan2_16::yd#1 ← (signed word) atan2_16::yd#3 >> (signed byte) 2
  [168] (byte) atan2_16::shift#1 ← (byte) atan2_16::shift#2 - (byte) 2
  to:atan2_16::@13
atan2_16::@4: scope:[atan2_16]  from atan2_16::@3
  [169] (signed word~) atan2_16::xi#13 ← (signed word) atan2_16::x#0
  to:atan2_16::@6
atan2_16::@1: scope:[atan2_16]  from atan2_16
  [170] (signed word~) atan2_16::yi#16 ← (signed word) atan2_16::y#0
  to:atan2_16::@3
init_dist_screen: scope:[init_dist_screen]  from main
  [171] phi()
  [172] call init_squares 
  to:init_dist_screen::@11
init_dist_screen::@11: scope:[init_dist_screen]  from init_dist_screen
  [173] (byte*) init_dist_screen::screen_bottomline#0 ← (byte*) init_dist_screen::screen#0 + (word)(number) $28*(number) $18
  to:init_dist_screen::@1
init_dist_screen::@1: scope:[init_dist_screen]  from init_dist_screen::@11 init_dist_screen::@7
  [174] (byte*) init_dist_screen::screen_bottomline#11 ← phi( init_dist_screen::@11/(byte*) init_dist_screen::screen_bottomline#0 init_dist_screen::@7/(byte*) init_dist_screen::screen_bottomline#1 )
  [174] (byte*) init_dist_screen::screen_topline#11 ← phi( init_dist_screen::@11/(byte*) init_dist_screen::screen#0 init_dist_screen::@7/(byte*) init_dist_screen::screen_topline#1 )
  [174] (byte) init_dist_screen::y#10 ← phi( init_dist_screen::@11/(byte) 0 init_dist_screen::@7/(byte) init_dist_screen::y#1 )
  [175] (byte) init_dist_screen::y2#0 ← (byte) init_dist_screen::y#10 << (byte) 1
  [176] if((byte) init_dist_screen::y2#0>=(byte) $18) goto init_dist_screen::@2
  to:init_dist_screen::@3
init_dist_screen::@3: scope:[init_dist_screen]  from init_dist_screen::@1
  [177] (byte~) init_dist_screen::$5 ← (byte) $18 - (byte) init_dist_screen::y2#0
  to:init_dist_screen::@4
init_dist_screen::@4: scope:[init_dist_screen]  from init_dist_screen::@2 init_dist_screen::@3
  [178] (byte) init_dist_screen::yd#0 ← phi( init_dist_screen::@2/(byte~) init_dist_screen::$7 init_dist_screen::@3/(byte~) init_dist_screen::$5 )
  [179] (byte) sqr::val#0 ← (byte) init_dist_screen::yd#0
  [180] call sqr 
  [181] (word) sqr::return#2 ← (word) sqr::return#0
  to:init_dist_screen::@12
init_dist_screen::@12: scope:[init_dist_screen]  from init_dist_screen::@4
  [182] (word) init_dist_screen::yds#0 ← (word) sqr::return#2
  to:init_dist_screen::@6
init_dist_screen::@6: scope:[init_dist_screen]  from init_dist_screen::@12 init_dist_screen::@5
  [183] (byte) init_dist_screen::xb#10 ← phi( init_dist_screen::@5/(byte) init_dist_screen::xb#1 init_dist_screen::@12/(byte) $27 )
  [183] (byte) init_dist_screen::x#10 ← phi( init_dist_screen::@5/(byte) init_dist_screen::x#1 init_dist_screen::@12/(byte) 0 )
  [184] (byte) init_dist_screen::x2#0 ← (byte) init_dist_screen::x#10 << (byte) 1
  [185] if((byte) init_dist_screen::x2#0>=(byte) $27) goto init_dist_screen::@8
  to:init_dist_screen::@9
init_dist_screen::@9: scope:[init_dist_screen]  from init_dist_screen::@6
  [186] (byte~) init_dist_screen::$14 ← (byte) $27 - (byte) init_dist_screen::x2#0
  to:init_dist_screen::@10
init_dist_screen::@10: scope:[init_dist_screen]  from init_dist_screen::@8 init_dist_screen::@9
  [187] (byte) init_dist_screen::xd#0 ← phi( init_dist_screen::@8/(byte~) init_dist_screen::$16 init_dist_screen::@9/(byte~) init_dist_screen::$14 )
  [188] (byte) sqr::val#1 ← (byte) init_dist_screen::xd#0
  [189] call sqr 
  [190] (word) sqr::return#3 ← (word) sqr::return#0
  to:init_dist_screen::@13
init_dist_screen::@13: scope:[init_dist_screen]  from init_dist_screen::@10
  [191] (word) init_dist_screen::xds#0 ← (word) sqr::return#3
  [192] (word) init_dist_screen::ds#0 ← (word) init_dist_screen::xds#0 + (word) init_dist_screen::yds#0
  [193] (word) sqrt::val#0 ← (word) init_dist_screen::ds#0
  [194] call sqrt 
  [195] (byte) sqrt::return#2 ← (byte) sqrt::return#0
  to:init_dist_screen::@14
init_dist_screen::@14: scope:[init_dist_screen]  from init_dist_screen::@13
  [196] (byte) init_dist_screen::d#0 ← (byte) sqrt::return#2
  [197] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::x#10) ← (byte) init_dist_screen::d#0
  [198] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::x#10) ← (byte) init_dist_screen::d#0
  [199] *((byte*) init_dist_screen::screen_topline#11 + (byte) init_dist_screen::xb#10) ← (byte) init_dist_screen::d#0
  [200] *((byte*) init_dist_screen::screen_bottomline#11 + (byte) init_dist_screen::xb#10) ← (byte) init_dist_screen::d#0
  [201] (byte) init_dist_screen::x#1 ← ++ (byte) init_dist_screen::x#10
  [202] (byte) init_dist_screen::xb#1 ← -- (byte) init_dist_screen::xb#10
  to:init_dist_screen::@5
init_dist_screen::@5: scope:[init_dist_screen]  from init_dist_screen::@14
  [203] if((byte) init_dist_screen::x#1<(byte) $13+(byte) 1) goto init_dist_screen::@6
  to:init_dist_screen::@7
init_dist_screen::@7: scope:[init_dist_screen]  from init_dist_screen::@5
  [204] (byte*) init_dist_screen::screen_topline#1 ← (byte*) init_dist_screen::screen_topline#11 + (byte) $28
  [205] (byte*) init_dist_screen::screen_bottomline#1 ← (byte*) init_dist_screen::screen_bottomline#11 - (byte) $28
  [206] (byte) init_dist_screen::y#1 ← ++ (byte) init_dist_screen::y#10
  [207] if((byte) init_dist_screen::y#1!=(byte) $d) goto init_dist_screen::@1
  to:init_dist_screen::@return
init_dist_screen::@return: scope:[init_dist_screen]  from init_dist_screen::@7
  [208] return 
  to:@return
init_dist_screen::@8: scope:[init_dist_screen]  from init_dist_screen::@6
  [209] (byte~) init_dist_screen::$16 ← (byte) init_dist_screen::x2#0 - (byte) $27
  to:init_dist_screen::@10
init_dist_screen::@2: scope:[init_dist_screen]  from init_dist_screen::@1
  [210] (byte~) init_dist_screen::$7 ← (byte) init_dist_screen::y2#0 - (byte) $18
  to:init_dist_screen::@4
sqrt: scope:[sqrt]  from init_dist_screen::@13
  [211] (word) bsearch16u::key#0 ← (word) sqrt::val#0
  [212] (word*) bsearch16u::items#1 ← (word*)(void*) SQUARES#1
  [213] call bsearch16u 
  [214] (word*) bsearch16u::return#3 ← (word*) bsearch16u::return#1
  to:sqrt::@1
sqrt::@1: scope:[sqrt]  from sqrt
  [215] (word*) sqrt::found#0 ← (word*) bsearch16u::return#3
  [216] (word~) sqrt::$3 ← (word*) sqrt::found#0 - (word*)(void*) SQUARES#1
  [217] (word~) sqrt::$1 ← (word~) sqrt::$3 >> (byte) 1
  [218] (byte) sqrt::return#0 ← (byte)(word~) sqrt::$1
  to:sqrt::@return
sqrt::@return: scope:[sqrt]  from sqrt::@1
  [219] return 
  to:@return
bsearch16u: scope:[bsearch16u]  from sqrt
  [220] phi()
  to:bsearch16u::@4
bsearch16u::@4: scope:[bsearch16u]  from bsearch16u bsearch16u::@9
  [221] (word*) bsearch16u::items#10 ← phi( bsearch16u::@9/(word*~) bsearch16u::items#16 bsearch16u/(word*) bsearch16u::items#1 )
  [221] (byte) bsearch16u::num#10 ← phi( bsearch16u::@9/(byte) bsearch16u::num#0 bsearch16u/(const byte) NUM_SQUARES#3 )
  [222] (byte~) bsearch16u::$6 ← (byte) bsearch16u::num#10 >> (byte) 1
  [223] (byte~) bsearch16u::$16 ← (byte~) bsearch16u::$6 << (byte) 1
  [224] (word*) bsearch16u::pivot#0 ← (word*) bsearch16u::items#10 + (byte~) bsearch16u::$16
  [225] (signed word) bsearch16u::result#0 ← (signed word)(word) bsearch16u::key#0 - (signed word)*((word*) bsearch16u::pivot#0)
  [226] if((signed word) bsearch16u::result#0!=(signed byte) 0) goto bsearch16u::@6
  to:bsearch16u::@return
bsearch16u::@return: scope:[bsearch16u]  from bsearch16u::@2 bsearch16u::@4
  [227] (word*) bsearch16u::return#1 ← phi( bsearch16u::@4/(word*) bsearch16u::pivot#0 bsearch16u::@2/(word*) bsearch16u::return#2 )
  [228] return 
  to:@return
bsearch16u::@6: scope:[bsearch16u]  from bsearch16u::@4
  [229] if((signed word) bsearch16u::result#0<=(signed byte) 0) goto bsearch16u::@10
  to:bsearch16u::@8
bsearch16u::@8: scope:[bsearch16u]  from bsearch16u::@6
  [230] (word*) bsearch16u::items#0 ← (word*) bsearch16u::pivot#0 + (byte) 1*(const byte) SIZEOF_WORD
  [231] (byte) bsearch16u::num#1 ← -- (byte) bsearch16u::num#10
  to:bsearch16u::@7
bsearch16u::@7: scope:[bsearch16u]  from bsearch16u::@10 bsearch16u::@8
  [232] (word*) bsearch16u::items#11 ← phi( bsearch16u::@8/(word*) bsearch16u::items#0 bsearch16u::@10/(word*~) bsearch16u::items#19 )
  [232] (byte) bsearch16u::num#5 ← phi( bsearch16u::@8/(byte) bsearch16u::num#1 bsearch16u::@10/(byte) bsearch16u::num#10 )
  [233] (byte) bsearch16u::num#0 ← (byte) bsearch16u::num#5 >> (byte) 1
  to:bsearch16u::@3
bsearch16u::@3: scope:[bsearch16u]  from bsearch16u::@7
  [234] if((byte) bsearch16u::num#0>(byte) 0) goto bsearch16u::@9
  to:bsearch16u::@5
bsearch16u::@5: scope:[bsearch16u]  from bsearch16u::@3
  [235] if(*((word*) bsearch16u::items#11)<=(word) bsearch16u::key#0) goto bsearch16u::@2
  to:bsearch16u::@1
bsearch16u::@1: scope:[bsearch16u]  from bsearch16u::@5
  [236] (word*~) bsearch16u::$2 ← (word*) bsearch16u::items#11 - (byte) 1*(const byte) SIZEOF_WORD
  to:bsearch16u::@2
bsearch16u::@2: scope:[bsearch16u]  from bsearch16u::@1 bsearch16u::@5
  [237] (word*) bsearch16u::return#2 ← phi( bsearch16u::@5/(word*) bsearch16u::items#11 bsearch16u::@1/(word*~) bsearch16u::$2 )
  to:bsearch16u::@return
bsearch16u::@9: scope:[bsearch16u]  from bsearch16u::@3
  [238] (word*~) bsearch16u::items#16 ← (word*) bsearch16u::items#11
  to:bsearch16u::@4
bsearch16u::@10: scope:[bsearch16u]  from bsearch16u::@6
  [239] (word*~) bsearch16u::items#19 ← (word*) bsearch16u::items#10
  to:bsearch16u::@7
sqr: scope:[sqr]  from init_dist_screen::@10 init_dist_screen::@4
  [240] (byte) sqr::val#2 ← phi( init_dist_screen::@10/(byte) sqr::val#1 init_dist_screen::@4/(byte) sqr::val#0 )
  [241] (byte~) sqr::$0 ← (byte) sqr::val#2 << (byte) 1
  [242] (word) sqr::return#0 ← *((word*)(void*) SQUARES#1 + (byte~) sqr::$0)
  to:sqr::@return
sqr::@return: scope:[sqr]  from sqr
  [243] return 
  to:@return
init_squares: scope:[init_squares]  from init_dist_screen
  [244] phi()
  [245] call malloc 
  to:init_squares::@2
init_squares::@2: scope:[init_squares]  from init_squares
  [246] (void*) SQUARES#1 ← (void*)(byte*) malloc::mem#0
  [247] (word*) init_squares::squares#0 ← (word*)(void*) SQUARES#1
  to:init_squares::@1
init_squares::@1: scope:[init_squares]  from init_squares::@1 init_squares::@2
  [248] (byte) init_squares::i#2 ← phi( init_squares::@1/(byte) init_squares::i#1 init_squares::@2/(byte) 0 )
  [248] (word*) init_squares::squares#2 ← phi( init_squares::@1/(word*) init_squares::squares#1 init_squares::@2/(word*) init_squares::squares#0 )
  [248] (word) init_squares::sqr#2 ← phi( init_squares::@1/(word) init_squares::sqr#1 init_squares::@2/(byte) 0 )
  [249] *((word*) init_squares::squares#2) ← (word) init_squares::sqr#2
  [250] (word*) init_squares::squares#1 ← (word*) init_squares::squares#2 + (const byte) SIZEOF_WORD
  [251] (byte~) init_squares::$3 ← (byte) init_squares::i#2 << (byte) 1
  [252] (byte~) init_squares::$4 ← (byte~) init_squares::$3 + (byte) 1
  [253] (word) init_squares::sqr#1 ← (word) init_squares::sqr#2 + (byte~) init_squares::$4
  [254] (byte) init_squares::i#1 ← ++ (byte) init_squares::i#2
  [255] if((byte) init_squares::i#1!=(const byte) NUM_SQUARES#3-(byte) 1+(byte) 1) goto init_squares::@1
  to:init_squares::@return
init_squares::@return: scope:[init_squares]  from init_squares::@1
  [256] return 
  to:@return
