#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 */
float exp(float);
double log(float);
void cb2014_ampf(float *ampf, float *dt, int n, float *vref, float *vsite,
                 float *vpga, float *pga, float *fmin, float *fmidbot,
                 float *fmid, float *fhigh, float *fhightop, float *fmax,
                 float *flowcap) {
  float scon_c, scon_n, per[22], c11[22], k1[22], k2[22];
  float ampf0[22];
  float a_1100, fs_1100, fs_vpga, fs_vref, fsite;
  float df, ampv, afac, freq;
  float f0, f1, a0, a1, dadf, ampf_cap;
  int i, j;
  int nper = 22;
  scon_c = 1.88;
  scon_n = 1.18;
  per[0] = 0.0;
  per[1] = 0.01;
  per[2] = 0.02;
  per[3] = 0.03;
  per[4] = 0.05;
  per[5] = 0.075;
  per[6] = 0.10;
  per[7] = 0.15;
  per[8] = 0.20;
  per[9] = 0.25;
  per[10] = 0.30;
  per[11] = 0.40;
  per[12] = 0.50;
  per[13] = 0.75;
  per[14] = 1.00;
  per[15] = 1.50;
  per[16] = 2.00;
  per[17] = 3.00;
  per[18] = 4.00;
  per[19] = 5.00;
  per[20] = 7.50;
  per[21] = 10.0;
  c11[0] = 1.090;
  c11[1] = 1.094;
  c11[2] = 1.149;
  c11[3] = 1.290;
  c11[4] = 1.449;
  c11[5] = 1.535;
  c11[6] = 1.615;
  c11[7] = 1.877;
  c11[8] = 2.069;
  c11[9] = 2.205;
  c11[10] = 2.306;
  c11[11] = 2.398;
  c11[12] = 2.355;
  c11[13] = 1.995;
  c11[14] = 1.447;
  c11[15] = 0.330;
  c11[16] = -0.514;
  c11[17] = -0.848;
  c11[18] = -0.793;
  c11[19] = -0.748;
  c11[20] = -0.664;
  c11[21] = -0.576;
  k1[0] = 865.0;
  k1[1] = 865.0;
  k1[2] = 865.0;
  k1[3] = 908.0;
  k1[4] = 1054.0;
  k1[5] = 1086.0;
  k1[6] = 1032.0;
  k1[7] = 878.0;
  k1[8] = 748.0;
  k1[9] = 654.0;
  k1[10] = 587.0;
  k1[11] = 503.0;
  k1[12] = 457.0;
  k1[13] = 410.0;
  k1[14] = 400.0;
  k1[15] = 400.0;
  k1[16] = 400.0;
  k1[17] = 400.0;
  k1[18] = 400.0;
  k1[19] = 400.0;
  k1[20] = 400.0;
  k1[21] = 400.0;
  k2[0] = -1.186;
  k2[1] = -1.186;
  k2[2] = -1.219;
  k2[3] = -1.273;
  k2[4] = -1.346;
  k2[5] = -1.471;
  k2[6] = -1.624;
  k2[7] = -1.931;
  k2[8] = -2.188;
  k2[9] = -2.381;
  k2[10] = -2.518;
  k2[11] = -2.657;
  k2[12] = -2.669;
  k2[13] = -2.401;
  k2[14] = -1.955;
  k2[15] = -1.025;
  k2[16] = -0.299;
  k2[17] = 0.0;
  k2[18] = 0.0;
  k2[19] = 0.0;
  k2[20] = 0.0;
  k2[21] = 0.0;
  fs_1100 = (c11[0] + k2[0] * scon_n) * log(1100.0 / k1[0]);
  if ((*vpga) < k1[0]) {
    fs_vpga =
        c11[0] * log((*vpga) / k1[0]) +
        k2[0] * (log(((*pga) + scon_c * exp(scon_n * log((*vpga) / k1[0]))) /
                     ((*pga) + scon_c)));
  } else if ((*vpga) < 1100.0)
    fs_vpga = (c11[0] + k2[0] * scon_n) * log((*vpga) / k1[0]);
  else
    fs_vpga = (c11[0] + k2[0] * scon_n) * log(1100.0 / k1[0]);
  a_1100 = (*pga) * exp(fs_1100 - fs_vpga);
  ampf_cap = -1.0;
  for (i = 0; i < nper; i++) {
    if ((*vsite) < k1[i]) {
      fsite =
          c11[i] * log((*vsite) / k1[i]) +
          k2[i] * (log((a_1100 + scon_c * exp(scon_n * log((*vsite) / k1[i]))) /
                       (a_1100 + scon_c)));
    } else if ((*vsite) < 1100.0)
      fsite = (c11[i] + k2[i] * scon_n) * log((*vsite) / k1[i]);
    else
      fsite = (c11[i] + k2[i] * scon_n) * log(1100.0 / k1[i]);
    if ((*vref) < k1[i]) {
      fs_vref =
          c11[i] * log((*vref) / k1[i]) +
          k2[i] * (log((a_1100 + scon_c * exp(scon_n * log((*vref) / k1[i]))) /
                       (a_1100 + scon_c)));
    } else if ((*vref) < 1100.0)
      fs_vref = (c11[i] + k2[i] * scon_n) * log((*vref) / k1[i]);
    else
      fs_vref = (c11[i] + k2[i] * scon_n) * log(1100.0 / k1[i]);
    ampf0[i] = exp(fsite - fs_vref);
    if (1.0 / per[i] <= (*flowcap)) {
      if (ampf_cap < 0.0)
        ampf_cap = ampf0[i];
      else
        ampf0[i] = ampf_cap;
    }
  }
  j = nper - 1;
  f0 = 1.0 / per[j];
  a0 = ampf0[j];
  f1 = 1.0 / per[j];
  a1 = ampf0[j];
  dadf = 0.0;
  df = 1.0 / (n * (*dt));
  for (i = 1; i < n / 2; i++) {
    freq = i * df;
    if (freq > f1) {
      f0 = f1;
      a0 = a1;
      if (j > 0)
        j--;
      if (per[j] != 0.0)
        f1 = 1.0 / per[j];
      else
        f1 = 1000.0;
      a1 = ampf0[j];
      if (f1 != f0)
        dadf = (a1 - a0) / log(f1 / f0);
      else
        dadf = 0.0;
    }
    ampv = a0 + dadf * log(freq / f0);
    if (freq < *fmin)
      afac = 1.0;
    else if (freq < *fmidbot)
      afac =
          1.0 + log(freq / (*fmin)) * (ampv - 1.0) / log((*fmidbot) / (*fmin));
    else if (freq < *fmid)
      afac = ampv;
    else if (freq < *fhigh)
      afac = ampv;
    else if (freq < *fhightop)
      afac = ampv;
    else if (freq < *fmax)
      afac = ampv + log(freq / (*fhightop)) * (1.0 - ampv) /
                        log((*fmax) / (*fhightop));
    else
      afac = 1.0;
    ampf[i] = afac;
  }
}


x86 assembly (clang, -O0):
<cb2014_ampf>:
push   %rbp
mov    %rsp,%rbp
sub    $0x350,%rsp
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    %edx,-0x14(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movl   $0x16,-0x258(%rbp)
movss  0x1fc0(%rip),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  0x1faf(%rip),%xmm0
movss  %xmm0,-0x38(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  0x1f93(%rip),%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  0x1f7f(%rip),%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  0x1f6b(%rip),%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  0x1f57(%rip),%xmm0
movss  %xmm0,-0x80(%rbp)
movss  0x1f46(%rip),%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  0x1f35(%rip),%xmm0
movss  %xmm0,-0x78(%rbp)
movss  0x1f24(%rip),%xmm0
movss  %xmm0,-0x74(%rbp)
movss  0x1f13(%rip),%xmm0
movss  %xmm0,-0x70(%rbp)
movss  0x1f02(%rip),%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  0x1ef1(%rip),%xmm0
movss  %xmm0,-0x68(%rbp)
movss  0x1ee0(%rip),%xmm0
movss  %xmm0,-0x64(%rbp)
movss  0x1ecf(%rip),%xmm0
movss  %xmm0,-0x60(%rbp)
movss  0x1ebe(%rip),%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  0x1ead(%rip),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  0x1e9c(%rip),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  0x1e8b(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
movss  0x1e7a(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  0x1e69(%rip),%xmm0
movss  %xmm0,-0x48(%rbp)
movss  0x1e58(%rip),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  0x1e47(%rip),%xmm0
movss  %xmm0,-0x40(%rbp)
movss  0x1e36(%rip),%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  0x1e25(%rip),%xmm0
movss  %xmm0,-0xf0(%rbp)
ff
movss  0x1e11(%rip),%xmm0
movss  %xmm0,-0xec(%rbp)
ff
movss  0x1dfd(%rip),%xmm0
movss  %xmm0,-0xe8(%rbp)
ff
movss  0x1de9(%rip),%xmm0
movss  %xmm0,-0xe4(%rbp)
ff
movss  0x1dd5(%rip),%xmm0
movss  %xmm0,-0xe0(%rbp)
ff
movss  0x1dc1(%rip),%xmm0
movss  %xmm0,-0xdc(%rbp)
ff
movss  0x1dad(%rip),%xmm0
movss  %xmm0,-0xd8(%rbp)
ff
movss  0x1d99(%rip),%xmm0
movss  %xmm0,-0xd4(%rbp)
ff
movss  0x1d85(%rip),%xmm0
movss  %xmm0,-0xd0(%rbp)
ff
movss  0x1d71(%rip),%xmm0
movss  %xmm0,-0xcc(%rbp)
ff
movss  0x1d5d(%rip),%xmm0
movss  %xmm0,-0xc8(%rbp)
ff
movss  0x1d49(%rip),%xmm0
movss  %xmm0,-0xc4(%rbp)
ff
movss  0x1d35(%rip),%xmm0
movss  %xmm0,-0xc0(%rbp)
ff
movss  0x1d21(%rip),%xmm0
movss  %xmm0,-0xbc(%rbp)
ff
movss  0x1d0d(%rip),%xmm0
movss  %xmm0,-0xb8(%rbp)
ff
movss  0x1cf9(%rip),%xmm0
movss  %xmm0,-0xb4(%rbp)
ff
movss  0x1ce5(%rip),%xmm0
movss  %xmm0,-0xb0(%rbp)
ff
movss  0x1cd1(%rip),%xmm0
movss  %xmm0,-0xac(%rbp)
ff
movss  0x1cbd(%rip),%xmm0
movss  %xmm0,-0xa8(%rbp)
ff
movss  0x1ca9(%rip),%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  0x1c95(%rip),%xmm0
movss  %xmm0,-0xa0(%rbp)
ff
movss  0x1c81(%rip),%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
movss  0x1c6d(%rip),%xmm0
movss  %xmm0,-0x150(%rbp)
ff
movss  0x1c5d(%rip),%xmm0
movss  %xmm0,-0x14c(%rbp)
ff
movss  0x1c4d(%rip),%xmm0
movss  %xmm0,-0x148(%rbp)
ff
movss  0x1c39(%rip),%xmm0
movss  %xmm0,-0x144(%rbp)
ff
movss  0x1c25(%rip),%xmm0
movss  %xmm0,-0x140(%rbp)
ff
movss  0x1c11(%rip),%xmm0
movss  %xmm0,-0x13c(%rbp)
ff
movss  0x1bfd(%rip),%xmm0
movss  %xmm0,-0x138(%rbp)
ff
movss  0x1be9(%rip),%xmm0
movss  %xmm0,-0x134(%rbp)
ff
movss  0x1bd5(%rip),%xmm0
movss  %xmm0,-0x130(%rbp)
ff
movss  0x1bc1(%rip),%xmm0
movss  %xmm0,-0x12c(%rbp)
ff
movss  0x1bad(%rip),%xmm0
movss  %xmm0,-0x128(%rbp)
ff
movss  0x1b99(%rip),%xmm0
movss  %xmm0,-0x124(%rbp)
ff
movss  0x1b85(%rip),%xmm0
movss  %xmm0,-0x120(%rbp)
ff
movss  0x1b71(%rip),%xmm0
movss  %xmm0,-0x11c(%rbp)
ff
movss  0x1b5d(%rip),%xmm0
movss  %xmm0,-0x118(%rbp)
ff
movss  0x1b4d(%rip),%xmm0
movss  %xmm0,-0x114(%rbp)
ff
movss  0x1b3d(%rip),%xmm0
movss  %xmm0,-0x110(%rbp)
ff
movss  0x1b2d(%rip),%xmm0
movss  %xmm0,-0x10c(%rbp)
ff
movss  0x1b1d(%rip),%xmm0
movss  %xmm0,-0x108(%rbp)
ff
movss  0x1b0d(%rip),%xmm0
movss  %xmm0,-0x104(%rbp)
ff
movss  0x1afd(%rip),%xmm0
movss  %xmm0,-0x100(%rbp)
ff
movss  0x1aed(%rip),%xmm0
movss  %xmm0,-0xfc(%rbp)
ff
movss  0x1ad9(%rip),%xmm0
movss  %xmm0,-0x1b0(%rbp)
ff
movss  0x1ac9(%rip),%xmm0
movss  %xmm0,-0x1ac(%rbp)
ff
movss  0x1ab5(%rip),%xmm0
movss  %xmm0,-0x1a8(%rbp)
ff
movss  0x1aa1(%rip),%xmm0
movss  %xmm0,-0x1a4(%rbp)
ff
movss  0x1a8d(%rip),%xmm0
movss  %xmm0,-0x1a0(%rbp)
ff
movss  0x1a79(%rip),%xmm0
movss  %xmm0,-0x19c(%rbp)
ff
movss  0x1a65(%rip),%xmm0
movss  %xmm0,-0x198(%rbp)
ff
movss  0x1a51(%rip),%xmm0
movss  %xmm0,-0x194(%rbp)
ff
movss  0x1a3d(%rip),%xmm0
movss  %xmm0,-0x190(%rbp)
ff
movss  0x1a29(%rip),%xmm0
movss  %xmm0,-0x18c(%rbp)
ff
movss  0x1a15(%rip),%xmm0
movss  %xmm0,-0x188(%rbp)
ff
movss  0x1a01(%rip),%xmm0
movss  %xmm0,-0x184(%rbp)
ff
movss  0x19ed(%rip),%xmm0
movss  %xmm0,-0x180(%rbp)
ff
movss  0x19d9(%rip),%xmm0
movss  %xmm0,-0x17c(%rbp)
ff
movss  0x19c5(%rip),%xmm0
movss  %xmm0,-0x178(%rbp)
ff
movss  0x19b1(%rip),%xmm0
movss  %xmm0,-0x174(%rbp)
ff
movss  0x199d(%rip),%xmm0
movss  %xmm0,-0x170(%rbp)
ff
xorps  %xmm0,%xmm0
movss  %xmm0,-0x16c(%rbp)
ff
xorps  %xmm0,%xmm0
movss  %xmm0,-0x168(%rbp)
ff
xorps  %xmm0,%xmm0
movss  %xmm0,-0x164(%rbp)
ff
xorps  %xmm0,%xmm0
movss  %xmm0,-0x160(%rbp)
ff
xorps  %xmm0,%xmm0
movss  %xmm0,-0x15c(%rbp)
ff
movss  -0xf0(%rbp),%xmm1
ff
movss  -0x1b0(%rbp),%xmm0
ff
movss  -0x38(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x260(%rbp)
ff
movss  -0x150(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0x1911(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
call   1040 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x260(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x218(%rbp)
ff
mov    -0x30(%rbp),%rax
movss  (%rax),%xmm1
movss  -0x150(%rbp),%xmm0
ff
ucomiss %xmm1,%xmm0
jbe    1839 <cb2014_ampf+0x719>
movss  -0xf0(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x268(%rbp)
ff
mov    -0x30(%rbp),%rax
movss  (%rax),%xmm0
divss  -0x150(%rbp),%xmm0
ff
call   1040 <log@plt>
movsd  %xmm0,-0x270(%rbp)
ff
movss  -0x1b0(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x278(%rbp)
ff
mov    0x10(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x280(%rbp)
ff
movss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x27c(%rbp)
ff
movss  -0x38(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x288(%rbp)
ff
mov    -0x30(%rbp),%rax
movss  (%rax),%xmm0
divss  -0x150(%rbp),%xmm0
ff
call   1040 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x288(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
call   1030 <exp@plt>
movss  -0x280(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movss  -0x27c(%rbp),%xmm0
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
mov    0x10(%rbp),%rax
movss  (%rax),%xmm1
addss  -0x34(%rbp),%xmm1
divss  %xmm1,%xmm0
call   1040 <log@plt>
movsd  -0x278(%rbp),%xmm1
ff
movsd  -0x270(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x268(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x21c(%rbp)
ff
jmp    191f <cb2014_ampf+0x7ff>
mov    -0x30(%rbp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x17b3(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    18b5 <cb2014_ampf+0x795>
movss  -0xf0(%rbp),%xmm1
ff
movss  -0x1b0(%rbp),%xmm0
ff
movss  -0x38(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x290(%rbp)
ff
mov    -0x30(%rbp),%rax
movss  (%rax),%xmm0
divss  -0x150(%rbp),%xmm0
ff
call   1040 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x290(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x21c(%rbp)
ff
jmp    191a <cb2014_ampf+0x7fa>
movss  -0xf0(%rbp),%xmm1
ff
movss  -0x1b0(%rbp),%xmm0
ff
movss  -0x38(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x298(%rbp)
ff
movss  -0x150(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0x170e(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
call   1040 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x298(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x21c(%rbp)
ff
jmp    191f <cb2014_ampf+0x7ff>
mov    0x10(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x29c(%rbp)
ff
movss  -0x218(%rbp),%xmm0
ff
subss  -0x21c(%rbp),%xmm0
ff
call   1030 <exp@plt>
movaps %xmm0,%xmm1
movss  -0x29c(%rbp),%xmm0
ff
mulss  %xmm1,%xmm0
movss  %xmm0,-0x214(%rbp)
ff
movss  0x17d5(%rip),%xmm0
movss  %xmm0,-0x24c(%rbp)
ff
movl   $0x0,-0x250(%rbp)
mov    -0x250(%rbp),%eax
cmp    -0x258(%rbp),%eax
jge    1f0e <cb2014_ampf+0xdee>
mov    -0x28(%rbp),%rax
movss  (%rax),%xmm1
movslq -0x250(%rbp),%rax
movss  -0x150(%rbp,%rax,4),%xmm0
ff ff
ucomiss %xmm1,%xmm0
jbe    1ad1 <cb2014_ampf+0x9b1>
movslq -0x250(%rbp),%rax
movss  -0xf0(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x2a8(%rbp)
ff
mov    -0x28(%rbp),%rax
movss  (%rax),%xmm0
movslq -0x250(%rbp),%rax
divss  -0x150(%rbp,%rax,4),%xmm0
ff ff
call   1040 <log@plt>
movsd  %xmm0,-0x2b0(%rbp)
ff
movslq -0x250(%rbp),%rax
movss  -0x1b0(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x2b8(%rbp)
ff
movss  -0x214(%rbp),%xmm0
ff
movss  %xmm0,-0x2c0(%rbp)
ff
movss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x2bc(%rbp)
ff
movss  -0x38(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x2c8(%rbp)
ff
mov    -0x28(%rbp),%rax
movss  (%rax),%xmm0
movslq -0x250(%rbp),%rax
divss  -0x150(%rbp,%rax,4),%xmm0
ff ff
call   1040 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x2c8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
call   1030 <exp@plt>
movss  -0x2c0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movss  -0x2bc(%rbp),%xmm0
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  -0x214(%rbp),%xmm1
ff
addss  -0x34(%rbp),%xmm1
divss  %xmm1,%xmm0
call   1040 <log@plt>
movsd  -0x2b8(%rbp),%xmm1
ff
movsd  -0x2b0(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x2a8(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x224(%rbp)
ff
jmp    1be7 <cb2014_ampf+0xac7>
mov    -0x28(%rbp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x151b(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1b65 <cb2014_ampf+0xa45>
movslq -0x250(%rbp),%rax
movss  -0xf0(%rbp,%rax,4),%xmm1
ff ff
movslq -0x250(%rbp),%rax
movss  -0x1b0(%rbp,%rax,4),%xmm0
ff ff
movss  -0x38(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x2d0(%rbp)
ff
mov    -0x28(%rbp),%rax
movss  (%rax),%xmm0
movslq -0x250(%rbp),%rax
divss  -0x150(%rbp,%rax,4),%xmm0
ff ff
call   1040 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x2d0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x224(%rbp)
ff
jmp    1be2 <cb2014_ampf+0xac2>
movslq -0x250(%rbp),%rax
movss  -0xf0(%rbp,%rax,4),%xmm1
ff ff
movslq -0x250(%rbp),%rax
movss  -0x1b0(%rbp,%rax,4),%xmm0
ff ff
movss  -0x38(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x2d8(%rbp)
ff
movslq -0x250(%rbp),%rax
movss  -0x150(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm1
movsd  0x1446(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
call   1040 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x2d8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x224(%rbp)
ff
jmp    1be7 <cb2014_ampf+0xac7>
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm1
movslq -0x250(%rbp),%rax
movss  -0x150(%rbp,%rax,4),%xmm0
ff ff
ucomiss %xmm1,%xmm0
jbe    1d31 <cb2014_ampf+0xc11>
movslq -0x250(%rbp),%rax
movss  -0xf0(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x2e0(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm0
movslq -0x250(%rbp),%rax
divss  -0x150(%rbp,%rax,4),%xmm0
ff ff
call   1040 <log@plt>
movsd  %xmm0,-0x2e8(%rbp)
ff
movslq -0x250(%rbp),%rax
movss  -0x1b0(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x2f0(%rbp)
ff
movss  -0x214(%rbp),%xmm0
ff
movss  %xmm0,-0x2f8(%rbp)
ff
movss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x2f4(%rbp)
ff
movss  -0x38(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x300(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm0
movslq -0x250(%rbp),%rax
divss  -0x150(%rbp,%rax,4),%xmm0
ff ff
call   1040 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x300(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
call   1030 <exp@plt>
movss  -0x2f8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movss  -0x2f4(%rbp),%xmm0
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  -0x214(%rbp),%xmm1
ff
addss  -0x34(%rbp),%xmm1
divss  %xmm1,%xmm0
call   1040 <log@plt>
movsd  -0x2f0(%rbp),%xmm1
movsd  -0x2e8(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x2e0(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x220(%rbp)
ff
jmp    1e47 <cb2014_ampf+0xd27>
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x12bb(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1dc5 <cb2014_ampf+0xca5>
movslq -0x250(%rbp),%rax
movss  -0xf0(%rbp,%rax,4),%xmm1
ff ff
movslq -0x250(%rbp),%rax
movss  -0x1b0(%rbp,%rax,4),%xmm0
ff ff
movss  -0x38(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x308(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm0
movslq -0x250(%rbp),%rax
divss  -0x150(%rbp,%rax,4),%xmm0
ff ff
call   1040 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x308(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x220(%rbp)
ff
jmp    1e42 <cb2014_ampf+0xd22>
movslq -0x250(%rbp),%rax
movss  -0xf0(%rbp,%rax,4),%xmm1
ff ff
movslq -0x250(%rbp),%rax
movss  -0x1b0(%rbp,%rax,4),%xmm0
ff ff
movss  -0x38(%rbp),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x310(%rbp)
ff
movslq -0x250(%rbp),%rax
movss  -0x150(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm1
movsd  0x11e6(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
call   1040 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x310(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x220(%rbp)
ff
jmp    1e47 <cb2014_ampf+0xd27>
movss  -0x224(%rbp),%xmm0
ff
subss  -0x220(%rbp),%xmm0
ff
call   1030 <exp@plt>
movslq -0x250(%rbp),%rax
movss  %xmm0,-0x210(%rbp,%rax,4)
ff ff
movslq -0x250(%rbp),%rax
movss  -0x90(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
movsd  0x1180(%rip),%xmm1
divsd  %xmm0,%xmm1
mov    0x48(%rbp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jb     1ef5 <cb2014_ampf+0xdd5>
movss  -0x24c(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    1ed8 <cb2014_ampf+0xdb8>
movslq -0x250(%rbp),%rax
movss  -0x210(%rbp,%rax,4),%xmm0
ff ff
movss  %xmm0,-0x24c(%rbp)
ff
jmp    1ef0 <cb2014_ampf+0xdd0>
movss  -0x24c(%rbp),%xmm0
ff
movslq -0x250(%rbp),%rax
movss  %xmm0,-0x210(%rbp,%rax,4)
ff ff
jmp    1ef5 <cb2014_ampf+0xdd5>
jmp    1efa <cb2014_ampf+0xdda>
mov    -0x250(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x250(%rbp)
jmp    1975 <cb2014_ampf+0x855>
mov    -0x258(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x254(%rbp)
movslq -0x254(%rbp),%rax
movss  -0x90(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm1
movsd  0x10cf(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x238(%rbp)
ff
movslq -0x254(%rbp),%rax
movss  -0x210(%rbp,%rax,4),%xmm0
ff ff
movss  %xmm0,-0x240(%rbp)
ff
movslq -0x254(%rbp),%rax
movss  -0x90(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm1
movsd  0x108b(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x23c(%rbp)
ff
movslq -0x254(%rbp),%rax
movss  -0x210(%rbp,%rax,4),%xmm0
ff ff
movss  %xmm0,-0x244(%rbp)
ff
xorps  %xmm0,%xmm0
movss  %xmm0,-0x248(%rbp)
ff
cvtsi2ssl -0x14(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mulss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x103f(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x228(%rbp)
ff
movl   $0x1,-0x250(%rbp)
mov    -0x250(%rbp),%eax
mov    %eax,-0x314(%rbp)
mov    -0x14(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x314(%rbp),%eax
cmp    %ecx,%eax
jge    2421 <cb2014_ampf+0x1301>
cvtsi2ssl -0x250(%rbp),%xmm0
ff
mulss  -0x228(%rbp),%xmm0
ff
movss  %xmm0,-0x234(%rbp)
ff
movss  -0x234(%rbp),%xmm0
ff
ucomiss -0x23c(%rbp),%xmm0
jbe    2179 <cb2014_ampf+0x1059>
movss  -0x23c(%rbp),%xmm0
ff
movss  %xmm0,-0x238(%rbp)
ff
movss  -0x244(%rbp),%xmm0
ff
movss  %xmm0,-0x240(%rbp)
ff
cmpl   $0x0,-0x254(%rbp)
jle    2073 <cb2014_ampf+0xf53>
mov    -0x254(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x254(%rbp)
movslq -0x254(%rbp),%rax
movss  -0x90(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    209f <cb2014_ampf+0xf7f>
jp     209f <cb2014_ampf+0xf7f>
jmp    20d0 <cb2014_ampf+0xfb0>
movslq -0x254(%rbp),%rax
movss  -0x90(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm1
movsd  0xf4d(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x23c(%rbp)
ff
jmp    20e0 <cb2014_ampf+0xfc0>
movss  0x1064(%rip),%xmm0
movss  %xmm0,-0x23c(%rbp)
ff
movslq -0x254(%rbp),%rax
movss  -0x210(%rbp,%rax,4),%xmm0
ff ff
movss  %xmm0,-0x244(%rbp)
ff
movss  -0x23c(%rbp),%xmm0
ff
ucomiss -0x238(%rbp),%xmm0
jne    2118 <cb2014_ampf+0xff8>
jp     2118 <cb2014_ampf+0xff8>
jmp    2169 <cb2014_ampf+0x1049>
movss  -0x244(%rbp),%xmm0
ff
subss  -0x240(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x320(%rbp)
ff
movss  -0x23c(%rbp),%xmm0
ff
divss  -0x238(%rbp),%xmm0
ff
call   1040 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x320(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x248(%rbp)
ff
jmp    2174 <cb2014_ampf+0x1054>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x248(%rbp)
ff
jmp    2179 <cb2014_ampf+0x1059>
movss  -0x240(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x330(%rbp)
ff
movss  -0x248(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x328(%rbp)
ff
movss  -0x234(%rbp),%xmm0
ff
divss  -0x238(%rbp),%xmm0
ff
call   1040 <log@plt>
movsd  -0x330(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x328(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x22c(%rbp)
ff
movss  -0x234(%rbp),%xmm1
ff
mov    0x18(%rbp),%rax
movss  (%rax),%xmm0
ucomiss %xmm1,%xmm0
jbe    220b <cb2014_ampf+0x10eb>
movss  0xefa(%rip),%xmm0
movss  %xmm0,-0x230(%rbp)
ff
jmp    23f5 <cb2014_ampf+0x12d5>
movss  -0x234(%rbp),%xmm1
ff
mov    0x20(%rbp),%rax
movss  (%rax),%xmm0
ucomiss %xmm1,%xmm0
jbe    229b <cb2014_ampf+0x117b>
movss  -0x234(%rbp),%xmm0
ff
mov    0x18(%rbp),%rax
divss  (%rax),%xmm0
call   1040 <log@plt>
movss  -0x22c(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
movsd  0xdbb(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x338(%rbp)
ff
mov    0x20(%rbp),%rax
movss  (%rax),%xmm0
mov    0x18(%rbp),%rax
divss  (%rax),%xmm0
call   1040 <log@plt>
movsd  -0x338(%rbp),%xmm1
ff
divsd  %xmm0,%xmm1
movsd  0xd82(%rip),%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x230(%rbp)
ff
jmp    23f0 <cb2014_ampf+0x12d0>
movss  -0x234(%rbp),%xmm1
ff
mov    0x28(%rbp),%rax
movss  (%rax),%xmm0
ucomiss %xmm1,%xmm0
jbe    22c9 <cb2014_ampf+0x11a9>
movss  -0x22c(%rbp),%xmm0
ff
movss  %xmm0,-0x230(%rbp)
ff
jmp    23eb <cb2014_ampf+0x12cb>
movss  -0x234(%rbp),%xmm1
ff
mov    0x30(%rbp),%rax
movss  (%rax),%xmm0
ucomiss %xmm1,%xmm0
jbe    22f7 <cb2014_ampf+0x11d7>
movss  -0x22c(%rbp),%xmm0
ff
movss  %xmm0,-0x230(%rbp)
ff
jmp    23e6 <cb2014_ampf+0x12c6>
movss  -0x234(%rbp),%xmm1
ff
mov    0x38(%rbp),%rax
movss  (%rax),%xmm0
ucomiss %xmm1,%xmm0
jbe    2325 <cb2014_ampf+0x1205>
movss  -0x22c(%rbp),%xmm0
ff
movss  %xmm0,-0x230(%rbp)
ff
jmp    23e1 <cb2014_ampf+0x12c1>
movss  -0x234(%rbp),%xmm1
ff
mov    0x40(%rbp),%rax
movss  (%rax),%xmm0
ucomiss %xmm1,%xmm0
jbe    23cc <cb2014_ampf+0x12ac>
movss  -0x22c(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x340(%rbp)
ff
movss  -0x234(%rbp),%xmm0
ff
mov    0x38(%rbp),%rax
divss  (%rax),%xmm0
call   1040 <log@plt>
movss  -0x22c(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm2
movsd  0xc8d(%rip),%xmm1
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x348(%rbp)
ff
mov    0x40(%rbp),%rax
movss  (%rax),%xmm0
mov    0x38(%rbp),%rax
divss  (%rax),%xmm0
call   1040 <log@plt>
movsd  -0x348(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x340(%rbp),%xmm0
ff
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x230(%rbp)
ff
jmp    23dc <cb2014_ampf+0x12bc>
movss  0xd24(%rip),%xmm0
movss  %xmm0,-0x230(%rbp)
ff
jmp    23e1 <cb2014_ampf+0x12c1>
jmp    23e6 <cb2014_ampf+0x12c6>
jmp    23eb <cb2014_ampf+0x12cb>
jmp    23f0 <cb2014_ampf+0x12d0>
jmp    23f5 <cb2014_ampf+0x12d5>
movss  -0x230(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movslq -0x250(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x250(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x250(%rbp)
jmp    1fe3 <cb2014_ampf+0xec3>
add    $0x350,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cb2014_ampf>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x228,%rsp
mov    %r9,%rbp
mov    %r8,%r13
mov    %rcx,%rbx
mov    %edx,%r12d
mov    %rsi,0x40(%rsp)
mov    %rdi,%r14
mov    0x260(%rsp),%r15
movaps 0xeac(%rip),%xmm0
movaps %xmm0,0x110(%rsp)
movaps 0xead(%rip),%xmm0
movaps %xmm0,0x120(%rsp)
movaps 0xeae(%rip),%xmm0
movaps %xmm0,0x130(%rsp)
movaps 0xeaf(%rip),%xmm0
movaps %xmm0,0x140(%rsp)
movaps 0xeb0(%rip),%xmm0
movaps %xmm0,0x150(%rsp)
movabs $0x4120000040f00000,%rax
mov    %rax,0x160(%rsp)
movaps 0xe9f(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0xea3(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0xea7(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0xeab(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0xeac(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movabs $0xbf1374bcbf29fbe7,%rax
74 13 bf
mov    %rax,0xa0(%rsp)
movaps 0xe9b(%rip),%xmm0
movaps %xmm0,0x170(%rsp)
movaps 0xe9c(%rip),%xmm0
movaps %xmm0,0x180(%rsp)
movaps 0xe9d(%rip),%xmm0
movaps %xmm0,0x190(%rsp)
movaps 0xe9e(%rip),%xmm0
movaps %xmm0,0x1a0(%rsp)
movaps 0xe9f(%rip),%xmm0
movaps %xmm0,0x1b0(%rsp)
movabs $0x43c8000043c80000,%rax
mov    %rax,0x1c0(%rsp)
movaps 0xe8e(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0xe8f(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0xe90(%rip),%xmm0
movaps %xmm0,0xd0(%rsp)
movaps 0xe91(%rip),%xmm0
movaps %xmm0,0xe0(%rsp)
movl   $0xbe991687,0xf0(%rsp)
87 16 99 be
xorps  %xmm0,%xmm0
movups %xmm0,0xf4(%rsp)
movl   $0x0,0x104(%rsp)
movss  0xe70(%rip),%xmm0
call   1040 <log@plt>
mulsd  0xe8b(%rip),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rsp)
movss  0x0(%rbp),%xmm0
movss  0xe51(%rip),%xmm1
ucomiss %xmm0,%xmm1
jbe    137b <cb2014_ampf+0x25b>
movss  0x50(%rsp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  %xmm1,0x18(%rsp)
divss  0xe30(%rip),%xmm0
call   1040 <log@plt>
movsd  %xmm0,0x20(%rsp)
movss  (%r15),%xmm0
movss  %xmm0,0x10(%rsp)
movss  0x0(%rbp),%xmm0
divss  0xe0d(%rip),%xmm0
call   1040 <log@plt>
mulsd  0xe2c(%rip),%xmm0
cvtsd2ss %xmm0,%xmm0
call   1030 <exp@plt>
movss  0xdfb(%rip),%xmm1
mulss  %xmm1,%xmm0
addss  0x10(%rsp),%xmm0
addss  (%r15),%xmm1
divss  %xmm1,%xmm0
call   1040 <log@plt>
mulsd  0xe03(%rip),%xmm0
movsd  0x20(%rsp),%xmm1
mulsd  0x18(%rsp),%xmm1
addsd  %xmm0,%xmm1
movapd %xmm1,%xmm0
jmp    13bd <cb2014_ampf+0x29d>
movss  0xdb5(%rip),%xmm1
ucomiss %xmm0,%xmm1
movss  0x50(%rsp),%xmm1
addss  0xda8(%rip),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  %xmm1,0x18(%rsp)
jbe    13aa <cb2014_ampf+0x28a>
divss  0xd8c(%rip),%xmm0
jmp    13b2 <cb2014_ampf+0x292>
movss  0xd7e(%rip),%xmm0
call   1040 <log@plt>
mulsd  0x18(%rsp),%xmm0
mov    %r15,%rax
mov    0x298(%rsp),%r15
xorps  %xmm1,%xmm1
cvtsd2ss %xmm0,%xmm1
movss  (%rsp),%xmm0
subss  %xmm1,%xmm0
movss  (%rax),%xmm1
movss  %xmm1,(%rsp)
call   1030 <exp@plt>
mulss  (%rsp),%xmm0
movss  0xd4d(%rip),%xmm1
movss  %xmm0,0x28(%rsp)
addss  %xmm0,%xmm1
movss  %xmm1,0xc(%rsp)
movss  0xd39(%rip),%xmm0
xor    %ebp,%ebp
movss  0xd1f(%rip),%xmm2
cs nopw 0x0(%rax,%rax,1)
nop
movss  %xmm0,0x20(%rsp)
movss  0x0(%r13),%xmm0
ucomiss %xmm0,%xmm2
movss  %xmm2,0x18(%rsp)
jbe    14d0 <cb2014_ampf+0x3b0>
movss  0x50(%rsp,%rbp,1),%xmm1
movss  %xmm1,0x10(%rsp)
cvtss2sd %xmm1,%xmm1
movsd  %xmm1,0x30(%rsp)
divss  %xmm2,%xmm0
call   1040 <log@plt>
movsd  %xmm0,(%rsp)
movss  0xb0(%rsp,%rbp,1),%xmm0
movss  %xmm0,0x38(%rsp)
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,0x48(%rsp)
movss  0x0(%r13),%xmm0
divss  0x18(%rsp),%xmm0
call   1040 <log@plt>
mulsd  0xccf(%rip),%xmm0
cvtsd2ss %xmm0,%xmm0
call   1030 <exp@plt>
mulss  0xc9e(%rip),%xmm0
addss  0x28(%rsp),%xmm0
divss  0xc(%rsp),%xmm0
call   1040 <log@plt>
mulsd  0x48(%rsp),%xmm0
movsd  (%rsp),%xmm1
mulsd  0x30(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,(%rsp)
jmp    1523 <cb2014_ampf+0x403>
nop
movss  0xc60(%rip),%xmm3
ucomiss %xmm0,%xmm3
movss  0x50(%rsp,%rbp,1),%xmm4
movss  0xb0(%rsp,%rbp,1),%xmm1
movss  %xmm1,0x38(%rsp)
mulss  0xc50(%rip),%xmm1
movss  %xmm4,0x10(%rsp)
addss  %xmm4,%xmm1
cvtss2sd %xmm1,%xmm1
movsd  %xmm1,(%rsp)
ja     1510 <cb2014_ampf+0x3f0>
movaps %xmm3,%xmm0
divss  %xmm2,%xmm0
call   1040 <log@plt>
mulsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
movss  (%rbx),%xmm0
movss  0x18(%rsp),%xmm1
ucomiss %xmm0,%xmm1
jbe    15c0 <cb2014_ampf+0x4a0>
movss  0x10(%rsp),%xmm2
cvtss2sd %xmm2,%xmm2
movsd  %xmm2,0x10(%rsp)
divss  %xmm1,%xmm0
call   1040 <log@plt>
movsd  %xmm0,0x30(%rsp)
movss  0x38(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,0x38(%rsp)
movss  (%rbx),%xmm0
divss  0x18(%rsp),%xmm0
call   1040 <log@plt>
mulsd  0xbe4(%rip),%xmm0
cvtsd2ss %xmm0,%xmm0
call   1030 <exp@plt>
mulss  0xbb3(%rip),%xmm0
addss  0x28(%rsp),%xmm0
divss  0xc(%rsp),%xmm0
call   1040 <log@plt>
movsd  0x30(%rsp),%xmm1
mulsd  0x38(%rsp),%xmm0
mulsd  0x10(%rsp),%xmm1
addsd  %xmm0,%xmm1
jmp    1600 <cb2014_ampf+0x4e0>
cs nopw 0x0(%rax,%rax,1)
movss  0xb70(%rip),%xmm2
ucomiss %xmm0,%xmm2
movss  0x38(%rsp),%xmm3
mulss  0xb6f(%rip),%xmm3
addss  0x10(%rsp),%xmm3
cvtss2sd %xmm3,%xmm3
movsd  %xmm3,0x10(%rsp)
ja     15ee <cb2014_ampf+0x4ce>
movaps %xmm2,%xmm0
divss  %xmm1,%xmm0
call   1040 <log@plt>
movaps %xmm0,%xmm1
mulsd  0x10(%rsp),%xmm1
movsd  (%rsp),%xmm0
cvtsd2ss %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm1
subss  %xmm1,%xmm0
call   1030 <exp@plt>
movss  %xmm0,0x1d0(%rsp,%rbp,1)
movss  0x110(%rsp,%rbp,1),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xb3c(%rip),%xmm2
divsd  %xmm1,%xmm2
movss  (%r15),%xmm1
cvtss2sd %xmm1,%xmm1
ucomisd %xmm2,%xmm1
jae    1650 <cb2014_ampf+0x530>
movss  0x20(%rsp),%xmm0
jmp    166d <cb2014_ampf+0x54d>
nop
xorps  %xmm1,%xmm1
movss  0x20(%rsp),%xmm2
ucomiss %xmm2,%xmm1
ja     166d <cb2014_ampf+0x54d>
movaps %xmm2,%xmm1
movss  %xmm2,0x1d0(%rsp,%rbp,1)
movaps %xmm2,%xmm0
cmp    $0x54,%rbp
je     1685 <cb2014_ampf+0x565>
movss  0x174(%rsp,%rbp,1),%xmm2
add    $0x4,%rbp
jmp    1420 <cb2014_ampf+0x300>
cmp    $0x4,%r12d
mov    0x280(%rsp),%r13
jl     19ac <cb2014_ampf+0x88c>
movss  0xaad(%rip),%xmm1
movaps %xmm1,%xmm2
divss  0x164(%rsp),%xmm2
xorps  %xmm0,%xmm0
cvtsi2ss %r12d,%xmm0
movss  0x224(%rsp),%xmm3
mov    0x40(%rsp),%rax
mulss  (%rax),%xmm0
divss  %xmm0,%xmm1
movss  %xmm1,0x38(%rsp)
shr    %r12d
mov    $0x15,%ebx
mov    $0x1,%ebp
xorps  %xmm0,%xmm0
movss  %xmm0,0x28(%rsp)
movss  %xmm3,0x10(%rsp)
movss  %xmm3,0xc(%rsp)
movss  %xmm2,0x20(%rsp)
jmp    171b <cb2014_ampf+0x5fb>
nopl   0x0(%rax)
movaps %xmm3,%xmm2
movss  %xmm2,(%r14,%rbp,4)
add    $0x1,%rbp
cmp    %rbp,%r12
movss  (%rsp),%xmm2
je     19ac <cb2014_ampf+0x88c>
xorps  %xmm3,%xmm3
cvtsi2ss %ebp,%xmm3
mulss  0x38(%rsp),%xmm3
ucomiss %xmm2,%xmm3
movss  %xmm3,0x18(%rsp)
jbe    1800 <cb2014_ampf+0x6e0>
xor    %eax,%eax
test   %ebx,%ebx
setg   %al
sub    %eax,%ebx
movslq %ebx,%rax
movss  0x110(%rsp,%rax,4),%xmm0
ucomiss 0xa01(%rip),%xmm0
movss  0x9f5(%rip),%xmm1
jne    175f <cb2014_ampf+0x63f>
jnp    176b <cb2014_ampf+0x64b>
movss  0x9e5(%rip),%xmm1
divss  %xmm0,%xmm1
movss  0x1d0(%rsp,%rax,4),%xmm4
ucomiss %xmm2,%xmm1
jne    177f <cb2014_ampf+0x65f>
jnp    180d <cb2014_ampf+0x6ed>
movaps %xmm4,%xmm0
subss  0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,0x28(%rsp)
movaps %xmm1,%xmm0
divss  %xmm2,%xmm0
movss  %xmm2,(%rsp)
movss  %xmm1,0xc(%rsp)
movss  %xmm4,0x20(%rsp)
call   1040 <log@plt>
movss  0x18(%rsp),%xmm3
movsd  0x28(%rsp),%xmm1
divsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
movss  %xmm0,0x28(%rsp)
movss  (%rsp),%xmm2
movss  0xc(%rsp),%xmm0
movss  %xmm0,(%rsp)
movss  0x10(%rsp),%xmm0
movss  %xmm0,0xc(%rsp)
movss  0x20(%rsp),%xmm0
movss  %xmm0,0x10(%rsp)
jmp    1830 <cb2014_ampf+0x710>
cs nopw 0x0(%rax,%rax,1)
movss  %xmm2,(%rsp)
movss  0x20(%rsp),%xmm2
jmp    1830 <cb2014_ampf+0x710>
xorps  %xmm0,%xmm0
movss  %xmm0,0x28(%rsp)
movss  %xmm1,(%rsp)
movss  0x10(%rsp),%xmm0
movss  %xmm0,0xc(%rsp)
movss  %xmm4,0x10(%rsp)
nopl   (%rax)
movaps %xmm3,%xmm0
movss  %xmm2,0x20(%rsp)
divss  %xmm2,%xmm0
call   1040 <log@plt>
movss  0x18(%rsp),%xmm4
mov    0x268(%rsp),%rax
movss  (%rax),%xmm1
ucomiss %xmm4,%xmm1
movss  0x8ed(%rip),%xmm2
mov    0x270(%rsp),%r15
ja     1703 <cb2014_ampf+0x5e3>
movss  0xc(%rsp),%xmm2
cvtss2sd %xmm2,%xmm2
movss  0x28(%rsp),%xmm3
cvtss2sd %xmm3,%xmm3
mulsd  %xmm0,%xmm3
addsd  %xmm2,%xmm3
cvtsd2ss %xmm3,%xmm3
movss  (%r15),%xmm0
ucomiss %xmm4,%xmm0
jbe    1910 <cb2014_ampf+0x7f0>
divss  %xmm1,%xmm4
movaps %xmm4,%xmm0
movss  %xmm3,0x18(%rsp)
call   1040 <log@plt>
movss  0x18(%rsp),%xmm1
cvtss2sd %xmm1,%xmm1
addsd  0x8bd(%rip),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x18(%rsp)
mov    0x268(%rsp),%rcx
movsd  0x89b(%rip),%xmm0
movsd  %xmm0,0x30(%rsp)
movss  (%r15),%xmm0
divss  (%rcx),%xmm0
call   1040 <log@plt>
movsd  0x18(%rsp),%xmm1
divsd  %xmm0,%xmm1
addsd  0x30(%rsp),%xmm1
xorps  %xmm2,%xmm2
cvtsd2ss %xmm1,%xmm2
jmp    1703 <cb2014_ampf+0x5e3>
cs nopw 0x0(%rax,%rax,1)
nop
mov    0x278(%rsp),%rax
movss  (%rax),%xmm0
ucomiss %xmm4,%xmm0
ja     1700 <cb2014_ampf+0x5e0>
movss  0x0(%r13),%xmm0
ucomiss %xmm4,%xmm0
ja     1700 <cb2014_ampf+0x5e0>
mov    0x288(%rsp),%rax
movss  (%rax),%xmm0
ucomiss %xmm4,%xmm0
ja     1700 <cb2014_ampf+0x5e0>
mov    0x290(%rsp),%rax
movss  (%rax),%xmm1
ucomiss %xmm4,%xmm1
movss  0x7ec(%rip),%xmm2
jbe    1703 <cb2014_ampf+0x5e3>
xorps  %xmm1,%xmm1
cvtss2sd %xmm3,%xmm1
movsd  %xmm1,0x30(%rsp)
divss  %xmm0,%xmm4
movaps %xmm4,%xmm0
call   1040 <log@plt>
movsd  0x7e9(%rip),%xmm1
subsd  0x30(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x18(%rsp)
mov    0x290(%rsp),%r15
mov    0x288(%rsp),%rcx
jmp    18db <cb2014_ampf+0x7bb>
add    $0x228,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @cb2014_ampf(float* %0, float* %1, i32 %2, float* %3, float* %4, float* %5, float* %6, float* %7, float* %8, float* %9, float* %10, float* %11, float* %12, float* %13) {
%15 = alloca float*
%16 = alloca float*
%17 = alloca i32
%18 = alloca float*
%19 = alloca float*
%20 = alloca float*
%21 = alloca float*
%22 = alloca float*
%23 = alloca float*
%24 = alloca float*
%25 = alloca float*
%26 = alloca float*
%27 = alloca float*
%28 = alloca float*
%29 = alloca float
%30 = alloca float
%31 = alloca [22 x float]
%32 = alloca [22 x float]
%33 = alloca [22 x float]
%34 = alloca [22 x float]
%35 = alloca [22 x float]
%36 = alloca float
%37 = alloca float
%38 = alloca float
%39 = alloca float
%40 = alloca float
%41 = alloca float
%42 = alloca float
%43 = alloca float
%44 = alloca float
%45 = alloca float
%46 = alloca float
%47 = alloca float
%48 = alloca float
%49 = alloca float
%50 = alloca float
%51 = alloca i32
%52 = alloca i32
%53 = alloca i32
store float* %0, float** %15
store float* %1, float** %16
store i32 %2, i32* %17
store float* %3, float** %18
store float* %4, float** %19
store float* %5, float** %20
store float* %6, float** %21
store float* %7, float** %22
store float* %8, float** %23
store float* %9, float** %24
store float* %10, float** %25
store float* %11, float** %26
store float* %12, float** %27
store float* %13, float** %28
store i32 22, i32* %53
store float 0x3FFE147AE0000000, float* %29
store float 0x3FF2E147A0000000, float* %30
%54 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 0
store float 0.000000e+00, float* %54
%55 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 1
store float 0x3F847AE140000000, float* %55
%56 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 2
store float 0x3F947AE140000000, float* %56
%57 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 3
store float 0x3F9EB851E0000000, float* %57
%58 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 4
store float 0x3FA99999A0000000, float* %58
%59 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 5
store float 0x3FB3333340000000, float* %59
%60 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 6
store float 0x3FB99999A0000000, float* %60
%61 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 7
store float 0x3FC3333340000000, float* %61
%62 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 8
store float 0x3FC99999A0000000, float* %62
%63 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 9
store float 2.500000e-01, float* %63
%64 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 10
store float 0x3FD3333340000000, float* %64
%65 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 11
store float 0x3FD99999A0000000, float* %65
%66 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 12
store float 5.000000e-01, float* %66
%67 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 13
store float 7.500000e-01, float* %67
%68 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 14
store float 1.000000e+00, float* %68
%69 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 15
store float 1.500000e+00, float* %69
%70 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 16
store float 2.000000e+00, float* %70
%71 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 17
store float 3.000000e+00, float* %71
%72 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 18
store float 4.000000e+00, float* %72
%73 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 19
store float 5.000000e+00, float* %73
%74 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 20
store float 7.500000e+00, float* %74
%75 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 21
store float 1.000000e+01, float* %75
%76 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 0
store float 0x3FF170A3E0000000, float* %76
%77 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 1
store float 0x3FF1810620000000, float* %77
%78 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 2
store float 0x3FF2624DE0000000, float* %78
%79 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 3
store float 0x3FF4A3D700000000, float* %79
%80 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 4
store float 0x3FF72F1AA0000000, float* %80
%81 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 5
store float 0x3FF88F5C20000000, float* %81
%82 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 6
store float 0x3FF9D70A40000000, float* %82
%83 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 7
store float 0x3FFE083120000000, float* %83
%84 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 8
store float 0x40008D4FE0000000, float* %84
%85 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 9
store float 0x4001A3D700000000, float* %85
%86 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 10
store float 0x400272B020000000, float* %86
%87 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 11
store float 0x40032F1AA0000000, float* %87
%88 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 12
store float 0x4002D70A40000000, float* %88
%89 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 13
store float 0x3FFFEB8520000000, float* %89
%90 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 14
store float 0x3FF726E980000000, float* %90
%91 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 15
store float 0x3FD51EB860000000, float* %91
%92 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 16
store float 0xBFE072B020000000, float* %92
%93 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 17
store float 0xBFEB22D0E0000000, float* %93
%94 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 18
store float 0xBFE9604180000000, float* %94
%95 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 19
store float 0xBFE7EF9DC0000000, float* %95
%96 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 20
store float 0xBFE53F7CE0000000, float* %96
%97 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 21
store float 0xBFE26E9780000000, float* %97
%98 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 0
store float 8.650000e+02, float* %98
%99 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 1
store float 8.650000e+02, float* %99
%100 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 2
store float 8.650000e+02, float* %100
%101 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 3
store float 9.080000e+02, float* %101
%102 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 4
store float 1.054000e+03, float* %102
%103 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 5
store float 1.086000e+03, float* %103
%104 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 6
store float 1.032000e+03, float* %104
%105 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 7
store float 8.780000e+02, float* %105
%106 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 8
store float 7.480000e+02, float* %106
%107 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 9
store float 6.540000e+02, float* %107
%108 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 10
store float 5.870000e+02, float* %108
%109 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 11
store float 5.030000e+02, float* %109
%110 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 12
store float 4.570000e+02, float* %110
%111 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 13
store float 4.100000e+02, float* %111
%112 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 14
store float 4.000000e+02, float* %112
%113 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 15
store float 4.000000e+02, float* %113
%114 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 16
store float 4.000000e+02, float* %114
%115 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 17
store float 4.000000e+02, float* %115
%116 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 18
store float 4.000000e+02, float* %116
%117 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 19
store float 4.000000e+02, float* %117
%118 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 20
store float 4.000000e+02, float* %118
%119 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 21
store float 4.000000e+02, float* %119
%120 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 0
store float 0xBFF2F9DB20000000, float* %120
%121 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 1
store float 0xBFF2F9DB20000000, float* %121
%122 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 2
store float 0xBFF3810620000000, float* %122
%123 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 3
store float 0xBFF45E3540000000, float* %123
%124 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 4
store float 0xBFF5893740000000, float* %124
%125 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 5
store float 0xBFF7893740000000, float* %125
%126 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 6
store float 0xBFF9FBE760000000, float* %126
%127 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 7
store float 0xBFFEE56040000000, float* %127
%128 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 8
store float 0xC001810620000000, float* %128
%129 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 9
store float 0xC0030C49C0000000, float* %129
%130 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 10
store float 0xC00424DD20000000, float* %130
%131 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 11
store float 0xC005418940000000, float* %131
%132 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 12
store float 0xC0055A1CA0000000, float* %132
%133 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 13
store float 0xC003353F80000000, float* %133
%134 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 14
store float 0xBFFF47AE20000000, float* %134
%135 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 15
store float 0xBFF0666660000000, float* %135
%136 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 16
store float 0xBFD322D0E0000000, float* %136
%137 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 17
store float 0.000000e+00, float* %137
%138 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 18
store float 0.000000e+00, float* %138
%139 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 19
store float 0.000000e+00, float* %139
%140 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 20
store float 0.000000e+00, float* %140
%141 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 21
store float 0.000000e+00, float* %141
%142 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 0
%143 = load float, float* %142
%144 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 0
%145 = load float, float* %144
%146 = load float, float* %30
%147 = call float @llvm.fmuladd.f32(float %145, float %146, float %143)
%148 = fpext float %147 to double
%149 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 0
%150 = load float, float* %149
%151 = fpext float %150 to double
%152 = fdiv double 1.100000e+03, %151
%153 = fptrunc double %152 to float
%154 = call double @log(float %153)
%155 = fmul double %148, %154
%156 = fptrunc double %155 to float
store float %156, float* %37
%157 = load float*, float** %20
%158 = load float, float* %157
%159 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 0
%160 = load float, float* %159
%161 = fcmp olt float %158, %160
br i1 %161, label %162, label %199
162: ; preds = %14
%163 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 0
%164 = load float, float* %163
%165 = fpext float %164 to double
%166 = load float*, float** %20
%167 = load float, float* %166
%168 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 0
%169 = load float, float* %168
%170 = fdiv float %167, %169
%171 = call double @log(float %170)
%172 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 0
%173 = load float, float* %172
%174 = fpext float %173 to double
%175 = load float*, float** %21
%176 = load float, float* %175
%177 = load float, float* %29
%178 = load float, float* %30
%179 = fpext float %178 to double
%180 = load float*, float** %20
%181 = load float, float* %180
%182 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 0
%183 = load float, float* %182
%184 = fdiv float %181, %183
%185 = call double @log(float %184)
%186 = fmul double %179, %185
%187 = fptrunc double %186 to float
%188 = call float @exp(float %187)
%189 = call float @llvm.fmuladd.f32(float %177, float %188, float %176)
%190 = load float*, float** %21
%191 = load float, float* %190
%192 = load float, float* %29
%193 = fadd float %191, %192
%194 = fdiv float %189, %193
%195 = call double @log(float %194)
%196 = fmul double %174, %195
%197 = call double @llvm.fmuladd.f64(double %165, double %171, double %196)
%198 = fptrunc double %197 to float
store float %198, float* %38
br label %237
199: ; preds = %14
%200 = load float*, float** %20
%201 = load float, float* %200
%202 = fpext float %201 to double
%203 = fcmp olt double %202, 1.100000e+03
br i1 %203, label %204, label %220
204: ; preds = %199
%205 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 0
%206 = load float, float* %205
%207 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 0
%208 = load float, float* %207
%209 = load float, float* %30
%210 = call float @llvm.fmuladd.f32(float %208, float %209, float %206)
%211 = fpext float %210 to double
%212 = load float*, float** %20
%213 = load float, float* %212
%214 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 0
%215 = load float, float* %214
%216 = fdiv float %213, %215
%217 = call double @log(float %216)
%218 = fmul double %211, %217
%219 = fptrunc double %218 to float
store float %219, float* %38
br label %236
220: ; preds = %199
%221 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 0
%222 = load float, float* %221
%223 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 0
%224 = load float, float* %223
%225 = load float, float* %30
%226 = call float @llvm.fmuladd.f32(float %224, float %225, float %222)
%227 = fpext float %226 to double
%228 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 0
%229 = load float, float* %228
%230 = fpext float %229 to double
%231 = fdiv double 1.100000e+03, %230
%232 = fptrunc double %231 to float
%233 = call double @log(float %232)
%234 = fmul double %227, %233
%235 = fptrunc double %234 to float
store float %235, float* %38
br label %236
236: ; preds = %220, %204
br label %237
237: ; preds = %236, %162
%238 = load float*, float** %21
%239 = load float, float* %238
%240 = load float, float* %37
%241 = load float, float* %38
%242 = fsub float %240, %241
%243 = call float @exp(float %242)
%244 = fmul float %239, %243
store float %244, float* %36
store float -1.000000e+00, float* %50
store i32 0, i32* %51
br label %245
245: ; preds = %485, %237
%246 = load i32, i32* %51
%247 = load i32, i32* %53
%248 = icmp slt i32 %246, %247
br i1 %248, label %249, label %488
249: ; preds = %245
%250 = load float*, float** %19
%251 = load float, float* %250
%252 = load i32, i32* %51
%253 = sext i32 %252 to i64
%254 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 %253
%255 = load float, float* %254
%256 = fcmp olt float %251, %255
br i1 %256, label %257, label %300
257: ; preds = %249
%258 = load i32, i32* %51
%259 = sext i32 %258 to i64
%260 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 %259
%261 = load float, float* %260
%262 = fpext float %261 to double
%263 = load float*, float** %19
%264 = load float, float* %263
%265 = load i32, i32* %51
%266 = sext i32 %265 to i64
%267 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 %266
%268 = load float, float* %267
%269 = fdiv float %264, %268
%270 = call double @log(float %269)
%271 = load i32, i32* %51
%272 = sext i32 %271 to i64
%273 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 %272
%274 = load float, float* %273
%275 = fpext float %274 to double
%276 = load float, float* %36
%277 = load float, float* %29
%278 = load float, float* %30
%279 = fpext float %278 to double
%280 = load float*, float** %19
%281 = load float, float* %280
%282 = load i32, i32* %51
%283 = sext i32 %282 to i64
%284 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 %283
%285 = load float, float* %284
%286 = fdiv float %281, %285
%287 = call double @log(float %286)
%288 = fmul double %279, %287
%289 = fptrunc double %288 to float
%290 = call float @exp(float %289)
%291 = call float @llvm.fmuladd.f32(float %277, float %290, float %276)
%292 = load float, float* %36
%293 = load float, float* %29
%294 = fadd float %292, %293
%295 = fdiv float %291, %294
%296 = call double @log(float %295)
%297 = fmul double %275, %296
%298 = call double @llvm.fmuladd.f64(double %262, double %270, double %297)
%299 = fptrunc double %298 to float
store float %299, float* %40
br label %350
300: ; preds = %249
%301 = load float*, float** %19
%302 = load float, float* %301
%303 = fpext float %302 to double
%304 = fcmp olt double %303, 1.100000e+03
br i1 %304, label %305, label %327
305: ; preds = %300
%306 = load i32, i32* %51
%307 = sext i32 %306 to i64
%308 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 %307
%309 = load float, float* %308
%310 = load i32, i32* %51
%311 = sext i32 %310 to i64
%312 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 %311
%313 = load float, float* %312
%314 = load float, float* %30
%315 = call float @llvm.fmuladd.f32(float %313, float %314, float %309)
%316 = fpext float %315 to double
%317 = load float*, float** %19
%318 = load float, float* %317
%319 = load i32, i32* %51
%320 = sext i32 %319 to i64
%321 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 %320
%322 = load float, float* %321
%323 = fdiv float %318, %322
%324 = call double @log(float %323)
%325 = fmul double %316, %324
%326 = fptrunc double %325 to float
store float %326, float* %40
br label %349
327: ; preds = %300
%328 = load i32, i32* %51
%329 = sext i32 %328 to i64
%330 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 %329
%331 = load float, float* %330
%332 = load i32, i32* %51
%333 = sext i32 %332 to i64
%334 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 %333
%335 = load float, float* %334
%336 = load float, float* %30
%337 = call float @llvm.fmuladd.f32(float %335, float %336, float %331)
%338 = fpext float %337 to double
%339 = load i32, i32* %51
%340 = sext i32 %339 to i64
%341 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 %340
%342 = load float, float* %341
%343 = fpext float %342 to double
%344 = fdiv double 1.100000e+03, %343
%345 = fptrunc double %344 to float
%346 = call double @log(float %345)
%347 = fmul double %338, %346
%348 = fptrunc double %347 to float
store float %348, float* %40
br label %349
349: ; preds = %327, %305
br label %350
350: ; preds = %349, %257
%351 = load float*, float** %18
%352 = load float, float* %351
%353 = load i32, i32* %51
%354 = sext i32 %353 to i64
%355 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 %354
%356 = load float, float* %355
%357 = fcmp olt float %352, %356
br i1 %357, label %358, label %401
358: ; preds = %350
%359 = load i32, i32* %51
%360 = sext i32 %359 to i64
%361 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 %360
%362 = load float, float* %361
%363 = fpext float %362 to double
%364 = load float*, float** %18
%365 = load float, float* %364
%366 = load i32, i32* %51
%367 = sext i32 %366 to i64
%368 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 %367
%369 = load float, float* %368
%370 = fdiv float %365, %369
%371 = call double @log(float %370)
%372 = load i32, i32* %51
%373 = sext i32 %372 to i64
%374 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 %373
%375 = load float, float* %374
%376 = fpext float %375 to double
%377 = load float, float* %36
%378 = load float, float* %29
%379 = load float, float* %30
%380 = fpext float %379 to double
%381 = load float*, float** %18
%382 = load float, float* %381
%383 = load i32, i32* %51
%384 = sext i32 %383 to i64
%385 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 %384
%386 = load float, float* %385
%387 = fdiv float %382, %386
%388 = call double @log(float %387)
%389 = fmul double %380, %388
%390 = fptrunc double %389 to float
%391 = call float @exp(float %390)
%392 = call float @llvm.fmuladd.f32(float %378, float %391, float %377)
%393 = load float, float* %36
%394 = load float, float* %29
%395 = fadd float %393, %394
%396 = fdiv float %392, %395
%397 = call double @log(float %396)
%398 = fmul double %376, %397
%399 = call double @llvm.fmuladd.f64(double %363, double %371, double %398)
%400 = fptrunc double %399 to float
store float %400, float* %39
br label %451
401: ; preds = %350
%402 = load float*, float** %18
%403 = load float, float* %402
%404 = fpext float %403 to double
%405 = fcmp olt double %404, 1.100000e+03
br i1 %405, label %406, label %428
406: ; preds = %401
%407 = load i32, i32* %51
%408 = sext i32 %407 to i64
%409 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 %408
%410 = load float, float* %409
%411 = load i32, i32* %51
%412 = sext i32 %411 to i64
%413 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 %412
%414 = load float, float* %413
%415 = load float, float* %30
%416 = call float @llvm.fmuladd.f32(float %414, float %415, float %410)
%417 = fpext float %416 to double
%418 = load float*, float** %18
%419 = load float, float* %418
%420 = load i32, i32* %51
%421 = sext i32 %420 to i64
%422 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 %421
%423 = load float, float* %422
%424 = fdiv float %419, %423
%425 = call double @log(float %424)
%426 = fmul double %417, %425
%427 = fptrunc double %426 to float
store float %427, float* %39
br label %450
428: ; preds = %401
%429 = load i32, i32* %51
%430 = sext i32 %429 to i64
%431 = getelementptr inbounds [22 x float], [22 x float]* %32, i64 0, i64 %430
%432 = load float, float* %431
%433 = load i32, i32* %51
%434 = sext i32 %433 to i64
%435 = getelementptr inbounds [22 x float], [22 x float]* %34, i64 0, i64 %434
%436 = load float, float* %435
%437 = load float, float* %30
%438 = call float @llvm.fmuladd.f32(float %436, float %437, float %432)
%439 = fpext float %438 to double
%440 = load i32, i32* %51
%441 = sext i32 %440 to i64
%442 = getelementptr inbounds [22 x float], [22 x float]* %33, i64 0, i64 %441
%443 = load float, float* %442
%444 = fpext float %443 to double
%445 = fdiv double 1.100000e+03, %444
%446 = fptrunc double %445 to float
%447 = call double @log(float %446)
%448 = fmul double %439, %447
%449 = fptrunc double %448 to float
store float %449, float* %39
br label %450
450: ; preds = %428, %406
br label %451
451: ; preds = %450, %358
%452 = load float, float* %40
%453 = load float, float* %39
%454 = fsub float %452, %453
%455 = call float @exp(float %454)
%456 = load i32, i32* %51
%457 = sext i32 %456 to i64
%458 = getelementptr inbounds [22 x float], [22 x float]* %35, i64 0, i64 %457
store float %455, float* %458
%459 = load i32, i32* %51
%460 = sext i32 %459 to i64
%461 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 %460
%462 = load float, float* %461
%463 = fpext float %462 to double
%464 = fdiv double 1.000000e+00, %463
%465 = load float*, float** %28
%466 = load float, float* %465
%467 = fpext float %466 to double
%468 = fcmp ole double %464, %467
br i1 %468, label %469, label %484
469: ; preds = %451
%470 = load float, float* %50
%471 = fpext float %470 to double
%472 = fcmp olt double %471, 0.000000e+00
br i1 %472, label %473, label %478
473: ; preds = %469
%474 = load i32, i32* %51
%475 = sext i32 %474 to i64
%476 = getelementptr inbounds [22 x float], [22 x float]* %35, i64 0, i64 %475
%477 = load float, float* %476
store float %477, float* %50
br label %483
478: ; preds = %469
%479 = load float, float* %50
%480 = load i32, i32* %51
%481 = sext i32 %480 to i64
%482 = getelementptr inbounds [22 x float], [22 x float]* %35, i64 0, i64 %481
store float %479, float* %482
br label %483
483: ; preds = %478, %473
br label %484
484: ; preds = %483, %451
br label %485
485: ; preds = %484
%486 = load i32, i32* %51
%487 = add nsw i32 %486, 1
store i32 %487, i32* %51
br label %245
488: ; preds = %245
%489 = load i32, i32* %53
%490 = sub nsw i32 %489, 1
store i32 %490, i32* %52
%491 = load i32, i32* %52
%492 = sext i32 %491 to i64
%493 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 %492
%494 = load float, float* %493
%495 = fpext float %494 to double
%496 = fdiv double 1.000000e+00, %495
%497 = fptrunc double %496 to float
store float %497, float* %45
%498 = load i32, i32* %52
%499 = sext i32 %498 to i64
%500 = getelementptr inbounds [22 x float], [22 x float]* %35, i64 0, i64 %499
%501 = load float, float* %500
store float %501, float* %47
%502 = load i32, i32* %52
%503 = sext i32 %502 to i64
%504 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 %503
%505 = load float, float* %504
%506 = fpext float %505 to double
%507 = fdiv double 1.000000e+00, %506
%508 = fptrunc double %507 to float
store float %508, float* %46
%509 = load i32, i32* %52
%510 = sext i32 %509 to i64
%511 = getelementptr inbounds [22 x float], [22 x float]* %35, i64 0, i64 %510
%512 = load float, float* %511
store float %512, float* %48
store float 0.000000e+00, float* %49
%513 = load i32, i32* %17
%514 = sitofp i32 %513 to float
%515 = load float*, float** %16
%516 = load float, float* %515
%517 = fmul float %514, %516
%518 = fpext float %517 to double
%519 = fdiv double 1.000000e+00, %518
%520 = fptrunc double %519 to float
store float %520, float* %41
store i32 1, i32* %51
br label %521
521: ; preds = %678, %488
%522 = load i32, i32* %51
%523 = load i32, i32* %17
%524 = sdiv i32 %523, 2
%525 = icmp slt i32 %522, %524
br i1 %525, label %526, label %681
526: ; preds = %521
%527 = load i32, i32* %51
%528 = sitofp i32 %527 to float
%529 = load float, float* %41
%530 = fmul float %528, %529
store float %530, float* %44
%531 = load float, float* %44
%532 = load float, float* %46
%533 = fcmp ogt float %531, %532
br i1 %533, label %534, label %579
534: ; preds = %526
%535 = load float, float* %46
store float %535, float* %45
%536 = load float, float* %48
store float %536, float* %47
%537 = load i32, i32* %52
%538 = icmp sgt i32 %537, 0
br i1 %538, label %539, label %542
539: ; preds = %534
%540 = load i32, i32* %52
%541 = add nsw i32 %540, -1
store i32 %541, i32* %52
br label %542
542: ; preds = %539, %534
%543 = load i32, i32* %52
%544 = sext i32 %543 to i64
%545 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 %544
%546 = load float, float* %545
%547 = fpext float %546 to double
%548 = fcmp une double %547, 0.000000e+00
br i1 %548, label %549, label %557
549: ; preds = %542
%550 = load i32, i32* %52
%551 = sext i32 %550 to i64
%552 = getelementptr inbounds [22 x float], [22 x float]* %31, i64 0, i64 %551
%553 = load float, float* %552
%554 = fpext float %553 to double
%555 = fdiv double 1.000000e+00, %554
%556 = fptrunc double %555 to float
store float %556, float* %46
br label %558
557: ; preds = %542
store float 1.000000e+03, float* %46
br label %558
558: ; preds = %557, %549
%559 = load i32, i32* %52
%560 = sext i32 %559 to i64
%561 = getelementptr inbounds [22 x float], [22 x float]* %35, i64 0, i64 %560
%562 = load float, float* %561
store float %562, float* %48
%563 = load float, float* %46
%564 = load float, float* %45
%565 = fcmp une float %563, %564
br i1 %565, label %566, label %577
566: ; preds = %558
%567 = load float, float* %48
%568 = load float, float* %47
%569 = fsub float %567, %568
%570 = fpext float %569 to double
%571 = load float, float* %46
%572 = load float, float* %45
%573 = fdiv float %571, %572
%574 = call double @log(float %573)
%575 = fdiv double %570, %574
%576 = fptrunc double %575 to float
store float %576, float* %49
br label %578
577: ; preds = %558
store float 0.000000e+00, float* %49
br label %578
578: ; preds = %577, %566
br label %579
579: ; preds = %578, %526
%580 = load float, float* %47
%581 = fpext float %580 to double
%582 = load float, float* %49
%583 = fpext float %582 to double
%584 = load float, float* %44
%585 = load float, float* %45
%586 = fdiv float %584, %585
%587 = call double @log(float %586)
%588 = call double @llvm.fmuladd.f64(double %583, double %587, double %581)
%589 = fptrunc double %588 to float
store float %589, float* %42
%590 = load float, float* %44
%591 = load float*, float** %22
%592 = load float, float* %591
%593 = fcmp olt float %590, %592
br i1 %593, label %594, label %595
594: ; preds = %579
store float 1.000000e+00, float* %43
br label %672
595: ; preds = %579
%596 = load float, float* %44
%597 = load float*, float** %23
%598 = load float, float* %597
%599 = fcmp olt float %596, %598
br i1 %599, label %600, label %619
600: ; preds = %595
%601 = load float, float* %44
%602 = load float*, float** %22
%603 = load float, float* %602
%604 = fdiv float %601, %603
%605 = call double @log(float %604)
%606 = load float, float* %42
%607 = fpext float %606 to double
%608 = fsub double %607, 1.000000e+00
%609 = fmul double %605, %608
%610 = load float*, float** %23
%611 = load float, float* %610
%612 = load float*, float** %22
%613 = load float, float* %612
%614 = fdiv float %611, %613
%615 = call double @log(float %614)
%616 = fdiv double %609, %615
%617 = fadd double 1.000000e+00, %616
%618 = fptrunc double %617 to float
store float %618, float* %43
br label %671
619: ; preds = %595
%620 = load float, float* %44
%621 = load float*, float** %24
%622 = load float, float* %621
%623 = fcmp olt float %620, %622
br i1 %623, label %624, label %626
624: ; preds = %619
%625 = load float, float* %42
store float %625, float* %43
br label %670
626: ; preds = %619
%627 = load float, float* %44
%628 = load float*, float** %25
%629 = load float, float* %628
%630 = fcmp olt float %627, %629
br i1 %630, label %631, label %633
631: ; preds = %626
%632 = load float, float* %42
store float %632, float* %43
br label %669
633: ; preds = %626
%634 = load float, float* %44
%635 = load float*, float** %26
%636 = load float, float* %635
%637 = fcmp olt float %634, %636
br i1 %637, label %638, label %640
638: ; preds = %633
%639 = load float, float* %42
store float %639, float* %43
br label %668
640: ; preds = %633
%641 = load float, float* %44
%642 = load float*, float** %27
%643 = load float, float* %642
%644 = fcmp olt float %641, %643
br i1 %644, label %645, label %666
645: ; preds = %640
%646 = load float, float* %42
%647 = fpext float %646 to double
%648 = load float, float* %44
%649 = load float*, float** %26
%650 = load float, float* %649
%651 = fdiv float %648, %650
%652 = call double @log(float %651)
%653 = load float, float* %42
%654 = fpext float %653 to double
%655 = fsub double 1.000000e+00, %654
%656 = fmul double %652, %655
%657 = load float*, float** %27
%658 = load float, float* %657
%659 = load float*, float** %26
%660 = load float, float* %659
%661 = fdiv float %658, %660
%662 = call double @log(float %661)
%663 = fdiv double %656, %662
%664 = fadd double %647, %663
%665 = fptrunc double %664 to float
store float %665, float* %43
br label %667
666: ; preds = %640
store float 1.000000e+00, float* %43
br label %667
667: ; preds = %666, %645
br label %668
668: ; preds = %667, %638
br label %669
669: ; preds = %668, %631
br label %670
670: ; preds = %669, %624
br label %671
671: ; preds = %670, %600
br label %672
672: ; preds = %671, %594
%673 = load float, float* %43
%674 = load float*, float** %15
%675 = load i32, i32* %51
%676 = sext i32 %675 to i64
%677 = getelementptr inbounds float, float* %674, i64 %676
store float %673, float* %677
br label %678
678: ; preds = %672
%679 = load i32, i32* %51
%680 = add nsw i32 %679, 1
store i32 %680, i32* %51
br label %521
681: ; preds = %521
ret void
}

LLVM IR (-O2):
define void @cb2014_ampf(float* nocapture writeonly %0, float* nocapture %1, i32 %2, float* nocapture %3, float* nocapture %4, float* nocapture %5, float* nocapture %6, float* nocapture %7, float* nocapture %8, float* nocapture %9, float* nocapture %10, float* nocapture %11, float* nocapture %12, float* nocapture %13) {
%15 = alloca [22 x float]
%16 = alloca [22 x float]
%17 = alloca [22 x float]
%18 = alloca [22 x float]
%19 = alloca [22 x float]
%20 = bitcast [22 x float]* %15 to i8*
%21 = bitcast [22 x float]* %16 to i8*
%22 = bitcast [22 x float]* %17 to i8*
%23 = bitcast [22 x float]* %18 to i8*
%24 = bitcast [22 x float]* %19 to i8*
%25 = bitcast [22 x float]* %15 to <4 x float>*
store <4 x float> <float 0.000000e+00, float 0x3F847AE140000000, float 0x3F947AE140000000, float 0x3F9EB851E0000000>, <4 x float>* %25
%26 = getelementptr inbounds [22 x float], [22 x float]* %15, i64 0, i64 4
%27 = bitcast float* %26 to <4 x float>*
store <4 x float> <float 0x3FA99999A0000000, float 0x3FB3333340000000, float 0x3FB99999A0000000, float 0x3FC3333340000000>, <4 x float>* %27
%28 = getelementptr inbounds [22 x float], [22 x float]* %15, i64 0, i64 8
%29 = bitcast float* %28 to <4 x float>*
store <4 x float> <float 0x3FC99999A0000000, float 2.500000e-01, float 0x3FD3333340000000, float 0x3FD99999A0000000>, <4 x float>* %29
%30 = getelementptr inbounds [22 x float], [22 x float]* %15, i64 0, i64 12
%31 = bitcast float* %30 to <4 x float>*
store <4 x float> <float 5.000000e-01, float 7.500000e-01, float 1.000000e+00, float 1.500000e+00>, <4 x float>* %31
%32 = getelementptr inbounds [22 x float], [22 x float]* %15, i64 0, i64 16
%33 = bitcast float* %32 to <4 x float>*
store <4 x float> <float 2.000000e+00, float 3.000000e+00, float 4.000000e+00, float 5.000000e+00>, <4 x float>* %33
%34 = getelementptr inbounds [22 x float], [22 x float]* %15, i64 0, i64 20
store float 7.500000e+00, float* %34
%35 = getelementptr inbounds [22 x float], [22 x float]* %15, i64 0, i64 21
store float 1.000000e+01, float* %35
%36 = getelementptr inbounds [22 x float], [22 x float]* %16, i64 0, i64 0
%37 = bitcast [22 x float]* %16 to <4 x float>*
store <4 x float> <float 0x3FF170A3E0000000, float 0x3FF1810620000000, float 0x3FF2624DE0000000, float 0x3FF4A3D700000000>, <4 x float>* %37
%38 = getelementptr inbounds [22 x float], [22 x float]* %16, i64 0, i64 4
%39 = bitcast float* %38 to <4 x float>*
store <4 x float> <float 0x3FF72F1AA0000000, float 0x3FF88F5C20000000, float 0x3FF9D70A40000000, float 0x3FFE083120000000>, <4 x float>* %39
%40 = getelementptr inbounds [22 x float], [22 x float]* %16, i64 0, i64 8
%41 = bitcast float* %40 to <4 x float>*
store <4 x float> <float 0x40008D4FE0000000, float 0x4001A3D700000000, float 0x400272B020000000, float 0x40032F1AA0000000>, <4 x float>* %41
%42 = getelementptr inbounds [22 x float], [22 x float]* %16, i64 0, i64 12
%43 = bitcast float* %42 to <4 x float>*
store <4 x float> <float 0x4002D70A40000000, float 0x3FFFEB8520000000, float 0x3FF726E980000000, float 0x3FD51EB860000000>, <4 x float>* %43
%44 = getelementptr inbounds [22 x float], [22 x float]* %16, i64 0, i64 16
%45 = bitcast float* %44 to <4 x float>*
store <4 x float> <float 0xBFE072B020000000, float 0xBFEB22D0E0000000, float 0xBFE9604180000000, float 0xBFE7EF9DC0000000>, <4 x float>* %45
%46 = getelementptr inbounds [22 x float], [22 x float]* %16, i64 0, i64 20
store float 0xBFE53F7CE0000000, float* %46
%47 = getelementptr inbounds [22 x float], [22 x float]* %16, i64 0, i64 21
store float 0xBFE26E9780000000, float* %47
%48 = bitcast [22 x float]* %17 to <4 x float>*
store <4 x float> <float 8.650000e+02, float 8.650000e+02, float 8.650000e+02, float 9.080000e+02>, <4 x float>* %48
%49 = getelementptr inbounds [22 x float], [22 x float]* %17, i64 0, i64 4
%50 = bitcast float* %49 to <4 x float>*
store <4 x float> <float 1.054000e+03, float 1.086000e+03, float 1.032000e+03, float 8.780000e+02>, <4 x float>* %50
%51 = getelementptr inbounds [22 x float], [22 x float]* %17, i64 0, i64 8
%52 = bitcast float* %51 to <4 x float>*
store <4 x float> <float 7.480000e+02, float 6.540000e+02, float 5.870000e+02, float 5.030000e+02>, <4 x float>* %52
%53 = getelementptr inbounds [22 x float], [22 x float]* %17, i64 0, i64 12
%54 = bitcast float* %53 to <4 x float>*
store <4 x float> <float 4.570000e+02, float 4.100000e+02, float 4.000000e+02, float 4.000000e+02>, <4 x float>* %54
%55 = getelementptr inbounds [22 x float], [22 x float]* %17, i64 0, i64 16
%56 = bitcast float* %55 to <4 x float>*
store <4 x float> <float 4.000000e+02, float 4.000000e+02, float 4.000000e+02, float 4.000000e+02>, <4 x float>* %56
%57 = getelementptr inbounds [22 x float], [22 x float]* %17, i64 0, i64 20
store float 4.000000e+02, float* %57
%58 = getelementptr inbounds [22 x float], [22 x float]* %17, i64 0, i64 21
store float 4.000000e+02, float* %58
%59 = bitcast [22 x float]* %18 to <4 x float>*
store <4 x float> <float 0xBFF2F9DB20000000, float 0xBFF2F9DB20000000, float 0xBFF3810620000000, float 0xBFF45E3540000000>, <4 x float>* %59
%60 = getelementptr inbounds [22 x float], [22 x float]* %18, i64 0, i64 4
%61 = bitcast float* %60 to <4 x float>*
store <4 x float> <float 0xBFF5893740000000, float 0xBFF7893740000000, float 0xBFF9FBE760000000, float 0xBFFEE56040000000>, <4 x float>* %61
%62 = getelementptr inbounds [22 x float], [22 x float]* %18, i64 0, i64 8
%63 = bitcast float* %62 to <4 x float>*
store <4 x float> <float 0xC001810620000000, float 0xC0030C49C0000000, float 0xC00424DD20000000, float 0xC005418940000000>, <4 x float>* %63
%64 = getelementptr inbounds [22 x float], [22 x float]* %18, i64 0, i64 12
%65 = bitcast float* %64 to <4 x float>*
store <4 x float> <float 0xC0055A1CA0000000, float 0xC003353F80000000, float 0xBFFF47AE20000000, float 0xBFF0666660000000>, <4 x float>* %65
%66 = getelementptr inbounds [22 x float], [22 x float]* %18, i64 0, i64 16
store float 0xBFD322D0E0000000, float* %66
%67 = getelementptr inbounds [22 x float], [22 x float]* %18, i64 0, i64 17
%68 = bitcast float* %67 to i8*
%69 = tail call double @log(float 0x3FF458C940000000)
%70 = fmul double %69, 0xBFD3CE84C0000000
%71 = fptrunc double %70 to float
%72 = load float, float* %5
%73 = fcmp olt float %72, 8.650000e+02
br i1 %73, label %74, label %93
74: ; preds = %14
%75 = load float, float* %36
%76 = fpext float %75 to double
%77 = fdiv float %72, 8.650000e+02
%78 = tail call double @log(float %77)
%79 = load float, float* %6
%80 = load float, float* %5
%81 = fdiv float %80, 8.650000e+02
%82 = tail call double @log(float %81)
%83 = fmul double %82, 0x3FF2E147A0000000
%84 = fptrunc double %83 to float
%85 = tail call float @exp(float %84)
%86 = tail call float @llvm.fmuladd.f32(float %85, float 0x3FFE147AE0000000, float %79)
%87 = load float, float* %6
%88 = fadd float %87, 0x3FFE147AE0000000
%89 = fdiv float %86, %88
%90 = tail call double @log(float %89)
%91 = fmul double %90, 0xBFF2F9DB20000000
%92 = tail call double @llvm.fmuladd.f64(double %76, double %78, double %91)
br label %105
93: ; preds = %14
%94 = fcmp olt float %72, 1.100000e+03
%95 = load float, float* %36
%96 = fadd float %95, 0xBFF6644500000000
%97 = fpext float %96 to double
br i1 %94, label %98, label %102
98: ; preds = %93
%99 = fdiv float %72, 8.650000e+02
%100 = tail call double @log(float %99)
%101 = fmul double %100, %97
br label %105
102: ; preds = %93
%103 = tail call double @log(float 0x3FF458C940000000)
%104 = fmul double %103, %97
br label %105
105: ; preds = %98, %102, %74
%106 = phi double [ %92, %74 ], [ %101, %98 ], [ %104, %102 ]
%107 = fptrunc double %106 to float
%108 = load float, float* %6
%109 = fsub float %71, %107
%110 = tail call float @exp(float %109)
%111 = fmul float %108, %110
%112 = fadd float %111, 0x3FFE147AE0000000
br label %113
113: ; preds = %210, %105
%114 = phi float [ 8.650000e+02, %105 ], [ %212, %210 ]
%115 = phi i64 [ 0, %105 ], [ %208, %210 ]
%116 = phi float [ -1.000000e+00, %105 ], [ %207, %210 ]
%117 = load float, float* %4
%118 = fcmp olt float %117, %114
br i1 %118, label %119, label %139
119: ; preds = %113
%120 = getelementptr inbounds [22 x float], [22 x float]* %16, i64 0, i64 %115
%121 = load float, float* %120
%122 = fpext float %121 to double
%123 = fdiv float %117, %114
%124 = tail call double @log(float %123)
%125 = getelementptr inbounds [22 x float], [22 x float]* %18, i64 0, i64 %115
%126 = load float, float* %125
%127 = fpext float %126 to double
%128 = load float, float* %4
%129 = fdiv float %128, %114
%130 = tail call double @log(float %129)
%131 = fmul double %130, 0x3FF2E147A0000000
%132 = fptrunc double %131 to float
%133 = tail call float @exp(float %132)
%134 = tail call float @llvm.fmuladd.f32(float %133, float 0x3FFE147AE0000000, float %111)
%135 = fdiv float %134, %112
%136 = tail call double @log(float %135)
%137 = fmul double %136, %127
%138 = tail call double @llvm.fmuladd.f64(double %122, double %124, double %137)
br label %155
139: ; preds = %113
%140 = fcmp olt float %117, 1.100000e+03
%141 = getelementptr inbounds [22 x float], [22 x float]* %16, i64 0, i64 %115
%142 = load float, float* %141
%143 = getelementptr inbounds [22 x float], [22 x float]* %18, i64 0, i64 %115
%144 = load float, float* %143
%145 = tail call float @llvm.fmuladd.f32(float %144, float 0x3FF2E147A0000000, float %142)
%146 = fpext float %145 to double
br i1 %140, label %147, label %151
147: ; preds = %139
%148 = fdiv float %117, %114
%149 = tail call double @log(float %148)
%150 = fmul double %149, %146
br label %155
151: ; preds = %139
%152 = fdiv float 1.100000e+03, %114
%153 = tail call double @log(float %152)
%154 = fmul double %153, %146
br label %155
155: ; preds = %147, %151, %119
%156 = phi float [ %126, %119 ], [ %144, %147 ], [ %144, %151 ]
%157 = phi float [ %121, %119 ], [ %142, %147 ], [ %142, %151 ]
%158 = phi double [ %138, %119 ], [ %150, %147 ], [ %154, %151 ]
%159 = fptrunc double %158 to float
%160 = load float, float* %3
%161 = fcmp olt float %160, %114
br i1 %161, label %162, label %178
162: ; preds = %155
%163 = fpext float %157 to double
%164 = fdiv float %160, %114
%165 = tail call double @log(float %164)
%166 = fpext float %156 to double
%167 = load float, float* %3
%168 = fdiv float %167, %114
%169 = tail call double @log(float %168)
%170 = fmul double %169, 0x3FF2E147A0000000
%171 = fptrunc double %170 to float
%172 = tail call float @exp(float %171)
%173 = tail call float @llvm.fmuladd.f32(float %172, float 0x3FFE147AE0000000, float %111)
%174 = fdiv float %173, %112
%175 = tail call double @log(float %174)
%176 = fmul double %175, %166
%177 = tail call double @llvm.fmuladd.f64(double %163, double %165, double %176)
br label %190
178: ; preds = %155
%179 = fcmp olt float %160, 1.100000e+03
%180 = tail call float @llvm.fmuladd.f32(float %156, float 0x3FF2E147A0000000, float %157)
%181 = fpext float %180 to double
br i1 %179, label %182, label %186
182: ; preds = %178
%183 = fdiv float %160, %114
%184 = tail call double @log(float %183)
%185 = fmul double %184, %181
br label %190
186: ; preds = %178
%187 = fdiv float 1.100000e+03, %114
%188 = tail call double @log(float %187)
%189 = fmul double %188, %181
br label %190
190: ; preds = %182, %186, %162
%191 = phi double [ %177, %162 ], [ %185, %182 ], [ %189, %186 ]
%192 = fptrunc double %191 to float
%193 = fsub float %159, %192
%194 = tail call float @exp(float %193)
%195 = getelementptr inbounds [22 x float], [22 x float]* %19, i64 0, i64 %115
store float %194, float* %195
%196 = getelementptr inbounds [22 x float], [22 x float]* %15, i64 0, i64 %115
%197 = load float, float* %196
%198 = fpext float %197 to double
%199 = fdiv double 1.000000e+00, %198
%200 = load float, float* %13
%201 = fpext float %200 to double
%202 = fcmp ugt double %199, %201
br i1 %202, label %206, label %203
203: ; preds = %190
%204 = fcmp olt float %116, 0.000000e+00
br i1 %204, label %206, label %205
205: ; preds = %203
store float %116, float* %195
br label %206
206: ; preds = %203, %190, %205
%207 = phi float [ %116, %205 ], [ %116, %190 ], [ %194, %203 ]
%208 = add nuw nsw i64 %115, 1
%209 = icmp eq i64 %208, 22
br i1 %209, label %213, label %210
210: ; preds = %206
%211 = getelementptr inbounds [22 x float], [22 x float]* %17, i64 0, i64 %208
%212 = load float, float* %211
br label %113
213: ; preds = %206
%214 = load float, float* %35
%215 = fdiv float 1.000000e+00, %214
%216 = getelementptr inbounds [22 x float], [22 x float]* %19, i64 0, i64 21
%217 = load float, float* %216
%218 = sitofp i32 %2 to float
%219 = load float, float* %1
%220 = fmul float %219, %218
%221 = fdiv float 1.000000e+00, %220
%222 = icmp sgt i32 %2, 3
br i1 %222, label %223, label %317
223: ; preds = %213
%224 = lshr i32 %2, 1
%225 = zext i32 %224 to i64
br label %226
226: ; preds = %223, %312
%227 = phi i64 [ 1, %223 ], [ %315, %312 ]
%228 = phi i32 [ 21, %223 ], [ %264, %312 ]
%229 = phi float [ 0.000000e+00, %223 ], [ %263, %312 ]
%230 = phi float [ %217, %223 ], [ %262, %312 ]
%231 = phi float [ %217, %223 ], [ %261, %312 ]
%232 = phi float [ %215, %223 ], [ %260, %312 ]
%233 = phi float [ %215, %223 ], [ %259, %312 ]
%234 = trunc i64 %227 to i32
%235 = sitofp i32 %234 to float
%236 = fmul float %221, %235
%237 = fcmp ogt float %236, %232
br i1 %237, label %238, label %258
238: ; preds = %226
%239 = icmp sgt i32 %228, 0
%240 = sext i1 %239 to i32
%241 = add nsw i32 %228, %240
%242 = sext i32 %241 to i64
%243 = getelementptr inbounds [22 x float], [22 x float]* %15, i64 0, i64 %242
%244 = load float, float* %243
%245 = fcmp une float %244, 0.000000e+00
%246 = fdiv float 1.000000e+00, %244
%247 = select i1 %245, float %246, float 1.000000e+03
%248 = getelementptr inbounds [22 x float], [22 x float]* %19, i64 0, i64 %242
%249 = load float, float* %248
%250 = fcmp une float %247, %232
br i1 %250, label %251, label %258
251: ; preds = %238
%252 = fsub float %249, %230
%253 = fpext float %252 to double
%254 = fdiv float %247, %232
%255 = tail call double @log(float %254)
%256 = fdiv double %253, %255
%257 = fptrunc double %256 to float
br label %258
258: ; preds = %238, %251, %226
%259 = phi float [ %232, %251 ], [ %233, %226 ], [ %232, %238 ]
%260 = phi float [ %247, %251 ], [ %232, %226 ], [ %247, %238 ]
%261 = phi float [ %230, %251 ], [ %231, %226 ], [ %230, %238 ]
%262 = phi float [ %249, %251 ], [ %230, %226 ], [ %249, %238 ]
%263 = phi float [ %257, %251 ], [ %229, %226 ], [ 0.000000e+00, %238 ]
%264 = phi i32 [ %241, %251 ], [ %228, %226 ], [ %241, %238 ]
%265 = fpext float %261 to double
%266 = fpext float %263 to double
%267 = fdiv float %236, %259
%268 = tail call double @log(float %267)
%269 = tail call double @llvm.fmuladd.f64(double %266, double %268, double %265)
%270 = fptrunc double %269 to float
%271 = load float, float* %7
%272 = fcmp olt float %236, %271
br i1 %272, label %312, label %273
273: ; preds = %258
%274 = load float, float* %8
%275 = fcmp olt float %236, %274
br i1 %275, label %276, label %282
276: ; preds = %273
%277 = fdiv float %236, %271
%278 = tail call double @log(float %277)
%279 = fpext float %270 to double
%280 = fadd double %279, -1.000000e+00
%281 = fmul double %280, %278
br label %300
282: ; preds = %273
%283 = load float, float* %9
%284 = fcmp olt float %236, %283
br i1 %284, label %312, label %285
285: ; preds = %282
%286 = load float, float* %10
%287 = fcmp olt float %236, %286
br i1 %287, label %312, label %288
288: ; preds = %285
%289 = load float, float* %11
%290 = fcmp olt float %236, %289
br i1 %290, label %312, label %291
291: ; preds = %288
%292 = load float, float* %12
%293 = fcmp olt float %236, %292
br i1 %293, label %294, label %312
294: ; preds = %291
%295 = fpext float %270 to double
%296 = fdiv float %236, %289
%297 = tail call double @log(float %296)
%298 = fsub double 1.000000e+00, %295
%299 = fmul double %298, %297
br label %300
300: ; preds = %294, %276
%301 = phi float* [ %8, %276 ], [ %12, %294 ]
%302 = phi float* [ %7, %276 ], [ %11, %294 ]
%303 = phi double [ %281, %276 ], [ %299, %294 ]
%304 = phi double [ 1.000000e+00, %276 ], [ %295, %294 ]
%305 = load float, float* %301
%306 = load float, float* %302
%307 = fdiv float %305, %306
%308 = tail call double @log(float %307)
%309 = fdiv double %303, %308
%310 = fadd double %309, %304
%311 = fptrunc double %310 to float
br label %312
312: ; preds = %300, %291, %288, %285, %282, %258
%313 = phi float [ 1.000000e+00, %258 ], [ %270, %282 ], [ %270, %285 ], [ %270, %288 ], [ 1.000000e+00, %291 ], [ %311, %300 ]
%314 = getelementptr inbounds float, float* %0, i64 %227
store float %313, float* %314
%315 = add nuw nsw i64 %227, 1
%316 = icmp eq i64 %315, %225
br i1 %316, label %317, label %226
317: ; preds = %312, %213
ret void
}