void test3(__complex__ double x, __complex__ double y, int i) {
  if (carg(x) != atan2(__imag__ x, __real__ x))
    link_error();
  if (ccos(x) != ccos(-x))
    link_error();
  if (ccos(ctan(x)) != ccos(ctan(-x)))
    link_error();
  if (ctan(x - y) != -ctan(y - x))
    link_error();
  if (ccos(x / y) != ccos(-x / y))
    link_error();
  if (ccos(x / y) != ccos(x / -y))
    link_error();
  if (ccos(x / ctan(y)) != ccos(-x / ctan(-y)))
    link_error();
  if (ccos(x * y) != ccos(-x * y))
    link_error();
  if (ccos(x * y) != ccos(x * -y))
    link_error();
  if (ccos(ctan(x) * y) != ccos(ctan(-x) * -y))
    link_error();
  if (ccos(ctan(x / y)) != ccos(-ctan(x / -y)))
    link_error();
  if (ccos(i ? x : y) != ccos(i ? -x : y))
    link_error();
  if (ccos(i ? x : y) != ccos(i ? x : -y))
    link_error();
  if (ccos(i ? x : ctan(y / x)) != ccos(i ? -x : -ctan(-y / x)))
    link_error();
  if (~x != -~-x)
    link_error();
  if (ccos(~x) != ccos(-~-x))
    link_error();
  if (ctan(~(x - y)) != -ctan(~(y - x)))
    link_error();
  if (ctan(~(x / y)) != -ctan(~(x / -y)))
    link_error();
}


x86 assembly (clang, -O0):
<test3>:
push   %rbp
mov    %rsp,%rbp
sub    $0x600,%rsp
movsd  %xmm0,-0x10(%rbp)
movsd  %xmm1,-0x8(%rbp)
movsd  %xmm2,-0x20(%rbp)
movsd  %xmm3,-0x18(%rbp)
mov    %edi,-0x24(%rbp)
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movsd  %xmm1,-0x38(%rbp)
movsd  %xmm0,-0x30(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
call   1040 <carg@plt>
movsd  %xmm0,-0x2e0(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
call   1030 <atan2@plt>
movaps %xmm0,%xmm1
movsd  -0x2e0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jne    11cc <test3+0x7c>
jp     11cc <test3+0x7c>
jmp    11d3 <test3+0x83>
mov    $0x0,%al
call   1070 <link_error@plt>
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movsd  %xmm1,-0x48(%rbp)
movsd  %xmm0,-0x40(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm1
call   1050 <ccos@plt>
movsd  %xmm0,-0x2f0(%rbp)
ff
movsd  %xmm1,-0x2e8(%rbp)
ff
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm1,-0x58(%rbp)
movsd  %xmm0,-0x50(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
call   1050 <ccos@plt>
movsd  -0x2f0(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movaps %xmm1,%xmm0
movsd  -0x2e8(%rbp),%xmm1
ff
ucomisd %xmm3,%xmm2
setne  %al
setp   %cl
or     %cl,%al
ucomisd %xmm0,%xmm1
setne  %cl
setp   %dl
or     %dl,%cl
or     %cl,%al
test   $0x1,%al
jne    1294 <test3+0x144>
jmp    129b <test3+0x14b>
mov    $0x0,%al
call   1070 <link_error@plt>
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movsd  %xmm1,-0x68(%rbp)
movsd  %xmm0,-0x60(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm1
call   1060 <ctan@plt>
movsd  %xmm0,-0x78(%rbp)
movsd  %xmm1,-0x70(%rbp)
movsd  -0x78(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm1
call   1050 <ccos@plt>
movsd  %xmm0,-0x300(%rbp)
ff
movsd  %xmm1,-0x2f8(%rbp)
ff
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm1,-0x88(%rbp)
ff
movsd  %xmm0,-0x80(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x80(%rbp),%xmm1
call   1060 <ctan@plt>
movsd  %xmm0,-0x98(%rbp)
ff
movsd  %xmm1,-0x90(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  -0x300(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movaps %xmm1,%xmm0
movsd  -0x2f8(%rbp),%xmm1
ff
ucomisd %xmm3,%xmm2
setne  %al
setp   %cl
or     %cl,%al
ucomisd %xmm0,%xmm1
setne  %cl
setp   %dl
or     %dl,%cl
or     %cl,%al
test   $0x1,%al
jne    13a0 <test3+0x250>
jmp    13a7 <test3+0x257>
mov    $0x0,%al
call   1070 <link_error@plt>
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm3
movsd  -0x18(%rbp),%xmm2
subsd  %xmm3,%xmm1
subsd  %xmm2,%xmm0
movsd  %xmm1,-0xa8(%rbp)
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm1
ff
call   1060 <ctan@plt>
movsd  %xmm0,-0x310(%rbp)
ff
movsd  %xmm1,-0x308(%rbp)
ff
movsd  -0x20(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm3
movsd  -0x8(%rbp),%xmm2
subsd  %xmm3,%xmm1
subsd  %xmm2,%xmm0
movsd  %xmm1,-0xb8(%rbp)
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm1
ff
call   1060 <ctan@plt>
movsd  -0x310(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movaps %xmm1,%xmm0
movsd  -0x308(%rbp),%xmm1
ff
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
ucomisd %xmm3,%xmm2
setne  %al
setp   %cl
or     %cl,%al
ucomisd %xmm0,%xmm1
setne  %cl
setp   %dl
or     %dl,%cl
or     %cl,%al
test   $0x1,%al
jne    14a4 <test3+0x354>
jmp    14ab <test3+0x35b>
mov    $0x0,%al
call   1070 <link_error@plt>
movsd  -0x10(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
call   2f10 <__divdc3>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  %xmm1,-0xc0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  %xmm0,-0x320(%rbp)
ff
movsd  %xmm1,-0x318(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  -0x20(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
call   2f10 <__divdc3>
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  %xmm1,-0xd0(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  -0xd0(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  -0x320(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movaps %xmm1,%xmm0
movsd  -0x318(%rbp),%xmm1
ff
ucomisd %xmm3,%xmm2
setne  %al
setp   %cl
or     %cl,%al
ucomisd %xmm0,%xmm1
setne  %cl
setp   %dl
or     %dl,%cl
or     %cl,%al
test   $0x1,%al
jne    15a2 <test3+0x452>
jmp    15a9 <test3+0x459>
mov    $0x0,%al
call   1070 <link_error@plt>
movsd  -0x10(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
call   2f10 <__divdc3>
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  %xmm1,-0xe0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  -0xe0(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  %xmm0,-0x330(%rbp)
ff
movsd  %xmm1,-0x328(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
call   2f10 <__divdc3>
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  %xmm1,-0xf0(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
movsd  -0xf0(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  -0x330(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movaps %xmm1,%xmm0
movsd  -0x328(%rbp),%xmm1
ff
ucomisd %xmm3,%xmm2
setne  %al
setp   %cl
or     %cl,%al
ucomisd %xmm0,%xmm1
setne  %cl
setp   %dl
or     %dl,%cl
or     %cl,%al
test   $0x1,%al
jne    16a0 <test3+0x550>
jmp    16a7 <test3+0x557>
mov    $0x0,%al
call   1070 <link_error@plt>
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x360(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x358(%rbp)
ff
movsd  -0x20(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
movsd  %xmm1,-0x108(%rbp)
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  -0x100(%rbp),%xmm1
ff
call   1060 <ctan@plt>
movaps %xmm0,%xmm2
movsd  -0x360(%rbp),%xmm0
ff
movaps %xmm1,%xmm3
movsd  -0x358(%rbp),%xmm1
ff
call   2f10 <__divdc3>
movsd  %xmm0,-0x118(%rbp)
ff
movsd  %xmm1,-0x110(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  %xmm0,-0x340(%rbp)
ff
movsd  %xmm1,-0x338(%rbp)
ff
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  %xmm1,-0x350(%rbp)
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x348(%rbp)
ff
movsd  -0x20(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm1,-0x128(%rbp)
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm1
ff
call   1060 <ctan@plt>
movaps %xmm0,%xmm2
movsd  -0x350(%rbp),%xmm0
ff
movaps %xmm1,%xmm3
movsd  -0x348(%rbp),%xmm1
ff
call   2f10 <__divdc3>
movsd  %xmm0,-0x138(%rbp)
ff
movsd  %xmm1,-0x130(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movsd  -0x130(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  -0x340(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movaps %xmm1,%xmm0
movsd  -0x338(%rbp),%xmm1
ff
ucomisd %xmm3,%xmm2
setne  %al
setp   %cl
or     %cl,%al
ucomisd %xmm0,%xmm1
setne  %cl
setp   %dl
or     %dl,%cl
or     %cl,%al
test   $0x1,%al
jne    1862 <test3+0x712>
jmp    1869 <test3+0x719>
mov    $0x0,%al
call   1070 <link_error@plt>
movsd  -0x10(%rbp),%xmm1
movsd  %xmm1,-0x3a0(%rbp)
ff
movsd  -0x8(%rbp),%xmm2
movsd  %xmm2,-0x398(%rbp)
ff
movsd  -0x20(%rbp),%xmm4
movsd  %xmm4,-0x390(%rbp)
ff
movsd  -0x18(%rbp),%xmm5
movsd  %xmm5,-0x388(%rbp)
ff
movaps %xmm1,%xmm0
mulsd  %xmm4,%xmm0
movaps %xmm2,%xmm3
mulsd  %xmm5,%xmm3
mulsd  %xmm5,%xmm1
mulsd  %xmm4,%xmm2
subsd  %xmm3,%xmm0
movsd  %xmm0,-0x380(%rbp)
ff
addsd  %xmm2,%xmm1
movsd  %xmm1,-0x378(%rbp)
ff
ucomisd %xmm0,%xmm0
movsd  %xmm0,-0x370(%rbp)
ff
movsd  %xmm1,-0x368(%rbp)
ff
jnp    1944 <test3+0x7f4>
movsd  -0x378(%rbp),%xmm1
ff
movsd  -0x380(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm1
movsd  %xmm0,-0x370(%rbp)
movsd  %xmm1,-0x368(%rbp)
ff
jnp    1944 <test3+0x7f4>
movsd  -0x388(%rbp),%xmm3
ff
movsd  -0x390(%rbp),%xmm2
ff
movsd  -0x398(%rbp),%xmm1
ff
movsd  -0x3a0(%rbp),%xmm0
ff
call   2c50 <__muldc3>
movsd  %xmm0,-0x370(%rbp)
ff
movsd  %xmm1,-0x368(%rbp)
ff
movsd  -0x370(%rbp),%xmm1
ff
movsd  -0x368(%rbp),%xmm0
ff
movsd  %xmm1,-0x148(%rbp)
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  %xmm0,-0x3f0(%rbp)
ff
movsd  %xmm1,-0x3e8(%rbp)
ff
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  %xmm1,-0x3e0(%rbp)
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
movsd  %xmm2,-0x3d8(%rbp)
ff
movsd  -0x20(%rbp),%xmm4
movsd  %xmm4,-0x3d0(%rbp)
ff
movsd  -0x18(%rbp),%xmm5
movsd  %xmm5,-0x3c8(%rbp)
ff
movaps %xmm1,%xmm0
mulsd  %xmm4,%xmm0
movaps %xmm2,%xmm3
mulsd  %xmm5,%xmm3
mulsd  %xmm5,%xmm1
mulsd  %xmm4,%xmm2
subsd  %xmm3,%xmm0
movsd  %xmm0,-0x3c0(%rbp)
ff
addsd  %xmm2,%xmm1
movsd  %xmm1,-0x3b8(%rbp)
ff
ucomisd %xmm0,%xmm0
movsd  %xmm0,-0x3b0(%rbp)
ff
movsd  %xmm1,-0x3a8(%rbp)
ff
jnp    1a92 <test3+0x942>
movsd  -0x3b8(%rbp),%xmm1
ff
movsd  -0x3c0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm1
movsd  %xmm0,-0x3b0(%rbp)
ff
movsd  %xmm1,-0x3a8(%rbp)
ff
jnp    1a92 <test3+0x942>
movsd  -0x3c8(%rbp),%xmm3
ff
movsd  -0x3d0(%rbp),%xmm2
ff
movsd  -0x3d8(%rbp),%xmm1
ff
movsd  -0x3e0(%rbp),%xmm0
ff
call   2c50 <__muldc3>
movsd  %xmm0,-0x3b0(%rbp)
ff
movsd  %xmm1,-0x3a8(%rbp)
ff
movsd  -0x3b0(%rbp),%xmm1
ff
movsd  -0x3a8(%rbp),%xmm0
ff
movsd  %xmm1,-0x158(%rbp)
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  -0x3f0(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x3e8(%rbp),%xmm0
ff
ucomisd %xmm3,%xmm2
setne  %al
setp   %cl
or     %cl,%al
ucomisd %xmm1,%xmm0
setne  %cl
setp   %dl
or     %dl,%cl
or     %cl,%al
test   $0x1,%al
jne    1b01 <test3+0x9b1>
jmp    1b08 <test3+0x9b8>
mov    $0x0,%al
call   1070 <link_error@plt>
movsd  -0x10(%rbp),%xmm1
movsd  %xmm1,-0x430(%rbp)
ff
movsd  -0x8(%rbp),%xmm2
movsd  %xmm2,-0x428(%rbp)
ff
movsd  -0x20(%rbp),%xmm4
movsd  %xmm4,-0x420(%rbp)
ff
movsd  -0x18(%rbp),%xmm5
movsd  %xmm5,-0x418(%rbp)
ff
movaps %xmm1,%xmm0
mulsd  %xmm4,%xmm0
movaps %xmm2,%xmm3
mulsd  %xmm5,%xmm3
mulsd  %xmm5,%xmm1
mulsd  %xmm4,%xmm2
subsd  %xmm3,%xmm0
movsd  %xmm0,-0x410(%rbp)
ff
addsd  %xmm2,%xmm1
movsd  %xmm1,-0x408(%rbp)
ff
ucomisd %xmm0,%xmm0
movsd  %xmm0,-0x400(%rbp)
ff
movsd  %xmm1,-0x3f8(%rbp)
ff
jnp    1be3 <test3+0xa93>
movsd  -0x408(%rbp),%xmm1
ff
movsd  -0x410(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm1
movsd  %xmm0,-0x400(%rbp)
ff
movsd  %xmm1,-0x3f8(%rbp)
ff
jnp    1be3 <test3+0xa93>
movsd  -0x418(%rbp),%xmm3
ff
movsd  -0x420(%rbp),%xmm2
ff
movsd  -0x428(%rbp),%xmm1
ff
movsd  -0x430(%rbp),%xmm0
ff
call   2c50 <__muldc3>
movsd  %xmm0,-0x400(%rbp)
ff
movsd  %xmm1,-0x3f8(%rbp)
ff
movsd  -0x400(%rbp),%xmm1
ff
movsd  -0x3f8(%rbp),%xmm0
ff
movsd  %xmm1,-0x168(%rbp)
ff
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  %xmm0,-0x480(%rbp)
ff
movsd  %xmm1,-0x478(%rbp)
ff
movsd  -0x10(%rbp),%xmm1
movsd  %xmm1,-0x470(%rbp)
ff
movsd  -0x8(%rbp),%xmm2
movsd  %xmm2,-0x468(%rbp)
ff
movsd  -0x20(%rbp),%xmm3
movsd  -0x18(%rbp),%xmm0
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm4
movsd  %xmm4,-0x460(%rbp)
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm5
movsd  %xmm5,-0x458(%rbp)
ff
movaps %xmm1,%xmm0
mulsd  %xmm4,%xmm0
movaps %xmm2,%xmm3
mulsd  %xmm5,%xmm3
mulsd  %xmm5,%xmm1
mulsd  %xmm4,%xmm2
subsd  %xmm3,%xmm0
movsd  %xmm0,-0x450(%rbp)
ff
addsd  %xmm2,%xmm1
movsd  %xmm1,-0x448(%rbp)
ff
ucomisd %xmm0,%xmm0
movsd  %xmm0,-0x440(%rbp)
ff
movsd  %xmm1,-0x438(%rbp)
ff
jnp    1d31 <test3+0xbe1>
movsd  -0x448(%rbp),%xmm1
ff
movsd  -0x450(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm1
movsd  %xmm0,-0x440(%rbp)
ff
movsd  %xmm1,-0x438(%rbp)
ff
jnp    1d31 <test3+0xbe1>
movsd  -0x458(%rbp),%xmm3
ff
movsd  -0x460(%rbp),%xmm2
ff
movsd  -0x468(%rbp),%xmm1
ff
movsd  -0x470(%rbp),%xmm0
ff
call   2c50 <__muldc3>
movsd  %xmm0,-0x440(%rbp)
ff
movsd  %xmm1,-0x438(%rbp)
ff
movsd  -0x440(%rbp),%xmm1
ff
movsd  -0x438(%rbp),%xmm0
ff
movsd  %xmm1,-0x178(%rbp)
ff
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x178(%rbp),%xmm0
ff
movsd  -0x170(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  -0x480(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x478(%rbp),%xmm0
ff
ucomisd %xmm3,%xmm2
setne  %al
setp   %cl
or     %cl,%al
ucomisd %xmm1,%xmm0
setne  %cl
setp   %dl
or     %dl,%cl
or     %cl,%al
test   $0x1,%al
jne    1da0 <test3+0xc50>
jmp    1da7 <test3+0xc57>
mov    $0x0,%al
call   1070 <link_error@plt>
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movsd  %xmm1,-0x188(%rbp)
ff
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
movsd  -0x180(%rbp),%xmm1
ff
call   1060 <ctan@plt>
movsd  %xmm0,-0x4c0(%rbp)
ff
movaps %xmm1,%xmm2
movsd  -0x4c0(%rbp),%xmm1
ff
movsd  %xmm2,-0x4b8(%rbp)
ff
movsd  -0x20(%rbp),%xmm4
movsd  %xmm4,-0x4b0(%rbp)
ff
movsd  -0x18(%rbp),%xmm5
movsd  %xmm5,-0x4a8(%rbp)
ff
movaps %xmm1,%xmm0
mulsd  %xmm4,%xmm0
movaps %xmm2,%xmm3
mulsd  %xmm5,%xmm3
mulsd  %xmm5,%xmm1
mulsd  %xmm4,%xmm2
subsd  %xmm3,%xmm0
movsd  %xmm0,-0x4a0(%rbp)
ff
addsd  %xmm2,%xmm1
movsd  %xmm1,-0x498(%rbp)
ff
ucomisd %xmm0,%xmm0
movsd  %xmm0,-0x490(%rbp)
ff
movsd  %xmm1,-0x488(%rbp)
ff
jnp    1eb2 <test3+0xd62>
movsd  -0x498(%rbp),%xmm1
ff
movsd  -0x4a0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm1
movsd  %xmm0,-0x490(%rbp)
ff
movsd  %xmm1,-0x488(%rbp)
ff
jnp    1eb2 <test3+0xd62>
movsd  -0x4a8(%rbp),%xmm3
ff
movsd  -0x4b0(%rbp),%xmm2
ff
movsd  -0x4b8(%rbp),%xmm1
ff
movsd  -0x4c0(%rbp),%xmm0
ff
call   2c50 <__muldc3>
movsd  %xmm0,-0x490(%rbp)
ff
movsd  %xmm1,-0x488(%rbp)
ff
movsd  -0x490(%rbp),%xmm1
ff
movsd  -0x488(%rbp),%xmm0
ff
movsd  %xmm1,-0x198(%rbp)
ff
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0x198(%rbp),%xmm0
ff
movsd  -0x190(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  %xmm0,-0x510(%rbp)
ff
movsd  %xmm1,-0x508(%rbp)
ff
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm1,-0x1a8(%rbp)
ff
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0x1a8(%rbp),%xmm0
ff
movsd  -0x1a0(%rbp),%xmm1
ff
call   1060 <ctan@plt>
movsd  %xmm0,-0x500(%rbp)
ff
movaps %xmm1,%xmm2
movsd  -0x500(%rbp),%xmm1
ff
movsd  %xmm2,-0x4f8(%rbp)
ff
movsd  -0x20(%rbp),%xmm3
movsd  -0x18(%rbp),%xmm0
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm4
movsd  %xmm4,-0x4f0(%rbp)
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm5
movsd  %xmm5,-0x4e8(%rbp)
ff
movaps %xmm1,%xmm0
mulsd  %xmm4,%xmm0
movaps %xmm2,%xmm3
mulsd  %xmm5,%xmm3
mulsd  %xmm5,%xmm1
mulsd  %xmm4,%xmm2
subsd  %xmm3,%xmm0
movsd  %xmm0,-0x4e0(%rbp)
ff
addsd  %xmm2,%xmm1
movsd  %xmm1,-0x4d8(%rbp)
ff
ucomisd %xmm0,%xmm0
movsd  %xmm0,-0x4d0(%rbp)
ff
movsd  %xmm1,-0x4c8(%rbp)
ff
jnp    205e <test3+0xf0e>
movsd  -0x4d8(%rbp),%xmm1
movsd  -0x4e0(%rbp),%xmm0
ucomisd %xmm1,%xmm1
movsd  %xmm0,-0x4d0(%rbp)
ff
movsd  %xmm1,-0x4c8(%rbp)
ff
jnp    205e <test3+0xf0e>
movsd  -0x4e8(%rbp),%xmm3
ff
movsd  -0x4f0(%rbp),%xmm2
ff
movsd  -0x4f8(%rbp),%xmm1
ff
movsd  -0x500(%rbp),%xmm0
ff
call   2c50 <__muldc3>
movsd  %xmm0,-0x4d0(%rbp)
ff
movsd  %xmm1,-0x4c8(%rbp)
ff
movsd  -0x4d0(%rbp),%xmm1
ff
movsd  -0x4c8(%rbp),%xmm0
ff
movsd  %xmm1,-0x1b8(%rbp)
ff
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0x1b8(%rbp),%xmm0
ff
movsd  -0x1b0(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  -0x510(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x508(%rbp),%xmm0
ff
ucomisd %xmm3,%xmm2
setne  %al
setp   %cl
or     %cl,%al
ucomisd %xmm1,%xmm0
setne  %cl
setp   %dl
or     %dl,%cl
or     %cl,%al
test   $0x1,%al
jne    20cd <test3+0xf7d>
jmp    20d4 <test3+0xf84>
mov    $0x0,%al
call   1070 <link_error@plt>
movsd  -0x10(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
call   2f10 <__divdc3>
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  %xmm1,-0x1c0(%rbp)
ff
movsd  -0x1c8(%rbp),%xmm0
ff
movsd  -0x1c0(%rbp),%xmm1
ff
call   1060 <ctan@plt>
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  %xmm1,-0x1d0(%rbp)
ff
movsd  -0x1d8(%rbp),%xmm0
ff
movsd  -0x1d0(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  %xmm0,-0x520(%rbp)
ff
movsd  %xmm1,-0x518(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
call   2f10 <__divdc3>
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  %xmm1,-0x1e0(%rbp)
ff
movsd  -0x1e8(%rbp),%xmm0
ff
movsd  -0x1e0(%rbp),%xmm1
ff
call   1060 <ctan@plt>
movsd  %xmm0,-0x528(%rbp)
ff
movaps %xmm1,%xmm0
movsd  -0x528(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm1,-0x1f8(%rbp)
ff
movsd  %xmm0,-0x1f0(%rbp)
ff
movsd  -0x1f8(%rbp),%xmm0
ff
movsd  -0x1f0(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  -0x520(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movaps %xmm1,%xmm0
movsd  -0x518(%rbp),%xmm1
ff
ucomisd %xmm3,%xmm2
setne  %al
setp   %cl
or     %cl,%al
ucomisd %xmm0,%xmm1
setne  %cl
setp   %dl
or     %dl,%cl
or     %cl,%al
test   $0x1,%al
jne    2256 <test3+0x1106>
jmp    225d <test3+0x110d>
mov    $0x0,%al
call   1070 <link_error@plt>
cmpl   $0x0,-0x24(%rbp)
je     2286 <test3+0x1136>
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movsd  %xmm1,-0x538(%rbp)
ff
movsd  %xmm0,-0x530(%rbp)
ff
jmp    22a0 <test3+0x1150>
movsd  -0x20(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
movsd  %xmm1,-0x538(%rbp)
ff
movsd  %xmm0,-0x530(%rbp)
ff
movsd  -0x538(%rbp),%xmm1
ff
movsd  -0x530(%rbp),%xmm0
ff
movsd  %xmm1,-0x208(%rbp)
ff
movsd  %xmm0,-0x200(%rbp)
ff
movsd  -0x208(%rbp),%xmm0
ff
movsd  -0x200(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  %xmm0,-0x548(%rbp)
ff
movsd  %xmm1,-0x540(%rbp)
ff
cmpl   $0x0,-0x24(%rbp)
je     233c <test3+0x11ec>
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm1,-0x558(%rbp)
ff
movsd  %xmm0,-0x550(%rbp)
ff
jmp    2356 <test3+0x1206>
movsd  -0x20(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
movsd  %xmm1,-0x558(%rbp)
ff
movsd  %xmm0,-0x550(%rbp)
ff
movsd  -0x558(%rbp),%xmm1
ff
movsd  -0x550(%rbp),%xmm0
ff
movsd  %xmm1,-0x218(%rbp)
ff
movsd  %xmm0,-0x210(%rbp)
ff
movsd  -0x218(%rbp),%xmm0
ff
movsd  -0x210(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  -0x548(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x540(%rbp),%xmm0
ff
ucomisd %xmm3,%xmm2
setne  %al
setp   %cl
or     %cl,%al
ucomisd %xmm1,%xmm0
setne  %cl
setp   %dl
or     %dl,%cl
or     %cl,%al
test   $0x1,%al
jne    23c5 <test3+0x1275>
jmp    23cc <test3+0x127c>
mov    $0x0,%al
call   1070 <link_error@plt>
cmpl   $0x0,-0x24(%rbp)
je     23f5 <test3+0x12a5>
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movsd  %xmm1,-0x568(%rbp)
ff
movsd  %xmm0,-0x560(%rbp)
ff
jmp    240f <test3+0x12bf>
movsd  -0x20(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
movsd  %xmm1,-0x568(%rbp)
ff
movsd  %xmm0,-0x560(%rbp)
ff
movsd  -0x568(%rbp),%xmm1
ff
movsd  -0x560(%rbp),%xmm0
ff
movsd  %xmm1,-0x228(%rbp)
ff
movsd  %xmm0,-0x220(%rbp)
ff
movsd  -0x228(%rbp),%xmm0
ff
movsd  -0x220(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  %xmm0,-0x578(%rbp)
ff
movsd  %xmm1,-0x570(%rbp)
ff
cmpl   $0x0,-0x24(%rbp)
je     247d <test3+0x132d>
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movsd  %xmm1,-0x588(%rbp)
ff
movsd  %xmm0,-0x580(%rbp)
ff
jmp    24c5 <test3+0x1375>
movsd  -0x20(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm1,-0x588(%rbp)
ff
movsd  %xmm0,-0x580(%rbp)
ff
movsd  -0x588(%rbp),%xmm1
ff
movsd  -0x580(%rbp),%xmm0
ff
movsd  %xmm1,-0x238(%rbp)
ff
movsd  %xmm0,-0x230(%rbp)
ff
movsd  -0x238(%rbp),%xmm0
ff
movsd  -0x230(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  -0x578(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x570(%rbp),%xmm0
ff
ucomisd %xmm3,%xmm2
setne  %al
setp   %cl
or     %cl,%al
ucomisd %xmm1,%xmm0
setne  %cl
setp   %dl
or     %dl,%cl
or     %cl,%al
test   $0x1,%al
jne    2534 <test3+0x13e4>
jmp    253b <test3+0x13eb>
mov    $0x0,%al
call   1070 <link_error@plt>
cmpl   $0x0,-0x24(%rbp)
je     2564 <test3+0x1414>
movsd  -0x10(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  %xmm0,-0x598(%rbp)
ff
movsd  %xmm1,-0x590(%rbp)
ff
jmp    25b2 <test3+0x1462>
movsd  -0x20(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
movsd  -0x8(%rbp),%xmm3
call   2f10 <__divdc3>
movsd  %xmm0,-0x248(%rbp)
ff
movsd  %xmm1,-0x240(%rbp)
ff
movsd  -0x248(%rbp),%xmm0
ff
movsd  -0x240(%rbp),%xmm1
ff
call   1060 <ctan@plt>
movsd  %xmm0,-0x598(%rbp)
ff
movsd  %xmm1,-0x590(%rbp)
ff
movsd  -0x598(%rbp),%xmm1
ff
movsd  -0x590(%rbp),%xmm0
ff
movsd  %xmm1,-0x258(%rbp)
ff
movsd  %xmm0,-0x250(%rbp)
ff
movsd  -0x258(%rbp),%xmm0
ff
movsd  -0x250(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  %xmm0,-0x5a8(%rbp)
ff
movsd  %xmm1,-0x5a0(%rbp)
ff
cmpl   $0x0,-0x24(%rbp)
je     264e <test3+0x14fe>
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm1,-0x5b8(%rbp)
ff
movsd  %xmm0,-0x5b0(%rbp)
ff
jmp    270b <test3+0x15bb>
movsd  -0x20(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  -0x10(%rbp),%xmm2
movsd  -0x8(%rbp),%xmm3
call   2f10 <__divdc3>
movsd  %xmm0,-0x268(%rbp)
ff
movsd  %xmm1,-0x260(%rbp)
ff
movsd  -0x268(%rbp),%xmm0
ff
movsd  -0x260(%rbp),%xmm1
ff
call   1060 <ctan@plt>
movsd  %xmm0,-0x5c0(%rbp)
ff
movaps %xmm1,%xmm0
movsd  -0x5c0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm1,-0x5b8(%rbp)
ff
movsd  %xmm0,-0x5b0(%rbp)
ff
movsd  -0x5b8(%rbp),%xmm1
ff
movsd  -0x5b0(%rbp),%xmm0
ff
movsd  %xmm1,-0x278(%rbp)
ff
movsd  %xmm0,-0x270(%rbp)
ff
movsd  -0x278(%rbp),%xmm0
ff
movsd  -0x270(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  -0x5a8(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x5a0(%rbp),%xmm0
ff
ucomisd %xmm3,%xmm2
setne  %al
setp   %cl
or     %cl,%al
ucomisd %xmm1,%xmm0
setne  %cl
setp   %dl
or     %dl,%cl
or     %cl,%al
test   $0x1,%al
jne    277a <test3+0x162a>
jmp    2781 <test3+0x1631>
mov    $0x0,%al
call   1070 <link_error@plt>
movsd  -0x10(%rbp),%xmm2
movsd  -0x8(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x10(%rbp),%xmm3
movsd  -0x8(%rbp),%xmm1
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
ucomisd %xmm3,%xmm2
setne  %al
setp   %cl
or     %cl,%al
ucomisd %xmm1,%xmm0
setne  %cl
setp   %dl
or     %dl,%cl
or     %cl,%al
test   $0x1,%al
jne    2846 <test3+0x16f6>
jmp    284d <test3+0x16fd>
mov    $0x0,%al
call   1070 <link_error@plt>
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm1,-0x288(%rbp)
ff
movsd  %xmm0,-0x280(%rbp)
ff
movsd  -0x288(%rbp),%xmm0
ff
movsd  -0x280(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  %xmm0,-0x5d0(%rbp)
ff
movsd  %xmm1,-0x5c8(%rbp)
ff
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm1,-0x298(%rbp)
ff
movsd  %xmm0,-0x290(%rbp)
ff
movsd  -0x298(%rbp),%xmm0
ff
movsd  -0x290(%rbp),%xmm1
ff
call   1050 <ccos@plt>
movsd  -0x5d0(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movaps %xmm1,%xmm0
movsd  -0x5c8(%rbp),%xmm1
ff
ucomisd %xmm3,%xmm2
setne  %al
setp   %cl
or     %cl,%al
ucomisd %xmm0,%xmm1
setne  %cl
setp   %dl
or     %dl,%cl
or     %cl,%al
test   $0x1,%al
jne    2982 <test3+0x1832>
jmp    2989 <test3+0x1839>
mov    $0x0,%al
call   1070 <link_error@plt>
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm3
movsd  -0x18(%rbp),%xmm2
subsd  %xmm3,%xmm1
subsd  %xmm2,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm1,-0x2a8(%rbp)
ff
movsd  %xmm0,-0x2a0(%rbp)
ff
movsd  -0x2a8(%rbp),%xmm0
ff
movsd  -0x2a0(%rbp),%xmm1
ff
call   1060 <ctan@plt>
movsd  %xmm0,-0x5e0(%rbp)
ff
movsd  %xmm1,-0x5d8(%rbp)
ff
movsd  -0x20(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm3
movsd  -0x8(%rbp),%xmm2
subsd  %xmm3,%xmm1
subsd  %xmm2,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm1,-0x2b8(%rbp)
ff
movsd  %xmm0,-0x2b0(%rbp)
ff
movsd  -0x2b8(%rbp),%xmm0
ff
movsd  -0x2b0(%rbp),%xmm1
ff
call   1060 <ctan@plt>
movsd  -0x5e0(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movaps %xmm1,%xmm0
movsd  -0x5d8(%rbp),%xmm1
ff
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
ucomisd %xmm3,%xmm2
setne  %al
setp   %cl
or     %cl,%al
ucomisd %xmm0,%xmm1
setne  %cl
setp   %dl
or     %dl,%cl
or     %cl,%al
test   $0x1,%al
jne    2ab4 <test3+0x1964>
jmp    2abb <test3+0x196b>
mov    $0x0,%al
call   1070 <link_error@plt>
movsd  -0x10(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
call   2f10 <__divdc3>
movsd  %xmm0,-0x600(%rbp)
ff
movaps %xmm1,%xmm0
movsd  -0x600(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm1,-0x2c8(%rbp)
ff
movsd  %xmm0,-0x2c0(%rbp)
ff
movsd  -0x2c8(%rbp),%xmm0
ff
movsd  -0x2c0(%rbp),%xmm1
ff
call   1060 <ctan@plt>
movsd  %xmm0,-0x5f0(%rbp)
ff
movsd  %xmm1,-0x5e8(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
call   2f10 <__divdc3>
movsd  %xmm0,-0x5f8(%rbp)
ff
movaps %xmm1,%xmm0
movsd  -0x5f8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm1,-0x2d8(%rbp)
ff
movsd  %xmm0,-0x2d0(%rbp)
ff
movsd  -0x2d8(%rbp),%xmm0
ff
movsd  -0x2d0(%rbp),%xmm1
ff
call   1060 <ctan@plt>
movsd  -0x5f0(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movaps %xmm1,%xmm0
movsd  -0x5e8(%rbp),%xmm1
ff
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
ucomisd %xmm3,%xmm2
setne  %al
setp   %cl
or     %cl,%al
ucomisd %xmm0,%xmm1
setne  %cl
setp   %dl
or     %dl,%cl
or     %cl,%al
test   $0x1,%al
jne    2c34 <test3+0x1ae4>
jmp    2c3b <test3+0x1aeb>
mov    $0x0,%al
call   1070 <link_error@plt>
add    $0x600,%rsp
pop    %rbp
ret
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax

x86 assembly (clang, -O2):
<test3>:
push   %rbx
sub    $0x130,%rsp
mov    %edi,%ebx
movaps %xmm3,0x40(%rsp)
movaps %xmm2,0x20(%rsp)
movaps %xmm1,0x10(%rsp)
movaps %xmm0,(%rsp)
call   1040 <carg@plt>
movsd  %xmm0,0x80(%rsp)
movapd 0x10(%rsp),%xmm0
movaps (%rsp),%xmm1
call   1030 <atan2@plt>
movsd  0x80(%rsp),%xmm1
ucomisd %xmm0,%xmm1
jne    119b <test3+0x4b>
jnp    11a2 <test3+0x52>
xor    %eax,%eax
call   1070 <link_error@plt>
movaps (%rsp),%xmm0
movaps 0x10(%rsp),%xmm1
call   1050 <ccos@plt>
movsd  %xmm0,0x60(%rsp)
movsd  %xmm1,0x70(%rsp)
movapd 0x1e3c(%rip),%xmm2
movapd (%rsp),%xmm0
xorpd  %xmm2,%xmm0
movapd 0x10(%rsp),%xmm1
xorpd  %xmm2,%xmm1
movapd %xmm0,0x90(%rsp)
movapd %xmm1,0x80(%rsp)
call   1050 <ccos@plt>
movsd  0x60(%rsp),%xmm2
ucomisd %xmm0,%xmm2
jne    120a <test3+0xba>
jp     120a <test3+0xba>
movsd  0x70(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    120a <test3+0xba>
jnp    1211 <test3+0xc1>
xor    %eax,%eax
call   1070 <link_error@plt>
movaps (%rsp),%xmm0
movaps 0x10(%rsp),%xmm1
call   1060 <ctan@plt>
call   1050 <ccos@plt>
movsd  %xmm0,0x60(%rsp)
movsd  %xmm1,0x70(%rsp)
movapd 0x90(%rsp),%xmm0
movapd 0x80(%rsp),%xmm1
call   1060 <ctan@plt>
call   1050 <ccos@plt>
movsd  0x60(%rsp),%xmm2
ucomisd %xmm0,%xmm2
jne    1268 <test3+0x118>
jp     1268 <test3+0x118>
movsd  0x70(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    1268 <test3+0x118>
jnp    126f <test3+0x11f>
xor    %eax,%eax
call   1070 <link_error@plt>
movapd (%rsp),%xmm0
subsd  0x20(%rsp),%xmm0
movapd 0x10(%rsp),%xmm1
subsd  0x40(%rsp),%xmm1
movapd %xmm0,0x120(%rsp)
movapd %xmm1,0x100(%rsp)
call   1060 <ctan@plt>
movsd  %xmm0,0x60(%rsp)
movsd  %xmm1,0x70(%rsp)
movapd 0x20(%rsp),%xmm0
subsd  (%rsp),%xmm0
movapd 0x40(%rsp),%xmm1
subsd  0x10(%rsp),%xmm1
movapd %xmm0,0x110(%rsp)
movapd %xmm1,0xf0(%rsp)
call   1060 <ctan@plt>
movapd 0x1d21(%rip),%xmm2
xorpd  %xmm2,%xmm0
movsd  0x60(%rsp),%xmm3
ucomisd %xmm0,%xmm3
jne    1303 <test3+0x1b3>
jp     1303 <test3+0x1b3>
xorpd  %xmm2,%xmm1
movsd  0x70(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    1303 <test3+0x1b3>
jnp    130a <test3+0x1ba>
xor    %eax,%eax
call   1070 <link_error@plt>
movaps (%rsp),%xmm0
movaps 0x10(%rsp),%xmm1
movaps 0x20(%rsp),%xmm2
movaps 0x40(%rsp),%xmm3
call   1eb0 <__divdc3>
call   1050 <ccos@plt>
movsd  %xmm0,0x60(%rsp)
movsd  %xmm1,0x70(%rsp)
movapd 0x90(%rsp),%xmm0
movapd 0x80(%rsp),%xmm1
movaps 0x20(%rsp),%xmm2
movaps 0x40(%rsp),%xmm3
call   1eb0 <__divdc3>
call   1050 <ccos@plt>
movsd  0x60(%rsp),%xmm2
ucomisd %xmm0,%xmm2
jne    1375 <test3+0x225>
jp     1375 <test3+0x225>
movsd  0x70(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    1375 <test3+0x225>
jnp    137c <test3+0x22c>
xor    %eax,%eax
call   1070 <link_error@plt>
movaps (%rsp),%xmm0
movaps 0x10(%rsp),%xmm1
movaps 0x20(%rsp),%xmm2
movaps 0x40(%rsp),%xmm3
call   1eb0 <__divdc3>
call   1050 <ccos@plt>
movsd  %xmm0,0x30(%rsp)
movsd  %xmm1,0x50(%rsp)
movaps 0x20(%rsp),%xmm2
movaps 0x1c4f(%rip),%xmm0
xorps  %xmm0,%xmm2
movaps 0x40(%rsp),%xmm3
xorps  %xmm0,%xmm3
movapd (%rsp),%xmm0
movapd 0x10(%rsp),%xmm1
movaps %xmm2,0x60(%rsp)
movaps %xmm3,0x70(%rsp)
call   1eb0 <__divdc3>
call   1050 <ccos@plt>
movsd  0x30(%rsp),%xmm2
ucomisd %xmm0,%xmm2
jne    13f7 <test3+0x2a7>
jp     13f7 <test3+0x2a7>
movsd  0x50(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    13f7 <test3+0x2a7>
jnp    13fe <test3+0x2ae>
xor    %eax,%eax
call   1070 <link_error@plt>
movaps 0x20(%rsp),%xmm0
movaps 0x40(%rsp),%xmm1
call   1060 <ctan@plt>
movaps %xmm0,%xmm2
movaps %xmm1,%xmm3
movaps (%rsp),%xmm0
movaps 0x10(%rsp),%xmm1
call   1eb0 <__divdc3>
call   1050 <ccos@plt>
movsd  %xmm0,0x30(%rsp)
movsd  %xmm1,0x50(%rsp)
movaps 0x60(%rsp),%xmm0
movaps 0x70(%rsp),%xmm1
call   1060 <ctan@plt>
movaps %xmm0,%xmm2
movaps %xmm1,%xmm3
movapd 0x90(%rsp),%xmm0
movapd 0x80(%rsp),%xmm1
call   1eb0 <__divdc3>
call   1050 <ccos@plt>
movsd  0x30(%rsp),%xmm2
ucomisd %xmm0,%xmm2
jne    147f <test3+0x32f>
jp     147f <test3+0x32f>
movsd  0x50(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    147f <test3+0x32f>
jnp    1486 <test3+0x336>
xor    %eax,%eax
call   1070 <link_error@plt>
movapd (%rsp),%xmm1
movapd %xmm1,%xmm5
movapd 0x20(%rsp),%xmm6
mulsd  %xmm6,%xmm5
movapd 0x10(%rsp),%xmm0
movapd %xmm0,%xmm3
movapd 0x40(%rsp),%xmm2
mulsd  %xmm2,%xmm3
movapd %xmm1,%xmm4
mulsd  %xmm2,%xmm4
movapd %xmm0,%xmm1
mulsd  %xmm6,%xmm1
movapd %xmm5,0xd0(%rsp)
movapd %xmm5,%xmm0
movapd %xmm3,0x30(%rsp)
subsd  %xmm3,%xmm0
movapd %xmm4,0x50(%rsp)
addsd  %xmm4,%xmm1
ucomisd %xmm0,%xmm0
movapd %xmm0,0xc0(%rsp)
movapd %xmm1,0xa0(%rsp)
jp     1ab8 <test3+0x968>
call   1050 <ccos@plt>
movsd  %xmm0,0xb8(%rsp)
movsd  %xmm1,0xe8(%rsp)
movapd 0x80(%rsp),%xmm1
mulsd  0x20(%rsp),%xmm1
movapd 0x30(%rsp),%xmm0
subsd  0xd0(%rsp),%xmm0
movapd 0x50(%rsp),%xmm2
subsd  %xmm2,%xmm1
ucomisd %xmm0,%xmm0
movapd %xmm0,0x30(%rsp)
jp     1af5 <test3+0x9a5>
call   1050 <ccos@plt>
movsd  0xb8(%rsp),%xmm2
ucomisd %xmm0,%xmm2
jne    1570 <test3+0x420>
jp     1570 <test3+0x420>
movsd  0xe8(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    1570 <test3+0x420>
jnp    1577 <test3+0x427>
xor    %eax,%eax
call   1070 <link_error@plt>
movapd 0xc0(%rsp),%xmm0
ucomisd %xmm0,%xmm0
jp     1b27 <test3+0x9d7>
movapd 0xa0(%rsp),%xmm1
call   1050 <ccos@plt>
movsd  %xmm0,0xa0(%rsp)
movsd  %xmm1,0xc0(%rsp)
movapd 0x30(%rsp),%xmm0
ucomisd %xmm0,%xmm0
movapd 0x60(%rsp),%xmm1
mulsd  0x10(%rsp),%xmm1
subsd  0x50(%rsp),%xmm1
jp     1b5b <test3+0xa0b>
call   1050 <ccos@plt>
movsd  0xa0(%rsp),%xmm2
ucomisd %xmm0,%xmm2
jne    15f3 <test3+0x4a3>
jp     15f3 <test3+0x4a3>
movsd  0xc0(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    15f3 <test3+0x4a3>
jnp    15fa <test3+0x4aa>
xor    %eax,%eax
call   1070 <link_error@plt>
movapd (%rsp),%xmm0
movapd 0x10(%rsp),%xmm1
call   1060 <ctan@plt>
movapd %xmm0,%xmm2
movapd 0x20(%rsp),%xmm6
mulsd  %xmm6,%xmm0
movapd %xmm1,%xmm3
movapd 0x40(%rsp),%xmm5
mulsd  %xmm5,%xmm3
subsd  %xmm3,%xmm0
movapd %xmm2,%xmm4
mulsd  %xmm5,%xmm4
movapd %xmm1,%xmm3
mulsd  %xmm6,%xmm3
addsd  %xmm4,%xmm3
ucomisd %xmm0,%xmm0
jp     1b86 <test3+0xa36>
movapd %xmm3,%xmm1
call   1050 <ccos@plt>
movsd  %xmm0,0x30(%rsp)
movsd  %xmm1,0x50(%rsp)
movapd 0x90(%rsp),%xmm0
movapd 0x80(%rsp),%xmm1
call   1060 <ctan@plt>
movapd %xmm0,%xmm2
movapd %xmm1,%xmm3
movapd 0x60(%rsp),%xmm1
mulsd  %xmm3,%xmm1
movapd %xmm3,%xmm0
movapd 0x40(%rsp),%xmm5
mulsd  %xmm5,%xmm0
movapd %xmm2,%xmm4
mulsd  0x20(%rsp),%xmm4
subsd  %xmm4,%xmm0
movapd %xmm2,%xmm4
mulsd  %xmm5,%xmm4
subsd  %xmm4,%xmm1
ucomisd %xmm0,%xmm0
jp     1bad <test3+0xa5d>
call   1050 <ccos@plt>
movsd  0x30(%rsp),%xmm2
ucomisd %xmm0,%xmm2
jne    16d9 <test3+0x589>
jp     16d9 <test3+0x589>
movsd  0x50(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    16d9 <test3+0x589>
jnp    16e0 <test3+0x590>
xor    %eax,%eax
call   1070 <link_error@plt>
movaps (%rsp),%xmm0
movaps 0x10(%rsp),%xmm1
movaps 0x20(%rsp),%xmm2
movaps 0x40(%rsp),%xmm3
call   1eb0 <__divdc3>
call   1060 <ctan@plt>
call   1050 <ccos@plt>
movsd  %xmm0,0x30(%rsp)
movsd  %xmm1,0x50(%rsp)
movapd (%rsp),%xmm0
movapd 0x10(%rsp),%xmm1
movaps 0x60(%rsp),%xmm2
movaps 0x70(%rsp),%xmm3
call   1eb0 <__divdc3>
call   1060 <ctan@plt>
movapd 0x18cb(%rip),%xmm2
xorpd  %xmm2,%xmm0
xorpd  %xmm2,%xmm1
call   1050 <ccos@plt>
movsd  0x30(%rsp),%xmm2
ucomisd %xmm0,%xmm2
jne    175e <test3+0x60e>
jp     175e <test3+0x60e>
movsd  0x50(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    175e <test3+0x60e>
jnp    1765 <test3+0x615>
xor    %eax,%eax
call   1070 <link_error@plt>
movaps 0x20(%rsp),%xmm3
movaps %xmm3,%xmm2
movaps 0x40(%rsp),%xmm0
movaps %xmm0,%xmm1
test   %ebx,%ebx
je     1792 <test3+0x642>
movaps (%rsp),%xmm2
movaps 0x10(%rsp),%xmm1
movaps 0x90(%rsp),%xmm3
movaps 0x80(%rsp),%xmm0
movsd  %xmm3,0xd0(%rsp)
movsd  %xmm0,0xc0(%rsp)
movsd  %xmm2,0x30(%rsp)
movaps %xmm2,%xmm0
movsd  %xmm1,0x50(%rsp)
call   1050 <ccos@plt>
movsd  %xmm0,0xa0(%rsp)
movsd  %xmm1,0xb8(%rsp)
movsd  0xd0(%rsp),%xmm0
movsd  0xc0(%rsp),%xmm1
call   1050 <ccos@plt>
movsd  0xa0(%rsp),%xmm2
ucomisd %xmm0,%xmm2
jne    1803 <test3+0x6b3>
jp     1803 <test3+0x6b3>
movsd  0xb8(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    1803 <test3+0x6b3>
jnp    180a <test3+0x6ba>
xor    %eax,%eax
call   1070 <link_error@plt>
movsd  0x30(%rsp),%xmm0
movsd  0x50(%rsp),%xmm1
call   1050 <ccos@plt>
movsd  %xmm0,0x30(%rsp)
movsd  %xmm1,0x50(%rsp)
movapd 0x60(%rsp),%xmm0
movapd 0x70(%rsp),%xmm1
test   %ebx,%ebx
je     1842 <test3+0x6f2>
movapd (%rsp),%xmm0
movapd 0x10(%rsp),%xmm1
call   1050 <ccos@plt>
movsd  0x30(%rsp),%xmm2
ucomisd %xmm0,%xmm2
jne    1896 <test3+0x746>
jp     1896 <test3+0x746>
movsd  0x50(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    1896 <test3+0x746>
jp     1896 <test3+0x746>
test   %ebx,%ebx
je     18a1 <test3+0x751>
movapd (%rsp),%xmm0
movaps 0x10(%rsp),%xmm1
call   1050 <ccos@plt>
movsd  %xmm0,0x30(%rsp)
movsd  %xmm1,0x50(%rsp)
movapd 0x80(%rsp),%xmm1
movapd 0x90(%rsp),%xmm2
jmp    1902 <test3+0x7b2>
xor    %eax,%eax
call   1070 <link_error@plt>
test   %ebx,%ebx
jne    1867 <test3+0x717>
movaps 0x20(%rsp),%xmm0
movaps 0x40(%rsp),%xmm1
movaps (%rsp),%xmm2
movaps 0x10(%rsp),%xmm3
call   1eb0 <__divdc3>
call   1060 <ctan@plt>
call   1050 <ccos@plt>
movsd  %xmm0,0x30(%rsp)
movsd  %xmm1,0x50(%rsp)
movapd 0x60(%rsp),%xmm0
movapd 0x70(%rsp),%xmm1
movaps (%rsp),%xmm2
movaps 0x10(%rsp),%xmm3
call   1eb0 <__divdc3>
call   1060 <ctan@plt>
movapd %xmm0,%xmm2
movapd 0x1706(%rip),%xmm0
xorpd  %xmm0,%xmm2
xorpd  %xmm0,%xmm1
movapd %xmm2,%xmm0
call   1050 <ccos@plt>
movsd  0x30(%rsp),%xmm2
ucomisd %xmm0,%xmm2
jne    1927 <test3+0x7d7>
jp     1927 <test3+0x7d7>
movsd  0x50(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    1927 <test3+0x7d7>
jnp    192e <test3+0x7de>
xor    %eax,%eax
call   1070 <link_error@plt>
movapd (%rsp),%xmm0
ucomisd 0x10(%rsp),%xmm0
jp     1bd5 <test3+0xa85>
movaps 0x80(%rsp),%xmm1
call   1050 <ccos@plt>
movsd  %xmm0,0x90(%rsp)
movsd  %xmm1,0x30(%rsp)
movapd (%rsp),%xmm0
movapd 0x80(%rsp),%xmm1
call   1050 <ccos@plt>
movsd  0x90(%rsp),%xmm2
ucomisd %xmm0,%xmm2
jne    198d <test3+0x83d>
jp     198d <test3+0x83d>
movsd  0x30(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    198d <test3+0x83d>
jnp    1994 <test3+0x844>
xor    %eax,%eax
call   1070 <link_error@plt>
movaps 0x1665(%rip),%xmm0
movaps 0x100(%rsp),%xmm1
xorps  %xmm0,%xmm1
movaps 0x120(%rsp),%xmm0
call   1060 <ctan@plt>
movsd  %xmm0,0x80(%rsp)
movsd  %xmm1,0x90(%rsp)
movapd 0xf0(%rsp),%xmm1
xorpd  0x162a(%rip),%xmm1
movapd 0x110(%rsp),%xmm0
call   1060 <ctan@plt>
movapd 0x1614(%rip),%xmm2
xorpd  %xmm2,%xmm0
movsd  0x80(%rsp),%xmm3
ucomisd %xmm0,%xmm3
jne    1a16 <test3+0x8c6>
jp     1a16 <test3+0x8c6>
xorpd  %xmm2,%xmm1
movsd  0x90(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    1a16 <test3+0x8c6>
jnp    1a1d <test3+0x8cd>
xor    %eax,%eax
call   1070 <link_error@plt>
movaps (%rsp),%xmm0
movaps 0x10(%rsp),%xmm1
movaps 0x20(%rsp),%xmm2
movaps 0x40(%rsp),%xmm3
call   1eb0 <__divdc3>
xorps  0x15c4(%rip),%xmm1
call   1060 <ctan@plt>
movsd  %xmm0,0x20(%rsp)
movsd  %xmm1,0x40(%rsp)
movapd (%rsp),%xmm0
movapd 0x10(%rsp),%xmm1
movaps 0x60(%rsp),%xmm2
movaps 0x70(%rsp),%xmm3
call   1eb0 <__divdc3>
xorpd  0x1591(%rip),%xmm1
call   1060 <ctan@plt>
movapd 0x1584(%rip),%xmm2
xorpd  %xmm2,%xmm0
movsd  0x20(%rsp),%xmm3
ucomisd %xmm0,%xmm3
jne    1aa9 <test3+0x959>
jp     1aa9 <test3+0x959>
xorpd  %xmm2,%xmm1
movsd  0x40(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    1aa9 <test3+0x959>
jp     1aa9 <test3+0x959>
add    $0x130,%rsp
pop    %rbx
ret
xor    %eax,%eax
add    $0x130,%rsp
pop    %rbx
jmp    1070 <link_error@plt>
movapd 0xa0(%rsp),%xmm1
ucomisd %xmm1,%xmm1
movapd 0xc0(%rsp),%xmm0
jnp    14fa <test3+0x3aa>
movapd (%rsp),%xmm0
movapd 0x10(%rsp),%xmm1
movapd 0x20(%rsp),%xmm2
movapd 0x40(%rsp),%xmm3
call   1bf0 <__muldc3>
jmp    14fa <test3+0x3aa>
ucomisd %xmm1,%xmm1
jnp    1549 <test3+0x3f9>
movapd 0x90(%rsp),%xmm0
movapd 0x80(%rsp),%xmm1
movapd 0x20(%rsp),%xmm2
movapd 0x40(%rsp),%xmm3
call   1bf0 <__muldc3>
jmp    1549 <test3+0x3f9>
movapd 0xa0(%rsp),%xmm1
ucomisd %xmm1,%xmm1
jnp    1593 <test3+0x443>
movapd (%rsp),%xmm0
movapd 0x10(%rsp),%xmm1
movapd 0x20(%rsp),%xmm2
movapd 0x40(%rsp),%xmm3
call   1bf0 <__muldc3>
jmp    1593 <test3+0x443>
ucomisd %xmm1,%xmm1
jnp    15cc <test3+0x47c>
movapd (%rsp),%xmm0
movapd 0x10(%rsp),%xmm1
movapd 0x60(%rsp),%xmm2
movapd 0x70(%rsp),%xmm3
call   1bf0 <__muldc3>
jmp    15cc <test3+0x47c>
ucomisd %xmm3,%xmm3
jnp    1648 <test3+0x4f8>
movapd %xmm2,%xmm0
movapd 0x20(%rsp),%xmm2
movaps 0x40(%rsp),%xmm3
call   1bf0 <__muldc3>
movapd %xmm1,%xmm3
jmp    1648 <test3+0x4f8>
ucomisd %xmm1,%xmm1
jnp    16b8 <test3+0x568>
movapd %xmm2,%xmm0
movapd %xmm3,%xmm1
movapd 0x60(%rsp),%xmm2
movapd 0x70(%rsp),%xmm3
call   1bf0 <__muldc3>
jmp    16b8 <test3+0x568>
xor    %eax,%eax
call   1070 <link_error@plt>
movapd (%rsp),%xmm0
jmp    193f <test3+0x7ef>
cs nopw 0x0(%rax,%rax,1)

LLVM IR (-O0):
define void @test3(double %0, double %1, double %2, double %3, i32 %4) {
%6 = alloca { double, double }
%7 = alloca { double, double }
%8 = alloca i32
%9 = alloca { double, double }
%10 = alloca { double, double }
%11 = alloca { double, double }
%12 = alloca { double, double }
%13 = alloca { double, double }
%14 = alloca { double, double }
%15 = alloca { double, double }
%16 = alloca { double, double }
%17 = alloca { double, double }
%18 = alloca { double, double }
%19 = alloca { double, double }
%20 = alloca { double, double }
%21 = alloca { double, double }
%22 = alloca { double, double }
%23 = alloca { double, double }
%24 = alloca { double, double }
%25 = alloca { double, double }
%26 = alloca { double, double }
%27 = alloca { double, double }
%28 = alloca { double, double }
%29 = alloca { double, double }
%30 = alloca { double, double }
%31 = alloca { double, double }
%32 = alloca { double, double }
%33 = alloca { double, double }
%34 = alloca { double, double }
%35 = alloca { double, double }
%36 = alloca { double, double }
%37 = alloca { double, double }
%38 = alloca { double, double }
%39 = alloca { double, double }
%40 = alloca { double, double }
%41 = alloca { double, double }
%42 = alloca { double, double }
%43 = alloca { double, double }
%44 = alloca { double, double }
%45 = alloca { double, double }
%46 = alloca { double, double }
%47 = alloca { double, double }
%48 = alloca { double, double }
%49 = alloca { double, double }
%50 = alloca { double, double }
%51 = alloca { double, double }
%52 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
store double %0, double* %52
%53 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
store double %1, double* %53
%54 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
store double %2, double* %54
%55 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
store double %3, double* %55
store i32 %4, i32* %8
%56 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%57 = load double, double* %56
%58 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%59 = load double, double* %58
%60 = getelementptr inbounds { double, double }, { double, double }* %9, i32 0, i32 0
%61 = getelementptr inbounds { double, double }, { double, double }* %9, i32 0, i32 1
store double %57, double* %60
store double %59, double* %61
%62 = getelementptr inbounds { double, double }, { double, double }* %9, i32 0, i32 0
%63 = load double, double* %62
%64 = getelementptr inbounds { double, double }, { double, double }* %9, i32 0, i32 1
%65 = load double, double* %64
%66 = call double @carg(double %63, double %65)
%67 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%68 = load double, double* %67
%69 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%70 = load double, double* %69
%71 = call double @atan2(double %68, double %70)
%72 = fcmp une double %66, %71
br i1 %72, label %73, label %75
73: ; preds = %5
%74 = call i32 (...) @link_error()
br label %75
75: ; preds = %73, %5
%76 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%77 = load double, double* %76
%78 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%79 = load double, double* %78
%80 = getelementptr inbounds { double, double }, { double, double }* %10, i32 0, i32 0
%81 = getelementptr inbounds { double, double }, { double, double }* %10, i32 0, i32 1
store double %77, double* %80
store double %79, double* %81
%82 = getelementptr inbounds { double, double }, { double, double }* %10, i32 0, i32 0
%83 = load double, double* %82
%84 = getelementptr inbounds { double, double }, { double, double }* %10, i32 0, i32 1
%85 = load double, double* %84
%86 = call { double, double } @ccos(double %83, double %85)
%87 = extractvalue { double, double } %86, 0
%88 = extractvalue { double, double } %86, 1
%89 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%90 = load double, double* %89
%91 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%92 = load double, double* %91
%93 = fneg double %90
%94 = fneg double %92
%95 = getelementptr inbounds { double, double }, { double, double }* %11, i32 0, i32 0
%96 = getelementptr inbounds { double, double }, { double, double }* %11, i32 0, i32 1
store double %93, double* %95
store double %94, double* %96
%97 = getelementptr inbounds { double, double }, { double, double }* %11, i32 0, i32 0
%98 = load double, double* %97
%99 = getelementptr inbounds { double, double }, { double, double }* %11, i32 0, i32 1
%100 = load double, double* %99
%101 = call { double, double } @ccos(double %98, double %100)
%102 = extractvalue { double, double } %101, 0
%103 = extractvalue { double, double } %101, 1
%104 = fcmp une double %87, %102
%105 = fcmp une double %88, %103
%106 = or i1 %104, %105
br i1 %106, label %107, label %109
107: ; preds = %75
%108 = call i32 (...) @link_error()
br label %109
109: ; preds = %107, %75
%110 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%111 = load double, double* %110
%112 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%113 = load double, double* %112
%114 = getelementptr inbounds { double, double }, { double, double }* %12, i32 0, i32 0
%115 = getelementptr inbounds { double, double }, { double, double }* %12, i32 0, i32 1
store double %111, double* %114
store double %113, double* %115
%116 = getelementptr inbounds { double, double }, { double, double }* %12, i32 0, i32 0
%117 = load double, double* %116
%118 = getelementptr inbounds { double, double }, { double, double }* %12, i32 0, i32 1
%119 = load double, double* %118
%120 = call { double, double } @ctan(double %117, double %119)
%121 = extractvalue { double, double } %120, 0
%122 = extractvalue { double, double } %120, 1
%123 = getelementptr inbounds { double, double }, { double, double }* %13, i32 0, i32 0
%124 = getelementptr inbounds { double, double }, { double, double }* %13, i32 0, i32 1
store double %121, double* %123
store double %122, double* %124
%125 = getelementptr inbounds { double, double }, { double, double }* %13, i32 0, i32 0
%126 = load double, double* %125
%127 = getelementptr inbounds { double, double }, { double, double }* %13, i32 0, i32 1
%128 = load double, double* %127
%129 = call { double, double } @ccos(double %126, double %128)
%130 = extractvalue { double, double } %129, 0
%131 = extractvalue { double, double } %129, 1
%132 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%133 = load double, double* %132
%134 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%135 = load double, double* %134
%136 = fneg double %133
%137 = fneg double %135
%138 = getelementptr inbounds { double, double }, { double, double }* %14, i32 0, i32 0
%139 = getelementptr inbounds { double, double }, { double, double }* %14, i32 0, i32 1
store double %136, double* %138
store double %137, double* %139
%140 = getelementptr inbounds { double, double }, { double, double }* %14, i32 0, i32 0
%141 = load double, double* %140
%142 = getelementptr inbounds { double, double }, { double, double }* %14, i32 0, i32 1
%143 = load double, double* %142
%144 = call { double, double } @ctan(double %141, double %143)
%145 = extractvalue { double, double } %144, 0
%146 = extractvalue { double, double } %144, 1
%147 = getelementptr inbounds { double, double }, { double, double }* %15, i32 0, i32 0
%148 = getelementptr inbounds { double, double }, { double, double }* %15, i32 0, i32 1
store double %145, double* %147
store double %146, double* %148
%149 = getelementptr inbounds { double, double }, { double, double }* %15, i32 0, i32 0
%150 = load double, double* %149
%151 = getelementptr inbounds { double, double }, { double, double }* %15, i32 0, i32 1
%152 = load double, double* %151
%153 = call { double, double } @ccos(double %150, double %152)
%154 = extractvalue { double, double } %153, 0
%155 = extractvalue { double, double } %153, 1
%156 = fcmp une double %130, %154
%157 = fcmp une double %131, %155
%158 = or i1 %156, %157
br i1 %158, label %159, label %161
159: ; preds = %109
%160 = call i32 (...) @link_error()
br label %161
161: ; preds = %159, %109
%162 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%163 = load double, double* %162
%164 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%165 = load double, double* %164
%166 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%167 = load double, double* %166
%168 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%169 = load double, double* %168
%170 = fsub double %163, %167
%171 = fsub double %165, %169
%172 = getelementptr inbounds { double, double }, { double, double }* %16, i32 0, i32 0
%173 = getelementptr inbounds { double, double }, { double, double }* %16, i32 0, i32 1
store double %170, double* %172
store double %171, double* %173
%174 = getelementptr inbounds { double, double }, { double, double }* %16, i32 0, i32 0
%175 = load double, double* %174
%176 = getelementptr inbounds { double, double }, { double, double }* %16, i32 0, i32 1
%177 = load double, double* %176
%178 = call { double, double } @ctan(double %175, double %177)
%179 = extractvalue { double, double } %178, 0
%180 = extractvalue { double, double } %178, 1
%181 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%182 = load double, double* %181
%183 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%184 = load double, double* %183
%185 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%186 = load double, double* %185
%187 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%188 = load double, double* %187
%189 = fsub double %182, %186
%190 = fsub double %184, %188
%191 = getelementptr inbounds { double, double }, { double, double }* %17, i32 0, i32 0
%192 = getelementptr inbounds { double, double }, { double, double }* %17, i32 0, i32 1
store double %189, double* %191
store double %190, double* %192
%193 = getelementptr inbounds { double, double }, { double, double }* %17, i32 0, i32 0
%194 = load double, double* %193
%195 = getelementptr inbounds { double, double }, { double, double }* %17, i32 0, i32 1
%196 = load double, double* %195
%197 = call { double, double } @ctan(double %194, double %196)
%198 = extractvalue { double, double } %197, 0
%199 = extractvalue { double, double } %197, 1
%200 = fneg double %198
%201 = fneg double %199
%202 = fcmp une double %179, %200
%203 = fcmp une double %180, %201
%204 = or i1 %202, %203
br i1 %204, label %205, label %207
205: ; preds = %161
%206 = call i32 (...) @link_error()
br label %207
207: ; preds = %205, %161
%208 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%209 = load double, double* %208
%210 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%211 = load double, double* %210
%212 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%213 = load double, double* %212
%214 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%215 = load double, double* %214
%216 = call { double, double } @__divdc3(double %209, double %211, double %213, double %215)
%217 = extractvalue { double, double } %216, 0
%218 = extractvalue { double, double } %216, 1
%219 = getelementptr inbounds { double, double }, { double, double }* %18, i32 0, i32 0
%220 = getelementptr inbounds { double, double }, { double, double }* %18, i32 0, i32 1
store double %217, double* %219
store double %218, double* %220
%221 = getelementptr inbounds { double, double }, { double, double }* %18, i32 0, i32 0
%222 = load double, double* %221
%223 = getelementptr inbounds { double, double }, { double, double }* %18, i32 0, i32 1
%224 = load double, double* %223
%225 = call { double, double } @ccos(double %222, double %224)
%226 = extractvalue { double, double } %225, 0
%227 = extractvalue { double, double } %225, 1
%228 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%229 = load double, double* %228
%230 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%231 = load double, double* %230
%232 = fneg double %229
%233 = fneg double %231
%234 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%235 = load double, double* %234
%236 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%237 = load double, double* %236
%238 = call { double, double } @__divdc3(double %232, double %233, double %235, double %237)
%239 = extractvalue { double, double } %238, 0
%240 = extractvalue { double, double } %238, 1
%241 = getelementptr inbounds { double, double }, { double, double }* %19, i32 0, i32 0
%242 = getelementptr inbounds { double, double }, { double, double }* %19, i32 0, i32 1
store double %239, double* %241
store double %240, double* %242
%243 = getelementptr inbounds { double, double }, { double, double }* %19, i32 0, i32 0
%244 = load double, double* %243
%245 = getelementptr inbounds { double, double }, { double, double }* %19, i32 0, i32 1
%246 = load double, double* %245
%247 = call { double, double } @ccos(double %244, double %246)
%248 = extractvalue { double, double } %247, 0
%249 = extractvalue { double, double } %247, 1
%250 = fcmp une double %226, %248
%251 = fcmp une double %227, %249
%252 = or i1 %250, %251
br i1 %252, label %253, label %255
253: ; preds = %207
%254 = call i32 (...) @link_error()
br label %255
255: ; preds = %253, %207
%256 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%257 = load double, double* %256
%258 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%259 = load double, double* %258
%260 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%261 = load double, double* %260
%262 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%263 = load double, double* %262
%264 = call { double, double } @__divdc3(double %257, double %259, double %261, double %263)
%265 = extractvalue { double, double } %264, 0
%266 = extractvalue { double, double } %264, 1
%267 = getelementptr inbounds { double, double }, { double, double }* %20, i32 0, i32 0
%268 = getelementptr inbounds { double, double }, { double, double }* %20, i32 0, i32 1
store double %265, double* %267
store double %266, double* %268
%269 = getelementptr inbounds { double, double }, { double, double }* %20, i32 0, i32 0
%270 = load double, double* %269
%271 = getelementptr inbounds { double, double }, { double, double }* %20, i32 0, i32 1
%272 = load double, double* %271
%273 = call { double, double } @ccos(double %270, double %272)
%274 = extractvalue { double, double } %273, 0
%275 = extractvalue { double, double } %273, 1
%276 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%277 = load double, double* %276
%278 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%279 = load double, double* %278
%280 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%281 = load double, double* %280
%282 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%283 = load double, double* %282
%284 = fneg double %281
%285 = fneg double %283
%286 = call { double, double } @__divdc3(double %277, double %279, double %284, double %285)
%287 = extractvalue { double, double } %286, 0
%288 = extractvalue { double, double } %286, 1
%289 = getelementptr inbounds { double, double }, { double, double }* %21, i32 0, i32 0
%290 = getelementptr inbounds { double, double }, { double, double }* %21, i32 0, i32 1
store double %287, double* %289
store double %288, double* %290
%291 = getelementptr inbounds { double, double }, { double, double }* %21, i32 0, i32 0
%292 = load double, double* %291
%293 = getelementptr inbounds { double, double }, { double, double }* %21, i32 0, i32 1
%294 = load double, double* %293
%295 = call { double, double } @ccos(double %292, double %294)
%296 = extractvalue { double, double } %295, 0
%297 = extractvalue { double, double } %295, 1
%298 = fcmp une double %274, %296
%299 = fcmp une double %275, %297
%300 = or i1 %298, %299
br i1 %300, label %301, label %303
301: ; preds = %255
%302 = call i32 (...) @link_error()
br label %303
303: ; preds = %301, %255
%304 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%305 = load double, double* %304
%306 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%307 = load double, double* %306
%308 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%309 = load double, double* %308
%310 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%311 = load double, double* %310
%312 = getelementptr inbounds { double, double }, { double, double }* %22, i32 0, i32 0
%313 = getelementptr inbounds { double, double }, { double, double }* %22, i32 0, i32 1
store double %309, double* %312
store double %311, double* %313
%314 = getelementptr inbounds { double, double }, { double, double }* %22, i32 0, i32 0
%315 = load double, double* %314
%316 = getelementptr inbounds { double, double }, { double, double }* %22, i32 0, i32 1
%317 = load double, double* %316
%318 = call { double, double } @ctan(double %315, double %317)
%319 = extractvalue { double, double } %318, 0
%320 = extractvalue { double, double } %318, 1
%321 = call { double, double } @__divdc3(double %305, double %307, double %319, double %320)
%322 = extractvalue { double, double } %321, 0
%323 = extractvalue { double, double } %321, 1
%324 = getelementptr inbounds { double, double }, { double, double }* %23, i32 0, i32 0
%325 = getelementptr inbounds { double, double }, { double, double }* %23, i32 0, i32 1
store double %322, double* %324
store double %323, double* %325
%326 = getelementptr inbounds { double, double }, { double, double }* %23, i32 0, i32 0
%327 = load double, double* %326
%328 = getelementptr inbounds { double, double }, { double, double }* %23, i32 0, i32 1
%329 = load double, double* %328
%330 = call { double, double } @ccos(double %327, double %329)
%331 = extractvalue { double, double } %330, 0
%332 = extractvalue { double, double } %330, 1
%333 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%334 = load double, double* %333
%335 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%336 = load double, double* %335
%337 = fneg double %334
%338 = fneg double %336
%339 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%340 = load double, double* %339
%341 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%342 = load double, double* %341
%343 = fneg double %340
%344 = fneg double %342
%345 = getelementptr inbounds { double, double }, { double, double }* %24, i32 0, i32 0
%346 = getelementptr inbounds { double, double }, { double, double }* %24, i32 0, i32 1
store double %343, double* %345
store double %344, double* %346
%347 = getelementptr inbounds { double, double }, { double, double }* %24, i32 0, i32 0
%348 = load double, double* %347
%349 = getelementptr inbounds { double, double }, { double, double }* %24, i32 0, i32 1
%350 = load double, double* %349
%351 = call { double, double } @ctan(double %348, double %350)
%352 = extractvalue { double, double } %351, 0
%353 = extractvalue { double, double } %351, 1
%354 = call { double, double } @__divdc3(double %337, double %338, double %352, double %353)
%355 = extractvalue { double, double } %354, 0
%356 = extractvalue { double, double } %354, 1
%357 = getelementptr inbounds { double, double }, { double, double }* %25, i32 0, i32 0
%358 = getelementptr inbounds { double, double }, { double, double }* %25, i32 0, i32 1
store double %355, double* %357
store double %356, double* %358
%359 = getelementptr inbounds { double, double }, { double, double }* %25, i32 0, i32 0
%360 = load double, double* %359
%361 = getelementptr inbounds { double, double }, { double, double }* %25, i32 0, i32 1
%362 = load double, double* %361
%363 = call { double, double } @ccos(double %360, double %362)
%364 = extractvalue { double, double } %363, 0
%365 = extractvalue { double, double } %363, 1
%366 = fcmp une double %331, %364
%367 = fcmp une double %332, %365
%368 = or i1 %366, %367
br i1 %368, label %369, label %371
369: ; preds = %303
%370 = call i32 (...) @link_error()
br label %371
371: ; preds = %369, %303
%372 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%373 = load double, double* %372
%374 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%375 = load double, double* %374
%376 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%377 = load double, double* %376
%378 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%379 = load double, double* %378
%380 = fmul double %373, %377
%381 = fmul double %375, %379
%382 = fmul double %373, %379
%383 = fmul double %375, %377
%384 = fsub double %380, %381
%385 = fadd double %382, %383
%386 = fcmp uno double %384, %384
br i1 %386, label %387, label %393
387: ; preds = %371
%388 = fcmp uno double %385, %385
br i1 %388, label %389, label %393
389: ; preds = %387
%390 = call { double, double } @__muldc3(double %373, double %375, double %377, double %379)
%391 = extractvalue { double, double } %390, 0
%392 = extractvalue { double, double } %390, 1
br label %393
393: ; preds = %389, %387, %371
%394 = phi double [ %384, %371 ], [ %384, %387 ], [ %391, %389 ]
%395 = phi double [ %385, %371 ], [ %385, %387 ], [ %392, %389 ]
%396 = getelementptr inbounds { double, double }, { double, double }* %26, i32 0, i32 0
%397 = getelementptr inbounds { double, double }, { double, double }* %26, i32 0, i32 1
store double %394, double* %396
store double %395, double* %397
%398 = getelementptr inbounds { double, double }, { double, double }* %26, i32 0, i32 0
%399 = load double, double* %398
%400 = getelementptr inbounds { double, double }, { double, double }* %26, i32 0, i32 1
%401 = load double, double* %400
%402 = call { double, double } @ccos(double %399, double %401)
%403 = extractvalue { double, double } %402, 0
%404 = extractvalue { double, double } %402, 1
%405 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%406 = load double, double* %405
%407 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%408 = load double, double* %407
%409 = fneg double %406
%410 = fneg double %408
%411 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%412 = load double, double* %411
%413 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%414 = load double, double* %413
%415 = fmul double %409, %412
%416 = fmul double %410, %414
%417 = fmul double %409, %414
%418 = fmul double %410, %412
%419 = fsub double %415, %416
%420 = fadd double %417, %418
%421 = fcmp uno double %419, %419
br i1 %421, label %422, label %428
422: ; preds = %393
%423 = fcmp uno double %420, %420
br i1 %423, label %424, label %428
424: ; preds = %422
%425 = call { double, double } @__muldc3(double %409, double %410, double %412, double %414)
%426 = extractvalue { double, double } %425, 0
%427 = extractvalue { double, double } %425, 1
br label %428
428: ; preds = %424, %422, %393
%429 = phi double [ %419, %393 ], [ %419, %422 ], [ %426, %424 ]
%430 = phi double [ %420, %393 ], [ %420, %422 ], [ %427, %424 ]
%431 = getelementptr inbounds { double, double }, { double, double }* %27, i32 0, i32 0
%432 = getelementptr inbounds { double, double }, { double, double }* %27, i32 0, i32 1
store double %429, double* %431
store double %430, double* %432
%433 = getelementptr inbounds { double, double }, { double, double }* %27, i32 0, i32 0
%434 = load double, double* %433
%435 = getelementptr inbounds { double, double }, { double, double }* %27, i32 0, i32 1
%436 = load double, double* %435
%437 = call { double, double } @ccos(double %434, double %436)
%438 = extractvalue { double, double } %437, 0
%439 = extractvalue { double, double } %437, 1
%440 = fcmp une double %403, %438
%441 = fcmp une double %404, %439
%442 = or i1 %440, %441
br i1 %442, label %443, label %445
443: ; preds = %428
%444 = call i32 (...) @link_error()
br label %445
445: ; preds = %443, %428
%446 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%447 = load double, double* %446
%448 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%449 = load double, double* %448
%450 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%451 = load double, double* %450
%452 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%453 = load double, double* %452
%454 = fmul double %447, %451
%455 = fmul double %449, %453
%456 = fmul double %447, %453
%457 = fmul double %449, %451
%458 = fsub double %454, %455
%459 = fadd double %456, %457
%460 = fcmp uno double %458, %458
br i1 %460, label %461, label %467
461: ; preds = %445
%462 = fcmp uno double %459, %459
br i1 %462, label %463, label %467
463: ; preds = %461
%464 = call { double, double } @__muldc3(double %447, double %449, double %451, double %453)
%465 = extractvalue { double, double } %464, 0
%466 = extractvalue { double, double } %464, 1
br label %467
467: ; preds = %463, %461, %445
%468 = phi double [ %458, %445 ], [ %458, %461 ], [ %465, %463 ]
%469 = phi double [ %459, %445 ], [ %459, %461 ], [ %466, %463 ]
%470 = getelementptr inbounds { double, double }, { double, double }* %28, i32 0, i32 0
%471 = getelementptr inbounds { double, double }, { double, double }* %28, i32 0, i32 1
store double %468, double* %470
store double %469, double* %471
%472 = getelementptr inbounds { double, double }, { double, double }* %28, i32 0, i32 0
%473 = load double, double* %472
%474 = getelementptr inbounds { double, double }, { double, double }* %28, i32 0, i32 1
%475 = load double, double* %474
%476 = call { double, double } @ccos(double %473, double %475)
%477 = extractvalue { double, double } %476, 0
%478 = extractvalue { double, double } %476, 1
%479 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%480 = load double, double* %479
%481 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%482 = load double, double* %481
%483 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%484 = load double, double* %483
%485 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%486 = load double, double* %485
%487 = fneg double %484
%488 = fneg double %486
%489 = fmul double %480, %487
%490 = fmul double %482, %488
%491 = fmul double %480, %488
%492 = fmul double %482, %487
%493 = fsub double %489, %490
%494 = fadd double %491, %492
%495 = fcmp uno double %493, %493
br i1 %495, label %496, label %502
496: ; preds = %467
%497 = fcmp uno double %494, %494
br i1 %497, label %498, label %502
498: ; preds = %496
%499 = call { double, double } @__muldc3(double %480, double %482, double %487, double %488)
%500 = extractvalue { double, double } %499, 0
%501 = extractvalue { double, double } %499, 1
br label %502
502: ; preds = %498, %496, %467
%503 = phi double [ %493, %467 ], [ %493, %496 ], [ %500, %498 ]
%504 = phi double [ %494, %467 ], [ %494, %496 ], [ %501, %498 ]
%505 = getelementptr inbounds { double, double }, { double, double }* %29, i32 0, i32 0
%506 = getelementptr inbounds { double, double }, { double, double }* %29, i32 0, i32 1
store double %503, double* %505
store double %504, double* %506
%507 = getelementptr inbounds { double, double }, { double, double }* %29, i32 0, i32 0
%508 = load double, double* %507
%509 = getelementptr inbounds { double, double }, { double, double }* %29, i32 0, i32 1
%510 = load double, double* %509
%511 = call { double, double } @ccos(double %508, double %510)
%512 = extractvalue { double, double } %511, 0
%513 = extractvalue { double, double } %511, 1
%514 = fcmp une double %477, %512
%515 = fcmp une double %478, %513
%516 = or i1 %514, %515
br i1 %516, label %517, label %519
517: ; preds = %502
%518 = call i32 (...) @link_error()
br label %519
519: ; preds = %517, %502
%520 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%521 = load double, double* %520
%522 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%523 = load double, double* %522
%524 = getelementptr inbounds { double, double }, { double, double }* %30, i32 0, i32 0
%525 = getelementptr inbounds { double, double }, { double, double }* %30, i32 0, i32 1
store double %521, double* %524
store double %523, double* %525
%526 = getelementptr inbounds { double, double }, { double, double }* %30, i32 0, i32 0
%527 = load double, double* %526
%528 = getelementptr inbounds { double, double }, { double, double }* %30, i32 0, i32 1
%529 = load double, double* %528
%530 = call { double, double } @ctan(double %527, double %529)
%531 = extractvalue { double, double } %530, 0
%532 = extractvalue { double, double } %530, 1
%533 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%534 = load double, double* %533
%535 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%536 = load double, double* %535
%537 = fmul double %531, %534
%538 = fmul double %532, %536
%539 = fmul double %531, %536
%540 = fmul double %532, %534
%541 = fsub double %537, %538
%542 = fadd double %539, %540
%543 = fcmp uno double %541, %541
br i1 %543, label %544, label %550
544: ; preds = %519
%545 = fcmp uno double %542, %542
br i1 %545, label %546, label %550
546: ; preds = %544
%547 = call { double, double } @__muldc3(double %531, double %532, double %534, double %536)
%548 = extractvalue { double, double } %547, 0
%549 = extractvalue { double, double } %547, 1
br label %550
550: ; preds = %546, %544, %519
%551 = phi double [ %541, %519 ], [ %541, %544 ], [ %548, %546 ]
%552 = phi double [ %542, %519 ], [ %542, %544 ], [ %549, %546 ]
%553 = getelementptr inbounds { double, double }, { double, double }* %31, i32 0, i32 0
%554 = getelementptr inbounds { double, double }, { double, double }* %31, i32 0, i32 1
store double %551, double* %553
store double %552, double* %554
%555 = getelementptr inbounds { double, double }, { double, double }* %31, i32 0, i32 0
%556 = load double, double* %555
%557 = getelementptr inbounds { double, double }, { double, double }* %31, i32 0, i32 1
%558 = load double, double* %557
%559 = call { double, double } @ccos(double %556, double %558)
%560 = extractvalue { double, double } %559, 0
%561 = extractvalue { double, double } %559, 1
%562 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%563 = load double, double* %562
%564 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%565 = load double, double* %564
%566 = fneg double %563
%567 = fneg double %565
%568 = getelementptr inbounds { double, double }, { double, double }* %32, i32 0, i32 0
%569 = getelementptr inbounds { double, double }, { double, double }* %32, i32 0, i32 1
store double %566, double* %568
store double %567, double* %569
%570 = getelementptr inbounds { double, double }, { double, double }* %32, i32 0, i32 0
%571 = load double, double* %570
%572 = getelementptr inbounds { double, double }, { double, double }* %32, i32 0, i32 1
%573 = load double, double* %572
%574 = call { double, double } @ctan(double %571, double %573)
%575 = extractvalue { double, double } %574, 0
%576 = extractvalue { double, double } %574, 1
%577 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%578 = load double, double* %577
%579 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%580 = load double, double* %579
%581 = fneg double %578
%582 = fneg double %580
%583 = fmul double %575, %581
%584 = fmul double %576, %582
%585 = fmul double %575, %582
%586 = fmul double %576, %581
%587 = fsub double %583, %584
%588 = fadd double %585, %586
%589 = fcmp uno double %587, %587
br i1 %589, label %590, label %596
590: ; preds = %550
%591 = fcmp uno double %588, %588
br i1 %591, label %592, label %596
592: ; preds = %590
%593 = call { double, double } @__muldc3(double %575, double %576, double %581, double %582)
%594 = extractvalue { double, double } %593, 0
%595 = extractvalue { double, double } %593, 1
br label %596
596: ; preds = %592, %590, %550
%597 = phi double [ %587, %550 ], [ %587, %590 ], [ %594, %592 ]
%598 = phi double [ %588, %550 ], [ %588, %590 ], [ %595, %592 ]
%599 = getelementptr inbounds { double, double }, { double, double }* %33, i32 0, i32 0
%600 = getelementptr inbounds { double, double }, { double, double }* %33, i32 0, i32 1
store double %597, double* %599
store double %598, double* %600
%601 = getelementptr inbounds { double, double }, { double, double }* %33, i32 0, i32 0
%602 = load double, double* %601
%603 = getelementptr inbounds { double, double }, { double, double }* %33, i32 0, i32 1
%604 = load double, double* %603
%605 = call { double, double } @ccos(double %602, double %604)
%606 = extractvalue { double, double } %605, 0
%607 = extractvalue { double, double } %605, 1
%608 = fcmp une double %560, %606
%609 = fcmp une double %561, %607
%610 = or i1 %608, %609
br i1 %610, label %611, label %613
611: ; preds = %596
%612 = call i32 (...) @link_error()
br label %613
613: ; preds = %611, %596
%614 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%615 = load double, double* %614
%616 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%617 = load double, double* %616
%618 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%619 = load double, double* %618
%620 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%621 = load double, double* %620
%622 = call { double, double } @__divdc3(double %615, double %617, double %619, double %621)
%623 = extractvalue { double, double } %622, 0
%624 = extractvalue { double, double } %622, 1
%625 = getelementptr inbounds { double, double }, { double, double }* %34, i32 0, i32 0
%626 = getelementptr inbounds { double, double }, { double, double }* %34, i32 0, i32 1
store double %623, double* %625
store double %624, double* %626
%627 = getelementptr inbounds { double, double }, { double, double }* %34, i32 0, i32 0
%628 = load double, double* %627
%629 = getelementptr inbounds { double, double }, { double, double }* %34, i32 0, i32 1
%630 = load double, double* %629
%631 = call { double, double } @ctan(double %628, double %630)
%632 = extractvalue { double, double } %631, 0
%633 = extractvalue { double, double } %631, 1
%634 = getelementptr inbounds { double, double }, { double, double }* %35, i32 0, i32 0
%635 = getelementptr inbounds { double, double }, { double, double }* %35, i32 0, i32 1
store double %632, double* %634
store double %633, double* %635
%636 = getelementptr inbounds { double, double }, { double, double }* %35, i32 0, i32 0
%637 = load double, double* %636
%638 = getelementptr inbounds { double, double }, { double, double }* %35, i32 0, i32 1
%639 = load double, double* %638
%640 = call { double, double } @ccos(double %637, double %639)
%641 = extractvalue { double, double } %640, 0
%642 = extractvalue { double, double } %640, 1
%643 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%644 = load double, double* %643
%645 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%646 = load double, double* %645
%647 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%648 = load double, double* %647
%649 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%650 = load double, double* %649
%651 = fneg double %648
%652 = fneg double %650
%653 = call { double, double } @__divdc3(double %644, double %646, double %651, double %652)
%654 = extractvalue { double, double } %653, 0
%655 = extractvalue { double, double } %653, 1
%656 = getelementptr inbounds { double, double }, { double, double }* %36, i32 0, i32 0
%657 = getelementptr inbounds { double, double }, { double, double }* %36, i32 0, i32 1
store double %654, double* %656
store double %655, double* %657
%658 = getelementptr inbounds { double, double }, { double, double }* %36, i32 0, i32 0
%659 = load double, double* %658
%660 = getelementptr inbounds { double, double }, { double, double }* %36, i32 0, i32 1
%661 = load double, double* %660
%662 = call { double, double } @ctan(double %659, double %661)
%663 = extractvalue { double, double } %662, 0
%664 = extractvalue { double, double } %662, 1
%665 = fneg double %663
%666 = fneg double %664
%667 = getelementptr inbounds { double, double }, { double, double }* %37, i32 0, i32 0
%668 = getelementptr inbounds { double, double }, { double, double }* %37, i32 0, i32 1
store double %665, double* %667
store double %666, double* %668
%669 = getelementptr inbounds { double, double }, { double, double }* %37, i32 0, i32 0
%670 = load double, double* %669
%671 = getelementptr inbounds { double, double }, { double, double }* %37, i32 0, i32 1
%672 = load double, double* %671
%673 = call { double, double } @ccos(double %670, double %672)
%674 = extractvalue { double, double } %673, 0
%675 = extractvalue { double, double } %673, 1
%676 = fcmp une double %641, %674
%677 = fcmp une double %642, %675
%678 = or i1 %676, %677
br i1 %678, label %679, label %681
679: ; preds = %613
%680 = call i32 (...) @link_error()
br label %681
681: ; preds = %679, %613
%682 = load i32, i32* %8
%683 = icmp ne i32 %682, 0
br i1 %683, label %684, label %689
684: ; preds = %681
%685 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%686 = load double, double* %685
%687 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%688 = load double, double* %687
br label %694
689: ; preds = %681
%690 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%691 = load double, double* %690
%692 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%693 = load double, double* %692
br label %694
694: ; preds = %689, %684
%695 = phi double [ %686, %684 ], [ %691, %689 ]
%696 = phi double [ %688, %684 ], [ %693, %689 ]
%697 = getelementptr inbounds { double, double }, { double, double }* %38, i32 0, i32 0
%698 = getelementptr inbounds { double, double }, { double, double }* %38, i32 0, i32 1
store double %695, double* %697
store double %696, double* %698
%699 = getelementptr inbounds { double, double }, { double, double }* %38, i32 0, i32 0
%700 = load double, double* %699
%701 = getelementptr inbounds { double, double }, { double, double }* %38, i32 0, i32 1
%702 = load double, double* %701
%703 = call { double, double } @ccos(double %700, double %702)
%704 = extractvalue { double, double } %703, 0
%705 = extractvalue { double, double } %703, 1
%706 = load i32, i32* %8
%707 = icmp ne i32 %706, 0
br i1 %707, label %708, label %715
708: ; preds = %694
%709 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%710 = load double, double* %709
%711 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%712 = load double, double* %711
%713 = fneg double %710
%714 = fneg double %712
br label %720
715: ; preds = %694
%716 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%717 = load double, double* %716
%718 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%719 = load double, double* %718
br label %720
720: ; preds = %715, %708
%721 = phi double [ %713, %708 ], [ %717, %715 ]
%722 = phi double [ %714, %708 ], [ %719, %715 ]
%723 = getelementptr inbounds { double, double }, { double, double }* %39, i32 0, i32 0
%724 = getelementptr inbounds { double, double }, { double, double }* %39, i32 0, i32 1
store double %721, double* %723
store double %722, double* %724
%725 = getelementptr inbounds { double, double }, { double, double }* %39, i32 0, i32 0
%726 = load double, double* %725
%727 = getelementptr inbounds { double, double }, { double, double }* %39, i32 0, i32 1
%728 = load double, double* %727
%729 = call { double, double } @ccos(double %726, double %728)
%730 = extractvalue { double, double } %729, 0
%731 = extractvalue { double, double } %729, 1
%732 = fcmp une double %704, %730
%733 = fcmp une double %705, %731
%734 = or i1 %732, %733
br i1 %734, label %735, label %737
735: ; preds = %720
%736 = call i32 (...) @link_error()
br label %737
737: ; preds = %735, %720
%738 = load i32, i32* %8
%739 = icmp ne i32 %738, 0
br i1 %739, label %740, label %745
740: ; preds = %737
%741 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%742 = load double, double* %741
%743 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%744 = load double, double* %743
br label %750
745: ; preds = %737
%746 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%747 = load double, double* %746
%748 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%749 = load double, double* %748
br label %750
750: ; preds = %745, %740
%751 = phi double [ %742, %740 ], [ %747, %745 ]
%752 = phi double [ %744, %740 ], [ %749, %745 ]
%753 = getelementptr inbounds { double, double }, { double, double }* %40, i32 0, i32 0
%754 = getelementptr inbounds { double, double }, { double, double }* %40, i32 0, i32 1
store double %751, double* %753
store double %752, double* %754
%755 = getelementptr inbounds { double, double }, { double, double }* %40, i32 0, i32 0
%756 = load double, double* %755
%757 = getelementptr inbounds { double, double }, { double, double }* %40, i32 0, i32 1
%758 = load double, double* %757
%759 = call { double, double } @ccos(double %756, double %758)
%760 = extractvalue { double, double } %759, 0
%761 = extractvalue { double, double } %759, 1
%762 = load i32, i32* %8
%763 = icmp ne i32 %762, 0
br i1 %763, label %764, label %769
764: ; preds = %750
%765 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%766 = load double, double* %765
%767 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%768 = load double, double* %767
br label %776
769: ; preds = %750
%770 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%771 = load double, double* %770
%772 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%773 = load double, double* %772
%774 = fneg double %771
%775 = fneg double %773
br label %776
776: ; preds = %769, %764
%777 = phi double [ %766, %764 ], [ %774, %769 ]
%778 = phi double [ %768, %764 ], [ %775, %769 ]
%779 = getelementptr inbounds { double, double }, { double, double }* %41, i32 0, i32 0
%780 = getelementptr inbounds { double, double }, { double, double }* %41, i32 0, i32 1
store double %777, double* %779
store double %778, double* %780
%781 = getelementptr inbounds { double, double }, { double, double }* %41, i32 0, i32 0
%782 = load double, double* %781
%783 = getelementptr inbounds { double, double }, { double, double }* %41, i32 0, i32 1
%784 = load double, double* %783
%785 = call { double, double } @ccos(double %782, double %784)
%786 = extractvalue { double, double } %785, 0
%787 = extractvalue { double, double } %785, 1
%788 = fcmp une double %760, %786
%789 = fcmp une double %761, %787
%790 = or i1 %788, %789
br i1 %790, label %791, label %793
791: ; preds = %776
%792 = call i32 (...) @link_error()
br label %793
793: ; preds = %791, %776
%794 = load i32, i32* %8
%795 = icmp ne i32 %794, 0
br i1 %795, label %796, label %801
796: ; preds = %793
%797 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%798 = load double, double* %797
%799 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%800 = load double, double* %799
br label %822
801: ; preds = %793
%802 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%803 = load double, double* %802
%804 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%805 = load double, double* %804
%806 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%807 = load double, double* %806
%808 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%809 = load double, double* %808
%810 = call { double, double } @__divdc3(double %803, double %805, double %807, double %809)
%811 = extractvalue { double, double } %810, 0
%812 = extractvalue { double, double } %810, 1
%813 = getelementptr inbounds { double, double }, { double, double }* %42, i32 0, i32 0
%814 = getelementptr inbounds { double, double }, { double, double }* %42, i32 0, i32 1
store double %811, double* %813
store double %812, double* %814
%815 = getelementptr inbounds { double, double }, { double, double }* %42, i32 0, i32 0
%816 = load double, double* %815
%817 = getelementptr inbounds { double, double }, { double, double }* %42, i32 0, i32 1
%818 = load double, double* %817
%819 = call { double, double } @ctan(double %816, double %818)
%820 = extractvalue { double, double } %819, 0
%821 = extractvalue { double, double } %819, 1
br label %822
822: ; preds = %801, %796
%823 = phi double [ %798, %796 ], [ %820, %801 ]
%824 = phi double [ %800, %796 ], [ %821, %801 ]
%825 = getelementptr inbounds { double, double }, { double, double }* %43, i32 0, i32 0
%826 = getelementptr inbounds { double, double }, { double, double }* %43, i32 0, i32 1
store double %823, double* %825
store double %824, double* %826
%827 = getelementptr inbounds { double, double }, { double, double }* %43, i32 0, i32 0
%828 = load double, double* %827
%829 = getelementptr inbounds { double, double }, { double, double }* %43, i32 0, i32 1
%830 = load double, double* %829
%831 = call { double, double } @ccos(double %828, double %830)
%832 = extractvalue { double, double } %831, 0
%833 = extractvalue { double, double } %831, 1
%834 = load i32, i32* %8
%835 = icmp ne i32 %834, 0
br i1 %835, label %836, label %843
836: ; preds = %822
%837 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%838 = load double, double* %837
%839 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%840 = load double, double* %839
%841 = fneg double %838
%842 = fneg double %840
br label %868
843: ; preds = %822
%844 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%845 = load double, double* %844
%846 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%847 = load double, double* %846
%848 = fneg double %845
%849 = fneg double %847
%850 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%851 = load double, double* %850
%852 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%853 = load double, double* %852
%854 = call { double, double } @__divdc3(double %848, double %849, double %851, double %853)
%855 = extractvalue { double, double } %854, 0
%856 = extractvalue { double, double } %854, 1
%857 = getelementptr inbounds { double, double }, { double, double }* %44, i32 0, i32 0
%858 = getelementptr inbounds { double, double }, { double, double }* %44, i32 0, i32 1
store double %855, double* %857
store double %856, double* %858
%859 = getelementptr inbounds { double, double }, { double, double }* %44, i32 0, i32 0
%860 = load double, double* %859
%861 = getelementptr inbounds { double, double }, { double, double }* %44, i32 0, i32 1
%862 = load double, double* %861
%863 = call { double, double } @ctan(double %860, double %862)
%864 = extractvalue { double, double } %863, 0
%865 = extractvalue { double, double } %863, 1
%866 = fneg double %864
%867 = fneg double %865
br label %868
868: ; preds = %843, %836
%869 = phi double [ %841, %836 ], [ %866, %843 ]
%870 = phi double [ %842, %836 ], [ %867, %843 ]
%871 = getelementptr inbounds { double, double }, { double, double }* %45, i32 0, i32 0
%872 = getelementptr inbounds { double, double }, { double, double }* %45, i32 0, i32 1
store double %869, double* %871
store double %870, double* %872
%873 = getelementptr inbounds { double, double }, { double, double }* %45, i32 0, i32 0
%874 = load double, double* %873
%875 = getelementptr inbounds { double, double }, { double, double }* %45, i32 0, i32 1
%876 = load double, double* %875
%877 = call { double, double } @ccos(double %874, double %876)
%878 = extractvalue { double, double } %877, 0
%879 = extractvalue { double, double } %877, 1
%880 = fcmp une double %832, %878
%881 = fcmp une double %833, %879
%882 = or i1 %880, %881
br i1 %882, label %883, label %885
883: ; preds = %868
%884 = call i32 (...) @link_error()
br label %885
885: ; preds = %883, %868
%886 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%887 = load double, double* %886
%888 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%889 = load double, double* %888
%890 = fneg double %889
%891 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%892 = load double, double* %891
%893 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%894 = load double, double* %893
%895 = fneg double %892
%896 = fneg double %894
%897 = fneg double %896
%898 = fneg double %895
%899 = fneg double %897
%900 = fcmp une double %887, %898
%901 = fcmp une double %890, %899
%902 = or i1 %900, %901
br i1 %902, label %903, label %905
903: ; preds = %885
%904 = call i32 (...) @link_error()
br label %905
905: ; preds = %903, %885
%906 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%907 = load double, double* %906
%908 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%909 = load double, double* %908
%910 = fneg double %909
%911 = getelementptr inbounds { double, double }, { double, double }* %46, i32 0, i32 0
%912 = getelementptr inbounds { double, double }, { double, double }* %46, i32 0, i32 1
store double %907, double* %911
store double %910, double* %912
%913 = getelementptr inbounds { double, double }, { double, double }* %46, i32 0, i32 0
%914 = load double, double* %913
%915 = getelementptr inbounds { double, double }, { double, double }* %46, i32 0, i32 1
%916 = load double, double* %915
%917 = call { double, double } @ccos(double %914, double %916)
%918 = extractvalue { double, double } %917, 0
%919 = extractvalue { double, double } %917, 1
%920 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%921 = load double, double* %920
%922 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%923 = load double, double* %922
%924 = fneg double %921
%925 = fneg double %923
%926 = fneg double %925
%927 = fneg double %924
%928 = fneg double %926
%929 = getelementptr inbounds { double, double }, { double, double }* %47, i32 0, i32 0
%930 = getelementptr inbounds { double, double }, { double, double }* %47, i32 0, i32 1
store double %927, double* %929
store double %928, double* %930
%931 = getelementptr inbounds { double, double }, { double, double }* %47, i32 0, i32 0
%932 = load double, double* %931
%933 = getelementptr inbounds { double, double }, { double, double }* %47, i32 0, i32 1
%934 = load double, double* %933
%935 = call { double, double } @ccos(double %932, double %934)
%936 = extractvalue { double, double } %935, 0
%937 = extractvalue { double, double } %935, 1
%938 = fcmp une double %918, %936
%939 = fcmp une double %919, %937
%940 = or i1 %938, %939
br i1 %940, label %941, label %943
941: ; preds = %905
%942 = call i32 (...) @link_error()
br label %943
943: ; preds = %941, %905
%944 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%945 = load double, double* %944
%946 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%947 = load double, double* %946
%948 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%949 = load double, double* %948
%950 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%951 = load double, double* %950
%952 = fsub double %945, %949
%953 = fsub double %947, %951
%954 = fneg double %953
%955 = getelementptr inbounds { double, double }, { double, double }* %48, i32 0, i32 0
%956 = getelementptr inbounds { double, double }, { double, double }* %48, i32 0, i32 1
store double %952, double* %955
store double %954, double* %956
%957 = getelementptr inbounds { double, double }, { double, double }* %48, i32 0, i32 0
%958 = load double, double* %957
%959 = getelementptr inbounds { double, double }, { double, double }* %48, i32 0, i32 1
%960 = load double, double* %959
%961 = call { double, double } @ctan(double %958, double %960)
%962 = extractvalue { double, double } %961, 0
%963 = extractvalue { double, double } %961, 1
%964 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%965 = load double, double* %964
%966 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%967 = load double, double* %966
%968 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%969 = load double, double* %968
%970 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%971 = load double, double* %970
%972 = fsub double %965, %969
%973 = fsub double %967, %971
%974 = fneg double %973
%975 = getelementptr inbounds { double, double }, { double, double }* %49, i32 0, i32 0
%976 = getelementptr inbounds { double, double }, { double, double }* %49, i32 0, i32 1
store double %972, double* %975
store double %974, double* %976
%977 = getelementptr inbounds { double, double }, { double, double }* %49, i32 0, i32 0
%978 = load double, double* %977
%979 = getelementptr inbounds { double, double }, { double, double }* %49, i32 0, i32 1
%980 = load double, double* %979
%981 = call { double, double } @ctan(double %978, double %980)
%982 = extractvalue { double, double } %981, 0
%983 = extractvalue { double, double } %981, 1
%984 = fneg double %982
%985 = fneg double %983
%986 = fcmp une double %962, %984
%987 = fcmp une double %963, %985
%988 = or i1 %986, %987
br i1 %988, label %989, label %991
989: ; preds = %943
%990 = call i32 (...) @link_error()
br label %991
991: ; preds = %989, %943
%992 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%993 = load double, double* %992
%994 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%995 = load double, double* %994
%996 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%997 = load double, double* %996
%998 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%999 = load double, double* %998
%1000 = call { double, double } @__divdc3(double %993, double %995, double %997, double %999)
%1001 = extractvalue { double, double } %1000, 0
%1002 = extractvalue { double, double } %1000, 1
%1003 = fneg double %1002
%1004 = getelementptr inbounds { double, double }, { double, double }* %50, i32 0, i32 0
%1005 = getelementptr inbounds { double, double }, { double, double }* %50, i32 0, i32 1
store double %1001, double* %1004
store double %1003, double* %1005
%1006 = getelementptr inbounds { double, double }, { double, double }* %50, i32 0, i32 0
%1007 = load double, double* %1006
%1008 = getelementptr inbounds { double, double }, { double, double }* %50, i32 0, i32 1
%1009 = load double, double* %1008
%1010 = call { double, double } @ctan(double %1007, double %1009)
%1011 = extractvalue { double, double } %1010, 0
%1012 = extractvalue { double, double } %1010, 1
%1013 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 0
%1014 = load double, double* %1013
%1015 = getelementptr inbounds { double, double }, { double, double }* %6, i32 0, i32 1
%1016 = load double, double* %1015
%1017 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 0
%1018 = load double, double* %1017
%1019 = getelementptr inbounds { double, double }, { double, double }* %7, i32 0, i32 1
%1020 = load double, double* %1019
%1021 = fneg double %1018
%1022 = fneg double %1020
%1023 = call { double, double } @__divdc3(double %1014, double %1016, double %1021, double %1022)
%1024 = extractvalue { double, double } %1023, 0
%1025 = extractvalue { double, double } %1023, 1
%1026 = fneg double %1025
%1027 = getelementptr inbounds { double, double }, { double, double }* %51, i32 0, i32 0
%1028 = getelementptr inbounds { double, double }, { double, double }* %51, i32 0, i32 1
store double %1024, double* %1027
store double %1026, double* %1028
%1029 = getelementptr inbounds { double, double }, { double, double }* %51, i32 0, i32 0
%1030 = load double, double* %1029
%1031 = getelementptr inbounds { double, double }, { double, double }* %51, i32 0, i32 1
%1032 = load double, double* %1031
%1033 = call { double, double } @ctan(double %1030, double %1032)
%1034 = extractvalue { double, double } %1033, 0
%1035 = extractvalue { double, double } %1033, 1
%1036 = fneg double %1034
%1037 = fneg double %1035
%1038 = fcmp une double %1011, %1036
%1039 = fcmp une double %1012, %1037
%1040 = or i1 %1038, %1039
br i1 %1040, label %1041, label %1043
1041: ; preds = %991
%1042 = call i32 (...) @link_error()
br label %1043
1043: ; preds = %1041, %991
ret void
}

LLVM IR (-O2):
define void @test3(double %0, double %1, double %2, double %3, i32 %4) {
%6 = tail call double @carg(double %0, double %1)
%7 = tail call double @atan2(double %1, double %0)
%8 = fcmp une double %6, %7
br i1 %8, label %9, label %11
9: ; preds = %5
%10 = tail call i32 (...) @link_error()
br label %11
11: ; preds = %9, %5
%12 = tail call { double, double } @ccos(double %0, double %1)
%13 = extractvalue { double, double } %12, 0
%14 = extractvalue { double, double } %12, 1
%15 = fneg double %0
%16 = fneg double %1
%17 = tail call { double, double } @ccos(double %15, double %16)
%18 = extractvalue { double, double } %17, 0
%19 = extractvalue { double, double } %17, 1
%20 = fcmp une double %13, %18
%21 = fcmp une double %14, %19
%22 = or i1 %20, %21
br i1 %22, label %23, label %25
23: ; preds = %11
%24 = tail call i32 (...) @link_error()
br label %25
25: ; preds = %23, %11
%26 = tail call { double, double } @ctan(double %0, double %1)
%27 = extractvalue { double, double } %26, 0
%28 = extractvalue { double, double } %26, 1
%29 = tail call { double, double } @ccos(double %27, double %28)
%30 = extractvalue { double, double } %29, 0
%31 = extractvalue { double, double } %29, 1
%32 = tail call { double, double } @ctan(double %15, double %16)
%33 = extractvalue { double, double } %32, 0
%34 = extractvalue { double, double } %32, 1
%35 = tail call { double, double } @ccos(double %33, double %34)
%36 = extractvalue { double, double } %35, 0
%37 = extractvalue { double, double } %35, 1
%38 = fcmp une double %30, %36
%39 = fcmp une double %31, %37
%40 = or i1 %38, %39
br i1 %40, label %41, label %43
41: ; preds = %25
%42 = tail call i32 (...) @link_error()
br label %43
43: ; preds = %41, %25
%44 = fsub double %0, %2
%45 = fsub double %1, %3
%46 = tail call { double, double } @ctan(double %44, double %45)
%47 = extractvalue { double, double } %46, 0
%48 = extractvalue { double, double } %46, 1
%49 = fsub double %2, %0
%50 = fsub double %3, %1
%51 = tail call { double, double } @ctan(double %49, double %50)
%52 = extractvalue { double, double } %51, 0
%53 = extractvalue { double, double } %51, 1
%54 = fneg double %52
%55 = fneg double %53
%56 = fcmp une double %47, %54
%57 = fcmp une double %48, %55
%58 = or i1 %56, %57
br i1 %58, label %59, label %61
59: ; preds = %43
%60 = tail call i32 (...) @link_error()
br label %61
61: ; preds = %59, %43
%62 = tail call { double, double } @__divdc3(double %0, double %1, double %2, double %3)
%63 = extractvalue { double, double } %62, 0
%64 = extractvalue { double, double } %62, 1
%65 = tail call { double, double } @ccos(double %63, double %64)
%66 = extractvalue { double, double } %65, 0
%67 = extractvalue { double, double } %65, 1
%68 = tail call { double, double } @__divdc3(double %15, double %16, double %2, double %3)
%69 = extractvalue { double, double } %68, 0
%70 = extractvalue { double, double } %68, 1
%71 = tail call { double, double } @ccos(double %69, double %70)
%72 = extractvalue { double, double } %71, 0
%73 = extractvalue { double, double } %71, 1
%74 = fcmp une double %66, %72
%75 = fcmp une double %67, %73
%76 = or i1 %74, %75
br i1 %76, label %77, label %79
77: ; preds = %61
%78 = tail call i32 (...) @link_error()
br label %79
79: ; preds = %77, %61
%80 = tail call { double, double } @__divdc3(double %0, double %1, double %2, double %3)
%81 = extractvalue { double, double } %80, 0
%82 = extractvalue { double, double } %80, 1
%83 = tail call { double, double } @ccos(double %81, double %82)
%84 = extractvalue { double, double } %83, 0
%85 = extractvalue { double, double } %83, 1
%86 = fneg double %2
%87 = fneg double %3
%88 = tail call { double, double } @__divdc3(double %0, double %1, double %86, double %87)
%89 = extractvalue { double, double } %88, 0
%90 = extractvalue { double, double } %88, 1
%91 = tail call { double, double } @ccos(double %89, double %90)
%92 = extractvalue { double, double } %91, 0
%93 = extractvalue { double, double } %91, 1
%94 = fcmp une double %84, %92
%95 = fcmp une double %85, %93
%96 = or i1 %94, %95
br i1 %96, label %97, label %99
97: ; preds = %79
%98 = tail call i32 (...) @link_error()
br label %99
99: ; preds = %97, %79
%100 = tail call { double, double } @ctan(double %2, double %3)
%101 = extractvalue { double, double } %100, 0
%102 = extractvalue { double, double } %100, 1
%103 = tail call { double, double } @__divdc3(double %0, double %1, double %101, double %102)
%104 = extractvalue { double, double } %103, 0
%105 = extractvalue { double, double } %103, 1
%106 = tail call { double, double } @ccos(double %104, double %105)
%107 = extractvalue { double, double } %106, 0
%108 = extractvalue { double, double } %106, 1
%109 = tail call { double, double } @ctan(double %86, double %87)
%110 = extractvalue { double, double } %109, 0
%111 = extractvalue { double, double } %109, 1
%112 = tail call { double, double } @__divdc3(double %15, double %16, double %110, double %111)
%113 = extractvalue { double, double } %112, 0
%114 = extractvalue { double, double } %112, 1
%115 = tail call { double, double } @ccos(double %113, double %114)
%116 = extractvalue { double, double } %115, 0
%117 = extractvalue { double, double } %115, 1
%118 = fcmp une double %107, %116
%119 = fcmp une double %108, %117
%120 = or i1 %118, %119
br i1 %120, label %121, label %123
121: ; preds = %99
%122 = tail call i32 (...) @link_error()
br label %123
123: ; preds = %121, %99
%124 = fmul double %0, %2
%125 = fmul double %1, %3
%126 = fmul double %0, %3
%127 = fmul double %1, %2
%128 = fsub double %124, %125
%129 = fadd double %127, %126
%130 = fcmp uno double %128, 0.000000e+00
br i1 %130, label %131, label %137
131: ; preds = %123
%132 = fcmp uno double %129, 0.000000e+00
br i1 %132, label %133, label %137
133: ; preds = %131
%134 = tail call { double, double } @__muldc3(double %0, double %1, double %2, double %3)
%135 = extractvalue { double, double } %134, 0
%136 = extractvalue { double, double } %134, 1
br label %137
137: ; preds = %133, %131, %123
%138 = phi double [ %128, %123 ], [ %128, %131 ], [ %135, %133 ]
%139 = phi double [ %129, %123 ], [ %129, %131 ], [ %136, %133 ]
%140 = tail call { double, double } @ccos(double %138, double %139)
%141 = extractvalue { double, double } %140, 0
%142 = extractvalue { double, double } %140, 1
%143 = fmul double %16, %2
%144 = fsub double %125, %124
%145 = fsub double %143, %126
%146 = fcmp uno double %144, 0.000000e+00
br i1 %146, label %147, label %153
147: ; preds = %137
%148 = fcmp uno double %145, 0.000000e+00
br i1 %148, label %149, label %153
149: ; preds = %147
%150 = tail call { double, double } @__muldc3(double %15, double %16, double %2, double %3)
%151 = extractvalue { double, double } %150, 0
%152 = extractvalue { double, double } %150, 1
br label %153
153: ; preds = %149, %147, %137
%154 = phi double [ %144, %137 ], [ %144, %147 ], [ %151, %149 ]
%155 = phi double [ %145, %137 ], [ %145, %147 ], [ %152, %149 ]
%156 = tail call { double, double } @ccos(double %154, double %155)
%157 = extractvalue { double, double } %156, 0
%158 = extractvalue { double, double } %156, 1
%159 = fcmp une double %141, %157
%160 = fcmp une double %142, %158
%161 = or i1 %159, %160
br i1 %161, label %162, label %164
162: ; preds = %153
%163 = tail call i32 (...) @link_error()
br label %164
164: ; preds = %162, %153
br i1 %130, label %165, label %171
165: ; preds = %164
%166 = fcmp uno double %129, 0.000000e+00
br i1 %166, label %167, label %171
167: ; preds = %165
%168 = tail call { double, double } @__muldc3(double %0, double %1, double %2, double %3)
%169 = extractvalue { double, double } %168, 0
%170 = extractvalue { double, double } %168, 1
br label %171
171: ; preds = %167, %165, %164
%172 = phi double [ %128, %164 ], [ %128, %165 ], [ %169, %167 ]
%173 = phi double [ %129, %164 ], [ %129, %165 ], [ %170, %167 ]
%174 = tail call { double, double } @ccos(double %172, double %173)
%175 = extractvalue { double, double } %174, 0
%176 = extractvalue { double, double } %174, 1
%177 = fmul double %86, %1
%178 = fsub double %177, %126
br i1 %146, label %179, label %185
179: ; preds = %171
%180 = fcmp uno double %178, 0.000000e+00
br i1 %180, label %181, label %185
181: ; preds = %179
%182 = tail call { double, double } @__muldc3(double %0, double %1, double %86, double %87)
%183 = extractvalue { double, double } %182, 0
%184 = extractvalue { double, double } %182, 1
br label %185
185: ; preds = %181, %179, %171
%186 = phi double [ %144, %171 ], [ %144, %179 ], [ %183, %181 ]
%187 = phi double [ %178, %171 ], [ %178, %179 ], [ %184, %181 ]
%188 = tail call { double, double } @ccos(double %186, double %187)
%189 = extractvalue { double, double } %188, 0
%190 = extractvalue { double, double } %188, 1
%191 = fcmp une double %175, %189
%192 = fcmp une double %176, %190
%193 = or i1 %191, %192
br i1 %193, label %194, label %196
194: ; preds = %185
%195 = tail call i32 (...) @link_error()
br label %196
196: ; preds = %194, %185
%197 = tail call { double, double } @ctan(double %0, double %1)
%198 = extractvalue { double, double } %197, 0
%199 = extractvalue { double, double } %197, 1
%200 = fmul double %198, %2
%201 = fmul double %199, %3
%202 = fmul double %198, %3
%203 = fmul double %199, %2
%204 = fsub double %200, %201
%205 = fadd double %202, %203
%206 = fcmp uno double %204, 0.000000e+00
br i1 %206, label %207, label %213
207: ; preds = %196
%208 = fcmp uno double %205, 0.000000e+00
br i1 %208, label %209, label %213
209: ; preds = %207
%210 = tail call { double, double } @__muldc3(double %198, double %199, double %2, double %3)
%211 = extractvalue { double, double } %210, 0
%212 = extractvalue { double, double } %210, 1
br label %213
213: ; preds = %209, %207, %196
%214 = phi double [ %204, %196 ], [ %204, %207 ], [ %211, %209 ]
%215 = phi double [ %205, %196 ], [ %205, %207 ], [ %212, %209 ]
%216 = tail call { double, double } @ccos(double %214, double %215)
%217 = extractvalue { double, double } %216, 0
%218 = extractvalue { double, double } %216, 1
%219 = tail call { double, double } @ctan(double %15, double %16)
%220 = extractvalue { double, double } %219, 0
%221 = extractvalue { double, double } %219, 1
%222 = fmul double %221, %86
%223 = fmul double %221, %3
%224 = fmul double %220, %2
%225 = fsub double %223, %224
%226 = fmul double %220, %3
%227 = fsub double %222, %226
%228 = fcmp uno double %225, 0.000000e+00
br i1 %228, label %229, label %235
229: ; preds = %213
%230 = fcmp uno double %227, 0.000000e+00
br i1 %230, label %231, label %235
231: ; preds = %229
%232 = tail call { double, double } @__muldc3(double %220, double %221, double %86, double %87)
%233 = extractvalue { double, double } %232, 0
%234 = extractvalue { double, double } %232, 1
br label %235
235: ; preds = %231, %229, %213
%236 = phi double [ %225, %213 ], [ %225, %229 ], [ %233, %231 ]
%237 = phi double [ %227, %213 ], [ %227, %229 ], [ %234, %231 ]
%238 = tail call { double, double } @ccos(double %236, double %237)
%239 = extractvalue { double, double } %238, 0
%240 = extractvalue { double, double } %238, 1
%241 = fcmp une double %217, %239
%242 = fcmp une double %218, %240
%243 = or i1 %241, %242
br i1 %243, label %244, label %246
244: ; preds = %235
%245 = tail call i32 (...) @link_error()
br label %246
246: ; preds = %244, %235
%247 = tail call { double, double } @__divdc3(double %0, double %1, double %2, double %3)
%248 = extractvalue { double, double } %247, 0
%249 = extractvalue { double, double } %247, 1
%250 = tail call { double, double } @ctan(double %248, double %249)
%251 = extractvalue { double, double } %250, 0
%252 = extractvalue { double, double } %250, 1
%253 = tail call { double, double } @ccos(double %251, double %252)
%254 = extractvalue { double, double } %253, 0
%255 = extractvalue { double, double } %253, 1
%256 = tail call { double, double } @__divdc3(double %0, double %1, double %86, double %87)
%257 = extractvalue { double, double } %256, 0
%258 = extractvalue { double, double } %256, 1
%259 = tail call { double, double } @ctan(double %257, double %258)
%260 = extractvalue { double, double } %259, 0
%261 = extractvalue { double, double } %259, 1
%262 = fneg double %260
%263 = fneg double %261
%264 = tail call { double, double } @ccos(double %262, double %263)
%265 = extractvalue { double, double } %264, 0
%266 = extractvalue { double, double } %264, 1
%267 = fcmp une double %254, %265
%268 = fcmp une double %255, %266
%269 = or i1 %267, %268
br i1 %269, label %270, label %272
270: ; preds = %246
%271 = tail call i32 (...) @link_error()
br label %272
272: ; preds = %270, %246
%273 = icmp eq i32 %4, 0
%274 = select i1 %273, double %2, double %0
%275 = select i1 %273, double %3, double %1
%276 = tail call { double, double } @ccos(double %274, double %275)
%277 = extractvalue { double, double } %276, 0
%278 = extractvalue { double, double } %276, 1
%279 = select i1 %273, double %2, double %15
%280 = select i1 %273, double %3, double %16
%281 = tail call { double, double } @ccos(double %279, double %280)
%282 = extractvalue { double, double } %281, 0
%283 = extractvalue { double, double } %281, 1
%284 = fcmp une double %277, %282
%285 = fcmp une double %278, %283
%286 = or i1 %284, %285
br i1 %286, label %287, label %289
287: ; preds = %272
%288 = tail call i32 (...) @link_error()
br label %289
289: ; preds = %287, %272
%290 = tail call { double, double } @ccos(double %274, double %275)
%291 = extractvalue { double, double } %290, 0
%292 = extractvalue { double, double } %290, 1
%293 = select i1 %273, double %86, double %0
%294 = select i1 %273, double %87, double %1
%295 = tail call { double, double } @ccos(double %293, double %294)
%296 = extractvalue { double, double } %295, 0
%297 = extractvalue { double, double } %295, 1
%298 = fcmp une double %291, %296
%299 = fcmp une double %292, %297
%300 = or i1 %298, %299
br i1 %300, label %301, label %303
301: ; preds = %289
%302 = tail call i32 (...) @link_error()
br label %303
303: ; preds = %301, %289
br i1 %273, label %306, label %304
304: ; preds = %303
%305 = tail call { double, double } @ccos(double %0, double %1)
br label %322
306: ; preds = %303
%307 = tail call { double, double } @__divdc3(double %2, double %3, double %0, double %1)
%308 = extractvalue { double, double } %307, 0
%309 = extractvalue { double, double } %307, 1
%310 = tail call { double, double } @ctan(double %308, double %309)
%311 = extractvalue { double, double } %310, 0
%312 = extractvalue { double, double } %310, 1
%313 = tail call { double, double } @ccos(double %311, double %312)
%314 = tail call { double, double } @__divdc3(double %86, double %87, double %0, double %1)
%315 = extractvalue { double, double } %314, 0
%316 = extractvalue { double, double } %314, 1
%317 = tail call { double, double } @ctan(double %315, double %316)
%318 = extractvalue { double, double } %317, 0
%319 = extractvalue { double, double } %317, 1
%320 = fneg double %318
%321 = fneg double %319
br label %322
322: ; preds = %304, %306
%323 = phi { double, double } [ %313, %306 ], [ %305, %304 ]
%324 = phi double [ %320, %306 ], [ %15, %304 ]
%325 = phi double [ %321, %306 ], [ %16, %304 ]
%326 = extractvalue { double, double } %323, 0
%327 = extractvalue { double, double } %323, 1
%328 = tail call { double, double } @ccos(double %324, double %325)
%329 = extractvalue { double, double } %328, 0
%330 = extractvalue { double, double } %328, 1
%331 = fcmp une double %326, %329
%332 = fcmp une double %327, %330
%333 = or i1 %331, %332
br i1 %333, label %334, label %336
334: ; preds = %322
%335 = tail call i32 (...) @link_error()
br label %336
336: ; preds = %334, %322
%337 = fcmp uno double %0, %1
br i1 %337, label %338, label %340
338: ; preds = %336
%339 = tail call i32 (...) @link_error()
br label %340
340: ; preds = %338, %336
%341 = tail call { double, double } @ccos(double %0, double %16)
%342 = extractvalue { double, double } %341, 0
%343 = extractvalue { double, double } %341, 1
%344 = tail call { double, double } @ccos(double %0, double %16)
%345 = extractvalue { double, double } %344, 0
%346 = extractvalue { double, double } %344, 1
%347 = fcmp une double %342, %345
%348 = fcmp une double %343, %346
%349 = or i1 %347, %348
br i1 %349, label %350, label %352
350: ; preds = %340
%351 = tail call i32 (...) @link_error()
br label %352
352: ; preds = %350, %340
%353 = fneg double %45
%354 = tail call { double, double } @ctan(double %44, double %353)
%355 = extractvalue { double, double } %354, 0
%356 = extractvalue { double, double } %354, 1
%357 = fneg double %50
%358 = tail call { double, double } @ctan(double %49, double %357)
%359 = extractvalue { double, double } %358, 0
%360 = extractvalue { double, double } %358, 1
%361 = fneg double %359
%362 = fneg double %360
%363 = fcmp une double %355, %361
%364 = fcmp une double %356, %362
%365 = or i1 %363, %364
br i1 %365, label %366, label %368
366: ; preds = %352
%367 = tail call i32 (...) @link_error()
br label %368
368: ; preds = %366, %352
%369 = tail call { double, double } @__divdc3(double %0, double %1, double %2, double %3)
%370 = extractvalue { double, double } %369, 0
%371 = extractvalue { double, double } %369, 1
%372 = fneg double %371
%373 = tail call { double, double } @ctan(double %370, double %372)
%374 = extractvalue { double, double } %373, 0
%375 = extractvalue { double, double } %373, 1
%376 = tail call { double, double } @__divdc3(double %0, double %1, double %86, double %87)
%377 = extractvalue { double, double } %376, 0
%378 = extractvalue { double, double } %376, 1
%379 = fneg double %378
%380 = tail call { double, double } @ctan(double %377, double %379)
%381 = extractvalue { double, double } %380, 0
%382 = extractvalue { double, double } %380, 1
%383 = fneg double %381
%384 = fneg double %382
%385 = fcmp une double %374, %383
%386 = fcmp une double %375, %384
%387 = or i1 %385, %386
br i1 %387, label %388, label %390
388: ; preds = %368
%389 = tail call i32 (...) @link_error()
br label %390
390: ; preds = %388, %368
ret void
}