mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-06-29 09:29:31 +00:00
6953 lines
452 KiB
Plaintext
6953 lines
452 KiB
Plaintext
Inlined call call __init
|
|
|
|
CONTROL FLOW GRAPH SSA
|
|
|
|
void* malloc(word malloc::size)
|
|
malloc: scope:[malloc] from __start::@2 __start::__init1 init_squares
|
|
malloc::size#3 = phi( __start::@2/malloc::size#2, __start::__init1/malloc::size#1, init_squares/malloc::size#0 )
|
|
heap_head#13 = phi( __start::@2/heap_head#9, __start::__init1/heap_head#8, init_squares/heap_head#25 )
|
|
malloc::$0 = heap_head#13 - malloc::size#3
|
|
malloc::mem#0 = malloc::$0
|
|
heap_head#0 = malloc::mem#0
|
|
malloc::return#0 = ((void*)) malloc::mem#0
|
|
to:malloc::@return
|
|
malloc::@return: scope:[malloc] from malloc
|
|
heap_head#14 = phi( malloc/heap_head#0 )
|
|
malloc::return#5 = phi( malloc/malloc::return#0 )
|
|
malloc::return#1 = malloc::return#5
|
|
heap_head#1 = heap_head#14
|
|
return
|
|
to:@return
|
|
|
|
word* bsearch16u(word bsearch16u::key , word* bsearch16u::items , byte bsearch16u::num)
|
|
bsearch16u: scope:[bsearch16u] from sqrt
|
|
bsearch16u::key#4 = phi( sqrt/bsearch16u::key#0 )
|
|
bsearch16u::items#7 = phi( sqrt/bsearch16u::items#1 )
|
|
bsearch16u::num#7 = phi( sqrt/bsearch16u::num#2 )
|
|
to:bsearch16u::@4
|
|
bsearch16u::@4: scope:[bsearch16u] from bsearch16u bsearch16u::@8
|
|
bsearch16u::key#3 = phi( bsearch16u/bsearch16u::key#4, bsearch16u::@8/bsearch16u::key#5 )
|
|
bsearch16u::items#6 = phi( bsearch16u/bsearch16u::items#7, bsearch16u::@8/bsearch16u::items#8 )
|
|
bsearch16u::num#3 = phi( bsearch16u/bsearch16u::num#7, bsearch16u::@8/bsearch16u::num#0 )
|
|
bsearch16u::$5 = bsearch16u::num#3 > 0
|
|
if(bsearch16u::$5) goto bsearch16u::@5
|
|
to:bsearch16u::@6
|
|
bsearch16u::@5: scope:[bsearch16u] from bsearch16u::@4
|
|
bsearch16u::key#1 = phi( bsearch16u::@4/bsearch16u::key#3 )
|
|
bsearch16u::items#2 = phi( bsearch16u::@4/bsearch16u::items#6 )
|
|
bsearch16u::num#4 = phi( bsearch16u::@4/bsearch16u::num#3 )
|
|
bsearch16u::$6 = bsearch16u::num#4 >> 1
|
|
bsearch16u::$14 = bsearch16u::$6 * SIZEOF_WORD
|
|
bsearch16u::$7 = bsearch16u::items#2 + bsearch16u::$14
|
|
bsearch16u::pivot#0 = bsearch16u::$7
|
|
bsearch16u::$17 = (signed word)bsearch16u::key#1
|
|
bsearch16u::$18 = (signed word)*bsearch16u::pivot#0
|
|
bsearch16u::$8 = bsearch16u::$17 - bsearch16u::$18
|
|
bsearch16u::result#0 = bsearch16u::$8
|
|
bsearch16u::$9 = bsearch16u::result#0 == 0
|
|
bsearch16u::$10 = ! bsearch16u::$9
|
|
if(bsearch16u::$10) goto bsearch16u::@7
|
|
to:bsearch16u::@9
|
|
bsearch16u::@6: scope:[bsearch16u] from bsearch16u::@4
|
|
bsearch16u::key#2 = phi( bsearch16u::@4/bsearch16u::key#3 )
|
|
bsearch16u::items#3 = phi( bsearch16u::@4/bsearch16u::items#6 )
|
|
bsearch16u::$0 = *bsearch16u::items#3 <= bsearch16u::key#2
|
|
if(bsearch16u::$0) goto bsearch16u::@1
|
|
to:bsearch16u::@2
|
|
bsearch16u::@7: scope:[bsearch16u] from bsearch16u::@5
|
|
bsearch16u::key#7 = phi( bsearch16u::@5/bsearch16u::key#1 )
|
|
bsearch16u::items#9 = phi( bsearch16u::@5/bsearch16u::items#2 )
|
|
bsearch16u::pivot#3 = phi( bsearch16u::@5/bsearch16u::pivot#0 )
|
|
bsearch16u::num#8 = phi( bsearch16u::@5/bsearch16u::num#4 )
|
|
bsearch16u::result#1 = phi( bsearch16u::@5/bsearch16u::result#0 )
|
|
bsearch16u::$11 = bsearch16u::result#1 > 0
|
|
bsearch16u::$12 = ! bsearch16u::$11
|
|
if(bsearch16u::$12) goto bsearch16u::@8
|
|
to:bsearch16u::@10
|
|
bsearch16u::@9: scope:[bsearch16u] from bsearch16u::@5
|
|
bsearch16u::pivot#1 = phi( bsearch16u::@5/bsearch16u::pivot#0 )
|
|
bsearch16u::return#0 = bsearch16u::pivot#1
|
|
to:bsearch16u::@return
|
|
bsearch16u::@return: scope:[bsearch16u] from bsearch16u::@3 bsearch16u::@9
|
|
bsearch16u::return#4 = phi( bsearch16u::@3/bsearch16u::return#2, bsearch16u::@9/bsearch16u::return#0 )
|
|
bsearch16u::return#1 = bsearch16u::return#4
|
|
return
|
|
to:@return
|
|
bsearch16u::@8: scope:[bsearch16u] from bsearch16u::@10 bsearch16u::@7
|
|
bsearch16u::key#5 = phi( bsearch16u::@10/bsearch16u::key#6, bsearch16u::@7/bsearch16u::key#7 )
|
|
bsearch16u::items#8 = phi( bsearch16u::@10/bsearch16u::items#0, bsearch16u::@7/bsearch16u::items#9 )
|
|
bsearch16u::num#5 = phi( bsearch16u::@10/bsearch16u::num#1, bsearch16u::@7/bsearch16u::num#8 )
|
|
bsearch16u::num#0 = bsearch16u::num#5 >> 1
|
|
to:bsearch16u::@4
|
|
bsearch16u::@10: scope:[bsearch16u] from bsearch16u::@7
|
|
bsearch16u::key#6 = phi( bsearch16u::@7/bsearch16u::key#7 )
|
|
bsearch16u::num#6 = phi( bsearch16u::@7/bsearch16u::num#8 )
|
|
bsearch16u::pivot#2 = phi( bsearch16u::@7/bsearch16u::pivot#3 )
|
|
bsearch16u::$15 = 1 * SIZEOF_WORD
|
|
bsearch16u::$13 = bsearch16u::pivot#2 + bsearch16u::$15
|
|
bsearch16u::items#0 = bsearch16u::$13
|
|
bsearch16u::num#1 = -- bsearch16u::num#6
|
|
to:bsearch16u::@8
|
|
bsearch16u::@1: scope:[bsearch16u] from bsearch16u::@6
|
|
bsearch16u::items#4 = phi( bsearch16u::@6/bsearch16u::items#3 )
|
|
bsearch16u::$3 = bsearch16u::items#4
|
|
to:bsearch16u::@3
|
|
bsearch16u::@2: scope:[bsearch16u] from bsearch16u::@6
|
|
bsearch16u::items#5 = phi( bsearch16u::@6/bsearch16u::items#3 )
|
|
bsearch16u::$16 = 1 * SIZEOF_WORD
|
|
bsearch16u::$1 = bsearch16u::items#5 - bsearch16u::$16
|
|
bsearch16u::$2 = bsearch16u::$1
|
|
to:bsearch16u::@3
|
|
bsearch16u::@3: scope:[bsearch16u] from bsearch16u::@1 bsearch16u::@2
|
|
bsearch16u::$4 = phi( bsearch16u::@1/bsearch16u::$3, bsearch16u::@2/bsearch16u::$2 )
|
|
bsearch16u::return#2 = bsearch16u::$4
|
|
to:bsearch16u::@return
|
|
|
|
void init_squares()
|
|
init_squares: scope:[init_squares] from init_dist_screen
|
|
heap_head#25 = phi( init_dist_screen/heap_head#30 )
|
|
NUM_SQUARES#7 = phi( init_dist_screen/NUM_SQUARES#2 )
|
|
init_squares::$0 = NUM_SQUARES#7 * SIZEOF_WORD
|
|
malloc::size#0 = init_squares::$0
|
|
call malloc
|
|
malloc::return#2 = malloc::return#1
|
|
to:init_squares::@3
|
|
init_squares::@3: scope:[init_squares] from init_squares
|
|
NUM_SQUARES#16 = phi( init_squares/NUM_SQUARES#7 )
|
|
heap_head#15 = phi( init_squares/heap_head#1 )
|
|
malloc::return#6 = phi( init_squares/malloc::return#2 )
|
|
init_squares::$1 = malloc::return#6
|
|
heap_head#2 = heap_head#15
|
|
SQUARES#0 = ((word*)) init_squares::$1
|
|
init_squares::squares#0 = SQUARES#0
|
|
init_squares::sqr#0 = 0
|
|
init_squares::i#0 = 0
|
|
to:init_squares::@1
|
|
init_squares::@1: scope:[init_squares] from init_squares::@2 init_squares::@3
|
|
SQUARES#19 = phi( init_squares::@2/SQUARES#29, init_squares::@3/SQUARES#0 )
|
|
heap_head#26 = phi( init_squares::@2/heap_head#33, init_squares::@3/heap_head#2 )
|
|
init_squares::squares#3 = phi( init_squares::@2/init_squares::squares#1, init_squares::@3/init_squares::squares#0 )
|
|
init_squares::sqr#3 = phi( init_squares::@2/init_squares::sqr#1, init_squares::@3/init_squares::sqr#0 )
|
|
NUM_SQUARES#8 = phi( init_squares::@2/NUM_SQUARES#15, init_squares::@3/NUM_SQUARES#16 )
|
|
init_squares::i#2 = phi( init_squares::@2/init_squares::i#1, init_squares::@3/init_squares::i#0 )
|
|
init_squares::$2 = init_squares::i#2 < NUM_SQUARES#8
|
|
if(init_squares::$2) goto init_squares::@2
|
|
to:init_squares::@return
|
|
init_squares::@2: scope:[init_squares] from init_squares::@1
|
|
SQUARES#29 = phi( init_squares::@1/SQUARES#19 )
|
|
heap_head#33 = phi( init_squares::@1/heap_head#26 )
|
|
NUM_SQUARES#15 = phi( init_squares::@1/NUM_SQUARES#8 )
|
|
init_squares::i#3 = phi( init_squares::@1/init_squares::i#2 )
|
|
init_squares::squares#2 = phi( init_squares::@1/init_squares::squares#3 )
|
|
init_squares::sqr#2 = phi( init_squares::@1/init_squares::sqr#3 )
|
|
*init_squares::squares#2 = init_squares::sqr#2
|
|
init_squares::squares#1 = init_squares::squares#2 + SIZEOF_WORD
|
|
init_squares::$3 = init_squares::i#3 * 2
|
|
init_squares::$4 = init_squares::$3 + 1
|
|
init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4
|
|
init_squares::i#1 = ++ init_squares::i#3
|
|
to:init_squares::@1
|
|
init_squares::@return: scope:[init_squares] from init_squares::@1
|
|
SQUARES#9 = phi( init_squares::@1/SQUARES#19 )
|
|
heap_head#16 = phi( init_squares::@1/heap_head#26 )
|
|
heap_head#3 = heap_head#16
|
|
SQUARES#1 = SQUARES#9
|
|
return
|
|
to:@return
|
|
|
|
word sqr(byte sqr::val)
|
|
sqr: scope:[sqr] from init_dist_screen::@10 init_dist_screen::@4
|
|
SQUARES#10 = phi( init_dist_screen::@10/SQUARES#20, init_dist_screen::@4/SQUARES#21 )
|
|
sqr::val#2 = phi( init_dist_screen::@10/sqr::val#1, init_dist_screen::@4/sqr::val#0 )
|
|
sqr::$0 = sqr::val#2 * SIZEOF_WORD
|
|
sqr::return#0 = SQUARES#10[sqr::$0]
|
|
to:sqr::@return
|
|
sqr::@return: scope:[sqr] from sqr
|
|
sqr::return#4 = phi( sqr/sqr::return#0 )
|
|
sqr::return#1 = sqr::return#4
|
|
return
|
|
to:@return
|
|
|
|
byte sqrt(word sqrt::val)
|
|
sqrt: scope:[sqrt] from init_dist_screen::@13
|
|
NUM_SQUARES#9 = phi( init_dist_screen::@13/NUM_SQUARES#17 )
|
|
SQUARES#11 = phi( init_dist_screen::@13/SQUARES#22 )
|
|
sqrt::val#1 = phi( init_dist_screen::@13/sqrt::val#0 )
|
|
bsearch16u::key#0 = sqrt::val#1
|
|
bsearch16u::items#1 = SQUARES#11
|
|
bsearch16u::num#2 = NUM_SQUARES#9
|
|
call bsearch16u
|
|
bsearch16u::return#3 = bsearch16u::return#1
|
|
to:sqrt::@1
|
|
sqrt::@1: scope:[sqrt] from sqrt
|
|
SQUARES#12 = phi( sqrt/SQUARES#11 )
|
|
bsearch16u::return#5 = phi( sqrt/bsearch16u::return#3 )
|
|
sqrt::$0 = bsearch16u::return#5
|
|
sqrt::found#0 = sqrt::$0
|
|
sqrt::$2 = sqrt::found#0 - SQUARES#12
|
|
sqrt::$1 = sqrt::$2 / SIZEOF_WORD
|
|
sqrt::sq#0 = (byte)sqrt::$1
|
|
sqrt::return#0 = sqrt::sq#0
|
|
to:sqrt::@return
|
|
sqrt::@return: scope:[sqrt] from sqrt::@1
|
|
sqrt::return#3 = phi( sqrt::@1/sqrt::return#0 )
|
|
sqrt::return#1 = sqrt::return#3
|
|
return
|
|
to:@return
|
|
|
|
word atan2_16(signed word atan2_16::x , signed word atan2_16::y)
|
|
atan2_16: scope:[atan2_16] from init_angle_screen::@3
|
|
atan2_16::x#9 = phi( init_angle_screen::@3/atan2_16::x#0 )
|
|
atan2_16::y#1 = phi( init_angle_screen::@3/atan2_16::y#0 )
|
|
atan2_16::$0 = atan2_16::y#1 >= 0
|
|
if(atan2_16::$0) goto atan2_16::@1
|
|
to:atan2_16::@2
|
|
atan2_16::@1: scope:[atan2_16] from atan2_16
|
|
atan2_16::x#5 = phi( atan2_16/atan2_16::x#9 )
|
|
atan2_16::y#2 = phi( atan2_16/atan2_16::y#1 )
|
|
atan2_16::$3 = atan2_16::y#2
|
|
to:atan2_16::@3
|
|
atan2_16::@2: scope:[atan2_16] from atan2_16
|
|
atan2_16::x#6 = phi( atan2_16/atan2_16::x#9 )
|
|
atan2_16::y#3 = phi( atan2_16/atan2_16::y#1 )
|
|
atan2_16::$1 = - atan2_16::y#3
|
|
atan2_16::$2 = atan2_16::$1
|
|
to:atan2_16::@3
|
|
atan2_16::@3: scope:[atan2_16] from atan2_16::@1 atan2_16::@2
|
|
atan2_16::y#15 = phi( atan2_16::@1/atan2_16::y#2, atan2_16::@2/atan2_16::y#3 )
|
|
atan2_16::x#1 = phi( atan2_16::@1/atan2_16::x#5, atan2_16::@2/atan2_16::x#6 )
|
|
atan2_16::$4 = phi( atan2_16::@1/atan2_16::$3, atan2_16::@2/atan2_16::$2 )
|
|
atan2_16::yi#0 = atan2_16::$4
|
|
atan2_16::$5 = atan2_16::x#1 >= 0
|
|
if(atan2_16::$5) goto atan2_16::@4
|
|
to:atan2_16::@5
|
|
atan2_16::@4: scope:[atan2_16] from atan2_16::@3
|
|
atan2_16::y#12 = phi( atan2_16::@3/atan2_16::y#15 )
|
|
atan2_16::yi#12 = phi( atan2_16::@3/atan2_16::yi#0 )
|
|
atan2_16::x#2 = phi( atan2_16::@3/atan2_16::x#1 )
|
|
atan2_16::$8 = atan2_16::x#2
|
|
to:atan2_16::@6
|
|
atan2_16::@5: scope:[atan2_16] from atan2_16::@3
|
|
atan2_16::y#13 = phi( atan2_16::@3/atan2_16::y#15 )
|
|
atan2_16::yi#13 = phi( atan2_16::@3/atan2_16::yi#0 )
|
|
atan2_16::x#3 = phi( atan2_16::@3/atan2_16::x#1 )
|
|
atan2_16::$6 = - atan2_16::x#3
|
|
atan2_16::$7 = atan2_16::$6
|
|
to:atan2_16::@6
|
|
atan2_16::@6: scope:[atan2_16] from atan2_16::@4 atan2_16::@5
|
|
atan2_16::y#9 = phi( atan2_16::@4/atan2_16::y#12, atan2_16::@5/atan2_16::y#13 )
|
|
atan2_16::x#10 = phi( atan2_16::@4/atan2_16::x#2, atan2_16::@5/atan2_16::x#3 )
|
|
atan2_16::yi#9 = phi( atan2_16::@4/atan2_16::yi#12, atan2_16::@5/atan2_16::yi#13 )
|
|
atan2_16::$9 = phi( atan2_16::@4/atan2_16::$8, atan2_16::@5/atan2_16::$7 )
|
|
atan2_16::xi#0 = atan2_16::$9
|
|
atan2_16::angle#0 = 0
|
|
atan2_16::i#0 = 0
|
|
to:atan2_16::@10
|
|
atan2_16::@10: scope:[atan2_16] from atan2_16::@19 atan2_16::@6
|
|
atan2_16::y#7 = phi( atan2_16::@19/atan2_16::y#8, atan2_16::@6/atan2_16::y#9 )
|
|
atan2_16::x#7 = phi( atan2_16::@19/atan2_16::x#8, atan2_16::@6/atan2_16::x#10 )
|
|
atan2_16::angle#12 = phi( atan2_16::@19/atan2_16::angle#13, atan2_16::@6/atan2_16::angle#0 )
|
|
atan2_16::i#6 = phi( atan2_16::@19/atan2_16::i#1, atan2_16::@6/atan2_16::i#0 )
|
|
atan2_16::xi#6 = phi( atan2_16::@19/atan2_16::xi#8, atan2_16::@6/atan2_16::xi#0 )
|
|
atan2_16::yi#3 = phi( atan2_16::@19/atan2_16::yi#8, atan2_16::@6/atan2_16::yi#9 )
|
|
atan2_16::$16 = atan2_16::yi#3 == 0
|
|
atan2_16::$17 = ! atan2_16::$16
|
|
if(atan2_16::$17) goto atan2_16::@11
|
|
to:atan2_16::@12
|
|
atan2_16::@11: scope:[atan2_16] from atan2_16::@10
|
|
atan2_16::y#19 = phi( atan2_16::@10/atan2_16::y#7 )
|
|
atan2_16::x#17 = phi( atan2_16::@10/atan2_16::x#7 )
|
|
atan2_16::angle#19 = phi( atan2_16::@10/atan2_16::angle#12 )
|
|
atan2_16::i#2 = phi( atan2_16::@10/atan2_16::i#6 )
|
|
atan2_16::yi#4 = phi( atan2_16::@10/atan2_16::yi#3 )
|
|
atan2_16::xi#3 = phi( atan2_16::@10/atan2_16::xi#6 )
|
|
atan2_16::xd#0 = atan2_16::xi#3
|
|
atan2_16::yd#0 = atan2_16::yi#4
|
|
atan2_16::shift#0 = atan2_16::i#2
|
|
to:atan2_16::@13
|
|
atan2_16::@12: scope:[atan2_16] from atan2_16::@10 atan2_16::@19
|
|
atan2_16::y#5 = phi( atan2_16::@10/atan2_16::y#7, atan2_16::@19/atan2_16::y#8 )
|
|
atan2_16::x#4 = phi( atan2_16::@10/atan2_16::x#7, atan2_16::@19/atan2_16::x#8 )
|
|
atan2_16::angle#6 = phi( atan2_16::@10/atan2_16::angle#12, atan2_16::@19/atan2_16::angle#13 )
|
|
atan2_16::angle#1 = atan2_16::angle#6 / 2
|
|
atan2_16::$10 = atan2_16::x#4 < 0
|
|
atan2_16::$11 = ! atan2_16::$10
|
|
if(atan2_16::$11) goto atan2_16::@7
|
|
to:atan2_16::@21
|
|
atan2_16::@13: scope:[atan2_16] from atan2_16::@11 atan2_16::@14
|
|
atan2_16::y#18 = phi( atan2_16::@11/atan2_16::y#19, atan2_16::@14/atan2_16::y#20 )
|
|
atan2_16::x#16 = phi( atan2_16::@11/atan2_16::x#17, atan2_16::@14/atan2_16::x#18 )
|
|
atan2_16::angle#18 = phi( atan2_16::@11/atan2_16::angle#19, atan2_16::@14/atan2_16::angle#20 )
|
|
atan2_16::i#10 = phi( atan2_16::@11/atan2_16::i#2, atan2_16::@14/atan2_16::i#11 )
|
|
atan2_16::xi#11 = phi( atan2_16::@11/atan2_16::xi#3, atan2_16::@14/atan2_16::xi#12 )
|
|
atan2_16::yi#14 = phi( atan2_16::@11/atan2_16::yi#4, atan2_16::@14/atan2_16::yi#15 )
|
|
atan2_16::yd#7 = phi( atan2_16::@11/atan2_16::yd#0, atan2_16::@14/atan2_16::yd#1 )
|
|
atan2_16::xd#7 = phi( atan2_16::@11/atan2_16::xd#0, atan2_16::@14/atan2_16::xd#1 )
|
|
atan2_16::shift#2 = phi( atan2_16::@11/atan2_16::shift#0, atan2_16::@14/atan2_16::shift#1 )
|
|
atan2_16::$18 = atan2_16::shift#2 >= 2
|
|
if(atan2_16::$18) goto atan2_16::@14
|
|
to:atan2_16::@15
|
|
atan2_16::@14: scope:[atan2_16] from atan2_16::@13
|
|
atan2_16::y#20 = phi( atan2_16::@13/atan2_16::y#18 )
|
|
atan2_16::x#18 = phi( atan2_16::@13/atan2_16::x#16 )
|
|
atan2_16::angle#20 = phi( atan2_16::@13/atan2_16::angle#18 )
|
|
atan2_16::i#11 = phi( atan2_16::@13/atan2_16::i#10 )
|
|
atan2_16::xi#12 = phi( atan2_16::@13/atan2_16::xi#11 )
|
|
atan2_16::yi#15 = phi( atan2_16::@13/atan2_16::yi#14 )
|
|
atan2_16::shift#3 = phi( atan2_16::@13/atan2_16::shift#2 )
|
|
atan2_16::yd#3 = phi( atan2_16::@13/atan2_16::yd#7 )
|
|
atan2_16::xd#3 = phi( atan2_16::@13/atan2_16::xd#7 )
|
|
atan2_16::xd#1 = atan2_16::xd#3 >> 2
|
|
atan2_16::yd#1 = atan2_16::yd#3 >> 2
|
|
atan2_16::shift#1 = atan2_16::shift#3 - 2
|
|
to:atan2_16::@13
|
|
atan2_16::@15: scope:[atan2_16] from atan2_16::@13
|
|
atan2_16::y#16 = phi( atan2_16::@13/atan2_16::y#18 )
|
|
atan2_16::x#14 = phi( atan2_16::@13/atan2_16::x#16 )
|
|
atan2_16::angle#16 = phi( atan2_16::@13/atan2_16::angle#18 )
|
|
atan2_16::i#8 = phi( atan2_16::@13/atan2_16::i#10 )
|
|
atan2_16::xi#9 = phi( atan2_16::@13/atan2_16::xi#11 )
|
|
atan2_16::yd#8 = phi( atan2_16::@13/atan2_16::yd#7 )
|
|
atan2_16::xd#8 = phi( atan2_16::@13/atan2_16::xd#7 )
|
|
atan2_16::yi#10 = phi( atan2_16::@13/atan2_16::yi#14 )
|
|
atan2_16::shift#4 = phi( atan2_16::@13/atan2_16::shift#2 )
|
|
atan2_16::$24 = 0 != atan2_16::shift#4
|
|
atan2_16::$19 = ! atan2_16::$24
|
|
if(atan2_16::$19) goto atan2_16::@17
|
|
to:atan2_16::@16
|
|
atan2_16::@17: scope:[atan2_16] from atan2_16::@15 atan2_16::@16
|
|
atan2_16::y#14 = phi( atan2_16::@15/atan2_16::y#16, atan2_16::@16/atan2_16::y#17 )
|
|
atan2_16::x#13 = phi( atan2_16::@15/atan2_16::x#14, atan2_16::@16/atan2_16::x#15 )
|
|
atan2_16::angle#14 = phi( atan2_16::@15/atan2_16::angle#16, atan2_16::@16/atan2_16::angle#17 )
|
|
atan2_16::i#7 = phi( atan2_16::@15/atan2_16::i#8, atan2_16::@16/atan2_16::i#9 )
|
|
atan2_16::xd#9 = phi( atan2_16::@15/atan2_16::xd#8, atan2_16::@16/atan2_16::xd#2 )
|
|
atan2_16::yd#9 = phi( atan2_16::@15/atan2_16::yd#8, atan2_16::@16/atan2_16::yd#2 )
|
|
atan2_16::xi#7 = phi( atan2_16::@15/atan2_16::xi#9, atan2_16::@16/atan2_16::xi#10 )
|
|
atan2_16::yi#5 = phi( atan2_16::@15/atan2_16::yi#10, atan2_16::@16/atan2_16::yi#11 )
|
|
atan2_16::$20 = atan2_16::yi#5 >= 0
|
|
if(atan2_16::$20) goto atan2_16::@18
|
|
to:atan2_16::@20
|
|
atan2_16::@16: scope:[atan2_16] from atan2_16::@15
|
|
atan2_16::y#17 = phi( atan2_16::@15/atan2_16::y#16 )
|
|
atan2_16::x#15 = phi( atan2_16::@15/atan2_16::x#14 )
|
|
atan2_16::angle#17 = phi( atan2_16::@15/atan2_16::angle#16 )
|
|
atan2_16::i#9 = phi( atan2_16::@15/atan2_16::i#8 )
|
|
atan2_16::xi#10 = phi( atan2_16::@15/atan2_16::xi#9 )
|
|
atan2_16::yi#11 = phi( atan2_16::@15/atan2_16::yi#10 )
|
|
atan2_16::yd#4 = phi( atan2_16::@15/atan2_16::yd#8 )
|
|
atan2_16::xd#4 = phi( atan2_16::@15/atan2_16::xd#8 )
|
|
atan2_16::xd#2 = atan2_16::xd#4 >> 1
|
|
atan2_16::yd#2 = atan2_16::yd#4 >> 1
|
|
to:atan2_16::@17
|
|
atan2_16::@18: scope:[atan2_16] from atan2_16::@17
|
|
atan2_16::y#10 = phi( atan2_16::@17/atan2_16::y#14 )
|
|
atan2_16::x#11 = phi( atan2_16::@17/atan2_16::x#13 )
|
|
atan2_16::angle#7 = phi( atan2_16::@17/atan2_16::angle#14 )
|
|
atan2_16::i#3 = phi( atan2_16::@17/atan2_16::i#7 )
|
|
atan2_16::xd#5 = phi( atan2_16::@17/atan2_16::xd#9 )
|
|
atan2_16::yi#6 = phi( atan2_16::@17/atan2_16::yi#5 )
|
|
atan2_16::yd#5 = phi( atan2_16::@17/atan2_16::yd#9 )
|
|
atan2_16::xi#4 = phi( atan2_16::@17/atan2_16::xi#7 )
|
|
atan2_16::xi#1 = atan2_16::xi#4 + atan2_16::yd#5
|
|
atan2_16::yi#1 = atan2_16::yi#6 - atan2_16::xd#5
|
|
atan2_16::$22 = atan2_16::i#3 * SIZEOF_WORD
|
|
atan2_16::angle#2 = atan2_16::angle#7 + CORDIC_ATAN2_ANGLES_16[atan2_16::$22]
|
|
to:atan2_16::@19
|
|
atan2_16::@20: scope:[atan2_16] from atan2_16::@17
|
|
atan2_16::y#11 = phi( atan2_16::@17/atan2_16::y#14 )
|
|
atan2_16::x#12 = phi( atan2_16::@17/atan2_16::x#13 )
|
|
atan2_16::angle#8 = phi( atan2_16::@17/atan2_16::angle#14 )
|
|
atan2_16::i#4 = phi( atan2_16::@17/atan2_16::i#7 )
|
|
atan2_16::xd#6 = phi( atan2_16::@17/atan2_16::xd#9 )
|
|
atan2_16::yi#7 = phi( atan2_16::@17/atan2_16::yi#5 )
|
|
atan2_16::yd#6 = phi( atan2_16::@17/atan2_16::yd#9 )
|
|
atan2_16::xi#5 = phi( atan2_16::@17/atan2_16::xi#7 )
|
|
atan2_16::xi#2 = atan2_16::xi#5 - atan2_16::yd#6
|
|
atan2_16::yi#2 = atan2_16::yi#7 + atan2_16::xd#6
|
|
atan2_16::$23 = atan2_16::i#4 * SIZEOF_WORD
|
|
atan2_16::angle#3 = atan2_16::angle#8 - CORDIC_ATAN2_ANGLES_16[atan2_16::$23]
|
|
to:atan2_16::@19
|
|
atan2_16::@19: scope:[atan2_16] from atan2_16::@18 atan2_16::@20
|
|
atan2_16::y#8 = phi( atan2_16::@18/atan2_16::y#10, atan2_16::@20/atan2_16::y#11 )
|
|
atan2_16::xi#8 = phi( atan2_16::@18/atan2_16::xi#1, atan2_16::@20/atan2_16::xi#2 )
|
|
atan2_16::x#8 = phi( atan2_16::@18/atan2_16::x#11, atan2_16::@20/atan2_16::x#12 )
|
|
atan2_16::angle#13 = phi( atan2_16::@18/atan2_16::angle#2, atan2_16::@20/atan2_16::angle#3 )
|
|
atan2_16::yi#8 = phi( atan2_16::@18/atan2_16::yi#1, atan2_16::@20/atan2_16::yi#2 )
|
|
atan2_16::i#5 = phi( atan2_16::@18/atan2_16::i#3, atan2_16::@20/atan2_16::i#4 )
|
|
atan2_16::i#1 = atan2_16::i#5 + rangenext(0,CORDIC_ITERATIONS_16-1)
|
|
atan2_16::$21 = atan2_16::i#1 != rangelast(0,CORDIC_ITERATIONS_16-1)
|
|
if(atan2_16::$21) goto atan2_16::@10
|
|
to:atan2_16::@12
|
|
atan2_16::@7: scope:[atan2_16] from atan2_16::@12 atan2_16::@21
|
|
atan2_16::angle#15 = phi( atan2_16::@12/atan2_16::angle#1, atan2_16::@21/atan2_16::angle#4 )
|
|
atan2_16::y#4 = phi( atan2_16::@12/atan2_16::y#5, atan2_16::@21/atan2_16::y#6 )
|
|
atan2_16::$13 = atan2_16::y#4 < 0
|
|
atan2_16::$14 = ! atan2_16::$13
|
|
if(atan2_16::$14) goto atan2_16::@8
|
|
to:atan2_16::@9
|
|
atan2_16::@21: scope:[atan2_16] from atan2_16::@12
|
|
atan2_16::y#6 = phi( atan2_16::@12/atan2_16::y#5 )
|
|
atan2_16::angle#9 = phi( atan2_16::@12/atan2_16::angle#1 )
|
|
atan2_16::$12 = $8000 - atan2_16::angle#9
|
|
atan2_16::angle#4 = atan2_16::$12
|
|
to:atan2_16::@7
|
|
atan2_16::@8: scope:[atan2_16] from atan2_16::@7 atan2_16::@9
|
|
atan2_16::angle#10 = phi( atan2_16::@7/atan2_16::angle#15, atan2_16::@9/atan2_16::angle#5 )
|
|
atan2_16::return#0 = atan2_16::angle#10
|
|
to:atan2_16::@return
|
|
atan2_16::@9: scope:[atan2_16] from atan2_16::@7
|
|
atan2_16::angle#11 = phi( atan2_16::@7/atan2_16::angle#15 )
|
|
atan2_16::$15 = - atan2_16::angle#11
|
|
atan2_16::angle#5 = atan2_16::$15
|
|
to:atan2_16::@8
|
|
atan2_16::@return: scope:[atan2_16] from atan2_16::@8
|
|
atan2_16::return#3 = phi( atan2_16::@8/atan2_16::return#0 )
|
|
atan2_16::return#1 = atan2_16::return#3
|
|
return
|
|
to:@return
|
|
|
|
void main()
|
|
main: scope:[main] from __start::@1
|
|
SCREEN_ANGLE#5 = phi( __start::@1/SCREEN_ANGLE#8 )
|
|
SQUARES#23 = phi( __start::@1/SQUARES#28 )
|
|
heap_head#27 = phi( __start::@1/heap_head#32 )
|
|
NUM_SQUARES#18 = phi( __start::@1/NUM_SQUARES#22 )
|
|
SCREEN_DIST#2 = phi( __start::@1/SCREEN_DIST#5 )
|
|
init_dist_screen::screen#0 = SCREEN_DIST#2
|
|
call init_dist_screen
|
|
to:main::@9
|
|
main::@9: scope:[main] from main
|
|
SCREEN_DIST#11 = phi( main/SCREEN_DIST#2 )
|
|
SCREEN_ANGLE#2 = phi( main/SCREEN_ANGLE#5 )
|
|
SQUARES#13 = phi( main/SQUARES#5 )
|
|
heap_head#17 = phi( main/heap_head#7 )
|
|
NUM_SQUARES#10 = phi( main/NUM_SQUARES#3 )
|
|
NUM_SQUARES#0 = NUM_SQUARES#10
|
|
heap_head#4 = heap_head#17
|
|
SQUARES#2 = SQUARES#13
|
|
init_angle_screen::screen#0 = SCREEN_ANGLE#2
|
|
call init_angle_screen
|
|
to:main::@10
|
|
main::@10: scope:[main] from main::@9
|
|
SQUARES#30 = phi( main::@9/SQUARES#2 )
|
|
heap_head#34 = phi( main::@9/heap_head#4 )
|
|
NUM_SQUARES#23 = phi( main::@9/NUM_SQUARES#0 )
|
|
SCREEN_ANGLE#9 = phi( main::@9/SCREEN_ANGLE#2 )
|
|
SCREEN_DIST#8 = phi( main::@9/SCREEN_DIST#11 )
|
|
to:main::@1
|
|
main::@1: scope:[main] from main::@10 main::@8
|
|
SQUARES#24 = phi( main::@10/SQUARES#30, main::@8/SQUARES#31 )
|
|
heap_head#28 = phi( main::@10/heap_head#34, main::@8/heap_head#35 )
|
|
NUM_SQUARES#19 = phi( main::@10/NUM_SQUARES#23, main::@8/NUM_SQUARES#24 )
|
|
SCREEN_ANGLE#6 = phi( main::@10/SCREEN_ANGLE#9, main::@8/SCREEN_ANGLE#10 )
|
|
SCREEN_DIST#6 = phi( main::@10/SCREEN_DIST#8, main::@8/SCREEN_DIST#9 )
|
|
if(true) goto main::@2
|
|
to:main::@return
|
|
main::@2: scope:[main] from main::@1
|
|
SQUARES#47 = phi( main::@1/SQUARES#24 )
|
|
heap_head#43 = phi( main::@1/heap_head#28 )
|
|
NUM_SQUARES#37 = phi( main::@1/NUM_SQUARES#19 )
|
|
SCREEN_ANGLE#3 = phi( main::@1/SCREEN_ANGLE#6 )
|
|
SCREEN_DIST#3 = phi( main::@1/SCREEN_DIST#6 )
|
|
main::dist#0 = SCREEN_DIST#3
|
|
main::angle#0 = SCREEN_ANGLE#3
|
|
main::fill#0 = SCREEN_FILL
|
|
main::min_dist_angle#0 = $ffff
|
|
main::min_fill#0 = SCREEN_FILL
|
|
to:main::@3
|
|
main::@3: scope:[main] from main::@2 main::@4
|
|
SCREEN_ANGLE#13 = phi( main::@2/SCREEN_ANGLE#3, main::@4/SCREEN_ANGLE#12 )
|
|
SCREEN_DIST#14 = phi( main::@2/SCREEN_DIST#3, main::@4/SCREEN_DIST#13 )
|
|
SQUARES#39 = phi( main::@2/SQUARES#47, main::@4/SQUARES#32 )
|
|
heap_head#38 = phi( main::@2/heap_head#43, main::@4/heap_head#36 )
|
|
NUM_SQUARES#29 = phi( main::@2/NUM_SQUARES#37, main::@4/NUM_SQUARES#25 )
|
|
main::min_fill#5 = phi( main::@2/main::min_fill#0, main::@4/main::min_fill#4 )
|
|
main::min_dist_angle#4 = phi( main::@2/main::min_dist_angle#0, main::@4/main::min_dist_angle#5 )
|
|
main::angle#4 = phi( main::@2/main::angle#0, main::@4/main::angle#1 )
|
|
main::dist#4 = phi( main::@2/main::dist#0, main::@4/main::dist#1 )
|
|
main::fill#2 = phi( main::@2/main::fill#0, main::@4/main::fill#1 )
|
|
main::$2 = *main::fill#2 != FILL_CHAR
|
|
main::$3 = ! main::$2
|
|
if(main::$3) goto main::@4
|
|
to:main::@5
|
|
main::@4: scope:[main] from main::@3 main::@5 main::@6
|
|
SCREEN_ANGLE#12 = phi( main::@3/SCREEN_ANGLE#13, main::@5/SCREEN_ANGLE#14, main::@6/SCREEN_ANGLE#15 )
|
|
SCREEN_DIST#13 = phi( main::@3/SCREEN_DIST#14, main::@5/SCREEN_DIST#15, main::@6/SCREEN_DIST#16 )
|
|
SQUARES#32 = phi( main::@3/SQUARES#39, main::@5/SQUARES#40, main::@6/SQUARES#41 )
|
|
heap_head#36 = phi( main::@3/heap_head#38, main::@5/heap_head#39, main::@6/heap_head#40 )
|
|
NUM_SQUARES#25 = phi( main::@3/NUM_SQUARES#29, main::@5/NUM_SQUARES#30, main::@6/NUM_SQUARES#31 )
|
|
main::min_fill#4 = phi( main::@3/main::min_fill#5, main::@5/main::min_fill#6, main::@6/main::min_fill#1 )
|
|
main::min_dist_angle#5 = phi( main::@3/main::min_dist_angle#4, main::@5/main::min_dist_angle#2, main::@6/main::min_dist_angle#1 )
|
|
main::fill#3 = phi( main::@3/main::fill#2, main::@5/main::fill#5, main::@6/main::fill#4 )
|
|
main::angle#2 = phi( main::@3/main::angle#4, main::@5/main::angle#3, main::@6/main::angle#5 )
|
|
main::dist#2 = phi( main::@3/main::dist#4, main::@5/main::dist#3, main::@6/main::dist#5 )
|
|
main::dist#1 = ++ main::dist#2
|
|
main::angle#1 = ++ main::angle#2
|
|
main::fill#1 = ++ main::fill#3
|
|
main::$6 = main::fill#1 < SCREEN_FILL+$3e8
|
|
if(main::$6) goto main::@3
|
|
to:main::@7
|
|
main::@5: scope:[main] from main::@3
|
|
SCREEN_ANGLE#14 = phi( main::@3/SCREEN_ANGLE#13 )
|
|
SCREEN_DIST#15 = phi( main::@3/SCREEN_DIST#14 )
|
|
SQUARES#40 = phi( main::@3/SQUARES#39 )
|
|
heap_head#39 = phi( main::@3/heap_head#38 )
|
|
NUM_SQUARES#30 = phi( main::@3/NUM_SQUARES#29 )
|
|
main::min_fill#6 = phi( main::@3/main::min_fill#5 )
|
|
main::fill#5 = phi( main::@3/main::fill#2 )
|
|
main::min_dist_angle#2 = phi( main::@3/main::min_dist_angle#4 )
|
|
main::angle#3 = phi( main::@3/main::angle#4 )
|
|
main::dist#3 = phi( main::@3/main::dist#4 )
|
|
main::dist_angle#0 = (word){ *main::dist#3, *main::angle#3 }
|
|
main::$4 = main::dist_angle#0 < main::min_dist_angle#2
|
|
main::$5 = ! main::$4
|
|
if(main::$5) goto main::@4
|
|
to:main::@6
|
|
main::@6: scope:[main] from main::@5
|
|
SCREEN_ANGLE#15 = phi( main::@5/SCREEN_ANGLE#14 )
|
|
SCREEN_DIST#16 = phi( main::@5/SCREEN_DIST#15 )
|
|
SQUARES#41 = phi( main::@5/SQUARES#40 )
|
|
heap_head#40 = phi( main::@5/heap_head#39 )
|
|
NUM_SQUARES#31 = phi( main::@5/NUM_SQUARES#30 )
|
|
main::angle#5 = phi( main::@5/main::angle#3 )
|
|
main::dist#5 = phi( main::@5/main::dist#3 )
|
|
main::dist_angle#1 = phi( main::@5/main::dist_angle#0 )
|
|
main::fill#4 = phi( main::@5/main::fill#5 )
|
|
main::min_fill#1 = main::fill#4
|
|
main::min_dist_angle#1 = main::dist_angle#1
|
|
to:main::@4
|
|
main::@7: scope:[main] from main::@4
|
|
SCREEN_ANGLE#11 = phi( main::@4/SCREEN_ANGLE#12 )
|
|
SCREEN_DIST#12 = phi( main::@4/SCREEN_DIST#13 )
|
|
SQUARES#25 = phi( main::@4/SQUARES#32 )
|
|
heap_head#29 = phi( main::@4/heap_head#36 )
|
|
NUM_SQUARES#20 = phi( main::@4/NUM_SQUARES#25 )
|
|
main::min_fill#3 = phi( main::@4/main::min_fill#4 )
|
|
main::min_dist_angle#3 = phi( main::@4/main::min_dist_angle#5 )
|
|
main::$7 = main::min_dist_angle#3 == $ffff
|
|
main::$8 = ! main::$7
|
|
if(main::$8) goto main::@8
|
|
to:main::@return
|
|
main::@8: scope:[main] from main::@7
|
|
SQUARES#31 = phi( main::@7/SQUARES#25 )
|
|
heap_head#35 = phi( main::@7/heap_head#29 )
|
|
NUM_SQUARES#24 = phi( main::@7/NUM_SQUARES#20 )
|
|
SCREEN_ANGLE#10 = phi( main::@7/SCREEN_ANGLE#11 )
|
|
SCREEN_DIST#9 = phi( main::@7/SCREEN_DIST#12 )
|
|
main::min_fill#2 = phi( main::@7/main::min_fill#3 )
|
|
*main::min_fill#2 = FILL_CHAR
|
|
to:main::@1
|
|
main::@return: scope:[main] from main::@1 main::@7
|
|
SQUARES#14 = phi( main::@1/SQUARES#24, main::@7/SQUARES#25 )
|
|
heap_head#18 = phi( main::@1/heap_head#28, main::@7/heap_head#29 )
|
|
NUM_SQUARES#11 = phi( main::@1/NUM_SQUARES#19, main::@7/NUM_SQUARES#20 )
|
|
NUM_SQUARES#1 = NUM_SQUARES#11
|
|
heap_head#5 = heap_head#18
|
|
SQUARES#3 = SQUARES#14
|
|
return
|
|
to:@return
|
|
|
|
void init_angle_screen(byte* init_angle_screen::screen)
|
|
init_angle_screen: scope:[init_angle_screen] from main::@9
|
|
init_angle_screen::screen#1 = phi( main::@9/init_angle_screen::screen#0 )
|
|
init_angle_screen::$0 = init_angle_screen::screen#1 + $28*$c
|
|
init_angle_screen::screen_topline#0 = init_angle_screen::$0
|
|
init_angle_screen::$1 = init_angle_screen::screen#1 + $28*$c
|
|
init_angle_screen::screen_bottomline#0 = init_angle_screen::$1
|
|
init_angle_screen::y#0 = 0
|
|
to:init_angle_screen::@1
|
|
init_angle_screen::@1: scope:[init_angle_screen] from init_angle_screen init_angle_screen::@4
|
|
init_angle_screen::screen_bottomline#6 = phi( init_angle_screen/init_angle_screen::screen_bottomline#0, init_angle_screen::@4/init_angle_screen::screen_bottomline#1 )
|
|
init_angle_screen::screen_topline#6 = phi( init_angle_screen/init_angle_screen::screen_topline#0, init_angle_screen::@4/init_angle_screen::screen_topline#1 )
|
|
init_angle_screen::y#5 = phi( init_angle_screen/init_angle_screen::y#0, init_angle_screen::@4/init_angle_screen::y#1 )
|
|
init_angle_screen::x#0 = 0
|
|
init_angle_screen::xb#0 = $27
|
|
to:init_angle_screen::@2
|
|
init_angle_screen::@2: scope:[init_angle_screen] from init_angle_screen::@1 init_angle_screen::@5
|
|
init_angle_screen::xb#4 = phi( init_angle_screen::@1/init_angle_screen::xb#0, init_angle_screen::@5/init_angle_screen::xb#1 )
|
|
init_angle_screen::screen_bottomline#5 = phi( init_angle_screen::@1/init_angle_screen::screen_bottomline#6, init_angle_screen::@5/init_angle_screen::screen_bottomline#2 )
|
|
init_angle_screen::screen_topline#5 = phi( init_angle_screen::@1/init_angle_screen::screen_topline#6, init_angle_screen::@5/init_angle_screen::screen_topline#2 )
|
|
init_angle_screen::y#4 = phi( init_angle_screen::@1/init_angle_screen::y#5, init_angle_screen::@5/init_angle_screen::y#6 )
|
|
init_angle_screen::x#2 = phi( init_angle_screen::@1/init_angle_screen::x#0, init_angle_screen::@5/init_angle_screen::x#1 )
|
|
init_angle_screen::$2 = init_angle_screen::x#2 <= $13
|
|
if(init_angle_screen::$2) goto init_angle_screen::@3
|
|
to:init_angle_screen::@4
|
|
init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
|
|
init_angle_screen::screen_topline#4 = phi( init_angle_screen::@2/init_angle_screen::screen_topline#5 )
|
|
init_angle_screen::xb#3 = phi( init_angle_screen::@2/init_angle_screen::xb#4 )
|
|
init_angle_screen::screen_bottomline#4 = phi( init_angle_screen::@2/init_angle_screen::screen_bottomline#5 )
|
|
init_angle_screen::y#2 = phi( init_angle_screen::@2/init_angle_screen::y#4 )
|
|
init_angle_screen::x#3 = phi( init_angle_screen::@2/init_angle_screen::x#2 )
|
|
init_angle_screen::$3 = init_angle_screen::x#3 * 2
|
|
init_angle_screen::$4 = $27 - init_angle_screen::$3
|
|
init_angle_screen::xw#0 = (signed word)(word){ init_angle_screen::$4, 0 }
|
|
init_angle_screen::$5 = init_angle_screen::y#2 * 2
|
|
init_angle_screen::yw#0 = (signed word)(word){ init_angle_screen::$5, 0 }
|
|
atan2_16::x#0 = init_angle_screen::xw#0
|
|
atan2_16::y#0 = init_angle_screen::yw#0
|
|
call atan2_16
|
|
atan2_16::return#2 = atan2_16::return#1
|
|
to:init_angle_screen::@5
|
|
init_angle_screen::@5: scope:[init_angle_screen] from init_angle_screen::@3
|
|
init_angle_screen::y#6 = phi( init_angle_screen::@3/init_angle_screen::y#2 )
|
|
init_angle_screen::x#4 = phi( init_angle_screen::@3/init_angle_screen::x#3 )
|
|
init_angle_screen::screen_topline#2 = phi( init_angle_screen::@3/init_angle_screen::screen_topline#4 )
|
|
init_angle_screen::xb#2 = phi( init_angle_screen::@3/init_angle_screen::xb#3 )
|
|
init_angle_screen::screen_bottomline#2 = phi( init_angle_screen::@3/init_angle_screen::screen_bottomline#4 )
|
|
atan2_16::return#4 = phi( init_angle_screen::@3/atan2_16::return#2 )
|
|
init_angle_screen::$6 = atan2_16::return#4
|
|
init_angle_screen::angle_w#0 = init_angle_screen::$6
|
|
init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
|
|
init_angle_screen::$8 = > init_angle_screen::$7
|
|
init_angle_screen::ang_w#0 = init_angle_screen::$8
|
|
init_angle_screen::screen_bottomline#2[init_angle_screen::xb#2] = init_angle_screen::ang_w#0
|
|
init_angle_screen::$9 = - init_angle_screen::ang_w#0
|
|
init_angle_screen::screen_topline#2[init_angle_screen::xb#2] = init_angle_screen::$9
|
|
init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
|
|
init_angle_screen::screen_topline#2[init_angle_screen::x#4] = init_angle_screen::$10
|
|
init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
|
|
init_angle_screen::screen_bottomline#2[init_angle_screen::x#4] = init_angle_screen::$11
|
|
init_angle_screen::x#1 = ++ init_angle_screen::x#4
|
|
init_angle_screen::xb#1 = -- init_angle_screen::xb#2
|
|
to:init_angle_screen::@2
|
|
init_angle_screen::@4: scope:[init_angle_screen] from init_angle_screen::@2
|
|
init_angle_screen::y#3 = phi( init_angle_screen::@2/init_angle_screen::y#4 )
|
|
init_angle_screen::screen_bottomline#3 = phi( init_angle_screen::@2/init_angle_screen::screen_bottomline#5 )
|
|
init_angle_screen::screen_topline#3 = phi( init_angle_screen::@2/init_angle_screen::screen_topline#5 )
|
|
init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#3 - $28
|
|
init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#3 + $28
|
|
init_angle_screen::y#1 = init_angle_screen::y#3 + rangenext(0,$c)
|
|
init_angle_screen::$12 = init_angle_screen::y#1 != rangelast(0,$c)
|
|
if(init_angle_screen::$12) goto init_angle_screen::@1
|
|
to:init_angle_screen::@return
|
|
init_angle_screen::@return: scope:[init_angle_screen] from init_angle_screen::@4
|
|
return
|
|
to:@return
|
|
|
|
void init_dist_screen(byte* init_dist_screen::screen)
|
|
init_dist_screen: scope:[init_dist_screen] from main
|
|
init_dist_screen::screen#2 = phi( main/init_dist_screen::screen#0 )
|
|
SQUARES#26 = phi( main/SQUARES#23 )
|
|
heap_head#30 = phi( main/heap_head#27 )
|
|
NUM_SQUARES#2 = $30
|
|
call init_squares
|
|
to:init_dist_screen::@11
|
|
init_dist_screen::@11: scope:[init_dist_screen] from init_dist_screen
|
|
NUM_SQUARES#43 = phi( init_dist_screen/NUM_SQUARES#2 )
|
|
init_dist_screen::screen#1 = phi( init_dist_screen/init_dist_screen::screen#2 )
|
|
SQUARES#15 = phi( init_dist_screen/SQUARES#1 )
|
|
heap_head#19 = phi( init_dist_screen/heap_head#3 )
|
|
heap_head#6 = heap_head#19
|
|
SQUARES#4 = SQUARES#15
|
|
init_dist_screen::screen_topline#0 = init_dist_screen::screen#1
|
|
init_dist_screen::$1 = init_dist_screen::screen#1 + $28*$18
|
|
init_dist_screen::screen_bottomline#0 = init_dist_screen::$1
|
|
init_dist_screen::y#0 = 0
|
|
to:init_dist_screen::@1
|
|
init_dist_screen::@1: scope:[init_dist_screen] from init_dist_screen::@11 init_dist_screen::@7
|
|
heap_head#49 = phi( init_dist_screen::@11/heap_head#6, init_dist_screen::@7/heap_head#31 )
|
|
NUM_SQUARES#42 = phi( init_dist_screen::@11/NUM_SQUARES#43, init_dist_screen::@7/NUM_SQUARES#21 )
|
|
init_dist_screen::screen_bottomline#14 = phi( init_dist_screen::@11/init_dist_screen::screen_bottomline#0, init_dist_screen::@7/init_dist_screen::screen_bottomline#1 )
|
|
init_dist_screen::screen_topline#14 = phi( init_dist_screen::@11/init_dist_screen::screen_topline#0, init_dist_screen::@7/init_dist_screen::screen_topline#1 )
|
|
SQUARES#42 = phi( init_dist_screen::@11/SQUARES#4, init_dist_screen::@7/SQUARES#27 )
|
|
init_dist_screen::y#2 = phi( init_dist_screen::@11/init_dist_screen::y#0, init_dist_screen::@7/init_dist_screen::y#1 )
|
|
init_dist_screen::$2 = init_dist_screen::y#2 * 2
|
|
init_dist_screen::y2#0 = init_dist_screen::$2
|
|
init_dist_screen::$3 = init_dist_screen::y2#0 >= $18
|
|
if(init_dist_screen::$3) goto init_dist_screen::@2
|
|
to:init_dist_screen::@3
|
|
init_dist_screen::@2: scope:[init_dist_screen] from init_dist_screen::@1
|
|
heap_head#46 = phi( init_dist_screen::@1/heap_head#49 )
|
|
NUM_SQUARES#40 = phi( init_dist_screen::@1/NUM_SQUARES#42 )
|
|
init_dist_screen::y#9 = phi( init_dist_screen::@1/init_dist_screen::y#2 )
|
|
init_dist_screen::screen_bottomline#11 = phi( init_dist_screen::@1/init_dist_screen::screen_bottomline#14 )
|
|
init_dist_screen::screen_topline#11 = phi( init_dist_screen::@1/init_dist_screen::screen_topline#14 )
|
|
SQUARES#33 = phi( init_dist_screen::@1/SQUARES#42 )
|
|
init_dist_screen::y2#1 = phi( init_dist_screen::@1/init_dist_screen::y2#0 )
|
|
init_dist_screen::$6 = init_dist_screen::y2#1 - $18
|
|
init_dist_screen::$7 = init_dist_screen::$6
|
|
to:init_dist_screen::@4
|
|
init_dist_screen::@3: scope:[init_dist_screen] from init_dist_screen::@1
|
|
heap_head#47 = phi( init_dist_screen::@1/heap_head#49 )
|
|
NUM_SQUARES#41 = phi( init_dist_screen::@1/NUM_SQUARES#42 )
|
|
init_dist_screen::y#10 = phi( init_dist_screen::@1/init_dist_screen::y#2 )
|
|
init_dist_screen::screen_bottomline#12 = phi( init_dist_screen::@1/init_dist_screen::screen_bottomline#14 )
|
|
init_dist_screen::screen_topline#12 = phi( init_dist_screen::@1/init_dist_screen::screen_topline#14 )
|
|
SQUARES#34 = phi( init_dist_screen::@1/SQUARES#42 )
|
|
init_dist_screen::y2#2 = phi( init_dist_screen::@1/init_dist_screen::y2#0 )
|
|
init_dist_screen::$4 = $18 - init_dist_screen::y2#2
|
|
init_dist_screen::$5 = init_dist_screen::$4
|
|
to:init_dist_screen::@4
|
|
init_dist_screen::@4: scope:[init_dist_screen] from init_dist_screen::@2 init_dist_screen::@3
|
|
heap_head#44 = phi( init_dist_screen::@2/heap_head#46, init_dist_screen::@3/heap_head#47 )
|
|
NUM_SQUARES#38 = phi( init_dist_screen::@2/NUM_SQUARES#40, init_dist_screen::@3/NUM_SQUARES#41 )
|
|
init_dist_screen::y#7 = phi( init_dist_screen::@2/init_dist_screen::y#9, init_dist_screen::@3/init_dist_screen::y#10 )
|
|
init_dist_screen::screen_bottomline#8 = phi( init_dist_screen::@2/init_dist_screen::screen_bottomline#11, init_dist_screen::@3/init_dist_screen::screen_bottomline#12 )
|
|
init_dist_screen::screen_topline#8 = phi( init_dist_screen::@2/init_dist_screen::screen_topline#11, init_dist_screen::@3/init_dist_screen::screen_topline#12 )
|
|
SQUARES#21 = phi( init_dist_screen::@2/SQUARES#33, init_dist_screen::@3/SQUARES#34 )
|
|
init_dist_screen::$8 = phi( init_dist_screen::@2/init_dist_screen::$7, init_dist_screen::@3/init_dist_screen::$5 )
|
|
init_dist_screen::yd#0 = init_dist_screen::$8
|
|
sqr::val#0 = init_dist_screen::yd#0
|
|
call sqr
|
|
sqr::return#2 = sqr::return#1
|
|
to:init_dist_screen::@12
|
|
init_dist_screen::@12: scope:[init_dist_screen] from init_dist_screen::@4
|
|
SQUARES#43 = phi( init_dist_screen::@4/SQUARES#21 )
|
|
heap_head#41 = phi( init_dist_screen::@4/heap_head#44 )
|
|
NUM_SQUARES#32 = phi( init_dist_screen::@4/NUM_SQUARES#38 )
|
|
init_dist_screen::y#5 = phi( init_dist_screen::@4/init_dist_screen::y#7 )
|
|
init_dist_screen::screen_bottomline#6 = phi( init_dist_screen::@4/init_dist_screen::screen_bottomline#8 )
|
|
init_dist_screen::screen_topline#6 = phi( init_dist_screen::@4/init_dist_screen::screen_topline#8 )
|
|
sqr::return#5 = phi( init_dist_screen::@4/sqr::return#2 )
|
|
init_dist_screen::$9 = sqr::return#5
|
|
init_dist_screen::yds#0 = init_dist_screen::$9
|
|
init_dist_screen::x#0 = 0
|
|
init_dist_screen::xb#0 = $27
|
|
to:init_dist_screen::@5
|
|
init_dist_screen::@5: scope:[init_dist_screen] from init_dist_screen::@12 init_dist_screen::@14
|
|
init_dist_screen::xb#8 = phi( init_dist_screen::@12/init_dist_screen::xb#0, init_dist_screen::@14/init_dist_screen::xb#1 )
|
|
init_dist_screen::yds#6 = phi( init_dist_screen::@12/init_dist_screen::yds#0, init_dist_screen::@14/init_dist_screen::yds#7 )
|
|
SQUARES#35 = phi( init_dist_screen::@12/SQUARES#43, init_dist_screen::@14/SQUARES#44 )
|
|
heap_head#37 = phi( init_dist_screen::@12/heap_head#41, init_dist_screen::@14/heap_head#42 )
|
|
NUM_SQUARES#26 = phi( init_dist_screen::@12/NUM_SQUARES#32, init_dist_screen::@14/NUM_SQUARES#33 )
|
|
init_dist_screen::y#4 = phi( init_dist_screen::@12/init_dist_screen::y#5, init_dist_screen::@14/init_dist_screen::y#6 )
|
|
init_dist_screen::screen_bottomline#4 = phi( init_dist_screen::@12/init_dist_screen::screen_bottomline#6, init_dist_screen::@14/init_dist_screen::screen_bottomline#3 )
|
|
init_dist_screen::screen_topline#4 = phi( init_dist_screen::@12/init_dist_screen::screen_topline#6, init_dist_screen::@14/init_dist_screen::screen_topline#3 )
|
|
init_dist_screen::x#2 = phi( init_dist_screen::@12/init_dist_screen::x#0, init_dist_screen::@14/init_dist_screen::x#1 )
|
|
init_dist_screen::$10 = init_dist_screen::x#2 <= $13
|
|
if(init_dist_screen::$10) goto init_dist_screen::@6
|
|
to:init_dist_screen::@7
|
|
init_dist_screen::@6: scope:[init_dist_screen] from init_dist_screen::@5
|
|
heap_head#52 = phi( init_dist_screen::@5/heap_head#37 )
|
|
init_dist_screen::y#14 = phi( init_dist_screen::@5/init_dist_screen::y#4 )
|
|
init_dist_screen::xb#7 = phi( init_dist_screen::@5/init_dist_screen::xb#8 )
|
|
init_dist_screen::screen_bottomline#13 = phi( init_dist_screen::@5/init_dist_screen::screen_bottomline#4 )
|
|
init_dist_screen::screen_topline#13 = phi( init_dist_screen::@5/init_dist_screen::screen_topline#4 )
|
|
NUM_SQUARES#39 = phi( init_dist_screen::@5/NUM_SQUARES#26 )
|
|
init_dist_screen::yds#5 = phi( init_dist_screen::@5/init_dist_screen::yds#6 )
|
|
SQUARES#45 = phi( init_dist_screen::@5/SQUARES#35 )
|
|
init_dist_screen::x#3 = phi( init_dist_screen::@5/init_dist_screen::x#2 )
|
|
init_dist_screen::$11 = init_dist_screen::x#3 * 2
|
|
init_dist_screen::x2#0 = init_dist_screen::$11
|
|
init_dist_screen::$12 = init_dist_screen::x2#0 >= $27
|
|
if(init_dist_screen::$12) goto init_dist_screen::@8
|
|
to:init_dist_screen::@9
|
|
init_dist_screen::@7: scope:[init_dist_screen] from init_dist_screen::@5
|
|
SQUARES#27 = phi( init_dist_screen::@5/SQUARES#35 )
|
|
heap_head#31 = phi( init_dist_screen::@5/heap_head#37 )
|
|
NUM_SQUARES#21 = phi( init_dist_screen::@5/NUM_SQUARES#26 )
|
|
init_dist_screen::y#3 = phi( init_dist_screen::@5/init_dist_screen::y#4 )
|
|
init_dist_screen::screen_bottomline#2 = phi( init_dist_screen::@5/init_dist_screen::screen_bottomline#4 )
|
|
init_dist_screen::screen_topline#2 = phi( init_dist_screen::@5/init_dist_screen::screen_topline#4 )
|
|
init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#2 + $28
|
|
init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#2 - $28
|
|
init_dist_screen::y#1 = init_dist_screen::y#3 + rangenext(0,$c)
|
|
init_dist_screen::$21 = init_dist_screen::y#1 != rangelast(0,$c)
|
|
if(init_dist_screen::$21) goto init_dist_screen::@1
|
|
to:init_dist_screen::@return
|
|
init_dist_screen::@8: scope:[init_dist_screen] from init_dist_screen::@6
|
|
heap_head#50 = phi( init_dist_screen::@6/heap_head#52 )
|
|
init_dist_screen::y#12 = phi( init_dist_screen::@6/init_dist_screen::y#14 )
|
|
init_dist_screen::xb#5 = phi( init_dist_screen::@6/init_dist_screen::xb#7 )
|
|
init_dist_screen::screen_bottomline#9 = phi( init_dist_screen::@6/init_dist_screen::screen_bottomline#13 )
|
|
init_dist_screen::x#7 = phi( init_dist_screen::@6/init_dist_screen::x#3 )
|
|
init_dist_screen::screen_topline#9 = phi( init_dist_screen::@6/init_dist_screen::screen_topline#13 )
|
|
NUM_SQUARES#34 = phi( init_dist_screen::@6/NUM_SQUARES#39 )
|
|
init_dist_screen::yds#3 = phi( init_dist_screen::@6/init_dist_screen::yds#5 )
|
|
SQUARES#36 = phi( init_dist_screen::@6/SQUARES#45 )
|
|
init_dist_screen::x2#1 = phi( init_dist_screen::@6/init_dist_screen::x2#0 )
|
|
init_dist_screen::$15 = init_dist_screen::x2#1 - $27
|
|
init_dist_screen::$16 = init_dist_screen::$15
|
|
to:init_dist_screen::@10
|
|
init_dist_screen::@9: scope:[init_dist_screen] from init_dist_screen::@6
|
|
heap_head#51 = phi( init_dist_screen::@6/heap_head#52 )
|
|
init_dist_screen::y#13 = phi( init_dist_screen::@6/init_dist_screen::y#14 )
|
|
init_dist_screen::xb#6 = phi( init_dist_screen::@6/init_dist_screen::xb#7 )
|
|
init_dist_screen::screen_bottomline#10 = phi( init_dist_screen::@6/init_dist_screen::screen_bottomline#13 )
|
|
init_dist_screen::x#8 = phi( init_dist_screen::@6/init_dist_screen::x#3 )
|
|
init_dist_screen::screen_topline#10 = phi( init_dist_screen::@6/init_dist_screen::screen_topline#13 )
|
|
NUM_SQUARES#35 = phi( init_dist_screen::@6/NUM_SQUARES#39 )
|
|
init_dist_screen::yds#4 = phi( init_dist_screen::@6/init_dist_screen::yds#5 )
|
|
SQUARES#37 = phi( init_dist_screen::@6/SQUARES#45 )
|
|
init_dist_screen::x2#2 = phi( init_dist_screen::@6/init_dist_screen::x2#0 )
|
|
init_dist_screen::$13 = $27 - init_dist_screen::x2#2
|
|
init_dist_screen::$14 = init_dist_screen::$13
|
|
to:init_dist_screen::@10
|
|
init_dist_screen::@10: scope:[init_dist_screen] from init_dist_screen::@8 init_dist_screen::@9
|
|
heap_head#48 = phi( init_dist_screen::@8/heap_head#50, init_dist_screen::@9/heap_head#51 )
|
|
init_dist_screen::y#11 = phi( init_dist_screen::@8/init_dist_screen::y#12, init_dist_screen::@9/init_dist_screen::y#13 )
|
|
init_dist_screen::xb#4 = phi( init_dist_screen::@8/init_dist_screen::xb#5, init_dist_screen::@9/init_dist_screen::xb#6 )
|
|
init_dist_screen::screen_bottomline#7 = phi( init_dist_screen::@8/init_dist_screen::screen_bottomline#9, init_dist_screen::@9/init_dist_screen::screen_bottomline#10 )
|
|
init_dist_screen::x#6 = phi( init_dist_screen::@8/init_dist_screen::x#7, init_dist_screen::@9/init_dist_screen::x#8 )
|
|
init_dist_screen::screen_topline#7 = phi( init_dist_screen::@8/init_dist_screen::screen_topline#9, init_dist_screen::@9/init_dist_screen::screen_topline#10 )
|
|
NUM_SQUARES#27 = phi( init_dist_screen::@8/NUM_SQUARES#34, init_dist_screen::@9/NUM_SQUARES#35 )
|
|
init_dist_screen::yds#2 = phi( init_dist_screen::@8/init_dist_screen::yds#3, init_dist_screen::@9/init_dist_screen::yds#4 )
|
|
SQUARES#20 = phi( init_dist_screen::@8/SQUARES#36, init_dist_screen::@9/SQUARES#37 )
|
|
init_dist_screen::$17 = phi( init_dist_screen::@8/init_dist_screen::$16, init_dist_screen::@9/init_dist_screen::$14 )
|
|
init_dist_screen::xd#0 = init_dist_screen::$17
|
|
sqr::val#1 = init_dist_screen::xd#0
|
|
call sqr
|
|
sqr::return#3 = sqr::return#1
|
|
to:init_dist_screen::@13
|
|
init_dist_screen::@13: scope:[init_dist_screen] from init_dist_screen::@10
|
|
heap_head#45 = phi( init_dist_screen::@10/heap_head#48 )
|
|
init_dist_screen::y#8 = phi( init_dist_screen::@10/init_dist_screen::y#11 )
|
|
init_dist_screen::xb#3 = phi( init_dist_screen::@10/init_dist_screen::xb#4 )
|
|
init_dist_screen::screen_bottomline#5 = phi( init_dist_screen::@10/init_dist_screen::screen_bottomline#7 )
|
|
init_dist_screen::x#5 = phi( init_dist_screen::@10/init_dist_screen::x#6 )
|
|
init_dist_screen::screen_topline#5 = phi( init_dist_screen::@10/init_dist_screen::screen_topline#7 )
|
|
NUM_SQUARES#17 = phi( init_dist_screen::@10/NUM_SQUARES#27 )
|
|
SQUARES#22 = phi( init_dist_screen::@10/SQUARES#20 )
|
|
init_dist_screen::yds#1 = phi( init_dist_screen::@10/init_dist_screen::yds#2 )
|
|
sqr::return#6 = phi( init_dist_screen::@10/sqr::return#3 )
|
|
init_dist_screen::$18 = sqr::return#6
|
|
init_dist_screen::xds#0 = init_dist_screen::$18
|
|
init_dist_screen::$19 = init_dist_screen::xds#0 + init_dist_screen::yds#1
|
|
init_dist_screen::ds#0 = init_dist_screen::$19
|
|
sqrt::val#0 = init_dist_screen::ds#0
|
|
call sqrt
|
|
sqrt::return#2 = sqrt::return#1
|
|
to:init_dist_screen::@14
|
|
init_dist_screen::@14: scope:[init_dist_screen] from init_dist_screen::@13
|
|
init_dist_screen::yds#7 = phi( init_dist_screen::@13/init_dist_screen::yds#1 )
|
|
SQUARES#44 = phi( init_dist_screen::@13/SQUARES#22 )
|
|
heap_head#42 = phi( init_dist_screen::@13/heap_head#45 )
|
|
NUM_SQUARES#33 = phi( init_dist_screen::@13/NUM_SQUARES#17 )
|
|
init_dist_screen::y#6 = phi( init_dist_screen::@13/init_dist_screen::y#8 )
|
|
init_dist_screen::xb#2 = phi( init_dist_screen::@13/init_dist_screen::xb#3 )
|
|
init_dist_screen::screen_bottomline#3 = phi( init_dist_screen::@13/init_dist_screen::screen_bottomline#5 )
|
|
init_dist_screen::x#4 = phi( init_dist_screen::@13/init_dist_screen::x#5 )
|
|
init_dist_screen::screen_topline#3 = phi( init_dist_screen::@13/init_dist_screen::screen_topline#5 )
|
|
sqrt::return#4 = phi( init_dist_screen::@13/sqrt::return#2 )
|
|
init_dist_screen::$20 = sqrt::return#4
|
|
init_dist_screen::d#0 = init_dist_screen::$20
|
|
init_dist_screen::screen_topline#3[init_dist_screen::x#4] = init_dist_screen::d#0
|
|
init_dist_screen::screen_bottomline#3[init_dist_screen::x#4] = init_dist_screen::d#0
|
|
init_dist_screen::screen_topline#3[init_dist_screen::xb#2] = init_dist_screen::d#0
|
|
init_dist_screen::screen_bottomline#3[init_dist_screen::xb#2] = init_dist_screen::d#0
|
|
init_dist_screen::x#1 = ++ init_dist_screen::x#4
|
|
init_dist_screen::xb#1 = -- init_dist_screen::xb#2
|
|
to:init_dist_screen::@5
|
|
init_dist_screen::@return: scope:[init_dist_screen] from init_dist_screen::@7
|
|
SQUARES#16 = phi( init_dist_screen::@7/SQUARES#27 )
|
|
heap_head#20 = phi( init_dist_screen::@7/heap_head#31 )
|
|
NUM_SQUARES#12 = phi( init_dist_screen::@7/NUM_SQUARES#21 )
|
|
NUM_SQUARES#3 = NUM_SQUARES#12
|
|
heap_head#7 = heap_head#20
|
|
SQUARES#5 = SQUARES#16
|
|
return
|
|
to:@return
|
|
|
|
void __start()
|
|
__start: scope:[__start] from
|
|
to:__start::__init1
|
|
__start::__init1: scope:[__start] from __start
|
|
heap_head#8 = HEAP_TOP
|
|
NUM_SQUARES#4 = $ff
|
|
SQUARES#6 = (word*) 0
|
|
malloc::size#1 = $3e8
|
|
call malloc
|
|
malloc::return#3 = malloc::return#1
|
|
to:__start::@2
|
|
__start::@2: scope:[__start] from __start::__init1
|
|
SQUARES#46 = phi( __start::__init1/SQUARES#6 )
|
|
NUM_SQUARES#36 = phi( __start::__init1/NUM_SQUARES#4 )
|
|
heap_head#21 = phi( __start::__init1/heap_head#1 )
|
|
malloc::return#7 = phi( __start::__init1/malloc::return#3 )
|
|
__start::__init1_$0 = malloc::return#7
|
|
heap_head#9 = heap_head#21
|
|
SCREEN_DIST#0 = ((byte*)) __start::__init1_$0
|
|
malloc::size#2 = $3e8
|
|
call malloc
|
|
malloc::return#4 = malloc::return#1
|
|
to:__start::@3
|
|
__start::@3: scope:[__start] from __start::@2
|
|
SQUARES#38 = phi( __start::@2/SQUARES#46 )
|
|
NUM_SQUARES#28 = phi( __start::@2/NUM_SQUARES#36 )
|
|
SCREEN_DIST#10 = phi( __start::@2/SCREEN_DIST#0 )
|
|
heap_head#22 = phi( __start::@2/heap_head#1 )
|
|
malloc::return#8 = phi( __start::@2/malloc::return#4 )
|
|
__start::__init1_$1 = malloc::return#8
|
|
heap_head#10 = heap_head#22
|
|
SCREEN_ANGLE#0 = ((byte*)) __start::__init1_$1
|
|
to:__start::@1
|
|
__start::@1: scope:[__start] from __start::@3
|
|
SCREEN_ANGLE#8 = phi( __start::@3/SCREEN_ANGLE#0 )
|
|
SQUARES#28 = phi( __start::@3/SQUARES#38 )
|
|
heap_head#32 = phi( __start::@3/heap_head#10 )
|
|
NUM_SQUARES#22 = phi( __start::@3/NUM_SQUARES#28 )
|
|
SCREEN_DIST#5 = phi( __start::@3/SCREEN_DIST#10 )
|
|
call main
|
|
to:__start::@4
|
|
__start::@4: scope:[__start] from __start::@1
|
|
SCREEN_ANGLE#7 = phi( __start::@1/SCREEN_ANGLE#8 )
|
|
SCREEN_DIST#7 = phi( __start::@1/SCREEN_DIST#5 )
|
|
SQUARES#17 = phi( __start::@1/SQUARES#3 )
|
|
heap_head#23 = phi( __start::@1/heap_head#5 )
|
|
NUM_SQUARES#13 = phi( __start::@1/NUM_SQUARES#1 )
|
|
NUM_SQUARES#5 = NUM_SQUARES#13
|
|
heap_head#11 = heap_head#23
|
|
SQUARES#7 = SQUARES#17
|
|
to:__start::@return
|
|
__start::@return: scope:[__start] from __start::@4
|
|
SCREEN_ANGLE#4 = phi( __start::@4/SCREEN_ANGLE#7 )
|
|
SCREEN_DIST#4 = phi( __start::@4/SCREEN_DIST#7 )
|
|
SQUARES#18 = phi( __start::@4/SQUARES#7 )
|
|
NUM_SQUARES#14 = phi( __start::@4/NUM_SQUARES#5 )
|
|
heap_head#24 = phi( __start::@4/heap_head#11 )
|
|
heap_head#12 = heap_head#24
|
|
NUM_SQUARES#6 = NUM_SQUARES#14
|
|
SQUARES#8 = SQUARES#18
|
|
SCREEN_DIST#1 = SCREEN_DIST#4
|
|
SCREEN_ANGLE#1 = SCREEN_ANGLE#4
|
|
return
|
|
to:@return
|
|
|
|
SYMBOL TABLE SSA
|
|
const word* CORDIC_ATAN2_ANGLES_16[CORDIC_ITERATIONS_16] = kickasm {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
|
|
.word 256*2*256*atan(1/pow(2,i))/PI/2
|
|
}}
|
|
const nomodify byte CORDIC_ITERATIONS_16 = $f
|
|
const nomodify byte FILL_CHAR = '@'
|
|
const byte* HEAP_TOP = (byte*)$a000
|
|
byte NUM_SQUARES
|
|
byte NUM_SQUARES#0
|
|
byte NUM_SQUARES#1
|
|
byte NUM_SQUARES#10
|
|
byte NUM_SQUARES#11
|
|
byte NUM_SQUARES#12
|
|
byte NUM_SQUARES#13
|
|
byte NUM_SQUARES#14
|
|
byte NUM_SQUARES#15
|
|
byte NUM_SQUARES#16
|
|
byte NUM_SQUARES#17
|
|
byte NUM_SQUARES#18
|
|
byte NUM_SQUARES#19
|
|
byte NUM_SQUARES#2
|
|
byte NUM_SQUARES#20
|
|
byte NUM_SQUARES#21
|
|
byte NUM_SQUARES#22
|
|
byte NUM_SQUARES#23
|
|
byte NUM_SQUARES#24
|
|
byte NUM_SQUARES#25
|
|
byte NUM_SQUARES#26
|
|
byte NUM_SQUARES#27
|
|
byte NUM_SQUARES#28
|
|
byte NUM_SQUARES#29
|
|
byte NUM_SQUARES#3
|
|
byte NUM_SQUARES#30
|
|
byte NUM_SQUARES#31
|
|
byte NUM_SQUARES#32
|
|
byte NUM_SQUARES#33
|
|
byte NUM_SQUARES#34
|
|
byte NUM_SQUARES#35
|
|
byte NUM_SQUARES#36
|
|
byte NUM_SQUARES#37
|
|
byte NUM_SQUARES#38
|
|
byte NUM_SQUARES#39
|
|
byte NUM_SQUARES#4
|
|
byte NUM_SQUARES#40
|
|
byte NUM_SQUARES#41
|
|
byte NUM_SQUARES#42
|
|
byte NUM_SQUARES#43
|
|
byte NUM_SQUARES#5
|
|
byte NUM_SQUARES#6
|
|
byte NUM_SQUARES#7
|
|
byte NUM_SQUARES#8
|
|
byte NUM_SQUARES#9
|
|
const byte RADIX::BINARY = 2
|
|
const byte RADIX::DECIMAL = $a
|
|
const byte RADIX::HEXADECIMAL = $10
|
|
const byte RADIX::OCTAL = 8
|
|
byte* SCREEN_ANGLE
|
|
byte* SCREEN_ANGLE#0
|
|
byte* SCREEN_ANGLE#1
|
|
byte* SCREEN_ANGLE#10
|
|
byte* SCREEN_ANGLE#11
|
|
byte* SCREEN_ANGLE#12
|
|
byte* SCREEN_ANGLE#13
|
|
byte* SCREEN_ANGLE#14
|
|
byte* SCREEN_ANGLE#15
|
|
byte* SCREEN_ANGLE#2
|
|
byte* SCREEN_ANGLE#3
|
|
byte* SCREEN_ANGLE#4
|
|
byte* SCREEN_ANGLE#5
|
|
byte* SCREEN_ANGLE#6
|
|
byte* SCREEN_ANGLE#7
|
|
byte* SCREEN_ANGLE#8
|
|
byte* SCREEN_ANGLE#9
|
|
byte* SCREEN_DIST
|
|
byte* SCREEN_DIST#0
|
|
byte* SCREEN_DIST#1
|
|
byte* SCREEN_DIST#10
|
|
byte* SCREEN_DIST#11
|
|
byte* SCREEN_DIST#12
|
|
byte* SCREEN_DIST#13
|
|
byte* SCREEN_DIST#14
|
|
byte* SCREEN_DIST#15
|
|
byte* SCREEN_DIST#16
|
|
byte* SCREEN_DIST#2
|
|
byte* SCREEN_DIST#3
|
|
byte* SCREEN_DIST#4
|
|
byte* SCREEN_DIST#5
|
|
byte* SCREEN_DIST#6
|
|
byte* SCREEN_DIST#7
|
|
byte* SCREEN_DIST#8
|
|
byte* SCREEN_DIST#9
|
|
const nomodify byte* SCREEN_FILL = (byte*)$400
|
|
const byte SIZEOF_WORD = 2
|
|
word* SQUARES
|
|
word* SQUARES#0
|
|
word* SQUARES#1
|
|
word* SQUARES#10
|
|
word* SQUARES#11
|
|
word* SQUARES#12
|
|
word* SQUARES#13
|
|
word* SQUARES#14
|
|
word* SQUARES#15
|
|
word* SQUARES#16
|
|
word* SQUARES#17
|
|
word* SQUARES#18
|
|
word* SQUARES#19
|
|
word* SQUARES#2
|
|
word* SQUARES#20
|
|
word* SQUARES#21
|
|
word* SQUARES#22
|
|
word* SQUARES#23
|
|
word* SQUARES#24
|
|
word* SQUARES#25
|
|
word* SQUARES#26
|
|
word* SQUARES#27
|
|
word* SQUARES#28
|
|
word* SQUARES#29
|
|
word* SQUARES#3
|
|
word* SQUARES#30
|
|
word* SQUARES#31
|
|
word* SQUARES#32
|
|
word* SQUARES#33
|
|
word* SQUARES#34
|
|
word* SQUARES#35
|
|
word* SQUARES#36
|
|
word* SQUARES#37
|
|
word* SQUARES#38
|
|
word* SQUARES#39
|
|
word* SQUARES#4
|
|
word* SQUARES#40
|
|
word* SQUARES#41
|
|
word* SQUARES#42
|
|
word* SQUARES#43
|
|
word* SQUARES#44
|
|
word* SQUARES#45
|
|
word* SQUARES#46
|
|
word* SQUARES#47
|
|
word* SQUARES#5
|
|
word* SQUARES#6
|
|
word* SQUARES#7
|
|
word* SQUARES#8
|
|
word* SQUARES#9
|
|
void __start()
|
|
void*~ __start::__init1_$0
|
|
void*~ __start::__init1_$1
|
|
word atan2_16(signed word atan2_16::x , signed word atan2_16::y)
|
|
bool~ atan2_16::$0
|
|
signed word~ atan2_16::$1
|
|
bool~ atan2_16::$10
|
|
bool~ atan2_16::$11
|
|
number~ atan2_16::$12
|
|
bool~ atan2_16::$13
|
|
bool~ atan2_16::$14
|
|
word~ atan2_16::$15
|
|
bool~ atan2_16::$16
|
|
bool~ atan2_16::$17
|
|
bool~ atan2_16::$18
|
|
bool~ atan2_16::$19
|
|
signed word~ atan2_16::$2
|
|
bool~ atan2_16::$20
|
|
bool~ atan2_16::$21
|
|
byte~ atan2_16::$22
|
|
byte~ atan2_16::$23
|
|
bool~ atan2_16::$24
|
|
signed word~ atan2_16::$3
|
|
signed word~ atan2_16::$4
|
|
bool~ atan2_16::$5
|
|
signed word~ atan2_16::$6
|
|
signed word~ atan2_16::$7
|
|
signed word~ atan2_16::$8
|
|
signed word~ atan2_16::$9
|
|
word atan2_16::angle
|
|
word atan2_16::angle#0
|
|
word atan2_16::angle#1
|
|
word atan2_16::angle#10
|
|
word atan2_16::angle#11
|
|
word atan2_16::angle#12
|
|
word atan2_16::angle#13
|
|
word atan2_16::angle#14
|
|
word atan2_16::angle#15
|
|
word atan2_16::angle#16
|
|
word atan2_16::angle#17
|
|
word atan2_16::angle#18
|
|
word atan2_16::angle#19
|
|
word atan2_16::angle#2
|
|
word atan2_16::angle#20
|
|
word atan2_16::angle#3
|
|
word atan2_16::angle#4
|
|
word atan2_16::angle#5
|
|
word atan2_16::angle#6
|
|
word atan2_16::angle#7
|
|
word atan2_16::angle#8
|
|
word atan2_16::angle#9
|
|
byte atan2_16::i
|
|
byte atan2_16::i#0
|
|
byte atan2_16::i#1
|
|
byte atan2_16::i#10
|
|
byte atan2_16::i#11
|
|
byte atan2_16::i#2
|
|
byte atan2_16::i#3
|
|
byte atan2_16::i#4
|
|
byte atan2_16::i#5
|
|
byte atan2_16::i#6
|
|
byte atan2_16::i#7
|
|
byte atan2_16::i#8
|
|
byte atan2_16::i#9
|
|
word atan2_16::return
|
|
word atan2_16::return#0
|
|
word atan2_16::return#1
|
|
word atan2_16::return#2
|
|
word atan2_16::return#3
|
|
word atan2_16::return#4
|
|
byte atan2_16::shift
|
|
byte atan2_16::shift#0
|
|
byte atan2_16::shift#1
|
|
byte atan2_16::shift#2
|
|
byte atan2_16::shift#3
|
|
byte atan2_16::shift#4
|
|
signed word atan2_16::x
|
|
signed word atan2_16::x#0
|
|
signed word atan2_16::x#1
|
|
signed word atan2_16::x#10
|
|
signed word atan2_16::x#11
|
|
signed word atan2_16::x#12
|
|
signed word atan2_16::x#13
|
|
signed word atan2_16::x#14
|
|
signed word atan2_16::x#15
|
|
signed word atan2_16::x#16
|
|
signed word atan2_16::x#17
|
|
signed word atan2_16::x#18
|
|
signed word atan2_16::x#2
|
|
signed word atan2_16::x#3
|
|
signed word atan2_16::x#4
|
|
signed word atan2_16::x#5
|
|
signed word atan2_16::x#6
|
|
signed word atan2_16::x#7
|
|
signed word atan2_16::x#8
|
|
signed word atan2_16::x#9
|
|
signed word atan2_16::xd
|
|
signed word atan2_16::xd#0
|
|
signed word atan2_16::xd#1
|
|
signed word atan2_16::xd#2
|
|
signed word atan2_16::xd#3
|
|
signed word atan2_16::xd#4
|
|
signed word atan2_16::xd#5
|
|
signed word atan2_16::xd#6
|
|
signed word atan2_16::xd#7
|
|
signed word atan2_16::xd#8
|
|
signed word atan2_16::xd#9
|
|
signed word atan2_16::xi
|
|
signed word atan2_16::xi#0
|
|
signed word atan2_16::xi#1
|
|
signed word atan2_16::xi#10
|
|
signed word atan2_16::xi#11
|
|
signed word atan2_16::xi#12
|
|
signed word atan2_16::xi#2
|
|
signed word atan2_16::xi#3
|
|
signed word atan2_16::xi#4
|
|
signed word atan2_16::xi#5
|
|
signed word atan2_16::xi#6
|
|
signed word atan2_16::xi#7
|
|
signed word atan2_16::xi#8
|
|
signed word atan2_16::xi#9
|
|
signed word atan2_16::y
|
|
signed word atan2_16::y#0
|
|
signed word atan2_16::y#1
|
|
signed word atan2_16::y#10
|
|
signed word atan2_16::y#11
|
|
signed word atan2_16::y#12
|
|
signed word atan2_16::y#13
|
|
signed word atan2_16::y#14
|
|
signed word atan2_16::y#15
|
|
signed word atan2_16::y#16
|
|
signed word atan2_16::y#17
|
|
signed word atan2_16::y#18
|
|
signed word atan2_16::y#19
|
|
signed word atan2_16::y#2
|
|
signed word atan2_16::y#20
|
|
signed word atan2_16::y#3
|
|
signed word atan2_16::y#4
|
|
signed word atan2_16::y#5
|
|
signed word atan2_16::y#6
|
|
signed word atan2_16::y#7
|
|
signed word atan2_16::y#8
|
|
signed word atan2_16::y#9
|
|
signed word atan2_16::yd
|
|
signed word atan2_16::yd#0
|
|
signed word atan2_16::yd#1
|
|
signed word atan2_16::yd#2
|
|
signed word atan2_16::yd#3
|
|
signed word atan2_16::yd#4
|
|
signed word atan2_16::yd#5
|
|
signed word atan2_16::yd#6
|
|
signed word atan2_16::yd#7
|
|
signed word atan2_16::yd#8
|
|
signed word atan2_16::yd#9
|
|
signed word atan2_16::yi
|
|
signed word atan2_16::yi#0
|
|
signed word atan2_16::yi#1
|
|
signed word atan2_16::yi#10
|
|
signed word atan2_16::yi#11
|
|
signed word atan2_16::yi#12
|
|
signed word atan2_16::yi#13
|
|
signed word atan2_16::yi#14
|
|
signed word atan2_16::yi#15
|
|
signed word atan2_16::yi#2
|
|
signed word atan2_16::yi#3
|
|
signed word atan2_16::yi#4
|
|
signed word atan2_16::yi#5
|
|
signed word atan2_16::yi#6
|
|
signed word atan2_16::yi#7
|
|
signed word atan2_16::yi#8
|
|
signed word atan2_16::yi#9
|
|
word* bsearch16u(word bsearch16u::key , word* bsearch16u::items , byte bsearch16u::num)
|
|
bool~ bsearch16u::$0
|
|
word*~ bsearch16u::$1
|
|
bool~ bsearch16u::$10
|
|
bool~ bsearch16u::$11
|
|
bool~ bsearch16u::$12
|
|
word*~ bsearch16u::$13
|
|
byte~ bsearch16u::$14
|
|
number~ bsearch16u::$15
|
|
number~ bsearch16u::$16
|
|
signed word~ bsearch16u::$17
|
|
signed word~ bsearch16u::$18
|
|
word*~ bsearch16u::$2
|
|
word*~ bsearch16u::$3
|
|
word*~ bsearch16u::$4
|
|
bool~ bsearch16u::$5
|
|
byte~ bsearch16u::$6
|
|
word*~ bsearch16u::$7
|
|
signed word~ bsearch16u::$8
|
|
bool~ bsearch16u::$9
|
|
word* bsearch16u::items
|
|
word* bsearch16u::items#0
|
|
word* bsearch16u::items#1
|
|
word* bsearch16u::items#2
|
|
word* bsearch16u::items#3
|
|
word* bsearch16u::items#4
|
|
word* bsearch16u::items#5
|
|
word* bsearch16u::items#6
|
|
word* bsearch16u::items#7
|
|
word* bsearch16u::items#8
|
|
word* bsearch16u::items#9
|
|
word bsearch16u::key
|
|
word bsearch16u::key#0
|
|
word bsearch16u::key#1
|
|
word bsearch16u::key#2
|
|
word bsearch16u::key#3
|
|
word bsearch16u::key#4
|
|
word bsearch16u::key#5
|
|
word bsearch16u::key#6
|
|
word bsearch16u::key#7
|
|
byte bsearch16u::num
|
|
byte bsearch16u::num#0
|
|
byte bsearch16u::num#1
|
|
byte bsearch16u::num#2
|
|
byte bsearch16u::num#3
|
|
byte bsearch16u::num#4
|
|
byte bsearch16u::num#5
|
|
byte bsearch16u::num#6
|
|
byte bsearch16u::num#7
|
|
byte bsearch16u::num#8
|
|
word* bsearch16u::pivot
|
|
word* bsearch16u::pivot#0
|
|
word* bsearch16u::pivot#1
|
|
word* bsearch16u::pivot#2
|
|
word* bsearch16u::pivot#3
|
|
signed word bsearch16u::result
|
|
signed word bsearch16u::result#0
|
|
signed word bsearch16u::result#1
|
|
word* bsearch16u::return
|
|
word* bsearch16u::return#0
|
|
word* bsearch16u::return#1
|
|
word* bsearch16u::return#2
|
|
word* bsearch16u::return#3
|
|
word* bsearch16u::return#4
|
|
word* bsearch16u::return#5
|
|
byte* heap_head
|
|
byte* heap_head#0
|
|
byte* heap_head#1
|
|
byte* heap_head#10
|
|
byte* heap_head#11
|
|
byte* heap_head#12
|
|
byte* heap_head#13
|
|
byte* heap_head#14
|
|
byte* heap_head#15
|
|
byte* heap_head#16
|
|
byte* heap_head#17
|
|
byte* heap_head#18
|
|
byte* heap_head#19
|
|
byte* heap_head#2
|
|
byte* heap_head#20
|
|
byte* heap_head#21
|
|
byte* heap_head#22
|
|
byte* heap_head#23
|
|
byte* heap_head#24
|
|
byte* heap_head#25
|
|
byte* heap_head#26
|
|
byte* heap_head#27
|
|
byte* heap_head#28
|
|
byte* heap_head#29
|
|
byte* heap_head#3
|
|
byte* heap_head#30
|
|
byte* heap_head#31
|
|
byte* heap_head#32
|
|
byte* heap_head#33
|
|
byte* heap_head#34
|
|
byte* heap_head#35
|
|
byte* heap_head#36
|
|
byte* heap_head#37
|
|
byte* heap_head#38
|
|
byte* heap_head#39
|
|
byte* heap_head#4
|
|
byte* heap_head#40
|
|
byte* heap_head#41
|
|
byte* heap_head#42
|
|
byte* heap_head#43
|
|
byte* heap_head#44
|
|
byte* heap_head#45
|
|
byte* heap_head#46
|
|
byte* heap_head#47
|
|
byte* heap_head#48
|
|
byte* heap_head#49
|
|
byte* heap_head#5
|
|
byte* heap_head#50
|
|
byte* heap_head#51
|
|
byte* heap_head#52
|
|
byte* heap_head#6
|
|
byte* heap_head#7
|
|
byte* heap_head#8
|
|
byte* heap_head#9
|
|
void init_angle_screen(byte* init_angle_screen::screen)
|
|
byte*~ init_angle_screen::$0
|
|
byte*~ init_angle_screen::$1
|
|
number~ init_angle_screen::$10
|
|
number~ init_angle_screen::$11
|
|
bool~ init_angle_screen::$12
|
|
bool~ init_angle_screen::$2
|
|
number~ init_angle_screen::$3
|
|
number~ init_angle_screen::$4
|
|
number~ init_angle_screen::$5
|
|
word~ init_angle_screen::$6
|
|
number~ init_angle_screen::$7
|
|
number~ init_angle_screen::$8
|
|
byte~ init_angle_screen::$9
|
|
byte init_angle_screen::ang_w
|
|
byte init_angle_screen::ang_w#0
|
|
word init_angle_screen::angle_w
|
|
word init_angle_screen::angle_w#0
|
|
byte* init_angle_screen::screen
|
|
byte* init_angle_screen::screen#0
|
|
byte* init_angle_screen::screen#1
|
|
byte* init_angle_screen::screen_bottomline
|
|
byte* init_angle_screen::screen_bottomline#0
|
|
byte* init_angle_screen::screen_bottomline#1
|
|
byte* init_angle_screen::screen_bottomline#2
|
|
byte* init_angle_screen::screen_bottomline#3
|
|
byte* init_angle_screen::screen_bottomline#4
|
|
byte* init_angle_screen::screen_bottomline#5
|
|
byte* init_angle_screen::screen_bottomline#6
|
|
byte* init_angle_screen::screen_topline
|
|
byte* init_angle_screen::screen_topline#0
|
|
byte* init_angle_screen::screen_topline#1
|
|
byte* init_angle_screen::screen_topline#2
|
|
byte* init_angle_screen::screen_topline#3
|
|
byte* init_angle_screen::screen_topline#4
|
|
byte* init_angle_screen::screen_topline#5
|
|
byte* init_angle_screen::screen_topline#6
|
|
byte init_angle_screen::x
|
|
byte init_angle_screen::x#0
|
|
byte init_angle_screen::x#1
|
|
byte init_angle_screen::x#2
|
|
byte init_angle_screen::x#3
|
|
byte init_angle_screen::x#4
|
|
byte init_angle_screen::xb
|
|
byte init_angle_screen::xb#0
|
|
byte init_angle_screen::xb#1
|
|
byte init_angle_screen::xb#2
|
|
byte init_angle_screen::xb#3
|
|
byte init_angle_screen::xb#4
|
|
signed word init_angle_screen::xw
|
|
signed word init_angle_screen::xw#0
|
|
byte init_angle_screen::y
|
|
byte init_angle_screen::y#0
|
|
byte init_angle_screen::y#1
|
|
byte init_angle_screen::y#2
|
|
byte init_angle_screen::y#3
|
|
byte init_angle_screen::y#4
|
|
byte init_angle_screen::y#5
|
|
byte init_angle_screen::y#6
|
|
signed word init_angle_screen::yw
|
|
signed word init_angle_screen::yw#0
|
|
void init_dist_screen(byte* init_dist_screen::screen)
|
|
byte*~ init_dist_screen::$1
|
|
bool~ init_dist_screen::$10
|
|
number~ init_dist_screen::$11
|
|
bool~ init_dist_screen::$12
|
|
number~ init_dist_screen::$13
|
|
number~ init_dist_screen::$14
|
|
number~ init_dist_screen::$15
|
|
number~ init_dist_screen::$16
|
|
number~ init_dist_screen::$17
|
|
word~ init_dist_screen::$18
|
|
word~ init_dist_screen::$19
|
|
number~ init_dist_screen::$2
|
|
byte~ init_dist_screen::$20
|
|
bool~ init_dist_screen::$21
|
|
bool~ init_dist_screen::$3
|
|
number~ init_dist_screen::$4
|
|
number~ init_dist_screen::$5
|
|
number~ init_dist_screen::$6
|
|
number~ init_dist_screen::$7
|
|
number~ init_dist_screen::$8
|
|
word~ init_dist_screen::$9
|
|
byte init_dist_screen::d
|
|
byte init_dist_screen::d#0
|
|
word init_dist_screen::ds
|
|
word init_dist_screen::ds#0
|
|
byte* init_dist_screen::screen
|
|
byte* init_dist_screen::screen#0
|
|
byte* init_dist_screen::screen#1
|
|
byte* init_dist_screen::screen#2
|
|
byte* init_dist_screen::screen_bottomline
|
|
byte* init_dist_screen::screen_bottomline#0
|
|
byte* init_dist_screen::screen_bottomline#1
|
|
byte* init_dist_screen::screen_bottomline#10
|
|
byte* init_dist_screen::screen_bottomline#11
|
|
byte* init_dist_screen::screen_bottomline#12
|
|
byte* init_dist_screen::screen_bottomline#13
|
|
byte* init_dist_screen::screen_bottomline#14
|
|
byte* init_dist_screen::screen_bottomline#2
|
|
byte* init_dist_screen::screen_bottomline#3
|
|
byte* init_dist_screen::screen_bottomline#4
|
|
byte* init_dist_screen::screen_bottomline#5
|
|
byte* init_dist_screen::screen_bottomline#6
|
|
byte* init_dist_screen::screen_bottomline#7
|
|
byte* init_dist_screen::screen_bottomline#8
|
|
byte* init_dist_screen::screen_bottomline#9
|
|
byte* init_dist_screen::screen_topline
|
|
byte* init_dist_screen::screen_topline#0
|
|
byte* init_dist_screen::screen_topline#1
|
|
byte* init_dist_screen::screen_topline#10
|
|
byte* init_dist_screen::screen_topline#11
|
|
byte* init_dist_screen::screen_topline#12
|
|
byte* init_dist_screen::screen_topline#13
|
|
byte* init_dist_screen::screen_topline#14
|
|
byte* init_dist_screen::screen_topline#2
|
|
byte* init_dist_screen::screen_topline#3
|
|
byte* init_dist_screen::screen_topline#4
|
|
byte* init_dist_screen::screen_topline#5
|
|
byte* init_dist_screen::screen_topline#6
|
|
byte* init_dist_screen::screen_topline#7
|
|
byte* init_dist_screen::screen_topline#8
|
|
byte* init_dist_screen::screen_topline#9
|
|
byte init_dist_screen::x
|
|
byte init_dist_screen::x#0
|
|
byte init_dist_screen::x#1
|
|
byte init_dist_screen::x#2
|
|
byte init_dist_screen::x#3
|
|
byte init_dist_screen::x#4
|
|
byte init_dist_screen::x#5
|
|
byte init_dist_screen::x#6
|
|
byte init_dist_screen::x#7
|
|
byte init_dist_screen::x#8
|
|
byte init_dist_screen::x2
|
|
byte init_dist_screen::x2#0
|
|
byte init_dist_screen::x2#1
|
|
byte init_dist_screen::x2#2
|
|
byte init_dist_screen::xb
|
|
byte init_dist_screen::xb#0
|
|
byte init_dist_screen::xb#1
|
|
byte init_dist_screen::xb#2
|
|
byte init_dist_screen::xb#3
|
|
byte init_dist_screen::xb#4
|
|
byte init_dist_screen::xb#5
|
|
byte init_dist_screen::xb#6
|
|
byte init_dist_screen::xb#7
|
|
byte init_dist_screen::xb#8
|
|
byte init_dist_screen::xd
|
|
byte init_dist_screen::xd#0
|
|
word init_dist_screen::xds
|
|
word init_dist_screen::xds#0
|
|
byte init_dist_screen::y
|
|
byte init_dist_screen::y#0
|
|
byte init_dist_screen::y#1
|
|
byte init_dist_screen::y#10
|
|
byte init_dist_screen::y#11
|
|
byte init_dist_screen::y#12
|
|
byte init_dist_screen::y#13
|
|
byte init_dist_screen::y#14
|
|
byte init_dist_screen::y#2
|
|
byte init_dist_screen::y#3
|
|
byte init_dist_screen::y#4
|
|
byte init_dist_screen::y#5
|
|
byte init_dist_screen::y#6
|
|
byte init_dist_screen::y#7
|
|
byte init_dist_screen::y#8
|
|
byte init_dist_screen::y#9
|
|
byte init_dist_screen::y2
|
|
byte init_dist_screen::y2#0
|
|
byte init_dist_screen::y2#1
|
|
byte init_dist_screen::y2#2
|
|
byte init_dist_screen::yd
|
|
byte init_dist_screen::yd#0
|
|
word init_dist_screen::yds
|
|
word init_dist_screen::yds#0
|
|
word init_dist_screen::yds#1
|
|
word init_dist_screen::yds#2
|
|
word init_dist_screen::yds#3
|
|
word init_dist_screen::yds#4
|
|
word init_dist_screen::yds#5
|
|
word init_dist_screen::yds#6
|
|
word init_dist_screen::yds#7
|
|
void init_squares()
|
|
byte~ init_squares::$0
|
|
void*~ init_squares::$1
|
|
bool~ init_squares::$2
|
|
number~ init_squares::$3
|
|
number~ init_squares::$4
|
|
byte init_squares::i
|
|
byte init_squares::i#0
|
|
byte init_squares::i#1
|
|
byte init_squares::i#2
|
|
byte init_squares::i#3
|
|
word init_squares::sqr
|
|
word init_squares::sqr#0
|
|
word init_squares::sqr#1
|
|
word init_squares::sqr#2
|
|
word init_squares::sqr#3
|
|
word* init_squares::squares
|
|
word* init_squares::squares#0
|
|
word* init_squares::squares#1
|
|
word* init_squares::squares#2
|
|
word* init_squares::squares#3
|
|
void main()
|
|
bool~ main::$2
|
|
bool~ main::$3
|
|
bool~ main::$4
|
|
bool~ main::$5
|
|
bool~ main::$6
|
|
bool~ main::$7
|
|
bool~ main::$8
|
|
byte* main::angle
|
|
byte* main::angle#0
|
|
byte* main::angle#1
|
|
byte* main::angle#2
|
|
byte* main::angle#3
|
|
byte* main::angle#4
|
|
byte* main::angle#5
|
|
byte* main::dist
|
|
byte* main::dist#0
|
|
byte* main::dist#1
|
|
byte* main::dist#2
|
|
byte* main::dist#3
|
|
byte* main::dist#4
|
|
byte* main::dist#5
|
|
word main::dist_angle
|
|
word main::dist_angle#0
|
|
word main::dist_angle#1
|
|
byte* main::fill
|
|
byte* main::fill#0
|
|
byte* main::fill#1
|
|
byte* main::fill#2
|
|
byte* main::fill#3
|
|
byte* main::fill#4
|
|
byte* main::fill#5
|
|
word main::min_dist_angle
|
|
word main::min_dist_angle#0
|
|
word main::min_dist_angle#1
|
|
word main::min_dist_angle#2
|
|
word main::min_dist_angle#3
|
|
word main::min_dist_angle#4
|
|
word main::min_dist_angle#5
|
|
byte* main::min_fill
|
|
byte* main::min_fill#0
|
|
byte* main::min_fill#1
|
|
byte* main::min_fill#2
|
|
byte* main::min_fill#3
|
|
byte* main::min_fill#4
|
|
byte* main::min_fill#5
|
|
byte* main::min_fill#6
|
|
void* malloc(word malloc::size)
|
|
byte*~ malloc::$0
|
|
byte* malloc::mem
|
|
byte* malloc::mem#0
|
|
void* malloc::return
|
|
void* malloc::return#0
|
|
void* malloc::return#1
|
|
void* malloc::return#2
|
|
void* malloc::return#3
|
|
void* malloc::return#4
|
|
void* malloc::return#5
|
|
void* malloc::return#6
|
|
void* malloc::return#7
|
|
void* malloc::return#8
|
|
word malloc::size
|
|
word malloc::size#0
|
|
word malloc::size#1
|
|
word malloc::size#2
|
|
word malloc::size#3
|
|
word sqr(byte sqr::val)
|
|
byte~ sqr::$0
|
|
word sqr::return
|
|
word sqr::return#0
|
|
word sqr::return#1
|
|
word sqr::return#2
|
|
word sqr::return#3
|
|
word sqr::return#4
|
|
word sqr::return#5
|
|
word sqr::return#6
|
|
byte sqr::val
|
|
byte sqr::val#0
|
|
byte sqr::val#1
|
|
byte sqr::val#2
|
|
byte sqrt(word sqrt::val)
|
|
word*~ sqrt::$0
|
|
word~ sqrt::$1
|
|
word~ sqrt::$2
|
|
word* sqrt::found
|
|
word* sqrt::found#0
|
|
byte sqrt::return
|
|
byte sqrt::return#0
|
|
byte sqrt::return#1
|
|
byte sqrt::return#2
|
|
byte sqrt::return#3
|
|
byte sqrt::return#4
|
|
byte sqrt::sq
|
|
byte sqrt::sq#0
|
|
word sqrt::val
|
|
word sqrt::val#0
|
|
word sqrt::val#1
|
|
|
|
Fixing inline constructor with main::$9 = (byte)*main::dist#3 w= (byte)*main::angle#3
|
|
Fixing inline constructor with init_angle_screen::$13 = (byte)init_angle_screen::$4 w= (byte)0
|
|
Fixing inline constructor with init_angle_screen::$14 = (byte)init_angle_screen::$5 w= (byte)0
|
|
Successful SSA optimization Pass2FixInlineConstructors
|
|
Adding number conversion cast (unumber) 0 in bsearch16u::$5 = bsearch16u::num#3 > 0
|
|
Adding number conversion cast (unumber) 1 in bsearch16u::$6 = bsearch16u::num#4 >> 1
|
|
Adding number conversion cast (snumber) 0 in bsearch16u::$9 = bsearch16u::result#0 == 0
|
|
Adding number conversion cast (snumber) 0 in bsearch16u::$11 = bsearch16u::result#1 > 0
|
|
Adding number conversion cast (unumber) 1 in bsearch16u::num#0 = bsearch16u::num#5 >> 1
|
|
Adding number conversion cast (unumber) 1 in bsearch16u::$15 = 1 * SIZEOF_WORD
|
|
Adding number conversion cast (unumber) bsearch16u::$15 in bsearch16u::$15 = (unumber)1 * SIZEOF_WORD
|
|
Adding number conversion cast (unumber) 1 in bsearch16u::$16 = 1 * SIZEOF_WORD
|
|
Adding number conversion cast (unumber) bsearch16u::$16 in bsearch16u::$16 = (unumber)1 * SIZEOF_WORD
|
|
Adding number conversion cast (unumber) 2 in init_squares::$3 = init_squares::i#3 * 2
|
|
Adding number conversion cast (unumber) init_squares::$3 in init_squares::$3 = init_squares::i#3 * (unumber)2
|
|
Adding number conversion cast (unumber) 1 in init_squares::$4 = init_squares::$3 + 1
|
|
Adding number conversion cast (unumber) init_squares::$4 in init_squares::$4 = init_squares::$3 + (unumber)1
|
|
Adding number conversion cast (snumber) 0 in atan2_16::$0 = atan2_16::y#1 >= 0
|
|
Adding number conversion cast (snumber) 0 in atan2_16::$5 = atan2_16::x#1 >= 0
|
|
Adding number conversion cast (snumber) 0 in atan2_16::$16 = atan2_16::yi#3 == 0
|
|
Adding number conversion cast (unumber) 2 in atan2_16::angle#1 = atan2_16::angle#6 / 2
|
|
Adding number conversion cast (snumber) 0 in atan2_16::$10 = atan2_16::x#4 < 0
|
|
Adding number conversion cast (unumber) 2 in atan2_16::$18 = atan2_16::shift#2 >= 2
|
|
Adding number conversion cast (snumber) 2 in atan2_16::xd#1 = atan2_16::xd#3 >> 2
|
|
Adding number conversion cast (snumber) 2 in atan2_16::yd#1 = atan2_16::yd#3 >> 2
|
|
Adding number conversion cast (unumber) 2 in atan2_16::shift#1 = atan2_16::shift#3 - 2
|
|
Adding number conversion cast (unumber) 0 in atan2_16::$24 = 0 != atan2_16::shift#4
|
|
Adding number conversion cast (snumber) 0 in atan2_16::$20 = atan2_16::yi#5 >= 0
|
|
Adding number conversion cast (snumber) 1 in atan2_16::xd#2 = atan2_16::xd#4 >> 1
|
|
Adding number conversion cast (snumber) 1 in atan2_16::yd#2 = atan2_16::yd#4 >> 1
|
|
Adding number conversion cast (unumber) 1 in atan2_16::i#1 = atan2_16::i#5 + rangenext(0,CORDIC_ITERATIONS_16-1)
|
|
Adding number conversion cast (snumber) 0 in atan2_16::$13 = atan2_16::y#4 < 0
|
|
Adding number conversion cast (unumber) $8000 in atan2_16::$12 = $8000 - atan2_16::angle#9
|
|
Adding number conversion cast (unumber) atan2_16::$12 in atan2_16::$12 = (unumber)$8000 - atan2_16::angle#9
|
|
Adding number conversion cast (unumber) $3e8 in main::$6 = main::fill#1 < SCREEN_FILL+$3e8
|
|
Adding number conversion cast (unumber) $ffff in main::$7 = main::min_dist_angle#3 == $ffff
|
|
Adding number conversion cast (unumber) $28*$c in init_angle_screen::$0 = init_angle_screen::screen#1 + $28*$c
|
|
Adding number conversion cast (unumber) $28*$c in init_angle_screen::$1 = init_angle_screen::screen#1 + $28*$c
|
|
Adding number conversion cast (unumber) $13 in init_angle_screen::$2 = init_angle_screen::x#2 <= $13
|
|
Adding number conversion cast (unumber) 2 in init_angle_screen::$3 = init_angle_screen::x#3 * 2
|
|
Adding number conversion cast (unumber) init_angle_screen::$3 in init_angle_screen::$3 = init_angle_screen::x#3 * (unumber)2
|
|
Adding number conversion cast (unumber) $27 in init_angle_screen::$4 = $27 - init_angle_screen::$3
|
|
Adding number conversion cast (unumber) init_angle_screen::$4 in init_angle_screen::$4 = (unumber)$27 - init_angle_screen::$3
|
|
Adding number conversion cast (unumber) 2 in init_angle_screen::$5 = init_angle_screen::y#2 * 2
|
|
Adding number conversion cast (unumber) init_angle_screen::$5 in init_angle_screen::$5 = init_angle_screen::y#2 * (unumber)2
|
|
Adding number conversion cast (unumber) $80 in init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
|
|
Adding number conversion cast (unumber) init_angle_screen::$7 in init_angle_screen::$7 = init_angle_screen::angle_w#0 + (unumber)$80
|
|
Adding number conversion cast (unumber) init_angle_screen::$8 in init_angle_screen::$8 = > init_angle_screen::$7
|
|
Adding number conversion cast (unumber) $80 in init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
|
|
Adding number conversion cast (unumber) init_angle_screen::$10 in init_angle_screen::$10 = (unumber)$80 + init_angle_screen::ang_w#0
|
|
Adding number conversion cast (unumber) $80 in init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
|
|
Adding number conversion cast (unumber) init_angle_screen::$11 in init_angle_screen::$11 = (unumber)$80 - init_angle_screen::ang_w#0
|
|
Adding number conversion cast (unumber) $28 in init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#3 - $28
|
|
Adding number conversion cast (unumber) $28 in init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#3 + $28
|
|
Adding number conversion cast (unumber) $30 in NUM_SQUARES#2 = $30
|
|
Adding number conversion cast (unumber) $28*$18 in init_dist_screen::$1 = init_dist_screen::screen#1 + $28*$18
|
|
Adding number conversion cast (unumber) 2 in init_dist_screen::$2 = init_dist_screen::y#2 * 2
|
|
Adding number conversion cast (unumber) init_dist_screen::$2 in init_dist_screen::$2 = init_dist_screen::y#2 * (unumber)2
|
|
Adding number conversion cast (unumber) $18 in init_dist_screen::$3 = init_dist_screen::y2#0 >= $18
|
|
Adding number conversion cast (unumber) $18 in init_dist_screen::$6 = init_dist_screen::y2#1 - $18
|
|
Adding number conversion cast (unumber) init_dist_screen::$6 in init_dist_screen::$6 = init_dist_screen::y2#1 - (unumber)$18
|
|
Adding number conversion cast (unumber) init_dist_screen::$7 in init_dist_screen::$7 = init_dist_screen::$6
|
|
Adding number conversion cast (unumber) $18 in init_dist_screen::$4 = $18 - init_dist_screen::y2#2
|
|
Adding number conversion cast (unumber) init_dist_screen::$4 in init_dist_screen::$4 = (unumber)$18 - init_dist_screen::y2#2
|
|
Adding number conversion cast (unumber) init_dist_screen::$5 in init_dist_screen::$5 = init_dist_screen::$4
|
|
Adding number conversion cast (unumber) init_dist_screen::$8 in heap_head#44 = phi( init_dist_screen::@2/heap_head#46, init_dist_screen::@3/heap_head#47 )
|
|
NUM_SQUARES#38 = phi( init_dist_screen::@2/NUM_SQUARES#40, init_dist_screen::@3/NUM_SQUARES#41 )
|
|
init_dist_screen::y#7 = phi( init_dist_screen::@2/init_dist_screen::y#9, init_dist_screen::@3/init_dist_screen::y#10 )
|
|
init_dist_screen::screen_bottomline#8 = phi( init_dist_screen::@2/init_dist_screen::screen_bottomline#11, init_dist_screen::@3/init_dist_screen::screen_bottomline#12 )
|
|
init_dist_screen::screen_topline#8 = phi( init_dist_screen::@2/init_dist_screen::screen_topline#11, init_dist_screen::@3/init_dist_screen::screen_topline#12 )
|
|
SQUARES#21 = phi( init_dist_screen::@2/SQUARES#33, init_dist_screen::@3/SQUARES#34 )
|
|
init_dist_screen::$8 = phi( init_dist_screen::@2/init_dist_screen::$7, init_dist_screen::@3/init_dist_screen::$5 )
|
|
Adding number conversion cast (unumber) $13 in init_dist_screen::$10 = init_dist_screen::x#2 <= $13
|
|
Adding number conversion cast (unumber) 2 in init_dist_screen::$11 = init_dist_screen::x#3 * 2
|
|
Adding number conversion cast (unumber) init_dist_screen::$11 in init_dist_screen::$11 = init_dist_screen::x#3 * (unumber)2
|
|
Adding number conversion cast (unumber) $27 in init_dist_screen::$12 = init_dist_screen::x2#0 >= $27
|
|
Adding number conversion cast (unumber) $28 in init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#2 + $28
|
|
Adding number conversion cast (unumber) $28 in init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#2 - $28
|
|
Adding number conversion cast (unumber) $27 in init_dist_screen::$15 = init_dist_screen::x2#1 - $27
|
|
Adding number conversion cast (unumber) init_dist_screen::$15 in init_dist_screen::$15 = init_dist_screen::x2#1 - (unumber)$27
|
|
Adding number conversion cast (unumber) init_dist_screen::$16 in init_dist_screen::$16 = init_dist_screen::$15
|
|
Adding number conversion cast (unumber) $27 in init_dist_screen::$13 = $27 - init_dist_screen::x2#2
|
|
Adding number conversion cast (unumber) init_dist_screen::$13 in init_dist_screen::$13 = (unumber)$27 - init_dist_screen::x2#2
|
|
Adding number conversion cast (unumber) init_dist_screen::$14 in init_dist_screen::$14 = init_dist_screen::$13
|
|
Adding number conversion cast (unumber) init_dist_screen::$17 in heap_head#48 = phi( init_dist_screen::@8/heap_head#50, init_dist_screen::@9/heap_head#51 )
|
|
init_dist_screen::y#11 = phi( init_dist_screen::@8/init_dist_screen::y#12, init_dist_screen::@9/init_dist_screen::y#13 )
|
|
init_dist_screen::xb#4 = phi( init_dist_screen::@8/init_dist_screen::xb#5, init_dist_screen::@9/init_dist_screen::xb#6 )
|
|
init_dist_screen::screen_bottomline#7 = phi( init_dist_screen::@8/init_dist_screen::screen_bottomline#9, init_dist_screen::@9/init_dist_screen::screen_bottomline#10 )
|
|
init_dist_screen::x#6 = phi( init_dist_screen::@8/init_dist_screen::x#7, init_dist_screen::@9/init_dist_screen::x#8 )
|
|
init_dist_screen::screen_topline#7 = phi( init_dist_screen::@8/init_dist_screen::screen_topline#9, init_dist_screen::@9/init_dist_screen::screen_topline#10 )
|
|
NUM_SQUARES#27 = phi( init_dist_screen::@8/NUM_SQUARES#34, init_dist_screen::@9/NUM_SQUARES#35 )
|
|
init_dist_screen::yds#2 = phi( init_dist_screen::@8/init_dist_screen::yds#3, init_dist_screen::@9/init_dist_screen::yds#4 )
|
|
SQUARES#20 = phi( init_dist_screen::@8/SQUARES#36, init_dist_screen::@9/SQUARES#37 )
|
|
init_dist_screen::$17 = phi( init_dist_screen::@8/init_dist_screen::$16, init_dist_screen::@9/init_dist_screen::$14 )
|
|
Adding number conversion cast (unumber) $3e8 in malloc::size#1 = $3e8
|
|
Adding number conversion cast (unumber) $3e8 in malloc::size#2 = $3e8
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
Inlining cast malloc::return#0 = (void*)malloc::mem#0
|
|
Inlining cast SQUARES#0 = (word*)init_squares::$1
|
|
Inlining cast NUM_SQUARES#2 = (unumber)$30
|
|
Inlining cast malloc::size#1 = (unumber)$3e8
|
|
Inlining cast SCREEN_DIST#0 = (byte*)__start::__init1_$0
|
|
Inlining cast malloc::size#2 = (unumber)$3e8
|
|
Inlining cast SCREEN_ANGLE#0 = (byte*)__start::__init1_$1
|
|
Successful SSA optimization Pass2InlineCast
|
|
Simplifying constant pointer cast (byte*) 1024
|
|
Simplifying constant pointer cast (byte*) 40960
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $8000
|
|
Simplifying constant integer cast $3e8
|
|
Simplifying constant integer cast *main::dist#3
|
|
Simplifying constant integer cast *main::angle#3
|
|
Simplifying constant integer cast $ffff
|
|
Simplifying constant integer cast $13
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast $27
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $80
|
|
Simplifying constant integer cast $80
|
|
Simplifying constant integer cast $80
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $30
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast $18
|
|
Simplifying constant integer cast $18
|
|
Simplifying constant integer cast $18
|
|
Simplifying constant integer cast $13
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast $27
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $27
|
|
Simplifying constant integer cast $27
|
|
Simplifying constant integer cast $3e8
|
|
Simplifying constant integer cast $3e8
|
|
Successful SSA optimization PassNCastSimplification
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized signed number type (signed byte) 0
|
|
Finalized signed number type (signed byte) 0
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized signed number type (signed byte) 0
|
|
Finalized signed number type (signed byte) 0
|
|
Finalized signed number type (signed byte) 0
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized signed number type (signed byte) 0
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized signed number type (signed byte) 2
|
|
Finalized signed number type (signed byte) 2
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized signed number type (signed byte) 0
|
|
Finalized signed number type (signed byte) 1
|
|
Finalized signed number type (signed byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized signed number type (signed byte) 0
|
|
Finalized unsigned number type (word) $8000
|
|
Finalized unsigned number type (word) $3e8
|
|
Finalized unsigned number type (word) $ffff
|
|
Finalized unsigned number type (byte) $13
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized unsigned number type (byte) $27
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized unsigned number type (byte) $80
|
|
Finalized unsigned number type (byte) $80
|
|
Finalized unsigned number type (byte) $80
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) $30
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized unsigned number type (byte) $18
|
|
Finalized unsigned number type (byte) $18
|
|
Finalized unsigned number type (byte) $18
|
|
Finalized unsigned number type (byte) $13
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized unsigned number type (byte) $27
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) $27
|
|
Finalized unsigned number type (byte) $27
|
|
Finalized unsigned number type (word) $3e8
|
|
Finalized unsigned number type (word) $3e8
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Inferred type updated to byte in bsearch16u::$15 = 1 * SIZEOF_WORD
|
|
Inferred type updated to byte in bsearch16u::$16 = 1 * SIZEOF_WORD
|
|
Inferred type updated to byte in init_squares::$3 = init_squares::i#3 * 2
|
|
Inferred type updated to byte in init_squares::$4 = init_squares::$3 + 1
|
|
Inferred type updated to word in atan2_16::$12 = $8000 - atan2_16::angle#9
|
|
Inferred type updated to byte in init_angle_screen::$3 = init_angle_screen::x#3 * 2
|
|
Inferred type updated to byte in init_angle_screen::$4 = $27 - init_angle_screen::$3
|
|
Inferred type updated to byte in init_angle_screen::$5 = init_angle_screen::y#2 * 2
|
|
Inferred type updated to word in init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
|
|
Inferred type updated to byte in init_angle_screen::$8 = > init_angle_screen::$7
|
|
Inferred type updated to byte in init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
|
|
Inferred type updated to byte in init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
|
|
Inferred type updated to byte in init_dist_screen::$2 = init_dist_screen::y#2 * 2
|
|
Inferred type updated to byte in init_dist_screen::$6 = init_dist_screen::y2#1 - $18
|
|
Inferred type updated to byte in init_dist_screen::$7 = init_dist_screen::$6
|
|
Inferred type updated to byte in init_dist_screen::$4 = $18 - init_dist_screen::y2#2
|
|
Inferred type updated to byte in init_dist_screen::$5 = init_dist_screen::$4
|
|
Inferred type updated to byte for init_dist_screen::$8
|
|
Inferred type updated to byte in init_dist_screen::$11 = init_dist_screen::x#3 * 2
|
|
Inferred type updated to byte in init_dist_screen::$15 = init_dist_screen::x2#1 - $27
|
|
Inferred type updated to byte in init_dist_screen::$16 = init_dist_screen::$15
|
|
Inferred type updated to byte in init_dist_screen::$13 = $27 - init_dist_screen::x2#2
|
|
Inferred type updated to byte in init_dist_screen::$14 = init_dist_screen::$13
|
|
Inferred type updated to byte for init_dist_screen::$17
|
|
Inversing boolean not [23] bsearch16u::$10 = bsearch16u::result#0 != 0 from [22] bsearch16u::$9 = bsearch16u::result#0 == 0
|
|
Inversing boolean not [30] bsearch16u::$12 = bsearch16u::result#1 <= 0 from [29] bsearch16u::$11 = bsearch16u::result#1 > 0
|
|
Inversing boolean not [123] atan2_16::$17 = atan2_16::yi#3 != 0 from [122] atan2_16::$16 = atan2_16::yi#3 == 0
|
|
Inversing boolean not [132] atan2_16::$11 = atan2_16::x#4 >= 0 from [131] atan2_16::$10 = atan2_16::x#4 < 0
|
|
Inversing boolean not [143] atan2_16::$19 = 0 == atan2_16::shift#4 from [142] atan2_16::$24 = 0 != atan2_16::shift#4
|
|
Inversing boolean not [167] atan2_16::$14 = atan2_16::y#4 >= 0 from [166] atan2_16::$13 = atan2_16::y#4 < 0
|
|
Inversing boolean not [200] main::$3 = *main::fill#2 == FILL_CHAR from [199] main::$2 = *main::fill#2 != FILL_CHAR
|
|
Inversing boolean not [212] main::$5 = main::dist_angle#0 >= main::min_dist_angle#2 from [211] main::$4 = main::dist_angle#0 < main::min_dist_angle#2
|
|
Inversing boolean not [219] main::$8 = main::min_dist_angle#3 != $ffff from [218] main::$7 = main::min_dist_angle#3 == $ffff
|
|
Successful SSA optimization Pass2UnaryNotSimplification
|
|
Alias malloc::mem#0 = malloc::$0
|
|
Alias malloc::return#0 = malloc::return#5 malloc::return#1
|
|
Alias heap_head#0 = heap_head#14 heap_head#1
|
|
Alias bsearch16u::num#3 = bsearch16u::num#4 bsearch16u::num#8 bsearch16u::num#6
|
|
Alias bsearch16u::items#2 = bsearch16u::items#6 bsearch16u::items#3 bsearch16u::items#9 bsearch16u::items#4 bsearch16u::$3 bsearch16u::items#5
|
|
Alias bsearch16u::key#1 = bsearch16u::key#3 bsearch16u::key#2 bsearch16u::key#7 bsearch16u::key#6
|
|
Alias bsearch16u::pivot#0 = bsearch16u::$7 bsearch16u::pivot#3 bsearch16u::pivot#1 bsearch16u::return#0 bsearch16u::pivot#2
|
|
Alias bsearch16u::result#0 = bsearch16u::$8 bsearch16u::result#1
|
|
Alias bsearch16u::return#1 = bsearch16u::return#4
|
|
Alias bsearch16u::items#0 = bsearch16u::$13
|
|
Alias bsearch16u::$2 = bsearch16u::$1
|
|
Alias bsearch16u::return#2 = bsearch16u::$4
|
|
Alias malloc::size#0 = init_squares::$0
|
|
Alias malloc::return#2 = malloc::return#6
|
|
Alias NUM_SQUARES#16 = NUM_SQUARES#7
|
|
Alias heap_head#15 = heap_head#2
|
|
Alias init_squares::sqr#2 = init_squares::sqr#3
|
|
Alias init_squares::squares#2 = init_squares::squares#3
|
|
Alias init_squares::i#2 = init_squares::i#3
|
|
Alias NUM_SQUARES#15 = NUM_SQUARES#8
|
|
Alias heap_head#16 = heap_head#33 heap_head#26 heap_head#3
|
|
Alias SQUARES#1 = SQUARES#29 SQUARES#19 SQUARES#9
|
|
Alias sqr::return#0 = sqr::return#4 sqr::return#1
|
|
Alias bsearch16u::return#3 = bsearch16u::return#5
|
|
Alias SQUARES#11 = SQUARES#12
|
|
Alias sqrt::found#0 = sqrt::$0
|
|
Alias sqrt::return#0 = sqrt::sq#0 sqrt::return#3 sqrt::return#1
|
|
Alias atan2_16::y#1 = atan2_16::y#2 atan2_16::$3 atan2_16::y#3
|
|
Alias atan2_16::x#5 = atan2_16::x#9 atan2_16::x#6
|
|
Alias atan2_16::$2 = atan2_16::$1
|
|
Alias atan2_16::yi#0 = atan2_16::$4 atan2_16::yi#12 atan2_16::yi#13
|
|
Alias atan2_16::x#1 = atan2_16::x#2 atan2_16::$8 atan2_16::x#3
|
|
Alias atan2_16::y#12 = atan2_16::y#15 atan2_16::y#13
|
|
Alias atan2_16::$7 = atan2_16::$6
|
|
Alias atan2_16::xi#0 = atan2_16::$9
|
|
Alias atan2_16::xi#3 = atan2_16::xi#6 atan2_16::xd#0
|
|
Alias atan2_16::yi#3 = atan2_16::yi#4 atan2_16::yd#0
|
|
Alias atan2_16::i#2 = atan2_16::i#6 atan2_16::shift#0
|
|
Alias atan2_16::angle#12 = atan2_16::angle#19
|
|
Alias atan2_16::x#17 = atan2_16::x#7
|
|
Alias atan2_16::y#19 = atan2_16::y#7
|
|
Alias atan2_16::xd#3 = atan2_16::xd#7 atan2_16::xd#8 atan2_16::xd#4
|
|
Alias atan2_16::yd#3 = atan2_16::yd#7 atan2_16::yd#8 atan2_16::yd#4
|
|
Alias atan2_16::shift#2 = atan2_16::shift#3 atan2_16::shift#4
|
|
Alias atan2_16::yi#10 = atan2_16::yi#15 atan2_16::yi#14 atan2_16::yi#11
|
|
Alias atan2_16::xi#10 = atan2_16::xi#12 atan2_16::xi#11 atan2_16::xi#9
|
|
Alias atan2_16::i#10 = atan2_16::i#11 atan2_16::i#8 atan2_16::i#9
|
|
Alias atan2_16::angle#16 = atan2_16::angle#20 atan2_16::angle#18 atan2_16::angle#17
|
|
Alias atan2_16::x#14 = atan2_16::x#18 atan2_16::x#16 atan2_16::x#15
|
|
Alias atan2_16::y#16 = atan2_16::y#20 atan2_16::y#18 atan2_16::y#17
|
|
Alias atan2_16::xi#4 = atan2_16::xi#7 atan2_16::xi#5
|
|
Alias atan2_16::yd#5 = atan2_16::yd#9 atan2_16::yd#6
|
|
Alias atan2_16::yi#5 = atan2_16::yi#6 atan2_16::yi#7
|
|
Alias atan2_16::xd#5 = atan2_16::xd#9 atan2_16::xd#6
|
|
Alias atan2_16::i#3 = atan2_16::i#7 atan2_16::i#4
|
|
Alias atan2_16::angle#14 = atan2_16::angle#7 atan2_16::angle#8
|
|
Alias atan2_16::x#11 = atan2_16::x#13 atan2_16::x#12
|
|
Alias atan2_16::y#10 = atan2_16::y#14 atan2_16::y#11
|
|
Alias atan2_16::angle#1 = atan2_16::angle#9
|
|
Alias atan2_16::y#5 = atan2_16::y#6
|
|
Alias atan2_16::angle#4 = atan2_16::$12
|
|
Alias atan2_16::return#0 = atan2_16::angle#10 atan2_16::return#3 atan2_16::return#1
|
|
Alias atan2_16::angle#11 = atan2_16::angle#15
|
|
Alias atan2_16::angle#5 = atan2_16::$15
|
|
Alias SCREEN_ANGLE#2 = SCREEN_ANGLE#5 SCREEN_ANGLE#9
|
|
Alias SCREEN_DIST#11 = SCREEN_DIST#2 SCREEN_DIST#8
|
|
Alias NUM_SQUARES#0 = NUM_SQUARES#10 NUM_SQUARES#23
|
|
Alias heap_head#17 = heap_head#4 heap_head#34
|
|
Alias SQUARES#13 = SQUARES#2 SQUARES#30
|
|
Alias SCREEN_DIST#3 = SCREEN_DIST#6
|
|
Alias SCREEN_ANGLE#3 = SCREEN_ANGLE#6
|
|
Alias NUM_SQUARES#19 = NUM_SQUARES#37
|
|
Alias heap_head#28 = heap_head#43
|
|
Alias SQUARES#24 = SQUARES#47
|
|
Alias main::dist#3 = main::dist#4 main::dist#5
|
|
Alias main::angle#3 = main::angle#4 main::angle#5
|
|
Alias main::min_dist_angle#2 = main::min_dist_angle#4
|
|
Alias main::fill#2 = main::fill#5 main::fill#4 main::min_fill#1
|
|
Alias main::min_fill#5 = main::min_fill#6
|
|
Alias NUM_SQUARES#29 = NUM_SQUARES#30 NUM_SQUARES#31
|
|
Alias heap_head#38 = heap_head#39 heap_head#40
|
|
Alias SQUARES#39 = SQUARES#40 SQUARES#41
|
|
Alias SCREEN_DIST#14 = SCREEN_DIST#15 SCREEN_DIST#16
|
|
Alias SCREEN_ANGLE#13 = SCREEN_ANGLE#14 SCREEN_ANGLE#15
|
|
Alias main::dist_angle#0 = main::$9 main::dist_angle#1 main::min_dist_angle#1
|
|
Alias main::min_dist_angle#3 = main::min_dist_angle#5
|
|
Alias main::min_fill#2 = main::min_fill#3 main::min_fill#4
|
|
Alias NUM_SQUARES#20 = NUM_SQUARES#25 NUM_SQUARES#24
|
|
Alias heap_head#29 = heap_head#36 heap_head#35
|
|
Alias SQUARES#25 = SQUARES#32 SQUARES#31
|
|
Alias SCREEN_DIST#12 = SCREEN_DIST#13 SCREEN_DIST#9
|
|
Alias SCREEN_ANGLE#10 = SCREEN_ANGLE#11 SCREEN_ANGLE#12
|
|
Alias NUM_SQUARES#1 = NUM_SQUARES#11
|
|
Alias heap_head#18 = heap_head#5
|
|
Alias SQUARES#14 = SQUARES#3
|
|
Alias init_angle_screen::screen_topline#0 = init_angle_screen::$0
|
|
Alias init_angle_screen::screen_bottomline#0 = init_angle_screen::$1
|
|
Alias init_angle_screen::x#2 = init_angle_screen::x#3 init_angle_screen::x#4
|
|
Alias init_angle_screen::y#2 = init_angle_screen::y#4 init_angle_screen::y#6 init_angle_screen::y#3
|
|
Alias init_angle_screen::screen_bottomline#2 = init_angle_screen::screen_bottomline#4 init_angle_screen::screen_bottomline#5 init_angle_screen::screen_bottomline#3
|
|
Alias init_angle_screen::xb#2 = init_angle_screen::xb#3 init_angle_screen::xb#4
|
|
Alias init_angle_screen::screen_topline#2 = init_angle_screen::screen_topline#4 init_angle_screen::screen_topline#5 init_angle_screen::screen_topline#3
|
|
Alias atan2_16::return#2 = atan2_16::return#4
|
|
Alias init_angle_screen::angle_w#0 = init_angle_screen::$6
|
|
Alias init_angle_screen::ang_w#0 = init_angle_screen::$8
|
|
Alias init_dist_screen::screen#1 = init_dist_screen::screen#2 init_dist_screen::screen_topline#0
|
|
Alias NUM_SQUARES#2 = NUM_SQUARES#43
|
|
Alias heap_head#19 = heap_head#6
|
|
Alias SQUARES#15 = SQUARES#4
|
|
Alias init_dist_screen::screen_bottomline#0 = init_dist_screen::$1
|
|
Alias init_dist_screen::y2#0 = init_dist_screen::$2 init_dist_screen::y2#1 init_dist_screen::y2#2
|
|
Alias SQUARES#33 = SQUARES#42 SQUARES#34
|
|
Alias init_dist_screen::screen_topline#11 = init_dist_screen::screen_topline#14 init_dist_screen::screen_topline#12
|
|
Alias init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#14 init_dist_screen::screen_bottomline#12
|
|
Alias init_dist_screen::y#10 = init_dist_screen::y#9 init_dist_screen::y#2
|
|
Alias NUM_SQUARES#40 = NUM_SQUARES#42 NUM_SQUARES#41
|
|
Alias heap_head#46 = heap_head#49 heap_head#47
|
|
Alias init_dist_screen::$7 = init_dist_screen::$6
|
|
Alias init_dist_screen::$5 = init_dist_screen::$4
|
|
Alias init_dist_screen::yd#0 = init_dist_screen::$8
|
|
Alias sqr::return#2 = sqr::return#5
|
|
Alias init_dist_screen::screen_topline#6 = init_dist_screen::screen_topline#8
|
|
Alias init_dist_screen::screen_bottomline#6 = init_dist_screen::screen_bottomline#8
|
|
Alias init_dist_screen::y#5 = init_dist_screen::y#7
|
|
Alias NUM_SQUARES#32 = NUM_SQUARES#38
|
|
Alias heap_head#41 = heap_head#44
|
|
Alias SQUARES#21 = SQUARES#43
|
|
Alias init_dist_screen::yds#0 = init_dist_screen::$9
|
|
Alias init_dist_screen::x#2 = init_dist_screen::x#3 init_dist_screen::x#7 init_dist_screen::x#8
|
|
Alias SQUARES#16 = SQUARES#45 SQUARES#35 SQUARES#27 SQUARES#36 SQUARES#37 SQUARES#5
|
|
Alias init_dist_screen::yds#3 = init_dist_screen::yds#5 init_dist_screen::yds#6 init_dist_screen::yds#4
|
|
Alias NUM_SQUARES#12 = NUM_SQUARES#39 NUM_SQUARES#26 NUM_SQUARES#21 NUM_SQUARES#34 NUM_SQUARES#35 NUM_SQUARES#3
|
|
Alias init_dist_screen::screen_topline#10 = init_dist_screen::screen_topline#13 init_dist_screen::screen_topline#4 init_dist_screen::screen_topline#2 init_dist_screen::screen_topline#9
|
|
Alias init_dist_screen::screen_bottomline#10 = init_dist_screen::screen_bottomline#13 init_dist_screen::screen_bottomline#4 init_dist_screen::screen_bottomline#2 init_dist_screen::screen_bottomline#9
|
|
Alias init_dist_screen::xb#5 = init_dist_screen::xb#7 init_dist_screen::xb#8 init_dist_screen::xb#6
|
|
Alias init_dist_screen::y#12 = init_dist_screen::y#14 init_dist_screen::y#4 init_dist_screen::y#3 init_dist_screen::y#13
|
|
Alias heap_head#20 = heap_head#52 heap_head#37 heap_head#31 heap_head#50 heap_head#51 heap_head#7
|
|
Alias init_dist_screen::x2#0 = init_dist_screen::$11 init_dist_screen::x2#1 init_dist_screen::x2#2
|
|
Alias init_dist_screen::$16 = init_dist_screen::$15
|
|
Alias init_dist_screen::$14 = init_dist_screen::$13
|
|
Alias init_dist_screen::xd#0 = init_dist_screen::$17
|
|
Alias sqr::return#3 = sqr::return#6
|
|
Alias init_dist_screen::yds#1 = init_dist_screen::yds#2 init_dist_screen::yds#7
|
|
Alias SQUARES#20 = SQUARES#22 SQUARES#44
|
|
Alias NUM_SQUARES#17 = NUM_SQUARES#27 NUM_SQUARES#33
|
|
Alias init_dist_screen::screen_topline#3 = init_dist_screen::screen_topline#5 init_dist_screen::screen_topline#7
|
|
Alias init_dist_screen::x#4 = init_dist_screen::x#5 init_dist_screen::x#6
|
|
Alias init_dist_screen::screen_bottomline#3 = init_dist_screen::screen_bottomline#5 init_dist_screen::screen_bottomline#7
|
|
Alias init_dist_screen::xb#2 = init_dist_screen::xb#3 init_dist_screen::xb#4
|
|
Alias init_dist_screen::y#11 = init_dist_screen::y#8 init_dist_screen::y#6
|
|
Alias heap_head#42 = heap_head#45 heap_head#48
|
|
Alias init_dist_screen::xds#0 = init_dist_screen::$18
|
|
Alias init_dist_screen::ds#0 = init_dist_screen::$19
|
|
Alias sqrt::return#2 = sqrt::return#4
|
|
Alias init_dist_screen::d#0 = init_dist_screen::$20
|
|
Alias malloc::return#3 = malloc::return#7
|
|
Alias NUM_SQUARES#22 = NUM_SQUARES#36 NUM_SQUARES#4 NUM_SQUARES#28
|
|
Alias SQUARES#28 = SQUARES#46 SQUARES#6 SQUARES#38
|
|
Alias heap_head#21 = heap_head#9
|
|
Alias malloc::return#4 = malloc::return#8
|
|
Alias SCREEN_DIST#0 = SCREEN_DIST#10 SCREEN_DIST#5 SCREEN_DIST#7 SCREEN_DIST#4 SCREEN_DIST#1
|
|
Alias heap_head#10 = heap_head#22 heap_head#32
|
|
Alias SCREEN_ANGLE#0 = SCREEN_ANGLE#8 SCREEN_ANGLE#7 SCREEN_ANGLE#4 SCREEN_ANGLE#1
|
|
Alias NUM_SQUARES#13 = NUM_SQUARES#5 NUM_SQUARES#14 NUM_SQUARES#6
|
|
Alias heap_head#11 = heap_head#23 heap_head#24 heap_head#12
|
|
Alias SQUARES#17 = SQUARES#7 SQUARES#18 SQUARES#8
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias candidate removed (phi-usage) main::fill#2 = main::fill#3
|
|
Alias bsearch16u::key#1 = bsearch16u::key#5
|
|
Alias atan2_16::x#1 = atan2_16::x#5 atan2_16::x#10
|
|
Alias atan2_16::y#1 = atan2_16::y#12 atan2_16::y#9
|
|
Alias atan2_16::yi#0 = atan2_16::yi#9
|
|
Alias atan2_16::yi#10 = atan2_16::yi#5
|
|
Alias atan2_16::xi#10 = atan2_16::xi#4
|
|
Alias atan2_16::i#10 = atan2_16::i#3 atan2_16::i#5
|
|
Alias atan2_16::angle#14 = atan2_16::angle#16
|
|
Alias atan2_16::x#11 = atan2_16::x#14 atan2_16::x#8
|
|
Alias atan2_16::y#10 = atan2_16::y#16 atan2_16::y#8
|
|
Alias atan2_16::y#4 = atan2_16::y#5
|
|
Alias main::dist#2 = main::dist#3
|
|
Alias main::angle#2 = main::angle#3
|
|
Alias NUM_SQUARES#20 = NUM_SQUARES#29
|
|
Alias heap_head#29 = heap_head#38
|
|
Alias SQUARES#25 = SQUARES#39
|
|
Alias SCREEN_DIST#12 = SCREEN_DIST#14
|
|
Alias SCREEN_ANGLE#10 = SCREEN_ANGLE#13
|
|
Alias SQUARES#21 = SQUARES#33
|
|
Alias init_dist_screen::screen_topline#11 = init_dist_screen::screen_topline#6
|
|
Alias init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#6
|
|
Alias init_dist_screen::y#10 = init_dist_screen::y#5
|
|
Alias NUM_SQUARES#32 = NUM_SQUARES#40
|
|
Alias heap_head#41 = heap_head#46
|
|
Alias SQUARES#16 = SQUARES#20
|
|
Alias init_dist_screen::yds#1 = init_dist_screen::yds#3
|
|
Alias NUM_SQUARES#12 = NUM_SQUARES#17
|
|
Alias init_dist_screen::screen_topline#10 = init_dist_screen::screen_topline#3
|
|
Alias init_dist_screen::x#2 = init_dist_screen::x#4
|
|
Alias init_dist_screen::screen_bottomline#10 = init_dist_screen::screen_bottomline#3
|
|
Alias init_dist_screen::xb#2 = init_dist_screen::xb#5
|
|
Alias init_dist_screen::y#11 = init_dist_screen::y#12
|
|
Alias heap_head#20 = heap_head#42
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias candidate removed (phi-usage) main::fill#2 = main::fill#3
|
|
Identical Phi Values bsearch16u::num#7 bsearch16u::num#2
|
|
Identical Phi Values bsearch16u::items#7 bsearch16u::items#1
|
|
Identical Phi Values bsearch16u::key#4 bsearch16u::key#0
|
|
Identical Phi Values bsearch16u::key#1 bsearch16u::key#4
|
|
Identical Phi Values NUM_SQUARES#16 NUM_SQUARES#2
|
|
Identical Phi Values heap_head#25 heap_head#30
|
|
Identical Phi Values heap_head#15 heap_head#0
|
|
Identical Phi Values NUM_SQUARES#15 NUM_SQUARES#16
|
|
Identical Phi Values heap_head#16 heap_head#15
|
|
Identical Phi Values SQUARES#1 SQUARES#0
|
|
Identical Phi Values sqrt::val#1 sqrt::val#0
|
|
Identical Phi Values SQUARES#11 SQUARES#16
|
|
Identical Phi Values NUM_SQUARES#9 NUM_SQUARES#12
|
|
Identical Phi Values atan2_16::y#1 atan2_16::y#0
|
|
Identical Phi Values atan2_16::x#1 atan2_16::x#0
|
|
Identical Phi Values atan2_16::yi#10 atan2_16::yi#3
|
|
Identical Phi Values atan2_16::xi#10 atan2_16::xi#3
|
|
Identical Phi Values atan2_16::i#10 atan2_16::i#2
|
|
Identical Phi Values atan2_16::angle#14 atan2_16::angle#12
|
|
Identical Phi Values atan2_16::x#11 atan2_16::x#17
|
|
Identical Phi Values atan2_16::y#10 atan2_16::y#19
|
|
Identical Phi Values SCREEN_DIST#11 SCREEN_DIST#0
|
|
Identical Phi Values NUM_SQUARES#18 NUM_SQUARES#22
|
|
Identical Phi Values heap_head#27 heap_head#10
|
|
Identical Phi Values SQUARES#23 SQUARES#28
|
|
Identical Phi Values SCREEN_ANGLE#2 SCREEN_ANGLE#0
|
|
Identical Phi Values NUM_SQUARES#0 NUM_SQUARES#12
|
|
Identical Phi Values heap_head#17 heap_head#20
|
|
Identical Phi Values SQUARES#13 SQUARES#16
|
|
Identical Phi Values NUM_SQUARES#20 NUM_SQUARES#19
|
|
Identical Phi Values heap_head#29 heap_head#28
|
|
Identical Phi Values SQUARES#25 SQUARES#24
|
|
Identical Phi Values SCREEN_DIST#12 SCREEN_DIST#3
|
|
Identical Phi Values SCREEN_ANGLE#10 SCREEN_ANGLE#3
|
|
Identical Phi Values main::fill#3 main::fill#2
|
|
Identical Phi Values init_angle_screen::screen#1 init_angle_screen::screen#0
|
|
Identical Phi Values init_angle_screen::y#2 init_angle_screen::y#5
|
|
Identical Phi Values init_angle_screen::screen_topline#2 init_angle_screen::screen_topline#6
|
|
Identical Phi Values init_angle_screen::screen_bottomline#2 init_angle_screen::screen_bottomline#6
|
|
Identical Phi Values heap_head#30 heap_head#27
|
|
Identical Phi Values SQUARES#26 SQUARES#23
|
|
Identical Phi Values init_dist_screen::screen#1 init_dist_screen::screen#0
|
|
Identical Phi Values heap_head#19 heap_head#16
|
|
Identical Phi Values SQUARES#15 SQUARES#1
|
|
Identical Phi Values init_dist_screen::screen_topline#10 init_dist_screen::screen_topline#11
|
|
Identical Phi Values init_dist_screen::screen_bottomline#10 init_dist_screen::screen_bottomline#11
|
|
Identical Phi Values init_dist_screen::y#11 init_dist_screen::y#10
|
|
Identical Phi Values NUM_SQUARES#12 NUM_SQUARES#32
|
|
Identical Phi Values heap_head#20 heap_head#41
|
|
Identical Phi Values SQUARES#16 SQUARES#21
|
|
Identical Phi Values init_dist_screen::yds#1 init_dist_screen::yds#0
|
|
Identical Phi Values heap_head#21 heap_head#0
|
|
Identical Phi Values heap_head#10 heap_head#0
|
|
Identical Phi Values NUM_SQUARES#13 NUM_SQUARES#1
|
|
Identical Phi Values heap_head#11 heap_head#18
|
|
Identical Phi Values SQUARES#17 SQUARES#14
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Identical Phi Values SQUARES#10 SQUARES#21
|
|
Identical Phi Values atan2_16::x#17 atan2_16::x#0
|
|
Identical Phi Values atan2_16::y#19 atan2_16::y#0
|
|
Identical Phi Values atan2_16::x#4 atan2_16::x#17
|
|
Identical Phi Values atan2_16::y#4 atan2_16::y#19
|
|
Identical Phi Values SCREEN_DIST#3 SCREEN_DIST#0
|
|
Identical Phi Values SCREEN_ANGLE#3 SCREEN_ANGLE#0
|
|
Identical Phi Values NUM_SQUARES#19 NUM_SQUARES#32
|
|
Identical Phi Values heap_head#28 heap_head#41
|
|
Identical Phi Values SQUARES#24 SQUARES#21
|
|
Identical Phi Values NUM_SQUARES#1 NUM_SQUARES#19
|
|
Identical Phi Values heap_head#18 heap_head#28
|
|
Identical Phi Values SQUARES#14 SQUARES#24
|
|
Identical Phi Values SQUARES#21 SQUARES#0
|
|
Identical Phi Values NUM_SQUARES#32 NUM_SQUARES#2
|
|
Identical Phi Values heap_head#41 heap_head#0
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Identified duplicate assignment right side [231] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (word)$28*$c
|
|
Successful SSA optimization Pass2DuplicateRValueIdentification
|
|
Simple Condition bsearch16u::$5 [8] if(bsearch16u::num#3>0) goto bsearch16u::@5
|
|
Simple Condition bsearch16u::$10 [16] if(bsearch16u::result#0!=0) goto bsearch16u::@7
|
|
Simple Condition bsearch16u::$0 [18] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@1
|
|
Simple Condition bsearch16u::$12 [20] if(bsearch16u::result#0<=0) goto bsearch16u::@8
|
|
Simple Condition init_squares::$2 [43] if(init_squares::i#2<NUM_SQUARES#2) goto init_squares::@2
|
|
Simple Condition atan2_16::$0 [68] if(atan2_16::y#0>=0) goto atan2_16::@1
|
|
Simple Condition atan2_16::$5 [72] if(atan2_16::x#0>=0) goto atan2_16::@4
|
|
Simple Condition atan2_16::$17 [79] if(atan2_16::yi#3!=0) goto atan2_16::@11
|
|
Simple Condition atan2_16::$11 [83] if(atan2_16::x#0>=0) goto atan2_16::@7
|
|
Simple Condition atan2_16::$18 [86] if(atan2_16::shift#2>=2) goto atan2_16::@14
|
|
Simple Condition atan2_16::$19 [91] if(0==atan2_16::shift#2) goto atan2_16::@17
|
|
Simple Condition atan2_16::$20 [94] if(atan2_16::yi#3>=0) goto atan2_16::@18
|
|
Simple Condition atan2_16::$21 [108] if(atan2_16::i#1!=rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@10
|
|
Simple Condition atan2_16::$14 [111] if(atan2_16::y#0>=0) goto atan2_16::@8
|
|
Simple Condition main::$3 [131] if(*main::fill#2==FILL_CHAR) goto main::@4
|
|
Simple Condition main::$6 [137] if(main::fill#1<SCREEN_FILL+$3e8) goto main::@3
|
|
Simple Condition main::$5 [140] if(main::dist_angle#0>=main::min_dist_angle#2) goto main::@4
|
|
Simple Condition main::$8 [142] if(main::min_dist_angle#3!=$ffff) goto main::@8
|
|
Simple Condition init_angle_screen::$2 [155] if(init_angle_screen::x#2<=$13) goto init_angle_screen::@3
|
|
Simple Condition init_angle_screen::$12 [183] if(init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1
|
|
Simple Condition init_dist_screen::$3 [194] if(init_dist_screen::y2#0>=$18) goto init_dist_screen::@2
|
|
Simple Condition init_dist_screen::$10 [206] if(init_dist_screen::x#2<=$13) goto init_dist_screen::@6
|
|
Simple Condition init_dist_screen::$12 [209] if(init_dist_screen::x2#0>=$27) goto init_dist_screen::@8
|
|
Simple Condition init_dist_screen::$21 [214] if(init_dist_screen::y#1!=rangelast(0,$c)) goto init_dist_screen::@1
|
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
|
Negating conditional jump and destination [108] if(atan2_16::i#1==rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@12
|
|
Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
|
|
Constant right-side identified [25] bsearch16u::$15 = 1 * SIZEOF_WORD
|
|
Constant right-side identified [28] bsearch16u::$16 = 1 * SIZEOF_WORD
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant bsearch16u::$15 = 1*SIZEOF_WORD
|
|
Constant bsearch16u::$16 = 1*SIZEOF_WORD
|
|
Constant init_squares::sqr#0 = 0
|
|
Constant init_squares::i#0 = 0
|
|
Constant atan2_16::angle#0 = 0
|
|
Constant atan2_16::i#0 = 0
|
|
Constant main::fill#0 = SCREEN_FILL
|
|
Constant main::min_dist_angle#0 = $ffff
|
|
Constant main::min_fill#0 = SCREEN_FILL
|
|
Constant init_angle_screen::y#0 = 0
|
|
Constant init_angle_screen::x#0 = 0
|
|
Constant init_angle_screen::xb#0 = $27
|
|
Constant NUM_SQUARES#2 = $30
|
|
Constant init_dist_screen::y#0 = 0
|
|
Constant init_dist_screen::x#0 = 0
|
|
Constant init_dist_screen::xb#0 = $27
|
|
Constant heap_head#8 = HEAP_TOP
|
|
Constant NUM_SQUARES#22 = $ff
|
|
Constant SQUARES#28 = (word*) 0
|
|
Constant malloc::size#1 = $3e8
|
|
Constant malloc::size#2 = $3e8
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant bsearch16u::num#2 = NUM_SQUARES#2
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
if() condition always true - replacing block destination [123] if(true) goto main::@2
|
|
Successful SSA optimization Pass2ConstantIfs
|
|
Resolved ranged next value [106] atan2_16::i#1 = ++ atan2_16::i#2 to ++
|
|
Resolved ranged comparison value [108] if(atan2_16::i#1==rangelast(0,CORDIC_ITERATIONS_16-1)) goto atan2_16::@12 to CORDIC_ITERATIONS_16-1+1
|
|
Resolved ranged next value [181] init_angle_screen::y#1 = ++ init_angle_screen::y#5 to ++
|
|
Resolved ranged comparison value [183] if(init_angle_screen::y#1!=rangelast(0,$c)) goto init_angle_screen::@1 to $d
|
|
Resolved ranged next value [212] init_dist_screen::y#1 = ++ init_dist_screen::y#10 to ++
|
|
Resolved ranged comparison value [214] if(init_dist_screen::y#1!=rangelast(0,$c)) goto init_dist_screen::@1 to $d
|
|
Rewriting conditional comparison [155] if(init_angle_screen::x#2<=$13) goto init_angle_screen::@3
|
|
Rewriting conditional comparison [206] if(init_dist_screen::x#2<=$13) goto init_dist_screen::@6
|
|
Eliminating unused constant NUM_SQUARES#22
|
|
Eliminating unused constant SQUARES#28
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Adding number conversion cast (unumber) CORDIC_ITERATIONS_16-1+1 in if(atan2_16::i#1==CORDIC_ITERATIONS_16-1+1) goto atan2_16::@12
|
|
Adding number conversion cast (unumber) 1 in if(atan2_16::i#1==(unumber)CORDIC_ITERATIONS_16-1+1) goto atan2_16::@12
|
|
Adding number conversion cast (unumber) $13+1 in if(init_angle_screen::x#2<$13+1) goto init_angle_screen::@3
|
|
Adding number conversion cast (unumber) 1 in if(init_angle_screen::x#2<(unumber)$13+1) goto init_angle_screen::@3
|
|
Adding number conversion cast (unumber) $d in if(init_angle_screen::y#1!=$d) goto init_angle_screen::@1
|
|
Adding number conversion cast (unumber) $13+1 in if(init_dist_screen::x#2<$13+1) goto init_dist_screen::@6
|
|
Adding number conversion cast (unumber) 1 in if(init_dist_screen::x#2<(unumber)$13+1) goto init_dist_screen::@6
|
|
Adding number conversion cast (unumber) $d in if(init_dist_screen::y#1!=$d) goto init_dist_screen::@1
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
Simplifying constant integer cast CORDIC_ITERATIONS_16-1+(unumber)1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast $13+(unumber)1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast init_angle_screen::$4
|
|
Simplifying constant integer cast init_angle_screen::$5
|
|
Simplifying constant integer cast $d
|
|
Simplifying constant integer cast $13+(unumber)1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast $d
|
|
Successful SSA optimization PassNCastSimplification
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) $d
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) $d
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Alias init_angle_screen::screen_bottomline#0 = init_angle_screen::screen_topline#0
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Constant right-side identified [24] malloc::size#0 = NUM_SQUARES#2 * SIZEOF_WORD
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant malloc::size#0 = NUM_SQUARES#2*SIZEOF_WORD
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Inlining Noop Cast [3] malloc::return#0 = (void*)malloc::mem#0 keeping malloc::mem#0
|
|
Inlining Noop Cast [10] bsearch16u::$17 = (signed word)bsearch16u::key#0 keeping bsearch16u::key#0
|
|
Inlining Noop Cast [11] bsearch16u::$18 = (signed word)*bsearch16u::pivot#0 keeping *bsearch16u::pivot#0
|
|
Successful SSA optimization Pass2NopCastInlining
|
|
Inlining Noop Cast [25] malloc::return#2 = (void*)malloc::mem#0 keeping malloc::mem#0
|
|
Inlining Noop Cast [179] malloc::return#3 = (void*)malloc::mem#0 keeping malloc::mem#0
|
|
Inlining Noop Cast [183] malloc::return#4 = (void*)malloc::mem#0 keeping malloc::mem#0
|
|
Successful SSA optimization Pass2NopCastInlining
|
|
Inlining Noop Cast [27] SQUARES#0 = (word*)init_squares::$1 keeping SQUARES#0
|
|
Inlining Noop Cast [114] init_angle_screen::xw#0 = (signed word)init_angle_screen::$13 keeping init_angle_screen::xw#0
|
|
Inlining Noop Cast [117] init_angle_screen::yw#0 = (signed word)init_angle_screen::$14 keeping init_angle_screen::yw#0
|
|
Inlining Noop Cast [181] SCREEN_DIST#0 = (byte*)__start::__init1_$0 keeping SCREEN_DIST#0
|
|
Inlining Noop Cast [185] SCREEN_ANGLE#0 = (byte*)__start::__init1_$1 keeping SCREEN_ANGLE#0
|
|
Successful SSA optimization Pass2NopCastInlining
|
|
Rewriting multiplication to use shift [8] bsearch16u::$14 = bsearch16u::$6 * SIZEOF_WORD
|
|
Rewriting multiplication to use shift [33] init_squares::$3 = init_squares::i#2 * 2
|
|
Rewriting multiplication to use shift [39] sqr::$0 = sqr::val#2 * SIZEOF_WORD
|
|
Rewriting division to use shift [48] sqrt::$1 = sqrt::$2 / SIZEOF_WORD
|
|
Rewriting division to use shift [60] atan2_16::angle#1 = atan2_16::angle#6 / 2
|
|
Rewriting multiplication to use shift [74] atan2_16::$22 = atan2_16::i#2 * SIZEOF_WORD
|
|
Rewriting multiplication to use shift [78] atan2_16::$23 = atan2_16::i#2 * SIZEOF_WORD
|
|
Rewriting multiplication to use shift [111] init_angle_screen::$3 = init_angle_screen::x#2 * 2
|
|
Rewriting multiplication to use shift [115] init_angle_screen::$5 = init_angle_screen::y#5 * 2
|
|
Rewriting multiplication to use shift [142] init_dist_screen::y2#0 = init_dist_screen::y#10 * 2
|
|
Rewriting multiplication to use shift [153] init_dist_screen::x2#0 = init_dist_screen::x#2 * 2
|
|
Successful SSA optimization Pass2MultiplyToShiftRewriting
|
|
Inlining constant with var siblings malloc::size#1
|
|
Inlining constant with var siblings malloc::size#2
|
|
Inlining constant with var siblings malloc::size#0
|
|
Inlining constant with var siblings bsearch16u::num#2
|
|
Inlining constant with var siblings init_squares::sqr#0
|
|
Inlining constant with var siblings init_squares::i#0
|
|
Inlining constant with var siblings atan2_16::angle#0
|
|
Inlining constant with var siblings atan2_16::i#0
|
|
Inlining constant with var siblings main::fill#0
|
|
Inlining constant with var siblings main::min_dist_angle#0
|
|
Inlining constant with var siblings main::min_fill#0
|
|
Inlining constant with var siblings init_angle_screen::y#0
|
|
Inlining constant with var siblings init_angle_screen::x#0
|
|
Inlining constant with var siblings init_angle_screen::xb#0
|
|
Inlining constant with var siblings init_dist_screen::y#0
|
|
Inlining constant with var siblings init_dist_screen::x#0
|
|
Inlining constant with var siblings init_dist_screen::xb#0
|
|
Inlining constant with var siblings heap_head#8
|
|
Constant inlined main::fill#0 = SCREEN_FILL
|
|
Constant inlined malloc::size#2 = $3e8
|
|
Constant inlined init_squares::sqr#0 = 0
|
|
Constant inlined bsearch16u::num#2 = NUM_SQUARES#2
|
|
Constant inlined init_angle_screen::xb#0 = $27
|
|
Constant inlined bsearch16u::$15 = 1*SIZEOF_WORD
|
|
Constant inlined atan2_16::i#0 = 0
|
|
Constant inlined init_angle_screen::y#0 = 0
|
|
Constant inlined bsearch16u::$16 = 1*SIZEOF_WORD
|
|
Constant inlined init_angle_screen::x#0 = 0
|
|
Constant inlined malloc::size#1 = $3e8
|
|
Constant inlined atan2_16::angle#0 = 0
|
|
Constant inlined malloc::size#0 = NUM_SQUARES#2*SIZEOF_WORD
|
|
Constant inlined init_dist_screen::y#0 = 0
|
|
Constant inlined init_dist_screen::xb#0 = $27
|
|
Constant inlined heap_head#8 = HEAP_TOP
|
|
Constant inlined main::min_dist_angle#0 = $ffff
|
|
Constant inlined init_dist_screen::x#0 = 0
|
|
Constant inlined init_squares::i#0 = 0
|
|
Constant inlined main::min_fill#0 = SCREEN_FILL
|
|
Successful SSA optimization Pass2ConstantInlining
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) $a
|
|
Finalized unsigned number type (byte) $10
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) $c
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) $18
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Added new block during phi lifting bsearch16u::@11(between bsearch16u::@7 and bsearch16u::@8)
|
|
Added new block during phi lifting atan2_16::@22(between atan2_16::@19 and atan2_16::@10)
|
|
Added new block during phi lifting atan2_16::@23(between atan2_16::@10 and atan2_16::@12)
|
|
Added new block during phi lifting atan2_16::@24(between atan2_16::@19 and atan2_16::@12)
|
|
Added new block during phi lifting atan2_16::@25(between atan2_16::@15 and atan2_16::@17)
|
|
Added new block during phi lifting atan2_16::@26(between atan2_16::@12 and atan2_16::@7)
|
|
Added new block during phi lifting atan2_16::@27(between atan2_16::@7 and atan2_16::@8)
|
|
Added new block during phi lifting main::@11(between main::@4 and main::@3)
|
|
Added new block during phi lifting main::@12(between main::@3 and main::@4)
|
|
Added new block during phi lifting main::@13(between main::@5 and main::@4)
|
|
Added new block during phi lifting init_angle_screen::@6(between init_angle_screen::@4 and init_angle_screen::@1)
|
|
Added new block during phi lifting init_dist_screen::@15(between init_dist_screen::@7 and init_dist_screen::@1)
|
|
Adding NOP phi() at start of __start
|
|
Adding NOP phi() at start of __start::__init1
|
|
Adding NOP phi() at start of __start::@1
|
|
Adding NOP phi() at start of __start::@4
|
|
Adding NOP phi() at start of main::@10
|
|
Adding NOP phi() at start of main::@1
|
|
Adding NOP phi() at start of init_dist_screen
|
|
CALL GRAPH
|
|
Calls in [__start] to malloc:2 malloc:5 main:8
|
|
Calls in [main] to init_dist_screen:16 init_angle_screen:18
|
|
Calls in [init_dist_screen] to init_squares:49 sqr:61 sqr:81 sqrt:86
|
|
Calls in [init_angle_screen] to atan2_16:122
|
|
Calls in [init_squares] to malloc:139
|
|
Calls in [sqrt] to bsearch16u:161
|
|
|
|
Created 48 initial phi equivalence classes
|
|
Coalesced [4] heap_head#53 = heap_head#0
|
|
Not coalescing [13] heap_head#0 = malloc::mem#0
|
|
Coalesced [23] main::dist#6 = main::dist#0
|
|
Coalesced [24] main::angle#6 = main::angle#0
|
|
Coalesced [29] main::min_dist_angle#9 = main::dist_angle#0
|
|
Not coalescing [30] main::min_fill#10 = main::fill#2
|
|
Coalesced [39] main::fill#6 = main::fill#1
|
|
Coalesced [40] main::dist#7 = main::dist#1
|
|
Coalesced [41] main::angle#7 = main::angle#1
|
|
Not coalescing [42] main::min_dist_angle#6 = main::min_dist_angle#3
|
|
Coalesced [43] main::min_fill#7 = main::min_fill#2
|
|
Not coalescing [44] main::min_dist_angle#8 = main::min_dist_angle#2
|
|
Coalesced (already) [45] main::min_fill#9 = main::min_fill#5
|
|
Not coalescing [46] main::min_dist_angle#7 = main::min_dist_angle#2
|
|
Coalesced (already) [47] main::min_fill#8 = main::min_fill#5
|
|
Coalesced [51] init_dist_screen::screen_topline#15 = init_dist_screen::screen#0
|
|
Coalesced [52] init_dist_screen::screen_bottomline#15 = init_dist_screen::screen_bottomline#0
|
|
Coalesced [57] init_dist_screen::yd#2 = init_dist_screen::$5
|
|
Coalesced [60] sqr::val#4 = sqr::val#0
|
|
Coalesced [71] init_dist_screen::y#15 = init_dist_screen::y#1
|
|
Coalesced [72] init_dist_screen::screen_topline#16 = init_dist_screen::screen_topline#1
|
|
Coalesced [73] init_dist_screen::screen_bottomline#16 = init_dist_screen::screen_bottomline#1
|
|
Coalesced [77] init_dist_screen::xd#2 = init_dist_screen::$14
|
|
Coalesced [80] sqr::val#3 = sqr::val#1
|
|
Coalesced [95] init_dist_screen::x#9 = init_dist_screen::x#1
|
|
Coalesced [96] init_dist_screen::xb#9 = init_dist_screen::xb#1
|
|
Coalesced [98] init_dist_screen::xd#1 = init_dist_screen::$16
|
|
Coalesced [100] init_dist_screen::yd#1 = init_dist_screen::$7
|
|
Not coalescing [102] init_angle_screen::screen_topline#7 = init_angle_screen::screen_bottomline#0
|
|
Coalesced [103] init_angle_screen::screen_bottomline#7 = init_angle_screen::screen_bottomline#0
|
|
Coalesced [112] init_angle_screen::y#7 = init_angle_screen::y#1
|
|
Coalesced [113] init_angle_screen::screen_topline#8 = init_angle_screen::screen_topline#1
|
|
Coalesced [114] init_angle_screen::screen_bottomline#8 = init_angle_screen::screen_bottomline#1
|
|
Coalesced [136] init_angle_screen::x#5 = init_angle_screen::x#1
|
|
Coalesced [137] init_angle_screen::xb#5 = init_angle_screen::xb#1
|
|
Coalesced (already) [138] heap_head#54 = heap_head#0
|
|
Coalesced [142] init_squares::squares#5 = init_squares::squares#0
|
|
Coalesced [152] init_squares::i#4 = init_squares::i#1
|
|
Coalesced [153] init_squares::sqr#4 = init_squares::sqr#1
|
|
Coalesced [154] init_squares::squares#4 = init_squares::squares#1
|
|
Coalesced [170] atan2_16::yi#17 = atan2_16::$2
|
|
Coalesced [174] atan2_16::xi#14 = atan2_16::$7
|
|
Coalesced [176] atan2_16::yi#19 = atan2_16::yi#0
|
|
Coalesced [177] atan2_16::xi#16 = atan2_16::xi#0
|
|
Coalesced [180] atan2_16::angle#22 = atan2_16::angle#12
|
|
Coalesced [185] atan2_16::angle#27 = atan2_16::angle#4
|
|
Coalesced [189] atan2_16::return#6 = atan2_16::angle#5
|
|
Coalesced [192] atan2_16::return#5 = atan2_16::angle#11
|
|
Coalesced [193] atan2_16::angle#26 = atan2_16::angle#1
|
|
Not coalescing [194] atan2_16::shift#5 = atan2_16::i#2
|
|
Not coalescing [195] atan2_16::xd#10 = atan2_16::xi#3
|
|
Not coalescing [196] atan2_16::yd#10 = atan2_16::yi#3
|
|
Coalesced [202] atan2_16::yd#13 = atan2_16::yd#2
|
|
Coalesced [203] atan2_16::xd#13 = atan2_16::xd#2
|
|
Coalesced [210] atan2_16::yi#21 = atan2_16::yi#2
|
|
Coalesced [211] atan2_16::angle#25 = atan2_16::angle#3
|
|
Coalesced [212] atan2_16::xi#18 = atan2_16::xi#2
|
|
Coalesced [216] atan2_16::yi#18 = atan2_16::yi#8
|
|
Coalesced [217] atan2_16::xi#15 = atan2_16::xi#8
|
|
Coalesced [218] atan2_16::i#12 = atan2_16::i#1
|
|
Coalesced [219] atan2_16::angle#21 = atan2_16::angle#13
|
|
Coalesced (already) [220] atan2_16::angle#23 = atan2_16::angle#13
|
|
Coalesced [225] atan2_16::yi#20 = atan2_16::yi#1
|
|
Coalesced [226] atan2_16::angle#24 = atan2_16::angle#2
|
|
Coalesced [227] atan2_16::xi#17 = atan2_16::xi#1
|
|
Coalesced [228] atan2_16::yd#12 = atan2_16::yd#3
|
|
Coalesced [229] atan2_16::xd#12 = atan2_16::xd#3
|
|
Coalesced [233] atan2_16::shift#6 = atan2_16::shift#1
|
|
Coalesced [234] atan2_16::xd#11 = atan2_16::xd#1
|
|
Coalesced [235] atan2_16::yd#11 = atan2_16::yd#1
|
|
Not coalescing [236] atan2_16::xi#13 = atan2_16::x#0
|
|
Not coalescing [237] atan2_16::yi#16 = atan2_16::y#0
|
|
Coalesced [238] bsearch16u::items#10 = bsearch16u::items#1
|
|
Coalesced [243] bsearch16u::return#9 = bsearch16u::$2
|
|
Coalesced [245] bsearch16u::return#6 = bsearch16u::return#2
|
|
Coalesced [248] bsearch16u::return#8 = bsearch16u::items#2
|
|
Not coalescing [254] bsearch16u::return#7 = bsearch16u::pivot#0
|
|
Coalesced [258] bsearch16u::num#10 = bsearch16u::num#1
|
|
Coalesced [259] bsearch16u::items#12 = bsearch16u::items#0
|
|
Coalesced [262] bsearch16u::num#9 = bsearch16u::num#0
|
|
Coalesced [263] bsearch16u::items#11 = bsearch16u::items#8
|
|
Coalesced [264] bsearch16u::num#11 = bsearch16u::num#3
|
|
Coalesced (already) [265] bsearch16u::items#13 = bsearch16u::items#2
|
|
Coalesced down to 38 phi equivalence classes
|
|
Culled Empty Block label __start::@4
|
|
Culled Empty Block label main::@10
|
|
Culled Empty Block label main::@1
|
|
Culled Empty Block label init_dist_screen::@15
|
|
Culled Empty Block label init_angle_screen::@6
|
|
Culled Empty Block label atan2_16::@23
|
|
Culled Empty Block label atan2_16::@27
|
|
Culled Empty Block label atan2_16::@26
|
|
Culled Empty Block label atan2_16::@22
|
|
Culled Empty Block label atan2_16::@24
|
|
Culled Empty Block label atan2_16::@25
|
|
Culled Empty Block label bsearch16u::@1
|
|
Culled Empty Block label bsearch16u::@11
|
|
Renumbering block bsearch16u::@2 to bsearch16u::@1
|
|
Renumbering block bsearch16u::@3 to bsearch16u::@2
|
|
Renumbering block bsearch16u::@4 to bsearch16u::@3
|
|
Renumbering block bsearch16u::@5 to bsearch16u::@4
|
|
Renumbering block bsearch16u::@6 to bsearch16u::@5
|
|
Renumbering block bsearch16u::@7 to bsearch16u::@6
|
|
Renumbering block bsearch16u::@8 to bsearch16u::@7
|
|
Renumbering block bsearch16u::@9 to bsearch16u::@8
|
|
Renumbering block bsearch16u::@10 to bsearch16u::@9
|
|
Renumbering block main::@2 to main::@1
|
|
Renumbering block main::@3 to main::@2
|
|
Renumbering block main::@4 to main::@3
|
|
Renumbering block main::@5 to main::@4
|
|
Renumbering block main::@6 to main::@5
|
|
Renumbering block main::@7 to main::@6
|
|
Renumbering block main::@8 to main::@7
|
|
Renumbering block main::@9 to main::@8
|
|
Renumbering block main::@11 to main::@9
|
|
Renumbering block main::@12 to main::@10
|
|
Renumbering block main::@13 to main::@11
|
|
Adding NOP phi() at start of __start
|
|
Adding NOP phi() at start of __start::__init1
|
|
Adding NOP phi() at start of __start::@1
|
|
Adding NOP phi() at start of init_dist_screen
|
|
Adding NOP phi() at start of init_squares
|
|
Adding NOP phi() at start of bsearch16u
|
|
|
|
FINAL CONTROL FLOW GRAPH
|
|
|
|
void __start()
|
|
__start: scope:[__start] from
|
|
[0] phi()
|
|
to:__start::__init1
|
|
__start::__init1: scope:[__start] from __start
|
|
[1] phi()
|
|
[2] call malloc
|
|
to:__start::@2
|
|
__start::@2: scope:[__start] from __start::__init1
|
|
[3] SCREEN_DIST#0 = (void*)malloc::mem#0
|
|
[4] call malloc
|
|
to:__start::@3
|
|
__start::@3: scope:[__start] from __start::@2
|
|
[5] SCREEN_ANGLE#0 = (void*)malloc::mem#0
|
|
to:__start::@1
|
|
__start::@1: scope:[__start] from __start::@3
|
|
[6] phi()
|
|
[7] call main
|
|
to:__start::@return
|
|
__start::@return: scope:[__start] from __start::@1
|
|
[8] return
|
|
to:@return
|
|
|
|
void* malloc(word malloc::size)
|
|
malloc: scope:[malloc] from __start::@2 __start::__init1 init_squares
|
|
[9] malloc::size#3 = phi( __start::@2/$3e8, __start::__init1/$3e8, init_squares/NUM_SQUARES#2*SIZEOF_WORD )
|
|
[9] heap_head#13 = phi( __start::@2/heap_head#0, __start::__init1/HEAP_TOP, init_squares/heap_head#0 )
|
|
[10] malloc::mem#0 = heap_head#13 - malloc::size#3
|
|
[11] heap_head#0 = malloc::mem#0
|
|
to:malloc::@return
|
|
malloc::@return: scope:[malloc] from malloc
|
|
[12] return
|
|
to:@return
|
|
|
|
void main()
|
|
main: scope:[main] from __start::@1
|
|
[13] init_dist_screen::screen#0 = (byte*)SCREEN_DIST#0
|
|
[14] call init_dist_screen
|
|
to:main::@8
|
|
main::@8: scope:[main] from main
|
|
[15] init_angle_screen::screen#0 = (byte*)SCREEN_ANGLE#0
|
|
[16] call init_angle_screen
|
|
to:main::@1
|
|
main::@1: scope:[main] from main::@7 main::@8
|
|
[17] main::dist#0 = (byte*)SCREEN_DIST#0
|
|
[18] main::angle#0 = (byte*)SCREEN_ANGLE#0
|
|
to:main::@2
|
|
main::@2: scope:[main] from main::@1 main::@9
|
|
[19] main::min_fill#5 = phi( main::@1/SCREEN_FILL, main::@9/main::min_fill#2 )
|
|
[19] main::min_dist_angle#2 = phi( main::@1/$ffff, main::@9/main::min_dist_angle#6 )
|
|
[19] main::angle#2 = phi( main::@1/main::angle#0, main::@9/main::angle#1 )
|
|
[19] main::dist#2 = phi( main::@1/main::dist#0, main::@9/main::dist#1 )
|
|
[19] main::fill#2 = phi( main::@1/SCREEN_FILL, main::@9/main::fill#1 )
|
|
[20] if(*main::fill#2==FILL_CHAR) goto main::@10
|
|
to:main::@4
|
|
main::@4: scope:[main] from main::@2
|
|
[21] main::dist_angle#0 = *main::dist#2 w= *main::angle#2
|
|
[22] if(main::dist_angle#0>=main::min_dist_angle#2) goto main::@11
|
|
to:main::@5
|
|
main::@5: scope:[main] from main::@4
|
|
[23] main::min_fill#10 = main::fill#2
|
|
to:main::@3
|
|
main::@3: scope:[main] from main::@10 main::@11 main::@5
|
|
[24] main::min_fill#2 = phi( main::@10/main::min_fill#5, main::@11/main::min_fill#5, main::@5/main::min_fill#10 )
|
|
[24] main::min_dist_angle#3 = phi( main::@10/main::min_dist_angle#7, main::@11/main::min_dist_angle#8, main::@5/main::dist_angle#0 )
|
|
[25] main::dist#1 = ++ main::dist#2
|
|
[26] main::angle#1 = ++ main::angle#2
|
|
[27] main::fill#1 = ++ main::fill#2
|
|
[28] if(main::fill#1<SCREEN_FILL+$3e8) goto main::@9
|
|
to:main::@6
|
|
main::@6: scope:[main] from main::@3
|
|
[29] if(main::min_dist_angle#3!=$ffff) goto main::@7
|
|
to:main::@return
|
|
main::@return: scope:[main] from main::@6
|
|
[30] return
|
|
to:@return
|
|
main::@7: scope:[main] from main::@6
|
|
[31] *main::min_fill#2 = FILL_CHAR
|
|
to:main::@1
|
|
main::@9: scope:[main] from main::@3
|
|
[32] main::min_dist_angle#6 = main::min_dist_angle#3
|
|
to:main::@2
|
|
main::@11: scope:[main] from main::@4
|
|
[33] main::min_dist_angle#8 = main::min_dist_angle#2
|
|
to:main::@3
|
|
main::@10: scope:[main] from main::@2
|
|
[34] main::min_dist_angle#7 = main::min_dist_angle#2
|
|
to:main::@3
|
|
|
|
void init_dist_screen(byte* init_dist_screen::screen)
|
|
init_dist_screen: scope:[init_dist_screen] from main
|
|
[35] phi()
|
|
[36] call init_squares
|
|
to:init_dist_screen::@11
|
|
init_dist_screen::@11: scope:[init_dist_screen] from init_dist_screen
|
|
[37] init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#0 + (word)$28*$18
|
|
to:init_dist_screen::@1
|
|
init_dist_screen::@1: scope:[init_dist_screen] from init_dist_screen::@11 init_dist_screen::@7
|
|
[38] init_dist_screen::screen_bottomline#11 = phi( init_dist_screen::@11/init_dist_screen::screen_bottomline#0, init_dist_screen::@7/init_dist_screen::screen_bottomline#1 )
|
|
[38] init_dist_screen::screen_topline#11 = phi( init_dist_screen::@11/init_dist_screen::screen#0, init_dist_screen::@7/init_dist_screen::screen_topline#1 )
|
|
[38] init_dist_screen::y#10 = phi( init_dist_screen::@11/0, init_dist_screen::@7/init_dist_screen::y#1 )
|
|
[39] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1
|
|
[40] if(init_dist_screen::y2#0>=$18) goto init_dist_screen::@2
|
|
to:init_dist_screen::@3
|
|
init_dist_screen::@3: scope:[init_dist_screen] from init_dist_screen::@1
|
|
[41] init_dist_screen::$5 = $18 - 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
|
|
[42] init_dist_screen::yd#0 = phi( init_dist_screen::@2/init_dist_screen::$7, init_dist_screen::@3/init_dist_screen::$5 )
|
|
[43] sqr::val#0 = init_dist_screen::yd#0
|
|
[44] call sqr
|
|
[45] sqr::return#2 = sqr::return#0
|
|
to:init_dist_screen::@12
|
|
init_dist_screen::@12: scope:[init_dist_screen] from init_dist_screen::@4
|
|
[46] init_dist_screen::yds#0 = sqr::return#2
|
|
to:init_dist_screen::@5
|
|
init_dist_screen::@5: scope:[init_dist_screen] from init_dist_screen::@12 init_dist_screen::@14
|
|
[47] init_dist_screen::xb#2 = phi( init_dist_screen::@12/$27, init_dist_screen::@14/init_dist_screen::xb#1 )
|
|
[47] init_dist_screen::x#2 = phi( init_dist_screen::@12/0, init_dist_screen::@14/init_dist_screen::x#1 )
|
|
[48] if(init_dist_screen::x#2<$13+1) goto init_dist_screen::@6
|
|
to:init_dist_screen::@7
|
|
init_dist_screen::@7: scope:[init_dist_screen] from init_dist_screen::@5
|
|
[49] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28
|
|
[50] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28
|
|
[51] init_dist_screen::y#1 = ++ init_dist_screen::y#10
|
|
[52] if(init_dist_screen::y#1!=$d) goto init_dist_screen::@1
|
|
to:init_dist_screen::@return
|
|
init_dist_screen::@return: scope:[init_dist_screen] from init_dist_screen::@7
|
|
[53] return
|
|
to:@return
|
|
init_dist_screen::@6: scope:[init_dist_screen] from init_dist_screen::@5
|
|
[54] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1
|
|
[55] if(init_dist_screen::x2#0>=$27) goto init_dist_screen::@8
|
|
to:init_dist_screen::@9
|
|
init_dist_screen::@9: scope:[init_dist_screen] from init_dist_screen::@6
|
|
[56] init_dist_screen::$14 = $27 - 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
|
|
[57] init_dist_screen::xd#0 = phi( init_dist_screen::@8/init_dist_screen::$16, init_dist_screen::@9/init_dist_screen::$14 )
|
|
[58] sqr::val#1 = init_dist_screen::xd#0
|
|
[59] call sqr
|
|
[60] sqr::return#3 = sqr::return#0
|
|
to:init_dist_screen::@13
|
|
init_dist_screen::@13: scope:[init_dist_screen] from init_dist_screen::@10
|
|
[61] init_dist_screen::xds#0 = sqr::return#3
|
|
[62] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0
|
|
[63] sqrt::val#0 = init_dist_screen::ds#0
|
|
[64] call sqrt
|
|
[65] sqrt::return#2 = sqrt::return#0
|
|
to:init_dist_screen::@14
|
|
init_dist_screen::@14: scope:[init_dist_screen] from init_dist_screen::@13
|
|
[66] init_dist_screen::d#0 = sqrt::return#2
|
|
[67] init_dist_screen::screen_topline#11[init_dist_screen::x#2] = init_dist_screen::d#0
|
|
[68] init_dist_screen::screen_bottomline#11[init_dist_screen::x#2] = init_dist_screen::d#0
|
|
[69] init_dist_screen::screen_topline#11[init_dist_screen::xb#2] = init_dist_screen::d#0
|
|
[70] init_dist_screen::screen_bottomline#11[init_dist_screen::xb#2] = init_dist_screen::d#0
|
|
[71] init_dist_screen::x#1 = ++ init_dist_screen::x#2
|
|
[72] init_dist_screen::xb#1 = -- init_dist_screen::xb#2
|
|
to:init_dist_screen::@5
|
|
init_dist_screen::@8: scope:[init_dist_screen] from init_dist_screen::@6
|
|
[73] init_dist_screen::$16 = init_dist_screen::x2#0 - $27
|
|
to:init_dist_screen::@10
|
|
init_dist_screen::@2: scope:[init_dist_screen] from init_dist_screen::@1
|
|
[74] init_dist_screen::$7 = init_dist_screen::y2#0 - $18
|
|
to:init_dist_screen::@4
|
|
|
|
void init_angle_screen(byte* init_angle_screen::screen)
|
|
init_angle_screen: scope:[init_angle_screen] from main::@8
|
|
[75] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (word)$28*$c
|
|
[76] init_angle_screen::screen_topline#7 = init_angle_screen::screen_bottomline#0
|
|
to:init_angle_screen::@1
|
|
init_angle_screen::@1: scope:[init_angle_screen] from init_angle_screen init_angle_screen::@4
|
|
[77] init_angle_screen::screen_bottomline#6 = phi( init_angle_screen/init_angle_screen::screen_bottomline#0, init_angle_screen::@4/init_angle_screen::screen_bottomline#1 )
|
|
[77] init_angle_screen::screen_topline#6 = phi( init_angle_screen/init_angle_screen::screen_topline#7, init_angle_screen::@4/init_angle_screen::screen_topline#1 )
|
|
[77] 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
|
|
[78] init_angle_screen::xb#2 = phi( init_angle_screen::@1/$27, init_angle_screen::@5/init_angle_screen::xb#1 )
|
|
[78] init_angle_screen::x#2 = phi( init_angle_screen::@1/0, init_angle_screen::@5/init_angle_screen::x#1 )
|
|
[79] 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
|
|
[80] init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#6 - $28
|
|
[81] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28
|
|
[82] init_angle_screen::y#1 = ++ init_angle_screen::y#5
|
|
[83] 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
|
|
[84] return
|
|
to:@return
|
|
init_angle_screen::@3: scope:[init_angle_screen] from init_angle_screen::@2
|
|
[85] init_angle_screen::$3 = init_angle_screen::x#2 << 1
|
|
[86] init_angle_screen::$4 = $27 - init_angle_screen::$3
|
|
[87] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0
|
|
[88] init_angle_screen::$5 = init_angle_screen::y#5 << 1
|
|
[89] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0
|
|
[90] atan2_16::x#0 = (signed word)init_angle_screen::xw#0
|
|
[91] atan2_16::y#0 = (signed word)init_angle_screen::yw#0
|
|
[92] call atan2_16
|
|
[93] 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
|
|
[94] init_angle_screen::angle_w#0 = atan2_16::return#2
|
|
[95] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80
|
|
[96] init_angle_screen::ang_w#0 = > init_angle_screen::$7
|
|
[97] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0
|
|
[98] init_angle_screen::$9 = - init_angle_screen::ang_w#0
|
|
[99] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9
|
|
[100] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0
|
|
[101] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10
|
|
[102] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0
|
|
[103] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11
|
|
[104] init_angle_screen::x#1 = ++ init_angle_screen::x#2
|
|
[105] init_angle_screen::xb#1 = -- init_angle_screen::xb#2
|
|
to:init_angle_screen::@2
|
|
|
|
void init_squares()
|
|
init_squares: scope:[init_squares] from init_dist_screen
|
|
[106] phi()
|
|
[107] call malloc
|
|
to:init_squares::@3
|
|
init_squares::@3: scope:[init_squares] from init_squares
|
|
[108] SQUARES#0 = (void*)malloc::mem#0
|
|
[109] init_squares::squares#0 = (word*)SQUARES#0
|
|
to:init_squares::@1
|
|
init_squares::@1: scope:[init_squares] from init_squares::@2 init_squares::@3
|
|
[110] init_squares::squares#2 = phi( init_squares::@2/init_squares::squares#1, init_squares::@3/init_squares::squares#0 )
|
|
[110] init_squares::sqr#2 = phi( init_squares::@2/init_squares::sqr#1, init_squares::@3/0 )
|
|
[110] init_squares::i#2 = phi( init_squares::@2/init_squares::i#1, init_squares::@3/0 )
|
|
[111] if(init_squares::i#2<NUM_SQUARES#2) goto init_squares::@2
|
|
to:init_squares::@return
|
|
init_squares::@return: scope:[init_squares] from init_squares::@1
|
|
[112] return
|
|
to:@return
|
|
init_squares::@2: scope:[init_squares] from init_squares::@1
|
|
[113] *init_squares::squares#2 = init_squares::sqr#2
|
|
[114] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_WORD
|
|
[115] init_squares::$3 = init_squares::i#2 << 1
|
|
[116] init_squares::$4 = init_squares::$3 + 1
|
|
[117] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4
|
|
[118] init_squares::i#1 = ++ init_squares::i#2
|
|
to:init_squares::@1
|
|
|
|
word sqr(byte sqr::val)
|
|
sqr: scope:[sqr] from init_dist_screen::@10 init_dist_screen::@4
|
|
[119] sqr::val#2 = phi( init_dist_screen::@10/sqr::val#1, init_dist_screen::@4/sqr::val#0 )
|
|
[120] sqr::$0 = sqr::val#2 << 1
|
|
[121] sqr::return#0 = ((word*)SQUARES#0)[sqr::$0]
|
|
to:sqr::@return
|
|
sqr::@return: scope:[sqr] from sqr
|
|
[122] return
|
|
to:@return
|
|
|
|
byte sqrt(word sqrt::val)
|
|
sqrt: scope:[sqrt] from init_dist_screen::@13
|
|
[123] bsearch16u::key#0 = sqrt::val#0
|
|
[124] bsearch16u::items#1 = (word*)SQUARES#0
|
|
[125] call bsearch16u
|
|
[126] bsearch16u::return#3 = bsearch16u::return#1
|
|
to:sqrt::@1
|
|
sqrt::@1: scope:[sqrt] from sqrt
|
|
[127] sqrt::found#0 = bsearch16u::return#3
|
|
[128] sqrt::$2 = sqrt::found#0 - (word*)SQUARES#0
|
|
[129] sqrt::$1 = sqrt::$2 >> 1
|
|
[130] sqrt::return#0 = (byte)sqrt::$1
|
|
to:sqrt::@return
|
|
sqrt::@return: scope:[sqrt] from sqrt::@1
|
|
[131] return
|
|
to:@return
|
|
|
|
word atan2_16(signed word atan2_16::x , signed word atan2_16::y)
|
|
atan2_16: scope:[atan2_16] from init_angle_screen::@3
|
|
[132] if(atan2_16::y#0>=0) goto atan2_16::@1
|
|
to:atan2_16::@2
|
|
atan2_16::@2: scope:[atan2_16] from atan2_16
|
|
[133] atan2_16::$2 = - atan2_16::y#0
|
|
to:atan2_16::@3
|
|
atan2_16::@3: scope:[atan2_16] from atan2_16::@1 atan2_16::@2
|
|
[134] atan2_16::yi#0 = phi( atan2_16::@1/atan2_16::yi#16, atan2_16::@2/atan2_16::$2 )
|
|
[135] if(atan2_16::x#0>=0) goto atan2_16::@4
|
|
to:atan2_16::@5
|
|
atan2_16::@5: scope:[atan2_16] from atan2_16::@3
|
|
[136] atan2_16::$7 = - atan2_16::x#0
|
|
to:atan2_16::@6
|
|
atan2_16::@6: scope:[atan2_16] from atan2_16::@4 atan2_16::@5
|
|
[137] 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
|
|
[138] atan2_16::angle#12 = phi( atan2_16::@19/atan2_16::angle#13, atan2_16::@6/0 )
|
|
[138] atan2_16::i#2 = phi( atan2_16::@19/atan2_16::i#1, atan2_16::@6/0 )
|
|
[138] atan2_16::xi#3 = phi( atan2_16::@19/atan2_16::xi#8, atan2_16::@6/atan2_16::xi#0 )
|
|
[138] atan2_16::yi#3 = phi( atan2_16::@19/atan2_16::yi#8, atan2_16::@6/atan2_16::yi#0 )
|
|
[139] 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
|
|
[140] atan2_16::angle#6 = phi( atan2_16::@10/atan2_16::angle#12, atan2_16::@19/atan2_16::angle#13 )
|
|
[141] atan2_16::angle#1 = atan2_16::angle#6 >> 1
|
|
[142] if(atan2_16::x#0>=0) goto atan2_16::@7
|
|
to:atan2_16::@21
|
|
atan2_16::@21: scope:[atan2_16] from atan2_16::@12
|
|
[143] 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
|
|
[144] atan2_16::angle#11 = phi( atan2_16::@12/atan2_16::angle#1, atan2_16::@21/atan2_16::angle#4 )
|
|
[145] if(atan2_16::y#0>=0) goto atan2_16::@8
|
|
to:atan2_16::@9
|
|
atan2_16::@9: scope:[atan2_16] from atan2_16::@7
|
|
[146] 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
|
|
[147] 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
|
|
[148] return
|
|
to:@return
|
|
atan2_16::@11: scope:[atan2_16] from atan2_16::@10
|
|
[149] atan2_16::shift#5 = atan2_16::i#2
|
|
[150] atan2_16::xd#10 = atan2_16::xi#3
|
|
[151] 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
|
|
[152] atan2_16::yd#3 = phi( atan2_16::@11/atan2_16::yd#10, atan2_16::@14/atan2_16::yd#1 )
|
|
[152] atan2_16::xd#3 = phi( atan2_16::@11/atan2_16::xd#10, atan2_16::@14/atan2_16::xd#1 )
|
|
[152] atan2_16::shift#2 = phi( atan2_16::@11/atan2_16::shift#5, atan2_16::@14/atan2_16::shift#1 )
|
|
[153] if(atan2_16::shift#2>=2) goto atan2_16::@14
|
|
to:atan2_16::@15
|
|
atan2_16::@15: scope:[atan2_16] from atan2_16::@13
|
|
[154] if(0==atan2_16::shift#2) goto atan2_16::@17
|
|
to:atan2_16::@16
|
|
atan2_16::@16: scope:[atan2_16] from atan2_16::@15
|
|
[155] atan2_16::xd#2 = atan2_16::xd#3 >> 1
|
|
[156] 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
|
|
[157] atan2_16::xd#5 = phi( atan2_16::@15/atan2_16::xd#3, atan2_16::@16/atan2_16::xd#2 )
|
|
[157] atan2_16::yd#5 = phi( atan2_16::@15/atan2_16::yd#3, atan2_16::@16/atan2_16::yd#2 )
|
|
[158] if(atan2_16::yi#3>=0) goto atan2_16::@18
|
|
to:atan2_16::@20
|
|
atan2_16::@20: scope:[atan2_16] from atan2_16::@17
|
|
[159] atan2_16::xi#2 = atan2_16::xi#3 - atan2_16::yd#5
|
|
[160] atan2_16::yi#2 = atan2_16::yi#3 + atan2_16::xd#5
|
|
[161] atan2_16::$23 = atan2_16::i#2 << 1
|
|
[162] 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
|
|
[163] atan2_16::xi#8 = phi( atan2_16::@18/atan2_16::xi#1, atan2_16::@20/atan2_16::xi#2 )
|
|
[163] atan2_16::angle#13 = phi( atan2_16::@18/atan2_16::angle#2, atan2_16::@20/atan2_16::angle#3 )
|
|
[163] atan2_16::yi#8 = phi( atan2_16::@18/atan2_16::yi#1, atan2_16::@20/atan2_16::yi#2 )
|
|
[164] atan2_16::i#1 = ++ atan2_16::i#2
|
|
[165] 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
|
|
[166] atan2_16::xi#1 = atan2_16::xi#3 + atan2_16::yd#5
|
|
[167] atan2_16::yi#1 = atan2_16::yi#3 - atan2_16::xd#5
|
|
[168] atan2_16::$22 = atan2_16::i#2 << 1
|
|
[169] 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
|
|
[170] atan2_16::xd#1 = atan2_16::xd#3 >> 2
|
|
[171] atan2_16::yd#1 = atan2_16::yd#3 >> 2
|
|
[172] atan2_16::shift#1 = atan2_16::shift#2 - 2
|
|
to:atan2_16::@13
|
|
atan2_16::@4: scope:[atan2_16] from atan2_16::@3
|
|
[173] atan2_16::xi#13 = atan2_16::x#0
|
|
to:atan2_16::@6
|
|
atan2_16::@1: scope:[atan2_16] from atan2_16
|
|
[174] atan2_16::yi#16 = atan2_16::y#0
|
|
to:atan2_16::@3
|
|
|
|
word* bsearch16u(word bsearch16u::key , word* bsearch16u::items , byte bsearch16u::num)
|
|
bsearch16u: scope:[bsearch16u] from sqrt
|
|
[175] phi()
|
|
to:bsearch16u::@3
|
|
bsearch16u::@3: scope:[bsearch16u] from bsearch16u bsearch16u::@7
|
|
[176] bsearch16u::items#2 = phi( bsearch16u/bsearch16u::items#1, bsearch16u::@7/bsearch16u::items#8 )
|
|
[176] bsearch16u::num#3 = phi( bsearch16u/NUM_SQUARES#2, bsearch16u::@7/bsearch16u::num#0 )
|
|
[177] if(bsearch16u::num#3>0) goto bsearch16u::@4
|
|
to:bsearch16u::@5
|
|
bsearch16u::@5: scope:[bsearch16u] from bsearch16u::@3
|
|
[178] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2
|
|
to:bsearch16u::@1
|
|
bsearch16u::@1: scope:[bsearch16u] from bsearch16u::@5
|
|
[179] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_WORD
|
|
to:bsearch16u::@2
|
|
bsearch16u::@2: scope:[bsearch16u] from bsearch16u::@1 bsearch16u::@5
|
|
[180] bsearch16u::return#2 = phi( bsearch16u::@5/bsearch16u::items#2, bsearch16u::@1/bsearch16u::$2 )
|
|
to:bsearch16u::@return
|
|
bsearch16u::@return: scope:[bsearch16u] from bsearch16u::@2 bsearch16u::@8
|
|
[181] bsearch16u::return#1 = phi( bsearch16u::@2/bsearch16u::return#2, bsearch16u::@8/bsearch16u::return#7 )
|
|
[182] return
|
|
to:@return
|
|
bsearch16u::@4: scope:[bsearch16u] from bsearch16u::@3
|
|
[183] bsearch16u::$6 = bsearch16u::num#3 >> 1
|
|
[184] bsearch16u::$14 = bsearch16u::$6 << 1
|
|
[185] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14
|
|
[186] bsearch16u::result#0 = (signed word)bsearch16u::key#0 - (signed word)*bsearch16u::pivot#0
|
|
[187] if(bsearch16u::result#0!=0) goto bsearch16u::@6
|
|
to:bsearch16u::@8
|
|
bsearch16u::@8: scope:[bsearch16u] from bsearch16u::@4
|
|
[188] bsearch16u::return#7 = bsearch16u::pivot#0
|
|
to:bsearch16u::@return
|
|
bsearch16u::@6: scope:[bsearch16u] from bsearch16u::@4
|
|
[189] if(bsearch16u::result#0<=0) goto bsearch16u::@7
|
|
to:bsearch16u::@9
|
|
bsearch16u::@9: scope:[bsearch16u] from bsearch16u::@6
|
|
[190] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_WORD
|
|
[191] bsearch16u::num#1 = -- bsearch16u::num#3
|
|
to:bsearch16u::@7
|
|
bsearch16u::@7: scope:[bsearch16u] from bsearch16u::@6 bsearch16u::@9
|
|
[192] bsearch16u::items#8 = phi( bsearch16u::@9/bsearch16u::items#0, bsearch16u::@6/bsearch16u::items#2 )
|
|
[192] bsearch16u::num#5 = phi( bsearch16u::@9/bsearch16u::num#1, bsearch16u::@6/bsearch16u::num#3 )
|
|
[193] bsearch16u::num#0 = bsearch16u::num#5 >> 1
|
|
to:bsearch16u::@3
|
|
|
|
|
|
VARIABLE REGISTER WEIGHTS
|
|
byte NUM_SQUARES
|
|
byte* SCREEN_ANGLE
|
|
void* SCREEN_ANGLE#0 0.08695652173913043
|
|
byte* SCREEN_DIST
|
|
void* SCREEN_DIST#0 0.08
|
|
word* SQUARES
|
|
void* SQUARES#0 16.14516129032258
|
|
void __start()
|
|
word atan2_16(signed word atan2_16::x , signed word atan2_16::y)
|
|
signed word~ atan2_16::$2 200002.0
|
|
byte~ atan2_16::$22 2.00000002E8
|
|
byte~ atan2_16::$23 2.00000002E8
|
|
signed word~ atan2_16::$7 200002.0
|
|
word atan2_16::angle
|
|
word atan2_16::angle#1 150001.5
|
|
word atan2_16::angle#11 200002.0
|
|
word atan2_16::angle#12 1.904761923809524E7
|
|
word atan2_16::angle#13 1.3333333466666667E8
|
|
word atan2_16::angle#2 2.00000002E8
|
|
word atan2_16::angle#3 2.00000002E8
|
|
word atan2_16::angle#4 200002.0
|
|
word atan2_16::angle#5 200002.0
|
|
word atan2_16::angle#6 2.00100003E8
|
|
byte atan2_16::i
|
|
byte atan2_16::i#1 1.500000015E8
|
|
byte atan2_16::i#2 2.0833333541666668E7
|
|
word atan2_16::return
|
|
word atan2_16::return#0 70001.0
|
|
word atan2_16::return#2 20002.0
|
|
byte atan2_16::shift
|
|
byte atan2_16::shift#1 2.000000002E9
|
|
byte atan2_16::shift#2 8.0000000125E8
|
|
byte atan2_16::shift#5 6.6666667333333336E7
|
|
signed word atan2_16::x
|
|
signed word atan2_16::x#0 10789.605263157895
|
|
signed word atan2_16::xd
|
|
signed word atan2_16::xd#1 6.666666673333334E8
|
|
signed word atan2_16::xd#10 1.00000001E8
|
|
signed word atan2_16::xd#2 1.00000001E8
|
|
signed word atan2_16::xd#3 7.666666683333335E8
|
|
signed word atan2_16::xd#5 1.00000001E8
|
|
signed word atan2_16::xi
|
|
signed word atan2_16::xi#0 300003.0
|
|
signed word atan2_16::xi#1 5.00000005E7
|
|
signed word atan2_16::xi#13 200002.0
|
|
signed word atan2_16::xi#2 5.00000005E7
|
|
signed word atan2_16::xi#3 2.6673333666666668E7
|
|
signed word atan2_16::xi#8 1.00000001E8
|
|
signed word atan2_16::y
|
|
signed word atan2_16::y#0 10250.125
|
|
signed word atan2_16::yd
|
|
signed word atan2_16::yd#1 1.000000001E9
|
|
signed word atan2_16::yd#10 2.00000002E8
|
|
signed word atan2_16::yd#2 2.00000002E8
|
|
signed word atan2_16::yd#3 4.6000000099999994E8
|
|
signed word atan2_16::yd#5 2.00000002E8
|
|
signed word atan2_16::yi
|
|
signed word atan2_16::yi#0 60000.600000000006
|
|
signed word atan2_16::yi#1 6.6666667333333336E7
|
|
signed word atan2_16::yi#16 200002.0
|
|
signed word atan2_16::yi#2 6.6666667333333336E7
|
|
signed word atan2_16::yi#3 3.53000004117647E7
|
|
signed word atan2_16::yi#8 1.00000001E8
|
|
word* bsearch16u(word bsearch16u::key , word* bsearch16u::items , byte bsearch16u::num)
|
|
byte~ bsearch16u::$14 2.000000002E9
|
|
word*~ bsearch16u::$2 2000002.0
|
|
byte~ bsearch16u::$6 2.000000002E9
|
|
word* bsearch16u::items
|
|
word* bsearch16u::items#0 1.000000001E9
|
|
word* bsearch16u::items#1 550001.0
|
|
word* bsearch16u::items#2 3.337777785555556E8
|
|
word* bsearch16u::items#8 1.5000000015E9
|
|
word bsearch16u::key
|
|
word bsearch16u::key#0 73333.46666666667
|
|
byte bsearch16u::num
|
|
byte bsearch16u::num#0 2.000000002E9
|
|
byte bsearch16u::num#1 2.000000002E9
|
|
byte bsearch16u::num#3 5.555555561111112E8
|
|
byte bsearch16u::num#5 3.000000003E9
|
|
word* bsearch16u::pivot
|
|
word* bsearch16u::pivot#0 5.0025000075E8
|
|
signed word bsearch16u::result
|
|
signed word bsearch16u::result#0 1.5000000015E9
|
|
word* bsearch16u::return
|
|
word* bsearch16u::return#1 700001.0
|
|
word* bsearch16u::return#2 3000003.0
|
|
word* bsearch16u::return#3 200002.0
|
|
word* bsearch16u::return#7 2000002.0
|
|
byte* heap_head
|
|
byte* heap_head#0 1100.4
|
|
byte* heap_head#13 11004.0
|
|
void init_angle_screen(byte* init_angle_screen::screen)
|
|
byte~ init_angle_screen::$10 20002.0
|
|
byte~ init_angle_screen::$11 20002.0
|
|
byte~ init_angle_screen::$3 20002.0
|
|
byte~ init_angle_screen::$4 20002.0
|
|
byte~ init_angle_screen::$5 20002.0
|
|
word~ init_angle_screen::$7 20002.0
|
|
byte~ init_angle_screen::$9 20002.0
|
|
byte init_angle_screen::ang_w
|
|
byte init_angle_screen::ang_w#0 8334.166666666666
|
|
word init_angle_screen::angle_w
|
|
word init_angle_screen::angle_w#0 20002.0
|
|
byte* init_angle_screen::screen
|
|
byte* init_angle_screen::screen#0 112.0
|
|
byte* init_angle_screen::screen_bottomline
|
|
byte* init_angle_screen::screen_bottomline#0 151.5
|
|
byte* init_angle_screen::screen_bottomline#1 667.3333333333334
|
|
byte* init_angle_screen::screen_bottomline#6 884.2
|
|
byte* init_angle_screen::screen_topline
|
|
byte* init_angle_screen::screen_topline#1 500.5
|
|
byte* init_angle_screen::screen_topline#6 921.0416666666666
|
|
byte* init_angle_screen::screen_topline#7 202.0
|
|
byte init_angle_screen::x
|
|
byte init_angle_screen::x#1 10001.0
|
|
byte init_angle_screen::x#2 2857.4285714285716
|
|
byte init_angle_screen::xb
|
|
byte init_angle_screen::xb#1 20002.0
|
|
byte init_angle_screen::xb#2 1818.3636363636363
|
|
signed word init_angle_screen::xw
|
|
word init_angle_screen::xw#0 3333.6666666666665
|
|
byte init_angle_screen::y
|
|
byte init_angle_screen::y#1 1501.5
|
|
byte init_angle_screen::y#5 461.65384615384613
|
|
signed word init_angle_screen::yw
|
|
word init_angle_screen::yw#0 5000.5
|
|
void init_dist_screen(byte* init_dist_screen::screen)
|
|
byte~ init_dist_screen::$14 20002.0
|
|
byte~ init_dist_screen::$16 20002.0
|
|
byte~ init_dist_screen::$5 2002.0
|
|
byte~ init_dist_screen::$7 2002.0
|
|
byte init_dist_screen::d
|
|
byte init_dist_screen::d#0 12501.25
|
|
word init_dist_screen::ds
|
|
word init_dist_screen::ds#0 20002.0
|
|
byte* init_dist_screen::screen
|
|
byte* init_dist_screen::screen#0 53.25
|
|
byte* init_dist_screen::screen_bottomline
|
|
byte* init_dist_screen::screen_bottomline#0 202.0
|
|
byte* init_dist_screen::screen_bottomline#1 667.3333333333334
|
|
byte* init_dist_screen::screen_bottomline#11 669.8484848484848
|
|
byte* init_dist_screen::screen_topline
|
|
byte* init_dist_screen::screen_topline#1 500.5
|
|
byte* init_dist_screen::screen_topline#11 690.78125
|
|
byte init_dist_screen::x
|
|
byte init_dist_screen::x#1 10001.0
|
|
byte init_dist_screen::x#2 3000.3
|
|
byte init_dist_screen::x2
|
|
byte init_dist_screen::x2#0 20002.0
|
|
byte init_dist_screen::xb
|
|
byte init_dist_screen::xb#1 20002.0
|
|
byte init_dist_screen::xb#2 1904.952380952381
|
|
byte init_dist_screen::xd
|
|
byte init_dist_screen::xd#0 30003.0
|
|
word init_dist_screen::xds
|
|
word init_dist_screen::xds#0 20002.0
|
|
byte init_dist_screen::y
|
|
byte init_dist_screen::y#1 1501.5
|
|
byte init_dist_screen::y#10 88.32352941176471
|
|
byte init_dist_screen::y2
|
|
byte init_dist_screen::y2#0 2002.0
|
|
byte init_dist_screen::yd
|
|
byte init_dist_screen::yd#0 3003.0
|
|
word init_dist_screen::yds
|
|
word init_dist_screen::yds#0 478.3478260869565
|
|
void init_squares()
|
|
byte~ init_squares::$3 20002.0
|
|
byte~ init_squares::$4 20002.0
|
|
byte init_squares::i
|
|
byte init_squares::i#1 20002.0
|
|
byte init_squares::i#2 5714.857142857143
|
|
word init_squares::sqr
|
|
word init_squares::sqr#1 10001.0
|
|
word init_squares::sqr#2 5000.5
|
|
word* init_squares::squares
|
|
word* init_squares::squares#0 2002.0
|
|
word* init_squares::squares#1 4000.4
|
|
word* init_squares::squares#2 10334.666666666666
|
|
void main()
|
|
byte* main::angle
|
|
byte* main::angle#0 202.0
|
|
byte* main::angle#1 500.5
|
|
byte* main::angle#2 344.8888888888889
|
|
byte* main::dist
|
|
byte* main::dist#0 101.0
|
|
byte* main::dist#1 400.4
|
|
byte* main::dist#2 388.0
|
|
word main::dist_angle
|
|
word main::dist_angle#0 1001.0
|
|
byte* main::fill
|
|
byte* main::fill#1 1001.0
|
|
byte* main::fill#2 400.4
|
|
word main::min_dist_angle
|
|
word main::min_dist_angle#2 1001.0
|
|
word main::min_dist_angle#3 821.0
|
|
word main::min_dist_angle#6 2002.0
|
|
word main::min_dist_angle#7 2002.0
|
|
word main::min_dist_angle#8 2002.0
|
|
byte* main::min_fill
|
|
byte* main::min_fill#10 2002.0
|
|
byte* main::min_fill#2 586.4285714285714
|
|
byte* main::min_fill#5 500.5
|
|
void* malloc(word malloc::size)
|
|
byte* malloc::mem
|
|
byte* malloc::mem#0 3333.6666666666665
|
|
void* malloc::return
|
|
word malloc::size
|
|
word malloc::size#3 10001.0
|
|
word sqr(byte sqr::val)
|
|
byte~ sqr::$0 200002.0
|
|
word sqr::return
|
|
word sqr::return#0 27750.75
|
|
word sqr::return#2 2002.0
|
|
word sqr::return#3 20002.0
|
|
byte sqr::val
|
|
byte sqr::val#0 2002.0
|
|
byte sqr::val#1 20002.0
|
|
byte sqr::val#2 111003.0
|
|
byte sqrt(word sqrt::val)
|
|
word~ sqrt::$1 100001.0
|
|
word~ sqrt::$2 200002.0
|
|
word* sqrt::found
|
|
word* sqrt::found#0 200002.0
|
|
byte sqrt::return
|
|
byte sqrt::return#0 36667.33333333333
|
|
byte sqrt::return#2 20002.0
|
|
byte sqrt::sq
|
|
word sqrt::val
|
|
word sqrt::val#0 110002.0
|
|
|
|
Initial phi equivalence classes
|
|
[ heap_head#13 heap_head#0 ]
|
|
[ malloc::size#3 ]
|
|
[ main::fill#2 main::fill#1 ]
|
|
[ main::dist#2 main::dist#0 main::dist#1 ]
|
|
[ main::angle#2 main::angle#0 main::angle#1 ]
|
|
[ main::min_dist_angle#2 main::min_dist_angle#6 ]
|
|
[ main::min_fill#5 main::min_fill#2 main::min_fill#10 ]
|
|
[ main::min_dist_angle#3 main::min_dist_angle#7 main::min_dist_angle#8 main::dist_angle#0 ]
|
|
[ init_dist_screen::y#10 init_dist_screen::y#1 ]
|
|
[ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ]
|
|
[ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ]
|
|
[ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
|
|
[ init_dist_screen::x#2 init_dist_screen::x#1 ]
|
|
[ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
|
|
[ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ]
|
|
[ init_angle_screen::y#5 init_angle_screen::y#1 ]
|
|
[ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ]
|
|
[ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ]
|
|
[ init_angle_screen::x#2 init_angle_screen::x#1 ]
|
|
[ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
|
|
[ init_squares::i#2 init_squares::i#1 ]
|
|
[ init_squares::sqr#2 init_squares::sqr#1 ]
|
|
[ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ]
|
|
[ sqr::val#2 sqr::val#1 sqr::val#0 ]
|
|
[ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]
|
|
[ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ]
|
|
[ atan2_16::i#2 atan2_16::i#1 ]
|
|
[ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ]
|
|
[ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ]
|
|
[ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
|
|
[ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
|
|
[ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
|
|
[ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ]
|
|
[ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
|
|
Added variable SCREEN_DIST#0 to live range equivalence class [ SCREEN_DIST#0 ]
|
|
Added variable SCREEN_ANGLE#0 to live range equivalence class [ SCREEN_ANGLE#0 ]
|
|
Added variable malloc::mem#0 to live range equivalence class [ malloc::mem#0 ]
|
|
Added variable init_angle_screen::screen#0 to live range equivalence class [ init_angle_screen::screen#0 ]
|
|
Added variable init_dist_screen::y2#0 to live range equivalence class [ init_dist_screen::y2#0 ]
|
|
Added variable sqr::return#2 to live range equivalence class [ sqr::return#2 ]
|
|
Added variable init_dist_screen::yds#0 to live range equivalence class [ init_dist_screen::yds#0 ]
|
|
Added variable init_dist_screen::x2#0 to live range equivalence class [ init_dist_screen::x2#0 ]
|
|
Added variable sqr::return#3 to live range equivalence class [ sqr::return#3 ]
|
|
Added variable init_dist_screen::xds#0 to live range equivalence class [ init_dist_screen::xds#0 ]
|
|
Added variable init_dist_screen::ds#0 to live range equivalence class [ init_dist_screen::ds#0 ]
|
|
Added variable sqrt::val#0 to live range equivalence class [ sqrt::val#0 ]
|
|
Added variable sqrt::return#2 to live range equivalence class [ sqrt::return#2 ]
|
|
Added variable init_dist_screen::d#0 to live range equivalence class [ init_dist_screen::d#0 ]
|
|
Added variable init_angle_screen::$3 to live range equivalence class [ init_angle_screen::$3 ]
|
|
Added variable init_angle_screen::$4 to live range equivalence class [ init_angle_screen::$4 ]
|
|
Added variable init_angle_screen::xw#0 to live range equivalence class [ init_angle_screen::xw#0 ]
|
|
Added variable init_angle_screen::$5 to live range equivalence class [ init_angle_screen::$5 ]
|
|
Added variable init_angle_screen::yw#0 to live range equivalence class [ init_angle_screen::yw#0 ]
|
|
Added variable atan2_16::x#0 to live range equivalence class [ atan2_16::x#0 ]
|
|
Added variable atan2_16::y#0 to live range equivalence class [ atan2_16::y#0 ]
|
|
Added variable atan2_16::return#2 to live range equivalence class [ atan2_16::return#2 ]
|
|
Added variable init_angle_screen::angle_w#0 to live range equivalence class [ init_angle_screen::angle_w#0 ]
|
|
Added variable init_angle_screen::$7 to live range equivalence class [ init_angle_screen::$7 ]
|
|
Added variable init_angle_screen::ang_w#0 to live range equivalence class [ init_angle_screen::ang_w#0 ]
|
|
Added variable init_angle_screen::$9 to live range equivalence class [ init_angle_screen::$9 ]
|
|
Added variable init_angle_screen::$10 to live range equivalence class [ init_angle_screen::$10 ]
|
|
Added variable init_angle_screen::$11 to live range equivalence class [ init_angle_screen::$11 ]
|
|
Added variable SQUARES#0 to live range equivalence class [ SQUARES#0 ]
|
|
Added variable init_squares::$3 to live range equivalence class [ init_squares::$3 ]
|
|
Added variable init_squares::$4 to live range equivalence class [ init_squares::$4 ]
|
|
Added variable sqr::$0 to live range equivalence class [ sqr::$0 ]
|
|
Added variable sqr::return#0 to live range equivalence class [ sqr::return#0 ]
|
|
Added variable bsearch16u::key#0 to live range equivalence class [ bsearch16u::key#0 ]
|
|
Added variable bsearch16u::return#3 to live range equivalence class [ bsearch16u::return#3 ]
|
|
Added variable sqrt::found#0 to live range equivalence class [ sqrt::found#0 ]
|
|
Added variable sqrt::$2 to live range equivalence class [ sqrt::$2 ]
|
|
Added variable sqrt::$1 to live range equivalence class [ sqrt::$1 ]
|
|
Added variable sqrt::return#0 to live range equivalence class [ sqrt::return#0 ]
|
|
Added variable atan2_16::$23 to live range equivalence class [ atan2_16::$23 ]
|
|
Added variable atan2_16::$22 to live range equivalence class [ atan2_16::$22 ]
|
|
Added variable bsearch16u::$6 to live range equivalence class [ bsearch16u::$6 ]
|
|
Added variable bsearch16u::$14 to live range equivalence class [ bsearch16u::$14 ]
|
|
Added variable bsearch16u::pivot#0 to live range equivalence class [ bsearch16u::pivot#0 ]
|
|
Added variable bsearch16u::result#0 to live range equivalence class [ bsearch16u::result#0 ]
|
|
Complete equivalence classes
|
|
[ heap_head#13 heap_head#0 ]
|
|
[ malloc::size#3 ]
|
|
[ main::fill#2 main::fill#1 ]
|
|
[ main::dist#2 main::dist#0 main::dist#1 ]
|
|
[ main::angle#2 main::angle#0 main::angle#1 ]
|
|
[ main::min_dist_angle#2 main::min_dist_angle#6 ]
|
|
[ main::min_fill#5 main::min_fill#2 main::min_fill#10 ]
|
|
[ main::min_dist_angle#3 main::min_dist_angle#7 main::min_dist_angle#8 main::dist_angle#0 ]
|
|
[ init_dist_screen::y#10 init_dist_screen::y#1 ]
|
|
[ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ]
|
|
[ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ]
|
|
[ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
|
|
[ init_dist_screen::x#2 init_dist_screen::x#1 ]
|
|
[ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
|
|
[ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ]
|
|
[ init_angle_screen::y#5 init_angle_screen::y#1 ]
|
|
[ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ]
|
|
[ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ]
|
|
[ init_angle_screen::x#2 init_angle_screen::x#1 ]
|
|
[ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
|
|
[ init_squares::i#2 init_squares::i#1 ]
|
|
[ init_squares::sqr#2 init_squares::sqr#1 ]
|
|
[ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ]
|
|
[ sqr::val#2 sqr::val#1 sqr::val#0 ]
|
|
[ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]
|
|
[ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ]
|
|
[ atan2_16::i#2 atan2_16::i#1 ]
|
|
[ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ]
|
|
[ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ]
|
|
[ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
|
|
[ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
|
|
[ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
|
|
[ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ]
|
|
[ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
|
|
[ SCREEN_DIST#0 ]
|
|
[ SCREEN_ANGLE#0 ]
|
|
[ malloc::mem#0 ]
|
|
[ init_angle_screen::screen#0 ]
|
|
[ init_dist_screen::y2#0 ]
|
|
[ sqr::return#2 ]
|
|
[ init_dist_screen::yds#0 ]
|
|
[ init_dist_screen::x2#0 ]
|
|
[ sqr::return#3 ]
|
|
[ init_dist_screen::xds#0 ]
|
|
[ init_dist_screen::ds#0 ]
|
|
[ sqrt::val#0 ]
|
|
[ sqrt::return#2 ]
|
|
[ init_dist_screen::d#0 ]
|
|
[ init_angle_screen::$3 ]
|
|
[ init_angle_screen::$4 ]
|
|
[ init_angle_screen::xw#0 ]
|
|
[ init_angle_screen::$5 ]
|
|
[ init_angle_screen::yw#0 ]
|
|
[ atan2_16::x#0 ]
|
|
[ atan2_16::y#0 ]
|
|
[ atan2_16::return#2 ]
|
|
[ init_angle_screen::angle_w#0 ]
|
|
[ init_angle_screen::$7 ]
|
|
[ init_angle_screen::ang_w#0 ]
|
|
[ init_angle_screen::$9 ]
|
|
[ init_angle_screen::$10 ]
|
|
[ init_angle_screen::$11 ]
|
|
[ SQUARES#0 ]
|
|
[ init_squares::$3 ]
|
|
[ init_squares::$4 ]
|
|
[ sqr::$0 ]
|
|
[ sqr::return#0 ]
|
|
[ bsearch16u::key#0 ]
|
|
[ bsearch16u::return#3 ]
|
|
[ sqrt::found#0 ]
|
|
[ sqrt::$2 ]
|
|
[ sqrt::$1 ]
|
|
[ sqrt::return#0 ]
|
|
[ atan2_16::$23 ]
|
|
[ atan2_16::$22 ]
|
|
[ bsearch16u::$6 ]
|
|
[ bsearch16u::$14 ]
|
|
[ bsearch16u::pivot#0 ]
|
|
[ bsearch16u::result#0 ]
|
|
Allocated zp[2]:2 [ heap_head#13 heap_head#0 ]
|
|
Allocated zp[2]:4 [ malloc::size#3 ]
|
|
Allocated zp[2]:6 [ main::fill#2 main::fill#1 ]
|
|
Allocated zp[2]:8 [ main::dist#2 main::dist#0 main::dist#1 ]
|
|
Allocated zp[2]:10 [ main::angle#2 main::angle#0 main::angle#1 ]
|
|
Allocated zp[2]:12 [ main::min_dist_angle#2 main::min_dist_angle#6 ]
|
|
Allocated zp[2]:14 [ main::min_fill#5 main::min_fill#2 main::min_fill#10 ]
|
|
Allocated zp[2]:16 [ main::min_dist_angle#3 main::min_dist_angle#7 main::min_dist_angle#8 main::dist_angle#0 ]
|
|
Allocated zp[1]:18 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
|
|
Allocated zp[2]:19 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ]
|
|
Allocated zp[2]:21 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ]
|
|
Allocated zp[1]:23 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
|
|
Allocated zp[1]:24 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
|
|
Allocated zp[1]:25 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
|
|
Allocated zp[1]:26 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ]
|
|
Allocated zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ]
|
|
Allocated zp[2]:28 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ]
|
|
Allocated zp[2]:30 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ]
|
|
Allocated zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
|
|
Allocated zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
|
|
Allocated zp[1]:34 [ init_squares::i#2 init_squares::i#1 ]
|
|
Allocated zp[2]:35 [ init_squares::sqr#2 init_squares::sqr#1 ]
|
|
Allocated zp[2]:37 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ]
|
|
Allocated zp[1]:39 [ sqr::val#2 sqr::val#1 sqr::val#0 ]
|
|
Allocated zp[2]:40 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]
|
|
Allocated zp[2]:42 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ]
|
|
Allocated zp[1]:44 [ atan2_16::i#2 atan2_16::i#1 ]
|
|
Allocated zp[2]:45 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ]
|
|
Allocated zp[2]:47 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ]
|
|
Allocated zp[1]:49 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
|
|
Allocated zp[2]:50 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
|
|
Allocated zp[2]:52 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
|
|
Allocated zp[2]:54 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ]
|
|
Allocated zp[1]:56 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
|
|
Allocated zp[2]:57 [ SCREEN_DIST#0 ]
|
|
Allocated zp[2]:59 [ SCREEN_ANGLE#0 ]
|
|
Allocated zp[2]:61 [ malloc::mem#0 ]
|
|
Allocated zp[2]:63 [ init_angle_screen::screen#0 ]
|
|
Allocated zp[1]:65 [ init_dist_screen::y2#0 ]
|
|
Allocated zp[2]:66 [ sqr::return#2 ]
|
|
Allocated zp[2]:68 [ init_dist_screen::yds#0 ]
|
|
Allocated zp[1]:70 [ init_dist_screen::x2#0 ]
|
|
Allocated zp[2]:71 [ sqr::return#3 ]
|
|
Allocated zp[2]:73 [ init_dist_screen::xds#0 ]
|
|
Allocated zp[2]:75 [ init_dist_screen::ds#0 ]
|
|
Allocated zp[2]:77 [ sqrt::val#0 ]
|
|
Allocated zp[1]:79 [ sqrt::return#2 ]
|
|
Allocated zp[1]:80 [ init_dist_screen::d#0 ]
|
|
Allocated zp[1]:81 [ init_angle_screen::$3 ]
|
|
Allocated zp[1]:82 [ init_angle_screen::$4 ]
|
|
Allocated zp[2]:83 [ init_angle_screen::xw#0 ]
|
|
Allocated zp[1]:85 [ init_angle_screen::$5 ]
|
|
Allocated zp[2]:86 [ init_angle_screen::yw#0 ]
|
|
Allocated zp[2]:88 [ atan2_16::x#0 ]
|
|
Allocated zp[2]:90 [ atan2_16::y#0 ]
|
|
Allocated zp[2]:92 [ atan2_16::return#2 ]
|
|
Allocated zp[2]:94 [ init_angle_screen::angle_w#0 ]
|
|
Allocated zp[2]:96 [ init_angle_screen::$7 ]
|
|
Allocated zp[1]:98 [ init_angle_screen::ang_w#0 ]
|
|
Allocated zp[1]:99 [ init_angle_screen::$9 ]
|
|
Allocated zp[1]:100 [ init_angle_screen::$10 ]
|
|
Allocated zp[1]:101 [ init_angle_screen::$11 ]
|
|
Allocated zp[2]:102 [ SQUARES#0 ]
|
|
Allocated zp[1]:104 [ init_squares::$3 ]
|
|
Allocated zp[1]:105 [ init_squares::$4 ]
|
|
Allocated zp[1]:106 [ sqr::$0 ]
|
|
Allocated zp[2]:107 [ sqr::return#0 ]
|
|
Allocated zp[2]:109 [ bsearch16u::key#0 ]
|
|
Allocated zp[2]:111 [ bsearch16u::return#3 ]
|
|
Allocated zp[2]:113 [ sqrt::found#0 ]
|
|
Allocated zp[2]:115 [ sqrt::$2 ]
|
|
Allocated zp[2]:117 [ sqrt::$1 ]
|
|
Allocated zp[1]:119 [ sqrt::return#0 ]
|
|
Allocated zp[1]:120 [ atan2_16::$23 ]
|
|
Allocated zp[1]:121 [ atan2_16::$22 ]
|
|
Allocated zp[1]:122 [ bsearch16u::$6 ]
|
|
Allocated zp[1]:123 [ bsearch16u::$14 ]
|
|
Allocated zp[2]:124 [ bsearch16u::pivot#0 ]
|
|
Allocated zp[2]:126 [ bsearch16u::result#0 ]
|
|
REGISTER UPLIFT POTENTIAL REGISTERS
|
|
Statement [3] SCREEN_DIST#0 = (void*)malloc::mem#0 [ SCREEN_DIST#0 heap_head#0 ] ( [ SCREEN_DIST#0 heap_head#0 ] { { heap_head#0 = heap_head#13 } } ) always clobbers reg byte a
|
|
Statement [5] SCREEN_ANGLE#0 = (void*)malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 ] { } ) always clobbers reg byte a
|
|
Statement [10] malloc::mem#0 = heap_head#13 - malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { } malloc:4 [ SCREEN_DIST#0 malloc::mem#0 ] { { heap_head#0 = heap_head#13 } } main:7::init_dist_screen:14::init_squares:36::malloc:107 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] { { heap_head#0 = heap_head#13 } } ) always clobbers reg byte a
|
|
Statement [11] heap_head#0 = malloc::mem#0 [ malloc::mem#0 heap_head#0 ] ( malloc:2 [ malloc::mem#0 heap_head#0 ] { } malloc:4 [ SCREEN_DIST#0 malloc::mem#0 heap_head#0 ] { { heap_head#0 = heap_head#13 } } main:7::init_dist_screen:14::init_squares:36::malloc:107 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#0 ] { { heap_head#0 = heap_head#13 } } ) always clobbers reg byte a
|
|
Statement [13] init_dist_screen::screen#0 = (byte*)SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 init_dist_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 init_dist_screen::screen#0 ] { } ) always clobbers reg byte a
|
|
Statement [15] init_angle_screen::screen#0 = (byte*)SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] { } ) always clobbers reg byte a
|
|
Statement [17] main::dist#0 = (byte*)SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 ] { } ) always clobbers reg byte a
|
|
Statement [18] main::angle#0 = (byte*)SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 main::angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 main::angle#0 ] { } ) always clobbers reg byte a
|
|
Statement [20] if(*main::fill#2==FILL_CHAR) goto main::@10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [21] main::dist_angle#0 = *main::dist#2 w= *main::angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [22] if(main::dist_angle#0>=main::min_dist_angle#2) goto main::@11 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] { } ) always clobbers reg byte a
|
|
Statement [23] main::min_fill#10 = main::fill#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::dist_angle#0 main::min_fill#10 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::dist_angle#0 main::min_fill#10 ] { } ) always clobbers reg byte a
|
|
Statement [28] if(main::fill#1<SCREEN_FILL+$3e8) goto main::@9 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_fill#2 main::min_dist_angle#3 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_fill#2 main::min_dist_angle#3 ] { } ) always clobbers reg byte a
|
|
Statement [29] if(main::min_dist_angle#3!=$ffff) goto main::@7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::min_fill#2 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::min_fill#2 ] { } ) always clobbers reg byte a
|
|
Statement [31] *main::min_fill#2 = FILL_CHAR [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [32] main::min_dist_angle#6 = main::min_dist_angle#3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_dist_angle#6 main::min_fill#2 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_dist_angle#6 main::min_fill#2 ] { } ) always clobbers reg byte a
|
|
Statement [33] main::min_dist_angle#8 = main::min_dist_angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#8 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#8 ] { } ) always clobbers reg byte a
|
|
Statement [34] main::min_dist_angle#7 = main::min_dist_angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#7 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#7 ] { } ) always clobbers reg byte a
|
|
Statement [37] init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#0 + (word)$28*$18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [39] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:18 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
|
|
Statement [41] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [45] sqr::return#2 = sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } ) always clobbers reg byte a
|
|
Statement [46] init_dist_screen::yds#0 = sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [49] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [50] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [54] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:24 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:25 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
|
|
Statement [56] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [60] sqr::return#3 = sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a
|
|
Statement [61] init_dist_screen::xds#0 = sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [62] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [63] sqrt::val#0 = init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [75] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (word)$28*$c [ init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_bottomline#0 ] { } ) always clobbers reg byte a
|
|
Statement [76] init_angle_screen::screen_topline#7 = init_angle_screen::screen_bottomline#0 [ init_angle_screen::screen_bottomline#0 init_angle_screen::screen_topline#7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_topline#7 ] { } ) always clobbers reg byte a
|
|
Statement [80] init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#6 - $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ]
|
|
Statement [81] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a
|
|
Statement [85] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
|
|
Statement [86] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [87] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ]
|
|
Removing always clobbered register reg byte y as potential for zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
|
|
Removing always clobbered register reg byte y as potential for zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
|
|
Statement [88] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [89] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
|
Statement [90] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [91] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [93] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [94] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
|
|
Statement [95] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
|
|
Statement [97] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp[1]:98 [ init_angle_screen::ang_w#0 ]
|
|
Statement [98] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:98 [ init_angle_screen::ang_w#0 ]
|
|
Statement [99] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
|
Statement [100] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
|
|
Statement [101] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
|
Statement [102] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
|
|
Statement [103] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y
|
|
Statement [108] SQUARES#0 = (void*)malloc::mem#0 [ SQUARES#0 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [109] init_squares::squares#0 = (word*)SQUARES#0 [ SQUARES#0 init_squares::squares#0 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::squares#0 ] { } ) always clobbers reg byte a
|
|
Statement [113] *init_squares::squares#2 = init_squares::sqr#2 [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte a as potential for zp[1]:34 [ init_squares::i#2 init_squares::i#1 ]
|
|
Removing always clobbered register reg byte y as potential for zp[1]:34 [ init_squares::i#2 init_squares::i#1 ]
|
|
Statement [114] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_WORD [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { } ) always clobbers reg byte a
|
|
Statement [115] init_squares::$3 = init_squares::i#2 << 1 [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { } ) always clobbers reg byte a
|
|
Statement [117] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4 [ SQUARES#0 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { } ) always clobbers reg byte a
|
|
Statement [120] sqr::$0 = sqr::val#2 << 1 [ SQUARES#0 sqr::$0 ] ( main:7::init_dist_screen:14::sqr:44 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#0 sqr::$0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:7::init_dist_screen:14::sqr:59 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqr::$0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a
|
|
Statement [121] sqr::return#0 = ((word*)SQUARES#0)[sqr::$0] [ sqr::return#0 SQUARES#0 ] ( main:7::init_dist_screen:14::sqr:44 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:7::init_dist_screen:14::sqr:59 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp[1]:18 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
|
|
Removing always clobbered register reg byte y as potential for zp[1]:24 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
|
|
Removing always clobbered register reg byte y as potential for zp[1]:25 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
|
|
Statement [123] bsearch16u::key#0 = sqrt::val#0 [ SQUARES#0 bsearch16u::key#0 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [124] bsearch16u::items#1 = (word*)SQUARES#0 [ SQUARES#0 bsearch16u::key#0 bsearch16u::items#1 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::items#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [126] bsearch16u::return#3 = bsearch16u::return#1 [ SQUARES#0 bsearch16u::return#3 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::return#3 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [127] sqrt::found#0 = bsearch16u::return#3 [ SQUARES#0 sqrt::found#0 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqrt::found#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [128] sqrt::$2 = sqrt::found#0 - (word*)SQUARES#0 [ SQUARES#0 sqrt::$2 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqrt::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [129] sqrt::$1 = sqrt::$2 >> 1 [ SQUARES#0 sqrt::$1 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqrt::$1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [130] sqrt::return#0 = (byte)sqrt::$1 [ sqrt::return#0 SQUARES#0 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [132] if(atan2_16::y#0>=0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [133] atan2_16::$2 = - atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [135] if(atan2_16::x#0>=0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [136] atan2_16::$7 = - atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [139] if(atan2_16::yi#3!=0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:44 [ atan2_16::i#2 atan2_16::i#1 ]
|
|
Statement [141] atan2_16::angle#1 = atan2_16::angle#6 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [142] if(atan2_16::x#0>=0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [143] atan2_16::angle#4 = $8000 - atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [145] if(atan2_16::y#0>=0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [146] atan2_16::angle#5 = - atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [150] atan2_16::xd#10 = atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:49 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
|
|
Statement [151] atan2_16::yd#10 = atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [155] atan2_16::xd#2 = atan2_16::xd#3 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [156] atan2_16::yd#2 = atan2_16::yd#3 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [158] if(atan2_16::yi#3>=0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [159] atan2_16::xi#2 = atan2_16::xi#3 - atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [160] atan2_16::yi#2 = atan2_16::yi#3 + atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [161] atan2_16::$23 = atan2_16::i#2 << 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [162] atan2_16::angle#3 = atan2_16::angle#12 - CORDIC_ATAN2_ANGLES_16[atan2_16::$23] [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [166] atan2_16::xi#1 = atan2_16::xi#3 + atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [167] atan2_16::yi#1 = atan2_16::yi#3 - atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [168] atan2_16::$22 = atan2_16::i#2 << 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [169] atan2_16::angle#2 = atan2_16::angle#12 + CORDIC_ATAN2_ANGLES_16[atan2_16::$22] [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [170] atan2_16::xd#1 = atan2_16::xd#3 >> 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [171] atan2_16::yd#1 = atan2_16::yd#3 >> 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [173] atan2_16::xi#13 = atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [174] atan2_16::yi#16 = atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [178] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::items#2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y
|
|
Statement [179] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_WORD [ bsearch16u::$2 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [183] bsearch16u::$6 = bsearch16u::num#3 >> 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:56 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
|
|
Statement [184] bsearch16u::$14 = bsearch16u::$6 << 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [185] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [186] bsearch16u::result#0 = (signed word)bsearch16u::key#0 - (signed word)*bsearch16u::pivot#0 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp[1]:56 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
|
|
Statement [187] if(bsearch16u::result#0!=0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [188] bsearch16u::return#7 = bsearch16u::pivot#0 [ bsearch16u::return#7 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::return#7 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [189] if(bsearch16u::result#0<=0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [190] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [3] SCREEN_DIST#0 = (void*)malloc::mem#0 [ SCREEN_DIST#0 heap_head#0 ] ( [ SCREEN_DIST#0 heap_head#0 ] { { heap_head#0 = heap_head#13 } } ) always clobbers reg byte a
|
|
Statement [5] SCREEN_ANGLE#0 = (void*)malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 ] { } ) always clobbers reg byte a
|
|
Statement [10] malloc::mem#0 = heap_head#13 - malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { } malloc:4 [ SCREEN_DIST#0 malloc::mem#0 ] { { heap_head#0 = heap_head#13 } } main:7::init_dist_screen:14::init_squares:36::malloc:107 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] { { heap_head#0 = heap_head#13 } } ) always clobbers reg byte a
|
|
Statement [11] heap_head#0 = malloc::mem#0 [ malloc::mem#0 heap_head#0 ] ( malloc:2 [ malloc::mem#0 heap_head#0 ] { } malloc:4 [ SCREEN_DIST#0 malloc::mem#0 heap_head#0 ] { { heap_head#0 = heap_head#13 } } main:7::init_dist_screen:14::init_squares:36::malloc:107 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#0 ] { { heap_head#0 = heap_head#13 } } ) always clobbers reg byte a
|
|
Statement [13] init_dist_screen::screen#0 = (byte*)SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 init_dist_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 init_dist_screen::screen#0 ] { } ) always clobbers reg byte a
|
|
Statement [15] init_angle_screen::screen#0 = (byte*)SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] { } ) always clobbers reg byte a
|
|
Statement [17] main::dist#0 = (byte*)SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 ] { } ) always clobbers reg byte a
|
|
Statement [18] main::angle#0 = (byte*)SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 main::angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 main::angle#0 ] { } ) always clobbers reg byte a
|
|
Statement [20] if(*main::fill#2==FILL_CHAR) goto main::@10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [21] main::dist_angle#0 = *main::dist#2 w= *main::angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [22] if(main::dist_angle#0>=main::min_dist_angle#2) goto main::@11 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] { } ) always clobbers reg byte a
|
|
Statement [23] main::min_fill#10 = main::fill#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::dist_angle#0 main::min_fill#10 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::dist_angle#0 main::min_fill#10 ] { } ) always clobbers reg byte a
|
|
Statement [28] if(main::fill#1<SCREEN_FILL+$3e8) goto main::@9 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_fill#2 main::min_dist_angle#3 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_fill#2 main::min_dist_angle#3 ] { } ) always clobbers reg byte a
|
|
Statement [29] if(main::min_dist_angle#3!=$ffff) goto main::@7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::min_fill#2 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::min_fill#2 ] { } ) always clobbers reg byte a
|
|
Statement [31] *main::min_fill#2 = FILL_CHAR [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [32] main::min_dist_angle#6 = main::min_dist_angle#3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_dist_angle#6 main::min_fill#2 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_dist_angle#6 main::min_fill#2 ] { } ) always clobbers reg byte a
|
|
Statement [33] main::min_dist_angle#8 = main::min_dist_angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#8 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#8 ] { } ) always clobbers reg byte a
|
|
Statement [34] main::min_dist_angle#7 = main::min_dist_angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#7 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#7 ] { } ) always clobbers reg byte a
|
|
Statement [37] init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#0 + (word)$28*$18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [39] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [41] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [45] sqr::return#2 = sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } ) always clobbers reg byte a
|
|
Statement [46] init_dist_screen::yds#0 = sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [49] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [50] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [54] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [56] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [60] sqr::return#3 = sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a
|
|
Statement [61] init_dist_screen::xds#0 = sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [62] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [63] sqrt::val#0 = init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [67] init_dist_screen::screen_topline#11[init_dist_screen::x#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] { } ) always clobbers reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp[1]:80 [ init_dist_screen::d#0 ]
|
|
Statement [68] init_dist_screen::screen_bottomline#11[init_dist_screen::x#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] { } ) always clobbers reg byte y
|
|
Statement [69] init_dist_screen::screen_topline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] { } ) always clobbers reg byte y
|
|
Statement [70] init_dist_screen::screen_bottomline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 ] { } ) always clobbers reg byte y
|
|
Statement [75] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (word)$28*$c [ init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_bottomline#0 ] { } ) always clobbers reg byte a
|
|
Statement [76] init_angle_screen::screen_topline#7 = init_angle_screen::screen_bottomline#0 [ init_angle_screen::screen_bottomline#0 init_angle_screen::screen_topline#7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_topline#7 ] { } ) always clobbers reg byte a
|
|
Statement [80] init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#6 - $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a
|
|
Statement [81] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a
|
|
Statement [85] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [86] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [87] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
|
Statement [88] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [89] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
|
Statement [90] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [91] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [93] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [94] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
|
|
Statement [95] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
|
|
Statement [97] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [98] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
|
|
Statement [99] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
|
Statement [100] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
|
|
Statement [101] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
|
Statement [102] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
|
|
Statement [103] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y
|
|
Statement [108] SQUARES#0 = (void*)malloc::mem#0 [ SQUARES#0 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [109] init_squares::squares#0 = (word*)SQUARES#0 [ SQUARES#0 init_squares::squares#0 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::squares#0 ] { } ) always clobbers reg byte a
|
|
Statement [113] *init_squares::squares#2 = init_squares::sqr#2 [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [114] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_WORD [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { } ) always clobbers reg byte a
|
|
Statement [115] init_squares::$3 = init_squares::i#2 << 1 [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { } ) always clobbers reg byte a
|
|
Statement [117] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4 [ SQUARES#0 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { } ) always clobbers reg byte a
|
|
Statement [120] sqr::$0 = sqr::val#2 << 1 [ SQUARES#0 sqr::$0 ] ( main:7::init_dist_screen:14::sqr:44 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#0 sqr::$0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:7::init_dist_screen:14::sqr:59 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqr::$0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a
|
|
Statement [121] sqr::return#0 = ((word*)SQUARES#0)[sqr::$0] [ sqr::return#0 SQUARES#0 ] ( main:7::init_dist_screen:14::sqr:44 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:7::init_dist_screen:14::sqr:59 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a reg byte y
|
|
Statement [123] bsearch16u::key#0 = sqrt::val#0 [ SQUARES#0 bsearch16u::key#0 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [124] bsearch16u::items#1 = (word*)SQUARES#0 [ SQUARES#0 bsearch16u::key#0 bsearch16u::items#1 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::items#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [126] bsearch16u::return#3 = bsearch16u::return#1 [ SQUARES#0 bsearch16u::return#3 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::return#3 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [127] sqrt::found#0 = bsearch16u::return#3 [ SQUARES#0 sqrt::found#0 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqrt::found#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [128] sqrt::$2 = sqrt::found#0 - (word*)SQUARES#0 [ SQUARES#0 sqrt::$2 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqrt::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [129] sqrt::$1 = sqrt::$2 >> 1 [ SQUARES#0 sqrt::$1 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqrt::$1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [130] sqrt::return#0 = (byte)sqrt::$1 [ sqrt::return#0 SQUARES#0 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [132] if(atan2_16::y#0>=0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [133] atan2_16::$2 = - atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [135] if(atan2_16::x#0>=0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [136] atan2_16::$7 = - atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [139] if(atan2_16::yi#3!=0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [141] atan2_16::angle#1 = atan2_16::angle#6 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [142] if(atan2_16::x#0>=0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [143] atan2_16::angle#4 = $8000 - atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [145] if(atan2_16::y#0>=0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [146] atan2_16::angle#5 = - atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [150] atan2_16::xd#10 = atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [151] atan2_16::yd#10 = atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [155] atan2_16::xd#2 = atan2_16::xd#3 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [156] atan2_16::yd#2 = atan2_16::yd#3 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [158] if(atan2_16::yi#3>=0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [159] atan2_16::xi#2 = atan2_16::xi#3 - atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [160] atan2_16::yi#2 = atan2_16::yi#3 + atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [161] atan2_16::$23 = atan2_16::i#2 << 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [162] atan2_16::angle#3 = atan2_16::angle#12 - CORDIC_ATAN2_ANGLES_16[atan2_16::$23] [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [166] atan2_16::xi#1 = atan2_16::xi#3 + atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [167] atan2_16::yi#1 = atan2_16::yi#3 - atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [168] atan2_16::$22 = atan2_16::i#2 << 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [169] atan2_16::angle#2 = atan2_16::angle#12 + CORDIC_ATAN2_ANGLES_16[atan2_16::$22] [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [170] atan2_16::xd#1 = atan2_16::xd#3 >> 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [171] atan2_16::yd#1 = atan2_16::yd#3 >> 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [173] atan2_16::xi#13 = atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [174] atan2_16::yi#16 = atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [178] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::items#2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y
|
|
Statement [179] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_WORD [ bsearch16u::$2 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [183] bsearch16u::$6 = bsearch16u::num#3 >> 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [184] bsearch16u::$14 = bsearch16u::$6 << 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [185] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [186] bsearch16u::result#0 = (signed word)bsearch16u::key#0 - (signed word)*bsearch16u::pivot#0 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y
|
|
Statement [187] if(bsearch16u::result#0!=0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [188] bsearch16u::return#7 = bsearch16u::pivot#0 [ bsearch16u::return#7 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::return#7 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [189] if(bsearch16u::result#0<=0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [190] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [3] SCREEN_DIST#0 = (void*)malloc::mem#0 [ SCREEN_DIST#0 heap_head#0 ] ( [ SCREEN_DIST#0 heap_head#0 ] { { heap_head#0 = heap_head#13 } } ) always clobbers reg byte a
|
|
Statement [5] SCREEN_ANGLE#0 = (void*)malloc::mem#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 ] ( [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 ] { } ) always clobbers reg byte a
|
|
Statement [10] malloc::mem#0 = heap_head#13 - malloc::size#3 [ malloc::mem#0 ] ( malloc:2 [ malloc::mem#0 ] { } malloc:4 [ SCREEN_DIST#0 malloc::mem#0 ] { { heap_head#0 = heap_head#13 } } main:7::init_dist_screen:14::init_squares:36::malloc:107 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 ] { { heap_head#0 = heap_head#13 } } ) always clobbers reg byte a
|
|
Statement [11] heap_head#0 = malloc::mem#0 [ malloc::mem#0 heap_head#0 ] ( malloc:2 [ malloc::mem#0 heap_head#0 ] { } malloc:4 [ SCREEN_DIST#0 malloc::mem#0 heap_head#0 ] { { heap_head#0 = heap_head#13 } } main:7::init_dist_screen:14::init_squares:36::malloc:107 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 malloc::mem#0 heap_head#0 ] { { heap_head#0 = heap_head#13 } } ) always clobbers reg byte a
|
|
Statement [13] init_dist_screen::screen#0 = (byte*)SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 init_dist_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 heap_head#0 init_dist_screen::screen#0 ] { } ) always clobbers reg byte a
|
|
Statement [15] init_angle_screen::screen#0 = (byte*)SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen#0 ] { } ) always clobbers reg byte a
|
|
Statement [17] main::dist#0 = (byte*)SCREEN_DIST#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 ] { } ) always clobbers reg byte a
|
|
Statement [18] main::angle#0 = (byte*)SCREEN_ANGLE#0 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 main::angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::dist#0 main::angle#0 ] { } ) always clobbers reg byte a
|
|
Statement [20] if(*main::fill#2==FILL_CHAR) goto main::@10 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [21] main::dist_angle#0 = *main::dist#2 w= *main::angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [22] if(main::dist_angle#0>=main::min_dist_angle#2) goto main::@11 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_dist_angle#2 main::min_fill#5 main::dist_angle#0 ] { } ) always clobbers reg byte a
|
|
Statement [23] main::min_fill#10 = main::fill#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::dist_angle#0 main::min_fill#10 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::dist_angle#0 main::min_fill#10 ] { } ) always clobbers reg byte a
|
|
Statement [28] if(main::fill#1<SCREEN_FILL+$3e8) goto main::@9 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_fill#2 main::min_dist_angle#3 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_fill#2 main::min_dist_angle#3 ] { } ) always clobbers reg byte a
|
|
Statement [29] if(main::min_dist_angle#3!=$ffff) goto main::@7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::min_fill#2 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::min_fill#2 ] { } ) always clobbers reg byte a
|
|
Statement [31] *main::min_fill#2 = FILL_CHAR [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [32] main::min_dist_angle#6 = main::min_dist_angle#3 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_dist_angle#6 main::min_fill#2 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#1 main::dist#1 main::angle#1 main::min_dist_angle#6 main::min_fill#2 ] { } ) always clobbers reg byte a
|
|
Statement [33] main::min_dist_angle#8 = main::min_dist_angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#8 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#8 ] { } ) always clobbers reg byte a
|
|
Statement [34] main::min_dist_angle#7 = main::min_dist_angle#2 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#7 ] ( main:7 [ SCREEN_DIST#0 SCREEN_ANGLE#0 main::fill#2 main::dist#2 main::angle#2 main::min_fill#5 main::min_dist_angle#7 ] { } ) always clobbers reg byte a
|
|
Statement [37] init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#0 + (word)$28*$18 [ init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 init_dist_screen::screen_bottomline#0 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [39] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::y2#0 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [41] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::$5 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [45] sqr::return#2 = sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#2 SQUARES#0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } ) always clobbers reg byte a
|
|
Statement [46] init_dist_screen::yds#0 = sqr::return#2 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [49] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28 [ init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_topline#1 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [50] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28 [ init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#1 init_dist_screen::screen_bottomline#1 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [54] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::x2#0 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [56] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::$14 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [60] sqr::return#3 = sqr::return#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#3 SQUARES#0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a
|
|
Statement [61] init_dist_screen::xds#0 = sqr::return#3 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::xds#0 SQUARES#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [62] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::ds#0 SQUARES#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [63] sqrt::val#0 = init_dist_screen::ds#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::val#0 SQUARES#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [67] init_dist_screen::screen_topline#11[init_dist_screen::x#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] { } ) always clobbers reg byte y
|
|
Statement [68] init_dist_screen::screen_bottomline#11[init_dist_screen::x#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] { } ) always clobbers reg byte y
|
|
Statement [69] init_dist_screen::screen_topline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 init_dist_screen::d#0 SQUARES#0 ] { } ) always clobbers reg byte y
|
|
Statement [70] init_dist_screen::screen_bottomline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 [ init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 ] ( main:7::init_dist_screen:14 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 ] { } ) always clobbers reg byte y
|
|
Statement [75] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (word)$28*$c [ init_angle_screen::screen_bottomline#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_bottomline#0 ] { } ) always clobbers reg byte a
|
|
Statement [76] init_angle_screen::screen_topline#7 = init_angle_screen::screen_bottomline#0 [ init_angle_screen::screen_bottomline#0 init_angle_screen::screen_topline#7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_topline#7 ] { } ) always clobbers reg byte a
|
|
Statement [80] init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#6 - $28 [ init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_bottomline#6 init_angle_screen::screen_topline#1 ] { } ) always clobbers reg byte a
|
|
Statement [81] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 [ init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#1 init_angle_screen::screen_bottomline#1 ] { } ) always clobbers reg byte a
|
|
Statement [85] init_angle_screen::$3 = init_angle_screen::x#2 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [86] init_angle_screen::$4 = $27 - init_angle_screen::$3 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [87] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
|
Statement [88] init_angle_screen::$5 = init_angle_screen::y#5 << 1 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::$5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [89] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::xw#0 init_angle_screen::yw#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte y
|
|
Statement [90] atan2_16::x#0 = (signed word)init_angle_screen::xw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [91] atan2_16::y#0 = (signed word)init_angle_screen::yw#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [93] atan2_16::return#2 = atan2_16::return#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [94] init_angle_screen::angle_w#0 = atan2_16::return#2 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::angle_w#0 ] { } ) always clobbers reg byte a
|
|
Statement [95] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$7 ] { } ) always clobbers reg byte a
|
|
Statement [97] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [98] init_angle_screen::$9 = - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$9 ] { } ) always clobbers reg byte a
|
|
Statement [99] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
|
Statement [100] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 init_angle_screen::$10 ] { } ) always clobbers reg byte a
|
|
Statement [101] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::ang_w#0 ] { } ) always clobbers reg byte y
|
|
Statement [102] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 init_angle_screen::$11 ] { } ) always clobbers reg byte a
|
|
Statement [103] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 [ init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] ( main:7::init_angle_screen:16 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 ] { } ) always clobbers reg byte y
|
|
Statement [108] SQUARES#0 = (void*)malloc::mem#0 [ SQUARES#0 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 ] { } ) always clobbers reg byte a
|
|
Statement [109] init_squares::squares#0 = (word*)SQUARES#0 [ SQUARES#0 init_squares::squares#0 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::squares#0 ] { } ) always clobbers reg byte a
|
|
Statement [113] *init_squares::squares#2 = init_squares::sqr#2 [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#2 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [114] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_WORD [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 ] { } ) always clobbers reg byte a
|
|
Statement [115] init_squares::$3 = init_squares::i#2 << 1 [ SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#2 init_squares::squares#1 init_squares::$3 ] { } ) always clobbers reg byte a
|
|
Statement [117] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4 [ SQUARES#0 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] ( main:7::init_dist_screen:14::init_squares:36 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::screen#0 SQUARES#0 init_squares::i#2 init_squares::sqr#1 init_squares::squares#1 ] { } ) always clobbers reg byte a
|
|
Statement [120] sqr::$0 = sqr::val#2 << 1 [ SQUARES#0 sqr::$0 ] ( main:7::init_dist_screen:14::sqr:44 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 SQUARES#0 sqr::$0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:7::init_dist_screen:14::sqr:59 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqr::$0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a
|
|
Statement [121] sqr::return#0 = ((word*)SQUARES#0)[sqr::$0] [ sqr::return#0 SQUARES#0 ] ( main:7::init_dist_screen:14::sqr:44 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 sqr::return#0 SQUARES#0 ] { { sqr::val#0 = sqr::val#2 init_dist_screen::yd#0 } { sqr::return#0 = sqr::return#2 } } main:7::init_dist_screen:14::sqr:59 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqr::return#0 SQUARES#0 ] { { sqr::val#1 = sqr::val#2 init_dist_screen::xd#0 } { sqr::return#0 = sqr::return#3 } } ) always clobbers reg byte a reg byte y
|
|
Statement [123] bsearch16u::key#0 = sqrt::val#0 [ SQUARES#0 bsearch16u::key#0 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [124] bsearch16u::items#1 = (word*)SQUARES#0 [ SQUARES#0 bsearch16u::key#0 bsearch16u::items#1 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::items#1 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [126] bsearch16u::return#3 = bsearch16u::return#1 [ SQUARES#0 bsearch16u::return#3 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::return#3 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [127] sqrt::found#0 = bsearch16u::return#3 [ SQUARES#0 sqrt::found#0 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqrt::found#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [128] sqrt::$2 = sqrt::found#0 - (word*)SQUARES#0 [ SQUARES#0 sqrt::$2 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqrt::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [129] sqrt::$1 = sqrt::$2 >> 1 [ SQUARES#0 sqrt::$1 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 sqrt::$1 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [130] sqrt::return#0 = (byte)sqrt::$1 [ sqrt::return#0 SQUARES#0 ] ( main:7::init_dist_screen:14::sqrt:64 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 sqrt::return#0 SQUARES#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 } { sqrt::return#0 = sqrt::return#2 } } ) always clobbers reg byte a
|
|
Statement [132] if(atan2_16::y#0>=0) goto atan2_16::@1 [ atan2_16::x#0 atan2_16::y#0 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [133] atan2_16::$2 = - atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::$2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [135] if(atan2_16::x#0>=0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [136] atan2_16::$7 = - atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [139] if(atan2_16::yi#3!=0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [141] atan2_16::angle#1 = atan2_16::angle#6 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [142] if(atan2_16::x#0>=0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [143] atan2_16::angle#4 = $8000 - atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [145] if(atan2_16::y#0>=0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [146] atan2_16::angle#5 = - atan2_16::angle#11 [ atan2_16::angle#5 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [150] atan2_16::xd#10 = atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [151] atan2_16::yd#10 = atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [155] atan2_16::xd#2 = atan2_16::xd#3 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [156] atan2_16::yd#2 = atan2_16::yd#3 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [158] if(atan2_16::yi#3>=0) goto atan2_16::@18 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#5 atan2_16::xd#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [159] atan2_16::xi#2 = atan2_16::xi#3 - atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [160] atan2_16::yi#2 = atan2_16::yi#3 + atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [161] atan2_16::$23 = atan2_16::i#2 << 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::xi#2 atan2_16::yi#2 atan2_16::$23 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [162] atan2_16::angle#3 = atan2_16::angle#12 - CORDIC_ATAN2_ANGLES_16[atan2_16::$23] [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::xi#2 atan2_16::yi#2 atan2_16::angle#3 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [166] atan2_16::xi#1 = atan2_16::xi#3 + atan2_16::yd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#5 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [167] atan2_16::yi#1 = atan2_16::yi#3 - atan2_16::xd#5 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [168] atan2_16::$22 = atan2_16::i#2 << 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::angle#12 atan2_16::yi#1 atan2_16::xi#1 atan2_16::$22 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [169] atan2_16::angle#2 = atan2_16::angle#12 + CORDIC_ATAN2_ANGLES_16[atan2_16::$22] [ atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::i#2 atan2_16::yi#1 atan2_16::angle#2 atan2_16::xi#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [170] atan2_16::xd#1 = atan2_16::xd#3 >> 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::yd#3 atan2_16::xd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [171] atan2_16::yd#1 = atan2_16::yd#3 >> 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [173] atan2_16::xi#13 = atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [174] atan2_16::yi#16 = atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( main:7::init_angle_screen:16::atan2_16:92 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_angle_screen::y#5 init_angle_screen::screen_topline#6 init_angle_screen::screen_bottomline#6 init_angle_screen::x#2 init_angle_screen::xb#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
|
Statement [178] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2 [ bsearch16u::items#2 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::items#2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y
|
|
Statement [179] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_WORD [ bsearch16u::$2 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::$2 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [183] bsearch16u::$6 = bsearch16u::num#3 >> 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$6 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [184] bsearch16u::$14 = bsearch16u::$6 << 1 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::$14 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [185] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [186] bsearch16u::result#0 = (signed word)bsearch16u::key#0 - (signed word)*bsearch16u::pivot#0 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a reg byte y
|
|
Statement [187] if(bsearch16u::result#0!=0) goto bsearch16u::@6 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 bsearch16u::result#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [188] bsearch16u::return#7 = bsearch16u::pivot#0 [ bsearch16u::return#7 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::return#7 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [189] if(bsearch16u::result#0<=0) goto bsearch16u::@7 [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#2 bsearch16u::pivot#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [190] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_WORD [ bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] ( main:7::init_dist_screen:14::sqrt:64::bsearch16u:125 [ SCREEN_DIST#0 SCREEN_ANGLE#0 init_dist_screen::y#10 init_dist_screen::screen_topline#11 init_dist_screen::screen_bottomline#11 init_dist_screen::yds#0 init_dist_screen::x#2 init_dist_screen::xb#2 SQUARES#0 bsearch16u::key#0 bsearch16u::num#3 bsearch16u::items#0 ] { { sqrt::val#0 = init_dist_screen::ds#0 bsearch16u::key#0 } { sqrt::return#0 = sqrt::return#2 } { bsearch16u::return#1 = bsearch16u::return#3 } } ) always clobbers reg byte a
|
|
Potential registers zp[2]:2 [ heap_head#13 heap_head#0 ] : zp[2]:2 ,
|
|
Potential registers zp[2]:4 [ malloc::size#3 ] : zp[2]:4 ,
|
|
Potential registers zp[2]:6 [ main::fill#2 main::fill#1 ] : zp[2]:6 ,
|
|
Potential registers zp[2]:8 [ main::dist#2 main::dist#0 main::dist#1 ] : zp[2]:8 ,
|
|
Potential registers zp[2]:10 [ main::angle#2 main::angle#0 main::angle#1 ] : zp[2]:10 ,
|
|
Potential registers zp[2]:12 [ main::min_dist_angle#2 main::min_dist_angle#6 ] : zp[2]:12 ,
|
|
Potential registers zp[2]:14 [ main::min_fill#5 main::min_fill#2 main::min_fill#10 ] : zp[2]:14 ,
|
|
Potential registers zp[2]:16 [ main::min_dist_angle#3 main::min_dist_angle#7 main::min_dist_angle#8 main::dist_angle#0 ] : zp[2]:16 ,
|
|
Potential registers zp[1]:18 [ init_dist_screen::y#10 init_dist_screen::y#1 ] : zp[1]:18 , reg byte x ,
|
|
Potential registers zp[2]:19 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] : zp[2]:19 ,
|
|
Potential registers zp[2]:21 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] : zp[2]:21 ,
|
|
Potential registers zp[1]:23 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] : zp[1]:23 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:24 [ init_dist_screen::x#2 init_dist_screen::x#1 ] : zp[1]:24 , reg byte x ,
|
|
Potential registers zp[1]:25 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] : zp[1]:25 , reg byte x ,
|
|
Potential registers zp[1]:26 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] : zp[1]:26 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] : zp[1]:27 , reg byte x ,
|
|
Potential registers zp[2]:28 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] : zp[2]:28 ,
|
|
Potential registers zp[2]:30 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] : zp[2]:30 ,
|
|
Potential registers zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ] : zp[1]:32 , reg byte x ,
|
|
Potential registers zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] : zp[1]:33 , reg byte x ,
|
|
Potential registers zp[1]:34 [ init_squares::i#2 init_squares::i#1 ] : zp[1]:34 , reg byte x ,
|
|
Potential registers zp[2]:35 [ init_squares::sqr#2 init_squares::sqr#1 ] : zp[2]:35 ,
|
|
Potential registers zp[2]:37 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] : zp[2]:37 ,
|
|
Potential registers zp[1]:39 [ sqr::val#2 sqr::val#1 sqr::val#0 ] : zp[1]:39 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:40 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] : zp[2]:40 ,
|
|
Potential registers zp[2]:42 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] : zp[2]:42 ,
|
|
Potential registers zp[1]:44 [ atan2_16::i#2 atan2_16::i#1 ] : zp[1]:44 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:45 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] : zp[2]:45 ,
|
|
Potential registers zp[2]:47 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] : zp[2]:47 ,
|
|
Potential registers zp[1]:49 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] : zp[1]:49 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:50 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] : zp[2]:50 ,
|
|
Potential registers zp[2]:52 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] : zp[2]:52 ,
|
|
Potential registers zp[2]:54 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ] : zp[2]:54 ,
|
|
Potential registers zp[1]:56 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] : zp[1]:56 , reg byte x ,
|
|
Potential registers zp[2]:57 [ SCREEN_DIST#0 ] : zp[2]:57 ,
|
|
Potential registers zp[2]:59 [ SCREEN_ANGLE#0 ] : zp[2]:59 ,
|
|
Potential registers zp[2]:61 [ malloc::mem#0 ] : zp[2]:61 ,
|
|
Potential registers zp[2]:63 [ init_angle_screen::screen#0 ] : zp[2]:63 ,
|
|
Potential registers zp[1]:65 [ init_dist_screen::y2#0 ] : zp[1]:65 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:66 [ sqr::return#2 ] : zp[2]:66 ,
|
|
Potential registers zp[2]:68 [ init_dist_screen::yds#0 ] : zp[2]:68 ,
|
|
Potential registers zp[1]:70 [ init_dist_screen::x2#0 ] : zp[1]:70 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:71 [ sqr::return#3 ] : zp[2]:71 ,
|
|
Potential registers zp[2]:73 [ init_dist_screen::xds#0 ] : zp[2]:73 ,
|
|
Potential registers zp[2]:75 [ init_dist_screen::ds#0 ] : zp[2]:75 ,
|
|
Potential registers zp[2]:77 [ sqrt::val#0 ] : zp[2]:77 ,
|
|
Potential registers zp[1]:79 [ sqrt::return#2 ] : zp[1]:79 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:80 [ init_dist_screen::d#0 ] : zp[1]:80 , reg byte a , reg byte x ,
|
|
Potential registers zp[1]:81 [ init_angle_screen::$3 ] : zp[1]:81 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:82 [ init_angle_screen::$4 ] : zp[1]:82 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:83 [ init_angle_screen::xw#0 ] : zp[2]:83 ,
|
|
Potential registers zp[1]:85 [ init_angle_screen::$5 ] : zp[1]:85 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:86 [ init_angle_screen::yw#0 ] : zp[2]:86 ,
|
|
Potential registers zp[2]:88 [ atan2_16::x#0 ] : zp[2]:88 ,
|
|
Potential registers zp[2]:90 [ atan2_16::y#0 ] : zp[2]:90 ,
|
|
Potential registers zp[2]:92 [ atan2_16::return#2 ] : zp[2]:92 ,
|
|
Potential registers zp[2]:94 [ init_angle_screen::angle_w#0 ] : zp[2]:94 ,
|
|
Potential registers zp[2]:96 [ init_angle_screen::$7 ] : zp[2]:96 ,
|
|
Potential registers zp[1]:98 [ init_angle_screen::ang_w#0 ] : zp[1]:98 , reg byte x ,
|
|
Potential registers zp[1]:99 [ init_angle_screen::$9 ] : zp[1]:99 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:100 [ init_angle_screen::$10 ] : zp[1]:100 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:101 [ init_angle_screen::$11 ] : zp[1]:101 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:102 [ SQUARES#0 ] : zp[2]:102 ,
|
|
Potential registers zp[1]:104 [ init_squares::$3 ] : zp[1]:104 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:105 [ init_squares::$4 ] : zp[1]:105 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:106 [ sqr::$0 ] : zp[1]:106 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:107 [ sqr::return#0 ] : zp[2]:107 ,
|
|
Potential registers zp[2]:109 [ bsearch16u::key#0 ] : zp[2]:109 ,
|
|
Potential registers zp[2]:111 [ bsearch16u::return#3 ] : zp[2]:111 ,
|
|
Potential registers zp[2]:113 [ sqrt::found#0 ] : zp[2]:113 ,
|
|
Potential registers zp[2]:115 [ sqrt::$2 ] : zp[2]:115 ,
|
|
Potential registers zp[2]:117 [ sqrt::$1 ] : zp[2]:117 ,
|
|
Potential registers zp[1]:119 [ sqrt::return#0 ] : zp[1]:119 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:120 [ atan2_16::$23 ] : zp[1]:120 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:121 [ atan2_16::$22 ] : zp[1]:121 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:122 [ bsearch16u::$6 ] : zp[1]:122 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:123 [ bsearch16u::$14 ] : zp[1]:123 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:124 [ bsearch16u::pivot#0 ] : zp[2]:124 ,
|
|
Potential registers zp[2]:126 [ bsearch16u::result#0 ] : zp[2]:126 ,
|
|
|
|
REGISTER UPLIFT SCOPES
|
|
Uplift Scope [bsearch16u] 7,555,555,563.11: zp[1]:56 [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] 2,842,027,790.06: zp[2]:54 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ] 2,000,000,002: zp[1]:122 [ bsearch16u::$6 ] 2,000,000,002: zp[1]:123 [ bsearch16u::$14 ] 1,500,000,001.5: zp[2]:126 [ bsearch16u::result#0 ] 500,250,000.75: zp[2]:124 [ bsearch16u::pivot#0 ] 200,002: zp[2]:111 [ bsearch16u::return#3 ] 73,333.47: zp[2]:109 [ bsearch16u::key#0 ]
|
|
Uplift Scope [atan2_16] 2,866,666,670.58: zp[1]:49 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 2,060,000,008: zp[2]:50 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 1,733,333,338.67: zp[2]:52 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 752,480,960.9: zp[2]:45 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 269,093,340.68: zp[2]:40 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 227,373,342.67: zp[2]:42 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 200,000,002: zp[1]:120 [ atan2_16::$23 ] 200,000,002: zp[1]:121 [ atan2_16::$22 ] 170,833,335.04: zp[1]:44 [ atan2_16::i#2 atan2_16::i#1 ] 820,008.5: zp[2]:47 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] 20,002: zp[2]:92 [ atan2_16::return#2 ] 10,789.61: zp[2]:88 [ atan2_16::x#0 ] 10,250.12: zp[2]:90 [ atan2_16::y#0 ]
|
|
Uplift Scope [sqrt] 200,002: zp[2]:113 [ sqrt::found#0 ] 200,002: zp[2]:115 [ sqrt::$2 ] 110,002: zp[2]:77 [ sqrt::val#0 ] 100,001: zp[2]:117 [ sqrt::$1 ] 36,667.33: zp[1]:119 [ sqrt::return#0 ] 20,002: zp[1]:79 [ sqrt::return#2 ]
|
|
Uplift Scope [sqr] 200,002: zp[1]:106 [ sqr::$0 ] 133,007: zp[1]:39 [ sqr::val#2 sqr::val#1 sqr::val#0 ] 27,750.75: zp[2]:107 [ sqr::return#0 ] 20,002: zp[2]:71 [ sqr::return#3 ] 2,002: zp[2]:66 [ sqr::return#2 ]
|
|
Uplift Scope [init_angle_screen] 21,820.36: zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] 20,002: zp[1]:81 [ init_angle_screen::$3 ] 20,002: zp[1]:82 [ init_angle_screen::$4 ] 20,002: zp[1]:85 [ init_angle_screen::$5 ] 20,002: zp[2]:94 [ init_angle_screen::angle_w#0 ] 20,002: zp[2]:96 [ init_angle_screen::$7 ] 20,002: zp[1]:99 [ init_angle_screen::$9 ] 20,002: zp[1]:100 [ init_angle_screen::$10 ] 20,002: zp[1]:101 [ init_angle_screen::$11 ] 12,858.43: zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ] 8,334.17: zp[1]:98 [ init_angle_screen::ang_w#0 ] 5,000.5: zp[2]:86 [ init_angle_screen::yw#0 ] 3,333.67: zp[2]:83 [ init_angle_screen::xw#0 ] 1,963.15: zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] 1,703.03: zp[2]:30 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] 1,623.54: zp[2]:28 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] 112: zp[2]:63 [ init_angle_screen::screen#0 ]
|
|
Uplift Scope [init_dist_screen] 70,007: zp[1]:26 [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] 21,906.95: zp[1]:25 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] 20,002: zp[1]:70 [ init_dist_screen::x2#0 ] 20,002: zp[2]:73 [ init_dist_screen::xds#0 ] 20,002: zp[2]:75 [ init_dist_screen::ds#0 ] 13,001.3: zp[1]:24 [ init_dist_screen::x#2 init_dist_screen::x#1 ] 12,501.25: zp[1]:80 [ init_dist_screen::d#0 ] 7,007: zp[1]:23 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] 2,002: zp[1]:65 [ init_dist_screen::y2#0 ] 1,589.82: zp[1]:18 [ init_dist_screen::y#10 init_dist_screen::y#1 ] 1,539.18: zp[2]:21 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] 1,244.53: zp[2]:19 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] 478.35: zp[2]:68 [ init_dist_screen::yds#0 ]
|
|
Uplift Scope [init_squares] 25,716.86: zp[1]:34 [ init_squares::i#2 init_squares::i#1 ] 20,002: zp[1]:104 [ init_squares::$3 ] 20,002: zp[1]:105 [ init_squares::$4 ] 16,337.07: zp[2]:37 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] 15,001.5: zp[2]:35 [ init_squares::sqr#2 init_squares::sqr#1 ]
|
|
Uplift Scope [main] 5,826: zp[2]:16 [ main::min_dist_angle#3 main::min_dist_angle#7 main::min_dist_angle#8 main::dist_angle#0 ] 3,088.93: zp[2]:14 [ main::min_fill#5 main::min_fill#2 main::min_fill#10 ] 3,003: zp[2]:12 [ main::min_dist_angle#2 main::min_dist_angle#6 ] 1,401.4: zp[2]:6 [ main::fill#2 main::fill#1 ] 1,047.39: zp[2]:10 [ main::angle#2 main::angle#0 main::angle#1 ] 889.4: zp[2]:8 [ main::dist#2 main::dist#0 main::dist#1 ]
|
|
Uplift Scope [malloc] 10,001: zp[2]:4 [ malloc::size#3 ] 3,333.67: zp[2]:61 [ malloc::mem#0 ]
|
|
Uplift Scope [] 12,104.4: zp[2]:2 [ heap_head#13 heap_head#0 ] 16.15: zp[2]:102 [ SQUARES#0 ] 0.09: zp[2]:59 [ SCREEN_ANGLE#0 ] 0.08: zp[2]:57 [ SCREEN_DIST#0 ]
|
|
Uplift Scope [RADIX]
|
|
Uplift Scope [__start]
|
|
|
|
Uplifting [bsearch16u] best 1337286 combination reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ] zp[2]:54 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ] reg byte a [ bsearch16u::$6 ] reg byte a [ bsearch16u::$14 ] zp[2]:126 [ bsearch16u::result#0 ] zp[2]:124 [ bsearch16u::pivot#0 ] zp[2]:111 [ bsearch16u::return#3 ] zp[2]:109 [ bsearch16u::key#0 ]
|
|
Uplifting [atan2_16] best 1223286 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:50 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:52 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:45 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:40 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:42 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:47 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] zp[2]:92 [ atan2_16::return#2 ] zp[2]:88 [ atan2_16::x#0 ] zp[2]:90 [ atan2_16::y#0 ]
|
|
Limited combination testing to 100 combinations of 144 possible.
|
|
Uplifting [sqrt] best 1222383 combination zp[2]:113 [ sqrt::found#0 ] zp[2]:115 [ sqrt::$2 ] zp[2]:77 [ sqrt::val#0 ] zp[2]:117 [ sqrt::$1 ] reg byte a [ sqrt::return#0 ] reg byte a [ sqrt::return#2 ]
|
|
Uplifting [sqr] best 1222046 combination reg byte a [ sqr::$0 ] reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ] zp[2]:107 [ sqr::return#0 ] zp[2]:71 [ sqr::return#3 ] zp[2]:66 [ sqr::return#2 ]
|
|
Uplifting [init_angle_screen] best 1220446 combination zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] reg byte a [ init_angle_screen::$3 ] reg byte a [ init_angle_screen::$4 ] reg byte a [ init_angle_screen::$5 ] zp[2]:94 [ init_angle_screen::angle_w#0 ] zp[2]:96 [ init_angle_screen::$7 ] zp[1]:99 [ init_angle_screen::$9 ] zp[1]:100 [ init_angle_screen::$10 ] zp[1]:101 [ init_angle_screen::$11 ] zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ] zp[1]:98 [ init_angle_screen::ang_w#0 ] zp[2]:86 [ init_angle_screen::yw#0 ] zp[2]:83 [ init_angle_screen::xw#0 ] zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] zp[2]:30 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] zp[2]:28 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] zp[2]:63 [ init_angle_screen::screen#0 ]
|
|
Limited combination testing to 100 combinations of 65536 possible.
|
|
Uplifting [init_dist_screen] best 1217246 combination reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ] zp[1]:25 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] reg byte a [ init_dist_screen::x2#0 ] zp[2]:73 [ init_dist_screen::xds#0 ] zp[2]:75 [ init_dist_screen::ds#0 ] zp[1]:24 [ init_dist_screen::x#2 init_dist_screen::x#1 ] reg byte a [ init_dist_screen::d#0 ] zp[1]:23 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ] zp[1]:65 [ init_dist_screen::y2#0 ] zp[1]:18 [ init_dist_screen::y#10 init_dist_screen::y#1 ] zp[2]:21 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] zp[2]:19 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] zp[2]:68 [ init_dist_screen::yds#0 ]
|
|
Limited combination testing to 100 combinations of 6144 possible.
|
|
Uplifting [init_squares] best 1217046 combination reg byte x [ init_squares::i#2 init_squares::i#1 ] reg byte a [ init_squares::$3 ] reg byte a [ init_squares::$4 ] zp[2]:37 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] zp[2]:35 [ init_squares::sqr#2 init_squares::sqr#1 ]
|
|
Uplifting [main] best 1217046 combination zp[2]:16 [ main::min_dist_angle#3 main::min_dist_angle#7 main::min_dist_angle#8 main::dist_angle#0 ] zp[2]:14 [ main::min_fill#5 main::min_fill#2 main::min_fill#10 ] zp[2]:12 [ main::min_dist_angle#2 main::min_dist_angle#6 ] zp[2]:6 [ main::fill#2 main::fill#1 ] zp[2]:10 [ main::angle#2 main::angle#0 main::angle#1 ] zp[2]:8 [ main::dist#2 main::dist#0 main::dist#1 ]
|
|
Uplifting [malloc] best 1217046 combination zp[2]:4 [ malloc::size#3 ] zp[2]:61 [ malloc::mem#0 ]
|
|
Uplifting [] best 1217046 combination zp[2]:2 [ heap_head#13 heap_head#0 ] zp[2]:102 [ SQUARES#0 ] zp[2]:59 [ SCREEN_ANGLE#0 ] zp[2]:57 [ SCREEN_DIST#0 ]
|
|
Uplifting [RADIX] best 1217046 combination
|
|
Uplifting [__start] best 1217046 combination
|
|
Attempting to uplift remaining variables inzp[1]:25 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
|
|
Uplifting [init_dist_screen] best 1217046 combination zp[1]:25 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
|
|
Uplifting [init_angle_screen] best 1217046 combination zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:99 [ init_angle_screen::$9 ]
|
|
Uplifting [init_angle_screen] best 1216446 combination reg byte a [ init_angle_screen::$9 ]
|
|
Attempting to uplift remaining variables inzp[1]:100 [ init_angle_screen::$10 ]
|
|
Uplifting [init_angle_screen] best 1216046 combination reg byte a [ init_angle_screen::$10 ]
|
|
Attempting to uplift remaining variables inzp[1]:101 [ init_angle_screen::$11 ]
|
|
Uplifting [init_angle_screen] best 1215446 combination reg byte a [ init_angle_screen::$11 ]
|
|
Attempting to uplift remaining variables inzp[1]:24 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
|
|
Uplifting [init_dist_screen] best 1215446 combination zp[1]:24 [ init_dist_screen::x#2 init_dist_screen::x#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
|
|
Uplifting [init_angle_screen] best 1215446 combination zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:98 [ init_angle_screen::ang_w#0 ]
|
|
Uplifting [init_angle_screen] best 1215446 combination zp[1]:98 [ init_angle_screen::ang_w#0 ]
|
|
Attempting to uplift remaining variables inzp[1]:23 [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
|
|
Uplifting [init_dist_screen] best 1215376 combination reg byte a [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
|
|
Attempting to uplift remaining variables inzp[1]:65 [ init_dist_screen::y2#0 ]
|
|
Uplifting [init_dist_screen] best 1215276 combination reg byte a [ init_dist_screen::y2#0 ]
|
|
Attempting to uplift remaining variables inzp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ]
|
|
Uplifting [init_angle_screen] best 1215276 combination zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:18 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
|
|
Uplifting [init_dist_screen] best 1215276 combination zp[1]:18 [ init_dist_screen::y#10 init_dist_screen::y#1 ]
|
|
Coalescing zero page register [ zp[2]:4 [ malloc::size#3 ] ] with [ zp[2]:61 [ malloc::mem#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:30 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 ] ] with [ zp[2]:63 [ init_angle_screen::screen#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:45 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] ] with [ zp[2]:47 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:54 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 ] ] with [ zp[2]:111 [ bsearch16u::return#3 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:66 [ sqr::return#2 ] ] with [ zp[2]:68 [ init_dist_screen::yds#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:71 [ sqr::return#3 ] ] with [ zp[2]:73 [ init_dist_screen::xds#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:71 [ sqr::return#3 init_dist_screen::xds#0 ] ] with [ zp[2]:107 [ sqr::return#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:75 [ init_dist_screen::ds#0 ] ] with [ zp[2]:77 [ sqrt::val#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:83 [ init_angle_screen::xw#0 ] ] with [ zp[2]:88 [ atan2_16::x#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:86 [ init_angle_screen::yw#0 ] ] with [ zp[2]:90 [ atan2_16::y#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:92 [ atan2_16::return#2 ] ] with [ zp[2]:94 [ init_angle_screen::angle_w#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:113 [ sqrt::found#0 ] ] with [ zp[2]:115 [ sqrt::$2 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:4 [ malloc::size#3 malloc::mem#0 ] ] with [ zp[2]:102 [ SQUARES#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:45 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] ] with [ zp[2]:92 [ atan2_16::return#2 init_angle_screen::angle_w#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:54 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 ] ] with [ zp[2]:113 [ sqrt::found#0 sqrt::$2 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:71 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 ] ] with [ zp[2]:75 [ init_dist_screen::ds#0 sqrt::val#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:45 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 ] ] with [ zp[2]:96 [ init_angle_screen::$7 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:54 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 ] ] with [ zp[2]:117 [ sqrt::$1 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:71 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 ] ] with [ zp[2]:109 [ bsearch16u::key#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:6 [ main::fill#2 main::fill#1 ] ] with [ zp[2]:2 [ heap_head#13 heap_head#0 ] ]
|
|
Coalescing zero page register [ zp[2]:8 [ main::dist#2 main::dist#0 main::dist#1 ] ] with [ zp[2]:4 [ malloc::size#3 malloc::mem#0 SQUARES#0 ] ]
|
|
Coalescing zero page register [ zp[1]:27 [ init_angle_screen::y#5 init_angle_screen::y#1 ] ] with [ zp[1]:18 [ init_dist_screen::y#10 init_dist_screen::y#1 ] ]
|
|
Coalescing zero page register [ zp[2]:28 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 ] ] with [ zp[2]:19 [ init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ] ]
|
|
Coalescing zero page register [ zp[2]:30 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 init_angle_screen::screen#0 ] ] with [ zp[2]:21 [ init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ] ]
|
|
Coalescing zero page register [ zp[1]:32 [ init_angle_screen::x#2 init_angle_screen::x#1 ] ] with [ zp[1]:24 [ init_dist_screen::x#2 init_dist_screen::x#1 ] ]
|
|
Coalescing zero page register [ zp[1]:33 [ init_angle_screen::xb#2 init_angle_screen::xb#1 ] ] with [ zp[1]:25 [ init_dist_screen::xb#2 init_dist_screen::xb#1 ] ]
|
|
Coalescing zero page register [ zp[2]:40 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] ] with [ zp[2]:35 [ init_squares::sqr#2 init_squares::sqr#1 ] ]
|
|
Coalescing zero page register [ zp[2]:42 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] ] with [ zp[2]:37 [ init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ] ]
|
|
Coalescing zero page register [ zp[2]:54 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 ] ] with [ zp[2]:45 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ] ]
|
|
Coalescing zero page register [ zp[2]:66 [ sqr::return#2 init_dist_screen::yds#0 ] ] with [ zp[2]:50 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] ]
|
|
Coalescing zero page register [ zp[2]:71 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 ] ] with [ zp[2]:52 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] ]
|
|
Coalescing zero page register [ zp[2]:124 [ bsearch16u::pivot#0 ] ] with [ zp[2]:83 [ init_angle_screen::xw#0 atan2_16::x#0 ] ]
|
|
Coalescing zero page register [ zp[2]:126 [ bsearch16u::result#0 ] ] with [ zp[2]:86 [ init_angle_screen::yw#0 atan2_16::y#0 ] ]
|
|
Allocated (was zp[2]:6) zp[2]:2 [ main::fill#2 main::fill#1 heap_head#13 heap_head#0 ]
|
|
Allocated (was zp[2]:8) zp[2]:4 [ main::dist#2 main::dist#0 main::dist#1 malloc::size#3 malloc::mem#0 SQUARES#0 ]
|
|
Allocated (was zp[2]:10) zp[2]:6 [ main::angle#2 main::angle#0 main::angle#1 ]
|
|
Allocated (was zp[2]:12) zp[2]:8 [ main::min_dist_angle#2 main::min_dist_angle#6 ]
|
|
Allocated (was zp[2]:14) zp[2]:10 [ main::min_fill#5 main::min_fill#2 main::min_fill#10 ]
|
|
Allocated (was zp[2]:16) zp[2]:12 [ main::min_dist_angle#3 main::min_dist_angle#7 main::min_dist_angle#8 main::dist_angle#0 ]
|
|
Allocated (was zp[1]:27) zp[1]:14 [ init_angle_screen::y#5 init_angle_screen::y#1 init_dist_screen::y#10 init_dist_screen::y#1 ]
|
|
Allocated (was zp[2]:28) zp[2]:15 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ]
|
|
Allocated (was zp[2]:30) zp[2]:17 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 init_angle_screen::screen#0 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ]
|
|
Allocated (was zp[1]:32) zp[1]:19 [ init_angle_screen::x#2 init_angle_screen::x#1 init_dist_screen::x#2 init_dist_screen::x#1 ]
|
|
Allocated (was zp[1]:33) zp[1]:20 [ init_angle_screen::xb#2 init_angle_screen::xb#1 init_dist_screen::xb#2 init_dist_screen::xb#1 ]
|
|
Allocated (was zp[2]:40) zp[2]:21 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 init_squares::sqr#2 init_squares::sqr#1 ]
|
|
Allocated (was zp[2]:42) zp[2]:23 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ]
|
|
Allocated (was zp[2]:54) zp[2]:25 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ]
|
|
Allocated (was zp[2]:57) zp[2]:27 [ SCREEN_DIST#0 ]
|
|
Allocated (was zp[2]:59) zp[2]:29 [ SCREEN_ANGLE#0 ]
|
|
Allocated (was zp[2]:66) zp[2]:31 [ sqr::return#2 init_dist_screen::yds#0 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
|
|
Allocated (was zp[2]:71) zp[2]:33 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
|
|
Allocated (was zp[1]:98) zp[1]:35 [ init_angle_screen::ang_w#0 ]
|
|
Allocated (was zp[2]:124) zp[2]:36 [ bsearch16u::pivot#0 init_angle_screen::xw#0 atan2_16::x#0 ]
|
|
Allocated (was zp[2]:126) zp[2]:38 [ bsearch16u::result#0 init_angle_screen::yw#0 atan2_16::y#0 ]
|
|
|
|
ASSEMBLER BEFORE OPTIMIZATION
|
|
// File Comments
|
|
// Fill screen using a spiral based on distance-to-center / angle-to-center
|
|
// Upstart
|
|
// Commodore 64 PRG executable file
|
|
.file [name="screen-show-spiral.prg", type="prg", segments="Program"]
|
|
.segmentdef Program [segments="Basic, Code, Data"]
|
|
.segmentdef Basic [start=$0801]
|
|
.segmentdef Code [start=$80d]
|
|
.segmentdef Data [startAfter="Code"]
|
|
.segment Basic
|
|
:BasicUpstart(__start)
|
|
// Global Constants & labels
|
|
.const SIZEOF_WORD = 2
|
|
// The number of iterations performed during 16-bit CORDIC atan2 calculation
|
|
.const CORDIC_ITERATIONS_16 = $f
|
|
// Char to fill with
|
|
.const FILL_CHAR = '@'
|
|
// The number of squares to pre-calculate. Limits what values sqr() can calculate and the result of sqrt()
|
|
.const NUM_SQUARES = $30
|
|
// Screen containing angle to center
|
|
.label SCREEN_FILL = $400
|
|
// Top of the heap used by malloc()
|
|
.label HEAP_TOP = $a000
|
|
// Head of the heap. Moved backward each malloc()
|
|
.label heap_head = 2
|
|
// Squares for each char value SQUARES[i] = i*i
|
|
// Initialized by init_squares()
|
|
.label SQUARES = 4
|
|
// Screen containing distance to center
|
|
.label SCREEN_DIST = $1b
|
|
// Screen containing angle to center
|
|
.label SCREEN_ANGLE = $1d
|
|
.segment Code
|
|
// __start
|
|
__start: {
|
|
// [1] phi from __start to __start::__init1 [phi:__start->__start::__init1]
|
|
__init1_from___start:
|
|
jmp __init1
|
|
// __start::__init1
|
|
__init1:
|
|
// [2] call malloc
|
|
// [9] phi from __start::__init1 to malloc [phi:__start::__init1->malloc]
|
|
malloc_from___init1:
|
|
// [9] phi malloc::size#3 = $3e8 [phi:__start::__init1->malloc#0] -- vwuz1=vwuc1
|
|
lda #<$3e8
|
|
sta.z malloc.size
|
|
lda #>$3e8
|
|
sta.z malloc.size+1
|
|
// [9] phi heap_head#13 = HEAP_TOP [phi:__start::__init1->malloc#1] -- pbuz1=pbuc1
|
|
lda #<HEAP_TOP
|
|
sta.z heap_head
|
|
lda #>HEAP_TOP
|
|
sta.z heap_head+1
|
|
jsr malloc
|
|
jmp __b2
|
|
// __start::@2
|
|
__b2:
|
|
// [3] SCREEN_DIST#0 = (void*)malloc::mem#0 -- pvoz1=pvoz2
|
|
lda.z malloc.mem
|
|
sta.z SCREEN_DIST
|
|
lda.z malloc.mem+1
|
|
sta.z SCREEN_DIST+1
|
|
// [4] call malloc
|
|
// [9] phi from __start::@2 to malloc [phi:__start::@2->malloc]
|
|
malloc_from___b2:
|
|
// [9] phi malloc::size#3 = $3e8 [phi:__start::@2->malloc#0] -- vwuz1=vwuc1
|
|
lda #<$3e8
|
|
sta.z malloc.size
|
|
lda #>$3e8
|
|
sta.z malloc.size+1
|
|
// [9] phi heap_head#13 = heap_head#0 [phi:__start::@2->malloc#1] -- register_copy
|
|
jsr malloc
|
|
jmp __b3
|
|
// __start::@3
|
|
__b3:
|
|
// [5] SCREEN_ANGLE#0 = (void*)malloc::mem#0 -- pvoz1=pvoz2
|
|
lda.z malloc.mem
|
|
sta.z SCREEN_ANGLE
|
|
lda.z malloc.mem+1
|
|
sta.z SCREEN_ANGLE+1
|
|
// [6] phi from __start::@3 to __start::@1 [phi:__start::@3->__start::@1]
|
|
__b1_from___b3:
|
|
jmp __b1
|
|
// __start::@1
|
|
__b1:
|
|
// [7] call main
|
|
jsr main
|
|
jmp __breturn
|
|
// __start::@return
|
|
__breturn:
|
|
// [8] return
|
|
rts
|
|
}
|
|
// malloc
|
|
// Allocates a block of size chars of memory, returning a pointer to the beginning of the block.
|
|
// The content of the newly allocated block of memory is not initialized, remaining with indeterminate values.
|
|
// malloc(word zp(4) size)
|
|
malloc: {
|
|
.label mem = 4
|
|
.label size = 4
|
|
// [10] malloc::mem#0 = heap_head#13 - malloc::size#3 -- pbuz1=pbuz2_minus_vwuz1
|
|
lda.z heap_head
|
|
sec
|
|
sbc.z mem
|
|
sta.z mem
|
|
lda.z heap_head+1
|
|
sbc.z mem+1
|
|
sta.z mem+1
|
|
// [11] heap_head#0 = malloc::mem#0 -- pbuz1=pbuz2
|
|
lda.z mem
|
|
sta.z heap_head
|
|
lda.z mem+1
|
|
sta.z heap_head+1
|
|
jmp __breturn
|
|
// malloc::@return
|
|
__breturn:
|
|
// [12] return
|
|
rts
|
|
}
|
|
// main
|
|
main: {
|
|
.label dist = 4
|
|
.label angle = 6
|
|
.label fill = 2
|
|
.label dist_angle = $c
|
|
.label min_dist_angle = 8
|
|
.label min_dist_angle_1 = $c
|
|
.label min_fill = $a
|
|
// [13] init_dist_screen::screen#0 = (byte*)SCREEN_DIST#0 -- pbuz1=pbuz2
|
|
lda.z SCREEN_DIST
|
|
sta.z init_dist_screen.screen
|
|
lda.z SCREEN_DIST+1
|
|
sta.z init_dist_screen.screen+1
|
|
// [14] call init_dist_screen
|
|
// [35] phi from main to init_dist_screen [phi:main->init_dist_screen]
|
|
init_dist_screen_from_main:
|
|
jsr init_dist_screen
|
|
jmp __b8
|
|
// main::@8
|
|
__b8:
|
|
// [15] init_angle_screen::screen#0 = (byte*)SCREEN_ANGLE#0 -- pbuz1=pbuz2
|
|
lda.z SCREEN_ANGLE
|
|
sta.z init_angle_screen.screen
|
|
lda.z SCREEN_ANGLE+1
|
|
sta.z init_angle_screen.screen+1
|
|
// [16] call init_angle_screen
|
|
jsr init_angle_screen
|
|
jmp __b1
|
|
// main::@1
|
|
__b1:
|
|
// [17] main::dist#0 = (byte*)SCREEN_DIST#0 -- pbuz1=pbuz2
|
|
// Find the minimum dist/angle that is not already filled
|
|
lda.z SCREEN_DIST
|
|
sta.z dist
|
|
lda.z SCREEN_DIST+1
|
|
sta.z dist+1
|
|
// [18] main::angle#0 = (byte*)SCREEN_ANGLE#0 -- pbuz1=pbuz2
|
|
lda.z SCREEN_ANGLE
|
|
sta.z angle
|
|
lda.z SCREEN_ANGLE+1
|
|
sta.z angle+1
|
|
// [19] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
|
__b2_from___b1:
|
|
// [19] phi main::min_fill#5 = SCREEN_FILL [phi:main::@1->main::@2#0] -- pbuz1=pbuc1
|
|
lda #<SCREEN_FILL
|
|
sta.z min_fill
|
|
lda #>SCREEN_FILL
|
|
sta.z min_fill+1
|
|
// [19] phi main::min_dist_angle#2 = $ffff [phi:main::@1->main::@2#1] -- vwuz1=vwuc1
|
|
lda #<$ffff
|
|
sta.z min_dist_angle
|
|
lda #>$ffff
|
|
sta.z min_dist_angle+1
|
|
// [19] phi main::angle#2 = main::angle#0 [phi:main::@1->main::@2#2] -- register_copy
|
|
// [19] phi main::dist#2 = main::dist#0 [phi:main::@1->main::@2#3] -- register_copy
|
|
// [19] phi main::fill#2 = SCREEN_FILL [phi:main::@1->main::@2#4] -- pbuz1=pbuc1
|
|
lda #<SCREEN_FILL
|
|
sta.z fill
|
|
lda #>SCREEN_FILL
|
|
sta.z fill+1
|
|
jmp __b2
|
|
// main::@2
|
|
__b2:
|
|
// [20] if(*main::fill#2==FILL_CHAR) goto main::@10 -- _deref_pbuz1_eq_vbuc1_then_la1
|
|
lda #FILL_CHAR
|
|
ldy #0
|
|
cmp (fill),y
|
|
beq __b10
|
|
jmp __b4
|
|
// main::@4
|
|
__b4:
|
|
// [21] main::dist_angle#0 = *main::dist#2 w= *main::angle#2 -- vwuz1=_deref_pbuz2_word__deref_pbuz3
|
|
ldy #0
|
|
lda (angle),y
|
|
sta.z dist_angle
|
|
lda (dist),y
|
|
sta.z dist_angle+1
|
|
// [22] if(main::dist_angle#0>=main::min_dist_angle#2) goto main::@11 -- vwuz1_ge_vwuz2_then_la1
|
|
lda.z min_dist_angle+1
|
|
cmp.z dist_angle+1
|
|
bne !+
|
|
lda.z min_dist_angle
|
|
cmp.z dist_angle
|
|
beq __b11
|
|
!:
|
|
bcc __b11
|
|
jmp __b5
|
|
// main::@5
|
|
__b5:
|
|
// [23] main::min_fill#10 = main::fill#2 -- pbuz1=pbuz2
|
|
lda.z fill
|
|
sta.z min_fill
|
|
lda.z fill+1
|
|
sta.z min_fill+1
|
|
// [24] phi from main::@10 main::@11 main::@5 to main::@3 [phi:main::@10/main::@11/main::@5->main::@3]
|
|
__b3_from___b10:
|
|
__b3_from___b11:
|
|
__b3_from___b5:
|
|
// [24] phi main::min_fill#2 = main::min_fill#5 [phi:main::@10/main::@11/main::@5->main::@3#0] -- register_copy
|
|
// [24] phi main::min_dist_angle#3 = main::min_dist_angle#7 [phi:main::@10/main::@11/main::@5->main::@3#1] -- register_copy
|
|
jmp __b3
|
|
// main::@3
|
|
__b3:
|
|
// [25] main::dist#1 = ++ main::dist#2 -- pbuz1=_inc_pbuz1
|
|
inc.z dist
|
|
bne !+
|
|
inc.z dist+1
|
|
!:
|
|
// [26] main::angle#1 = ++ main::angle#2 -- pbuz1=_inc_pbuz1
|
|
inc.z angle
|
|
bne !+
|
|
inc.z angle+1
|
|
!:
|
|
// [27] main::fill#1 = ++ main::fill#2 -- pbuz1=_inc_pbuz1
|
|
inc.z fill
|
|
bne !+
|
|
inc.z fill+1
|
|
!:
|
|
// [28] if(main::fill#1<SCREEN_FILL+$3e8) goto main::@9 -- pbuz1_lt_pbuc1_then_la1
|
|
lda.z fill+1
|
|
cmp #>SCREEN_FILL+$3e8
|
|
bcc __b9
|
|
bne !+
|
|
lda.z fill
|
|
cmp #<SCREEN_FILL+$3e8
|
|
bcc __b9
|
|
!:
|
|
jmp __b6
|
|
// main::@6
|
|
__b6:
|
|
// [29] if(main::min_dist_angle#3!=$ffff) goto main::@7 -- vwuz1_neq_vwuc1_then_la1
|
|
lda.z min_dist_angle_1+1
|
|
cmp #>$ffff
|
|
bne __b7
|
|
lda.z min_dist_angle_1
|
|
cmp #<$ffff
|
|
bne __b7
|
|
jmp __breturn
|
|
// main::@return
|
|
__breturn:
|
|
// [30] return
|
|
rts
|
|
// main::@7
|
|
__b7:
|
|
// [31] *main::min_fill#2 = FILL_CHAR -- _deref_pbuz1=vbuc1
|
|
// Fill the found location
|
|
lda #FILL_CHAR
|
|
ldy #0
|
|
sta (min_fill),y
|
|
jmp __b1
|
|
// main::@9
|
|
__b9:
|
|
// [32] main::min_dist_angle#6 = main::min_dist_angle#3 -- vwuz1=vwuz2
|
|
lda.z min_dist_angle_1
|
|
sta.z min_dist_angle
|
|
lda.z min_dist_angle_1+1
|
|
sta.z min_dist_angle+1
|
|
// [19] phi from main::@9 to main::@2 [phi:main::@9->main::@2]
|
|
__b2_from___b9:
|
|
// [19] phi main::min_fill#5 = main::min_fill#2 [phi:main::@9->main::@2#0] -- register_copy
|
|
// [19] phi main::min_dist_angle#2 = main::min_dist_angle#6 [phi:main::@9->main::@2#1] -- register_copy
|
|
// [19] phi main::angle#2 = main::angle#1 [phi:main::@9->main::@2#2] -- register_copy
|
|
// [19] phi main::dist#2 = main::dist#1 [phi:main::@9->main::@2#3] -- register_copy
|
|
// [19] phi main::fill#2 = main::fill#1 [phi:main::@9->main::@2#4] -- register_copy
|
|
jmp __b2
|
|
// main::@11
|
|
__b11:
|
|
// [33] main::min_dist_angle#8 = main::min_dist_angle#2 -- vwuz1=vwuz2
|
|
lda.z min_dist_angle
|
|
sta.z min_dist_angle_1
|
|
lda.z min_dist_angle+1
|
|
sta.z min_dist_angle_1+1
|
|
jmp __b3_from___b11
|
|
// main::@10
|
|
__b10:
|
|
// [34] main::min_dist_angle#7 = main::min_dist_angle#2 -- vwuz1=vwuz2
|
|
lda.z min_dist_angle
|
|
sta.z min_dist_angle_1
|
|
lda.z min_dist_angle+1
|
|
sta.z min_dist_angle_1+1
|
|
jmp __b3_from___b10
|
|
}
|
|
// init_dist_screen
|
|
// Populates 1000 bytes (a screen) with values representing the distance to the center.
|
|
// The actual value stored is distance*2 to increase precision
|
|
// init_dist_screen(byte* zp($f) screen)
|
|
init_dist_screen: {
|
|
.label screen = $f
|
|
.label screen_bottomline = $11
|
|
.label yds = $1f
|
|
.label screen_topline = $f
|
|
.label y = $e
|
|
.label xds = $21
|
|
.label ds = $21
|
|
.label x = $13
|
|
.label xb = $14
|
|
// [36] call init_squares
|
|
// [106] phi from init_dist_screen to init_squares [phi:init_dist_screen->init_squares]
|
|
init_squares_from_init_dist_screen:
|
|
jsr init_squares
|
|
jmp __b11
|
|
// init_dist_screen::@11
|
|
__b11:
|
|
// [37] init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#0 + (word)$28*$18 -- pbuz1=pbuz2_plus_vwuc1
|
|
clc
|
|
lda.z screen
|
|
adc #<$28*$18
|
|
sta.z screen_bottomline
|
|
lda.z screen+1
|
|
adc #>$28*$18
|
|
sta.z screen_bottomline+1
|
|
// [38] phi from init_dist_screen::@11 to init_dist_screen::@1 [phi:init_dist_screen::@11->init_dist_screen::@1]
|
|
__b1_from___b11:
|
|
// [38] phi init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#0 [phi:init_dist_screen::@11->init_dist_screen::@1#0] -- register_copy
|
|
// [38] phi init_dist_screen::screen_topline#11 = init_dist_screen::screen#0 [phi:init_dist_screen::@11->init_dist_screen::@1#1] -- register_copy
|
|
// [38] phi init_dist_screen::y#10 = 0 [phi:init_dist_screen::@11->init_dist_screen::@1#2] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z y
|
|
jmp __b1
|
|
// [38] phi from init_dist_screen::@7 to init_dist_screen::@1 [phi:init_dist_screen::@7->init_dist_screen::@1]
|
|
__b1_from___b7:
|
|
// [38] phi init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#1 [phi:init_dist_screen::@7->init_dist_screen::@1#0] -- register_copy
|
|
// [38] phi init_dist_screen::screen_topline#11 = init_dist_screen::screen_topline#1 [phi:init_dist_screen::@7->init_dist_screen::@1#1] -- register_copy
|
|
// [38] phi init_dist_screen::y#10 = init_dist_screen::y#1 [phi:init_dist_screen::@7->init_dist_screen::@1#2] -- register_copy
|
|
jmp __b1
|
|
// init_dist_screen::@1
|
|
__b1:
|
|
// [39] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1 -- vbuaa=vbuz1_rol_1
|
|
lda.z y
|
|
asl
|
|
// [40] if(init_dist_screen::y2#0>=$18) goto init_dist_screen::@2 -- vbuaa_ge_vbuc1_then_la1
|
|
cmp #$18
|
|
bcs __b2
|
|
jmp __b3
|
|
// init_dist_screen::@3
|
|
__b3:
|
|
// [41] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 -- vbuaa=vbuc1_minus_vbuaa
|
|
eor #$ff
|
|
sec
|
|
adc #$18
|
|
// [42] phi from init_dist_screen::@2 init_dist_screen::@3 to init_dist_screen::@4 [phi:init_dist_screen::@2/init_dist_screen::@3->init_dist_screen::@4]
|
|
__b4_from___b2:
|
|
__b4_from___b3:
|
|
// [42] phi init_dist_screen::yd#0 = init_dist_screen::$7 [phi:init_dist_screen::@2/init_dist_screen::@3->init_dist_screen::@4#0] -- register_copy
|
|
jmp __b4
|
|
// init_dist_screen::@4
|
|
__b4:
|
|
// [43] sqr::val#0 = init_dist_screen::yd#0
|
|
// [44] call sqr
|
|
// [119] phi from init_dist_screen::@4 to sqr [phi:init_dist_screen::@4->sqr]
|
|
sqr_from___b4:
|
|
// [119] phi sqr::val#2 = sqr::val#0 [phi:init_dist_screen::@4->sqr#0] -- register_copy
|
|
jsr sqr
|
|
// [45] sqr::return#2 = sqr::return#0 -- vwuz1=vwuz2
|
|
lda.z sqr.return
|
|
sta.z sqr.return_1
|
|
lda.z sqr.return+1
|
|
sta.z sqr.return_1+1
|
|
jmp __b12
|
|
// init_dist_screen::@12
|
|
__b12:
|
|
// [46] init_dist_screen::yds#0 = sqr::return#2
|
|
// [47] phi from init_dist_screen::@12 to init_dist_screen::@5 [phi:init_dist_screen::@12->init_dist_screen::@5]
|
|
__b5_from___b12:
|
|
// [47] phi init_dist_screen::xb#2 = $27 [phi:init_dist_screen::@12->init_dist_screen::@5#0] -- vbuz1=vbuc1
|
|
lda #$27
|
|
sta.z xb
|
|
// [47] phi init_dist_screen::x#2 = 0 [phi:init_dist_screen::@12->init_dist_screen::@5#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z x
|
|
jmp __b5
|
|
// init_dist_screen::@5
|
|
__b5:
|
|
// [48] if(init_dist_screen::x#2<$13+1) goto init_dist_screen::@6 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z x
|
|
cmp #$13+1
|
|
bcc __b6
|
|
jmp __b7
|
|
// init_dist_screen::@7
|
|
__b7:
|
|
// [49] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z screen_topline
|
|
sta.z screen_topline
|
|
bcc !+
|
|
inc.z screen_topline+1
|
|
!:
|
|
// [50] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28 -- pbuz1=pbuz1_minus_vbuc1
|
|
sec
|
|
lda.z screen_bottomline
|
|
sbc #$28
|
|
sta.z screen_bottomline
|
|
lda.z screen_bottomline+1
|
|
sbc #0
|
|
sta.z screen_bottomline+1
|
|
// [51] init_dist_screen::y#1 = ++ init_dist_screen::y#10 -- vbuz1=_inc_vbuz1
|
|
inc.z y
|
|
// [52] if(init_dist_screen::y#1!=$d) goto init_dist_screen::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$d
|
|
cmp.z y
|
|
bne __b1_from___b7
|
|
jmp __breturn
|
|
// init_dist_screen::@return
|
|
__breturn:
|
|
// [53] return
|
|
rts
|
|
// init_dist_screen::@6
|
|
__b6:
|
|
// [54] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1 -- vbuaa=vbuz1_rol_1
|
|
lda.z x
|
|
asl
|
|
// [55] if(init_dist_screen::x2#0>=$27) goto init_dist_screen::@8 -- vbuaa_ge_vbuc1_then_la1
|
|
cmp #$27
|
|
bcs __b8
|
|
jmp __b9
|
|
// init_dist_screen::@9
|
|
__b9:
|
|
// [56] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 -- vbuaa=vbuc1_minus_vbuaa
|
|
eor #$ff
|
|
sec
|
|
adc #$27
|
|
// [57] phi from init_dist_screen::@8 init_dist_screen::@9 to init_dist_screen::@10 [phi:init_dist_screen::@8/init_dist_screen::@9->init_dist_screen::@10]
|
|
__b10_from___b8:
|
|
__b10_from___b9:
|
|
// [57] phi init_dist_screen::xd#0 = init_dist_screen::$16 [phi:init_dist_screen::@8/init_dist_screen::@9->init_dist_screen::@10#0] -- register_copy
|
|
jmp __b10
|
|
// init_dist_screen::@10
|
|
__b10:
|
|
// [58] sqr::val#1 = init_dist_screen::xd#0
|
|
// [59] call sqr
|
|
// [119] phi from init_dist_screen::@10 to sqr [phi:init_dist_screen::@10->sqr]
|
|
sqr_from___b10:
|
|
// [119] phi sqr::val#2 = sqr::val#1 [phi:init_dist_screen::@10->sqr#0] -- register_copy
|
|
jsr sqr
|
|
// [60] sqr::return#3 = sqr::return#0
|
|
jmp __b13
|
|
// init_dist_screen::@13
|
|
__b13:
|
|
// [61] init_dist_screen::xds#0 = sqr::return#3
|
|
// [62] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0 -- vwuz1=vwuz1_plus_vwuz2
|
|
lda.z ds
|
|
clc
|
|
adc.z yds
|
|
sta.z ds
|
|
lda.z ds+1
|
|
adc.z yds+1
|
|
sta.z ds+1
|
|
// [63] sqrt::val#0 = init_dist_screen::ds#0
|
|
// [64] call sqrt
|
|
jsr sqrt
|
|
// [65] sqrt::return#2 = sqrt::return#0
|
|
jmp __b14
|
|
// init_dist_screen::@14
|
|
__b14:
|
|
// [66] init_dist_screen::d#0 = sqrt::return#2
|
|
// [67] init_dist_screen::screen_topline#11[init_dist_screen::x#2] = init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
ldy.z x
|
|
sta (screen_topline),y
|
|
// [68] init_dist_screen::screen_bottomline#11[init_dist_screen::x#2] = init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
ldy.z x
|
|
sta (screen_bottomline),y
|
|
// [69] init_dist_screen::screen_topline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
ldy.z xb
|
|
sta (screen_topline),y
|
|
// [70] init_dist_screen::screen_bottomline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
ldy.z xb
|
|
sta (screen_bottomline),y
|
|
// [71] init_dist_screen::x#1 = ++ init_dist_screen::x#2 -- vbuz1=_inc_vbuz1
|
|
inc.z x
|
|
// [72] init_dist_screen::xb#1 = -- init_dist_screen::xb#2 -- vbuz1=_dec_vbuz1
|
|
dec.z xb
|
|
// [47] phi from init_dist_screen::@14 to init_dist_screen::@5 [phi:init_dist_screen::@14->init_dist_screen::@5]
|
|
__b5_from___b14:
|
|
// [47] phi init_dist_screen::xb#2 = init_dist_screen::xb#1 [phi:init_dist_screen::@14->init_dist_screen::@5#0] -- register_copy
|
|
// [47] phi init_dist_screen::x#2 = init_dist_screen::x#1 [phi:init_dist_screen::@14->init_dist_screen::@5#1] -- register_copy
|
|
jmp __b5
|
|
// init_dist_screen::@8
|
|
__b8:
|
|
// [73] init_dist_screen::$16 = init_dist_screen::x2#0 - $27 -- vbuaa=vbuaa_minus_vbuc1
|
|
sec
|
|
sbc #$27
|
|
jmp __b10_from___b8
|
|
// init_dist_screen::@2
|
|
__b2:
|
|
// [74] init_dist_screen::$7 = init_dist_screen::y2#0 - $18 -- vbuaa=vbuaa_minus_vbuc1
|
|
sec
|
|
sbc #$18
|
|
jmp __b4_from___b2
|
|
}
|
|
// init_angle_screen
|
|
// Populates 1000 bytes (a screen) with values representing the angle to the center.
|
|
// Utilizes symmetry around the center
|
|
// init_angle_screen(byte* zp($11) screen)
|
|
init_angle_screen: {
|
|
.label __7 = $19
|
|
.label screen = $11
|
|
.label screen_bottomline = $11
|
|
.label xw = $24
|
|
.label yw = $26
|
|
.label angle_w = $19
|
|
.label ang_w = $23
|
|
.label x = $13
|
|
.label xb = $14
|
|
.label screen_topline = $f
|
|
.label y = $e
|
|
// [75] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (word)$28*$c -- pbuz1=pbuz1_plus_vwuc1
|
|
clc
|
|
lda.z screen_bottomline
|
|
adc #<$28*$c
|
|
sta.z screen_bottomline
|
|
lda.z screen_bottomline+1
|
|
adc #>$28*$c
|
|
sta.z screen_bottomline+1
|
|
// [76] init_angle_screen::screen_topline#7 = init_angle_screen::screen_bottomline#0 -- pbuz1=pbuz2
|
|
lda.z screen_bottomline
|
|
sta.z screen_topline
|
|
lda.z screen_bottomline+1
|
|
sta.z screen_topline+1
|
|
// [77] phi from init_angle_screen to init_angle_screen::@1 [phi:init_angle_screen->init_angle_screen::@1]
|
|
__b1_from_init_angle_screen:
|
|
// [77] phi init_angle_screen::screen_bottomline#6 = init_angle_screen::screen_bottomline#0 [phi:init_angle_screen->init_angle_screen::@1#0] -- register_copy
|
|
// [77] phi init_angle_screen::screen_topline#6 = init_angle_screen::screen_topline#7 [phi:init_angle_screen->init_angle_screen::@1#1] -- register_copy
|
|
// [77] phi init_angle_screen::y#5 = 0 [phi:init_angle_screen->init_angle_screen::@1#2] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z y
|
|
jmp __b1
|
|
// [77] phi from init_angle_screen::@4 to init_angle_screen::@1 [phi:init_angle_screen::@4->init_angle_screen::@1]
|
|
__b1_from___b4:
|
|
// [77] phi init_angle_screen::screen_bottomline#6 = init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#0] -- register_copy
|
|
// [77] phi init_angle_screen::screen_topline#6 = init_angle_screen::screen_topline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#1] -- register_copy
|
|
// [77] phi init_angle_screen::y#5 = init_angle_screen::y#1 [phi:init_angle_screen::@4->init_angle_screen::@1#2] -- register_copy
|
|
jmp __b1
|
|
// init_angle_screen::@1
|
|
__b1:
|
|
// [78] phi from init_angle_screen::@1 to init_angle_screen::@2 [phi:init_angle_screen::@1->init_angle_screen::@2]
|
|
__b2_from___b1:
|
|
// [78] phi init_angle_screen::xb#2 = $27 [phi:init_angle_screen::@1->init_angle_screen::@2#0] -- vbuz1=vbuc1
|
|
lda #$27
|
|
sta.z xb
|
|
// [78] phi init_angle_screen::x#2 = 0 [phi:init_angle_screen::@1->init_angle_screen::@2#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z x
|
|
jmp __b2
|
|
// init_angle_screen::@2
|
|
__b2:
|
|
// [79] if(init_angle_screen::x#2<$13+1) goto init_angle_screen::@3 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z x
|
|
cmp #$13+1
|
|
bcc __b3
|
|
jmp __b4
|
|
// init_angle_screen::@4
|
|
__b4:
|
|
// [80] init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#6 - $28 -- pbuz1=pbuz1_minus_vbuc1
|
|
sec
|
|
lda.z screen_topline
|
|
sbc #$28
|
|
sta.z screen_topline
|
|
lda.z screen_topline+1
|
|
sbc #0
|
|
sta.z screen_topline+1
|
|
// [81] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z screen_bottomline
|
|
sta.z screen_bottomline
|
|
bcc !+
|
|
inc.z screen_bottomline+1
|
|
!:
|
|
// [82] init_angle_screen::y#1 = ++ init_angle_screen::y#5 -- vbuz1=_inc_vbuz1
|
|
inc.z y
|
|
// [83] if(init_angle_screen::y#1!=$d) goto init_angle_screen::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$d
|
|
cmp.z y
|
|
bne __b1_from___b4
|
|
jmp __breturn
|
|
// init_angle_screen::@return
|
|
__breturn:
|
|
// [84] return
|
|
rts
|
|
// init_angle_screen::@3
|
|
__b3:
|
|
// [85] init_angle_screen::$3 = init_angle_screen::x#2 << 1 -- vbuaa=vbuz1_rol_1
|
|
lda.z x
|
|
asl
|
|
// [86] init_angle_screen::$4 = $27 - init_angle_screen::$3 -- vbuaa=vbuc1_minus_vbuaa
|
|
eor #$ff
|
|
sec
|
|
adc #$27
|
|
// [87] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 -- vwuz1=vbuaa_word_vbuc1
|
|
ldy #0
|
|
sta.z xw+1
|
|
sty.z xw
|
|
// [88] init_angle_screen::$5 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1
|
|
lda.z y
|
|
asl
|
|
// [89] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 -- vwuz1=vbuaa_word_vbuc1
|
|
ldy #0
|
|
sta.z yw+1
|
|
sty.z yw
|
|
// [90] atan2_16::x#0 = (signed word)init_angle_screen::xw#0
|
|
// [91] atan2_16::y#0 = (signed word)init_angle_screen::yw#0
|
|
// [92] call atan2_16
|
|
jsr atan2_16
|
|
// [93] atan2_16::return#2 = atan2_16::return#0
|
|
jmp __b5
|
|
// init_angle_screen::@5
|
|
__b5:
|
|
// [94] init_angle_screen::angle_w#0 = atan2_16::return#2
|
|
// [95] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
|
|
lda #$80
|
|
clc
|
|
adc.z __7
|
|
sta.z __7
|
|
bcc !+
|
|
inc.z __7+1
|
|
!:
|
|
// [96] init_angle_screen::ang_w#0 = > init_angle_screen::$7 -- vbuz1=_hi_vwuz2
|
|
lda.z __7+1
|
|
sta.z ang_w
|
|
// [97] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3
|
|
lda.z ang_w
|
|
ldy.z xb
|
|
sta (screen_bottomline),y
|
|
// [98] init_angle_screen::$9 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
|
|
lda.z ang_w
|
|
eor #$ff
|
|
clc
|
|
adc #1
|
|
// [99] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
ldy.z xb
|
|
sta (screen_topline),y
|
|
// [100] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
|
|
lda #$80
|
|
clc
|
|
adc.z ang_w
|
|
// [101] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
ldy.z x
|
|
sta (screen_topline),y
|
|
// [102] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
|
|
lda #$80
|
|
sec
|
|
sbc.z ang_w
|
|
// [103] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
ldy.z x
|
|
sta (screen_bottomline),y
|
|
// [104] init_angle_screen::x#1 = ++ init_angle_screen::x#2 -- vbuz1=_inc_vbuz1
|
|
inc.z x
|
|
// [105] init_angle_screen::xb#1 = -- init_angle_screen::xb#2 -- vbuz1=_dec_vbuz1
|
|
dec.z xb
|
|
// [78] phi from init_angle_screen::@5 to init_angle_screen::@2 [phi:init_angle_screen::@5->init_angle_screen::@2]
|
|
__b2_from___b5:
|
|
// [78] phi init_angle_screen::xb#2 = init_angle_screen::xb#1 [phi:init_angle_screen::@5->init_angle_screen::@2#0] -- register_copy
|
|
// [78] phi init_angle_screen::x#2 = init_angle_screen::x#1 [phi:init_angle_screen::@5->init_angle_screen::@2#1] -- register_copy
|
|
jmp __b2
|
|
}
|
|
// init_squares
|
|
// Initialize squares table
|
|
// Uses iterative formula (x+1)^2 = x^2 + 2*x + 1
|
|
init_squares: {
|
|
.label squares = $17
|
|
.label sqr = $15
|
|
// [107] call malloc
|
|
// [9] phi from init_squares to malloc [phi:init_squares->malloc]
|
|
malloc_from_init_squares:
|
|
// [9] phi malloc::size#3 = NUM_SQUARES#2*SIZEOF_WORD [phi:init_squares->malloc#0] -- vwuz1=vbuc1
|
|
lda #<NUM_SQUARES*SIZEOF_WORD
|
|
sta.z malloc.size
|
|
lda #>NUM_SQUARES*SIZEOF_WORD
|
|
sta.z malloc.size+1
|
|
// [9] phi heap_head#13 = heap_head#0 [phi:init_squares->malloc#1] -- register_copy
|
|
jsr malloc
|
|
jmp __b3
|
|
// init_squares::@3
|
|
__b3:
|
|
// [108] SQUARES#0 = (void*)malloc::mem#0
|
|
// [109] init_squares::squares#0 = (word*)SQUARES#0 -- pwuz1=pwuz2
|
|
lda.z SQUARES
|
|
sta.z squares
|
|
lda.z SQUARES+1
|
|
sta.z squares+1
|
|
// [110] phi from init_squares::@3 to init_squares::@1 [phi:init_squares::@3->init_squares::@1]
|
|
__b1_from___b3:
|
|
// [110] phi init_squares::squares#2 = init_squares::squares#0 [phi:init_squares::@3->init_squares::@1#0] -- register_copy
|
|
// [110] phi init_squares::sqr#2 = 0 [phi:init_squares::@3->init_squares::@1#1] -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z sqr
|
|
lda #>0
|
|
sta.z sqr+1
|
|
// [110] phi init_squares::i#2 = 0 [phi:init_squares::@3->init_squares::@1#2] -- vbuxx=vbuc1
|
|
ldx #0
|
|
jmp __b1
|
|
// init_squares::@1
|
|
__b1:
|
|
// [111] if(init_squares::i#2<NUM_SQUARES#2) goto init_squares::@2 -- vbuxx_lt_vbuc1_then_la1
|
|
cpx #NUM_SQUARES
|
|
bcc __b2
|
|
jmp __breturn
|
|
// init_squares::@return
|
|
__breturn:
|
|
// [112] return
|
|
rts
|
|
// init_squares::@2
|
|
__b2:
|
|
// [113] *init_squares::squares#2 = init_squares::sqr#2 -- _deref_pwuz1=vwuz2
|
|
ldy #0
|
|
lda.z sqr
|
|
sta (squares),y
|
|
iny
|
|
lda.z sqr+1
|
|
sta (squares),y
|
|
// [114] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_WORD -- pwuz1=pwuz1_plus_vbuc1
|
|
lda #SIZEOF_WORD
|
|
clc
|
|
adc.z squares
|
|
sta.z squares
|
|
bcc !+
|
|
inc.z squares+1
|
|
!:
|
|
// [115] init_squares::$3 = init_squares::i#2 << 1 -- vbuaa=vbuxx_rol_1
|
|
txa
|
|
asl
|
|
// [116] init_squares::$4 = init_squares::$3 + 1 -- vbuaa=vbuaa_plus_1
|
|
clc
|
|
adc #1
|
|
// [117] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4 -- vwuz1=vwuz1_plus_vbuaa
|
|
clc
|
|
adc.z sqr
|
|
sta.z sqr
|
|
bcc !+
|
|
inc.z sqr+1
|
|
!:
|
|
// [118] init_squares::i#1 = ++ init_squares::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [110] phi from init_squares::@2 to init_squares::@1 [phi:init_squares::@2->init_squares::@1]
|
|
__b1_from___b2:
|
|
// [110] phi init_squares::squares#2 = init_squares::squares#1 [phi:init_squares::@2->init_squares::@1#0] -- register_copy
|
|
// [110] phi init_squares::sqr#2 = init_squares::sqr#1 [phi:init_squares::@2->init_squares::@1#1] -- register_copy
|
|
// [110] phi init_squares::i#2 = init_squares::i#1 [phi:init_squares::@2->init_squares::@1#2] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// sqr
|
|
// Find the square of a char value
|
|
// Uses a table of squares that must be initialized by calling init_squares()
|
|
// sqr(byte register(A) val)
|
|
sqr: {
|
|
.label return = $21
|
|
.label return_1 = $1f
|
|
// [120] sqr::$0 = sqr::val#2 << 1 -- vbuaa=vbuaa_rol_1
|
|
asl
|
|
// [121] sqr::return#0 = ((word*)SQUARES#0)[sqr::$0] -- vwuz1=pwuz2_derefidx_vbuaa
|
|
tay
|
|
lda (SQUARES),y
|
|
sta.z return
|
|
iny
|
|
lda (SQUARES),y
|
|
sta.z return+1
|
|
jmp __breturn
|
|
// sqr::@return
|
|
__breturn:
|
|
// [122] return
|
|
rts
|
|
}
|
|
// sqrt
|
|
// Find the (integer) square root of a unsigned int value
|
|
// If the square is not an integer then it returns the largest integer N where N*N <= val
|
|
// Uses a table of squares that must be initialized by calling init_squares()
|
|
// sqrt(word zp($21) val)
|
|
sqrt: {
|
|
.label __1 = $19
|
|
.label __2 = $19
|
|
.label found = $19
|
|
.label val = $21
|
|
// [123] bsearch16u::key#0 = sqrt::val#0
|
|
// [124] bsearch16u::items#1 = (word*)SQUARES#0 -- pwuz1=pwuz2
|
|
lda.z SQUARES
|
|
sta.z bsearch16u.items
|
|
lda.z SQUARES+1
|
|
sta.z bsearch16u.items+1
|
|
// [125] call bsearch16u
|
|
// [175] phi from sqrt to bsearch16u [phi:sqrt->bsearch16u]
|
|
bsearch16u_from_sqrt:
|
|
jsr bsearch16u
|
|
// [126] bsearch16u::return#3 = bsearch16u::return#1
|
|
jmp __b1
|
|
// sqrt::@1
|
|
__b1:
|
|
// [127] sqrt::found#0 = bsearch16u::return#3
|
|
// [128] sqrt::$2 = sqrt::found#0 - (word*)SQUARES#0 -- vwuz1=pwuz1_minus_pwuz2
|
|
lda.z __2
|
|
sec
|
|
sbc.z SQUARES
|
|
sta.z __2
|
|
lda.z __2+1
|
|
sbc.z SQUARES+1
|
|
sta.z __2+1
|
|
// [129] sqrt::$1 = sqrt::$2 >> 1 -- vwuz1=vwuz1_ror_1
|
|
lsr.z __1+1
|
|
ror.z __1
|
|
// [130] sqrt::return#0 = (byte)sqrt::$1 -- vbuaa=_byte_vwuz1
|
|
lda.z __1
|
|
jmp __breturn
|
|
// sqrt::@return
|
|
__breturn:
|
|
// [131] return
|
|
rts
|
|
}
|
|
// atan2_16
|
|
// Find the atan2(x, y) - which is the angle of the line from (0,0) to (x,y)
|
|
// Finding the angle requires a binary search using CORDIC_ITERATIONS_16
|
|
// Returns the angle in hex-degrees (0=0, 0x8000=PI, 0x10000=2*PI)
|
|
// atan2_16(signed word zp($24) x, signed word zp($26) y)
|
|
atan2_16: {
|
|
.label __2 = $15
|
|
.label __7 = $17
|
|
.label yi = $15
|
|
.label xi = $17
|
|
.label angle = $19
|
|
.label xd = $21
|
|
.label yd = $1f
|
|
.label return = $19
|
|
.label x = $24
|
|
.label y = $26
|
|
// [132] if(atan2_16::y#0>=0) goto atan2_16::@1 -- vwsz1_ge_0_then_la1
|
|
lda.z y+1
|
|
bpl __b1
|
|
jmp __b2
|
|
// atan2_16::@2
|
|
__b2:
|
|
// [133] atan2_16::$2 = - atan2_16::y#0 -- vwsz1=_neg_vwsz2
|
|
sec
|
|
lda #0
|
|
sbc.z y
|
|
sta.z __2
|
|
lda #0
|
|
sbc.z y+1
|
|
sta.z __2+1
|
|
// [134] phi from atan2_16::@1 atan2_16::@2 to atan2_16::@3 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3]
|
|
__b3_from___b1:
|
|
__b3_from___b2:
|
|
// [134] phi atan2_16::yi#0 = atan2_16::yi#16 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3#0] -- register_copy
|
|
jmp __b3
|
|
// atan2_16::@3
|
|
__b3:
|
|
// [135] if(atan2_16::x#0>=0) goto atan2_16::@4 -- vwsz1_ge_0_then_la1
|
|
lda.z x+1
|
|
bpl __b4
|
|
jmp __b5
|
|
// atan2_16::@5
|
|
__b5:
|
|
// [136] atan2_16::$7 = - atan2_16::x#0 -- vwsz1=_neg_vwsz2
|
|
sec
|
|
lda #0
|
|
sbc.z x
|
|
sta.z __7
|
|
lda #0
|
|
sbc.z x+1
|
|
sta.z __7+1
|
|
// [137] phi from atan2_16::@4 atan2_16::@5 to atan2_16::@6 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6]
|
|
__b6_from___b4:
|
|
__b6_from___b5:
|
|
// [137] phi atan2_16::xi#0 = atan2_16::xi#13 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6#0] -- register_copy
|
|
jmp __b6
|
|
// atan2_16::@6
|
|
__b6:
|
|
// [138] phi from atan2_16::@6 to atan2_16::@10 [phi:atan2_16::@6->atan2_16::@10]
|
|
__b10_from___b6:
|
|
// [138] phi atan2_16::angle#12 = 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z angle
|
|
lda #>0
|
|
sta.z angle+1
|
|
// [138] phi atan2_16::i#2 = 0 [phi:atan2_16::@6->atan2_16::@10#1] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [138] phi atan2_16::xi#3 = atan2_16::xi#0 [phi:atan2_16::@6->atan2_16::@10#2] -- register_copy
|
|
// [138] phi atan2_16::yi#3 = atan2_16::yi#0 [phi:atan2_16::@6->atan2_16::@10#3] -- register_copy
|
|
jmp __b10
|
|
// atan2_16::@10
|
|
__b10:
|
|
// [139] if(atan2_16::yi#3!=0) goto atan2_16::@11 -- vwsz1_neq_0_then_la1
|
|
lda.z yi+1
|
|
ora.z yi
|
|
bne __b11
|
|
// [140] phi from atan2_16::@10 atan2_16::@19 to atan2_16::@12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12]
|
|
__b12_from___b10:
|
|
__b12_from___b19:
|
|
// [140] phi atan2_16::angle#6 = atan2_16::angle#12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12#0] -- register_copy
|
|
jmp __b12
|
|
// atan2_16::@12
|
|
__b12:
|
|
// [141] atan2_16::angle#1 = atan2_16::angle#6 >> 1 -- vwuz1=vwuz1_ror_1
|
|
lsr.z angle+1
|
|
ror.z angle
|
|
// [142] if(atan2_16::x#0>=0) goto atan2_16::@7 -- vwsz1_ge_0_then_la1
|
|
lda.z x+1
|
|
bpl __b7_from___b12
|
|
jmp __b21
|
|
// atan2_16::@21
|
|
__b21:
|
|
// [143] atan2_16::angle#4 = $8000 - atan2_16::angle#1 -- vwuz1=vwuc1_minus_vwuz1
|
|
sec
|
|
lda #<$8000
|
|
sbc.z angle
|
|
sta.z angle
|
|
lda #>$8000
|
|
sbc.z angle+1
|
|
sta.z angle+1
|
|
// [144] phi from atan2_16::@12 atan2_16::@21 to atan2_16::@7 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7]
|
|
__b7_from___b12:
|
|
__b7_from___b21:
|
|
// [144] phi atan2_16::angle#11 = atan2_16::angle#1 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7#0] -- register_copy
|
|
jmp __b7
|
|
// atan2_16::@7
|
|
__b7:
|
|
// [145] if(atan2_16::y#0>=0) goto atan2_16::@8 -- vwsz1_ge_0_then_la1
|
|
lda.z y+1
|
|
bpl __b8_from___b7
|
|
jmp __b9
|
|
// atan2_16::@9
|
|
__b9:
|
|
// [146] atan2_16::angle#5 = - atan2_16::angle#11 -- vwuz1=_neg_vwuz1
|
|
sec
|
|
lda #0
|
|
sbc.z angle
|
|
sta.z angle
|
|
lda #0
|
|
sbc.z angle+1
|
|
sta.z angle+1
|
|
// [147] phi from atan2_16::@7 atan2_16::@9 to atan2_16::@8 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8]
|
|
__b8_from___b7:
|
|
__b8_from___b9:
|
|
// [147] phi atan2_16::return#0 = atan2_16::angle#11 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8#0] -- register_copy
|
|
jmp __b8
|
|
// atan2_16::@8
|
|
__b8:
|
|
jmp __breturn
|
|
// atan2_16::@return
|
|
__breturn:
|
|
// [148] return
|
|
rts
|
|
// atan2_16::@11
|
|
__b11:
|
|
// [149] atan2_16::shift#5 = atan2_16::i#2 -- vbuyy=vbuxx
|
|
txa
|
|
tay
|
|
// [150] atan2_16::xd#10 = atan2_16::xi#3 -- vwsz1=vwsz2
|
|
lda.z xi
|
|
sta.z xd
|
|
lda.z xi+1
|
|
sta.z xd+1
|
|
// [151] atan2_16::yd#10 = atan2_16::yi#3 -- vwsz1=vwsz2
|
|
lda.z yi
|
|
sta.z yd
|
|
lda.z yi+1
|
|
sta.z yd+1
|
|
// [152] phi from atan2_16::@11 atan2_16::@14 to atan2_16::@13 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13]
|
|
__b13_from___b11:
|
|
__b13_from___b14:
|
|
// [152] phi atan2_16::yd#3 = atan2_16::yd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#0] -- register_copy
|
|
// [152] phi atan2_16::xd#3 = atan2_16::xd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#1] -- register_copy
|
|
// [152] phi atan2_16::shift#2 = atan2_16::shift#5 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#2] -- register_copy
|
|
jmp __b13
|
|
// atan2_16::@13
|
|
__b13:
|
|
// [153] if(atan2_16::shift#2>=2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1
|
|
cpy #2
|
|
bcs __b14
|
|
jmp __b15
|
|
// atan2_16::@15
|
|
__b15:
|
|
// [154] if(0==atan2_16::shift#2) goto atan2_16::@17 -- 0_eq_vbuyy_then_la1
|
|
cpy #0
|
|
beq __b17_from___b15
|
|
jmp __b16
|
|
// atan2_16::@16
|
|
__b16:
|
|
// [155] atan2_16::xd#2 = atan2_16::xd#3 >> 1 -- vwsz1=vwsz1_ror_1
|
|
lda.z xd+1
|
|
cmp #$80
|
|
ror.z xd+1
|
|
ror.z xd
|
|
// [156] atan2_16::yd#2 = atan2_16::yd#3 >> 1 -- vwsz1=vwsz1_ror_1
|
|
lda.z yd+1
|
|
cmp #$80
|
|
ror.z yd+1
|
|
ror.z yd
|
|
// [157] phi from atan2_16::@15 atan2_16::@16 to atan2_16::@17 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17]
|
|
__b17_from___b15:
|
|
__b17_from___b16:
|
|
// [157] phi atan2_16::xd#5 = atan2_16::xd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#0] -- register_copy
|
|
// [157] phi atan2_16::yd#5 = atan2_16::yd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#1] -- register_copy
|
|
jmp __b17
|
|
// atan2_16::@17
|
|
__b17:
|
|
// [158] if(atan2_16::yi#3>=0) goto atan2_16::@18 -- vwsz1_ge_0_then_la1
|
|
lda.z yi+1
|
|
bpl __b18
|
|
jmp __b20
|
|
// atan2_16::@20
|
|
__b20:
|
|
// [159] atan2_16::xi#2 = atan2_16::xi#3 - atan2_16::yd#5 -- vwsz1=vwsz1_minus_vwsz2
|
|
lda.z xi
|
|
sec
|
|
sbc.z yd
|
|
sta.z xi
|
|
lda.z xi+1
|
|
sbc.z yd+1
|
|
sta.z xi+1
|
|
// [160] atan2_16::yi#2 = atan2_16::yi#3 + atan2_16::xd#5 -- vwsz1=vwsz1_plus_vwsz2
|
|
lda.z yi
|
|
clc
|
|
adc.z xd
|
|
sta.z yi
|
|
lda.z yi+1
|
|
adc.z xd+1
|
|
sta.z yi+1
|
|
// [161] atan2_16::$23 = atan2_16::i#2 << 1 -- vbuaa=vbuxx_rol_1
|
|
txa
|
|
asl
|
|
// [162] atan2_16::angle#3 = atan2_16::angle#12 - CORDIC_ATAN2_ANGLES_16[atan2_16::$23] -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuaa
|
|
tay
|
|
sec
|
|
lda.z angle
|
|
sbc CORDIC_ATAN2_ANGLES_16,y
|
|
sta.z angle
|
|
lda.z angle+1
|
|
sbc CORDIC_ATAN2_ANGLES_16+1,y
|
|
sta.z angle+1
|
|
// [163] phi from atan2_16::@18 atan2_16::@20 to atan2_16::@19 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19]
|
|
__b19_from___b18:
|
|
__b19_from___b20:
|
|
// [163] phi atan2_16::xi#8 = atan2_16::xi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#0] -- register_copy
|
|
// [163] phi atan2_16::angle#13 = atan2_16::angle#2 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#1] -- register_copy
|
|
// [163] phi atan2_16::yi#8 = atan2_16::yi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#2] -- register_copy
|
|
jmp __b19
|
|
// atan2_16::@19
|
|
__b19:
|
|
// [164] atan2_16::i#1 = ++ atan2_16::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [165] if(atan2_16::i#1==CORDIC_ITERATIONS_16-1+1) goto atan2_16::@12 -- vbuxx_eq_vbuc1_then_la1
|
|
cpx #CORDIC_ITERATIONS_16-1+1
|
|
beq __b12_from___b19
|
|
// [138] phi from atan2_16::@19 to atan2_16::@10 [phi:atan2_16::@19->atan2_16::@10]
|
|
__b10_from___b19:
|
|
// [138] phi atan2_16::angle#12 = atan2_16::angle#13 [phi:atan2_16::@19->atan2_16::@10#0] -- register_copy
|
|
// [138] phi atan2_16::i#2 = atan2_16::i#1 [phi:atan2_16::@19->atan2_16::@10#1] -- register_copy
|
|
// [138] phi atan2_16::xi#3 = atan2_16::xi#8 [phi:atan2_16::@19->atan2_16::@10#2] -- register_copy
|
|
// [138] phi atan2_16::yi#3 = atan2_16::yi#8 [phi:atan2_16::@19->atan2_16::@10#3] -- register_copy
|
|
jmp __b10
|
|
// atan2_16::@18
|
|
__b18:
|
|
// [166] atan2_16::xi#1 = atan2_16::xi#3 + atan2_16::yd#5 -- vwsz1=vwsz1_plus_vwsz2
|
|
lda.z xi
|
|
clc
|
|
adc.z yd
|
|
sta.z xi
|
|
lda.z xi+1
|
|
adc.z yd+1
|
|
sta.z xi+1
|
|
// [167] atan2_16::yi#1 = atan2_16::yi#3 - atan2_16::xd#5 -- vwsz1=vwsz1_minus_vwsz2
|
|
lda.z yi
|
|
sec
|
|
sbc.z xd
|
|
sta.z yi
|
|
lda.z yi+1
|
|
sbc.z xd+1
|
|
sta.z yi+1
|
|
// [168] atan2_16::$22 = atan2_16::i#2 << 1 -- vbuaa=vbuxx_rol_1
|
|
txa
|
|
asl
|
|
// [169] atan2_16::angle#2 = atan2_16::angle#12 + CORDIC_ATAN2_ANGLES_16[atan2_16::$22] -- vwuz1=vwuz1_plus_pwuc1_derefidx_vbuaa
|
|
tay
|
|
clc
|
|
lda.z angle
|
|
adc CORDIC_ATAN2_ANGLES_16,y
|
|
sta.z angle
|
|
lda.z angle+1
|
|
adc CORDIC_ATAN2_ANGLES_16+1,y
|
|
sta.z angle+1
|
|
jmp __b19_from___b18
|
|
// atan2_16::@14
|
|
__b14:
|
|
// [170] atan2_16::xd#1 = atan2_16::xd#3 >> 2 -- vwsz1=vwsz1_ror_2
|
|
lda.z xd+1
|
|
cmp #$80
|
|
ror.z xd+1
|
|
ror.z xd
|
|
lda.z xd+1
|
|
cmp #$80
|
|
ror.z xd+1
|
|
ror.z xd
|
|
// [171] atan2_16::yd#1 = atan2_16::yd#3 >> 2 -- vwsz1=vwsz1_ror_2
|
|
lda.z yd+1
|
|
cmp #$80
|
|
ror.z yd+1
|
|
ror.z yd
|
|
lda.z yd+1
|
|
cmp #$80
|
|
ror.z yd+1
|
|
ror.z yd
|
|
// [172] atan2_16::shift#1 = atan2_16::shift#2 - 2 -- vbuyy=vbuyy_minus_2
|
|
dey
|
|
dey
|
|
jmp __b13_from___b14
|
|
// atan2_16::@4
|
|
__b4:
|
|
// [173] atan2_16::xi#13 = atan2_16::x#0 -- vwsz1=vwsz2
|
|
lda.z x
|
|
sta.z xi
|
|
lda.z x+1
|
|
sta.z xi+1
|
|
jmp __b6_from___b4
|
|
// atan2_16::@1
|
|
__b1:
|
|
// [174] atan2_16::yi#16 = atan2_16::y#0 -- vwsz1=vwsz2
|
|
lda.z y
|
|
sta.z yi
|
|
lda.z y+1
|
|
sta.z yi+1
|
|
jmp __b3_from___b1
|
|
}
|
|
// bsearch16u
|
|
// Searches an array of nitems unsigned ints, the initial member of which is pointed to by base, for a member that matches the value key.
|
|
// - key - The value to look for
|
|
// - items - Pointer to the start of the array to search in
|
|
// - num - The number of items in the array
|
|
// Returns pointer to an entry in the array that matches the search key
|
|
// bsearch16u(word zp($21) key, word* zp($19) items, byte register(X) num)
|
|
bsearch16u: {
|
|
.label __2 = $19
|
|
.label pivot = $24
|
|
.label result = $26
|
|
.label return = $19
|
|
.label items = $19
|
|
.label key = $21
|
|
// [176] phi from bsearch16u to bsearch16u::@3 [phi:bsearch16u->bsearch16u::@3]
|
|
__b3_from_bsearch16u:
|
|
// [176] phi bsearch16u::items#2 = bsearch16u::items#1 [phi:bsearch16u->bsearch16u::@3#0] -- register_copy
|
|
// [176] phi bsearch16u::num#3 = NUM_SQUARES#2 [phi:bsearch16u->bsearch16u::@3#1] -- vbuxx=vbuc1
|
|
ldx #NUM_SQUARES
|
|
jmp __b3
|
|
// bsearch16u::@3
|
|
__b3:
|
|
// [177] if(bsearch16u::num#3>0) goto bsearch16u::@4 -- vbuxx_gt_0_then_la1
|
|
cpx #0
|
|
bne __b4
|
|
jmp __b5
|
|
// bsearch16u::@5
|
|
__b5:
|
|
// [178] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2 -- _deref_pwuz1_le_vwuz2_then_la1
|
|
ldy #1
|
|
lda (items),y
|
|
cmp.z key+1
|
|
bne !+
|
|
dey
|
|
lda (items),y
|
|
cmp.z key
|
|
beq __b2_from___b5
|
|
!:
|
|
bcc __b2_from___b5
|
|
jmp __b1
|
|
// bsearch16u::@1
|
|
__b1:
|
|
// [179] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_WORD -- pwuz1=pwuz1_minus_vbuc1
|
|
sec
|
|
lda.z __2
|
|
sbc #1*SIZEOF_WORD
|
|
sta.z __2
|
|
lda.z __2+1
|
|
sbc #0
|
|
sta.z __2+1
|
|
// [180] phi from bsearch16u::@1 bsearch16u::@5 to bsearch16u::@2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2]
|
|
__b2_from___b1:
|
|
__b2_from___b5:
|
|
// [180] phi bsearch16u::return#2 = bsearch16u::$2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2#0] -- register_copy
|
|
jmp __b2
|
|
// bsearch16u::@2
|
|
__b2:
|
|
// [181] phi from bsearch16u::@2 bsearch16u::@8 to bsearch16u::@return [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return]
|
|
__breturn_from___b2:
|
|
__breturn_from___b8:
|
|
// [181] phi bsearch16u::return#1 = bsearch16u::return#2 [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return#0] -- register_copy
|
|
jmp __breturn
|
|
// bsearch16u::@return
|
|
__breturn:
|
|
// [182] return
|
|
rts
|
|
// bsearch16u::@4
|
|
__b4:
|
|
// [183] bsearch16u::$6 = bsearch16u::num#3 >> 1 -- vbuaa=vbuxx_ror_1
|
|
txa
|
|
lsr
|
|
// [184] bsearch16u::$14 = bsearch16u::$6 << 1 -- vbuaa=vbuaa_rol_1
|
|
asl
|
|
// [185] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14 -- pwuz1=pwuz2_plus_vbuaa
|
|
clc
|
|
adc.z items
|
|
sta.z pivot
|
|
lda #0
|
|
adc.z items+1
|
|
sta.z pivot+1
|
|
// [186] bsearch16u::result#0 = (signed word)bsearch16u::key#0 - (signed word)*bsearch16u::pivot#0 -- vwsz1=vwsz2_minus__deref_pwsz3
|
|
sec
|
|
lda.z key
|
|
ldy #0
|
|
sbc (pivot),y
|
|
sta.z result
|
|
lda.z key+1
|
|
iny
|
|
sbc (pivot),y
|
|
sta.z result+1
|
|
// [187] if(bsearch16u::result#0!=0) goto bsearch16u::@6 -- vwsz1_neq_0_then_la1
|
|
lda.z result+1
|
|
ora.z result
|
|
bne __b6
|
|
jmp __b8
|
|
// bsearch16u::@8
|
|
__b8:
|
|
// [188] bsearch16u::return#7 = bsearch16u::pivot#0 -- pwuz1=pwuz2
|
|
lda.z pivot
|
|
sta.z return
|
|
lda.z pivot+1
|
|
sta.z return+1
|
|
jmp __breturn_from___b8
|
|
// bsearch16u::@6
|
|
__b6:
|
|
// [189] if(bsearch16u::result#0<=0) goto bsearch16u::@7 -- vwsz1_le_0_then_la1
|
|
lda.z result+1
|
|
bmi __b7_from___b6
|
|
bne !+
|
|
lda.z result
|
|
beq __b7_from___b6
|
|
!:
|
|
jmp __b9
|
|
// bsearch16u::@9
|
|
__b9:
|
|
// [190] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_WORD -- pwuz1=pwuz2_plus_vbuc1
|
|
lda #1*SIZEOF_WORD
|
|
clc
|
|
adc.z pivot
|
|
sta.z items
|
|
lda #0
|
|
adc.z pivot+1
|
|
sta.z items+1
|
|
// [191] bsearch16u::num#1 = -- bsearch16u::num#3 -- vbuxx=_dec_vbuxx
|
|
dex
|
|
// [192] phi from bsearch16u::@6 bsearch16u::@9 to bsearch16u::@7 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7]
|
|
__b7_from___b6:
|
|
__b7_from___b9:
|
|
// [192] phi bsearch16u::items#8 = bsearch16u::items#2 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#0] -- register_copy
|
|
// [192] phi bsearch16u::num#5 = bsearch16u::num#3 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#1] -- register_copy
|
|
jmp __b7
|
|
// bsearch16u::@7
|
|
__b7:
|
|
// [193] bsearch16u::num#0 = bsearch16u::num#5 >> 1 -- vbuxx=vbuxx_ror_1
|
|
txa
|
|
lsr
|
|
tax
|
|
// [176] phi from bsearch16u::@7 to bsearch16u::@3 [phi:bsearch16u::@7->bsearch16u::@3]
|
|
__b3_from___b7:
|
|
// [176] phi bsearch16u::items#2 = bsearch16u::items#8 [phi:bsearch16u::@7->bsearch16u::@3#0] -- register_copy
|
|
// [176] phi bsearch16u::num#3 = bsearch16u::num#0 [phi:bsearch16u::@7->bsearch16u::@3#1] -- register_copy
|
|
jmp __b3
|
|
}
|
|
// File Data
|
|
.segment Data
|
|
// Angles representing ATAN(0.5), ATAN(0.25), ATAN(0.125), ...
|
|
CORDIC_ATAN2_ANGLES_16:
|
|
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
|
|
.word 256*2*256*atan(1/pow(2,i))/PI/2
|
|
|
|
|
|
ASSEMBLER OPTIMIZATIONS
|
|
Removing instruction jmp __init1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b8
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b11
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b12
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b7
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b9
|
|
Removing instruction jmp __b10
|
|
Removing instruction jmp __b13
|
|
Removing instruction jmp __b14
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __b10
|
|
Removing instruction jmp __b12
|
|
Removing instruction jmp __b21
|
|
Removing instruction jmp __b7
|
|
Removing instruction jmp __b9
|
|
Removing instruction jmp __b8
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b13
|
|
Removing instruction jmp __b15
|
|
Removing instruction jmp __b16
|
|
Removing instruction jmp __b17
|
|
Removing instruction jmp __b20
|
|
Removing instruction jmp __b19
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b8
|
|
Removing instruction jmp __b9
|
|
Removing instruction jmp __b7
|
|
Succesful ASM optimization Pass5NextJumpElimination
|
|
Removing instruction ldy.z x
|
|
Removing instruction ldy.z xb
|
|
Removing instruction ldy #0
|
|
Removing instruction lda.z ang_w
|
|
Removing instruction lda.z ang_w
|
|
Removing instruction ldy.z xb
|
|
Removing instruction ldy.z x
|
|
Removing instruction lda #>0
|
|
Replacing instruction ldx #0 with TAX
|
|
Removing instruction lda #>0
|
|
Replacing instruction ldx #0 with TAX
|
|
Removing instruction lda.z result+1
|
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
Replacing label __b3_from___b11 with __b3
|
|
Replacing label __b3_from___b10 with __b3
|
|
Replacing label __b1_from___b7 with __b1
|
|
Replacing label __b10_from___b8 with __b10
|
|
Replacing label __b4_from___b2 with __b4
|
|
Replacing label __b1_from___b4 with __b1
|
|
Replacing label __b7_from___b12 with __b7
|
|
Replacing label __b8_from___b7 with __b8
|
|
Replacing label __b17_from___b15 with __b17
|
|
Replacing label __b12_from___b19 with __b12
|
|
Replacing label __b19_from___b18 with __b19
|
|
Replacing label __b13_from___b14 with __b13
|
|
Replacing label __b6_from___b4 with __b6
|
|
Replacing label __b3_from___b1 with __b3
|
|
Replacing label __b2_from___b5 with __b2
|
|
Replacing label __b2_from___b5 with __b2
|
|
Replacing label __breturn_from___b8 with __b2
|
|
Replacing label __b7_from___b6 with __b7
|
|
Replacing label __b7_from___b6 with __b7
|
|
Removing instruction __init1_from___start:
|
|
Removing instruction malloc_from___init1:
|
|
Removing instruction __b1_from___b3:
|
|
Removing instruction __b3_from___b10:
|
|
Removing instruction __b3_from___b11:
|
|
Removing instruction __b3_from___b5:
|
|
Removing instruction __b1_from___b7:
|
|
Removing instruction __b4_from___b2:
|
|
Removing instruction __b4_from___b3:
|
|
Removing instruction sqr_from___b4:
|
|
Removing instruction __b5_from___b12:
|
|
Removing instruction __b10_from___b8:
|
|
Removing instruction __b10_from___b9:
|
|
Removing instruction sqr_from___b10:
|
|
Removing instruction __b1_from___b4:
|
|
Removing instruction __b2_from___b1:
|
|
Removing instruction __b3_from___b1:
|
|
Removing instruction __b3_from___b2:
|
|
Removing instruction __b6_from___b4:
|
|
Removing instruction __b6_from___b5:
|
|
Removing instruction __b10_from___b6:
|
|
Removing instruction __b12_from___b10:
|
|
Removing instruction __b12_from___b19:
|
|
Removing instruction __b7_from___b12:
|
|
Removing instruction __b7_from___b21:
|
|
Removing instruction __b8_from___b7:
|
|
Removing instruction __b8_from___b9:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b13_from___b11:
|
|
Removing instruction __b13_from___b14:
|
|
Removing instruction __b17_from___b15:
|
|
Removing instruction __b17_from___b16:
|
|
Removing instruction __b19_from___b18:
|
|
Removing instruction __b19_from___b20:
|
|
Removing instruction __b2_from___b1:
|
|
Removing instruction __b2_from___b5:
|
|
Removing instruction __breturn_from___b2:
|
|
Removing instruction __breturn_from___b8:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b7_from___b6:
|
|
Removing instruction __b7_from___b9:
|
|
Succesful ASM optimization Pass5RedundantLabelElimination
|
|
Removing instruction __init1:
|
|
Removing instruction __b2:
|
|
Removing instruction malloc_from___b2:
|
|
Removing instruction __b3:
|
|
Removing instruction __b1:
|
|
Removing instruction __breturn:
|
|
Removing instruction __breturn:
|
|
Removing instruction init_dist_screen_from_main:
|
|
Removing instruction __b8:
|
|
Removing instruction __b2_from___b1:
|
|
Removing instruction __b4:
|
|
Removing instruction __b5:
|
|
Removing instruction __b6:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b2_from___b9:
|
|
Removing instruction init_squares_from_init_dist_screen:
|
|
Removing instruction __b11:
|
|
Removing instruction __b1_from___b11:
|
|
Removing instruction __b3:
|
|
Removing instruction __b12:
|
|
Removing instruction __b7:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b9:
|
|
Removing instruction __b13:
|
|
Removing instruction __b14:
|
|
Removing instruction __b5_from___b14:
|
|
Removing instruction __b1_from_init_angle_screen:
|
|
Removing instruction __b4:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b5:
|
|
Removing instruction __b2_from___b5:
|
|
Removing instruction malloc_from_init_squares:
|
|
Removing instruction __b3:
|
|
Removing instruction __b1_from___b3:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1_from___b2:
|
|
Removing instruction __breturn:
|
|
Removing instruction bsearch16u_from_sqrt:
|
|
Removing instruction __b1:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b2:
|
|
Removing instruction __b5:
|
|
Removing instruction __b21:
|
|
Removing instruction __b9:
|
|
Removing instruction __b15:
|
|
Removing instruction __b16:
|
|
Removing instruction __b20:
|
|
Removing instruction __b10_from___b19:
|
|
Removing instruction __b3_from_bsearch16u:
|
|
Removing instruction __b5:
|
|
Removing instruction __b1:
|
|
Removing instruction __b8:
|
|
Removing instruction __b9:
|
|
Removing instruction __b3_from___b7:
|
|
Succesful ASM optimization Pass5UnusedLabelElimination
|
|
Replacing jump to rts with rts in jmp __b2
|
|
Succesful ASM optimization Pass5DoubleJumpElimination
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b1
|
|
Succesful ASM optimization Pass5NextJumpElimination
|
|
Removing instruction ldy #0
|
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
Fixing long branch [598] beq __b12 to bne
|
|
Fixing long branch [493] bpl __b1 to bmi
|
|
Fixing long branch [505] bpl __b4 to bmi
|
|
|
|
FINAL SYMBOL TABLE
|
|
const word* CORDIC_ATAN2_ANGLES_16[CORDIC_ITERATIONS_16] = kickasm {{ .for (var i=0; i<CORDIC_ITERATIONS_16; i++)
|
|
.word 256*2*256*atan(1/pow(2,i))/PI/2
|
|
}}
|
|
const nomodify byte CORDIC_ITERATIONS_16 = $f
|
|
const nomodify byte FILL_CHAR = '@'
|
|
const byte* HEAP_TOP = (byte*) 40960
|
|
byte NUM_SQUARES
|
|
const byte NUM_SQUARES#2 NUM_SQUARES = $30
|
|
const byte RADIX::BINARY = 2
|
|
const byte RADIX::DECIMAL = $a
|
|
const byte RADIX::HEXADECIMAL = $10
|
|
const byte RADIX::OCTAL = 8
|
|
byte* SCREEN_ANGLE
|
|
void* SCREEN_ANGLE#0 SCREEN_ANGLE zp[2]:29 0.08695652173913043
|
|
byte* SCREEN_DIST
|
|
void* SCREEN_DIST#0 SCREEN_DIST zp[2]:27 0.08
|
|
const nomodify byte* SCREEN_FILL = (byte*) 1024
|
|
const byte SIZEOF_WORD = 2
|
|
word* SQUARES
|
|
void* SQUARES#0 SQUARES zp[2]:4 16.14516129032258
|
|
void __start()
|
|
word atan2_16(signed word atan2_16::x , signed word atan2_16::y)
|
|
signed word~ atan2_16::$2 zp[2]:21 200002.0
|
|
byte~ atan2_16::$22 reg byte a 2.00000002E8
|
|
byte~ atan2_16::$23 reg byte a 2.00000002E8
|
|
signed word~ atan2_16::$7 zp[2]:23 200002.0
|
|
word atan2_16::angle
|
|
word atan2_16::angle#1 angle zp[2]:25 150001.5
|
|
word atan2_16::angle#11 angle zp[2]:25 200002.0
|
|
word atan2_16::angle#12 angle zp[2]:25 1.904761923809524E7
|
|
word atan2_16::angle#13 angle zp[2]:25 1.3333333466666667E8
|
|
word atan2_16::angle#2 angle zp[2]:25 2.00000002E8
|
|
word atan2_16::angle#3 angle zp[2]:25 2.00000002E8
|
|
word atan2_16::angle#4 angle zp[2]:25 200002.0
|
|
word atan2_16::angle#5 angle zp[2]:25 200002.0
|
|
word atan2_16::angle#6 angle zp[2]:25 2.00100003E8
|
|
byte atan2_16::i
|
|
byte atan2_16::i#1 reg byte x 1.500000015E8
|
|
byte atan2_16::i#2 reg byte x 2.0833333541666668E7
|
|
word atan2_16::return
|
|
word atan2_16::return#0 return zp[2]:25 70001.0
|
|
word atan2_16::return#2 return zp[2]:25 20002.0
|
|
byte atan2_16::shift
|
|
byte atan2_16::shift#1 reg byte y 2.000000002E9
|
|
byte atan2_16::shift#2 reg byte y 8.0000000125E8
|
|
byte atan2_16::shift#5 reg byte y 6.6666667333333336E7
|
|
signed word atan2_16::x
|
|
signed word atan2_16::x#0 x zp[2]:36 10789.605263157895
|
|
signed word atan2_16::xd
|
|
signed word atan2_16::xd#1 xd zp[2]:33 6.666666673333334E8
|
|
signed word atan2_16::xd#10 xd zp[2]:33 1.00000001E8
|
|
signed word atan2_16::xd#2 xd zp[2]:33 1.00000001E8
|
|
signed word atan2_16::xd#3 xd zp[2]:33 7.666666683333335E8
|
|
signed word atan2_16::xd#5 xd zp[2]:33 1.00000001E8
|
|
signed word atan2_16::xi
|
|
signed word atan2_16::xi#0 xi zp[2]:23 300003.0
|
|
signed word atan2_16::xi#1 xi zp[2]:23 5.00000005E7
|
|
signed word atan2_16::xi#13 xi zp[2]:23 200002.0
|
|
signed word atan2_16::xi#2 xi zp[2]:23 5.00000005E7
|
|
signed word atan2_16::xi#3 xi zp[2]:23 2.6673333666666668E7
|
|
signed word atan2_16::xi#8 xi zp[2]:23 1.00000001E8
|
|
signed word atan2_16::y
|
|
signed word atan2_16::y#0 y zp[2]:38 10250.125
|
|
signed word atan2_16::yd
|
|
signed word atan2_16::yd#1 yd zp[2]:31 1.000000001E9
|
|
signed word atan2_16::yd#10 yd zp[2]:31 2.00000002E8
|
|
signed word atan2_16::yd#2 yd zp[2]:31 2.00000002E8
|
|
signed word atan2_16::yd#3 yd zp[2]:31 4.6000000099999994E8
|
|
signed word atan2_16::yd#5 yd zp[2]:31 2.00000002E8
|
|
signed word atan2_16::yi
|
|
signed word atan2_16::yi#0 yi zp[2]:21 60000.600000000006
|
|
signed word atan2_16::yi#1 yi zp[2]:21 6.6666667333333336E7
|
|
signed word atan2_16::yi#16 yi zp[2]:21 200002.0
|
|
signed word atan2_16::yi#2 yi zp[2]:21 6.6666667333333336E7
|
|
signed word atan2_16::yi#3 yi zp[2]:21 3.53000004117647E7
|
|
signed word atan2_16::yi#8 yi zp[2]:21 1.00000001E8
|
|
word* bsearch16u(word bsearch16u::key , word* bsearch16u::items , byte bsearch16u::num)
|
|
byte~ bsearch16u::$14 reg byte a 2.000000002E9
|
|
word*~ bsearch16u::$2 zp[2]:25 2000002.0
|
|
byte~ bsearch16u::$6 reg byte a 2.000000002E9
|
|
word* bsearch16u::items
|
|
word* bsearch16u::items#0 items zp[2]:25 1.000000001E9
|
|
word* bsearch16u::items#1 items zp[2]:25 550001.0
|
|
word* bsearch16u::items#2 items zp[2]:25 3.337777785555556E8
|
|
word* bsearch16u::items#8 items zp[2]:25 1.5000000015E9
|
|
word bsearch16u::key
|
|
word bsearch16u::key#0 key zp[2]:33 73333.46666666667
|
|
byte bsearch16u::num
|
|
byte bsearch16u::num#0 reg byte x 2.000000002E9
|
|
byte bsearch16u::num#1 reg byte x 2.000000002E9
|
|
byte bsearch16u::num#3 reg byte x 5.555555561111112E8
|
|
byte bsearch16u::num#5 reg byte x 3.000000003E9
|
|
word* bsearch16u::pivot
|
|
word* bsearch16u::pivot#0 pivot zp[2]:36 5.0025000075E8
|
|
signed word bsearch16u::result
|
|
signed word bsearch16u::result#0 result zp[2]:38 1.5000000015E9
|
|
word* bsearch16u::return
|
|
word* bsearch16u::return#1 return zp[2]:25 700001.0
|
|
word* bsearch16u::return#2 return zp[2]:25 3000003.0
|
|
word* bsearch16u::return#3 return zp[2]:25 200002.0
|
|
word* bsearch16u::return#7 return zp[2]:25 2000002.0
|
|
byte* heap_head
|
|
byte* heap_head#0 heap_head zp[2]:2 1100.4
|
|
byte* heap_head#13 heap_head zp[2]:2 11004.0
|
|
void init_angle_screen(byte* init_angle_screen::screen)
|
|
byte~ init_angle_screen::$10 reg byte a 20002.0
|
|
byte~ init_angle_screen::$11 reg byte a 20002.0
|
|
byte~ init_angle_screen::$3 reg byte a 20002.0
|
|
byte~ init_angle_screen::$4 reg byte a 20002.0
|
|
byte~ init_angle_screen::$5 reg byte a 20002.0
|
|
word~ init_angle_screen::$7 zp[2]:25 20002.0
|
|
byte~ init_angle_screen::$9 reg byte a 20002.0
|
|
byte init_angle_screen::ang_w
|
|
byte init_angle_screen::ang_w#0 ang_w zp[1]:35 8334.166666666666
|
|
word init_angle_screen::angle_w
|
|
word init_angle_screen::angle_w#0 angle_w zp[2]:25 20002.0
|
|
byte* init_angle_screen::screen
|
|
byte* init_angle_screen::screen#0 screen zp[2]:17 112.0
|
|
byte* init_angle_screen::screen_bottomline
|
|
byte* init_angle_screen::screen_bottomline#0 screen_bottomline zp[2]:17 151.5
|
|
byte* init_angle_screen::screen_bottomline#1 screen_bottomline zp[2]:17 667.3333333333334
|
|
byte* init_angle_screen::screen_bottomline#6 screen_bottomline zp[2]:17 884.2
|
|
byte* init_angle_screen::screen_topline
|
|
byte* init_angle_screen::screen_topline#1 screen_topline zp[2]:15 500.5
|
|
byte* init_angle_screen::screen_topline#6 screen_topline zp[2]:15 921.0416666666666
|
|
byte* init_angle_screen::screen_topline#7 screen_topline zp[2]:15 202.0
|
|
byte init_angle_screen::x
|
|
byte init_angle_screen::x#1 x zp[1]:19 10001.0
|
|
byte init_angle_screen::x#2 x zp[1]:19 2857.4285714285716
|
|
byte init_angle_screen::xb
|
|
byte init_angle_screen::xb#1 xb zp[1]:20 20002.0
|
|
byte init_angle_screen::xb#2 xb zp[1]:20 1818.3636363636363
|
|
signed word init_angle_screen::xw
|
|
word init_angle_screen::xw#0 xw zp[2]:36 3333.6666666666665
|
|
byte init_angle_screen::y
|
|
byte init_angle_screen::y#1 y zp[1]:14 1501.5
|
|
byte init_angle_screen::y#5 y zp[1]:14 461.65384615384613
|
|
signed word init_angle_screen::yw
|
|
word init_angle_screen::yw#0 yw zp[2]:38 5000.5
|
|
void init_dist_screen(byte* init_dist_screen::screen)
|
|
byte~ init_dist_screen::$14 reg byte a 20002.0
|
|
byte~ init_dist_screen::$16 reg byte a 20002.0
|
|
byte~ init_dist_screen::$5 reg byte a 2002.0
|
|
byte~ init_dist_screen::$7 reg byte a 2002.0
|
|
byte init_dist_screen::d
|
|
byte init_dist_screen::d#0 reg byte a 12501.25
|
|
word init_dist_screen::ds
|
|
word init_dist_screen::ds#0 ds zp[2]:33 20002.0
|
|
byte* init_dist_screen::screen
|
|
byte* init_dist_screen::screen#0 screen zp[2]:15 53.25
|
|
byte* init_dist_screen::screen_bottomline
|
|
byte* init_dist_screen::screen_bottomline#0 screen_bottomline zp[2]:17 202.0
|
|
byte* init_dist_screen::screen_bottomline#1 screen_bottomline zp[2]:17 667.3333333333334
|
|
byte* init_dist_screen::screen_bottomline#11 screen_bottomline zp[2]:17 669.8484848484848
|
|
byte* init_dist_screen::screen_topline
|
|
byte* init_dist_screen::screen_topline#1 screen_topline zp[2]:15 500.5
|
|
byte* init_dist_screen::screen_topline#11 screen_topline zp[2]:15 690.78125
|
|
byte init_dist_screen::x
|
|
byte init_dist_screen::x#1 x zp[1]:19 10001.0
|
|
byte init_dist_screen::x#2 x zp[1]:19 3000.3
|
|
byte init_dist_screen::x2
|
|
byte init_dist_screen::x2#0 reg byte a 20002.0
|
|
byte init_dist_screen::xb
|
|
byte init_dist_screen::xb#1 xb zp[1]:20 20002.0
|
|
byte init_dist_screen::xb#2 xb zp[1]:20 1904.952380952381
|
|
byte init_dist_screen::xd
|
|
byte init_dist_screen::xd#0 reg byte a 30003.0
|
|
word init_dist_screen::xds
|
|
word init_dist_screen::xds#0 xds zp[2]:33 20002.0
|
|
byte init_dist_screen::y
|
|
byte init_dist_screen::y#1 y zp[1]:14 1501.5
|
|
byte init_dist_screen::y#10 y zp[1]:14 88.32352941176471
|
|
byte init_dist_screen::y2
|
|
byte init_dist_screen::y2#0 reg byte a 2002.0
|
|
byte init_dist_screen::yd
|
|
byte init_dist_screen::yd#0 reg byte a 3003.0
|
|
word init_dist_screen::yds
|
|
word init_dist_screen::yds#0 yds zp[2]:31 478.3478260869565
|
|
void init_squares()
|
|
byte~ init_squares::$3 reg byte a 20002.0
|
|
byte~ init_squares::$4 reg byte a 20002.0
|
|
byte init_squares::i
|
|
byte init_squares::i#1 reg byte x 20002.0
|
|
byte init_squares::i#2 reg byte x 5714.857142857143
|
|
word init_squares::sqr
|
|
word init_squares::sqr#1 sqr zp[2]:21 10001.0
|
|
word init_squares::sqr#2 sqr zp[2]:21 5000.5
|
|
word* init_squares::squares
|
|
word* init_squares::squares#0 squares zp[2]:23 2002.0
|
|
word* init_squares::squares#1 squares zp[2]:23 4000.4
|
|
word* init_squares::squares#2 squares zp[2]:23 10334.666666666666
|
|
void main()
|
|
byte* main::angle
|
|
byte* main::angle#0 angle zp[2]:6 202.0
|
|
byte* main::angle#1 angle zp[2]:6 500.5
|
|
byte* main::angle#2 angle zp[2]:6 344.8888888888889
|
|
byte* main::dist
|
|
byte* main::dist#0 dist zp[2]:4 101.0
|
|
byte* main::dist#1 dist zp[2]:4 400.4
|
|
byte* main::dist#2 dist zp[2]:4 388.0
|
|
word main::dist_angle
|
|
word main::dist_angle#0 dist_angle zp[2]:12 1001.0
|
|
byte* main::fill
|
|
byte* main::fill#1 fill zp[2]:2 1001.0
|
|
byte* main::fill#2 fill zp[2]:2 400.4
|
|
word main::min_dist_angle
|
|
word main::min_dist_angle#2 min_dist_angle zp[2]:8 1001.0
|
|
word main::min_dist_angle#3 min_dist_angle_1 zp[2]:12 821.0
|
|
word main::min_dist_angle#6 min_dist_angle zp[2]:8 2002.0
|
|
word main::min_dist_angle#7 min_dist_angle_1 zp[2]:12 2002.0
|
|
word main::min_dist_angle#8 min_dist_angle_1 zp[2]:12 2002.0
|
|
byte* main::min_fill
|
|
byte* main::min_fill#10 min_fill zp[2]:10 2002.0
|
|
byte* main::min_fill#2 min_fill zp[2]:10 586.4285714285714
|
|
byte* main::min_fill#5 min_fill zp[2]:10 500.5
|
|
void* malloc(word malloc::size)
|
|
byte* malloc::mem
|
|
byte* malloc::mem#0 mem zp[2]:4 3333.6666666666665
|
|
void* malloc::return
|
|
word malloc::size
|
|
word malloc::size#3 size zp[2]:4 10001.0
|
|
word sqr(byte sqr::val)
|
|
byte~ sqr::$0 reg byte a 200002.0
|
|
word sqr::return
|
|
word sqr::return#0 return zp[2]:33 27750.75
|
|
word sqr::return#2 return_1 zp[2]:31 2002.0
|
|
word sqr::return#3 return zp[2]:33 20002.0
|
|
byte sqr::val
|
|
byte sqr::val#0 reg byte a 2002.0
|
|
byte sqr::val#1 reg byte a 20002.0
|
|
byte sqr::val#2 reg byte a 111003.0
|
|
byte sqrt(word sqrt::val)
|
|
word~ sqrt::$1 zp[2]:25 100001.0
|
|
word~ sqrt::$2 zp[2]:25 200002.0
|
|
word* sqrt::found
|
|
word* sqrt::found#0 found zp[2]:25 200002.0
|
|
byte sqrt::return
|
|
byte sqrt::return#0 reg byte a 36667.33333333333
|
|
byte sqrt::return#2 reg byte a 20002.0
|
|
byte sqrt::sq
|
|
word sqrt::val
|
|
word sqrt::val#0 val zp[2]:33 110002.0
|
|
|
|
zp[2]:2 [ main::fill#2 main::fill#1 heap_head#13 heap_head#0 ]
|
|
zp[2]:4 [ main::dist#2 main::dist#0 main::dist#1 malloc::size#3 malloc::mem#0 SQUARES#0 ]
|
|
zp[2]:6 [ main::angle#2 main::angle#0 main::angle#1 ]
|
|
zp[2]:8 [ main::min_dist_angle#2 main::min_dist_angle#6 ]
|
|
zp[2]:10 [ main::min_fill#5 main::min_fill#2 main::min_fill#10 ]
|
|
zp[2]:12 [ main::min_dist_angle#3 main::min_dist_angle#7 main::min_dist_angle#8 main::dist_angle#0 ]
|
|
reg byte a [ init_dist_screen::yd#0 init_dist_screen::$7 init_dist_screen::$5 ]
|
|
reg byte a [ init_dist_screen::xd#0 init_dist_screen::$16 init_dist_screen::$14 ]
|
|
zp[1]:14 [ init_angle_screen::y#5 init_angle_screen::y#1 init_dist_screen::y#10 init_dist_screen::y#1 ]
|
|
zp[2]:15 [ init_angle_screen::screen_topline#6 init_angle_screen::screen_topline#7 init_angle_screen::screen_topline#1 init_dist_screen::screen_topline#11 init_dist_screen::screen#0 init_dist_screen::screen_topline#1 ]
|
|
zp[2]:17 [ init_angle_screen::screen_bottomline#6 init_angle_screen::screen_bottomline#0 init_angle_screen::screen_bottomline#1 init_angle_screen::screen#0 init_dist_screen::screen_bottomline#11 init_dist_screen::screen_bottomline#0 init_dist_screen::screen_bottomline#1 ]
|
|
zp[1]:19 [ init_angle_screen::x#2 init_angle_screen::x#1 init_dist_screen::x#2 init_dist_screen::x#1 ]
|
|
zp[1]:20 [ init_angle_screen::xb#2 init_angle_screen::xb#1 init_dist_screen::xb#2 init_dist_screen::xb#1 ]
|
|
reg byte x [ init_squares::i#2 init_squares::i#1 ]
|
|
reg byte a [ sqr::val#2 sqr::val#1 sqr::val#0 ]
|
|
zp[2]:21 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 init_squares::sqr#2 init_squares::sqr#1 ]
|
|
zp[2]:23 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_squares::squares#2 init_squares::squares#1 init_squares::squares#0 ]
|
|
reg byte x [ atan2_16::i#2 atan2_16::i#1 ]
|
|
reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
|
|
zp[2]:25 [ bsearch16u::return#1 bsearch16u::return#2 bsearch16u::items#2 bsearch16u::items#1 bsearch16u::items#8 bsearch16u::$2 bsearch16u::return#7 bsearch16u::items#0 bsearch16u::return#3 sqrt::found#0 sqrt::$2 sqrt::$1 atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 init_angle_screen::angle_w#0 init_angle_screen::$7 ]
|
|
reg byte x [ bsearch16u::num#5 bsearch16u::num#1 bsearch16u::num#3 bsearch16u::num#0 ]
|
|
zp[2]:27 [ SCREEN_DIST#0 ]
|
|
zp[2]:29 [ SCREEN_ANGLE#0 ]
|
|
reg byte a [ init_dist_screen::y2#0 ]
|
|
zp[2]:31 [ sqr::return#2 init_dist_screen::yds#0 atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
|
|
reg byte a [ init_dist_screen::x2#0 ]
|
|
zp[2]:33 [ sqr::return#3 init_dist_screen::xds#0 sqr::return#0 init_dist_screen::ds#0 sqrt::val#0 bsearch16u::key#0 atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
|
|
reg byte a [ sqrt::return#2 ]
|
|
reg byte a [ init_dist_screen::d#0 ]
|
|
reg byte a [ init_angle_screen::$3 ]
|
|
reg byte a [ init_angle_screen::$4 ]
|
|
reg byte a [ init_angle_screen::$5 ]
|
|
zp[1]:35 [ init_angle_screen::ang_w#0 ]
|
|
reg byte a [ init_angle_screen::$9 ]
|
|
reg byte a [ init_angle_screen::$10 ]
|
|
reg byte a [ init_angle_screen::$11 ]
|
|
reg byte a [ init_squares::$3 ]
|
|
reg byte a [ init_squares::$4 ]
|
|
reg byte a [ sqr::$0 ]
|
|
reg byte a [ sqrt::return#0 ]
|
|
reg byte a [ atan2_16::$23 ]
|
|
reg byte a [ atan2_16::$22 ]
|
|
reg byte a [ bsearch16u::$6 ]
|
|
reg byte a [ bsearch16u::$14 ]
|
|
zp[2]:36 [ bsearch16u::pivot#0 init_angle_screen::xw#0 atan2_16::x#0 ]
|
|
zp[2]:38 [ bsearch16u::result#0 init_angle_screen::yw#0 atan2_16::y#0 ]
|
|
|
|
|
|
FINAL ASSEMBLER
|
|
Score: 1107770
|
|
|
|
// File Comments
|
|
// Fill screen using a spiral based on distance-to-center / angle-to-center
|
|
// Upstart
|
|
// Commodore 64 PRG executable file
|
|
.file [name="screen-show-spiral.prg", type="prg", segments="Program"]
|
|
.segmentdef Program [segments="Basic, Code, Data"]
|
|
.segmentdef Basic [start=$0801]
|
|
.segmentdef Code [start=$80d]
|
|
.segmentdef Data [startAfter="Code"]
|
|
.segment Basic
|
|
:BasicUpstart(__start)
|
|
// Global Constants & labels
|
|
.const SIZEOF_WORD = 2
|
|
// The number of iterations performed during 16-bit CORDIC atan2 calculation
|
|
.const CORDIC_ITERATIONS_16 = $f
|
|
// Char to fill with
|
|
.const FILL_CHAR = '@'
|
|
// The number of squares to pre-calculate. Limits what values sqr() can calculate and the result of sqrt()
|
|
.const NUM_SQUARES = $30
|
|
// Screen containing angle to center
|
|
.label SCREEN_FILL = $400
|
|
// Top of the heap used by malloc()
|
|
.label HEAP_TOP = $a000
|
|
// Head of the heap. Moved backward each malloc()
|
|
.label heap_head = 2
|
|
// Squares for each char value SQUARES[i] = i*i
|
|
// Initialized by init_squares()
|
|
.label SQUARES = 4
|
|
// Screen containing distance to center
|
|
.label SCREEN_DIST = $1b
|
|
// Screen containing angle to center
|
|
.label SCREEN_ANGLE = $1d
|
|
.segment Code
|
|
// __start
|
|
__start: {
|
|
// [1] phi from __start to __start::__init1 [phi:__start->__start::__init1]
|
|
// __start::__init1
|
|
// malloc(1000)
|
|
// [2] call malloc
|
|
// [9] phi from __start::__init1 to malloc [phi:__start::__init1->malloc]
|
|
// [9] phi malloc::size#3 = $3e8 [phi:__start::__init1->malloc#0] -- vwuz1=vwuc1
|
|
lda #<$3e8
|
|
sta.z malloc.size
|
|
lda #>$3e8
|
|
sta.z malloc.size+1
|
|
// [9] phi heap_head#13 = HEAP_TOP [phi:__start::__init1->malloc#1] -- pbuz1=pbuc1
|
|
lda #<HEAP_TOP
|
|
sta.z heap_head
|
|
lda #>HEAP_TOP
|
|
sta.z heap_head+1
|
|
jsr malloc
|
|
// __start::@2
|
|
// malloc(1000)
|
|
// [3] SCREEN_DIST#0 = (void*)malloc::mem#0 -- pvoz1=pvoz2
|
|
lda.z malloc.mem
|
|
sta.z SCREEN_DIST
|
|
lda.z malloc.mem+1
|
|
sta.z SCREEN_DIST+1
|
|
// [4] call malloc
|
|
// [9] phi from __start::@2 to malloc [phi:__start::@2->malloc]
|
|
// [9] phi malloc::size#3 = $3e8 [phi:__start::@2->malloc#0] -- vwuz1=vwuc1
|
|
lda #<$3e8
|
|
sta.z malloc.size
|
|
lda #>$3e8
|
|
sta.z malloc.size+1
|
|
// [9] phi heap_head#13 = heap_head#0 [phi:__start::@2->malloc#1] -- register_copy
|
|
jsr malloc
|
|
// __start::@3
|
|
// malloc(1000)
|
|
// [5] SCREEN_ANGLE#0 = (void*)malloc::mem#0 -- pvoz1=pvoz2
|
|
lda.z malloc.mem
|
|
sta.z SCREEN_ANGLE
|
|
lda.z malloc.mem+1
|
|
sta.z SCREEN_ANGLE+1
|
|
// [6] phi from __start::@3 to __start::@1 [phi:__start::@3->__start::@1]
|
|
// __start::@1
|
|
// [7] call main
|
|
jsr main
|
|
// __start::@return
|
|
// [8] return
|
|
rts
|
|
}
|
|
// malloc
|
|
// Allocates a block of size chars of memory, returning a pointer to the beginning of the block.
|
|
// The content of the newly allocated block of memory is not initialized, remaining with indeterminate values.
|
|
// malloc(word zp(4) size)
|
|
malloc: {
|
|
.label mem = 4
|
|
.label size = 4
|
|
// mem = heap_head-size
|
|
// [10] malloc::mem#0 = heap_head#13 - malloc::size#3 -- pbuz1=pbuz2_minus_vwuz1
|
|
lda.z heap_head
|
|
sec
|
|
sbc.z mem
|
|
sta.z mem
|
|
lda.z heap_head+1
|
|
sbc.z mem+1
|
|
sta.z mem+1
|
|
// heap_head = mem
|
|
// [11] heap_head#0 = malloc::mem#0 -- pbuz1=pbuz2
|
|
lda.z mem
|
|
sta.z heap_head
|
|
lda.z mem+1
|
|
sta.z heap_head+1
|
|
// malloc::@return
|
|
// }
|
|
// [12] return
|
|
rts
|
|
}
|
|
// main
|
|
main: {
|
|
.label dist = 4
|
|
.label angle = 6
|
|
.label fill = 2
|
|
.label dist_angle = $c
|
|
.label min_dist_angle = 8
|
|
.label min_dist_angle_1 = $c
|
|
.label min_fill = $a
|
|
// init_dist_screen(SCREEN_DIST)
|
|
// [13] init_dist_screen::screen#0 = (byte*)SCREEN_DIST#0 -- pbuz1=pbuz2
|
|
lda.z SCREEN_DIST
|
|
sta.z init_dist_screen.screen
|
|
lda.z SCREEN_DIST+1
|
|
sta.z init_dist_screen.screen+1
|
|
// [14] call init_dist_screen
|
|
// [35] phi from main to init_dist_screen [phi:main->init_dist_screen]
|
|
jsr init_dist_screen
|
|
// main::@8
|
|
// init_angle_screen(SCREEN_ANGLE)
|
|
// [15] init_angle_screen::screen#0 = (byte*)SCREEN_ANGLE#0 -- pbuz1=pbuz2
|
|
lda.z SCREEN_ANGLE
|
|
sta.z init_angle_screen.screen
|
|
lda.z SCREEN_ANGLE+1
|
|
sta.z init_angle_screen.screen+1
|
|
// [16] call init_angle_screen
|
|
jsr init_angle_screen
|
|
// main::@1
|
|
__b1:
|
|
// dist = SCREEN_DIST
|
|
// [17] main::dist#0 = (byte*)SCREEN_DIST#0 -- pbuz1=pbuz2
|
|
// Find the minimum dist/angle that is not already filled
|
|
lda.z SCREEN_DIST
|
|
sta.z dist
|
|
lda.z SCREEN_DIST+1
|
|
sta.z dist+1
|
|
// angle = SCREEN_ANGLE
|
|
// [18] main::angle#0 = (byte*)SCREEN_ANGLE#0 -- pbuz1=pbuz2
|
|
lda.z SCREEN_ANGLE
|
|
sta.z angle
|
|
lda.z SCREEN_ANGLE+1
|
|
sta.z angle+1
|
|
// [19] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
|
// [19] phi main::min_fill#5 = SCREEN_FILL [phi:main::@1->main::@2#0] -- pbuz1=pbuc1
|
|
lda #<SCREEN_FILL
|
|
sta.z min_fill
|
|
lda #>SCREEN_FILL
|
|
sta.z min_fill+1
|
|
// [19] phi main::min_dist_angle#2 = $ffff [phi:main::@1->main::@2#1] -- vwuz1=vwuc1
|
|
lda #<$ffff
|
|
sta.z min_dist_angle
|
|
lda #>$ffff
|
|
sta.z min_dist_angle+1
|
|
// [19] phi main::angle#2 = main::angle#0 [phi:main::@1->main::@2#2] -- register_copy
|
|
// [19] phi main::dist#2 = main::dist#0 [phi:main::@1->main::@2#3] -- register_copy
|
|
// [19] phi main::fill#2 = SCREEN_FILL [phi:main::@1->main::@2#4] -- pbuz1=pbuc1
|
|
lda #<SCREEN_FILL
|
|
sta.z fill
|
|
lda #>SCREEN_FILL
|
|
sta.z fill+1
|
|
// main::@2
|
|
__b2:
|
|
// if(*fill!=FILL_CHAR)
|
|
// [20] if(*main::fill#2==FILL_CHAR) goto main::@10 -- _deref_pbuz1_eq_vbuc1_then_la1
|
|
lda #FILL_CHAR
|
|
ldy #0
|
|
cmp (fill),y
|
|
beq __b10
|
|
// main::@4
|
|
// dist_angle = { *dist, *angle }
|
|
// [21] main::dist_angle#0 = *main::dist#2 w= *main::angle#2 -- vwuz1=_deref_pbuz2_word__deref_pbuz3
|
|
lda (angle),y
|
|
sta.z dist_angle
|
|
lda (dist),y
|
|
sta.z dist_angle+1
|
|
// if(dist_angle<min_dist_angle)
|
|
// [22] if(main::dist_angle#0>=main::min_dist_angle#2) goto main::@11 -- vwuz1_ge_vwuz2_then_la1
|
|
lda.z min_dist_angle+1
|
|
cmp.z dist_angle+1
|
|
bne !+
|
|
lda.z min_dist_angle
|
|
cmp.z dist_angle
|
|
beq __b11
|
|
!:
|
|
bcc __b11
|
|
// main::@5
|
|
// [23] main::min_fill#10 = main::fill#2 -- pbuz1=pbuz2
|
|
lda.z fill
|
|
sta.z min_fill
|
|
lda.z fill+1
|
|
sta.z min_fill+1
|
|
// [24] phi from main::@10 main::@11 main::@5 to main::@3 [phi:main::@10/main::@11/main::@5->main::@3]
|
|
// [24] phi main::min_fill#2 = main::min_fill#5 [phi:main::@10/main::@11/main::@5->main::@3#0] -- register_copy
|
|
// [24] phi main::min_dist_angle#3 = main::min_dist_angle#7 [phi:main::@10/main::@11/main::@5->main::@3#1] -- register_copy
|
|
// main::@3
|
|
__b3:
|
|
// dist++;
|
|
// [25] main::dist#1 = ++ main::dist#2 -- pbuz1=_inc_pbuz1
|
|
inc.z dist
|
|
bne !+
|
|
inc.z dist+1
|
|
!:
|
|
// angle++;
|
|
// [26] main::angle#1 = ++ main::angle#2 -- pbuz1=_inc_pbuz1
|
|
inc.z angle
|
|
bne !+
|
|
inc.z angle+1
|
|
!:
|
|
// fill++;
|
|
// [27] main::fill#1 = ++ main::fill#2 -- pbuz1=_inc_pbuz1
|
|
inc.z fill
|
|
bne !+
|
|
inc.z fill+1
|
|
!:
|
|
// while (fill<SCREEN_FILL+1000)
|
|
// [28] if(main::fill#1<SCREEN_FILL+$3e8) goto main::@9 -- pbuz1_lt_pbuc1_then_la1
|
|
lda.z fill+1
|
|
cmp #>SCREEN_FILL+$3e8
|
|
bcc __b9
|
|
bne !+
|
|
lda.z fill
|
|
cmp #<SCREEN_FILL+$3e8
|
|
bcc __b9
|
|
!:
|
|
// main::@6
|
|
// if(min_dist_angle==0xffff)
|
|
// [29] if(main::min_dist_angle#3!=$ffff) goto main::@7 -- vwuz1_neq_vwuc1_then_la1
|
|
lda.z min_dist_angle_1+1
|
|
cmp #>$ffff
|
|
bne __b7
|
|
lda.z min_dist_angle_1
|
|
cmp #<$ffff
|
|
bne __b7
|
|
// main::@return
|
|
// }
|
|
// [30] return
|
|
rts
|
|
// main::@7
|
|
__b7:
|
|
// *min_fill = FILL_CHAR
|
|
// [31] *main::min_fill#2 = FILL_CHAR -- _deref_pbuz1=vbuc1
|
|
// Fill the found location
|
|
lda #FILL_CHAR
|
|
ldy #0
|
|
sta (min_fill),y
|
|
jmp __b1
|
|
// main::@9
|
|
__b9:
|
|
// [32] main::min_dist_angle#6 = main::min_dist_angle#3 -- vwuz1=vwuz2
|
|
lda.z min_dist_angle_1
|
|
sta.z min_dist_angle
|
|
lda.z min_dist_angle_1+1
|
|
sta.z min_dist_angle+1
|
|
// [19] phi from main::@9 to main::@2 [phi:main::@9->main::@2]
|
|
// [19] phi main::min_fill#5 = main::min_fill#2 [phi:main::@9->main::@2#0] -- register_copy
|
|
// [19] phi main::min_dist_angle#2 = main::min_dist_angle#6 [phi:main::@9->main::@2#1] -- register_copy
|
|
// [19] phi main::angle#2 = main::angle#1 [phi:main::@9->main::@2#2] -- register_copy
|
|
// [19] phi main::dist#2 = main::dist#1 [phi:main::@9->main::@2#3] -- register_copy
|
|
// [19] phi main::fill#2 = main::fill#1 [phi:main::@9->main::@2#4] -- register_copy
|
|
jmp __b2
|
|
// main::@11
|
|
__b11:
|
|
// [33] main::min_dist_angle#8 = main::min_dist_angle#2 -- vwuz1=vwuz2
|
|
lda.z min_dist_angle
|
|
sta.z min_dist_angle_1
|
|
lda.z min_dist_angle+1
|
|
sta.z min_dist_angle_1+1
|
|
jmp __b3
|
|
// main::@10
|
|
__b10:
|
|
// [34] main::min_dist_angle#7 = main::min_dist_angle#2 -- vwuz1=vwuz2
|
|
lda.z min_dist_angle
|
|
sta.z min_dist_angle_1
|
|
lda.z min_dist_angle+1
|
|
sta.z min_dist_angle_1+1
|
|
jmp __b3
|
|
}
|
|
// init_dist_screen
|
|
// Populates 1000 bytes (a screen) with values representing the distance to the center.
|
|
// The actual value stored is distance*2 to increase precision
|
|
// init_dist_screen(byte* zp($f) screen)
|
|
init_dist_screen: {
|
|
.label screen = $f
|
|
.label screen_bottomline = $11
|
|
.label yds = $1f
|
|
.label screen_topline = $f
|
|
.label y = $e
|
|
.label xds = $21
|
|
.label ds = $21
|
|
.label x = $13
|
|
.label xb = $14
|
|
// init_squares()
|
|
// [36] call init_squares
|
|
// [106] phi from init_dist_screen to init_squares [phi:init_dist_screen->init_squares]
|
|
jsr init_squares
|
|
// init_dist_screen::@11
|
|
// screen_bottomline = screen+40*24
|
|
// [37] init_dist_screen::screen_bottomline#0 = init_dist_screen::screen#0 + (word)$28*$18 -- pbuz1=pbuz2_plus_vwuc1
|
|
clc
|
|
lda.z screen
|
|
adc #<$28*$18
|
|
sta.z screen_bottomline
|
|
lda.z screen+1
|
|
adc #>$28*$18
|
|
sta.z screen_bottomline+1
|
|
// [38] phi from init_dist_screen::@11 to init_dist_screen::@1 [phi:init_dist_screen::@11->init_dist_screen::@1]
|
|
// [38] phi init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#0 [phi:init_dist_screen::@11->init_dist_screen::@1#0] -- register_copy
|
|
// [38] phi init_dist_screen::screen_topline#11 = init_dist_screen::screen#0 [phi:init_dist_screen::@11->init_dist_screen::@1#1] -- register_copy
|
|
// [38] phi init_dist_screen::y#10 = 0 [phi:init_dist_screen::@11->init_dist_screen::@1#2] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z y
|
|
// [38] phi from init_dist_screen::@7 to init_dist_screen::@1 [phi:init_dist_screen::@7->init_dist_screen::@1]
|
|
// [38] phi init_dist_screen::screen_bottomline#11 = init_dist_screen::screen_bottomline#1 [phi:init_dist_screen::@7->init_dist_screen::@1#0] -- register_copy
|
|
// [38] phi init_dist_screen::screen_topline#11 = init_dist_screen::screen_topline#1 [phi:init_dist_screen::@7->init_dist_screen::@1#1] -- register_copy
|
|
// [38] phi init_dist_screen::y#10 = init_dist_screen::y#1 [phi:init_dist_screen::@7->init_dist_screen::@1#2] -- register_copy
|
|
// init_dist_screen::@1
|
|
__b1:
|
|
// y2 = y*2
|
|
// [39] init_dist_screen::y2#0 = init_dist_screen::y#10 << 1 -- vbuaa=vbuz1_rol_1
|
|
lda.z y
|
|
asl
|
|
// (y2>=24)?(y2-24):(24-y2)
|
|
// [40] if(init_dist_screen::y2#0>=$18) goto init_dist_screen::@2 -- vbuaa_ge_vbuc1_then_la1
|
|
cmp #$18
|
|
bcs __b2
|
|
// init_dist_screen::@3
|
|
// [41] init_dist_screen::$5 = $18 - init_dist_screen::y2#0 -- vbuaa=vbuc1_minus_vbuaa
|
|
eor #$ff
|
|
sec
|
|
adc #$18
|
|
// [42] phi from init_dist_screen::@2 init_dist_screen::@3 to init_dist_screen::@4 [phi:init_dist_screen::@2/init_dist_screen::@3->init_dist_screen::@4]
|
|
// [42] phi init_dist_screen::yd#0 = init_dist_screen::$7 [phi:init_dist_screen::@2/init_dist_screen::@3->init_dist_screen::@4#0] -- register_copy
|
|
// init_dist_screen::@4
|
|
__b4:
|
|
// sqr(yd)
|
|
// [43] sqr::val#0 = init_dist_screen::yd#0
|
|
// [44] call sqr
|
|
// [119] phi from init_dist_screen::@4 to sqr [phi:init_dist_screen::@4->sqr]
|
|
// [119] phi sqr::val#2 = sqr::val#0 [phi:init_dist_screen::@4->sqr#0] -- register_copy
|
|
jsr sqr
|
|
// sqr(yd)
|
|
// [45] sqr::return#2 = sqr::return#0 -- vwuz1=vwuz2
|
|
lda.z sqr.return
|
|
sta.z sqr.return_1
|
|
lda.z sqr.return+1
|
|
sta.z sqr.return_1+1
|
|
// init_dist_screen::@12
|
|
// yds = sqr(yd)
|
|
// [46] init_dist_screen::yds#0 = sqr::return#2
|
|
// [47] phi from init_dist_screen::@12 to init_dist_screen::@5 [phi:init_dist_screen::@12->init_dist_screen::@5]
|
|
// [47] phi init_dist_screen::xb#2 = $27 [phi:init_dist_screen::@12->init_dist_screen::@5#0] -- vbuz1=vbuc1
|
|
lda #$27
|
|
sta.z xb
|
|
// [47] phi init_dist_screen::x#2 = 0 [phi:init_dist_screen::@12->init_dist_screen::@5#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z x
|
|
// init_dist_screen::@5
|
|
__b5:
|
|
// for( byte x=0,xb=39; x<=19; x++, xb--)
|
|
// [48] if(init_dist_screen::x#2<$13+1) goto init_dist_screen::@6 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z x
|
|
cmp #$13+1
|
|
bcc __b6
|
|
// init_dist_screen::@7
|
|
// screen_topline += 40
|
|
// [49] init_dist_screen::screen_topline#1 = init_dist_screen::screen_topline#11 + $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z screen_topline
|
|
sta.z screen_topline
|
|
bcc !+
|
|
inc.z screen_topline+1
|
|
!:
|
|
// screen_bottomline -= 40
|
|
// [50] init_dist_screen::screen_bottomline#1 = init_dist_screen::screen_bottomline#11 - $28 -- pbuz1=pbuz1_minus_vbuc1
|
|
sec
|
|
lda.z screen_bottomline
|
|
sbc #$28
|
|
sta.z screen_bottomline
|
|
lda.z screen_bottomline+1
|
|
sbc #0
|
|
sta.z screen_bottomline+1
|
|
// for(byte y: 0..12)
|
|
// [51] init_dist_screen::y#1 = ++ init_dist_screen::y#10 -- vbuz1=_inc_vbuz1
|
|
inc.z y
|
|
// [52] if(init_dist_screen::y#1!=$d) goto init_dist_screen::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$d
|
|
cmp.z y
|
|
bne __b1
|
|
// init_dist_screen::@return
|
|
// }
|
|
// [53] return
|
|
rts
|
|
// init_dist_screen::@6
|
|
__b6:
|
|
// x2 = x*2
|
|
// [54] init_dist_screen::x2#0 = init_dist_screen::x#2 << 1 -- vbuaa=vbuz1_rol_1
|
|
lda.z x
|
|
asl
|
|
// (x2>=39)?(x2-39):(39-x2)
|
|
// [55] if(init_dist_screen::x2#0>=$27) goto init_dist_screen::@8 -- vbuaa_ge_vbuc1_then_la1
|
|
cmp #$27
|
|
bcs __b8
|
|
// init_dist_screen::@9
|
|
// [56] init_dist_screen::$14 = $27 - init_dist_screen::x2#0 -- vbuaa=vbuc1_minus_vbuaa
|
|
eor #$ff
|
|
sec
|
|
adc #$27
|
|
// [57] phi from init_dist_screen::@8 init_dist_screen::@9 to init_dist_screen::@10 [phi:init_dist_screen::@8/init_dist_screen::@9->init_dist_screen::@10]
|
|
// [57] phi init_dist_screen::xd#0 = init_dist_screen::$16 [phi:init_dist_screen::@8/init_dist_screen::@9->init_dist_screen::@10#0] -- register_copy
|
|
// init_dist_screen::@10
|
|
__b10:
|
|
// sqr(xd)
|
|
// [58] sqr::val#1 = init_dist_screen::xd#0
|
|
// [59] call sqr
|
|
// [119] phi from init_dist_screen::@10 to sqr [phi:init_dist_screen::@10->sqr]
|
|
// [119] phi sqr::val#2 = sqr::val#1 [phi:init_dist_screen::@10->sqr#0] -- register_copy
|
|
jsr sqr
|
|
// sqr(xd)
|
|
// [60] sqr::return#3 = sqr::return#0
|
|
// init_dist_screen::@13
|
|
// xds = sqr(xd)
|
|
// [61] init_dist_screen::xds#0 = sqr::return#3
|
|
// ds = xds+yds
|
|
// [62] init_dist_screen::ds#0 = init_dist_screen::xds#0 + init_dist_screen::yds#0 -- vwuz1=vwuz1_plus_vwuz2
|
|
lda.z ds
|
|
clc
|
|
adc.z yds
|
|
sta.z ds
|
|
lda.z ds+1
|
|
adc.z yds+1
|
|
sta.z ds+1
|
|
// sqrt(ds)
|
|
// [63] sqrt::val#0 = init_dist_screen::ds#0
|
|
// [64] call sqrt
|
|
jsr sqrt
|
|
// [65] sqrt::return#2 = sqrt::return#0
|
|
// init_dist_screen::@14
|
|
// d = sqrt(ds)
|
|
// [66] init_dist_screen::d#0 = sqrt::return#2
|
|
// screen_topline[x] = d
|
|
// [67] init_dist_screen::screen_topline#11[init_dist_screen::x#2] = init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
ldy.z x
|
|
sta (screen_topline),y
|
|
// screen_bottomline[x] = d
|
|
// [68] init_dist_screen::screen_bottomline#11[init_dist_screen::x#2] = init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
sta (screen_bottomline),y
|
|
// screen_topline[xb] = d
|
|
// [69] init_dist_screen::screen_topline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
ldy.z xb
|
|
sta (screen_topline),y
|
|
// screen_bottomline[xb] = d
|
|
// [70] init_dist_screen::screen_bottomline#11[init_dist_screen::xb#2] = init_dist_screen::d#0 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
sta (screen_bottomline),y
|
|
// for( byte x=0,xb=39; x<=19; x++, xb--)
|
|
// [71] init_dist_screen::x#1 = ++ init_dist_screen::x#2 -- vbuz1=_inc_vbuz1
|
|
inc.z x
|
|
// [72] init_dist_screen::xb#1 = -- init_dist_screen::xb#2 -- vbuz1=_dec_vbuz1
|
|
dec.z xb
|
|
// [47] phi from init_dist_screen::@14 to init_dist_screen::@5 [phi:init_dist_screen::@14->init_dist_screen::@5]
|
|
// [47] phi init_dist_screen::xb#2 = init_dist_screen::xb#1 [phi:init_dist_screen::@14->init_dist_screen::@5#0] -- register_copy
|
|
// [47] phi init_dist_screen::x#2 = init_dist_screen::x#1 [phi:init_dist_screen::@14->init_dist_screen::@5#1] -- register_copy
|
|
jmp __b5
|
|
// init_dist_screen::@8
|
|
__b8:
|
|
// (x2>=39)?(x2-39):(39-x2)
|
|
// [73] init_dist_screen::$16 = init_dist_screen::x2#0 - $27 -- vbuaa=vbuaa_minus_vbuc1
|
|
sec
|
|
sbc #$27
|
|
jmp __b10
|
|
// init_dist_screen::@2
|
|
__b2:
|
|
// (y2>=24)?(y2-24):(24-y2)
|
|
// [74] init_dist_screen::$7 = init_dist_screen::y2#0 - $18 -- vbuaa=vbuaa_minus_vbuc1
|
|
sec
|
|
sbc #$18
|
|
jmp __b4
|
|
}
|
|
// init_angle_screen
|
|
// Populates 1000 bytes (a screen) with values representing the angle to the center.
|
|
// Utilizes symmetry around the center
|
|
// init_angle_screen(byte* zp($11) screen)
|
|
init_angle_screen: {
|
|
.label __7 = $19
|
|
.label screen = $11
|
|
.label screen_bottomline = $11
|
|
.label xw = $24
|
|
.label yw = $26
|
|
.label angle_w = $19
|
|
.label ang_w = $23
|
|
.label x = $13
|
|
.label xb = $14
|
|
.label screen_topline = $f
|
|
.label y = $e
|
|
// screen_topline = screen+40*12
|
|
// [75] init_angle_screen::screen_bottomline#0 = init_angle_screen::screen#0 + (word)$28*$c -- pbuz1=pbuz1_plus_vwuc1
|
|
clc
|
|
lda.z screen_bottomline
|
|
adc #<$28*$c
|
|
sta.z screen_bottomline
|
|
lda.z screen_bottomline+1
|
|
adc #>$28*$c
|
|
sta.z screen_bottomline+1
|
|
// [76] init_angle_screen::screen_topline#7 = init_angle_screen::screen_bottomline#0 -- pbuz1=pbuz2
|
|
lda.z screen_bottomline
|
|
sta.z screen_topline
|
|
lda.z screen_bottomline+1
|
|
sta.z screen_topline+1
|
|
// [77] phi from init_angle_screen to init_angle_screen::@1 [phi:init_angle_screen->init_angle_screen::@1]
|
|
// [77] phi init_angle_screen::screen_bottomline#6 = init_angle_screen::screen_bottomline#0 [phi:init_angle_screen->init_angle_screen::@1#0] -- register_copy
|
|
// [77] phi init_angle_screen::screen_topline#6 = init_angle_screen::screen_topline#7 [phi:init_angle_screen->init_angle_screen::@1#1] -- register_copy
|
|
// [77] phi init_angle_screen::y#5 = 0 [phi:init_angle_screen->init_angle_screen::@1#2] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z y
|
|
// [77] phi from init_angle_screen::@4 to init_angle_screen::@1 [phi:init_angle_screen::@4->init_angle_screen::@1]
|
|
// [77] phi init_angle_screen::screen_bottomline#6 = init_angle_screen::screen_bottomline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#0] -- register_copy
|
|
// [77] phi init_angle_screen::screen_topline#6 = init_angle_screen::screen_topline#1 [phi:init_angle_screen::@4->init_angle_screen::@1#1] -- register_copy
|
|
// [77] phi init_angle_screen::y#5 = init_angle_screen::y#1 [phi:init_angle_screen::@4->init_angle_screen::@1#2] -- register_copy
|
|
// init_angle_screen::@1
|
|
__b1:
|
|
// [78] phi from init_angle_screen::@1 to init_angle_screen::@2 [phi:init_angle_screen::@1->init_angle_screen::@2]
|
|
// [78] phi init_angle_screen::xb#2 = $27 [phi:init_angle_screen::@1->init_angle_screen::@2#0] -- vbuz1=vbuc1
|
|
lda #$27
|
|
sta.z xb
|
|
// [78] phi init_angle_screen::x#2 = 0 [phi:init_angle_screen::@1->init_angle_screen::@2#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z x
|
|
// init_angle_screen::@2
|
|
__b2:
|
|
// for( byte x=0,xb=39; x<=19; x++, xb--)
|
|
// [79] if(init_angle_screen::x#2<$13+1) goto init_angle_screen::@3 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z x
|
|
cmp #$13+1
|
|
bcc __b3
|
|
// init_angle_screen::@4
|
|
// screen_topline -= 40
|
|
// [80] init_angle_screen::screen_topline#1 = init_angle_screen::screen_topline#6 - $28 -- pbuz1=pbuz1_minus_vbuc1
|
|
sec
|
|
lda.z screen_topline
|
|
sbc #$28
|
|
sta.z screen_topline
|
|
lda.z screen_topline+1
|
|
sbc #0
|
|
sta.z screen_topline+1
|
|
// screen_bottomline += 40
|
|
// [81] init_angle_screen::screen_bottomline#1 = init_angle_screen::screen_bottomline#6 + $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z screen_bottomline
|
|
sta.z screen_bottomline
|
|
bcc !+
|
|
inc.z screen_bottomline+1
|
|
!:
|
|
// for(byte y: 0..12)
|
|
// [82] init_angle_screen::y#1 = ++ init_angle_screen::y#5 -- vbuz1=_inc_vbuz1
|
|
inc.z y
|
|
// [83] if(init_angle_screen::y#1!=$d) goto init_angle_screen::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$d
|
|
cmp.z y
|
|
bne __b1
|
|
// init_angle_screen::@return
|
|
// }
|
|
// [84] return
|
|
rts
|
|
// init_angle_screen::@3
|
|
__b3:
|
|
// x*2
|
|
// [85] init_angle_screen::$3 = init_angle_screen::x#2 << 1 -- vbuaa=vbuz1_rol_1
|
|
lda.z x
|
|
asl
|
|
// 39-x*2
|
|
// [86] init_angle_screen::$4 = $27 - init_angle_screen::$3 -- vbuaa=vbuc1_minus_vbuaa
|
|
eor #$ff
|
|
sec
|
|
adc #$27
|
|
// xw = (signed word)(word){ 39-x*2, 0 }
|
|
// [87] init_angle_screen::xw#0 = init_angle_screen::$4 w= 0 -- vwuz1=vbuaa_word_vbuc1
|
|
ldy #0
|
|
sta.z xw+1
|
|
sty.z xw
|
|
// y*2
|
|
// [88] init_angle_screen::$5 = init_angle_screen::y#5 << 1 -- vbuaa=vbuz1_rol_1
|
|
lda.z y
|
|
asl
|
|
// yw = (signed word)(word){ y*2, 0 }
|
|
// [89] init_angle_screen::yw#0 = init_angle_screen::$5 w= 0 -- vwuz1=vbuaa_word_vbuc1
|
|
sta.z yw+1
|
|
sty.z yw
|
|
// atan2_16(xw, yw)
|
|
// [90] atan2_16::x#0 = (signed word)init_angle_screen::xw#0
|
|
// [91] atan2_16::y#0 = (signed word)init_angle_screen::yw#0
|
|
// [92] call atan2_16
|
|
jsr atan2_16
|
|
// [93] atan2_16::return#2 = atan2_16::return#0
|
|
// init_angle_screen::@5
|
|
// angle_w = atan2_16(xw, yw)
|
|
// [94] init_angle_screen::angle_w#0 = atan2_16::return#2
|
|
// angle_w+0x0080
|
|
// [95] init_angle_screen::$7 = init_angle_screen::angle_w#0 + $80 -- vwuz1=vwuz1_plus_vbuc1
|
|
lda #$80
|
|
clc
|
|
adc.z __7
|
|
sta.z __7
|
|
bcc !+
|
|
inc.z __7+1
|
|
!:
|
|
// ang_w = >(angle_w+0x0080)
|
|
// [96] init_angle_screen::ang_w#0 = > init_angle_screen::$7 -- vbuz1=_hi_vwuz2
|
|
lda.z __7+1
|
|
sta.z ang_w
|
|
// screen_bottomline[xb] = ang_w
|
|
// [97] init_angle_screen::screen_bottomline#6[init_angle_screen::xb#2] = init_angle_screen::ang_w#0 -- pbuz1_derefidx_vbuz2=vbuz3
|
|
ldy.z xb
|
|
sta (screen_bottomline),y
|
|
// -ang_w
|
|
// [98] init_angle_screen::$9 = - init_angle_screen::ang_w#0 -- vbuaa=_neg_vbuz1
|
|
eor #$ff
|
|
clc
|
|
adc #1
|
|
// screen_topline[xb] = -ang_w
|
|
// [99] init_angle_screen::screen_topline#6[init_angle_screen::xb#2] = init_angle_screen::$9 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
sta (screen_topline),y
|
|
// 0x80+ang_w
|
|
// [100] init_angle_screen::$10 = $80 + init_angle_screen::ang_w#0 -- vbuaa=vbuc1_plus_vbuz1
|
|
lda #$80
|
|
clc
|
|
adc.z ang_w
|
|
// screen_topline[x] = 0x80+ang_w
|
|
// [101] init_angle_screen::screen_topline#6[init_angle_screen::x#2] = init_angle_screen::$10 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
ldy.z x
|
|
sta (screen_topline),y
|
|
// 0x80-ang_w
|
|
// [102] init_angle_screen::$11 = $80 - init_angle_screen::ang_w#0 -- vbuaa=vbuc1_minus_vbuz1
|
|
lda #$80
|
|
sec
|
|
sbc.z ang_w
|
|
// screen_bottomline[x] = 0x80-ang_w
|
|
// [103] init_angle_screen::screen_bottomline#6[init_angle_screen::x#2] = init_angle_screen::$11 -- pbuz1_derefidx_vbuz2=vbuaa
|
|
sta (screen_bottomline),y
|
|
// for( byte x=0,xb=39; x<=19; x++, xb--)
|
|
// [104] init_angle_screen::x#1 = ++ init_angle_screen::x#2 -- vbuz1=_inc_vbuz1
|
|
inc.z x
|
|
// [105] init_angle_screen::xb#1 = -- init_angle_screen::xb#2 -- vbuz1=_dec_vbuz1
|
|
dec.z xb
|
|
// [78] phi from init_angle_screen::@5 to init_angle_screen::@2 [phi:init_angle_screen::@5->init_angle_screen::@2]
|
|
// [78] phi init_angle_screen::xb#2 = init_angle_screen::xb#1 [phi:init_angle_screen::@5->init_angle_screen::@2#0] -- register_copy
|
|
// [78] phi init_angle_screen::x#2 = init_angle_screen::x#1 [phi:init_angle_screen::@5->init_angle_screen::@2#1] -- register_copy
|
|
jmp __b2
|
|
}
|
|
// init_squares
|
|
// Initialize squares table
|
|
// Uses iterative formula (x+1)^2 = x^2 + 2*x + 1
|
|
init_squares: {
|
|
.label squares = $17
|
|
.label sqr = $15
|
|
// malloc(NUM_SQUARES*sizeof(unsigned int))
|
|
// [107] call malloc
|
|
// [9] phi from init_squares to malloc [phi:init_squares->malloc]
|
|
// [9] phi malloc::size#3 = NUM_SQUARES#2*SIZEOF_WORD [phi:init_squares->malloc#0] -- vwuz1=vbuc1
|
|
lda #<NUM_SQUARES*SIZEOF_WORD
|
|
sta.z malloc.size
|
|
lda #>NUM_SQUARES*SIZEOF_WORD
|
|
sta.z malloc.size+1
|
|
// [9] phi heap_head#13 = heap_head#0 [phi:init_squares->malloc#1] -- register_copy
|
|
jsr malloc
|
|
// init_squares::@3
|
|
// malloc(NUM_SQUARES*sizeof(unsigned int))
|
|
// [108] SQUARES#0 = (void*)malloc::mem#0
|
|
// squares = SQUARES
|
|
// [109] init_squares::squares#0 = (word*)SQUARES#0 -- pwuz1=pwuz2
|
|
lda.z SQUARES
|
|
sta.z squares
|
|
lda.z SQUARES+1
|
|
sta.z squares+1
|
|
// [110] phi from init_squares::@3 to init_squares::@1 [phi:init_squares::@3->init_squares::@1]
|
|
// [110] phi init_squares::squares#2 = init_squares::squares#0 [phi:init_squares::@3->init_squares::@1#0] -- register_copy
|
|
// [110] phi init_squares::sqr#2 = 0 [phi:init_squares::@3->init_squares::@1#1] -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z sqr
|
|
sta.z sqr+1
|
|
// [110] phi init_squares::i#2 = 0 [phi:init_squares::@3->init_squares::@1#2] -- vbuxx=vbuc1
|
|
tax
|
|
// init_squares::@1
|
|
__b1:
|
|
// for(char i=0;i<NUM_SQUARES;i++)
|
|
// [111] if(init_squares::i#2<NUM_SQUARES#2) goto init_squares::@2 -- vbuxx_lt_vbuc1_then_la1
|
|
cpx #NUM_SQUARES
|
|
bcc __b2
|
|
// init_squares::@return
|
|
// }
|
|
// [112] return
|
|
rts
|
|
// init_squares::@2
|
|
__b2:
|
|
// *squares++ = sqr
|
|
// [113] *init_squares::squares#2 = init_squares::sqr#2 -- _deref_pwuz1=vwuz2
|
|
ldy #0
|
|
lda.z sqr
|
|
sta (squares),y
|
|
iny
|
|
lda.z sqr+1
|
|
sta (squares),y
|
|
// *squares++ = sqr;
|
|
// [114] init_squares::squares#1 = init_squares::squares#2 + SIZEOF_WORD -- pwuz1=pwuz1_plus_vbuc1
|
|
lda #SIZEOF_WORD
|
|
clc
|
|
adc.z squares
|
|
sta.z squares
|
|
bcc !+
|
|
inc.z squares+1
|
|
!:
|
|
// i*2
|
|
// [115] init_squares::$3 = init_squares::i#2 << 1 -- vbuaa=vbuxx_rol_1
|
|
txa
|
|
asl
|
|
// i*2+1
|
|
// [116] init_squares::$4 = init_squares::$3 + 1 -- vbuaa=vbuaa_plus_1
|
|
clc
|
|
adc #1
|
|
// sqr += i*2+1
|
|
// [117] init_squares::sqr#1 = init_squares::sqr#2 + init_squares::$4 -- vwuz1=vwuz1_plus_vbuaa
|
|
clc
|
|
adc.z sqr
|
|
sta.z sqr
|
|
bcc !+
|
|
inc.z sqr+1
|
|
!:
|
|
// for(char i=0;i<NUM_SQUARES;i++)
|
|
// [118] init_squares::i#1 = ++ init_squares::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [110] phi from init_squares::@2 to init_squares::@1 [phi:init_squares::@2->init_squares::@1]
|
|
// [110] phi init_squares::squares#2 = init_squares::squares#1 [phi:init_squares::@2->init_squares::@1#0] -- register_copy
|
|
// [110] phi init_squares::sqr#2 = init_squares::sqr#1 [phi:init_squares::@2->init_squares::@1#1] -- register_copy
|
|
// [110] phi init_squares::i#2 = init_squares::i#1 [phi:init_squares::@2->init_squares::@1#2] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// sqr
|
|
// Find the square of a char value
|
|
// Uses a table of squares that must be initialized by calling init_squares()
|
|
// sqr(byte register(A) val)
|
|
sqr: {
|
|
.label return = $21
|
|
.label return_1 = $1f
|
|
// return SQUARES[val];
|
|
// [120] sqr::$0 = sqr::val#2 << 1 -- vbuaa=vbuaa_rol_1
|
|
asl
|
|
// [121] sqr::return#0 = ((word*)SQUARES#0)[sqr::$0] -- vwuz1=pwuz2_derefidx_vbuaa
|
|
tay
|
|
lda (SQUARES),y
|
|
sta.z return
|
|
iny
|
|
lda (SQUARES),y
|
|
sta.z return+1
|
|
// sqr::@return
|
|
// }
|
|
// [122] return
|
|
rts
|
|
}
|
|
// sqrt
|
|
// Find the (integer) square root of a unsigned int value
|
|
// If the square is not an integer then it returns the largest integer N where N*N <= val
|
|
// Uses a table of squares that must be initialized by calling init_squares()
|
|
// sqrt(word zp($21) val)
|
|
sqrt: {
|
|
.label __1 = $19
|
|
.label __2 = $19
|
|
.label found = $19
|
|
.label val = $21
|
|
// bsearch16u(val, SQUARES, NUM_SQUARES)
|
|
// [123] bsearch16u::key#0 = sqrt::val#0
|
|
// [124] bsearch16u::items#1 = (word*)SQUARES#0 -- pwuz1=pwuz2
|
|
lda.z SQUARES
|
|
sta.z bsearch16u.items
|
|
lda.z SQUARES+1
|
|
sta.z bsearch16u.items+1
|
|
// [125] call bsearch16u
|
|
// [175] phi from sqrt to bsearch16u [phi:sqrt->bsearch16u]
|
|
jsr bsearch16u
|
|
// bsearch16u(val, SQUARES, NUM_SQUARES)
|
|
// [126] bsearch16u::return#3 = bsearch16u::return#1
|
|
// sqrt::@1
|
|
// found = bsearch16u(val, SQUARES, NUM_SQUARES)
|
|
// [127] sqrt::found#0 = bsearch16u::return#3
|
|
// found-SQUARES
|
|
// [128] sqrt::$2 = sqrt::found#0 - (word*)SQUARES#0 -- vwuz1=pwuz1_minus_pwuz2
|
|
lda.z __2
|
|
sec
|
|
sbc.z SQUARES
|
|
sta.z __2
|
|
lda.z __2+1
|
|
sbc.z SQUARES+1
|
|
sta.z __2+1
|
|
// [129] sqrt::$1 = sqrt::$2 >> 1 -- vwuz1=vwuz1_ror_1
|
|
lsr.z __1+1
|
|
ror.z __1
|
|
// sq = (char)(found-SQUARES)
|
|
// [130] sqrt::return#0 = (byte)sqrt::$1 -- vbuaa=_byte_vwuz1
|
|
lda.z __1
|
|
// sqrt::@return
|
|
// }
|
|
// [131] return
|
|
rts
|
|
}
|
|
// atan2_16
|
|
// Find the atan2(x, y) - which is the angle of the line from (0,0) to (x,y)
|
|
// Finding the angle requires a binary search using CORDIC_ITERATIONS_16
|
|
// Returns the angle in hex-degrees (0=0, 0x8000=PI, 0x10000=2*PI)
|
|
// atan2_16(signed word zp($24) x, signed word zp($26) y)
|
|
atan2_16: {
|
|
.label __2 = $15
|
|
.label __7 = $17
|
|
.label yi = $15
|
|
.label xi = $17
|
|
.label angle = $19
|
|
.label xd = $21
|
|
.label yd = $1f
|
|
.label return = $19
|
|
.label x = $24
|
|
.label y = $26
|
|
// (y>=0)?y:-y
|
|
// [132] if(atan2_16::y#0>=0) goto atan2_16::@1 -- vwsz1_ge_0_then_la1
|
|
lda.z y+1
|
|
bmi !__b1+
|
|
jmp __b1
|
|
!__b1:
|
|
// atan2_16::@2
|
|
// [133] atan2_16::$2 = - atan2_16::y#0 -- vwsz1=_neg_vwsz2
|
|
sec
|
|
lda #0
|
|
sbc.z y
|
|
sta.z __2
|
|
lda #0
|
|
sbc.z y+1
|
|
sta.z __2+1
|
|
// [134] phi from atan2_16::@1 atan2_16::@2 to atan2_16::@3 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3]
|
|
// [134] phi atan2_16::yi#0 = atan2_16::yi#16 [phi:atan2_16::@1/atan2_16::@2->atan2_16::@3#0] -- register_copy
|
|
// atan2_16::@3
|
|
__b3:
|
|
// (x>=0)?x:-x
|
|
// [135] if(atan2_16::x#0>=0) goto atan2_16::@4 -- vwsz1_ge_0_then_la1
|
|
lda.z x+1
|
|
bmi !__b4+
|
|
jmp __b4
|
|
!__b4:
|
|
// atan2_16::@5
|
|
// [136] atan2_16::$7 = - atan2_16::x#0 -- vwsz1=_neg_vwsz2
|
|
sec
|
|
lda #0
|
|
sbc.z x
|
|
sta.z __7
|
|
lda #0
|
|
sbc.z x+1
|
|
sta.z __7+1
|
|
// [137] phi from atan2_16::@4 atan2_16::@5 to atan2_16::@6 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6]
|
|
// [137] phi atan2_16::xi#0 = atan2_16::xi#13 [phi:atan2_16::@4/atan2_16::@5->atan2_16::@6#0] -- register_copy
|
|
// atan2_16::@6
|
|
__b6:
|
|
// [138] phi from atan2_16::@6 to atan2_16::@10 [phi:atan2_16::@6->atan2_16::@10]
|
|
// [138] phi atan2_16::angle#12 = 0 [phi:atan2_16::@6->atan2_16::@10#0] -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z angle
|
|
sta.z angle+1
|
|
// [138] phi atan2_16::i#2 = 0 [phi:atan2_16::@6->atan2_16::@10#1] -- vbuxx=vbuc1
|
|
tax
|
|
// [138] phi atan2_16::xi#3 = atan2_16::xi#0 [phi:atan2_16::@6->atan2_16::@10#2] -- register_copy
|
|
// [138] phi atan2_16::yi#3 = atan2_16::yi#0 [phi:atan2_16::@6->atan2_16::@10#3] -- register_copy
|
|
// atan2_16::@10
|
|
__b10:
|
|
// if(yi==0)
|
|
// [139] if(atan2_16::yi#3!=0) goto atan2_16::@11 -- vwsz1_neq_0_then_la1
|
|
lda.z yi+1
|
|
ora.z yi
|
|
bne __b11
|
|
// [140] phi from atan2_16::@10 atan2_16::@19 to atan2_16::@12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12]
|
|
// [140] phi atan2_16::angle#6 = atan2_16::angle#12 [phi:atan2_16::@10/atan2_16::@19->atan2_16::@12#0] -- register_copy
|
|
// atan2_16::@12
|
|
__b12:
|
|
// angle /=2
|
|
// [141] atan2_16::angle#1 = atan2_16::angle#6 >> 1 -- vwuz1=vwuz1_ror_1
|
|
lsr.z angle+1
|
|
ror.z angle
|
|
// if(x<0)
|
|
// [142] if(atan2_16::x#0>=0) goto atan2_16::@7 -- vwsz1_ge_0_then_la1
|
|
lda.z x+1
|
|
bpl __b7
|
|
// atan2_16::@21
|
|
// angle = 0x8000-angle
|
|
// [143] atan2_16::angle#4 = $8000 - atan2_16::angle#1 -- vwuz1=vwuc1_minus_vwuz1
|
|
sec
|
|
lda #<$8000
|
|
sbc.z angle
|
|
sta.z angle
|
|
lda #>$8000
|
|
sbc.z angle+1
|
|
sta.z angle+1
|
|
// [144] phi from atan2_16::@12 atan2_16::@21 to atan2_16::@7 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7]
|
|
// [144] phi atan2_16::angle#11 = atan2_16::angle#1 [phi:atan2_16::@12/atan2_16::@21->atan2_16::@7#0] -- register_copy
|
|
// atan2_16::@7
|
|
__b7:
|
|
// if(y<0)
|
|
// [145] if(atan2_16::y#0>=0) goto atan2_16::@8 -- vwsz1_ge_0_then_la1
|
|
lda.z y+1
|
|
bpl __b8
|
|
// atan2_16::@9
|
|
// angle = -angle
|
|
// [146] atan2_16::angle#5 = - atan2_16::angle#11 -- vwuz1=_neg_vwuz1
|
|
sec
|
|
lda #0
|
|
sbc.z angle
|
|
sta.z angle
|
|
lda #0
|
|
sbc.z angle+1
|
|
sta.z angle+1
|
|
// [147] phi from atan2_16::@7 atan2_16::@9 to atan2_16::@8 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8]
|
|
// [147] phi atan2_16::return#0 = atan2_16::angle#11 [phi:atan2_16::@7/atan2_16::@9->atan2_16::@8#0] -- register_copy
|
|
// atan2_16::@8
|
|
__b8:
|
|
// atan2_16::@return
|
|
// }
|
|
// [148] return
|
|
rts
|
|
// atan2_16::@11
|
|
__b11:
|
|
// [149] atan2_16::shift#5 = atan2_16::i#2 -- vbuyy=vbuxx
|
|
txa
|
|
tay
|
|
// [150] atan2_16::xd#10 = atan2_16::xi#3 -- vwsz1=vwsz2
|
|
lda.z xi
|
|
sta.z xd
|
|
lda.z xi+1
|
|
sta.z xd+1
|
|
// [151] atan2_16::yd#10 = atan2_16::yi#3 -- vwsz1=vwsz2
|
|
lda.z yi
|
|
sta.z yd
|
|
lda.z yi+1
|
|
sta.z yd+1
|
|
// [152] phi from atan2_16::@11 atan2_16::@14 to atan2_16::@13 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13]
|
|
// [152] phi atan2_16::yd#3 = atan2_16::yd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#0] -- register_copy
|
|
// [152] phi atan2_16::xd#3 = atan2_16::xd#10 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#1] -- register_copy
|
|
// [152] phi atan2_16::shift#2 = atan2_16::shift#5 [phi:atan2_16::@11/atan2_16::@14->atan2_16::@13#2] -- register_copy
|
|
// atan2_16::@13
|
|
__b13:
|
|
// while(shift>=2)
|
|
// [153] if(atan2_16::shift#2>=2) goto atan2_16::@14 -- vbuyy_ge_vbuc1_then_la1
|
|
cpy #2
|
|
bcs __b14
|
|
// atan2_16::@15
|
|
// if(shift)
|
|
// [154] if(0==atan2_16::shift#2) goto atan2_16::@17 -- 0_eq_vbuyy_then_la1
|
|
cpy #0
|
|
beq __b17
|
|
// atan2_16::@16
|
|
// xd >>= 1
|
|
// [155] atan2_16::xd#2 = atan2_16::xd#3 >> 1 -- vwsz1=vwsz1_ror_1
|
|
lda.z xd+1
|
|
cmp #$80
|
|
ror.z xd+1
|
|
ror.z xd
|
|
// yd >>= 1
|
|
// [156] atan2_16::yd#2 = atan2_16::yd#3 >> 1 -- vwsz1=vwsz1_ror_1
|
|
lda.z yd+1
|
|
cmp #$80
|
|
ror.z yd+1
|
|
ror.z yd
|
|
// [157] phi from atan2_16::@15 atan2_16::@16 to atan2_16::@17 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17]
|
|
// [157] phi atan2_16::xd#5 = atan2_16::xd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#0] -- register_copy
|
|
// [157] phi atan2_16::yd#5 = atan2_16::yd#3 [phi:atan2_16::@15/atan2_16::@16->atan2_16::@17#1] -- register_copy
|
|
// atan2_16::@17
|
|
__b17:
|
|
// if(yi>=0)
|
|
// [158] if(atan2_16::yi#3>=0) goto atan2_16::@18 -- vwsz1_ge_0_then_la1
|
|
lda.z yi+1
|
|
bpl __b18
|
|
// atan2_16::@20
|
|
// xi -= yd
|
|
// [159] atan2_16::xi#2 = atan2_16::xi#3 - atan2_16::yd#5 -- vwsz1=vwsz1_minus_vwsz2
|
|
lda.z xi
|
|
sec
|
|
sbc.z yd
|
|
sta.z xi
|
|
lda.z xi+1
|
|
sbc.z yd+1
|
|
sta.z xi+1
|
|
// yi += xd
|
|
// [160] atan2_16::yi#2 = atan2_16::yi#3 + atan2_16::xd#5 -- vwsz1=vwsz1_plus_vwsz2
|
|
lda.z yi
|
|
clc
|
|
adc.z xd
|
|
sta.z yi
|
|
lda.z yi+1
|
|
adc.z xd+1
|
|
sta.z yi+1
|
|
// angle -= CORDIC_ATAN2_ANGLES_16[i]
|
|
// [161] atan2_16::$23 = atan2_16::i#2 << 1 -- vbuaa=vbuxx_rol_1
|
|
txa
|
|
asl
|
|
// [162] atan2_16::angle#3 = atan2_16::angle#12 - CORDIC_ATAN2_ANGLES_16[atan2_16::$23] -- vwuz1=vwuz1_minus_pwuc1_derefidx_vbuaa
|
|
tay
|
|
sec
|
|
lda.z angle
|
|
sbc CORDIC_ATAN2_ANGLES_16,y
|
|
sta.z angle
|
|
lda.z angle+1
|
|
sbc CORDIC_ATAN2_ANGLES_16+1,y
|
|
sta.z angle+1
|
|
// [163] phi from atan2_16::@18 atan2_16::@20 to atan2_16::@19 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19]
|
|
// [163] phi atan2_16::xi#8 = atan2_16::xi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#0] -- register_copy
|
|
// [163] phi atan2_16::angle#13 = atan2_16::angle#2 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#1] -- register_copy
|
|
// [163] phi atan2_16::yi#8 = atan2_16::yi#1 [phi:atan2_16::@18/atan2_16::@20->atan2_16::@19#2] -- register_copy
|
|
// atan2_16::@19
|
|
__b19:
|
|
// for( char i: 0..CORDIC_ITERATIONS_16-1)
|
|
// [164] atan2_16::i#1 = ++ atan2_16::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [165] if(atan2_16::i#1==CORDIC_ITERATIONS_16-1+1) goto atan2_16::@12 -- vbuxx_eq_vbuc1_then_la1
|
|
cpx #CORDIC_ITERATIONS_16-1+1
|
|
bne !__b12+
|
|
jmp __b12
|
|
!__b12:
|
|
// [138] phi from atan2_16::@19 to atan2_16::@10 [phi:atan2_16::@19->atan2_16::@10]
|
|
// [138] phi atan2_16::angle#12 = atan2_16::angle#13 [phi:atan2_16::@19->atan2_16::@10#0] -- register_copy
|
|
// [138] phi atan2_16::i#2 = atan2_16::i#1 [phi:atan2_16::@19->atan2_16::@10#1] -- register_copy
|
|
// [138] phi atan2_16::xi#3 = atan2_16::xi#8 [phi:atan2_16::@19->atan2_16::@10#2] -- register_copy
|
|
// [138] phi atan2_16::yi#3 = atan2_16::yi#8 [phi:atan2_16::@19->atan2_16::@10#3] -- register_copy
|
|
jmp __b10
|
|
// atan2_16::@18
|
|
__b18:
|
|
// xi += yd
|
|
// [166] atan2_16::xi#1 = atan2_16::xi#3 + atan2_16::yd#5 -- vwsz1=vwsz1_plus_vwsz2
|
|
lda.z xi
|
|
clc
|
|
adc.z yd
|
|
sta.z xi
|
|
lda.z xi+1
|
|
adc.z yd+1
|
|
sta.z xi+1
|
|
// yi -= xd
|
|
// [167] atan2_16::yi#1 = atan2_16::yi#3 - atan2_16::xd#5 -- vwsz1=vwsz1_minus_vwsz2
|
|
lda.z yi
|
|
sec
|
|
sbc.z xd
|
|
sta.z yi
|
|
lda.z yi+1
|
|
sbc.z xd+1
|
|
sta.z yi+1
|
|
// angle += CORDIC_ATAN2_ANGLES_16[i]
|
|
// [168] atan2_16::$22 = atan2_16::i#2 << 1 -- vbuaa=vbuxx_rol_1
|
|
txa
|
|
asl
|
|
// [169] atan2_16::angle#2 = atan2_16::angle#12 + CORDIC_ATAN2_ANGLES_16[atan2_16::$22] -- vwuz1=vwuz1_plus_pwuc1_derefidx_vbuaa
|
|
tay
|
|
clc
|
|
lda.z angle
|
|
adc CORDIC_ATAN2_ANGLES_16,y
|
|
sta.z angle
|
|
lda.z angle+1
|
|
adc CORDIC_ATAN2_ANGLES_16+1,y
|
|
sta.z angle+1
|
|
jmp __b19
|
|
// atan2_16::@14
|
|
__b14:
|
|
// xd >>= 2
|
|
// [170] atan2_16::xd#1 = atan2_16::xd#3 >> 2 -- vwsz1=vwsz1_ror_2
|
|
lda.z xd+1
|
|
cmp #$80
|
|
ror.z xd+1
|
|
ror.z xd
|
|
lda.z xd+1
|
|
cmp #$80
|
|
ror.z xd+1
|
|
ror.z xd
|
|
// yd >>= 2
|
|
// [171] atan2_16::yd#1 = atan2_16::yd#3 >> 2 -- vwsz1=vwsz1_ror_2
|
|
lda.z yd+1
|
|
cmp #$80
|
|
ror.z yd+1
|
|
ror.z yd
|
|
lda.z yd+1
|
|
cmp #$80
|
|
ror.z yd+1
|
|
ror.z yd
|
|
// shift -=2
|
|
// [172] atan2_16::shift#1 = atan2_16::shift#2 - 2 -- vbuyy=vbuyy_minus_2
|
|
dey
|
|
dey
|
|
jmp __b13
|
|
// atan2_16::@4
|
|
__b4:
|
|
// (x>=0)?x:-x
|
|
// [173] atan2_16::xi#13 = atan2_16::x#0 -- vwsz1=vwsz2
|
|
lda.z x
|
|
sta.z xi
|
|
lda.z x+1
|
|
sta.z xi+1
|
|
jmp __b6
|
|
// atan2_16::@1
|
|
__b1:
|
|
// (y>=0)?y:-y
|
|
// [174] atan2_16::yi#16 = atan2_16::y#0 -- vwsz1=vwsz2
|
|
lda.z y
|
|
sta.z yi
|
|
lda.z y+1
|
|
sta.z yi+1
|
|
jmp __b3
|
|
}
|
|
// bsearch16u
|
|
// Searches an array of nitems unsigned ints, the initial member of which is pointed to by base, for a member that matches the value key.
|
|
// - key - The value to look for
|
|
// - items - Pointer to the start of the array to search in
|
|
// - num - The number of items in the array
|
|
// Returns pointer to an entry in the array that matches the search key
|
|
// bsearch16u(word zp($21) key, word* zp($19) items, byte register(X) num)
|
|
bsearch16u: {
|
|
.label __2 = $19
|
|
.label pivot = $24
|
|
.label result = $26
|
|
.label return = $19
|
|
.label items = $19
|
|
.label key = $21
|
|
// [176] phi from bsearch16u to bsearch16u::@3 [phi:bsearch16u->bsearch16u::@3]
|
|
// [176] phi bsearch16u::items#2 = bsearch16u::items#1 [phi:bsearch16u->bsearch16u::@3#0] -- register_copy
|
|
// [176] phi bsearch16u::num#3 = NUM_SQUARES#2 [phi:bsearch16u->bsearch16u::@3#1] -- vbuxx=vbuc1
|
|
ldx #NUM_SQUARES
|
|
// bsearch16u::@3
|
|
__b3:
|
|
// while (num > 0)
|
|
// [177] if(bsearch16u::num#3>0) goto bsearch16u::@4 -- vbuxx_gt_0_then_la1
|
|
cpx #0
|
|
bne __b4
|
|
// bsearch16u::@5
|
|
// *items<=key?items:items-1
|
|
// [178] if(*bsearch16u::items#2<=bsearch16u::key#0) goto bsearch16u::@2 -- _deref_pwuz1_le_vwuz2_then_la1
|
|
ldy #1
|
|
lda (items),y
|
|
cmp.z key+1
|
|
bne !+
|
|
dey
|
|
lda (items),y
|
|
cmp.z key
|
|
beq __b2
|
|
!:
|
|
bcc __b2
|
|
// bsearch16u::@1
|
|
// [179] bsearch16u::$2 = bsearch16u::items#2 - 1*SIZEOF_WORD -- pwuz1=pwuz1_minus_vbuc1
|
|
sec
|
|
lda.z __2
|
|
sbc #1*SIZEOF_WORD
|
|
sta.z __2
|
|
lda.z __2+1
|
|
sbc #0
|
|
sta.z __2+1
|
|
// [180] phi from bsearch16u::@1 bsearch16u::@5 to bsearch16u::@2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2]
|
|
// [180] phi bsearch16u::return#2 = bsearch16u::$2 [phi:bsearch16u::@1/bsearch16u::@5->bsearch16u::@2#0] -- register_copy
|
|
// bsearch16u::@2
|
|
__b2:
|
|
// [181] phi from bsearch16u::@2 bsearch16u::@8 to bsearch16u::@return [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return]
|
|
// [181] phi bsearch16u::return#1 = bsearch16u::return#2 [phi:bsearch16u::@2/bsearch16u::@8->bsearch16u::@return#0] -- register_copy
|
|
// bsearch16u::@return
|
|
// }
|
|
// [182] return
|
|
rts
|
|
// bsearch16u::@4
|
|
__b4:
|
|
// num >> 1
|
|
// [183] bsearch16u::$6 = bsearch16u::num#3 >> 1 -- vbuaa=vbuxx_ror_1
|
|
txa
|
|
lsr
|
|
// items + (num >> 1)
|
|
// [184] bsearch16u::$14 = bsearch16u::$6 << 1 -- vbuaa=vbuaa_rol_1
|
|
asl
|
|
// [185] bsearch16u::pivot#0 = bsearch16u::items#2 + bsearch16u::$14 -- pwuz1=pwuz2_plus_vbuaa
|
|
clc
|
|
adc.z items
|
|
sta.z pivot
|
|
lda #0
|
|
adc.z items+1
|
|
sta.z pivot+1
|
|
// result = (signed int)key-(signed int)*pivot
|
|
// [186] bsearch16u::result#0 = (signed word)bsearch16u::key#0 - (signed word)*bsearch16u::pivot#0 -- vwsz1=vwsz2_minus__deref_pwsz3
|
|
sec
|
|
lda.z key
|
|
ldy #0
|
|
sbc (pivot),y
|
|
sta.z result
|
|
lda.z key+1
|
|
iny
|
|
sbc (pivot),y
|
|
sta.z result+1
|
|
// if (result == 0)
|
|
// [187] if(bsearch16u::result#0!=0) goto bsearch16u::@6 -- vwsz1_neq_0_then_la1
|
|
ora.z result
|
|
bne __b6
|
|
// bsearch16u::@8
|
|
// [188] bsearch16u::return#7 = bsearch16u::pivot#0 -- pwuz1=pwuz2
|
|
lda.z pivot
|
|
sta.z return
|
|
lda.z pivot+1
|
|
sta.z return+1
|
|
rts
|
|
// bsearch16u::@6
|
|
__b6:
|
|
// if (result > 0)
|
|
// [189] if(bsearch16u::result#0<=0) goto bsearch16u::@7 -- vwsz1_le_0_then_la1
|
|
lda.z result+1
|
|
bmi __b7
|
|
bne !+
|
|
lda.z result
|
|
beq __b7
|
|
!:
|
|
// bsearch16u::@9
|
|
// items = pivot+1
|
|
// [190] bsearch16u::items#0 = bsearch16u::pivot#0 + 1*SIZEOF_WORD -- pwuz1=pwuz2_plus_vbuc1
|
|
lda #1*SIZEOF_WORD
|
|
clc
|
|
adc.z pivot
|
|
sta.z items
|
|
lda #0
|
|
adc.z pivot+1
|
|
sta.z items+1
|
|
// num--;
|
|
// [191] bsearch16u::num#1 = -- bsearch16u::num#3 -- vbuxx=_dec_vbuxx
|
|
dex
|
|
// [192] phi from bsearch16u::@6 bsearch16u::@9 to bsearch16u::@7 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7]
|
|
// [192] phi bsearch16u::items#8 = bsearch16u::items#2 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#0] -- register_copy
|
|
// [192] phi bsearch16u::num#5 = bsearch16u::num#3 [phi:bsearch16u::@6/bsearch16u::@9->bsearch16u::@7#1] -- register_copy
|
|
// bsearch16u::@7
|
|
__b7:
|
|
// num >>= 1
|
|
// [193] bsearch16u::num#0 = bsearch16u::num#5 >> 1 -- vbuxx=vbuxx_ror_1
|
|
txa
|
|
lsr
|
|
tax
|
|
// [176] phi from bsearch16u::@7 to bsearch16u::@3 [phi:bsearch16u::@7->bsearch16u::@3]
|
|
// [176] phi bsearch16u::items#2 = bsearch16u::items#8 [phi:bsearch16u::@7->bsearch16u::@3#0] -- register_copy
|
|
// [176] phi bsearch16u::num#3 = bsearch16u::num#0 [phi:bsearch16u::@7->bsearch16u::@3#1] -- register_copy
|
|
jmp __b3
|
|
}
|
|
// File Data
|
|
.segment Data
|
|
// Angles representing ATAN(0.5), ATAN(0.25), ATAN(0.125), ...
|
|
CORDIC_ATAN2_ANGLES_16:
|
|
.for (var i=0; i<CORDIC_ITERATIONS_16; i++)
|
|
.word 256*2*256*atan(1/pow(2,i))/PI/2
|
|
|
|
|