#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 const fabs(double);
double pow(double, double const);
int /*<<< orphan*/ printf(char *);
double sqrt(double const);
void Riemann(double *U4, double *U1, double *F) {
  const double gamma = 1.4;
  const double g1 = (2 * gamma) / (gamma - 1);
  const double g2 = (gamma + 1) / (2 * gamma);
  const double g3 = (gamma + 1) / (gamma - 1);
  const double tol = 1e-10;
  int i;
  double rho1, u1, p1, a1;
  rho1 = U1[0];
  u1 = U1[1] / rho1;
  p1 = (U1[2] - 0.5 * rho1 * u1 * u1) * (gamma - 1.0);
  a1 = sqrt(gamma * p1 / rho1);
  double rho4, u4, p4, a4;
  rho4 = U4[0];
  u4 = U4[1] / rho4;
  p4 = (U4[2] - 0.5 * rho4 * u4 * u4) * (gamma - 1.0);
  a4 = sqrt(gamma * p4 / rho4);
  double x, y, fx, fy, z, fz;
  x = 0.001 * p4 / p1;
  y = 1.0 * p4 / p1;
  fx =
      pow(p4 / p1, g1) -
      pow(x, g1) *
          (1 + ((gamma - 1) / (2 * a4)) *
                   (u4 - u1 - (a1 / gamma) * (x - 1) / sqrt(g2 * (x - 1) + 1)));
  fy =
      pow(p4 / p1, g1) -
      pow(y, g1) *
          (1 + ((gamma - 1) / (2 * a4)) *
                   (u4 - u1 - (a1 / gamma) * (y - 1) / sqrt(g2 * (y - 1) + 1)));
  while (fabs(x - y) > tol) {
    z = y - fy * (y - x) / (fy - fx);
    fz = pow(p4 / p1, g1) -
         pow(z, g1) *
             (1 +
              ((gamma - 1) / (2 * a4)) *
                  (u4 - u1 - (a1 / gamma) * (z - 1) / sqrt(g2 * (z - 1) + 1)));
    x = y;
    fx = fy;
    y = z;
    fy = fz;
  }
  double rho2, u2, p2, a2;
  p2 = p1 * x;
  u2 = u1 + (a1 / gamma) * ((x - 1) / sqrt(g2 * (x - 1) + 1));
  a2 = a1 * sqrt(x * (g3 + x) / (1 + g3 * x));
  rho2 = gamma * p2 / (a2 * a2);
  double rho3, u3, p3, a3;
  p3 = p2;
  u3 = u2;
  a3 = (u4 + 2.0 * a4 / (gamma - 1) - u3) * (gamma - 1) / 2.0;
  rho3 = gamma * p3 / (a3 * a3);
  double s1, s2, s3, s4;
  s1 = u1 + a1 * sqrt(g2 * (x - 1) + 1);
  s2 = u2;
  s3 = u3 - a3;
  s4 = u4 - a4;
  double f1, f2, f3;
  double rho, a, u, p;
  if (s4 > 0) {
    f1 = rho4 * u4;
    f2 = rho4 * u4 * u4 + p4;
    f3 = 0.5 * rho4 * u4 * u4 * u4 + rho4 * a4 * a4 * u4 / (gamma - 1.0);
  } else if (s3 > 0) {
    u = ((gamma - 1.0) * u4 + 2.0 * a4) / (gamma + 1.0);
    a = u;
    p = p4 * pow(a / a4, 2.0 * gamma / (gamma - 1.0));
    if (a < 0 || p < 0) {
      printf("Negative a or p in Riemann");
    }
    rho = gamma * p / (a * a);
    f1 = rho * u;
    f2 = rho * u * u + p;
    f3 = 0.5 * rho * u * u * u + rho * a * a * u / (gamma - 1.0);
  } else if (s2 > 0) {
    f1 = rho3 * u3;
    f2 = rho3 * u3 * u3 + p3;
    f3 = 0.5 * rho3 * u3 * u3 * u3 + rho3 * a3 * a3 * u3 / (gamma - 1.0);
  } else if (s1 > 0) {
    f1 = rho2 * u2;
    f2 = rho2 * u2 * u2 + p2;
    f3 = 0.5 * rho2 * u2 * u2 * u2 + rho2 * a2 * a2 * u2 / (gamma - 1.0);
  } else {
    f1 = rho1 * u1;
    f2 = rho1 * u1 * u1 + p1;
    f3 = 0.5 * rho1 * u1 * u1 * u1 + rho1 * a1 * a1 * u1 / (gamma - 1.0);
  }
  F[0] = f1;
  F[1] = f2;
  F[2] = f3;
}


x86 assembly (clang, -O0):
<Riemann>:
push   %rbp
mov    %rsp,%rbp
sub    $0x200,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
movsd  0xeb1(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xebc(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xe8f(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xec2(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xead(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
divsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm1
movsd  0xe6f(%rip),%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xe19(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0xe00(%rip),%xmm0
mulsd  -0x60(%rbp),%xmm0
divsd  -0x50(%rbp),%xmm0
call   1060 <sqrt@plt>
movsd  %xmm0,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
divsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm1
movsd  0xde3(%rip),%xmm0
mulsd  -0x70(%rbp),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xd8d(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  0xd74(%rip),%xmm0
mulsd  -0x80(%rbp),%xmm0
divsd  -0x70(%rbp),%xmm0
call   1060 <sqrt@plt>
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0xd75(%rip),%xmm0
mulsd  -0x80(%rbp),%xmm0
divsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xd2b(%rip),%xmm0
mulsd  -0x80(%rbp),%xmm0
divsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
divsd  -0x60(%rbp),%xmm0
movsd  0xd2f(%rip),%xmm1
call   1050 <pow@plt>
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  0xd12(%rip),%xmm1
call   1050 <pow@plt>
movsd  %xmm0,-0x180(%rbp)
ff
movsd  0xcf5(%rip),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
movsd  0xcdd(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
subsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  0xcaa(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  -0x90(%rbp),%xmm1
ff
movsd  0xc86(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  0xc66(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xc62(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc4e(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
movsd  -0x1a0(%rbp),%xmm4
ff
movsd  -0x198(%rbp),%xmm3
ff
movsd  -0x190(%rbp),%xmm2
ff
movsd  -0x188(%rbp),%xmm1
ff
movaps %xmm0,%xmm5
movsd  -0x180(%rbp),%xmm0
ff
divsd  %xmm5,%xmm4
subsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm2
movsd  0xc06(%rip),%xmm3
addsd  %xmm3,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
divsd  -0x60(%rbp),%xmm0
movsd  0xbf1(%rip),%xmm1
call   1050 <pow@plt>
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  0xbd4(%rip),%xmm1
call   1050 <pow@plt>
movsd  %xmm0,-0x158(%rbp)
ff
movsd  0xbb7(%rip),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
movsd  0xb9f(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
subsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  0xb6c(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  -0x98(%rbp),%xmm1
ff
movsd  0xb48(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  0xb28(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xb24(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb10(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
movsd  -0x178(%rbp),%xmm4
movsd  -0x170(%rbp),%xmm3
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0x160(%rbp),%xmm1
ff
movaps %xmm0,%xmm5
movsd  -0x158(%rbp),%xmm0
ff
divsd  %xmm5,%xmm4
subsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm2
movsd  0xac8(%rip),%xmm3
addsd  %xmm3,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
subsd  -0x98(%rbp),%xmm0
ff
call   1040 <fabs@plt>
movsd  0xac0(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1751 <Riemann+0x611>
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm1
ff
movsd  -0x98(%rbp),%xmm2
ff
subsd  -0x90(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
movsd  -0xa8(%rbp),%xmm2
ff
subsd  -0xa0(%rbp),%xmm2
ff
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
divsd  -0x60(%rbp),%xmm0
movsd  0xa48(%rip),%xmm1
call   1050 <pow@plt>
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0xa2b(%rip),%xmm1
call   1050 <pow@plt>
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  0xa0e(%rip),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
movsd  0x9f6(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
subsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  0x9c3(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
movsd  0x99f(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0x97f(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0x97b(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x967(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
movsd  -0x1c8(%rbp),%xmm4
ff
movsd  -0x1c0(%rbp),%xmm3
ff
movsd  -0x1b8(%rbp),%xmm2
ff
movsd  -0x1b0(%rbp),%xmm1
ff
movaps %xmm0,%xmm5
movsd  -0x1a8(%rbp),%xmm0
ff
divsd  %xmm5,%xmm4
subsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm2
movsd  0x91f(%rip),%xmm3
addsd  %xmm3,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
jmp    1563 <Riemann+0x423>
movsd  -0x60(%rbp),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x1f0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  0x890(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  0x864(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x1f8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  0x848(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0x844(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x830(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
movsd  -0x1f8(%rbp),%xmm2
ff
movsd  -0x1f0(%rbp),%xmm1
ff
movaps %xmm0,%xmm3
movsd  -0x1e8(%rbp),%xmm0
ff
divsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  0x823(%rip),%xmm1
addsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  -0x90(%rbp),%xmm1
ff
movsd  0x807(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x7b3(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x1e0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  0x797(%rip),%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  -0xd8(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  0x756(%rip),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
movsd  0x73e(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
subsd  -0xe8(%rbp),%xmm0
ff
movsd  0x726(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x722(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  0x6fe(%rip),%xmm0
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  -0xf8(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  0x6a0(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0x69c(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x688(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
movsd  -0x1d8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x1d0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
subsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
subsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1a83 <Riemann+0x943>
movsd  -0x70(%rbp),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  0x604(%rip),%xmm0
mulsd  -0x70(%rbp),%xmm0
mulsd  -0x78(%rbp),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
mulsd  -0x88(%rbp),%xmm1
ff
mulsd  -0x78(%rbp),%xmm1
movsd  0x5ae(%rip),%xmm3
divsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
jmp    1e4a <Riemann+0xd0a>
movsd  -0x110(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1c2d <Riemann+0xaed>
movsd  -0x78(%rbp),%xmm0
movsd  0x57b(%rip),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
movsd  0x563(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x58b(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x200(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
divsd  -0x88(%rbp),%xmm0
ff
movsd  0x522(%rip),%xmm1
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x200(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0x140(%rbp),%xmm0
ff
ja     1b44 <Riemann+0xa04>
xorps  %xmm0,%xmm0
ucomisd -0x150(%rbp),%xmm0
ff
jbe    1b50 <Riemann+0xa10>
lea    0x50d(%rip),%rdi
call   1030 <printf@plt>
movsd  0x4b8(%rip),%xmm0
mulsd  -0x150(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm1
ff
mulsd  -0x140(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x150(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  0x46c(%rip),%xmm0
mulsd  -0x138(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x138(%rbp),%xmm1
ff
mulsd  -0x140(%rbp),%xmm1
ff
mulsd  -0x140(%rbp),%xmm1
ff
mulsd  -0x148(%rbp),%xmm1
ff
movsd  0x404(%rip),%xmm3
divsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
jmp    1e45 <Riemann+0xd05>
movsd  -0x108(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1cf3 <Riemann+0xbb3>
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  0x3a6(%rip),%xmm0
mulsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm2
ff
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  -0xf8(%rbp),%xmm1
ff
mulsd  -0xf8(%rbp),%xmm1
ff
mulsd  -0xe8(%rbp),%xmm1
ff
movsd  0x33e(%rip),%xmm3
divsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
jmp    1e40 <Riemann+0xd00>
movsd  -0x100(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1db9 <Riemann+0xc79>
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm2
ff
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  0x2e0(%rip),%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0xc8(%rbp),%xmm0
ff
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  -0xd8(%rbp),%xmm1
ff
mulsd  -0xd8(%rbp),%xmm1
ff
mulsd  -0xc8(%rbp),%xmm1
ff
movsd  0x278(%rip),%xmm3
divsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
jmp    1e3b <Riemann+0xcfb>
movsd  -0x50(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  0x241(%rip),%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x50(%rbp),%xmm1
mulsd  -0x68(%rbp),%xmm1
mulsd  -0x68(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
movsd  0x1f1(%rip),%xmm3
divsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
jmp    1e40 <Riemann+0xd00>
jmp    1e45 <Riemann+0xd05>
jmp    1e4a <Riemann+0xd0a>
movsd  -0x120(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x128(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x130(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
add    $0x200,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Riemann>:
push   %r14
push   %rbx
sub    $0x148,%rsp
mov    %rdx,%r14
mov    %rdi,%rbx
movupd (%rsi),%xmm1
movapd %xmm1,%xmm3
unpckhpd %xmm1,%xmm3
divsd  %xmm1,%xmm3
movapd %xmm3,0xa0(%rsp)
movsd  0x10(%rsi),%xmm2
movsd  0xe9a(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm3,%xmm0
movapd %xmm0,0x100(%rsp)
mulsd  %xmm3,%xmm0
subsd  %xmm0,%xmm2
mulsd  0xe81(%rip),%xmm2
movsd  0xe81(%rip),%xmm0
movapd %xmm2,0xc0(%rsp)
mulsd  %xmm2,%xmm0
movapd %xmm1,0x110(%rsp)
divsd  %xmm1,%xmm0
xorpd  %xmm4,%xmm4
ucomisd %xmm4,%xmm0
jb     11b9 <Riemann+0x89>
sqrtsd %xmm0,%xmm0
jmp    11c2 <Riemann+0x92>
call   1050 <sqrt@plt>
xorpd  %xmm4,%xmm4
movsd  %xmm0,0x18(%rsp)
movupd (%rbx),%xmm3
movapd %xmm3,%xmm2
unpckhpd %xmm3,%xmm2
divsd  %xmm3,%xmm2
movsd  0x10(%rbx),%xmm1
movsd  0xe1b(%rip),%xmm0
mulsd  %xmm3,%xmm0
mulsd  %xmm2,%xmm0
movapd %xmm0,0x120(%rsp)
mulsd  %xmm2,%xmm0
subsd  %xmm0,%xmm1
mulsd  0xe02(%rip),%xmm1
movsd  0xe02(%rip),%xmm0
mulsd  %xmm1,%xmm0
movapd %xmm3,0x130(%rsp)
divsd  %xmm3,%xmm0
ucomisd %xmm4,%xmm0
movapd %xmm1,0x70(%rsp)
movapd %xmm2,0x60(%rsp)
jb     1237 <Riemann+0x107>
sqrtsd %xmm0,%xmm0
jmp    1242 <Riemann+0x112>
call   1050 <sqrt@plt>
movapd 0x70(%rsp),%xmm1
movsd  %xmm0,0x10(%rsp)
movsd  0xdc8(%rip),%xmm2
mulsd  %xmm1,%xmm2
movapd %xmm1,%xmm0
unpcklpd %xmm2,%xmm0
movapd 0xc0(%rsp),%xmm1
unpcklpd %xmm1,%xmm1
divpd  %xmm1,%xmm0
movapd %xmm0,0x40(%rsp)
movsd  0xda5(%rip),%xmm1
call   1040 <pow@plt>
movapd %xmm0,0xe0(%rsp)
movapd 0x40(%rsp),%xmm0
unpckhpd %xmm0,%xmm0
movapd %xmm0,0x30(%rsp)
movsd  0xd7f(%rip),%xmm1
call   1040 <pow@plt>
movapd 0x40(%rsp),%xmm2
movapd %xmm2,%xmm1
addpd  0xda8(%rip),%xmm1
movapd %xmm1,0x20(%rsp)
unpckhpd %xmm1,%xmm1
movsd  0xd5e(%rip),%xmm3
movapd %xmm1,0x80(%rsp)
mulsd  %xmm1,%xmm3
addsd  0xd51(%rip),%xmm3
movapd %xmm0,0xf0(%rsp)
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm3
movsd  %xmm3,0x8(%rsp)
jb     1301 <Riemann+0x1d1>
xorps  %xmm0,%xmm0
sqrtsd %xmm3,%xmm0
jmp    1310 <Riemann+0x1e0>
movapd %xmm3,%xmm0
call   1050 <sqrt@plt>
movapd 0x40(%rsp),%xmm2
movapd %xmm0,0xb0(%rsp)
movsd  0xcff(%rip),%xmm1
movapd %xmm2,%xmm0
call   1040 <pow@plt>
movapd %xmm0,0x50(%rsp)
movapd 0x40(%rsp),%xmm0
movsd  0xce2(%rip),%xmm1
call   1040 <pow@plt>
movapd %xmm0,%xmm2
movsd  0xcd9(%rip),%xmm0
mulsd  0x20(%rsp),%xmm0
addsd  0xcd3(%rip),%xmm0
ucomisd 0xcf3(%rip),%xmm0
jb     136d <Riemann+0x23d>
sqrtsd %xmm0,%xmm0
jmp    1384 <Riemann+0x254>
movapd %xmm2,0xd0(%rsp)
call   1050 <sqrt@plt>
movapd 0xd0(%rsp),%xmm2
movapd 0xa0(%rsp),%xmm8
movsd  0x18(%rsp),%xmm1
movsd  0x10(%rsp),%xmm4
movapd 0x30(%rsp),%xmm6
movapd %xmm1,%xmm3
divsd  0xc64(%rip),%xmm3
addsd  %xmm4,%xmm4
movapd %xmm6,%xmm1
movapd 0x40(%rsp),%xmm9
subsd  %xmm9,%xmm1
andpd  0xca8(%rip),%xmm1
movsd  0xc38(%rip),%xmm5
ucomisd 0xc60(%rip),%xmm1
movapd %xmm3,0x30(%rsp)
movsd  %xmm4,0x98(%rsp)
jbe    15d5 <Riemann+0x4a5>
divsd  %xmm4,%xmm5
movapd 0x60(%rsp),%xmm4
subsd  %xmm8,%xmm4
unpcklpd 0xf0(%rsp),%xmm2
movapd %xmm3,%xmm1
unpcklpd %xmm3,%xmm1
mulpd  0x20(%rsp),%xmm1
unpcklpd 0xb0(%rsp),%xmm0
divpd  %xmm0,%xmm1
movapd %xmm4,0xb0(%rsp)
movapd %xmm4,%xmm0
unpcklpd %xmm4,%xmm0
subpd  %xmm1,%xmm0
movapd %xmm5,0xf0(%rsp)
movapd %xmm5,%xmm1
unpcklpd %xmm5,%xmm1
mulpd  %xmm0,%xmm1
addpd  0xc2e(%rip),%xmm1
mulpd  %xmm2,%xmm1
movapd 0x50(%rsp),%xmm3
unpcklpd 0xe0(%rsp),%xmm3
subpd  %xmm1,%xmm3
movapd %xmm9,%xmm7
jmp    152c <Riemann+0x3fc>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsd  %xmm6,0xe0(%rsp)
movsd  %xmm5,0xd0(%rsp)
call   1050 <sqrt@plt>
movsd  0xd0(%rsp),%xmm5
movsd  0xe0(%rsp),%xmm6
movsd  0x8(%rsp),%xmm7
movsd  0xb79(%rip),%xmm4
movapd 0x30(%rsp),%xmm1
movapd 0x20(%rsp),%xmm8
movapd 0x40(%rsp),%xmm9
movapd 0x50(%rsp),%xmm2
movapd 0x80(%rsp),%xmm3
mulsd  %xmm1,%xmm5
divsd  %xmm0,%xmm5
movapd 0xb0(%rsp),%xmm0
subsd  %xmm5,%xmm0
mulsd  0xf0(%rsp),%xmm0
addsd  %xmm4,%xmm0
mulsd  %xmm0,%xmm6
subsd  %xmm6,%xmm3
movapd %xmm8,%xmm0
subsd  %xmm7,%xmm0
andpd  0xb5b(%rip),%xmm0
ucomisd 0xb1b(%rip),%xmm0
unpcklpd %xmm2,%xmm3
movapd %xmm8,%xmm6
jbe    15e2 <Riemann+0x4b2>
movapd %xmm7,%xmm0
movapd %xmm7,0x20(%rsp)
subsd  %xmm6,%xmm0
mulsd  %xmm3,%xmm0
movapd %xmm3,%xmm1
unpckhpd %xmm3,%xmm1
movapd %xmm3,0x50(%rsp)
movapd %xmm3,%xmm2
subsd  %xmm1,%xmm2
divsd  %xmm2,%xmm0
subsd  %xmm0,%xmm7
movsd  %xmm7,0x8(%rsp)
movapd %xmm9,%xmm0
movsd  0xab1(%rip),%xmm1
call   1040 <pow@plt>
movapd %xmm0,0x80(%rsp)
movsd  0x8(%rsp),%xmm0
movsd  0xa95(%rip),%xmm1
call   1040 <pow@plt>
movsd  0x8(%rsp),%xmm7
movsd  0xa92(%rip),%xmm4
movapd %xmm0,%xmm6
movapd %xmm7,%xmm5
addsd  0xa92(%rip),%xmm5
movapd %xmm5,%xmm0
mulsd  0xa6e(%rip),%xmm0
addsd  %xmm4,%xmm0
ucomisd 0xa92(%rip),%xmm0
jb     1480 <Riemann+0x350>
sqrtsd %xmm0,%xmm0
jmp    14b7 <Riemann+0x387>
movapd %xmm6,%xmm8
movsd  0x8(%rsp),%xmm0
jmp    160c <Riemann+0x4dc>
movsd  0xa56(%rip),%xmm1
addsd  %xmm8,%xmm1
movsd  0xa31(%rip),%xmm0
movapd %xmm1,0x80(%rsp)
mulsd  %xmm1,%xmm0
addsd  0xa24(%rip),%xmm0
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm0
movapd %xmm8,0x20(%rsp)
movsd  %xmm0,0x8(%rsp)
jb     1629 <Riemann+0x4f9>
sqrtsd %xmm0,%xmm0
jmp    1639 <Riemann+0x509>
call   1050 <sqrt@plt>
xorpd  %xmm3,%xmm3
movapd 0x20(%rsp),%xmm8
movsd  %xmm0,0x50(%rsp)
movsd  0xa01(%rip),%xmm1
movapd %xmm8,%xmm0
addsd  %xmm1,%xmm0
mulsd  %xmm8,%xmm1
addsd  0x9d3(%rip),%xmm1
mulsd  %xmm8,%xmm0
divsd  %xmm1,%xmm0
ucomisd %xmm3,%xmm0
jb     1675 <Riemann+0x545>
xorps  %xmm7,%xmm7
sqrtsd %xmm0,%xmm7
jmp    167e <Riemann+0x54e>
call   1050 <sqrt@plt>
movapd %xmm0,%xmm7
movsd  0x8(%rsp),%xmm0
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm0
jb     1694 <Riemann+0x564>
sqrtsd %xmm0,%xmm0
jmp    16a9 <Riemann+0x579>
movsd  %xmm7,0x8(%rsp)
call   1050 <sqrt@plt>
xorpd  %xmm3,%xmm3
movsd  0x8(%rsp),%xmm7
movapd 0xa0(%rsp),%xmm8
movapd 0x60(%rsp),%xmm2
movsd  0x10(%rsp),%xmm4
movapd 0x30(%rsp),%xmm5
movsd  0x98(%rsp),%xmm6
movapd %xmm2,%xmm1
subsd  %xmm4,%xmm1
ucomisd %xmm3,%xmm1
jbe    1729 <Riemann+0x5f9>
movapd 0x130(%rsp),%xmm3
movapd %xmm3,%xmm1
unpcklpd 0x120(%rsp),%xmm1
movapd %xmm2,%xmm0
unpcklpd %xmm2,%xmm0
mulsd  %xmm4,%xmm3
mulsd  %xmm4,%xmm3
mulsd  %xmm2,%xmm3
divsd  0x8fa(%rip),%xmm3
mulpd  %xmm0,%xmm1
movapd 0x70(%rsp),%xmm2
unpcklpd %xmm3,%xmm2
mulpd  %xmm1,%xmm0
addpd  %xmm2,%xmm0
jmp    1980 <Riemann+0x850>
movapd 0x80(%rsp),%xmm1
divsd  0x50(%rsp),%xmm1
mulsd  %xmm1,%xmm5
movapd %xmm2,%xmm3
movapd %xmm6,%xmm2
movsd  0x8bc(%rip),%xmm1
divsd  %xmm1,%xmm2
addsd  %xmm8,%xmm5
addsd  %xmm3,%xmm2
subsd  %xmm5,%xmm2
mulsd  %xmm1,%xmm2
mulsd  0x897(%rip),%xmm2
movapd %xmm5,%xmm1
subsd  %xmm2,%xmm1
xorpd  %xmm9,%xmm9
ucomisd %xmm9,%xmm1
jbe    1857 <Riemann+0x727>
mulsd  0x87f(%rip),%xmm3
addsd  %xmm6,%xmm3
divsd  0x8bb(%rip),%xmm3
movapd %xmm3,0x60(%rsp)
movapd %xmm3,%xmm0
divsd  %xmm4,%xmm0
movsd  0x875(%rip),%xmm1
call   1040 <pow@plt>
movapd 0x70(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movapd 0x60(%rsp),%xmm2
xorpd  %xmm0,%xmm0
ucomisd %xmm2,%xmm0
ja     17d8 <Riemann+0x6a8>
movapd %xmm2,%xmm4
xorpd  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    17f6 <Riemann+0x6c6>
lea    0x8b1(%rip),%rdi
movapd %xmm1,0x70(%rsp)
call   1030 <printf@plt>
movapd 0x60(%rsp),%xmm4
movapd 0x70(%rsp),%xmm1
movapd %xmm1,%xmm3
movsd  0x80e(%rip),%xmm1
mulsd  %xmm3,%xmm1
movapd %xmm4,%xmm0
mulsd  %xmm4,%xmm0
divsd  %xmm0,%xmm1
movsd  0x7e6(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm4,%xmm0
movapd %xmm4,%xmm2
unpcklpd %xmm4,%xmm2
unpcklpd %xmm0,%xmm1
mulpd  %xmm2,%xmm1
movapd %xmm4,%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm4,%xmm0
divsd  0x7c2(%rip),%xmm0
unpcklpd %xmm0,%xmm3
movapd %xmm1,%xmm0
mulpd  %xmm2,%xmm0
jmp    197c <Riemann+0x84c>
movapd 0x20(%rsp),%xmm6
mulsd  0xc0(%rsp),%xmm6
movsd  0x7a2(%rip),%xmm1
mulsd  %xmm6,%xmm1
ucomisd %xmm9,%xmm5
jbe    18c3 <Riemann+0x793>
movapd %xmm2,%xmm0
mulsd  %xmm2,%xmm0
divsd  %xmm0,%xmm1
movsd  0x773(%rip),%xmm3
mulsd  %xmm1,%xmm3
mulsd  %xmm5,%xmm3
movapd %xmm5,%xmm0
unpcklpd %xmm5,%xmm0
movapd %xmm2,%xmm4
mulsd  %xmm1,%xmm4
unpcklpd %xmm3,%xmm1
mulsd  %xmm2,%xmm4
mulsd  %xmm5,%xmm4
divsd  0x74f(%rip),%xmm4
mulpd  %xmm0,%xmm1
unpcklpd %xmm4,%xmm6
jmp    1928 <Riemann+0x7f8>
movsd  0x18(%rsp),%xmm4
mulsd  %xmm4,%xmm0
addsd  %xmm8,%xmm0
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm0
jbe    1932 <Riemann+0x802>
mulsd  %xmm7,%xmm4
movapd %xmm4,%xmm0
mulsd  %xmm4,%xmm0
divsd  %xmm0,%xmm1
movsd  0x70c(%rip),%xmm2
mulsd  %xmm1,%xmm2
mulsd  %xmm5,%xmm2
movapd %xmm5,%xmm0
unpcklpd %xmm5,%xmm0
movapd %xmm4,%xmm3
mulsd  %xmm1,%xmm3
unpcklpd %xmm2,%xmm1
mulsd  %xmm4,%xmm3
mulsd  %xmm5,%xmm3
divsd  0x6e8(%rip),%xmm3
mulpd  %xmm0,%xmm1
unpcklpd %xmm3,%xmm6
mulpd  %xmm1,%xmm0
addpd  %xmm6,%xmm0
jmp    1980 <Riemann+0x850>
movapd 0x110(%rsp),%xmm2
movapd %xmm2,%xmm1
unpcklpd 0x100(%rsp),%xmm1
movapd %xmm8,%xmm0
unpcklpd %xmm8,%xmm0
mulsd  %xmm4,%xmm2
mulsd  %xmm4,%xmm2
mulsd  %xmm8,%xmm2
divsd  0x6a1(%rip),%xmm2
mulpd  %xmm0,%xmm1
movapd 0xc0(%rsp),%xmm3
unpcklpd %xmm2,%xmm3
mulpd  %xmm1,%xmm0
addpd  %xmm3,%xmm0
movsd  %xmm1,(%r14)
movupd %xmm0,0x8(%r14)
add    $0x148,%rsp
pop    %rbx
pop    %r14
ret

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

LLVM IR (-O2):
@.str = [27 x i8] c"Negative a or p in Riemann\00"
define void @Riemann(double* nocapture %0, double* nocapture %1, double* nocapture writeonly %2) {
%4 = bitcast double* %1 to <2 x double>*
%5 = load <2 x double>, <2 x double>* %4
%6 = extractelement <2 x double> %5, i64 0
%7 = extractelement <2 x double> %5, i64 1
%8 = fdiv double %7, %6
%9 = getelementptr inbounds double, double* %1, i64 2
%10 = load double, double* %9
%11 = fmul double %6, 5.000000e-01
%12 = fmul double %11, %8
%13 = fneg double %12
%14 = tail call double @llvm.fmuladd.f64(double %13, double %8, double %10)
%15 = fmul double %14, 0x3FD9999999999998
%16 = fmul double %15, 1.400000e+00
%17 = fdiv double %16, %6
%18 = tail call double @sqrt(double %17)
%19 = bitcast double* %0 to <2 x double>*
%20 = load <2 x double>, <2 x double>* %19
%21 = extractelement <2 x double> %20, i64 0
%22 = extractelement <2 x double> %20, i64 1
%23 = fdiv double %22, %21
%24 = getelementptr inbounds double, double* %0, i64 2
%25 = load double, double* %24
%26 = fmul double %21, 5.000000e-01
%27 = fmul double %26, %23
%28 = fneg double %27
%29 = tail call double @llvm.fmuladd.f64(double %28, double %23, double %25)
%30 = fmul double %29, 0x3FD9999999999998
%31 = fmul double %30, 1.400000e+00
%32 = fdiv double %31, %21
%33 = tail call double @sqrt(double %32)
%34 = fmul double %30, 1.000000e-03
%35 = insertelement <2 x double> poison, double %30, i64 0
%36 = insertelement <2 x double> %35, double %34, i64 1
%37 = insertelement <2 x double> poison, double %15, i64 0
%38 = shufflevector <2 x double> %37, <2 x double> poison, <2 x i32> zeroinitializer
%39 = fdiv <2 x double> %36, %38
%40 = extractelement <2 x double> %39, i64 0
%41 = tail call double @pow(double %40, double 0x401C000000000001)
%42 = extractelement <2 x double> %39, i64 1
%43 = tail call double @pow(double %42, double 0x401C000000000001)
%44 = fmul double %33, 2.000000e+00
%45 = fdiv double 0x3FD9999999999998, %44
%46 = fsub double %23, %8
%47 = fdiv double %18, 1.400000e+00
%48 = fadd <2 x double> %39, <double -1.000000e+00, double -1.000000e+00>
%49 = extractelement <2 x double> %48, i64 1
%50 = tail call double @llvm.fmuladd.f64(double %49, double 0x3FEB6DB6DB6DB6DC, double 1.000000e+00)
%51 = tail call double @sqrt(double %50)
%52 = tail call double @pow(double %40, double 0x401C000000000001)
%53 = tail call double @pow(double %40, double 0x401C000000000001)
%54 = extractelement <2 x double> %48, i64 0
%55 = tail call double @llvm.fmuladd.f64(double %54, double 0x3FEB6DB6DB6DB6DC, double 1.000000e+00)
%56 = tail call double @sqrt(double %55)
%57 = fsub double %42, %40
%58 = tail call double @llvm.fabs.f64(double %57)
%59 = fcmp ogt double %58, 1.000000e-10
br i1 %59, label %60, label %110
60: ; preds = %3
%61 = insertelement <2 x double> poison, double %53, i64 0
%62 = insertelement <2 x double> %61, double %43, i64 1
%63 = fneg <2 x double> %62
%64 = insertelement <2 x double> poison, double %47, i64 0
%65 = shufflevector <2 x double> %64, <2 x double> poison, <2 x i32> zeroinitializer
%66 = fmul <2 x double> %65, %48
%67 = insertelement <2 x double> poison, double %56, i64 0
%68 = insertelement <2 x double> %67, double %51, i64 1
%69 = fdiv <2 x double> %66, %68
%70 = insertelement <2 x double> poison, double %46, i64 0
%71 = shufflevector <2 x double> %70, <2 x double> poison, <2 x i32> zeroinitializer
%72 = fsub <2 x double> %71, %69
%73 = insertelement <2 x double> poison, double %45, i64 0
%74 = shufflevector <2 x double> %73, <2 x double> poison, <2 x i32> zeroinitializer
%75 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %74, <2 x double> %72, <2 x double> <double 1.000000e+00, double 1.000000e+00>)
%76 = insertelement <2 x double> poison, double %52, i64 0
%77 = insertelement <2 x double> %76, double %41, i64 1
%78 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %63, <2 x double> %75, <2 x double> %77)
br label %79
79: ; preds = %60, %79
%80 = phi double [ %81, %79 ], [ %42, %60 ]
%81 = phi double [ %90, %79 ], [ %40, %60 ]
%82 = phi <2 x double> [ %106, %79 ], [ %78, %60 ]
%83 = fsub double %81, %80
%84 = extractelement <2 x double> %82, i64 0
%85 = fmul double %84, %83
%86 = shufflevector <2 x double> %82, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%87 = fsub <2 x double> %82, %86
%88 = extractelement <2 x double> %87, i64 0
%89 = fdiv double %85, %88
%90 = fsub double %81, %89
%91 = tail call double @pow(double %40, double 0x401C000000000001)
%92 = tail call double @pow(double %90, double 0x401C000000000001)
%93 = fadd double %90, -1.000000e+00
%94 = fmul double %47, %93
%95 = tail call double @llvm.fmuladd.f64(double %93, double 0x3FEB6DB6DB6DB6DC, double 1.000000e+00)
%96 = tail call double @sqrt(double %95)
%97 = fdiv double %94, %96
%98 = fsub double %46, %97
%99 = tail call double @llvm.fmuladd.f64(double %45, double %98, double 1.000000e+00)
%100 = fneg double %92
%101 = tail call double @llvm.fmuladd.f64(double %100, double %99, double %91)
%102 = fsub double %81, %90
%103 = tail call double @llvm.fabs.f64(double %102)
%104 = fcmp ogt double %103, 1.000000e-10
%105 = insertelement <2 x double> poison, double %101, i64 0
%106 = shufflevector <2 x double> %105, <2 x double> %82, <2 x i32> <i32 0, i32 2>
br i1 %104, label %79, label %107
107: ; preds = %79
%108 = fadd double %81, -1.000000e+00
%109 = tail call double @llvm.fmuladd.f64(double %108, double 0x3FEB6DB6DB6DB6DC, double 1.000000e+00)
br label %110
110: ; preds = %107, %3
%111 = phi double [ %109, %107 ], [ %50, %3 ]
%112 = phi double [ %108, %107 ], [ %49, %3 ]
%113 = phi double [ %81, %107 ], [ %42, %3 ]
%114 = fmul double %15, %113
%115 = tail call double @sqrt(double %111)
%116 = fdiv double %112, %115
%117 = tail call double @llvm.fmuladd.f64(double %47, double %116, double %8)
%118 = fadd double %113, 0x4018000000000001
%119 = fmul double %113, %118
%120 = tail call double @llvm.fmuladd.f64(double %113, double 0x4018000000000001, double 1.000000e+00)
%121 = fdiv double %119, %120
%122 = tail call double @sqrt(double %121)
%123 = fmul double %18, %122
%124 = fmul double %114, 1.400000e+00
%125 = fmul double %123, %123
%126 = fdiv double %124, %125
%127 = fdiv double %44, 0x3FD9999999999998
%128 = fadd double %23, %127
%129 = fsub double %128, %117
%130 = fmul double %129, 0x3FD9999999999998
%131 = fmul double %130, 5.000000e-01
%132 = fmul double %131, %131
%133 = fdiv double %124, %132
%134 = tail call double @sqrt(double %111)
%135 = tail call double @llvm.fmuladd.f64(double %18, double %134, double %8)
%136 = fsub double %23, %33
%137 = fcmp ogt double %136, 0.000000e+00
br i1 %137, label %138, label %150
138: ; preds = %110
%139 = insertelement <2 x double> %20, double %27, i64 1
%140 = insertelement <2 x double> poison, double %23, i64 0
%141 = shufflevector <2 x double> %140, <2 x double> poison, <2 x i32> zeroinitializer
%142 = fmul <2 x double> %139, %141
%143 = fmul double %21, %33
%144 = fmul double %33, %143
%145 = fmul double %23, %144
%146 = fdiv double %145, 0x3FD9999999999998
%147 = insertelement <2 x double> %35, double %146, i64 1
%148 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %142, <2 x double> %141, <2 x double> %147)
%149 = extractelement <2 x double> %142, i64 0
br label %230
150: ; preds = %110
%151 = fsub double %117, %131
%152 = fcmp ogt double %151, 0.000000e+00
br i1 %152, label %153, label %182
153: ; preds = %150
%154 = tail call double @llvm.fmuladd.f64(double %23, double 0x3FD9999999999998, double %44)
%155 = fdiv double %154, 2.400000e+00
%156 = fdiv double %155, %33
%157 = tail call double @pow(double %156, double 0x401C000000000001)
%158 = fmul double %30, %157
%159 = fcmp olt double %155, 0.000000e+00
%160 = fcmp olt double %158, 0.000000e+00
%161 = select i1 %159, i1 true, i1 %160
br i1 %161, label %162, label %164
162: ; preds = %153
%163 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str, i64 0, i64 0))
br label %164
164: ; preds = %153, %162
%165 = fmul double %158, 1.400000e+00
%166 = fmul double %155, %155
%167 = fdiv double %165, %166
%168 = fmul double %167, 5.000000e-01
%169 = fmul double %155, %168
%170 = insertelement <2 x double> poison, double %155, i64 0
%171 = shufflevector <2 x double> %170, <2 x double> poison, <2 x i32> zeroinitializer
%172 = insertelement <2 x double> poison, double %167, i64 0
%173 = insertelement <2 x double> %172, double %169, i64 1
%174 = fmul <2 x double> %171, %173
%175 = extractelement <2 x double> %174, i64 0
%176 = fmul double %155, %175
%177 = fmul double %155, %176
%178 = fdiv double %177, 0x3FD9999999999998
%179 = insertelement <2 x double> poison, double %158, i64 0
%180 = insertelement <2 x double> %179, double %178, i64 1
%181 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %174, <2 x double> %171, <2 x double> %180)
br label %230
182: ; preds = %150
%183 = fcmp ogt double %117, 0.000000e+00
br i1 %183, label %184, label %200
184: ; preds = %182
%185 = fmul double %133, 5.000000e-01
%186 = fmul double %117, %185
%187 = insertelement <2 x double> poison, double %117, i64 0
%188 = shufflevector <2 x double> %187, <2 x double> poison, <2 x i32> zeroinitializer
%189 = insertelement <2 x double> poison, double %133, i64 0
%190 = insertelement <2 x double> %189, double %186, i64 1
%191 = fmul <2 x double> %188, %190
%192 = fmul double %131, %133
%193 = fmul double %131, %192
%194 = fmul double %117, %193
%195 = fdiv double %194, 0x3FD9999999999998
%196 = insertelement <2 x double> poison, double %114, i64 0
%197 = insertelement <2 x double> %196, double %195, i64 1
%198 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %191, <2 x double> %188, <2 x double> %197)
%199 = extractelement <2 x double> %191, i64 0
br label %230
200: ; preds = %182
%201 = fcmp ogt double %135, 0.000000e+00
br i1 %201, label %202, label %218
202: ; preds = %200
%203 = fmul double %126, 5.000000e-01
%204 = fmul double %117, %203
%205 = insertelement <2 x double> poison, double %117, i64 0
%206 = shufflevector <2 x double> %205, <2 x double> poison, <2 x i32> zeroinitializer
%207 = insertelement <2 x double> poison, double %126, i64 0
%208 = insertelement <2 x double> %207, double %204, i64 1
%209 = fmul <2 x double> %206, %208
%210 = fmul double %123, %126
%211 = fmul double %123, %210
%212 = fmul double %117, %211
%213 = fdiv double %212, 0x3FD9999999999998
%214 = insertelement <2 x double> poison, double %114, i64 0
%215 = insertelement <2 x double> %214, double %213, i64 1
%216 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %209, <2 x double> %206, <2 x double> %215)
%217 = extractelement <2 x double> %209, i64 0
br label %230
218: ; preds = %200
%219 = insertelement <2 x double> %5, double %12, i64 1
%220 = insertelement <2 x double> poison, double %8, i64 0
%221 = shufflevector <2 x double> %220, <2 x double> poison, <2 x i32> zeroinitializer
%222 = fmul <2 x double> %219, %221
%223 = fmul double %6, %18
%224 = fmul double %18, %223
%225 = fmul double %8, %224
%226 = fdiv double %225, 0x3FD9999999999998
%227 = insertelement <2 x double> %37, double %226, i64 1
%228 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %222, <2 x double> %221, <2 x double> %227)
%229 = extractelement <2 x double> %222, i64 0
br label %230
230: ; preds = %164, %202, %218, %184, %138
%231 = phi double [ %149, %138 ], [ %175, %164 ], [ %199, %184 ], [ %217, %202 ], [ %229, %218 ]
%232 = phi <2 x double> [ %148, %138 ], [ %181, %164 ], [ %198, %184 ], [ %216, %202 ], [ %228, %218 ]
store double %231, double* %2
%233 = getelementptr inbounds double, double* %2, i64 1
%234 = bitcast double* %233 to <2 x double>*
store <2 x double> %232, <2 x double>* %234
ret void
}