#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double DBL_EPSILON;
double sqrt(double);
void Posneg2C(double fpu, double fmu, double gpv, double gmv, double a,
              double height, double *xc, double *p0, double *q0) {
  double x1, x2, y0, y1, y2, m0, m1, m2, m9, xcap, ycap;
  double d, p, q, r, s, t, u, v, w;
  d = 1.0 - a * a;
  if (d < DBL_EPSILON)
    d = DBL_EPSILON;
  x1 = -gmv / a;
  y1 = x1 * (fmu - 0.5 * x1);
  m1 = fmu - x1;
  x2 = -gpv / a;
  y2 = x2 * (fmu - 0.5 * x2);
  m2 = fmu - x2;
  y0 = 0.5 * gmv * gmv;
  m9 = fpu + a * gmv;
  m0 = fmu + a * gmv;
  if (m9 < 0.0) {
    xcap = m9 / d;
    ycap = height + 0.5 * (d * xcap * xcap + gmv * gmv);
    p = sqrt(2. * d * height);
    r = (ycap - y0) - m9 * xcap;
    if (r <= 0.0)
      q = -sqrt(2.0 * d * height);
    else {
      s = ycap - y0 - m0 * xcap;
      if (s <= 0.0)
        q = (ycap - y0) / xcap;
      else {
        t = (ycap - y1) - m1 * (xcap - x1);
        if (t <= 0.0)
          q = (fmu - fpu) - sqrt(2.0 * d * s + m9 * m9);
        else {
          u = (ycap - y2) - m2 * (xcap - x2);
          if (u <= 0.0) {
            v = 2.0 * t + (x1 - xcap) * (x1 - xcap);
            w = (x1 * (1.0 - a) - 2.0 * xcap) * x1 * (1.0 + a);
            q = (fmu - gmv) - (2.0 * t + w) / (gmv - xcap + sqrt(v));
          } else {
            v = d * (2.0 * u + d * (x2 - xcap) * (x2 - xcap));
            w = (fmu - fpu) - a * (gmv - gpv);
            q = w - sqrt(v);
          }
        }
      }
    }
  } else if (m0 <= 0.0) {
    xcap = 0.0;
    ycap = height + 0.5 * gmv * gmv;
    p = m9 + sqrt(2.0 * d * height);
    r = ycap - y1 + m1 * x1;
    if (r <= 0.0)
      q = m0 - sqrt(2.0 * d * height);
    else {
      s = ycap - y2 + m2 * x2;
      if (s <= 0.0)
        q = (fmu - gmv) - 2.0 * height / (gmv + sqrt(2.0 * ycap));
      else
        q = (a * (gpv - gmv) + m0) - sqrt(d * (2.0 * s + d * x2 * x2));
    }
  } else {
    xcap = m0 / d;
    ycap = height + 0.5 * (d * xcap * xcap + gmv * gmv);
    r = ycap - y0 - m0 * xcap;
    if (r <= 0.0)
      p = sqrt(2.0 * d * height);
    else {
      s = ycap - y0 - m9 * xcap;
      if (s <= 0.0)
        p = (ycap - y0) / xcap;
      else
        p = (fpu - fmu) + sqrt(d * (2.0 * s + d * xcap * xcap));
    }
    r = ycap - y1 - m1 * (xcap - x1);
    if (r <= 0.0)
      q = -sqrt(2.0 * d * height);
    else {
      s = ycap - y2 - m2 * (xcap - x2);
      if (s <= 0.0) {
        v = 2.0 * r + (fmu - x1) * (fmu - x1) * (1.0 + a * a) / d;
        w = (a * (gmv - fmu) - (1.0 + a) * gmv) * a / d;
        q = -v / (w + sqrt(2.0 * r + (xcap - x1) * (xcap - x1)));
      } else
        q = a * (gpv - gmv) -
            sqrt(d * (2.0 * s + d * (xcap - x2) * (xcap - x2)));
    }
  }
  *xc = xcap;
  *p0 = p;
  *q0 = q;
}


x86 assembly (clang, -O0):
<Posneg2C>:
push   %rbp
mov    %rsp,%rbp
sub    $0x170,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movsd  %xmm3,-0x20(%rbp)
movsd  %xmm4,-0x28(%rbp)
movsd  %xmm5,-0x30(%rbp)
mov    %rdi,-0x38(%rbp)
mov    %rsi,-0x40(%rbp)
mov    %rdx,-0x48(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xe8e(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm1
ff
mov    0x2e5b(%rip),%rax
movsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jbe    11ae <Posneg2C+0x9e>
mov    0x2e46(%rip),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
divsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm2
movsd  -0x50(%rbp),%xmm1
movsd  0xe25(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x10(%rbp),%xmm0
subsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
divsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm2
movsd  -0x58(%rbp),%xmm1
movsd  0xdc8(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x10(%rbp),%xmm0
subsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0xd95(%rip),%xmm0
mulsd  -0x20(%rbp),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x8(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x10(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x90(%rbp),%xmm0
ff
jbe    175d <Posneg2C+0x64d>
movsd  -0x90(%rbp),%xmm0
ff
divsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x30(%rbp),%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
mulsd  -0x98(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm3
ff
movsd  -0x20(%rbp),%xmm2
mulsd  -0x20(%rbp),%xmm2
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
movsd  0xceb(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0xce3(%rip),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
mulsd  -0x30(%rbp),%xmm0
call   1030 <sqrt@plt>
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm1
ff
subsd  -0x60(%rbp),%xmm1
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0xc0(%rbp),%xmm0
ff
jb     13e2 <Posneg2C+0x2d2>
movsd  0xc6c(%rip),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
mulsd  -0x30(%rbp),%xmm0
call   1030 <sqrt@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
jmp    1758 <Posneg2C+0x648>
movsd  -0xa0(%rbp),%xmm1
ff
subsd  -0x60(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0xc8(%rbp),%xmm0
ff
jb     1456 <Posneg2C+0x346>
movsd  -0xa0(%rbp),%xmm0
ff
subsd  -0x60(%rbp),%xmm0
divsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
jmp    1753 <Posneg2C+0x643>
movsd  -0xa0(%rbp),%xmm1
ff
subsd  -0x68(%rbp),%xmm1
movsd  -0x80(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
ff
subsd  -0x50(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0xd0(%rbp),%xmm0
ff
jb     1510 <Posneg2C+0x400>
movsd  -0x10(%rbp),%xmm0
subsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  0xb51(%rip),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0xf0(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
jmp    174e <Posneg2C+0x63e>
movsd  -0xa0(%rbp),%xmm1
ff
subsd  -0x70(%rbp),%xmm1
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
subsd  -0x58(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0xd8(%rbp),%xmm0
ff
jb     1687 <Posneg2C+0x577>
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0x50(%rbp),%xmm1
subsd  -0x98(%rbp),%xmm1
ff
movsd  -0x50(%rbp),%xmm2
subsd  -0x98(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  0xa53(%rip),%xmm2
subsd  -0x28(%rbp),%xmm2
movsd  0xa5e(%rip),%xmm1
mulsd  -0x98(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  0xa12(%rip),%xmm1
addsd  -0x28(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
subsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm1
ff
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
subsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
call   1030 <sqrt@plt>
movsd  -0x108(%rbp),%xmm2
ff
movsd  -0x100(%rbp),%xmm1
ff
movaps %xmm0,%xmm3
movsd  -0xf8(%rbp),%xmm0
ff
addsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
jmp    1749 <Posneg2C+0x639>
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0xd8(%rbp),%xmm1
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x58(%rbp),%xmm3
subsd  -0x98(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
movsd  -0x58(%rbp),%xmm3
subsd  -0x98(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x10(%rbp),%xmm1
subsd  -0x8(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm2
subsd  -0x18(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
call   1030 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x110(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
jmp    174e <Posneg2C+0x63e>
jmp    1753 <Posneg2C+0x643>
jmp    1758 <Posneg2C+0x648>
jmp    1e1b <Posneg2C+0xd0b>
xorps  %xmm0,%xmm0
ucomisd -0x78(%rbp),%xmm0
jb     1989 <Posneg2C+0x879>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x30(%rbp),%xmm1
movsd  0x885(%rip),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  0x863(%rip),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
mulsd  -0x30(%rbp),%xmm0
call   1030 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x118(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm1
ff
subsd  -0x68(%rbp),%xmm1
movsd  -0x80(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0xc0(%rbp),%xmm0
ff
jb     1859 <Posneg2C+0x749>
movsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  0x7ed(%rip),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
mulsd  -0x30(%rbp),%xmm0
call   1030 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x120(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
jmp    1984 <Posneg2C+0x874>
movsd  -0xa0(%rbp),%xmm1
ff
subsd  -0x70(%rbp),%xmm1
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x58(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0xc8(%rbp),%xmm0
ff
jb     1911 <Posneg2C+0x801>
movsd  -0x10(%rbp),%xmm0
subsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  0x76a(%rip),%xmm0
mulsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  0x748(%rip),%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
call   1030 <sqrt@plt>
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0x130(%rbp),%xmm1
ff
movaps %xmm0,%xmm3
movsd  -0x128(%rbp),%xmm0
ff
addsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
jmp    197f <Posneg2C+0x86f>
movsd  -0x28(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
subsd  -0x20(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0xa8(%rbp),%xmm2
ff
mulsd  -0x58(%rbp),%xmm2
mulsd  -0x58(%rbp),%xmm2
addsd  %xmm1,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x140(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
jmp    1984 <Posneg2C+0x874>
jmp    1e16 <Posneg2C+0xd06>
movsd  -0x78(%rbp),%xmm0
divsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x30(%rbp),%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
mulsd  -0x98(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm3
ff
movsd  -0x20(%rbp),%xmm2
mulsd  -0x20(%rbp),%xmm2
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
movsd  0x633(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm1
ff
subsd  -0x60(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0xc0(%rbp),%xmm0
ff
jb     1a5e <Posneg2C+0x94e>
movsd  0x5d9(%rip),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
mulsd  -0x30(%rbp),%xmm0
call   1030 <sqrt@plt>
movsd  %xmm0,-0xb0(%rbp)
ff
jmp    1b3c <Posneg2C+0xa2c>
movsd  -0xa0(%rbp),%xmm1
ff
subsd  -0x60(%rbp),%xmm1
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0xc8(%rbp),%xmm0
ff
jb     1ad5 <Posneg2C+0x9c5>
movsd  -0xa0(%rbp),%xmm0
ff
subsd  -0x60(%rbp),%xmm0
divsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
jmp    1b37 <Posneg2C+0xa27>
movsd  -0x8(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0xa8(%rbp),%xmm2
ff
mulsd  -0x98(%rbp),%xmm2
ff
mulsd  -0x98(%rbp),%xmm2
ff
addsd  %xmm1,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x148(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
jmp    1b3c <Posneg2C+0xa2c>
movsd  -0xa0(%rbp),%xmm1
ff
subsd  -0x68(%rbp),%xmm1
movsd  -0x80(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
ff
subsd  -0x50(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0xc0(%rbp),%xmm0
ff
jb     1bd1 <Posneg2C+0xac1>
movsd  0x47d(%rip),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
mulsd  -0x30(%rbp),%xmm0
call   1030 <sqrt@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
jmp    1e11 <Posneg2C+0xd01>
movsd  -0xa0(%rbp),%xmm1
ff
subsd  -0x70(%rbp),%xmm1
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
subsd  -0x58(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0xc8(%rbp),%xmm0
ff
jb     1d68 <Posneg2C+0xc58>
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0x10(%rbp),%xmm1
subsd  -0x50(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
subsd  -0x50(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  -0x28(%rbp),%xmm2
movsd  -0x28(%rbp),%xmm3
mulsd  %xmm3,%xmm2
movsd  0x39f(%rip),%xmm3
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
divsd  -0xa8(%rbp),%xmm1
ff
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm2
subsd  -0x10(%rbp),%xmm2
movsd  0x368(%rip),%xmm1
addsd  -0x28(%rbp),%xmm1
mulsd  -0x20(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  -0x28(%rbp),%xmm0
divsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm1
ff
subsd  -0x50(%rbp),%xmm1
movsd  -0x98(%rbp),%xmm2
ff
subsd  -0x50(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
movsd  -0x158(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x150(%rbp),%xmm0
ff
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
jmp    1e0c <Posneg2C+0xcfc>
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
subsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm3
ff
subsd  -0x58(%rbp),%xmm3
mulsd  %xmm3,%xmm2
movsd  -0x98(%rbp),%xmm3
ff
subsd  -0x58(%rbp),%xmm3
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
movsd  -0x168(%rbp),%xmm2
ff
movaps %xmm0,%xmm1
movsd  -0x160(%rbp),%xmm0
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
jmp    1e11 <Posneg2C+0xd01>
jmp    1e16 <Posneg2C+0xd06>
jmp    1e1b <Posneg2C+0xd0b>
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xb0(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
movsd  %xmm0,(%rax)
add    $0x170,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Posneg2C>:
push   %r15
push   %r14
push   %rbx
sub    $0x120,%rsp
mov    %rdx,%r14
mov    %rsi,%r15
mov    %rdi,%rbx
movapd 0xed2(%rip),%xmm10
movapd %xmm4,%xmm6
mulsd  %xmm4,%xmm6
movsd  0xed2(%rip),%xmm7
subsd  %xmm6,%xmm7
mov    0x2e9f(%rip),%rax
movsd  (%rax),%xmm11
maxsd  %xmm7,%xmm11
movapd %xmm3,%xmm15
xorpd  %xmm10,%xmm15
divsd  %xmm4,%xmm15
movsd  0xead(%rip),%xmm9
movapd %xmm15,%xmm7
mulsd  %xmm9,%xmm7
addsd  %xmm1,%xmm7
mulsd  %xmm15,%xmm7
movapd %xmm1,%xmm8
subsd  %xmm15,%xmm8
movapd %xmm2,0xe0(%rsp)
movapd %xmm2,%xmm13
xorpd  %xmm10,%xmm13
divsd  %xmm4,%xmm13
mulsd  %xmm13,%xmm9
addsd  %xmm1,%xmm9
mulsd  %xmm13,%xmm9
movapd %xmm1,%xmm14
subsd  %xmm13,%xmm14
movsd  0xe5f(%rip),%xmm2
mulsd  %xmm3,%xmm2
mulsd  %xmm3,%xmm2
movapd %xmm4,0x90(%rsp)
mulsd  %xmm3,%xmm4
movapd %xmm4,%xmm10
addsd  %xmm0,%xmm10
addsd  %xmm1,%xmm4
xorpd  %xmm12,%xmm12
ucomisd %xmm10,%xmm12
jbe    1283 <Posneg2C+0x173>
movapd %xmm4,0x100(%rsp)
movapd %xmm7,0xf0(%rsp)
movsd  %xmm0,0x68(%rsp)
movapd %xmm10,%xmm4
divsd  %xmm11,%xmm4
movapd %xmm11,%xmm0
mulsd  %xmm4,%xmm0
movapd %xmm3,%xmm6
mulsd  %xmm3,%xmm6
mulsd  %xmm4,%xmm0
addsd  %xmm6,%xmm0
mulsd  0xde9(%rip),%xmm0
addsd  %xmm5,%xmm0
movsd  %xmm0,0xa0(%rsp)
movapd %xmm11,%xmm0
addsd  %xmm11,%xmm0
mulsd  %xmm0,%xmm5
ucomisd %xmm12,%xmm5
movsd  %xmm9,0x88(%rsp)
movapd %xmm10,0x70(%rsp)
movsd  %xmm0,0x118(%rsp)
jb     1371 <Posneg2C+0x261>
xorps  %xmm0,%xmm0
sqrtsd %xmm5,%xmm0
jmp    1413 <Posneg2C+0x303>
ucomisd %xmm4,%xmm12
jae    1525 <Posneg2C+0x415>
movapd %xmm7,0xf0(%rsp)
movsd  %xmm0,0x68(%rsp)
movapd %xmm6,0xb0(%rsp)
movapd %xmm10,0x70(%rsp)
movapd %xmm4,%xmm6
divsd  %xmm11,%xmm4
movapd %xmm11,%xmm12
mulsd  %xmm4,%xmm12
movapd %xmm3,%xmm0
mulsd  %xmm3,%xmm0
mulsd  %xmm4,%xmm12
addsd  %xmm12,%xmm0
mulsd  0xd46(%rip),%xmm0
addsd  %xmm5,%xmm0
movapd %xmm0,0xa0(%rsp)
subsd  %xmm2,%xmm0
mulsd  %xmm4,%xmm6
movapd %xmm0,0x40(%rsp)
subsd  %xmm6,%xmm0
xorpd  %xmm10,%xmm10
ucomisd %xmm0,%xmm10
movsd  %xmm9,0x88(%rsp)
jae    1577 <Posneg2C+0x467>
movsd  %xmm8,0x18(%rsp)
movapd 0x70(%rsp),%xmm8
mulsd  %xmm4,%xmm8
movapd 0x40(%rsp),%xmm0
subsd  %xmm8,%xmm0
ucomisd %xmm0,%xmm10
jae    1744 <Posneg2C+0x634>
movsd  0x68(%rsp),%xmm6
subsd  %xmm1,%xmm6
movsd  %xmm6,0x68(%rsp)
addsd  %xmm0,%xmm0
addsd  %xmm12,%xmm0
mulsd  %xmm11,%xmm0
xorpd  %xmm6,%xmm6
ucomisd %xmm6,%xmm0
jb     188c <Posneg2C+0x77c>
sqrtsd %xmm0,%xmm0
jmp    1903 <Posneg2C+0x7f3>
movapd %xmm5,%xmm0
movapd %xmm4,(%rsp)
movapd %xmm1,0x50(%rsp)
movapd %xmm3,0x20(%rsp)
movsd  %xmm11,0x38(%rsp)
movsd  %xmm5,0x10(%rsp)
movapd %xmm13,0xd0(%rsp)
movsd  %xmm14,0x30(%rsp)
movapd %xmm15,0xc0(%rsp)
movsd  %xmm8,0x18(%rsp)
movsd  %xmm2,0xb0(%rsp)
call   1030 <sqrt@plt>
movsd  0xb0(%rsp),%xmm2
movsd  0x18(%rsp),%xmm8
movapd 0x70(%rsp),%xmm10
movapd 0xc0(%rsp),%xmm15
movsd  0x30(%rsp),%xmm14
movapd 0xd0(%rsp),%xmm13
movsd  0x10(%rsp),%xmm5
movsd  0x38(%rsp),%xmm11
movapd 0x20(%rsp),%xmm3
movapd 0x50(%rsp),%xmm1
movapd (%rsp),%xmm4
movapd %xmm0,0x40(%rsp)
movapd 0xbde(%rip),%xmm9
movsd  0xa0(%rsp),%xmm0
movapd %xmm0,%xmm7
subsd  %xmm2,%xmm7
movapd %xmm10,%xmm2
mulsd  %xmm4,%xmm2
movapd %xmm7,%xmm6
subsd  %xmm2,%xmm6
xorpd  %xmm10,%xmm10
ucomisd %xmm6,%xmm10
jae    1558 <Posneg2C+0x448>
movapd 0x100(%rsp),%xmm5
mulsd  %xmm4,%xmm5
movapd %xmm7,%xmm2
subsd  %xmm5,%xmm2
ucomisd %xmm2,%xmm10
jae    1599 <Posneg2C+0x489>
movapd %xmm0,%xmm5
subsd  0xf0(%rsp),%xmm5
movapd %xmm4,%xmm6
subsd  %xmm15,%xmm6
mulsd  %xmm6,%xmm8
subsd  %xmm8,%xmm5
xorpd  %xmm6,%xmm6
ucomisd %xmm5,%xmm6
jae    1769 <Posneg2C+0x659>
subsd  0x88(%rsp),%xmm0
movapd %xmm4,%xmm2
subsd  %xmm13,%xmm2
mulsd  %xmm2,%xmm14
subsd  %xmm14,%xmm0
ucomisd %xmm0,%xmm6
jae    1a8b <Posneg2C+0x97b>
movapd 0x90(%rsp),%xmm5
xorpd  %xmm9,%xmm5
subsd  %xmm4,%xmm13
movapd %xmm11,%xmm2
mulsd  %xmm13,%xmm2
mulsd  %xmm13,%xmm2
addsd  %xmm0,%xmm0
addsd  %xmm2,%xmm0
mulsd  %xmm11,%xmm0
subsd  0x68(%rsp),%xmm1
subsd  0xe0(%rsp),%xmm3
mulsd  %xmm5,%xmm3
addsd  %xmm1,%xmm3
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1c12 <Posneg2C+0xb02>
sqrtsd %xmm0,%xmm0
jmp    1c2d <Posneg2C+0xb1d>
addsd  %xmm5,%xmm2
movapd %xmm11,%xmm6
addsd  %xmm11,%xmm6
mulsd  %xmm5,%xmm6
xorpd  %xmm12,%xmm12
ucomisd %xmm12,%xmm6
movapd %xmm4,0x100(%rsp)
jb     15a6 <Posneg2C+0x496>
xorps  %xmm0,%xmm0
sqrtsd %xmm6,%xmm0
jmp    1685 <Posneg2C+0x575>
ucomisd %xmm10,%xmm5
jb     1721 <Posneg2C+0x611>
xorps  %xmm1,%xmm1
sqrtsd %xmm5,%xmm1
xorpd  0xa8e(%rip),%xmm1
jmp    1c7c <Posneg2C+0xb6c>
movapd %xmm11,%xmm0
addsd  %xmm11,%xmm0
mulsd  %xmm5,%xmm0
ucomisd %xmm10,%xmm0
jb     179d <Posneg2C+0x68d>
sqrtsd %xmm0,%xmm0
jmp    1822 <Posneg2C+0x712>
divsd  %xmm4,%xmm7
movapd %xmm7,%xmm1
jmp    1c7c <Posneg2C+0xb6c>
movapd %xmm6,%xmm0
movapd %xmm1,0x50(%rsp)
movapd %xmm3,0x20(%rsp)
movsd  %xmm11,0x38(%rsp)
movsd  %xmm5,0x10(%rsp)
movapd %xmm13,0xd0(%rsp)
movsd  %xmm14,0x30(%rsp)
movapd %xmm15,0xc0(%rsp)
movsd  %xmm9,0x88(%rsp)
movapd %xmm10,0x70(%rsp)
movsd  %xmm8,0x18(%rsp)
movapd %xmm7,0xf0(%rsp)
movsd  %xmm2,0xb0(%rsp)
movsd  %xmm6,0x40(%rsp)
call   1030 <sqrt@plt>
xorpd  %xmm12,%xmm12
movsd  0x40(%rsp),%xmm6
movsd  0xb0(%rsp),%xmm2
movapd 0x100(%rsp),%xmm4
movapd 0xf0(%rsp),%xmm7
movsd  0x18(%rsp),%xmm8
movapd 0x70(%rsp),%xmm10
movsd  0x88(%rsp),%xmm9
movapd 0xc0(%rsp),%xmm15
movsd  0x30(%rsp),%xmm14
movapd 0xd0(%rsp),%xmm13
movsd  0x10(%rsp),%xmm5
movsd  0x38(%rsp),%xmm11
movapd 0x20(%rsp),%xmm3
movapd 0x50(%rsp),%xmm1
addsd  %xmm0,%xmm10
movapd %xmm2,%xmm0
subsd  %xmm7,%xmm0
mulsd  %xmm15,%xmm8
addsd  %xmm0,%xmm8
ucomisd %xmm8,%xmm12
jae    172a <Posneg2C+0x61a>
movapd %xmm2,%xmm0
subsd  %xmm9,%xmm0
mulsd  %xmm13,%xmm14
addsd  %xmm0,%xmm14
xorpd  %xmm0,%xmm0
ucomisd %xmm14,%xmm0
jae    1836 <Posneg2C+0x726>
movapd 0xe0(%rsp),%xmm5
subsd  %xmm3,%xmm5
movapd 0x90(%rsp),%xmm1
mulsd  %xmm5,%xmm1
addsd  %xmm4,%xmm1
movapd %xmm1,%xmm3
movapd %xmm13,%xmm1
mulsd  %xmm11,%xmm1
mulsd  %xmm13,%xmm1
addsd  %xmm14,%xmm14
addsd  %xmm1,%xmm14
mulsd  %xmm11,%xmm14
ucomisd %xmm0,%xmm14
jb     1b01 <Posneg2C+0x9f1>
xorps  %xmm0,%xmm0
sqrtsd %xmm14,%xmm0
jmp    1b2b <Posneg2C+0xa1b>
movapd %xmm5,%xmm0
jmp    1a6b <Posneg2C+0x95b>
xorpd  %xmm4,%xmm4
ucomisd %xmm4,%xmm6
jb     1858 <Posneg2C+0x748>
xorps  %xmm0,%xmm0
sqrtsd %xmm6,%xmm0
jmp    1873 <Posneg2C+0x763>
movapd 0x40(%rsp),%xmm0
divsd  %xmm4,%xmm0
movapd %xmm0,0x40(%rsp)
movsd  0x18(%rsp),%xmm8
movapd 0xa0(%rsp),%xmm2
jmp    1927 <Posneg2C+0x817>
subsd  0x68(%rsp),%xmm1
movapd 0x70(%rsp),%xmm3
mulsd  %xmm3,%xmm3
movsd  0x118(%rsp),%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm3,%xmm0
ucomisd %xmm6,%xmm0
jb     1b35 <Posneg2C+0xa25>
sqrtsd %xmm0,%xmm0
jmp    1bce <Posneg2C+0xabe>
movapd %xmm4,(%rsp)
movapd %xmm1,0x50(%rsp)
movapd %xmm3,0x20(%rsp)
movsd  %xmm11,0x38(%rsp)
movsd  %xmm5,0x10(%rsp)
movapd %xmm13,0xd0(%rsp)
movsd  %xmm14,0x30(%rsp)
movapd %xmm15,0xc0(%rsp)
movsd  %xmm8,0x18(%rsp)
call   1030 <sqrt@plt>
movsd  0x18(%rsp),%xmm8
movapd 0xc0(%rsp),%xmm15
movsd  0x30(%rsp),%xmm14
movapd 0xd0(%rsp),%xmm13
movsd  0x10(%rsp),%xmm5
movsd  0x38(%rsp),%xmm11
movapd 0x20(%rsp),%xmm3
movapd 0x50(%rsp),%xmm1
movapd (%rsp),%xmm4
movapd %xmm0,0x40(%rsp)
movapd 0xa0(%rsp),%xmm2
jmp    1927 <Posneg2C+0x817>
subsd  %xmm3,%xmm1
addsd  %xmm5,%xmm5
addsd  %xmm2,%xmm2
ucomisd %xmm0,%xmm2
jb     1b52 <Posneg2C+0xa42>
xorps  %xmm0,%xmm0
sqrtsd %xmm2,%xmm0
jmp    1b8d <Posneg2C+0xa7d>
movapd %xmm6,%xmm0
movapd %xmm10,0x70(%rsp)
call   1030 <sqrt@plt>
movapd 0x70(%rsp),%xmm10
xorpd  %xmm4,%xmm4
movapd 0x100(%rsp),%xmm1
subsd  %xmm0,%xmm1
movapd %xmm10,0x40(%rsp)
jmp    1c7c <Posneg2C+0xb6c>
movapd %xmm4,(%rsp)
movapd %xmm1,0x50(%rsp)
movapd %xmm3,0x20(%rsp)
movsd  %xmm11,0x38(%rsp)
movsd  %xmm5,0x10(%rsp)
movapd %xmm13,0xd0(%rsp)
movsd  %xmm14,0x30(%rsp)
movapd %xmm15,0xc0(%rsp)
call   1030 <sqrt@plt>
movapd 0xc0(%rsp),%xmm15
movsd  0x30(%rsp),%xmm14
movapd 0xd0(%rsp),%xmm13
movsd  0x10(%rsp),%xmm5
movsd  0x38(%rsp),%xmm11
movapd 0x20(%rsp),%xmm3
movapd 0x50(%rsp),%xmm1
movapd (%rsp),%xmm4
movsd  0x18(%rsp),%xmm8
movapd 0xa0(%rsp),%xmm2
movsd  0x68(%rsp),%xmm6
addsd  %xmm0,%xmm6
movapd %xmm6,%xmm0
movapd %xmm6,0x40(%rsp)
movapd %xmm2,%xmm7
subsd  0xf0(%rsp),%xmm7
movapd %xmm4,%xmm0
subsd  %xmm15,%xmm0
movapd %xmm8,%xmm6
mulsd  %xmm0,%xmm6
subsd  %xmm6,%xmm7
xorpd  %xmm10,%xmm10
ucomisd %xmm7,%xmm10
jae    19c3 <Posneg2C+0x8b3>
subsd  0x88(%rsp),%xmm2
movapd %xmm4,%xmm6
subsd  %xmm13,%xmm6
mulsd  %xmm6,%xmm14
subsd  %xmm14,%xmm2
ucomisd %xmm2,%xmm10
jae    19ed <Posneg2C+0x8dd>
movapd 0xe0(%rsp),%xmm0
subsd  %xmm3,%xmm0
movapd %xmm0,0xe0(%rsp)
movapd %xmm11,%xmm0
mulsd  %xmm6,%xmm0
mulsd  %xmm6,%xmm0
addsd  %xmm2,%xmm2
addsd  %xmm0,%xmm2
mulsd  %xmm11,%xmm2
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm2
jb     1ba9 <Posneg2C+0xa99>
xorps  %xmm0,%xmm0
sqrtsd %xmm2,%xmm0
jmp    1bbc <Posneg2C+0xaac>
addsd  %xmm11,%xmm11
mulsd  %xmm5,%xmm11
ucomisd %xmm10,%xmm11
jb     1a66 <Posneg2C+0x956>
xorps  %xmm1,%xmm1
sqrtsd %xmm11,%xmm1
xorpd  0x618(%rip),%xmm1
jmp    1c7c <Posneg2C+0xb6c>
mulsd  %xmm8,%xmm8
movapd 0xb0(%rsp),%xmm2
movsd  0x60d(%rip),%xmm5
addsd  %xmm5,%xmm2
mulsd  %xmm8,%xmm2
divsd  %xmm11,%xmm2
addsd  %xmm7,%xmm7
addsd  %xmm7,%xmm2
movapd 0x90(%rsp),%xmm6
addsd  %xmm6,%xmm5
mulsd  %xmm3,%xmm5
subsd  %xmm1,%xmm3
mulsd  %xmm6,%xmm3
subsd  %xmm5,%xmm3
mulsd  %xmm6,%xmm3
divsd  %xmm11,%xmm3
xorpd  0x5b9(%rip),%xmm2
mulsd  %xmm0,%xmm0
addsd  %xmm7,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1bd7 <Posneg2C+0xac7>
sqrtsd %xmm0,%xmm0
jmp    1c04 <Posneg2C+0xaf4>
movapd %xmm11,%xmm0
movapd %xmm4,(%rsp)
call   1030 <sqrt@plt>
movapd (%rsp),%xmm4
movapd %xmm0,%xmm1
xorpd  0x57a(%rip),%xmm1
jmp    1c7c <Posneg2C+0xb6c>
movapd %xmm15,%xmm0
subsd  %xmm4,%xmm0
mulsd  %xmm0,%xmm0
addsd  %xmm5,%xmm5
addsd  %xmm5,%xmm0
movsd  0x567(%rip),%xmm8
movapd %xmm8,%xmm2
movapd 0x90(%rsp),%xmm7
subsd  %xmm7,%xmm2
mulsd  %xmm15,%xmm2
movapd %xmm4,%xmm6
addsd  %xmm4,%xmm6
subsd  %xmm6,%xmm2
mulsd  %xmm15,%xmm2
addsd  %xmm8,%xmm7
mulsd  %xmm2,%xmm7
subsd  %xmm3,%xmm1
addsd  %xmm5,%xmm7
movapd %xmm7,%xmm5
subsd  %xmm4,%xmm3
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm0
jb     1c37 <Posneg2C+0xb27>
sqrtsd %xmm0,%xmm0
jmp    1c70 <Posneg2C+0xb60>
movapd %xmm14,%xmm0
movapd %xmm3,0x90(%rsp)
movapd %xmm10,0x70(%rsp)
call   1030 <sqrt@plt>
movapd 0x70(%rsp),%xmm10
movapd 0x90(%rsp),%xmm3
movapd %xmm3,%xmm1
subsd  %xmm0,%xmm1
jmp    1b99 <Posneg2C+0xa89>
movapd %xmm4,(%rsp)
movapd %xmm1,0x50(%rsp)
call   1030 <sqrt@plt>
movapd 0x50(%rsp),%xmm1
movapd (%rsp),%xmm4
jmp    1bce <Posneg2C+0xabe>
movapd %xmm2,%xmm0
movapd %xmm1,0x50(%rsp)
movapd %xmm3,0x20(%rsp)
movsd  %xmm5,0x10(%rsp)
movapd %xmm10,0x70(%rsp)
call   1030 <sqrt@plt>
movapd 0x70(%rsp),%xmm10
movsd  0x10(%rsp),%xmm5
movapd 0x20(%rsp),%xmm3
movapd 0x50(%rsp),%xmm1
addsd  %xmm3,%xmm0
divsd  %xmm0,%xmm5
subsd  %xmm5,%xmm1
xorpd  %xmm4,%xmm4
movapd %xmm10,0x40(%rsp)
jmp    1c7c <Posneg2C+0xb6c>
movapd %xmm2,%xmm0
movapd %xmm4,(%rsp)
call   1030 <sqrt@plt>
movapd (%rsp),%xmm4
movapd 0x90(%rsp),%xmm1
mulsd  0xe0(%rsp),%xmm1
subsd  %xmm0,%xmm1
jmp    1c7c <Posneg2C+0xb6c>
movapd %xmm4,(%rsp)
movapd %xmm3,0x20(%rsp)
movapd %xmm2,0xb0(%rsp)
call   1030 <sqrt@plt>
movapd 0xb0(%rsp),%xmm2
movapd 0x20(%rsp),%xmm3
movapd (%rsp),%xmm4
addsd  %xmm0,%xmm3
divsd  %xmm3,%xmm2
movapd %xmm2,%xmm1
jmp    1c7c <Posneg2C+0xb6c>
movapd %xmm4,(%rsp)
movapd %xmm3,0x20(%rsp)
call   1030 <sqrt@plt>
movapd 0x20(%rsp),%xmm3
movapd (%rsp),%xmm4
subsd  %xmm0,%xmm3
movapd %xmm3,%xmm1
jmp    1c7c <Posneg2C+0xb6c>
movapd %xmm4,(%rsp)
movapd %xmm1,0x50(%rsp)
movapd %xmm3,0x20(%rsp)
movapd %xmm5,0x90(%rsp)
call   1030 <sqrt@plt>
movapd 0x90(%rsp),%xmm5
movapd 0x20(%rsp),%xmm3
movapd 0x50(%rsp),%xmm1
movapd (%rsp),%xmm4
addsd  %xmm0,%xmm3
divsd  %xmm3,%xmm5
subsd  %xmm5,%xmm1
movsd  %xmm4,(%rbx)
movaps 0x40(%rsp),%xmm0
movsd  %xmm0,(%r15)
movsd  %xmm1,(%r14)
add    $0x120,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@DBL_EPSILON = global double 0.000000e+00
define void @Posneg2C(double %0, double %1, double %2, double %3, double %4, double %5, double* %6, double* %7, double* %8) {
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double*
%17 = alloca double*
%18 = alloca double*
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
store double %0, double* %10
store double %1, double* %11
store double %2, double* %12
store double %3, double* %13
store double %4, double* %14
store double %5, double* %15
store double* %6, double** %16
store double* %7, double** %17
store double* %8, double** %18
%39 = load double, double* %14
%40 = load double, double* %14
%41 = fneg double %39
%42 = call double @llvm.fmuladd.f64(double %41, double %40, double 1.000000e+00)
store double %42, double* %30
%43 = load double, double* %30
%44 = load double, double* @DBL_EPSILON
%45 = fcmp olt double %43, %44
br i1 %45, label %46, label %48
46: ; preds = %9
%47 = load double, double* @DBL_EPSILON
store double %47, double* %30
br label %48
48: ; preds = %46, %9
%49 = load double, double* %13
%50 = fneg double %49
%51 = load double, double* %14
%52 = fdiv double %50, %51
store double %52, double* %19
%53 = load double, double* %19
%54 = load double, double* %11
%55 = load double, double* %19
%56 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %55, double %54)
%57 = fmul double %53, %56
store double %57, double* %22
%58 = load double, double* %11
%59 = load double, double* %19
%60 = fsub double %58, %59
store double %60, double* %25
%61 = load double, double* %12
%62 = fneg double %61
%63 = load double, double* %14
%64 = fdiv double %62, %63
store double %64, double* %20
%65 = load double, double* %20
%66 = load double, double* %11
%67 = load double, double* %20
%68 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %67, double %66)
%69 = fmul double %65, %68
store double %69, double* %23
%70 = load double, double* %11
%71 = load double, double* %20
%72 = fsub double %70, %71
store double %72, double* %26
%73 = load double, double* %13
%74 = fmul double 5.000000e-01, %73
%75 = load double, double* %13
%76 = fmul double %74, %75
store double %76, double* %21
%77 = load double, double* %10
%78 = load double, double* %14
%79 = load double, double* %13
%80 = call double @llvm.fmuladd.f64(double %78, double %79, double %77)
store double %80, double* %27
%81 = load double, double* %11
%82 = load double, double* %14
%83 = load double, double* %13
%84 = call double @llvm.fmuladd.f64(double %82, double %83, double %81)
store double %84, double* %24
%85 = load double, double* %27
%86 = fcmp olt double %85, 0.000000e+00
br i1 %86, label %87, label %242
87: ; preds = %48
%88 = load double, double* %27
%89 = load double, double* %30
%90 = fdiv double %88, %89
store double %90, double* %28
%91 = load double, double* %15
%92 = load double, double* %30
%93 = load double, double* %28
%94 = fmul double %92, %93
%95 = load double, double* %28
%96 = load double, double* %13
%97 = load double, double* %13
%98 = fmul double %96, %97
%99 = call double @llvm.fmuladd.f64(double %94, double %95, double %98)
%100 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %99, double %91)
store double %100, double* %29
%101 = load double, double* %30
%102 = fmul double 2.000000e+00, %101
%103 = load double, double* %15
%104 = fmul double %102, %103
%105 = call double @sqrt(double %104)
store double %105, double* %31
%106 = load double, double* %29
%107 = load double, double* %21
%108 = fsub double %106, %107
%109 = load double, double* %27
%110 = load double, double* %28
%111 = fneg double %109
%112 = call double @llvm.fmuladd.f64(double %111, double %110, double %108)
store double %112, double* %33
%113 = load double, double* %33
%114 = fcmp ole double %113, 0.000000e+00
br i1 %114, label %115, label %122
115: ; preds = %87
%116 = load double, double* %30
%117 = fmul double 2.000000e+00, %116
%118 = load double, double* %15
%119 = fmul double %117, %118
%120 = call double @sqrt(double %119)
%121 = fneg double %120
store double %121, double* %32
br label %241
122: ; preds = %87
%123 = load double, double* %29
%124 = load double, double* %21
%125 = fsub double %123, %124
%126 = load double, double* %24
%127 = load double, double* %28
%128 = fneg double %126
%129 = call double @llvm.fmuladd.f64(double %128, double %127, double %125)
store double %129, double* %34
%130 = load double, double* %34
%131 = fcmp ole double %130, 0.000000e+00
br i1 %131, label %132, label %138
132: ; preds = %122
%133 = load double, double* %29
%134 = load double, double* %21
%135 = fsub double %133, %134
%136 = load double, double* %28
%137 = fdiv double %135, %136
store double %137, double* %32
br label %240
138: ; preds = %122
%139 = load double, double* %29
%140 = load double, double* %22
%141 = fsub double %139, %140
%142 = load double, double* %25
%143 = load double, double* %28
%144 = load double, double* %19
%145 = fsub double %143, %144
%146 = fneg double %142
%147 = call double @llvm.fmuladd.f64(double %146, double %145, double %141)
store double %147, double* %35
%148 = load double, double* %35
%149 = fcmp ole double %148, 0.000000e+00
br i1 %149, label %150, label %163
150: ; preds = %138
%151 = load double, double* %11
%152 = load double, double* %10
%153 = fsub double %151, %152
%154 = load double, double* %30
%155 = fmul double 2.000000e+00, %154
%156 = load double, double* %34
%157 = load double, double* %27
%158 = load double, double* %27
%159 = fmul double %157, %158
%160 = call double @llvm.fmuladd.f64(double %155, double %156, double %159)
%161 = call double @sqrt(double %160)
%162 = fsub double %153, %161
store double %162, double* %32
br label %239
163: ; preds = %138
%164 = load double, double* %29
%165 = load double, double* %23
%166 = fsub double %164, %165
%167 = load double, double* %26
%168 = load double, double* %28
%169 = load double, double* %20
%170 = fsub double %168, %169
%171 = fneg double %167
%172 = call double @llvm.fmuladd.f64(double %171, double %170, double %166)
store double %172, double* %36
%173 = load double, double* %36
%174 = fcmp ole double %173, 0.000000e+00
br i1 %174, label %175, label %211
175: ; preds = %163
%176 = load double, double* %35
%177 = load double, double* %19
%178 = load double, double* %28
%179 = fsub double %177, %178
%180 = load double, double* %19
%181 = load double, double* %28
%182 = fsub double %180, %181
%183 = fmul double %179, %182
%184 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %176, double %183)
store double %184, double* %37
%185 = load double, double* %19
%186 = load double, double* %14
%187 = fsub double 1.000000e+00, %186
%188 = load double, double* %28
%189 = fmul double 2.000000e+00, %188
%190 = fneg double %189
%191 = call double @llvm.fmuladd.f64(double %185, double %187, double %190)
%192 = load double, double* %19
%193 = fmul double %191, %192
%194 = load double, double* %14
%195 = fadd double 1.000000e+00, %194
%196 = fmul double %193, %195
store double %196, double* %38
%197 = load double, double* %11
%198 = load double, double* %13
%199 = fsub double %197, %198
%200 = load double, double* %35
%201 = load double, double* %38
%202 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %200, double %201)
%203 = load double, double* %13
%204 = load double, double* %28
%205 = fsub double %203, %204
%206 = load double, double* %37
%207 = call double @sqrt(double %206)
%208 = fadd double %205, %207
%209 = fdiv double %202, %208
%210 = fsub double %199, %209
store double %210, double* %32
br label %238
211: ; preds = %163
%212 = load double, double* %30
%213 = load double, double* %36
%214 = load double, double* %30
%215 = load double, double* %20
%216 = load double, double* %28
%217 = fsub double %215, %216
%218 = fmul double %214, %217
%219 = load double, double* %20
%220 = load double, double* %28
%221 = fsub double %219, %220
%222 = fmul double %218, %221
%223 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %213, double %222)
%224 = fmul double %212, %223
store double %224, double* %37
%225 = load double, double* %11
%226 = load double, double* %10
%227 = fsub double %225, %226
%228 = load double, double* %14
%229 = load double, double* %13
%230 = load double, double* %12
%231 = fsub double %229, %230
%232 = fneg double %228
%233 = call double @llvm.fmuladd.f64(double %232, double %231, double %227)
store double %233, double* %38
%234 = load double, double* %38
%235 = load double, double* %37
%236 = call double @sqrt(double %235)
%237 = fsub double %234, %236
store double %237, double* %32
br label %238
238: ; preds = %211, %175
br label %239
239: ; preds = %238, %150
br label %240
240: ; preds = %239, %132
br label %241
241: ; preds = %240, %115
br label %477
242: ; preds = %48
%243 = load double, double* %24
%244 = fcmp ole double %243, 0.000000e+00
br i1 %244, label %245, label %316
245: ; preds = %242
store double 0.000000e+00, double* %28
%246 = load double, double* %15
%247 = load double, double* %13
%248 = fmul double 5.000000e-01, %247
%249 = load double, double* %13
%250 = call double @llvm.fmuladd.f64(double %248, double %249, double %246)
store double %250, double* %29
%251 = load double, double* %27
%252 = load double, double* %30
%253 = fmul double 2.000000e+00, %252
%254 = load double, double* %15
%255 = fmul double %253, %254
%256 = call double @sqrt(double %255)
%257 = fadd double %251, %256
store double %257, double* %31
%258 = load double, double* %29
%259 = load double, double* %22
%260 = fsub double %258, %259
%261 = load double, double* %25
%262 = load double, double* %19
%263 = call double @llvm.fmuladd.f64(double %261, double %262, double %260)
store double %263, double* %33
%264 = load double, double* %33
%265 = fcmp ole double %264, 0.000000e+00
br i1 %265, label %266, label %274
266: ; preds = %245
%267 = load double, double* %24
%268 = load double, double* %30
%269 = fmul double 2.000000e+00, %268
%270 = load double, double* %15
%271 = fmul double %269, %270
%272 = call double @sqrt(double %271)
%273 = fsub double %267, %272
store double %273, double* %32
br label %315
274: ; preds = %245
%275 = load double, double* %29
%276 = load double, double* %23
%277 = fsub double %275, %276
%278 = load double, double* %26
%279 = load double, double* %20
%280 = call double @llvm.fmuladd.f64(double %278, double %279, double %277)
store double %280, double* %34
%281 = load double, double* %34
%282 = fcmp ole double %281, 0.000000e+00
br i1 %282, label %283, label %296
283: ; preds = %274
%284 = load double, double* %11
%285 = load double, double* %13
%286 = fsub double %284, %285
%287 = load double, double* %15
%288 = fmul double 2.000000e+00, %287
%289 = load double, double* %13
%290 = load double, double* %29
%291 = fmul double 2.000000e+00, %290
%292 = call double @sqrt(double %291)
%293 = fadd double %289, %292
%294 = fdiv double %288, %293
%295 = fsub double %286, %294
store double %295, double* %32
br label %314
296: ; preds = %274
%297 = load double, double* %14
%298 = load double, double* %12
%299 = load double, double* %13
%300 = fsub double %298, %299
%301 = load double, double* %24
%302 = call double @llvm.fmuladd.f64(double %297, double %300, double %301)
%303 = load double, double* %30
%304 = load double, double* %34
%305 = load double, double* %30
%306 = load double, double* %20
%307 = fmul double %305, %306
%308 = load double, double* %20
%309 = fmul double %307, %308
%310 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %304, double %309)
%311 = fmul double %303, %310
%312 = call double @sqrt(double %311)
%313 = fsub double %302, %312
store double %313, double* %32
br label %314
314: ; preds = %296, %283
br label %315
315: ; preds = %314, %266
br label %476
316: ; preds = %242
%317 = load double, double* %24
%318 = load double, double* %30
%319 = fdiv double %317, %318
store double %319, double* %28
%320 = load double, double* %15
%321 = load double, double* %30
%322 = load double, double* %28
%323 = fmul double %321, %322
%324 = load double, double* %28
%325 = load double, double* %13
%326 = load double, double* %13
%327 = fmul double %325, %326
%328 = call double @llvm.fmuladd.f64(double %323, double %324, double %327)
%329 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %328, double %320)
store double %329, double* %29
%330 = load double, double* %29
%331 = load double, double* %21
%332 = fsub double %330, %331
%333 = load double, double* %24
%334 = load double, double* %28
%335 = fneg double %333
%336 = call double @llvm.fmuladd.f64(double %335, double %334, double %332)
store double %336, double* %33
%337 = load double, double* %33
%338 = fcmp ole double %337, 0.000000e+00
br i1 %338, label %339, label %345
339: ; preds = %316
%340 = load double, double* %30
%341 = fmul double 2.000000e+00, %340
%342 = load double, double* %15
%343 = fmul double %341, %342
%344 = call double @sqrt(double %343)
store double %344, double* %31
br label %377
345: ; preds = %316
%346 = load double, double* %29
%347 = load double, double* %21
%348 = fsub double %346, %347
%349 = load double, double* %27
%350 = load double, double* %28
%351 = fneg double %349
%352 = call double @llvm.fmuladd.f64(double %351, double %350, double %348)
store double %352, double* %34
%353 = load double, double* %34
%354 = fcmp ole double %353, 0.000000e+00
br i1 %354, label %355, label %361
355: ; preds = %345
%356 = load double, double* %29
%357 = load double, double* %21
%358 = fsub double %356, %357
%359 = load double, double* %28
%360 = fdiv double %358, %359
store double %360, double* %31
br label %376
361: ; preds = %345
%362 = load double, double* %10
%363 = load double, double* %11
%364 = fsub double %362, %363
%365 = load double, double* %30
%366 = load double, double* %34
%367 = load double, double* %30
%368 = load double, double* %28
%369 = fmul double %367, %368
%370 = load double, double* %28
%371 = fmul double %369, %370
%372 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %366, double %371)
%373 = fmul double %365, %372
%374 = call double @sqrt(double %373)
%375 = fadd double %364, %374
store double %375, double* %31
br label %376
376: ; preds = %361, %355
br label %377
377: ; preds = %376, %339
%378 = load double, double* %29
%379 = load double, double* %22
%380 = fsub double %378, %379
%381 = load double, double* %25
%382 = load double, double* %28
%383 = load double, double* %19
%384 = fsub double %382, %383
%385 = fneg double %381
%386 = call double @llvm.fmuladd.f64(double %385, double %384, double %380)
store double %386, double* %33
%387 = load double, double* %33
%388 = fcmp ole double %387, 0.000000e+00
br i1 %388, label %389, label %396
389: ; preds = %377
%390 = load double, double* %30
%391 = fmul double 2.000000e+00, %390
%392 = load double, double* %15
%393 = fmul double %391, %392
%394 = call double @sqrt(double %393)
%395 = fneg double %394
store double %395, double* %32
br label %475
396: ; preds = %377
%397 = load double, double* %29
%398 = load double, double* %23
%399 = fsub double %397, %398
%400 = load double, double* %26
%401 = load double, double* %28
%402 = load double, double* %20
%403 = fsub double %401, %402
%404 = fneg double %400
%405 = call double @llvm.fmuladd.f64(double %404, double %403, double %399)
store double %405, double* %34
%406 = load double, double* %34
%407 = fcmp ole double %406, 0.000000e+00
br i1 %407, label %408, label %453
408: ; preds = %396
%409 = load double, double* %33
%410 = load double, double* %11
%411 = load double, double* %19
%412 = fsub double %410, %411
%413 = load double, double* %11
%414 = load double, double* %19
%415 = fsub double %413, %414
%416 = fmul double %412, %415
%417 = load double, double* %14
%418 = load double, double* %14
%419 = call double @llvm.fmuladd.f64(double %417, double %418, double 1.000000e+00)
%420 = fmul double %416, %419
%421 = load double, double* %30
%422 = fdiv double %420, %421
%423 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %409, double %422)
store double %423, double* %37
%424 = load double, double* %14
%425 = load double, double* %13
%426 = load double, double* %11
%427 = fsub double %425, %426
%428 = load double, double* %14
%429 = fadd double 1.000000e+00, %428
%430 = load double, double* %13
%431 = fmul double %429, %430
%432 = fneg double %431
%433 = call double @llvm.fmuladd.f64(double %424, double %427, double %432)
%434 = load double, double* %14
%435 = fmul double %433, %434
%436 = load double, double* %30
%437 = fdiv double %435, %436
store double %437, double* %38
%438 = load double, double* %37
%439 = fneg double %438
%440 = load double, double* %38
%441 = load double, double* %33
%442 = load double, double* %28
%443 = load double, double* %19
%444 = fsub double %442, %443
%445 = load double, double* %28
%446 = load double, double* %19
%447 = fsub double %445, %446
%448 = fmul double %444, %447
%449 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %441, double %448)
%450 = call double @sqrt(double %449)
%451 = fadd double %440, %450
%452 = fdiv double %439, %451
store double %452, double* %32
br label %474
453: ; preds = %396
%454 = load double, double* %14
%455 = load double, double* %12
%456 = load double, double* %13
%457 = fsub double %455, %456
%458 = load double, double* %30
%459 = load double, double* %34
%460 = load double, double* %30
%461 = load double, double* %28
%462 = load double, double* %20
%463 = fsub double %461, %462
%464 = fmul double %460, %463
%465 = load double, double* %28
%466 = load double, double* %20
%467 = fsub double %465, %466
%468 = fmul double %464, %467
%469 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %459, double %468)
%470 = fmul double %458, %469
%471 = call double @sqrt(double %470)
%472 = fneg double %471
%473 = call double @llvm.fmuladd.f64(double %454, double %457, double %472)
store double %473, double* %32
br label %474
474: ; preds = %453, %408
br label %475
475: ; preds = %474, %389
br label %476
476: ; preds = %475, %315
br label %477
477: ; preds = %476, %241
%478 = load double, double* %28
%479 = load double*, double** %16
store double %478, double* %479
%480 = load double, double* %31
%481 = load double*, double** %17
store double %480, double* %481
%482 = load double, double* %32
%483 = load double*, double** %18
store double %482, double* %483
ret void
}

LLVM IR (-O2):
@DBL_EPSILON = global double 0.000000e+00
define void @Posneg2C(double %0, double %1, double %2, double %3, double %4, double %5, double* nocapture writeonly %6, double* nocapture writeonly %7, double* nocapture writeonly %8) {
%10 = fneg double %4
%11 = tail call double @llvm.fmuladd.f64(double %10, double %4, double 1.000000e+00)
%12 = load double, double* @DBL_EPSILON
%13 = fcmp olt double %11, %12
%14 = select i1 %13, double %12, double %11
%15 = fneg double %3
%16 = fdiv double %15, %4
%17 = tail call double @llvm.fmuladd.f64(double %16, double -5.000000e-01, double %1)
%18 = fmul double %16, %17
%19 = fsub double %1, %16
%20 = fneg double %2
%21 = fdiv double %20, %4
%22 = tail call double @llvm.fmuladd.f64(double %21, double -5.000000e-01, double %1)
%23 = fmul double %21, %22
%24 = fsub double %1, %21
%25 = fmul double %3, 5.000000e-01
%26 = fmul double %25, %3
%27 = tail call double @llvm.fmuladd.f64(double %4, double %3, double %0)
%28 = tail call double @llvm.fmuladd.f64(double %4, double %3, double %1)
%29 = fcmp olt double %27, 0.000000e+00
br i1 %29, label %30, label %98
30: ; preds = %9
%31 = fdiv double %27, %14
%32 = fmul double %14, %31
%33 = fmul double %3, %3
%34 = tail call double @llvm.fmuladd.f64(double %32, double %31, double %33)
%35 = tail call double @llvm.fmuladd.f64(double %34, double 5.000000e-01, double %5)
%36 = fmul double %14, 2.000000e+00
%37 = fmul double %36, %5
%38 = tail call double @sqrt(double %37)
%39 = fsub double %35, %26
%40 = fneg double %27
%41 = tail call double @llvm.fmuladd.f64(double %40, double %31, double %39)
%42 = fcmp ugt double %41, 0.000000e+00
br i1 %42, label %46, label %43
43: ; preds = %30
%44 = tail call double @sqrt(double %37)
%45 = fneg double %44
br label %206
46: ; preds = %30
%47 = fneg double %28
%48 = tail call double @llvm.fmuladd.f64(double %47, double %31, double %39)
%49 = fcmp ugt double %48, 0.000000e+00
br i1 %49, label %52, label %50
50: ; preds = %46
%51 = fdiv double %39, %31
br label %206
52: ; preds = %46
%53 = fsub double %35, %18
%54 = fsub double %31, %16
%55 = fneg double %19
%56 = tail call double @llvm.fmuladd.f64(double %55, double %54, double %53)
%57 = fcmp ugt double %56, 0.000000e+00
br i1 %57, label %64, label %58
58: ; preds = %52
%59 = fsub double %1, %0
%60 = fmul double %27, %27
%61 = tail call double @llvm.fmuladd.f64(double %36, double %48, double %60)
%62 = tail call double @sqrt(double %61)
%63 = fsub double %59, %62
br label %206
64: ; preds = %52
%65 = fsub double %35, %23
%66 = fsub double %31, %21
%67 = fneg double %24
%68 = tail call double @llvm.fmuladd.f64(double %67, double %66, double %65)
%69 = fcmp ugt double %68, 0.000000e+00
br i1 %69, label %87, label %70
70: ; preds = %64
%71 = fsub double %16, %31
%72 = fmul double %71, %71
%73 = tail call double @llvm.fmuladd.f64(double %56, double 2.000000e+00, double %72)
%74 = fsub double 1.000000e+00, %4
%75 = fmul double %31, -2.000000e+00
%76 = tail call double @llvm.fmuladd.f64(double %16, double %74, double %75)
%77 = fmul double %16, %76
%78 = fadd double %4, 1.000000e+00
%79 = fmul double %78, %77
%80 = fsub double %1, %3
%81 = tail call double @llvm.fmuladd.f64(double %56, double 2.000000e+00, double %79)
%82 = fsub double %3, %31
%83 = tail call double @sqrt(double %73)
%84 = fadd double %82, %83
%85 = fdiv double %81, %84
%86 = fsub double %80, %85
br label %206
87: ; preds = %64
%88 = fsub double %21, %31
%89 = fmul double %14, %88
%90 = fmul double %88, %89
%91 = tail call double @llvm.fmuladd.f64(double %68, double 2.000000e+00, double %90)
%92 = fmul double %14, %91
%93 = fsub double %1, %0
%94 = fsub double %3, %2
%95 = tail call double @llvm.fmuladd.f64(double %10, double %94, double %93)
%96 = tail call double @sqrt(double %92)
%97 = fsub double %95, %96
br label %206
98: ; preds = %9
%99 = fcmp ugt double %28, 0.000000e+00
br i1 %99, label %133, label %100
100: ; preds = %98
%101 = tail call double @llvm.fmuladd.f64(double %25, double %3, double %5)
%102 = fmul double %14, 2.000000e+00
%103 = fmul double %102, %5
%104 = tail call double @sqrt(double %103)
%105 = fadd double %27, %104
%106 = fsub double %101, %18
%107 = tail call double @llvm.fmuladd.f64(double %19, double %16, double %106)
%108 = fcmp ugt double %107, 0.000000e+00
br i1 %108, label %112, label %109
109: ; preds = %100
%110 = tail call double @sqrt(double %103)
%111 = fsub double %28, %110
br label %206
112: ; preds = %100
%113 = fsub double %101, %23
%114 = tail call double @llvm.fmuladd.f64(double %24, double %21, double %113)
%115 = fcmp ugt double %114, 0.000000e+00
br i1 %115, label %124, label %116
116: ; preds = %112
%117 = fsub double %1, %3
%118 = fmul double %5, 2.000000e+00
%119 = fmul double %101, 2.000000e+00
%120 = tail call double @sqrt(double %119)
%121 = fadd double %120, %3
%122 = fdiv double %118, %121
%123 = fsub double %117, %122
br label %206
124: ; preds = %112
%125 = fsub double %2, %3
%126 = tail call double @llvm.fmuladd.f64(double %4, double %125, double %28)
%127 = fmul double %21, %14
%128 = fmul double %21, %127
%129 = tail call double @llvm.fmuladd.f64(double %114, double 2.000000e+00, double %128)
%130 = fmul double %14, %129
%131 = tail call double @sqrt(double %130)
%132 = fsub double %126, %131
br label %206
133: ; preds = %98
%134 = fdiv double %28, %14
%135 = fmul double %14, %134
%136 = fmul double %3, %3
%137 = tail call double @llvm.fmuladd.f64(double %135, double %134, double %136)
%138 = tail call double @llvm.fmuladd.f64(double %137, double 5.000000e-01, double %5)
%139 = fsub double %138, %26
%140 = fneg double %28
%141 = tail call double @llvm.fmuladd.f64(double %140, double %134, double %139)
%142 = fcmp ugt double %141, 0.000000e+00
br i1 %142, label %147, label %143
143: ; preds = %133
%144 = fmul double %14, 2.000000e+00
%145 = fmul double %144, %5
%146 = tail call double @sqrt(double %145)
br label %160
147: ; preds = %133
%148 = fneg double %27
%149 = tail call double @llvm.fmuladd.f64(double %148, double %134, double %139)
%150 = fcmp ugt double %149, 0.000000e+00
br i1 %150, label %153, label %151
151: ; preds = %147
%152 = fdiv double %139, %134
br label %160
153: ; preds = %147
%154 = fsub double %0, %1
%155 = fmul double %134, %135
%156 = tail call double @llvm.fmuladd.f64(double %149, double 2.000000e+00, double %155)
%157 = fmul double %14, %156
%158 = tail call double @sqrt(double %157)
%159 = fadd double %154, %158
br label %160
160: ; preds = %151, %153, %143
%161 = phi double [ %146, %143 ], [ %152, %151 ], [ %159, %153 ]
%162 = fsub double %138, %18
%163 = fsub double %134, %16
%164 = fneg double %19
%165 = tail call double @llvm.fmuladd.f64(double %164, double %163, double %162)
%166 = fcmp ugt double %165, 0.000000e+00
br i1 %166, label %172, label %167
167: ; preds = %160
%168 = fmul double %14, 2.000000e+00
%169 = fmul double %168, %5
%170 = tail call double @sqrt(double %169)
%171 = fneg double %170
br label %206
172: ; preds = %160
%173 = fsub double %138, %23
%174 = fsub double %134, %21
%175 = fneg double %24
%176 = tail call double @llvm.fmuladd.f64(double %175, double %174, double %173)
%177 = fcmp ugt double %176, 0.000000e+00
br i1 %177, label %197, label %178
178: ; preds = %172
%179 = fmul double %19, %19
%180 = tail call double @llvm.fmuladd.f64(double %4, double %4, double 1.000000e+00)
%181 = fmul double %180, %179
%182 = fdiv double %181, %14
%183 = tail call double @llvm.fmuladd.f64(double %165, double 2.000000e+00, double %182)
%184 = fsub double %3, %1
%185 = fadd double %4, 1.000000e+00
%186 = fneg double %185
%187 = fmul double %186, %3
%188 = tail call double @llvm.fmuladd.f64(double %4, double %184, double %187)
%189 = fmul double %188, %4
%190 = fdiv double %189, %14
%191 = fneg double %183
%192 = fmul double %163, %163
%193 = tail call double @llvm.fmuladd.f64(double %165, double 2.000000e+00, double %192)
%194 = tail call double @sqrt(double %193)
%195 = fadd double %190, %194
%196 = fdiv double %191, %195
br label %206
197: ; preds = %172
%198 = fsub double %2, %3
%199 = fmul double %14, %174
%200 = fmul double %174, %199
%201 = tail call double @llvm.fmuladd.f64(double %176, double 2.000000e+00, double %200)
%202 = fmul double %14, %201
%203 = tail call double @sqrt(double %202)
%204 = fneg double %203
%205 = tail call double @llvm.fmuladd.f64(double %4, double %198, double %204)
br label %206
206: ; preds = %116, %124, %109, %178, %197, %167, %43, %58, %87, %70, %50
%207 = phi double [ %38, %43 ], [ %38, %50 ], [ %38, %58 ], [ %38, %70 ], [ %38, %87 ], [ %105, %109 ], [ %105, %116 ], [ %105, %124 ], [ %161, %167 ], [ %161, %178 ], [ %161, %197 ]
%208 = phi double [ %45, %43 ], [ %51, %50 ], [ %63, %58 ], [ %86, %70 ], [ %97, %87 ], [ %111, %109 ], [ %123, %116 ], [ %132, %124 ], [ %171, %167 ], [ %196, %178 ], [ %205, %197 ]
%209 = phi double [ %31, %43 ], [ %31, %50 ], [ %31, %58 ], [ %31, %70 ], [ %31, %87 ], [ 0.000000e+00, %109 ], [ 0.000000e+00, %116 ], [ 0.000000e+00, %124 ], [ %134, %167 ], [ %134, %178 ], [ %134, %197 ]
store double %209, double* %6
store double %207, double* %7
store double %208, double* %8
ret void
}