#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 exp(double);
double pow(double, double);
double sqrt(double);
void next(double *fg, double *fg_0, double *t, double *tau_dep, int *nd,
          double Sigg[], double r[], double *dt, double *Time, int *nt, int *j,
          double *dM, double *M, double *alpha, double *L, double T[],
          double eta[], double fd[], double Sigd[], int *fossilize,
          double *r_snow, int type[], int *n, double a[]) {
  int i, k;
  double Sigg_v, Sigg_i, T_v, T_i, r_sv, r_si, h, f_ice, eta_b, d_snow, d_acc,
      nu;
  *dt = pow(pow(*Time, 1.0 / (double)(*nt)), (double)(*j)) - (*t);
  *t = pow(pow(*Time, 1.0 / (double)(*nt)), (double)(*j));
  *fg = *fg_0 * exp(-(*t) / (*tau_dep));
  *dM = 1.5e-7 * (*fg) * (*alpha / 1.0e-3);
  r_sv = 1.2 * pow(*M / 1.9884e33, 1.0 / 3.0) *
         pow(*alpha / 1.0e-3, -2.0 / 9.0) * pow(*dM / 1.0e-8, 4.0 / 9.0);
  r_si = 0.75 * pow(*L / 3.839e33, 2.0 / 3.0) * pow(*M / 1.9884e33, -1.0 / 3.0);
  if (r_sv > r_si) {
    d_snow = *r_snow - r_sv;
    *r_snow = r_sv;
  } else {
    d_snow = *r_snow - r_si;
    *r_snow = r_si;
  }
  nu = *alpha * pow(*r_snow * 5.0e-2, 2.0) *
       sqrt(6.6738480e-8 * (*M) / pow(*r_snow * 1.495978707e13, 3.0));
  d_acc = *dt * 1.5 * nu / (*r_snow);
  for (i = 0; i < *nd; i++) {
    Sigg_v = 2.1e3 * pow(*M / 1.9884e33, 1.0 / 5.0) *
             pow(*alpha / 1.0e-3, -4.0 / 5.0) * pow(*dM / 1.0e-8, 3.0 / 5.0) *
             pow(r[i], -3.0 / 5.0);
    Sigg_i = 2.7e3 * pow(*L / 3.839e33, -2.0 / 7.0) *
             pow(*M / 1.9884e33, 9.0 / 14.0) * pow(*alpha / 1.0e-3, -1.0) *
             (*dM / 1.0e-8) * pow(r[i], -15.0 / 14.0);
    if (Sigg_v < Sigg_i)
      Sigg[i] = Sigg_v;
    else
      Sigg[i] = Sigg_i;
    T_v = 2.0e2 * pow(*M / 1.9884e33, 3.0 / 10.0) *
          pow(*alpha / 1.0e-3, -1.0 / 5.0) * pow(*dM / 1.0e-8, 2.0 / 5.0) *
          pow(r[i], -9.0 / 10.0);
    T_i = 1.5e2 * pow(*L / 3.839e33, 2.0 / 7.0) *
          pow(*M / 1.9884e33, -1.0 / 7.0) * pow(r[i], -3.0 / 7.0);
    if (T_v > T_i)
      T[i] = T_v;
    else
      T[i] = T_i;
    if (*fossilize == 0) {
      eta_b = eta[i];
      if (r[i] < *r_snow) {
        if (eta_b > 2.0) {
          h = 5.0e-2 * sqrt(T[i] / 3.0e2) * pow(r[i], 1.5) *
              pow(*M / 1.9884e33, -0.5);
          f_ice = 1.0 + 2.0 * exp(-pow(r[i] - *r_snow, 2.0) / (h * h));
          Sigd[i] *= (fd[i] - 4.2 * f_ice * (*fg)) / fd[i];
          fd[i] -= 4.2 * f_ice * (*fg);
          eta[i] = 1.0;
        }
      } else {
        if (eta_b < 2.0) {
          h = 5.0e-2 * sqrt(T[i] / 3.0e2) * pow(r[i], 1.5) *
              pow(*M / 1.9884e33, -0.5);
          f_ice = 1.0 + 2.0 * exp(-pow(r[i] - *r_snow, 2.0) / (h * h));
          Sigd[i] *= (fd[i] + 4.2 * f_ice * (*fg)) / fd[i];
          fd[i] += 4.2 * f_ice * (*fg);
          eta[i] = 4.2 * f_ice;
        }
      }
    }
  }
}


x86 assembly (clang, -O0):
<next>:
push   %rbp
mov    %rsp,%rbp
sub    $0x150,%rsp
mov    0x98(%rbp),%rax
mov    0x90(%rbp),%rax
mov    0x88(%rbp),%rax
mov    0x80(%rbp),%rax
mov    0x78(%rbp),%rax
mov    0x70(%rbp),%rax
mov    0x68(%rbp),%rax
mov    0x60(%rbp),%rax
mov    0x58(%rbp),%rax
mov    0x50(%rbp),%rax
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%rax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
cvtsi2sdl (%rax),%xmm2
movsd  0xea1(%rip),%xmm1
divsd  %xmm2,%xmm1
call   1040 <pow@plt>
mov    0x30(%rbp),%rax
cvtsi2sdl (%rax),%xmm1
call   1040 <pow@plt>
mov    -0x18(%rbp),%rax
subsd  (%rax),%xmm0
mov    0x18(%rbp),%rax
movsd  %xmm0,(%rax)
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
cvtsi2sdl (%rax),%xmm2
movsd  0xe63(%rip),%xmm1
divsd  %xmm2,%xmm1
call   1040 <pow@plt>
mov    0x30(%rbp),%rax
cvtsi2sdl (%rax),%xmm1
call   1040 <pow@plt>
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x20(%rbp),%rax
divsd  (%rax),%xmm0
call   1030 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movsd  0xdde(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    0x48(%rbp),%rax
movsd  (%rax),%xmm1
movsd  0xdb2(%rip),%xmm2
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xd5a(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xd96(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xd7e(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x48(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xd5a(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xd46(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xb0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xd12(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xcfe(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xccd(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xcb9(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xca1(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xc7d(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xc69(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x60(%rbp),%xmm0
ucomisd -0x68(%rbp),%xmm0
jbe    13ed <next+0x2bd>
mov    0x80(%rbp),%rax
movsd  (%rax),%xmm0
subsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
mov    0x80(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1415 <next+0x2e5>
mov    0x80(%rbp),%rax
movsd  (%rax),%xmm0
subsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
mov    0x80(%rbp),%rax
movsd  %xmm0,(%rax)
mov    0x48(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    0x80(%rbp),%rax
movsd  0xc5c(%rip),%xmm0
mulsd  (%rax),%xmm0
movsd  0xc48(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    0x40(%rbp),%rax
movsd  0xc18(%rip),%xmm0
mulsd  (%rax),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    0x80(%rbp),%rax
movsd  0xbf5(%rip),%xmm0
mulsd  (%rax),%xmm0
movsd  0xbe1(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xc8(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
call   1050 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0xb9d(%rip),%xmm0
mulsd  (%rax),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
mov    0x80(%rbp),%rax
divsd  (%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movl   $0x0,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    -0x28(%rbp),%rcx
cmp    (%rcx),%eax
jge    1c86 <next+0xb56>
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xaf8(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xbc4(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xbac(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x48(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xaf8(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xb7c(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x100(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xab0(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xb3c(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xb03(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xf0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xa3a(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xac6(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xaae(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x9ea(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xa7e(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    0x48(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x9ea(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xa3e(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mov    0x38(%rbp),%rax
movsd  (%rax),%xmm1
movsd  0x9aa(%rip),%xmm2
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0x9ed(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x40(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    16ef <next+0x5bf>
movsd  -0x40(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1701 <next+0x5d1>
movsd  -0x48(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x8f7(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xa0b(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x9f3(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x48(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x8f7(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0x9c3(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x128(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x8af(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0x983(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x120(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0x94a(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x118(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x839(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0x90d(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x8f5(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x7e9(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0x8c5(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x110(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
mov    0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0x88c(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x108(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
ucomisd -0x58(%rbp),%xmm0
jbe    189c <next+0x76c>
movsd  -0x50(%rbp),%xmm0
mov    0x58(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    18ae <next+0x77e>
movsd  -0x58(%rbp),%xmm0
mov    0x58(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x78(%rbp),%rax
cmpl   $0x0,(%rax)
jne    1c73 <next+0xb43>
mov    0x60(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x80(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jbe    1ac5 <next+0x995>
movsd  -0x80(%rbp),%xmm0
movsd  0x78c(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1ac0 <next+0x990>
mov    0x58(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0x825(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1050 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  0x761(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0x718(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x138(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x68c(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0x7b0(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x130(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x80(%rbp),%rax
subsd  (%rax),%xmm0
movsd  0x6c7(%rip),%xmm1
call   1040 <pow@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x70(%rbp),%xmm1
mulsd  -0x70(%rbp),%xmm1
divsd  %xmm1,%xmm0
call   1030 <exp@plt>
addsd  %xmm0,%xmm0
movsd  0x664(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    0x68(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0x716(%rip),%xmm0
mulsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x68(%rbp),%rax
movslq -0x34(%rbp),%rcx
divsd  (%rax,%rcx,8),%xmm0
mov    0x70(%rbp),%rax
movslq -0x34(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movsd  0x6c3(%rip),%xmm0
mulsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
mov    0x68(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movq   %xmm0,%rdx
movabs $0x8000000000000000,%rsi
xor    %rsi,%rdx
movq   %rdx,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    0x60(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  0x5a5(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
jmp    1c6e <next+0xb3e>
movsd  0x5bb(%rip),%xmm0
ucomisd -0x80(%rbp),%xmm0
jbe    1c69 <next+0xb39>
mov    0x58(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0x653(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1050 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  0x58f(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0x546(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x148(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x4ba(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0x5de(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x140(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x80(%rbp),%rax
subsd  (%rax),%xmm0
movsd  0x4f5(%rip),%xmm1
call   1040 <pow@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x70(%rbp),%xmm1
mulsd  -0x70(%rbp),%xmm1
divsd  %xmm1,%xmm0
call   1030 <exp@plt>
addsd  %xmm0,%xmm0
movsd  0x492(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    0x68(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0x544(%rip),%xmm0
mulsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x68(%rbp),%rax
movslq -0x34(%rbp),%rcx
divsd  (%rax,%rcx,8),%xmm0
mov    0x70(%rbp),%rax
movslq -0x34(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movsd  0x508(%rip),%xmm0
mulsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
mov    0x68(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movsd  0x4d9(%rip),%xmm0
mulsd  -0x78(%rbp),%xmm0
mov    0x60(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1c6e <next+0xb3e>
jmp    1c73 <next+0xb43>
jmp    1c78 <next+0xb48>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    14f1 <next+0x3c1>
add    $0x150,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<next>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x78,%rsp
mov    %r9,0x50(%rsp)
mov    %r8,0x20(%rsp)
mov    %rcx,(%rsp)
mov    %rdx,%rbp
mov    %rsi,0x10(%rsp)
mov    %rdi,%rbx
mov    0xe8(%rsp),%r14
mov    0xd0(%rsp),%r13
mov    0xc8(%rsp),%r15
mov    0xc0(%rsp),%r12
movsd  (%r12),%xmm0
cvtsi2sdl (%r15),%xmm2
movsd  0xe76(%rip),%xmm1
divsd  %xmm2,%xmm1
call   1040 <pow@plt>
xorps  %xmm1,%xmm1
cvtsi2sdl 0x0(%r13),%xmm1
call   1040 <pow@plt>
subsd  0x0(%rbp),%xmm0
mov    0xb8(%rsp),%rax
movsd  %xmm0,(%rax)
movsd  (%r12),%xmm0
xorps  %xmm2,%xmm2
cvtsi2sdl (%r15),%xmm2
movsd  0xe38(%rip),%xmm1
divsd  %xmm2,%xmm1
call   1040 <pow@plt>
xorps  %xmm1,%xmm1
cvtsi2sdl 0x0(%r13),%xmm1
call   1040 <pow@plt>
movsd  %xmm0,0x0(%rbp)
mov    0x10(%rsp),%rax
movsd  (%rax),%xmm1
movsd  %xmm1,0x10(%rsp)
xorpd  0xf45(%rip),%xmm0
mov    (%rsp),%rax
divsd  (%rax),%xmm0
call   1030 <exp@plt>
mulsd  0x10(%rsp),%xmm0
mov    %rbx,0x28(%rsp)
movsd  %xmm0,(%rbx)
mulsd  0xde9(%rip),%xmm0
movsd  (%r14),%xmm1
divsd  0xde4(%rip),%xmm1
mulsd  %xmm0,%xmm1
mov    0xd8(%rsp),%rbp
movsd  %xmm1,0x0(%rbp)
mov    0xe0(%rsp),%rbx
movsd  (%rbx),%xmm0
divsd  0xdc7(%rip),%xmm0
movsd  0xdc7(%rip),%xmm1
call   1040 <pow@plt>
mulsd  0xdc2(%rip),%xmm0
movsd  %xmm0,(%rsp)
movsd  (%r14),%xmm0
divsd  0xd98(%rip),%xmm0
movsd  0xdb0(%rip),%xmm1
call   1040 <pow@plt>
mulsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x0(%rbp),%xmm0
divsd  0xd9c(%rip),%xmm0
movsd  0xd9c(%rip),%xmm1
call   1040 <pow@plt>
mulsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    0xf0(%rsp),%rax
movsd  (%rax),%xmm0
divsd  0xd81(%rip),%xmm0
movsd  0xd81(%rip),%xmm1
call   1040 <pow@plt>
mulsd  0xd7c(%rip),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  (%rbx),%xmm0
divsd  0xd2a(%rip),%xmm0
movsd  0xd6a(%rip),%xmm1
call   1040 <pow@plt>
mulsd  0x10(%rsp),%xmm0
movsd  (%rsp),%xmm1
maxsd  %xmm0,%xmm1
mov    0x120(%rsp),%rax
movsd  %xmm1,(%rax)
movsd  (%rbx),%xmm0
mulsd  0xd46(%rip),%xmm0
movsd  %xmm0,(%rsp)
mulsd  0xd41(%rip),%xmm1
movapd %xmm1,%xmm0
movsd  0xd3d(%rip),%xmm1
call   1040 <pow@plt>
movsd  (%rsp),%xmm1
divsd  %xmm0,%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
ja     18e3 <next+0x7b3>
mov    0x20(%rsp),%rcx
cmpl   $0x0,(%rcx)
jle    18d4 <next+0x7a4>
mov    0x108(%rsp),%rbx
xor    %r15d,%r15d
jmp    1494 <next+0x364>
movapd %xmm2,%xmm0
call   1050 <sqrt@plt>
mulsd  0xd8a(%rip),%xmm0
movsd  %xmm0,(%rsp)
mov    0xb0(%rsp),%rbp
movsd  0x0(%rbp,%r15,8),%xmm0
movsd  0xd76(%rip),%xmm1
call   1040 <pow@plt>
mulsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    0xe0(%rsp),%rax
movsd  (%rax),%xmm0
divsd  0xc53(%rip),%xmm0
movsd  0xd53(%rip),%xmm1
call   1040 <pow@plt>
mulsd  (%rsp),%xmm0
movsd  0x0(%rbp,%r15,8),%xmm2
mov    0x120(%rsp),%rax
subsd  (%rax),%xmm2
movapd %xmm2,%xmm1
xorpd  0xd4a(%rip),%xmm1
mulsd  %xmm2,%xmm1
mulsd  %xmm0,%xmm0
divsd  %xmm0,%xmm1
movapd %xmm1,%xmm0
call   1030 <exp@plt>
addsd  %xmm0,%xmm0
addsd  0xbe9(%rip),%xmm0
movsd  (%rbx),%xmm2
mulsd  0xd05(%rip),%xmm0
mov    0x28(%rsp),%rcx
movsd  (%rcx),%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm2,%xmm1
mov    %rbx,%rax
movapd %xmm0,%xmm2
mov    0x110(%rsp),%rdx
mulsd  (%rdx,%r15,8),%xmm1
movsd  %xmm1,(%rdx,%r15,8)
mulsd  (%rcx),%xmm0
addsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
mov    0x100(%rsp),%rax
movsd  %xmm2,(%rax,%r15,8)
mov    0x20(%rsp),%rcx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x1,%r15
movslq (%rcx),%rax
add    $0x8,%rbx
cmp    %rax,%r15
jge    18d4 <next+0x7a4>
mov    %rbx,0x58(%rsp)
mov    0xe0(%rsp),%rbx
movsd  (%rbx),%xmm0
movsd  0xb6b(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xbc7(%rip),%xmm1
call   1040 <pow@plt>
movapd %xmm0,0x30(%rsp)
mov    0xe8(%rsp),%r13
movsd  0x0(%r13),%xmm0
movsd  0xb36(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xba2(%rip),%xmm1
call   1040 <pow@plt>
movapd %xmm0,0x40(%rsp)
mov    0xd8(%rsp),%r12
movsd  (%r12),%xmm0
movsd  0xb31(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xb7d(%rip),%xmm1
call   1040 <pow@plt>
movapd %xmm0,(%rsp)
mov    0xb0(%rsp),%rbp
movsd  0x0(%rbp,%r15,8),%xmm0
movsd  0xb64(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,0x10(%rsp)
mov    0xf0(%rsp),%r14
movsd  (%r14),%xmm0
movsd  0xaf5(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xb41(%rip),%xmm1
call   1040 <pow@plt>
mulsd  0xb3c(%rip),%xmm0
movapd %xmm0,0x60(%rsp)
movsd  (%rbx),%xmm0
divsd  0xa9a(%rip),%xmm0
movsd  0xb2a(%rip),%xmm1
call   1040 <pow@plt>
movapd 0x30(%rsp),%xmm2
unpcklpd 0x60(%rsp),%xmm2
movapd 0xbb1(%rip),%xmm1
unpcklpd %xmm0,%xmm1
mulpd  %xmm2,%xmm1
movsd  0x0(%r13),%xmm0
divsd  0xa5b(%rip),%xmm0
movapd 0xbb3(%rip),%xmm2
unpcklpd %xmm0,%xmm2
movapd 0xb97(%rip),%xmm0
movlpd (%r12),%xmm0
divpd  %xmm2,%xmm0
movapd 0x40(%rsp),%xmm2
shufpd $0x2,%xmm0,%xmm2
mulpd  %xmm1,%xmm2
movapd (%rsp),%xmm1
unpcklpd %xmm0,%xmm1
mulpd  %xmm2,%xmm1
movapd %xmm1,(%rsp)
movsd  0x0(%rbp,%r15,8),%xmm0
movsd  0xab5(%rip),%xmm1
call   1040 <pow@plt>
movapd 0x10(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
mulpd  (%rsp),%xmm1
movapd %xmm1,%xmm0
unpckhpd %xmm1,%xmm0
minsd  %xmm0,%xmm1
mov    0x50(%rsp),%rax
movsd  %xmm1,(%rax,%r15,8)
movsd  (%rbx),%xmm0
divsd  0x9de(%rip),%xmm0
movsd  0xa7e(%rip),%xmm1
call   1040 <pow@plt>
mulsd  0xa79(%rip),%xmm0
movapd %xmm0,0x40(%rsp)
movsd  0x0(%r13),%xmm0
divsd  0x9ad(%rip),%xmm0
movsd  0xa65(%rip),%xmm1
call   1040 <pow@plt>
movapd %xmm0,0x10(%rsp)
movsd  (%r12),%xmm0
divsd  0x9b4(%rip),%xmm0
movsd  0xa4c(%rip),%xmm1
call   1040 <pow@plt>
movapd %xmm0,(%rsp)
movsd  0x0(%rbp,%r15,8),%xmm0
movsd  0xa3b(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,0x30(%rsp)
movsd  (%r14),%xmm0
divsd  0x98c(%rip),%xmm0
movsd  0xa24(%rip),%xmm1
call   1040 <pow@plt>
movapd 0x40(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
movapd 0x10(%rsp),%xmm0
shufpd $0x2,0xa9e(%rip),%xmm0
mulpd  %xmm1,%xmm0
movapd %xmm0,0x10(%rsp)
movsd  (%rbx),%xmm0
mov    0x58(%rsp),%rbx
divsd  0x91b(%rip),%xmm0
movsd  0x9eb(%rip),%xmm1
call   1040 <pow@plt>
movapd (%rsp),%xmm1
unpcklpd %xmm0,%xmm1
mulpd  0x10(%rsp),%xmm1
movapd %xmm1,(%rsp)
movsd  0x0(%rbp,%r15,8),%xmm0
movsd  0x9cb(%rip),%xmm1
call   1040 <pow@plt>
movapd 0x30(%rsp),%xmm2
mov    0x20(%rsp),%rcx
unpcklpd %xmm0,%xmm2
mulpd  (%rsp),%xmm2
movapd %xmm2,%xmm0
unpckhpd %xmm2,%xmm0
maxsd  %xmm0,%xmm2
mov    0xf8(%rsp),%rax
movsd  %xmm2,(%rax,%r15,8)
mov    0x118(%rsp),%rax
cmpl   $0x0,(%rax)
jne    1480 <next+0x350>
mov    0x100(%rsp),%rax
movsd  (%rax,%r15,8),%xmm0
mov    0x120(%rsp),%rax
movsd  (%rax),%xmm1
mov    0xb0(%rsp),%rax
ucomisd (%rax,%r15,8),%xmm1
jbe    17c4 <next+0x694>
ucomisd 0x95d(%rip),%xmm0
jbe    1480 <next+0x350>
divsd  0x957(%rip),%xmm2
ucomisd 0x97f(%rip),%xmm2
jb     17f8 <next+0x6c8>
xorps  %xmm0,%xmm0
sqrtsd %xmm2,%xmm0
jmp    1801 <next+0x6d1>
movsd  0x934(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1480 <next+0x350>
divsd  0x92a(%rip),%xmm2
ucomisd 0x952(%rip),%xmm2
jb     1375 <next+0x245>
xorps  %xmm0,%xmm0
sqrtsd %xmm2,%xmm0
jmp    137e <next+0x24e>
movapd %xmm2,%xmm0
call   1050 <sqrt@plt>
mulsd  0x907(%rip),%xmm0
movsd  %xmm0,(%rsp)
mov    0xb0(%rsp),%rbp
movsd  0x0(%rbp,%r15,8),%xmm0
movsd  0x8f3(%rip),%xmm1
call   1040 <pow@plt>
mulsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    0xe0(%rsp),%rax
movsd  (%rax),%xmm0
divsd  0x7d0(%rip),%xmm0
movsd  0x8d0(%rip),%xmm1
call   1040 <pow@plt>
mulsd  (%rsp),%xmm0
movsd  0x0(%rbp,%r15,8),%xmm2
mov    0x120(%rsp),%rax
subsd  (%rax),%xmm2
movapd %xmm2,%xmm1
xorpd  0x8c7(%rip),%xmm1
mulsd  %xmm2,%xmm1
mulsd  %xmm0,%xmm0
divsd  %xmm0,%xmm1
movapd %xmm1,%xmm0
call   1030 <exp@plt>
addsd  %xmm0,%xmm0
movsd  0x766(%rip),%xmm3
addsd  %xmm3,%xmm0
mov    0x108(%rsp),%rax
lea    (%rax,%r15,8),%rax
movsd  (%rbx),%xmm2
mulsd  0x87a(%rip),%xmm0
mov    0x28(%rsp),%rcx
movsd  (%rcx),%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm2,%xmm1
movapd %xmm3,%xmm2
jmp    143f <next+0x30f>
add    $0x78,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
ucomisd %xmm0,%xmm1
jae    1357 <next+0x227>
movapd %xmm1,%xmm0
call   1050 <sqrt@plt>
jmp    1357 <next+0x227>

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

LLVM IR (-O2):
define void @next(double* nocapture %0, double* nocapture %1, double* nocapture %2, double* nocapture %3, i32* nocapture %4, double* nocapture writeonly %5, double* nocapture %6, double* nocapture writeonly %7, double* nocapture %8, i32* nocapture %9, i32* nocapture %10, double* nocapture %11, double* nocapture %12, double* nocapture %13, double* nocapture %14, double* nocapture %15, double* nocapture %16, double* nocapture %17, double* nocapture %18, i32* nocapture %19, double* nocapture %20, i32* nocapture readnone %21, i32* nocapture readnone %22, double* nocapture readnone %23) {
%25 = load double, double* %8
%26 = load i32, i32* %9
%27 = sitofp i32 %26 to double
%28 = fdiv double 1.000000e+00, %27
%29 = tail call double @pow(double %25, double %28)
%30 = load i32, i32* %10
%31 = sitofp i32 %30 to double
%32 = tail call double @pow(double %29, double %31)
%33 = load double, double* %2
%34 = fsub double %32, %33
store double %34, double* %7
%35 = load double, double* %8
%36 = load i32, i32* %9
%37 = sitofp i32 %36 to double
%38 = fdiv double 1.000000e+00, %37
%39 = tail call double @pow(double %35, double %38)
%40 = load i32, i32* %10
%41 = sitofp i32 %40 to double
%42 = tail call double @pow(double %39, double %41)
store double %42, double* %2
%43 = load double, double* %1
%44 = fneg double %42
%45 = load double, double* %3
%46 = fdiv double %44, %45
%47 = tail call double @exp(double %46)
%48 = fmul double %43, %47
store double %48, double* %0
%49 = fmul double %48, 1.500000e-07
%50 = load double, double* %13
%51 = fdiv double %50, 1.000000e-03
%52 = fmul double %49, %51
store double %52, double* %11
%53 = load double, double* %12
%54 = fdiv double %53, 1.988400e+33
%55 = tail call double @pow(double %54, double 0x3FD5555555555555)
%56 = fmul double %55, 1.200000e+00
%57 = load double, double* %13
%58 = fdiv double %57, 1.000000e-03
%59 = tail call double @pow(double %58, double 0xBFCC71C71C71C71C)
%60 = fmul double %56, %59
%61 = load double, double* %11
%62 = fdiv double %61, 1.000000e-08
%63 = tail call double @pow(double %62, double 0x3FDC71C71C71C71C)
%64 = fmul double %60, %63
%65 = load double, double* %14
%66 = fdiv double %65, 3.839000e+33
%67 = tail call double @pow(double %66, double 0x3FE5555555555555)
%68 = fmul double %67, 7.500000e-01
%69 = load double, double* %12
%70 = fdiv double %69, 1.988400e+33
%71 = tail call double @pow(double %70, double 0xBFD5555555555555)
%72 = fmul double %68, %71
%73 = fcmp ogt double %64, %72
%74 = select i1 %73, double %64, double %72
store double %74, double* %20
%75 = load double, double* %12
%76 = fmul double %75, 0x3E71EA3BC1A8C623
%77 = fmul double %74, 0x42AB363196A46000
%78 = tail call double @pow(double %77, double 3.000000e+00)
%79 = fdiv double %76, %78
%80 = fcmp olt double %79, 0.000000e+00
br i1 %80, label %81, label %83
81: ; preds = %24
%82 = tail call double @sqrt(double %79)
br label %83
83: ; preds = %24, %81
%84 = load i32, i32* %4
%85 = icmp sgt i32 %84, 0
br i1 %85, label %86, label %247
86: ; preds = %83, %242
%87 = phi i64 [ %243, %242 ], [ 0, %83 ]
%88 = load double, double* %12
%89 = fdiv double %88, 1.988400e+33
%90 = tail call double @pow(double %89, double 2.000000e-01)
%91 = load double, double* %13
%92 = fdiv double %91, 1.000000e-03
%93 = tail call double @pow(double %92, double -8.000000e-01)
%94 = load double, double* %11
%95 = fdiv double %94, 1.000000e-08
%96 = tail call double @pow(double %95, double 6.000000e-01)
%97 = getelementptr inbounds double, double* %6, i64 %87
%98 = load double, double* %97
%99 = tail call double @pow(double %98, double -6.000000e-01)
%100 = load double, double* %14
%101 = fdiv double %100, 3.839000e+33
%102 = tail call double @pow(double %101, double 0xBFD2492492492492)
%103 = fmul double %102, 2.700000e+03
%104 = load double, double* %12
%105 = fdiv double %104, 1.988400e+33
%106 = tail call double @pow(double %105, double 0x3FE4924924924925)
%107 = insertelement <2 x double> poison, double %90, i64 0
%108 = insertelement <2 x double> %107, double %103, i64 1
%109 = insertelement <2 x double> <double 2.100000e+03, double poison>, double %106, i64 1
%110 = fmul <2 x double> %108, %109
%111 = load double, double* %13
%112 = fdiv double %111, 1.000000e-03
%113 = load double, double* %11
%114 = insertelement <2 x double> <double poison, double 1.000000e+00>, double %113, i64 0
%115 = insertelement <2 x double> <double 1.000000e-08, double poison>, double %112, i64 1
%116 = fdiv <2 x double> %114, %115
%117 = insertelement <2 x double> %116, double %93, i64 0
%118 = fmul <2 x double> %110, %117
%119 = insertelement <2 x double> poison, double %96, i64 0
%120 = shufflevector <2 x double> %119, <2 x double> %116, <2 x i32> <i32 0, i32 2>
%121 = fmul <2 x double> %118, %120
%122 = load double, double* %97
%123 = tail call double @pow(double %122, double 0xBFF1249249249249)
%124 = insertelement <2 x double> poison, double %99, i64 0
%125 = insertelement <2 x double> %124, double %123, i64 1
%126 = fmul <2 x double> %121, %125
%127 = extractelement <2 x double> %126, i64 0
%128 = extractelement <2 x double> %126, i64 1
%129 = fcmp olt double %127, %128
%130 = select i1 %129, double %127, double %128
%131 = getelementptr inbounds double, double* %5, i64 %87
store double %130, double* %131
%132 = load double, double* %12
%133 = fdiv double %132, 1.988400e+33
%134 = tail call double @pow(double %133, double 3.000000e-01)
%135 = fmul double %134, 2.000000e+02
%136 = load double, double* %13
%137 = fdiv double %136, 1.000000e-03
%138 = tail call double @pow(double %137, double -2.000000e-01)
%139 = load double, double* %11
%140 = fdiv double %139, 1.000000e-08
%141 = tail call double @pow(double %140, double 4.000000e-01)
%142 = load double, double* %97
%143 = tail call double @pow(double %142, double -9.000000e-01)
%144 = load double, double* %14
%145 = fdiv double %144, 3.839000e+33
%146 = tail call double @pow(double %145, double 0x3FD2492492492492)
%147 = insertelement <2 x double> poison, double %135, i64 0
%148 = insertelement <2 x double> %147, double %146, i64 1
%149 = insertelement <2 x double> <double poison, double 1.500000e+02>, double %138, i64 0
%150 = fmul <2 x double> %148, %149
%151 = load double, double* %12
%152 = fdiv double %151, 1.988400e+33
%153 = tail call double @pow(double %152, double 0xBFC2492492492492)
%154 = insertelement <2 x double> poison, double %141, i64 0
%155 = insertelement <2 x double> %154, double %153, i64 1
%156 = fmul <2 x double> %150, %155
%157 = load double, double* %97
%158 = tail call double @pow(double %157, double 0xBFDB6DB6DB6DB6DB)
%159 = insertelement <2 x double> poison, double %143, i64 0
%160 = insertelement <2 x double> %159, double %158, i64 1
%161 = fmul <2 x double> %156, %160
%162 = extractelement <2 x double> %161, i64 0
%163 = extractelement <2 x double> %161, i64 1
%164 = fcmp ogt double %162, %163
%165 = select i1 %164, double %162, double %163
%166 = getelementptr inbounds double, double* %15, i64 %87
store double %165, double* %166
%167 = load i32, i32* %19
%168 = icmp eq i32 %167, 0
br i1 %168, label %169, label %242
169: ; preds = %86
%170 = getelementptr inbounds double, double* %16, i64 %87
%171 = load double, double* %170
%172 = load double, double* %97
%173 = load double, double* %20
%174 = fcmp olt double %172, %173
br i1 %174, label %175, label %203
175: ; preds = %169
%176 = fcmp ogt double %171, 2.000000e+00
br i1 %176, label %177, label %242
177: ; preds = %175
%178 = fdiv double %165, 3.000000e+02
%179 = tail call double @sqrt(double %178)
%180 = fmul double %179, 5.000000e-02
%181 = load double, double* %97
%182 = tail call double @pow(double %181, double 1.500000e+00)
%183 = fmul double %180, %182
%184 = load double, double* %12
%185 = fdiv double %184, 1.988400e+33
%186 = tail call double @pow(double %185, double -5.000000e-01)
%187 = fmul double %183, %186
%188 = load double, double* %97
%189 = load double, double* %20
%190 = fsub double %188, %189
%191 = fneg double %190
%192 = fmul double %190, %191
%193 = fmul double %187, %187
%194 = fdiv double %192, %193
%195 = tail call double @exp(double %194)
%196 = tail call double @llvm.fmuladd.f64(double %195, double 2.000000e+00, double 1.000000e+00)
%197 = getelementptr inbounds double, double* %17, i64 %87
%198 = load double, double* %197
%199 = load double, double* %0
%200 = fmul double %196, -4.200000e+00
%201 = tail call double @llvm.fmuladd.f64(double %200, double %199, double %198)
%202 = fdiv double %201, %198
br label %231
203: ; preds = %169
%204 = fcmp olt double %171, 2.000000e+00
br i1 %204, label %205, label %242
205: ; preds = %203
%206 = fdiv double %165, 3.000000e+02
%207 = tail call double @sqrt(double %206)
%208 = fmul double %207, 5.000000e-02
%209 = load double, double* %97
%210 = tail call double @pow(double %209, double 1.500000e+00)
%211 = fmul double %208, %210
%212 = load double, double* %12
%213 = fdiv double %212, 1.988400e+33
%214 = tail call double @pow(double %213, double -5.000000e-01)
%215 = fmul double %211, %214
%216 = load double, double* %97
%217 = load double, double* %20
%218 = fsub double %216, %217
%219 = fneg double %218
%220 = fmul double %218, %219
%221 = fmul double %215, %215
%222 = fdiv double %220, %221
%223 = tail call double @exp(double %222)
%224 = tail call double @llvm.fmuladd.f64(double %223, double 2.000000e+00, double 1.000000e+00)
%225 = getelementptr inbounds double, double* %17, i64 %87
%226 = load double, double* %225
%227 = fmul double %224, 4.200000e+00
%228 = load double, double* %0
%229 = tail call double @llvm.fmuladd.f64(double %227, double %228, double %226)
%230 = fdiv double %229, %226
br label %231
231: ; preds = %177, %205
%232 = phi double [ %230, %205 ], [ %202, %177 ]
%233 = phi double* [ %225, %205 ], [ %197, %177 ]
%234 = phi double [ %227, %205 ], [ %200, %177 ]
%235 = phi double [ %227, %205 ], [ 1.000000e+00, %177 ]
%236 = getelementptr inbounds double, double* %18, i64 %87
%237 = load double, double* %236
%238 = fmul double %237, %232
store double %238, double* %236
%239 = load double, double* %0
%240 = load double, double* %233
%241 = tail call double @llvm.fmuladd.f64(double %234, double %239, double %240)
store double %241, double* %233
store double %235, double* %170
br label %242
242: ; preds = %231, %86, %203, %175
%243 = add nuw nsw i64 %87, 1
%244 = load i32, i32* %4
%245 = sext i32 %244 to i64
%246 = icmp slt i64 %243, %245
br i1 %246, label %86, label %247
247: ; preds = %242, %83
ret void
}