#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;
int DBL_MAX;
double exp(double);
double fabs(double);
double log(double);
double log1p(double);
int trunc(double);
void pnorm_both(double x, double *cum, double *ccum, int i_tail, int log_p) {
  const static double a[5] = {2.2352520354606839287, 161.02823106855587881,
                              1067.6894854603709582, 18154.981253343561249,
                              0.065682337918207449113};
  const static double b[4] = {47.20258190468824187, 976.09855173777669322,
                              10260.932208618978205, 45507.789335026729956};
  const static double c[9] = {
      0.39894151208813466764, 8.8831497943883759412, 93.506656132177855979,
      597.27027639480026226,  2494.5375852903726711, 6848.1904505362823326,
      11602.651437647350124,  9842.7148383839780218, 1.0765576773720192317e-8};
  const static double d[8] = {22.266688044328115691, 235.38790178262499861,
                              1519.377599407554805,  6485.558298266760755,
                              18615.571640885098091, 34900.952721145977266,
                              38912.003286093271411, 19685.429676859990727};
  const static double p[6] = {0.21589853405795699,   0.1274011611602473639,
                              0.022235277870649807,  0.001421619193227893466,
                              2.9112874951168792e-5, 0.02307344176494017303};
  const static double q[5] = {1.28426009614491121, 0.468238212480865118,
                              0.0659881378689285515, 0.00378239633202758244,
                              7.29751555083966205e-5};
  double xden, xnum, temp, del, eps, xsq, y;
  int i, lower, upper;
  eps = DBL_EPSILON * 0.5;
  lower = i_tail != 1;
  upper = i_tail != 0;
  y = fabs(x);
  if (y <= 0.67448975) {
    if (y > eps) {
      xsq = x * x;
      xnum = a[4] * xsq;
      xden = xsq;
      for (i = 0; i < 3; ++i) {
        xnum = (xnum + a[i]) * xsq;
        xden = (xden + b[i]) * xsq;
      }
    } else
      xnum = xden = 0.0;
    temp = x * (xnum + a[3]) / (xden + b[3]);
    if (lower)
      *cum = 0.5 + temp;
    if (upper)
      *ccum = 0.5 - temp;
    if (log_p) {
      if (lower)
        *cum = log(*cum);
      if (upper)
        *ccum = log(*ccum);
    }
  } else if (y <= 5.656854249492380195206754896838) {
    xnum = c[8] * y;
    xden = y;
    for (i = 0; i < 7; ++i) {
      xnum = (xnum + c[i]) * y;
      xden = (xden + d[i]) * y;
    }
    temp = (xnum + c[7]) / (xden + d[7]);
    xsq = trunc(y * 16) / 16;
    del = (y - xsq) * (y + xsq);
    if (log_p) {
      *cum = (-xsq * xsq * 0.5) + (-del * 0.5) + log(temp);
      if ((lower && x > 0.) || (upper && x <= 0.))
        *ccum = log1p(-exp(-xsq * xsq * 0.5) * exp(-del * 0.5) * temp);
    } else {
      *cum = exp(-xsq * xsq * 0.5) * exp(-del * 0.5) * temp;
      *ccum = 1.0 - *cum;
    };
    if (x > 0.) {
      temp = *cum;
      if (lower)
        *cum = *ccum;
      *ccum = temp;
    };
  } else if ((log_p && y < 1e170) || (lower && -37.5193 < x && x < 8.2924) ||
             (upper && -8.2924 < x && x < 37.5193)) {
    xsq = 1.0 / (x * x);
    xnum = p[5] * xsq;
    xden = xsq;
    for (i = 0; i < 4; ++i) {
      xnum = (xnum + p[i]) * xsq;
      xden = (xden + q[i]) * xsq;
    }
    temp = xsq * (xnum + p[4]) / (xden + q[4]);
    temp = (0.398942280401432677939946059934 - temp) / y;
    xsq = trunc(x * 16) / 16;
    del = (x - xsq) * (x + xsq);
    if (log_p) {
      *cum = (-xsq * xsq * 0.5) + (-del * 0.5) + log(temp);
      if ((lower && x > 0.) || (upper && x <= 0.))
        *ccum = log1p(-exp(-xsq * xsq * 0.5) * exp(-del * 0.5) * temp);
    } else {
      *cum = exp(-xsq * xsq * 0.5) * exp(-del * 0.5) * temp;
      *ccum = 1.0 - *cum;
    };
    if (x > 0.) {
      temp = *cum;
      if (lower)
        *cum = *ccum;
      *ccum = temp;
    };
  } else {
    if (x > 0) {
      *cum = (log_p ? 0. : 1.);
      *ccum = (log_p ? -DBL_MAX : 0.);
    } else {
      *cum = (log_p ? -DBL_MAX : 0.);
      *ccum = (log_p ? 0. : 1.);
    }
  }
  return;
}


x86 assembly (clang, -O0):
<pnorm_both>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
movsd  %xmm0,-0x8(%rbp)
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %edx,-0x1c(%rbp)
mov    %ecx,-0x20(%rbp)
movsd  0xea2(%rip),%xmm0
mov    0x2e7b(%rip),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
cmpl   $0x1,-0x1c(%rbp)
setne  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x60(%rbp)
cmpl   $0x0,-0x1c(%rbp)
setne  %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x64(%rbp)
movsd  -0x8(%rbp),%xmm0
movaps 0xec0(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0xe4f(%rip),%xmm0
ucomisd -0x58(%rbp),%xmm0
jb     1325 <pnorm_both+0x1e5>
movsd  -0x58(%rbp),%xmm0
ucomisd -0x48(%rbp),%xmm0
jbe    1259 <pnorm_both+0x119>
movsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xead(%rip),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movl   $0x0,-0x5c(%rbp)
cmpl   $0x3,-0x5c(%rbp)
jge    1254 <pnorm_both+0x114>
movsd  -0x30(%rbp),%xmm0
movslq -0x5c(%rbp),%rcx
lea    0xe58(%rip),%rax
addsd  (%rax,%rcx,8),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x28(%rbp),%xmm0
movslq -0x5c(%rbp),%rcx
lea    0xe69(%rip),%rax
addsd  (%rax,%rcx,8),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    11fe <pnorm_both+0xbe>
jmp    1269 <pnorm_both+0x129>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x28(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
addsd  0xe0d(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm1
addsd  0xe2c(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
cmpl   $0x0,-0x60(%rbp)
je     12b4 <pnorm_both+0x174>
movsd  0xd61(%rip),%xmm0
addsd  -0x38(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
cmpl   $0x0,-0x64(%rbp)
je     12d3 <pnorm_both+0x193>
movsd  0xd42(%rip),%xmm0
subsd  -0x38(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
cmpl   $0x0,-0x20(%rbp)
je     1320 <pnorm_both+0x1e0>
cmpl   $0x0,-0x60(%rbp)
je     12fc <pnorm_both+0x1bc>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
call   1050 <log@plt>
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
cmpl   $0x0,-0x64(%rbp)
je     131b <pnorm_both+0x1db>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
call   1050 <log@plt>
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1320 <pnorm_both+0x1e0>
jmp    1b72 <pnorm_both+0xa32>
movsd  0xce3(%rip),%xmm0
ucomisd -0x58(%rbp),%xmm0
jb     164c <pnorm_both+0x50c>
movsd  0xdc0(%rip),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movl   $0x0,-0x5c(%rbp)
cmpl   $0x7,-0x5c(%rbp)
jge    13b1 <pnorm_both+0x271>
movsd  -0x30(%rbp),%xmm0
movslq -0x5c(%rbp),%rcx
lea    0xd4b(%rip),%rax
addsd  (%rax,%rcx,8),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x28(%rbp),%xmm0
movslq -0x5c(%rbp),%rcx
lea    0xd7c(%rip),%rax
addsd  (%rax,%rcx,8),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    135b <pnorm_both+0x21b>
movsd  -0x30(%rbp),%xmm0
addsd  0xd3a(%rip),%xmm0
movsd  -0x28(%rbp),%xmm1
addsd  0xd7d(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xc6c(%rip),%xmm0
mulsd  -0x58(%rbp),%xmm0
call   1040 <trunc@plt>
mov    $0x10,%ecx
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x58(%rbp),%xmm0
subsd  -0x50(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
addsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
cmpl   $0x0,-0x20(%rbp)
je     156c <pnorm_both+0x42c>
movsd  -0x50(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xba5(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xb99(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
call   1050 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x70(%rbp),%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
cmpl   $0x0,-0x60(%rbp)
je     14b6 <pnorm_both+0x376>
movsd  -0x8(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
ja     14ce <pnorm_both+0x38e>
cmpl   $0x0,-0x64(%rbp)
je     1567 <pnorm_both+0x427>
xorps  %xmm0,%xmm0
ucomisd -0x8(%rbp),%xmm0
jb     1567 <pnorm_both+0x427>
movsd  -0x50(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  0xb11(%rip),%xmm1
mulsd  %xmm1,%xmm0
call   1030 <exp@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xac8(%rip),%xmm1
mulsd  %xmm1,%xmm0
call   1030 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x78(%rbp),%xmm0
mulsd  %xmm1,%xmm0
mulsd  -0x38(%rbp),%xmm0
call   1060 <log1p@plt>
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1601 <pnorm_both+0x4c1>
movsd  -0x50(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  0xa73(%rip),%xmm1
mulsd  %xmm1,%xmm0
call   1030 <exp@plt>
movsd  %xmm0,-0x80(%rbp)
movsd  -0x40(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xa41(%rip),%xmm1
mulsd  %xmm1,%xmm0
call   1030 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x80(%rbp),%xmm0
mulsd  %xmm1,%xmm0
mulsd  -0x38(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0xa4b(%rip),%xmm0
subsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x8(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1647 <pnorm_both+0x507>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
cmpl   $0x0,-0x60(%rbp)
je     163a <pnorm_both+0x4fa>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x38(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1b6d <pnorm_both+0xa2d>
cmpl   $0x0,-0x20(%rbp)
je     1669 <pnorm_both+0x529>
movsd  0x9ba(%rip),%xmm0
ucomisd -0x58(%rbp),%xmm0
ja     16d1 <pnorm_both+0x591>
cmpl   $0x0,-0x60(%rbp)
je     169d <pnorm_both+0x55d>
movsd  -0x8(%rbp),%xmm0
movsd  0x9a0(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    169d <pnorm_both+0x55d>
movsd  0x996(%rip),%xmm0
ucomisd -0x8(%rbp),%xmm0
ja     16d1 <pnorm_both+0x591>
cmpl   $0x0,-0x64(%rbp)
je     1a32 <pnorm_both+0x8f2>
movsd  -0x8(%rbp),%xmm0
movsd  0x97c(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1a32 <pnorm_both+0x8f2>
movsd  0x972(%rip),%xmm0
ucomisd -0x8(%rbp),%xmm0
jbe    1a32 <pnorm_both+0x8f2>
movsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
movsd  0x95d(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xa84(%rip),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movl   $0x0,-0x5c(%rbp)
cmpl   $0x4,-0x5c(%rbp)
jge    1765 <pnorm_both+0x625>
movsd  -0x30(%rbp),%xmm0
movslq -0x5c(%rbp),%rcx
lea    0xa27(%rip),%rax
addsd  (%rax,%rcx,8),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x28(%rbp),%xmm0
movslq -0x5c(%rbp),%rcx
lea    0xa38(%rip),%rax
addsd  (%rax,%rcx,8),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    170f <pnorm_both+0x5cf>
movsd  -0x50(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
addsd  0x9f9(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm1
addsd  0xa18(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x8b7(%rip),%xmm0
subsd  -0x38(%rbp),%xmm0
divsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x898(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
call   1040 <trunc@plt>
mov    $0x10,%ecx
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x8(%rbp),%xmm0
subsd  -0x50(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm1
addsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
cmpl   $0x0,-0x20(%rbp)
je     194c <pnorm_both+0x80c>
movsd  -0x50(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x7d1(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x7c5(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
call   1050 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x88(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
cmpl   $0x0,-0x60(%rbp)
je     1890 <pnorm_both+0x750>
movsd  -0x8(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
ja     18a8 <pnorm_both+0x768>
cmpl   $0x0,-0x64(%rbp)
je     1947 <pnorm_both+0x807>
xorps  %xmm0,%xmm0
ucomisd -0x8(%rbp),%xmm0
jb     1947 <pnorm_both+0x807>
movsd  -0x50(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  0x737(%rip),%xmm1
mulsd  %xmm1,%xmm0
call   1030 <exp@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x6eb(%rip),%xmm1
mulsd  %xmm1,%xmm0
call   1030 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x90(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mulsd  -0x38(%rbp),%xmm0
call   1060 <log1p@plt>
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    19e7 <pnorm_both+0x8a7>
movsd  -0x50(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  0x693(%rip),%xmm1
mulsd  %xmm1,%xmm0
call   1030 <exp@plt>
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x65e(%rip),%xmm1
mulsd  %xmm1,%xmm0
call   1030 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x98(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mulsd  -0x38(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x665(%rip),%xmm0
subsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x8(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1a2d <pnorm_both+0x8ed>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
cmpl   $0x0,-0x60(%rbp)
je     1a20 <pnorm_both+0x8e0>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x38(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1b68 <pnorm_both+0xa28>
movsd  -0x8(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1ad6 <pnorm_both+0x996>
mov    -0x20(%rbp),%eax
xorps  %xmm0,%xmm0
movsd  0x5ee(%rip),%xmm1
movsd  %xmm1,-0xa8(%rbp)
ff
cmp    $0x0,%eax
movsd  %xmm0,-0xa0(%rbp)
ff
jne    1a7b <pnorm_both+0x93b>
movsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
cmpl   $0x0,-0x20(%rbp)
je     1ab1 <pnorm_both+0x971>
xor    %eax,%eax
mov    0x253a(%rip),%rcx
sub    (%rcx),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
jmp    1ac1 <pnorm_both+0x981>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
jmp    1ac1 <pnorm_both+0x981>
movsd  -0xb0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1b63 <pnorm_both+0xa23>
cmpl   $0x0,-0x20(%rbp)
je     1afc <pnorm_both+0x9bc>
xor    %eax,%eax
mov    0x24ef(%rip),%rcx
sub    (%rcx),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
jmp    1b0c <pnorm_both+0x9cc>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
jmp    1b0c <pnorm_both+0x9cc>
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x20(%rbp),%eax
xorps  %xmm0,%xmm0
movsd  0x516(%rip),%xmm1
movsd  %xmm1,-0xc8(%rbp)
ff
cmp    $0x0,%eax
movsd  %xmm0,-0xc0(%rbp)
ff
jne    1b53 <pnorm_both+0xa13>
movsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1b68 <pnorm_both+0xa28>
jmp    1b6d <pnorm_both+0xa2d>
jmp    1b72 <pnorm_both+0xa32>
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<pnorm_both>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x50,%rsp
mov    %ecx,%ebx
mov    %edx,%ebp
mov    %rsi,%r14
mov    %rdi,%r15
movapd %xmm0,%xmm2
movapd 0xe9e(%rip),%xmm1
andpd  %xmm0,%xmm1
movsd  0xef2(%rip),%xmm0
ucomisd %xmm1,%xmm0
jae    1396 <pnorm_both+0x256>
movsd  0xef8(%rip),%xmm0
ucomisd %xmm1,%xmm0
movapd %xmm2,0x30(%rsp)
movapd %xmm1,(%rsp)
jae    1400 <pnorm_both+0x2c0>
test   %ebx,%ebx
je     11a7 <pnorm_both+0x67>
movsd  0xf7f(%rip),%xmm0
ucomisd %xmm1,%xmm0
ja     11ec <pnorm_both+0xac>
movsd  0xf79(%rip),%xmm0
ucomisd %xmm2,%xmm0
jbe    11c4 <pnorm_both+0x84>
ucomisd 0xf73(%rip),%xmm2
jbe    11c4 <pnorm_both+0x84>
cmp    $0x1,%ebp
jne    11ec <pnorm_both+0xac>
movsd  0xf6c(%rip),%xmm0
ucomisd %xmm2,%xmm0
jbe    171c <pnorm_both+0x5dc>
ucomisd 0xf62(%rip),%xmm2
jbe    171c <pnorm_both+0x5dc>
test   %ebp,%ebp
je     171c <pnorm_both+0x5dc>
movsd  0xf14(%rip),%xmm0
mulsd  %xmm2,%xmm0
call   1040 <trunc@plt>
lea    0xf(%rax),%ecx
test   %eax,%eax
cmovns %eax,%ecx
sar    $0x4,%ecx
movapd 0x30(%rsp),%xmm3
movapd %xmm3,%xmm0
mulsd  %xmm3,%xmm0
movsd  0xefa(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  0xf1e(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xf1a(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0xf16(%rip),%xmm2
addsd  %xmm1,%xmm2
mulsd  %xmm1,%xmm2
addsd  0xf0e(%rip),%xmm0
addsd  0xf0e(%rip),%xmm2
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm2
addsd  0xf06(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xf02(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xefe(%rip),%xmm0
addsd  0xefe(%rip),%xmm2
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm2
addsd  0xef6(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xef2(%rip),%xmm2
divsd  %xmm2,%xmm0
movsd  0xeee(%rip),%xmm2
subsd  %xmm0,%xmm2
cvtsi2sd %ecx,%xmm4
divsd  (%rsp),%xmm2
movapd %xmm3,%xmm1
subsd  %xmm4,%xmm1
movapd 0xd81(%rip),%xmm0
xorpd  %xmm4,%xmm0
mulsd  %xmm4,%xmm0
addsd  %xmm3,%xmm4
mulsd  %xmm1,%xmm4
test   %ebx,%ebx
movsd  %xmm2,(%rsp)
je     1695 <pnorm_both+0x555>
test   %ebp,%ebp
setne  %r12b
cmp    $0x1,%ebp
mulsd  0xe13(%rip),%xmm4
setne  %bl
mulsd  0xd60(%rip),%xmm0
movapd %xmm0,0x40(%rsp)
movapd %xmm4,0x20(%rsp)
addsd  %xmm4,%xmm0
movapd %xmm0,0x10(%rsp)
movapd %xmm2,%xmm0
call   1050 <log@plt>
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,(%r15)
xorpd  %xmm0,%xmm0
movapd 0x30(%rsp),%xmm1
ucomisd %xmm0,%xmm1
seta   %cl
ucomisd %xmm1,%xmm0
setae  %al
test   %bl,%cl
jne    1357 <pnorm_both+0x217>
and    %r12b,%al
je     16ec <pnorm_both+0x5ac>
movaps 0x40(%rsp),%xmm0
call   1030 <exp@plt>
xorps  0xce8(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movapd 0x20(%rsp),%xmm0
call   1030 <exp@plt>
mulsd  0x10(%rsp),%xmm0
mulsd  (%rsp),%xmm0
call   1060 <log1p@plt>
movapd %xmm0,%xmm1
movsd  %xmm0,(%r14)
jmp    16e6 <pnorm_both+0x5a6>
mov    0x2c4b(%rip),%rax
movsd  (%rax),%xmm0
mulsd  0xcbf(%rip),%xmm0
ucomisd %xmm0,%xmm1
jbe    15d6 <pnorm_both+0x496>
movapd %xmm2,%xmm1
mulsd  %xmm2,%xmm1
movsd  0xcad(%rip),%xmm0
mulsd  %xmm1,%xmm0
unpcklpd %xmm1,%xmm0
addpd  0xc4d(%rip),%xmm0
unpcklpd %xmm1,%xmm1
mulpd  %xmm1,%xmm0
addpd  0xc4d(%rip),%xmm0
mulpd  %xmm1,%xmm0
addpd  0xc51(%rip),%xmm0
mulpd  %xmm1,%xmm0
addpd  0xc15(%rip),%xmm0
jmp    15de <pnorm_both+0x49e>
movsd  0xc78(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xc74(%rip),%xmm2
mulsd  %xmm1,%xmm2
movsd  0xc70(%rip),%xmm0
addsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
addsd  0xc68(%rip),%xmm2
addsd  0xc68(%rip),%xmm0
mulsd  %xmm1,%xmm2
mulsd  %xmm1,%xmm0
addsd  0xc60(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xc5c(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xc58(%rip),%xmm2
addsd  0xc58(%rip),%xmm0
mulsd  %xmm1,%xmm2
mulsd  %xmm1,%xmm0
addsd  0xc50(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xc4c(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xc48(%rip),%xmm2
addsd  0xc48(%rip),%xmm0
mulsd  %xmm1,%xmm2
mulsd  %xmm1,%xmm0
addsd  0xc40(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xc3c(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xc38(%rip),%xmm2
addsd  0xc38(%rip),%xmm0
divsd  %xmm0,%xmm2
movsd  %xmm2,0x20(%rsp)
movsd  0xc2e(%rip),%xmm0
mulsd  %xmm1,%xmm0
call   1040 <trunc@plt>
lea    0xf(%rax),%ecx
test   %eax,%eax
cmovns %eax,%ecx
sar    $0x4,%ecx
cvtsi2sd %ecx,%xmm3
movapd (%rsp),%xmm1
subsd  %xmm3,%xmm1
movapd (%rsp),%xmm2
addsd  %xmm3,%xmm2
movapd %xmm2,(%rsp)
movapd (%rsp),%xmm2
mulsd  %xmm1,%xmm2
movapd %xmm2,(%rsp)
movapd (%rsp),%xmm1
movapd 0xb2c(%rip),%xmm0
xorpd  %xmm3,%xmm0
mulsd  %xmm3,%xmm0
test   %ebx,%ebx
je     1648 <pnorm_both+0x508>
test   %ebp,%ebp
setne  %r12b
cmp    $0x1,%ebp
mulsd  0xbcb(%rip),%xmm1
setne  %bl
mulsd  0xb18(%rip),%xmm0
movapd %xmm0,0x40(%rsp)
movapd %xmm1,(%rsp)
addsd  %xmm1,%xmm0
movapd %xmm0,0x10(%rsp)
movsd  0x20(%rsp),%xmm0
call   1050 <log@plt>
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,(%r15)
xorpd  %xmm0,%xmm0
movapd 0x30(%rsp),%xmm1
ucomisd %xmm0,%xmm1
seta   %cl
ucomisd %xmm1,%xmm0
setae  %al
test   %bl,%cl
jne    15a0 <pnorm_both+0x460>
and    %r12b,%al
je     16ec <pnorm_both+0x5ac>
movaps 0x40(%rsp),%xmm0
call   1030 <exp@plt>
xorps  0xa9f(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movapd (%rsp),%xmm0
call   1030 <exp@plt>
mulsd  0x10(%rsp),%xmm0
mulsd  0x20(%rsp),%xmm0
call   1060 <log1p@plt>
jmp    168e <pnorm_both+0x54e>
movapd 0xa32(%rip),%xmm0
mulsd  %xmm0,%xmm2
unpckhpd %xmm0,%xmm0
divsd  %xmm0,%xmm2
cmp    $0x1,%ebp
je     1600 <pnorm_both+0x4c0>
movsd  0xa71(%rip),%xmm0
addsd  %xmm2,%xmm0
movsd  %xmm0,(%r15)
test   %ebp,%ebp
je     1615 <pnorm_both+0x4d5>
movsd  0xa5c(%rip),%xmm0
subsd  %xmm2,%xmm0
movsd  %xmm0,(%r14)
test   %ebx,%ebx
je     170f <pnorm_both+0x5cf>
cmp    $0x1,%ebp
je     1631 <pnorm_both+0x4f1>
movsd  (%r15),%xmm0
call   1050 <log@plt>
movsd  %xmm0,(%r15)
test   %ebp,%ebp
je     170f <pnorm_both+0x5cf>
movsd  (%r14),%xmm0
call   1050 <log@plt>
jmp    170a <pnorm_both+0x5ca>
mulsd  0xa18(%rip),%xmm0
call   1030 <exp@plt>
movsd  %xmm0,0x10(%rsp)
movapd (%rsp),%xmm0
mulsd  0xaa8(%rip),%xmm0
call   1030 <exp@plt>
mulsd  0x10(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,(%r15)
movsd  0xa8e(%rip),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,(%r14)
jmp    16e6 <pnorm_both+0x5a6>
mulsd  0x9cb(%rip),%xmm0
movapd %xmm4,0x20(%rsp)
call   1030 <exp@plt>
movsd  %xmm0,0x10(%rsp)
movapd 0x20(%rsp),%xmm0
mulsd  0xa54(%rip),%xmm0
call   1030 <exp@plt>
movsd  0xa4f(%rip),%xmm1
mulsd  0x10(%rsp),%xmm0
movsd  (%rsp),%xmm2
mulsd  %xmm0,%xmm2
movsd  %xmm2,(%r15)
subsd  %xmm2,%xmm1
movsd  %xmm1,(%r14)
movapd 0x30(%rsp),%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jbe    170f <pnorm_both+0x5cf>
movsd  (%r15),%xmm0
cmp    $0x1,%ebp
je     170a <pnorm_both+0x5ca>
movsd  (%r14),%xmm1
movsd  %xmm1,(%r15)
movsd  %xmm0,(%r14)
add    $0x50,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm2
jbe    1757 <pnorm_both+0x617>
xorpd  %xmm0,%xmm0
xorpd  %xmm1,%xmm1
test   %ebx,%ebx
jne    173a <pnorm_both+0x5fa>
movsd  0x9de(%rip),%xmm1
movsd  %xmm1,(%r15)
test   %ebx,%ebx
je     170a <pnorm_both+0x5ca>
mov    0x288e(%rip),%rax
xor    %ecx,%ecx
sub    (%rax),%ecx
xorps  %xmm0,%xmm0
cvtsi2sd %ecx,%xmm0
jmp    170a <pnorm_both+0x5ca>
mov    0x287a(%rip),%rcx
xor    %eax,%eax
sub    (%rcx),%eax
test   %ebx,%ebx
jne    176c <pnorm_both+0x62c>
xorpd  %xmm1,%xmm1
jmp    1773 <pnorm_both+0x633>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  %xmm1,(%r15)
jne    170a <pnorm_both+0x5ca>
movsd  0x996(%rip),%xmm0
jmp    170a <pnorm_both+0x5ca>

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

LLVM IR (-O2):
@DBL_EPSILON = global double 0.000000e+00
@DBL_MAX = global i32 0
define void @pnorm_both(double %0, double* nocapture %1, double* nocapture %2, i32 %3, i32 %4) {
%6 = icmp ne i32 %3, 1
%7 = icmp ne i32 %3, 0
%8 = tail call double @llvm.fabs.f64(double %0)
%9 = fcmp ugt double %8, 0x3FE5956B87379746
br i1 %9, label %49, label %10
10: ; preds = %5
%11 = load double, double* @DBL_EPSILON
%12 = fmul double %11, 5.000000e-01
%13 = fcmp ogt double %8, %12
br i1 %13, label %14, label %28
14: ; preds = %10
%15 = fmul double %0, %0
%16 = fmul double %15, 0x3FB0D08EC54894E1
%17 = insertelement <2 x double> poison, double %16, i64 0
%18 = insertelement <2 x double> %17, double %15, i64 1
%19 = fadd <2 x double> %18, <double 0x4001E1CBD1B4F7F3, double 0x404799EE342FB2DE>
%20 = insertelement <2 x double> poison, double %15, i64 0
%21 = shufflevector <2 x double> %20, <2 x double> poison, <2 x i32> zeroinitializer
%22 = fmul <2 x double> %21, %19
%23 = fadd <2 x double> %22, <double 0x406420E744D785B7, double 0x408E80C9D57E55B8>
%24 = fmul <2 x double> %21, %23
%25 = fadd <2 x double> %24, <double 0x4090AEC20879FD71, double 0x40C40A77529CADC8>
%26 = fmul <2 x double> %21, %25
%27 = fadd <2 x double> %26, <double 0x40D1BABECCDAD2EC, double 0x40E63879423B87AD>
br label %28
28: ; preds = %14, %10
%29 = phi <2 x double> [ <double 0x40D1BABECCDAD2EC, double 0x40E63879423B87AD>, %10 ], [ %27, %14 ]
%30 = extractelement <2 x double> %29, i64 0
%31 = fmul double %30, %0
%32 = extractelement <2 x double> %29, i64 1
%33 = fdiv double %31, %32
br i1 %6, label %34, label %36
34: ; preds = %28
%35 = fadd double %33, 5.000000e-01
store double %35, double* %1
br label %36
36: ; preds = %34, %28
br i1 %7, label %37, label %39
37: ; preds = %36
%38 = fsub double 5.000000e-01, %33
store double %38, double* %2
br label %39
39: ; preds = %37, %36
%40 = icmp eq i32 %4, 0
br i1 %40, label %227, label %41
41: ; preds = %39
br i1 %6, label %42, label %45
42: ; preds = %41
%43 = load double, double* %1
%44 = tail call double @log(double %43)
store double %44, double* %1
br label %45
45: ; preds = %42, %41
br i1 %7, label %46, label %227
46: ; preds = %45
%47 = load double, double* %2
%48 = tail call double @log(double %47)
br label %225
49: ; preds = %5
%50 = fcmp ugt double %8, 0x4016A09E667F3BCD
br i1 %50, label %128, label %51
51: ; preds = %49
%52 = fmul double %8, 0x3E471E703C5F5815
%53 = fadd double %52, 0x3FD98841FADBDC66
%54 = fmul double %8, %53
%55 = fadd double %8, 0x40364445AAEC9F9B
%56 = fmul double %8, %55
%57 = fadd double %54, 0x4021C42C35B8BC02
%58 = fmul double %8, %57
%59 = fadd double %56, 0x406D6C69B0FFCDE7
%60 = fmul double %8, %59
%61 = fadd double %58, 0x4057606D0DD78164
%62 = fmul double %8, %61
%63 = fadd double %60, 0x4097BD82A96B49BF
%64 = fmul double %8, %63
%65 = fadd double %62, 0x4082AA2986ABA462
%66 = fmul double %8, %65
%67 = fadd double %64, 0x40B9558EECA29D27
%68 = fmul double %8, %67
%69 = fadd double %66, 0x40A37D133E6111EC
%70 = fmul double %8, %69
%71 = fadd double %68, 0x40D22DE495C3A6A3
%72 = fmul double %8, %71
%73 = fadd double %70, 0x40BAC030C15DC8D7
%74 = fmul double %8, %73
%75 = fadd double %72, 0x40E10A9E7CB10E86
%76 = fmul double %8, %75
%77 = fadd double %74, 0x40C6A953624F0F60
%78 = fmul double %8, %77
%79 = fadd double %76, 0x40E300001AEB6FE4
%80 = fmul double %8, %79
%81 = fadd double %78, 0x40C3395B7FD2FC8E
%82 = fadd double %80, 0x40D3395B7FD35F61
%83 = fdiv double %81, %82
%84 = fmul double %8, 1.600000e+01
%85 = tail call i32 @trunc(double %84)
%86 = sdiv i32 %85, 16
%87 = sitofp i32 %86 to double
%88 = fsub double %8, %87
%89 = fadd double %8, %87
%90 = fmul double %88, %89
%91 = icmp eq i32 %4, 0
%92 = fneg double %87
%93 = fmul double %92, %87
br i1 %91, label %112, label %94
94: ; preds = %51
%95 = fmul double %90, -5.000000e-01
%96 = tail call double @llvm.fmuladd.f64(double %93, double 5.000000e-01, double %95)
%97 = tail call double @log(double %83)
%98 = fadd double %96, %97
store double %98, double* %1
%99 = fcmp ogt double %0, 0.000000e+00
%100 = and i1 %99, %6
%101 = fcmp ole double %0, 0.000000e+00
%102 = and i1 %101, %7
%103 = or i1 %100, %102
br i1 %103, label %104, label %122
104: ; preds = %94
%105 = fmul double %93, 5.000000e-01
%106 = tail call double @exp(double %105)
%107 = fneg double %106
%108 = tail call double @exp(double %95)
%109 = fmul double %108, %107
%110 = fmul double %83, %109
%111 = tail call double @log1p(double %110)
br label %120
112: ; preds = %51
%113 = fmul double %93, 5.000000e-01
%114 = tail call double @exp(double %113)
%115 = fmul double %90, -5.000000e-01
%116 = tail call double @exp(double %115)
%117 = fmul double %114, %116
%118 = fmul double %83, %117
store double %118, double* %1
%119 = fsub double 1.000000e+00, %118
br label %120
120: ; preds = %112, %104
%121 = phi double [ %111, %104 ], [ %119, %112 ]
store double %121, double* %2
br label %122
122: ; preds = %120, %94
%123 = fcmp ogt double %0, 0.000000e+00
br i1 %123, label %124, label %227
124: ; preds = %122
%125 = load double, double* %1
br i1 %6, label %126, label %225
126: ; preds = %124
%127 = load double, double* %2
store double %127, double* %1
br label %225
128: ; preds = %49
%129 = icmp ne i32 %4, 0
%130 = fcmp olt double %8, 1.000000e+170
%131 = select i1 %129, i1 %130, i1 false
br i1 %131, label %142, label %132
132: ; preds = %128
%133 = fcmp ogt double %0, -3.751930e+01
%134 = and i1 %133, %6
%135 = fcmp olt double %0, 8.292400e+00
%136 = and i1 %135, %134
br i1 %136, label %142, label %137
137: ; preds = %132
%138 = fcmp ogt double %0, -8.292400e+00
%139 = and i1 %138, %7
%140 = fcmp olt double %0, 3.751930e+01
%141 = and i1 %140, %139
br i1 %141, label %142, label %211
142: ; preds = %137, %132, %128
%143 = fmul double %0, %0
%144 = fdiv double 1.000000e+00, %143
%145 = fmul double %144, 0x3F97A090772574DA
%146 = fadd double %145, 0x3FCBA2902B84421C
%147 = fmul double %144, %146
%148 = fadd double %144, 0x3FF48C54508800DB
%149 = fmul double %144, %148
%150 = fadd double %147, 0x3FC04EAE6653ED94
%151 = fmul double %144, %150
%152 = fadd double %149, 0x3FDDF79D6855F0AD
%153 = fmul double %144, %152
%154 = fadd double %151, 0x3F96C4D83D16707A
%155 = fmul double %144, %154
%156 = fadd double %153, 0x3FB0E4993E122C39
%157 = fmul double %144, %156
%158 = fadd double %155, 0x3F574AB3FC4E4F8B
%159 = fmul double %144, %158
%160 = fadd double %157, 0x3F6EFC42917D7DE7
%161 = fmul double %144, %160
%162 = fadd double %159, 0x3EFE86ED886DC483
%163 = fmul double %144, %162
%164 = fadd double %161, 0x3F132147A014BAD1
%165 = fdiv double %163, %164
%166 = fsub double 0x3FD9884533D43651, %165
%167 = fdiv double %166, %8
%168 = fmul double %0, 1.600000e+01
%169 = tail call i32 @trunc(double %168)
%170 = sdiv i32 %169, 16
%171 = sitofp i32 %170 to double
%172 = fsub double %0, %171
%173 = fadd double %171, %0
%174 = fmul double %172, %173
%175 = fneg double %171
%176 = fmul double %175, %171
br i1 %129, label %177, label %195
177: ; preds = %142
%178 = fmul double %174, -5.000000e-01
%179 = tail call double @llvm.fmuladd.f64(double %176, double 5.000000e-01, double %178)
%180 = tail call double @log(double %167)
%181 = fadd double %179, %180
store double %181, double* %1
%182 = fcmp ogt double %0, 0.000000e+00
%183 = and i1 %182, %6
%184 = fcmp ole double %0, 0.000000e+00
%185 = and i1 %184, %7
%186 = or i1 %183, %185
br i1 %186, label %187, label %205
187: ; preds = %177
%188 = fmul double %176, 5.000000e-01
%189 = tail call double @exp(double %188)
%190 = fneg double %189
%191 = tail call double @exp(double %178)
%192 = fmul double %191, %190
%193 = fmul double %167, %192
%194 = tail call double @log1p(double %193)
br label %203
195: ; preds = %142
%196 = fmul double %176, 5.000000e-01
%197 = tail call double @exp(double %196)
%198 = fmul double %174, -5.000000e-01
%199 = tail call double @exp(double %198)
%200 = fmul double %197, %199
%201 = fmul double %167, %200
store double %201, double* %1
%202 = fsub double 1.000000e+00, %201
br label %203
203: ; preds = %195, %187
%204 = phi double [ %194, %187 ], [ %202, %195 ]
store double %204, double* %2
br label %205
205: ; preds = %203, %177
%206 = fcmp ogt double %0, 0.000000e+00
br i1 %206, label %207, label %227
207: ; preds = %205
%208 = load double, double* %1
br i1 %6, label %209, label %225
209: ; preds = %207
%210 = load double, double* %2
store double %210, double* %1
br label %225
211: ; preds = %137
%212 = fcmp ogt double %0, 0.000000e+00
br i1 %212, label %213, label %219
213: ; preds = %211
%214 = select i1 %129, double 0.000000e+00, double 1.000000e+00
store double %214, double* %1
%215 = load i32, i32* @DBL_MAX
%216 = sub nsw i32 0, %215
%217 = sitofp i32 %216 to double
%218 = select i1 %129, double %217, double 0.000000e+00
br label %225
219: ; preds = %211
%220 = load i32, i32* @DBL_MAX
%221 = sub nsw i32 0, %220
%222 = sitofp i32 %221 to double
%223 = select i1 %129, double %222, double 0.000000e+00
store double %223, double* %1
%224 = select i1 %129, double 0.000000e+00, double 1.000000e+00
br label %225
225: ; preds = %207, %209, %124, %126, %46, %219, %213
%226 = phi double [ %218, %213 ], [ %224, %219 ], [ %48, %46 ], [ %125, %126 ], [ %125, %124 ], [ %208, %209 ], [ %208, %207 ]
store double %226, double* %2
br label %227
227: ; preds = %225, %122, %205, %39, %45
ret void
}