#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 getCoolingRate(int, int, double const *, int const *, int const *,
                      double const *, double const, double const *, int const,
                      double const, double **, double **, double *,
                      double const *);
double const log(double const);
double ortho_para_ratio(double const);
double pow(double const, double);
double finestruct_cooling_CA(const double T, const int slabInd,
                             const double ymolThis, const double elecDens,
                             const double HDens, const double H2Dens,
                             const double HpDens, const double *dx,
                             double **popDensFsThis, double **coolingFsThis) {
  const double weights[3 + 1] = {0.0, 1.0, 3.0, 5.0};
  const int lower[3 + 1] = {0, 1, 2, 1};
  const int upper[3 + 1] = {0, 2, 3, 3};
  const double energy[3 + 1] = {0.0, 0e0, 24.0, 63.0};
  const double EinsA[3 + 1] = {0.0, 7.9e-8, 2.7e-7, 2.0e-14};
  double col_e[3 + 1];
  const double col_Hp[3 + 1] = {0.0, 1.2e-9 * pow(T / 3e2, 0.24),
                                5.4e-9 * pow(T / 3e2, 0.35),
                                8.0e-10 * pow(T / 3e2, 0.57)};
  const double col_H[3 + 1] = {0.0, 1.3e-10 * pow(T, 0.045),
                               7.8e-11 * pow(T, 0.035),
                               2.0e-10 * pow(T, 0.084)};
  double col_paraH2[3 + 1];
  double col_orthoH2[3 + 1];
  int i;
  double CulArr[3 + 1], cool;
  double fraction_ortho, fraction_para;
  if (T < 1000e0) {
    col_e[1] =
        exp(-0.925141e1 - 0.773782e0 * log(T) + 0.361184e0 * pow(log(T), 2e0) -
            0.150892e-1 * pow(log(T), 3e0) - 0.656325e-3 * pow(log(T), 4e0));
    col_e[2] =
        exp(-0.743870e1 - 0.574430e0 * log(T) + 0.358264e0 * pow(log(T), 2e0) -
            0.418166e-1 * pow(log(T), 3e0) - 0.235272e-2 * pow(log(T), 4e0));
    col_e[3] =
        exp(-0.769735e1 - 0.130743e1 * log(T) + 0.697638e0 * pow(log(T), 2e0) -
            0.111338e0 * pow(log(T), 3e0) + 0.705277e-2 * pow(log(T), 4e0));
  }
  if (T >= 1000e0) {
    col_e[1] =
        exp(0.444600e3 - 0.227913e3 * log(T) + 0.425952e2 * pow(log(T), 2e0) -
            0.347620e1 * pow(log(T), 3e0) + 0.105085e0 * pow(log(T), 4e0));
    col_e[2] =
        exp(0.386186e3 - 0.202192e3 * log(T) + 0.385049e2 * pow(log(T), 2e0) -
            0.319268e1 * pow(log(T), 3e0) + 0.978573e-1 * pow(log(T), 4e0));
    col_e[3] =
        exp(0.350609e3 - 0.187474e3 * log(T) + 0.361803e2 * pow(log(T), 2e0) -
            0.303238e1 * pow(log(T), 3e0) + 0.938138e-1 * pow(log(T), 4e0));
  }
  if (T < 150e0) {
    col_paraH2[1] = 1.61e-10 * pow(T, -0.19);
    col_orthoH2[1] = 1.05e-10 * pow(T, -0.08);
    col_paraH2[2] = 2.09e-10 * pow(T, -0.04);
    col_paraH2[3] = 1.18e-10 * pow(T, -0.07);
  }
  if (T >= 150e0 && T <= 1000) {
    col_paraH2[1] = 3.50e-11 * pow(T, 0.13);
    col_orthoH2[1] = 3.72e-11 * pow(T, 0.12);
    col_paraH2[2] = 6.71e-11 * pow(T, 0.20);
    col_paraH2[3] = 4.22e-11 * pow(T, 0.13);
  }
  if (T > 1000e0) {
    col_paraH2[1] = 8.10e-11;
    col_orthoH2[1] = 8.50e-11;
    col_paraH2[2] = 2.61e-10;
    col_paraH2[3] = 1.03e-10;
  }
  col_orthoH2[2] = 4.50e-11 * pow(T, 0.27);
  col_orthoH2[3] = 3.10e-11 * pow(T, 0.18);
  fraction_para = ortho_para_ratio(T);
  fraction_ortho = 1e0 - fraction_para;
  for (i = 1; i <= 3; i++)
    CulArr[i] = elecDens * col_e[i] + HpDens * col_Hp[i] + HDens * col_H[i] +
                H2Dens * (fraction_para * col_paraH2[i] +
                          fraction_ortho * col_orthoH2[i]);
  cool = getCoolingRate(3, 3, weights, lower, upper, energy, T, EinsA, slabInd,
                        ymolThis, popDensFsThis, coolingFsThis, CulArr, dx);
  return cool;
}


x86 assembly (clang, -O0):
<finestruct_cooling_CA>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %rbx
sub    $0x288,%rsp
movsd  %xmm0,-0x20(%rbp)
mov    %edi,-0x24(%rbp)
movsd  %xmm1,-0x30(%rbp)
movsd  %xmm2,-0x38(%rbp)
movsd  %xmm3,-0x40(%rbp)
movsd  %xmm4,-0x48(%rbp)
movsd  %xmm5,-0x50(%rbp)
mov    %rsi,-0x58(%rbp)
mov    %rdx,-0x60(%rbp)
mov    %rcx,-0x68(%rbp)
mov    0x10ac(%rip),%rax
mov    %rax,-0x90(%rbp)
mov    0x10a6(%rip),%rax
mov    %rax,-0x88(%rbp)
mov    0x10a0(%rip),%rax
mov    %rax,-0x80(%rbp)
mov    0x109d(%rip),%rax
mov    %rax,-0x78(%rbp)
mov    0x10da(%rip),%rax
mov    %rax,-0xa0(%rbp)
mov    0x10d4(%rip),%rax
mov    %rax,-0x98(%rbp)
mov    0x10ce(%rip),%rax
mov    %rax,-0xb0(%rbp)
mov    0x10c8(%rip),%rax
mov    %rax,-0xa8(%rbp)
mov    0x1062(%rip),%rax
mov    %rax,-0xd0(%rbp)
mov    0x105c(%rip),%rax
mov    %rax,-0xc8(%rbp)
mov    0x1056(%rip),%rax
mov    %rax,-0xc0(%rbp)
mov    0x1050(%rip),%rax
mov    %rax,-0xb8(%rbp)
mov    0x104a(%rip),%rax
mov    %rax,-0xf0(%rbp)
mov    0x1044(%rip),%rax
mov    %rax,-0xe8(%rbp)
mov    0x103e(%rip),%rax
mov    %rax,-0xe0(%rbp)
mov    0x1038(%rip),%rax
mov    %rax,-0xd8(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0xdc9(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xddd(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xdc5(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0xd94(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xd98(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xd80(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0xd5f(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xd4b(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xd33(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0xd07(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xcef(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0xcce(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xcb6(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0xc95(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xc7d(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  0xc61(%rip),%xmm0
ucomisd -0x20(%rbp),%xmm0
jbe    1626 <finestruct_cooling_CA+0x4d6>
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0xd34(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd30(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x220(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0xcb2(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x220(%rbp),%xmm1
ff
movsd  0xced(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x218(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0xc6b(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x218(%rbp),%xmm1
ff
movsd  0xcae(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x210(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0xc24(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x210(%rbp),%xmm1
ff
movsd  0xc6f(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1040 <exp@plt>
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0xc38(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc34(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x208(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0xbde(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x208(%rbp),%xmm1
ff
movsd  0xbf1(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x200(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0xb97(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x200(%rbp),%xmm1
ff
movsd  0xbb2(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1f8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0xb50(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x1f8(%rbp),%xmm1
ff
movsd  0xb73(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1040 <exp@plt>
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0xb3c(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb38(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1f0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0xb0a(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x1f0(%rbp),%xmm1
ff
movsd  0xaed(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0xac3(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x1e8(%rbp),%xmm1
ff
movsd  0xaa6(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0xa7c(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x1e0(%rbp),%xmm1
ff
movsd  0xa5f(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1040 <exp@plt>
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0x9cd(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     18b9 <finestruct_cooling_CA+0x769>
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0xb19(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb15(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x268(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0xa1f(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x268(%rbp),%xmm1
ff
movsd  0xad2(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x260(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0x9d8(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x260(%rbp),%xmm1
ff
movsd  0xa93(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x258(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0x991(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x258(%rbp),%xmm1
ff
movsd  0xa54(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1040 <exp@plt>
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0xa1d(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa19(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x250(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0x94b(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x250(%rbp),%xmm1
ff
movsd  0x9d6(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x248(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0x904(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x248(%rbp),%xmm1
ff
movsd  0x997(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x240(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0x8bd(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x240(%rbp),%xmm1
ff
movsd  0x958(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1040 <exp@plt>
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0x921(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x91d(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x238(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0x877(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x238(%rbp),%xmm1
ff
movsd  0x8da(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x230(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0x830(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x230(%rbp),%xmm1
ff
movsd  0x89b(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x228(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1060 <log@plt>
movsd  0x7e9(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x228(%rbp),%xmm1
ff
movsd  0x85c(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1040 <exp@plt>
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  0x8b7(%rip),%xmm0
ucomisd -0x20(%rbp),%xmm0
jbe    1970 <finestruct_cooling_CA+0x820>
movsd  -0x20(%rbp),%xmm0
movsd  0x8df(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x8c7(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0x8a6(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x88e(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0x86d(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x855(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0x834(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x81c(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0x7fb(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1a3e <finestruct_cooling_CA+0x8ee>
movsd  0x671(%rip),%xmm0
ucomisd -0x20(%rbp),%xmm0
jb     1a3e <finestruct_cooling_CA+0x8ee>
movsd  -0x20(%rbp),%xmm0
movsd  0x821(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x839(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0x818(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x800(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0x7df(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x7c7(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0x7a6(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x78e(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0x5b5(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1a95 <finestruct_cooling_CA+0x945>
movsd  0x7b3(%rip),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  0x79b(%rip),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  0x783(%rip),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  0x76b(%rip),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0x796(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x77e(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0x75d(%rip),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x745(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1030 <ortho_para_ratio@plt>
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  0x717(%rip),%xmm0
subsd  -0x1d8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d0(%rbp)
ff
movl   $0x1,-0x194(%rbp)
cmpl   $0x3,-0x194(%rbp)
jg     1be0 <finestruct_cooling_CA+0xa90>
movsd  -0x38(%rbp),%xmm0
movslq -0x194(%rbp),%rax
movsd  -0x110(%rbp,%rax,8),%xmm2
ff ff
movsd  -0x50(%rbp),%xmm1
movslq -0x194(%rbp),%rax
mulsd  -0x130(%rbp,%rax,8),%xmm1
ff ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm1
movslq -0x194(%rbp),%rax
movsd  -0x150(%rbp,%rax,8),%xmm2
ff ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x48(%rbp),%xmm0
movsd  -0x1d8(%rbp),%xmm2
ff
movslq -0x194(%rbp),%rax
movsd  -0x170(%rbp,%rax,8),%xmm4
ff ff
movsd  -0x1d0(%rbp),%xmm3
ff
movslq -0x194(%rbp),%rax
mulsd  -0x190(%rbp,%rax,8),%xmm3
ff ff
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movslq -0x194(%rbp),%rax
movsd  %xmm0,-0x1c0(%rbp,%rax,8)
ff ff
mov    -0x194(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x194(%rbp)
jmp    1b1b <finestruct_cooling_CA+0x9cb>
lea    -0x90(%rbp),%rdx
lea    -0xa0(%rbp),%rcx
lea    -0xb0(%rbp),%r8
lea    -0xd0(%rbp),%r9
movsd  -0x20(%rbp),%xmm0
lea    -0xf0(%rbp),%r15
mov    -0x24(%rbp),%r14d
movsd  -0x30(%rbp),%xmm1
mov    -0x60(%rbp),%rbx
mov    -0x68(%rbp),%r11
lea    -0x1c0(%rbp),%r10
mov    -0x58(%rbp),%rax
mov    $0x3,%esi
mov    %esi,%edi
mov    %r15,(%rsp)
mov    %r14d,0x8(%rsp)
mov    %rbx,0x10(%rsp)
mov    %r11,0x18(%rsp)
mov    %r10,0x20(%rsp)
mov    %rax,0x28(%rsp)
call   1050 <getCoolingRate@plt>
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  -0x1c8(%rbp),%xmm0
ff
add    $0x288,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<finestruct_cooling_CA>:
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x190,%rsp
mov    %rcx,%r15
mov    %rdx,%r14
mov    %rsi,%r13
movaps %xmm5,0xc0(%rsp)
movaps %xmm4,0xe0(%rsp)
movaps %xmm3,0xd0(%rsp)
movaps %xmm2,0xb0(%rsp)
movsd  %xmm1,0xa8(%rsp)
mov    %edi,%r12d
movsd  %xmm0,0x8(%rsp)
movaps 0x10ce(%rip),%xmm1
movaps %xmm1,0x180(%rsp)
movaps 0x10af(%rip),%xmm1
movaps %xmm1,0x170(%rsp)
movaps 0x1080(%rip),%xmm1
movaps %xmm1,0x100(%rsp)
movaps 0x1081(%rip),%xmm1
movaps %xmm1,0xf0(%rsp)
movaps 0x10b2(%rip),%xmm1
movaps %xmm1,0x160(%rsp)
movaps 0x1093(%rip),%xmm1
movaps %xmm1,0x150(%rsp)
movaps 0x10b4(%rip),%xmm1
movaps %xmm1,0x140(%rsp)
movaps 0x1095(%rip),%xmm1
movaps %xmm1,0x130(%rsp)
divsd  0xde5(%rip),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0xddf(%rip),%xmm1
call   1070 <pow@plt>
movapd %xmm0,0x90(%rsp)
movsd  0xdd1(%rip),%xmm1
movsd  0x10(%rsp),%xmm0
call   1070 <pow@plt>
movaps %xmm0,0x70(%rsp)
movsd  0xdc1(%rip),%xmm1
movsd  0x10(%rsp),%xmm0
call   1070 <pow@plt>
movsd  %xmm0,0x38(%rsp)
movsd  0xdb0(%rip),%xmm1
movsd  0x8(%rsp),%xmm0
call   1070 <pow@plt>
movaps %xmm0,0x80(%rsp)
movsd  0xd9d(%rip),%xmm1
movsd  0x8(%rsp),%xmm0
call   1070 <pow@plt>
movaps %xmm0,0x60(%rsp)
movsd  0xd8d(%rip),%xmm1
movsd  0x8(%rsp),%xmm0
call   1070 <pow@plt>
movsd  0x8(%rsp),%xmm2
movsd  %xmm0,0x30(%rsp)
movsd  0xd76(%rip),%xmm0
ucomisd %xmm2,%xmm0
jbe    14d2 <finestruct_cooling_CA+0x382>
movapd %xmm2,%xmm0
call   1060 <log@plt>
mulsd  0xd63(%rip),%xmm0
addsd  0xd63(%rip),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
mulsd  %xmm0,%xmm0
mulsd  0xd4e(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
movsd  0xd37(%rip),%xmm1
call   1070 <pow@plt>
mulsd  0xd32(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
movsd  0xd1b(%rip),%xmm1
call   1070 <pow@plt>
mulsd  0xd16(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
call   1040 <exp@plt>
movapd %xmm0,0x50(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
mulsd  0xcfa(%rip),%xmm0
addsd  0xcfa(%rip),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
mulsd  %xmm0,%xmm0
mulsd  0xce5(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
movsd  0xc96(%rip),%xmm1
call   1070 <pow@plt>
mulsd  0xcc1(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
movsd  0xc7a(%rip),%xmm1
call   1070 <pow@plt>
mulsd  0xc9d(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
call   1040 <exp@plt>
movapd %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
mulsd  0xc81(%rip),%xmm0
addsd  0xc81(%rip),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
mulsd  %xmm0,%xmm0
mulsd  0xc6c(%rip),%xmm0
addsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
movsd  0xbf5(%rip),%xmm1
call   1070 <pow@plt>
mulsd  0xc48(%rip),%xmm0
addsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
movsd  0xbd9(%rip),%xmm1
call   1070 <pow@plt>
mulsd  0xc24(%rip),%xmm0
addsd  0x28(%rsp),%xmm0
call   1040 <exp@plt>
movsd  0x8(%rsp),%xmm2
movsd  %xmm0,0x28(%rsp)
movaps 0x50(%rsp),%xmm0
unpcklpd 0x10(%rsp),%xmm0
movaps %xmm0,0x50(%rsp)
ucomisd 0xb6d(%rip),%xmm2
jae    14e0 <finestruct_cooling_CA+0x390>
jmp    16d7 <finestruct_cooling_CA+0x587>
ucomisd 0xb5e(%rip),%xmm2
jb     16d7 <finestruct_cooling_CA+0x587>
movapd %xmm2,%xmm0
call   1060 <log@plt>
mulsd  0xbd7(%rip),%xmm0
addsd  0xbd7(%rip),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
mulsd  %xmm0,%xmm0
mulsd  0xbc2(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
movsd  0xb23(%rip),%xmm1
call   1070 <pow@plt>
mulsd  0xb9e(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
movsd  0xb07(%rip),%xmm1
call   1070 <pow@plt>
mulsd  0xb7a(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
call   1040 <exp@plt>
movapd %xmm0,0x50(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
mulsd  0xb5e(%rip),%xmm0
addsd  0xb5e(%rip),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
mulsd  %xmm0,%xmm0
mulsd  0xb49(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
movsd  0xa82(%rip),%xmm1
call   1070 <pow@plt>
mulsd  0xb25(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
movsd  0xa66(%rip),%xmm1
call   1070 <pow@plt>
mulsd  0xb01(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
call   1040 <exp@plt>
movapd %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
mulsd  0xae5(%rip),%xmm0
addsd  0xae5(%rip),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
mulsd  %xmm0,%xmm0
mulsd  0xad0(%rip),%xmm0
addsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
movsd  0x9e1(%rip),%xmm1
call   1070 <pow@plt>
mulsd  0xaac(%rip),%xmm0
addsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log@plt>
movsd  0x9c5(%rip),%xmm1
call   1070 <pow@plt>
mulsd  0xa88(%rip),%xmm0
addsd  0x28(%rsp),%xmm0
call   1040 <exp@plt>
movsd  0x8(%rsp),%xmm2
movsd  %xmm0,0x28(%rsp)
movaps 0x50(%rsp),%xmm0
unpcklpd 0x10(%rsp),%xmm0
movaps %xmm0,0x50(%rsp)
movsd  0xa61(%rip),%xmm0
ucomisd %xmm2,%xmm0
jbe    176e <finestruct_cooling_CA+0x61e>
movsd  0xa57(%rip),%xmm1
movapd %xmm2,%xmm0
call   1070 <pow@plt>
movapd %xmm0,0x10(%rsp)
movsd  0xa48(%rip),%xmm1
movsd  0x8(%rsp),%xmm0
call   1070 <pow@plt>
movaps %xmm0,0x40(%rsp)
movsd  0xa38(%rip),%xmm1
movsd  0x8(%rsp),%xmm0
call   1070 <pow@plt>
movapd 0x10(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
mulpd  0xa83(%rip),%xmm1
movapd %xmm1,0x10(%rsp)
movsd  0xa15(%rip),%xmm1
movsd  0x8(%rsp),%xmm0
call   1070 <pow@plt>
movsd  0x8(%rsp),%xmm2
movapd %xmm0,%xmm1
unpcklpd 0x40(%rsp),%xmm1
mulpd  0xa62(%rip),%xmm1
ucomisd 0x9ca(%rip),%xmm2
jb     1813 <finestruct_cooling_CA+0x6c3>
movsd  0x8b4(%rip),%xmm0
ucomisd %xmm2,%xmm0
jb     1813 <finestruct_cooling_CA+0x6c3>
movsd  0x9d2(%rip),%xmm1
movapd %xmm2,%xmm0
call   1070 <pow@plt>
movapd %xmm0,0x10(%rsp)
movsd  0x9c3(%rip),%xmm1
movsd  0x8(%rsp),%xmm0
call   1070 <pow@plt>
movaps %xmm0,0x40(%rsp)
movsd  0x9b3(%rip),%xmm1
movsd  0x8(%rsp),%xmm0
call   1070 <pow@plt>
movapd 0x10(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
mulpd  0x9fe(%rip),%xmm1
movapd %xmm1,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
movsd  0x972(%rip),%xmm1
call   1070 <pow@plt>
movsd  0x8(%rsp),%xmm2
movapd %xmm0,%xmm1
unpcklpd 0x40(%rsp),%xmm1
mulpd  0x9dd(%rip),%xmm1
ucomisd 0x81d(%rip),%xmm2
jbe    182b <finestruct_cooling_CA+0x6db>
movapd 0x9db(%rip),%xmm0
movapd %xmm0,0x10(%rsp)
ja     1835 <finestruct_cooling_CA+0x6e5>
movapd %xmm1,0x40(%rsp)
jmp    1843 <finestruct_cooling_CA+0x6f3>
movapd 0x9d3(%rip),%xmm0
movapd %xmm0,0x40(%rsp)
movsd  0x30(%rsp),%xmm0
mulsd  0x92f(%rip),%xmm0
movsd  %xmm0,0x30(%rsp)
movapd 0x80(%rsp),%xmm0
unpcklpd 0x60(%rsp),%xmm0
mulpd  0x9b2(%rip),%xmm0
movapd %xmm0,0x80(%rsp)
movsd  0x38(%rsp),%xmm0
mulsd  0x903(%rip),%xmm0
movsd  %xmm0,0x38(%rsp)
movapd 0x90(%rsp),%xmm0
unpcklpd 0x70(%rsp),%xmm0
mulpd  0x98e(%rip),%xmm0
movapd %xmm0,0x90(%rsp)
movsd  0x8dd(%rip),%xmm1
movapd %xmm2,%xmm0
call   1070 <pow@plt>
mulsd  0x8d4(%rip),%xmm0
movapd %xmm0,0x60(%rsp)
movsd  0x8ce(%rip),%xmm1
movsd  0x8(%rsp),%xmm0
call   1070 <pow@plt>
mulsd  0x8c3(%rip),%xmm0
movsd  %xmm0,0x70(%rsp)
movsd  0x8(%rsp),%xmm0
call   1030 <ortho_para_ratio@plt>
movapd 0xc0(%rsp),%xmm8
movapd %xmm8,%xmm1
unpcklpd %xmm8,%xmm1
mulpd  0x90(%rsp),%xmm1
movapd 0xb0(%rsp),%xmm9
movapd %xmm9,%xmm2
unpcklpd %xmm9,%xmm2
mulpd  0x50(%rsp),%xmm2
addpd  %xmm1,%xmm2
movapd 0xd0(%rsp),%xmm6
movapd %xmm6,%xmm3
unpcklpd %xmm6,%xmm3
mulpd  0x80(%rsp),%xmm3
movsd  0x85d(%rip),%xmm1
subsd  %xmm0,%xmm1
addpd  %xmm2,%xmm3
movapd 0x40(%rsp),%xmm7
movapd %xmm7,%xmm2
shufpd $0x1,0x60(%rsp),%xmm2
movapd %xmm1,%xmm4
unpcklpd %xmm1,%xmm4
mulpd  %xmm4,%xmm2
movapd %xmm0,%xmm4
unpcklpd %xmm0,%xmm4
mulpd  0x10(%rsp),%xmm4
addpd  %xmm2,%xmm4
movapd 0xe0(%rsp),%xmm5
movapd %xmm5,%xmm2
unpcklpd %xmm5,%xmm2
mulpd  %xmm4,%xmm2
addpd  %xmm3,%xmm2
movupd %xmm2,0x118(%rsp)
movsd  0x38(%rsp),%xmm3
mulsd  %xmm8,%xmm3
movsd  0x28(%rsp),%xmm2
mulsd  %xmm9,%xmm2
addsd  %xmm3,%xmm2
movsd  0x30(%rsp),%xmm3
mulsd  %xmm6,%xmm3
addsd  %xmm2,%xmm3
mulsd  0x70(%rsp),%xmm1
mulsd  %xmm7,%xmm0
addsd  %xmm1,%xmm0
mulsd  %xmm5,%xmm0
addsd  %xmm3,%xmm0
movsd  %xmm0,0x128(%rsp)
lea    0x110(%rsp),%rax
lea    0x130(%rsp),%rbx
lea    0x170(%rsp),%rdx
lea    0x100(%rsp),%rcx
lea    0xf0(%rsp),%r8
lea    0x150(%rsp),%r9
mov    $0x3,%edi
mov    $0x3,%esi
movsd  0x8(%rsp),%xmm0
movsd  0xa8(%rsp),%xmm1
push   %r13
push   %rax
push   %r15
push   %r14
push   %r12
push   %rbx
call   1050 <getCoolingRate@plt>
add    $0x1c0,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@__const.finestruct_cooling_CA.weights = [4 x double] [double 0.000000e+00, double 1.000000e+00, double 3.000000e+00, double 5.000000e+00]
@__const.finestruct_cooling_CA.lower = [4 x i32] [i32 0, i32 1, i32 2, i32 1]
@__const.finestruct_cooling_CA.upper = [4 x i32] [i32 0, i32 2, i32 3, i32 3]
@__const.finestruct_cooling_CA.energy = [4 x double] [double 0.000000e+00, double 0.000000e+00, double 2.400000e+01, double 6.300000e+01]
@__const.finestruct_cooling_CA.EinsA = [4 x double] [double 0.000000e+00, double 7.900000e-08, double 2.700000e-07, double 2.000000e-14]
define double @finestruct_cooling_CA(double %0, i32 %1, double %2, double %3, double %4, double %5, double %6, double* %7, double** %8, double** %9) {
%11 = alloca double
%12 = alloca i32
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double*
%19 = alloca double**
%20 = alloca double**
%21 = alloca [4 x double]
%22 = alloca [4 x i32]
%23 = alloca [4 x i32]
%24 = alloca [4 x double]
%25 = alloca [4 x double]
%26 = alloca [4 x double]
%27 = alloca [4 x double]
%28 = alloca [4 x double]
%29 = alloca [4 x double]
%30 = alloca [4 x double]
%31 = alloca i32
%32 = alloca [4 x double]
%33 = alloca double
%34 = alloca double
%35 = alloca double
store double %0, double* %11
store i32 %1, i32* %12
store double %2, double* %13
store double %3, double* %14
store double %4, double* %15
store double %5, double* %16
store double %6, double* %17
store double* %7, double** %18
store double** %8, double*** %19
store double** %9, double*** %20
%36 = bitcast [4 x double]* %21 to i8*
%37 = bitcast [4 x i32]* %22 to i8*
%38 = bitcast [4 x i32]* %23 to i8*
%39 = bitcast [4 x double]* %24 to i8*
%40 = bitcast [4 x double]* %25 to i8*
%41 = getelementptr inbounds [4 x double], [4 x double]* %27, i64 0, i64 0
store double 0.000000e+00, double* %41
%42 = getelementptr inbounds double, double* %41, i64 1
%43 = load double, double* %11
%44 = fdiv double %43, 3.000000e+02
%45 = call double @pow(double %44, double 2.400000e-01)
%46 = fmul double 1.200000e-09, %45
store double %46, double* %42
%47 = getelementptr inbounds double, double* %42, i64 1
%48 = load double, double* %11
%49 = fdiv double %48, 3.000000e+02
%50 = call double @pow(double %49, double 3.500000e-01)
%51 = fmul double 5.400000e-09, %50
store double %51, double* %47
%52 = getelementptr inbounds double, double* %47, i64 1
%53 = load double, double* %11
%54 = fdiv double %53, 3.000000e+02
%55 = call double @pow(double %54, double 5.700000e-01)
%56 = fmul double 8.000000e-10, %55
store double %56, double* %52
%57 = getelementptr inbounds [4 x double], [4 x double]* %28, i64 0, i64 0
store double 0.000000e+00, double* %57
%58 = getelementptr inbounds double, double* %57, i64 1
%59 = load double, double* %11
%60 = call double @pow(double %59, double 4.500000e-02)
%61 = fmul double 1.300000e-10, %60
store double %61, double* %58
%62 = getelementptr inbounds double, double* %58, i64 1
%63 = load double, double* %11
%64 = call double @pow(double %63, double 3.500000e-02)
%65 = fmul double 7.800000e-11, %64
store double %65, double* %62
%66 = getelementptr inbounds double, double* %62, i64 1
%67 = load double, double* %11
%68 = call double @pow(double %67, double 8.400000e-02)
%69 = fmul double 2.000000e-10, %68
store double %69, double* %66
%70 = load double, double* %11
%71 = fcmp olt double %70, 1.000000e+03
br i1 %71, label %72, label %124
72: ; preds = %10
%73 = load double, double* %11
%74 = call double @log(double %73)
%75 = call double @llvm.fmuladd.f64(double 0xBFE8C2D27807789A, double %74, double 0xC02280B8CFBFC654)
%76 = load double, double* %11
%77 = call double @log(double %76)
%78 = call double @pow(double %77, double 2.000000e+00)
%79 = call double @llvm.fmuladd.f64(double 3.611840e-01, double %78, double %75)
%80 = load double, double* %11
%81 = call double @log(double %80)
%82 = call double @pow(double %81, double 3.000000e+00)
%83 = call double @llvm.fmuladd.f64(double -1.508920e-02, double %82, double %79)
%84 = load double, double* %11
%85 = call double @log(double %84)
%86 = call double @pow(double %85, double 4.000000e+00)
%87 = call double @llvm.fmuladd.f64(double -6.563250e-04, double %86, double %83)
%88 = call double @exp(double %87)
%89 = getelementptr inbounds [4 x double], [4 x double]* %26, i64 0, i64 1
store double %88, double* %89
%90 = load double, double* %11
%91 = call double @log(double %90)
%92 = call double @llvm.fmuladd.f64(double -5.744300e-01, double %91, double -7.438700e+00)
%93 = load double, double* %11
%94 = call double @log(double %93)
%95 = call double @pow(double %94, double 2.000000e+00)
%96 = call double @llvm.fmuladd.f64(double 3.582640e-01, double %95, double %92)
%97 = load double, double* %11
%98 = call double @log(double %97)
%99 = call double @pow(double %98, double 3.000000e+00)
%100 = call double @llvm.fmuladd.f64(double -4.181660e-02, double %99, double %96)
%101 = load double, double* %11
%102 = call double @log(double %101)
%103 = call double @pow(double %102, double 4.000000e+00)
%104 = call double @llvm.fmuladd.f64(double -2.352720e-03, double %103, double %100)
%105 = call double @exp(double %104)
%106 = getelementptr inbounds [4 x double], [4 x double]* %26, i64 0, i64 2
store double %105, double* %106
%107 = load double, double* %11
%108 = call double @log(double %107)
%109 = call double @llvm.fmuladd.f64(double -1.307430e+00, double %108, double -7.697350e+00)
%110 = load double, double* %11
%111 = call double @log(double %110)
%112 = call double @pow(double %111, double 2.000000e+00)
%113 = call double @llvm.fmuladd.f64(double 6.976380e-01, double %112, double %109)
%114 = load double, double* %11
%115 = call double @log(double %114)
%116 = call double @pow(double %115, double 3.000000e+00)
%117 = call double @llvm.fmuladd.f64(double -1.113380e-01, double %116, double %113)
%118 = load double, double* %11
%119 = call double @log(double %118)
%120 = call double @pow(double %119, double 4.000000e+00)
%121 = call double @llvm.fmuladd.f64(double 7.052770e-03, double %120, double %117)
%122 = call double @exp(double %121)
%123 = getelementptr inbounds [4 x double], [4 x double]* %26, i64 0, i64 3
store double %122, double* %123
br label %124
124: ; preds = %72, %10
%125 = load double, double* %11
%126 = fcmp oge double %125, 1.000000e+03
br i1 %126, label %127, label %179
127: ; preds = %124
%128 = load double, double* %11
%129 = call double @log(double %128)
%130 = call double @llvm.fmuladd.f64(double -2.279130e+02, double %129, double 4.446000e+02)
%131 = load double, double* %11
%132 = call double @log(double %131)
%133 = call double @pow(double %132, double 2.000000e+00)
%134 = call double @llvm.fmuladd.f64(double 4.259520e+01, double %133, double %130)
%135 = load double, double* %11
%136 = call double @log(double %135)
%137 = call double @pow(double %136, double 3.000000e+00)
%138 = call double @llvm.fmuladd.f64(double -3.476200e+00, double %137, double %134)
%139 = load double, double* %11
%140 = call double @log(double %139)
%141 = call double @pow(double %140, double 4.000000e+00)
%142 = call double @llvm.fmuladd.f64(double 1.050850e-01, double %141, double %138)
%143 = call double @exp(double %142)
%144 = getelementptr inbounds [4 x double], [4 x double]* %26, i64 0, i64 1
store double %143, double* %144
%145 = load double, double* %11
%146 = call double @log(double %145)
%147 = call double @llvm.fmuladd.f64(double -2.021920e+02, double %146, double 3.861860e+02)
%148 = load double, double* %11
%149 = call double @log(double %148)
%150 = call double @pow(double %149, double 2.000000e+00)
%151 = call double @llvm.fmuladd.f64(double 3.850490e+01, double %150, double %147)
%152 = load double, double* %11
%153 = call double @log(double %152)
%154 = call double @pow(double %153, double 3.000000e+00)
%155 = call double @llvm.fmuladd.f64(double -3.192680e+00, double %154, double %151)
%156 = load double, double* %11
%157 = call double @log(double %156)
%158 = call double @pow(double %157, double 4.000000e+00)
%159 = call double @llvm.fmuladd.f64(double 0x3FB90D2D0F2CC3AD, double %158, double %155)
%160 = call double @exp(double %159)
%161 = getelementptr inbounds [4 x double], [4 x double]* %26, i64 0, i64 2
store double %160, double* %161
%162 = load double, double* %11
%163 = call double @log(double %162)
%164 = call double @llvm.fmuladd.f64(double -1.874740e+02, double %163, double 3.506090e+02)
%165 = load double, double* %11
%166 = call double @log(double %165)
%167 = call double @pow(double %166, double 2.000000e+00)
%168 = call double @llvm.fmuladd.f64(double 3.618030e+01, double %167, double %164)
%169 = load double, double* %11
%170 = call double @log(double %169)
%171 = call double @pow(double %170, double 3.000000e+00)
%172 = call double @llvm.fmuladd.f64(double -3.032380e+00, double %171, double %168)
%173 = load double, double* %11
%174 = call double @log(double %173)
%175 = call double @pow(double %174, double 4.000000e+00)
%176 = call double @llvm.fmuladd.f64(double 9.381380e-02, double %175, double %172)
%177 = call double @exp(double %176)
%178 = getelementptr inbounds [4 x double], [4 x double]* %26, i64 0, i64 3
store double %177, double* %178
br label %179
179: ; preds = %127, %124
%180 = load double, double* %11
%181 = fcmp olt double %180, 1.500000e+02
br i1 %181, label %182, label %199
182: ; preds = %179
%183 = load double, double* %11
%184 = call double @pow(double %183, double -1.900000e-01)
%185 = fmul double 1.610000e-10, %184
%186 = getelementptr inbounds [4 x double], [4 x double]* %29, i64 0, i64 1
store double %185, double* %186
%187 = load double, double* %11
%188 = call double @pow(double %187, double -8.000000e-02)
%189 = fmul double 1.050000e-10, %188
%190 = getelementptr inbounds [4 x double], [4 x double]* %30, i64 0, i64 1
store double %189, double* %190
%191 = load double, double* %11
%192 = call double @pow(double %191, double -4.000000e-02)
%193 = fmul double 2.090000e-10, %192
%194 = getelementptr inbounds [4 x double], [4 x double]* %29, i64 0, i64 2
store double %193, double* %194
%195 = load double, double* %11
%196 = call double @pow(double %195, double -7.000000e-02)
%197 = fmul double 1.180000e-10, %196
%198 = getelementptr inbounds [4 x double], [4 x double]* %29, i64 0, i64 3
store double %197, double* %198
br label %199
199: ; preds = %182, %179
%200 = load double, double* %11
%201 = fcmp oge double %200, 1.500000e+02
br i1 %201, label %202, label %222
202: ; preds = %199
%203 = load double, double* %11
%204 = fcmp ole double %203, 1.000000e+03
br i1 %204, label %205, label %222
205: ; preds = %202
%206 = load double, double* %11
%207 = call double @pow(double %206, double 1.300000e-01)
%208 = fmul double 3.500000e-11, %207
%209 = getelementptr inbounds [4 x double], [4 x double]* %29, i64 0, i64 1
store double %208, double* %209
%210 = load double, double* %11
%211 = call double @pow(double %210, double 1.200000e-01)
%212 = fmul double 3.720000e-11, %211
%213 = getelementptr inbounds [4 x double], [4 x double]* %30, i64 0, i64 1
store double %212, double* %213
%214 = load double, double* %11
%215 = call double @pow(double %214, double 2.000000e-01)
%216 = fmul double 6.710000e-11, %215
%217 = getelementptr inbounds [4 x double], [4 x double]* %29, i64 0, i64 2
store double %216, double* %217
%218 = load double, double* %11
%219 = call double @pow(double %218, double 1.300000e-01)
%220 = fmul double 4.220000e-11, %219
%221 = getelementptr inbounds [4 x double], [4 x double]* %29, i64 0, i64 3
store double %220, double* %221
br label %222
222: ; preds = %205, %202, %199
%223 = load double, double* %11
%224 = fcmp ogt double %223, 1.000000e+03
br i1 %224, label %225, label %230
225: ; preds = %222
%226 = getelementptr inbounds [4 x double], [4 x double]* %29, i64 0, i64 1
store double 8.100000e-11, double* %226
%227 = getelementptr inbounds [4 x double], [4 x double]* %30, i64 0, i64 1
store double 8.500000e-11, double* %227
%228 = getelementptr inbounds [4 x double], [4 x double]* %29, i64 0, i64 2
store double 2.610000e-10, double* %228
%229 = getelementptr inbounds [4 x double], [4 x double]* %29, i64 0, i64 3
store double 1.030000e-10, double* %229
br label %230
230: ; preds = %225, %222
%231 = load double, double* %11
%232 = call double @pow(double %231, double 2.700000e-01)
%233 = fmul double 4.500000e-11, %232
%234 = getelementptr inbounds [4 x double], [4 x double]* %30, i64 0, i64 2
store double %233, double* %234
%235 = load double, double* %11
%236 = call double @pow(double %235, double 1.800000e-01)
%237 = fmul double 3.100000e-11, %236
%238 = getelementptr inbounds [4 x double], [4 x double]* %30, i64 0, i64 3
store double %237, double* %238
%239 = load double, double* %11
%240 = call double @ortho_para_ratio(double %239)
store double %240, double* %35
%241 = load double, double* %35
%242 = fsub double 1.000000e+00, %241
store double %242, double* %34
store i32 1, i32* %31
br label %243
243: ; preds = %282, %230
%244 = load i32, i32* %31
%245 = icmp sle i32 %244, 3
br i1 %245, label %246, label %285
246: ; preds = %243
%247 = load double, double* %14
%248 = load i32, i32* %31
%249 = sext i32 %248 to i64
%250 = getelementptr inbounds [4 x double], [4 x double]* %26, i64 0, i64 %249
%251 = load double, double* %250
%252 = load double, double* %17
%253 = load i32, i32* %31
%254 = sext i32 %253 to i64
%255 = getelementptr inbounds [4 x double], [4 x double]* %27, i64 0, i64 %254
%256 = load double, double* %255
%257 = fmul double %252, %256
%258 = call double @llvm.fmuladd.f64(double %247, double %251, double %257)
%259 = load double, double* %15
%260 = load i32, i32* %31
%261 = sext i32 %260 to i64
%262 = getelementptr inbounds [4 x double], [4 x double]* %28, i64 0, i64 %261
%263 = load double, double* %262
%264 = call double @llvm.fmuladd.f64(double %259, double %263, double %258)
%265 = load double, double* %16
%266 = load double, double* %35
%267 = load i32, i32* %31
%268 = sext i32 %267 to i64
%269 = getelementptr inbounds [4 x double], [4 x double]* %29, i64 0, i64 %268
%270 = load double, double* %269
%271 = load double, double* %34
%272 = load i32, i32* %31
%273 = sext i32 %272 to i64
%274 = getelementptr inbounds [4 x double], [4 x double]* %30, i64 0, i64 %273
%275 = load double, double* %274
%276 = fmul double %271, %275
%277 = call double @llvm.fmuladd.f64(double %266, double %270, double %276)
%278 = call double @llvm.fmuladd.f64(double %265, double %277, double %264)
%279 = load i32, i32* %31
%280 = sext i32 %279 to i64
%281 = getelementptr inbounds [4 x double], [4 x double]* %32, i64 0, i64 %280
store double %278, double* %281
br label %282
282: ; preds = %246
%283 = load i32, i32* %31
%284 = add nsw i32 %283, 1
store i32 %284, i32* %31
br label %243
285: ; preds = %243
%286 = getelementptr inbounds [4 x double], [4 x double]* %21, i64 0, i64 0
%287 = getelementptr inbounds [4 x i32], [4 x i32]* %22, i64 0, i64 0
%288 = getelementptr inbounds [4 x i32], [4 x i32]* %23, i64 0, i64 0
%289 = getelementptr inbounds [4 x double], [4 x double]* %24, i64 0, i64 0
%290 = load double, double* %11
%291 = getelementptr inbounds [4 x double], [4 x double]* %25, i64 0, i64 0
%292 = load i32, i32* %12
%293 = load double, double* %13
%294 = load double**, double*** %19
%295 = load double**, double*** %20
%296 = getelementptr inbounds [4 x double], [4 x double]* %32, i64 0, i64 0
%297 = load double*, double** %18
%298 = call double @getCoolingRate(i32 3, i32 3, double* %286, i32* %287, i32* %288, double* %289, double %290, double* %291, i32 %292, double %293, double** %294, double** %295, double* %296, double* %297)
store double %298, double* %33
%299 = load double, double* %33
ret double %299
}

LLVM IR (-O2):
@__const.finestruct_cooling_CA.weights = [4 x double] [double 0.000000e+00, double 1.000000e+00, double 3.000000e+00, double 5.000000e+00]
@__const.finestruct_cooling_CA.lower = [4 x i32] [i32 0, i32 1, i32 2, i32 1]
@__const.finestruct_cooling_CA.upper = [4 x i32] [i32 0, i32 2, i32 3, i32 3]
@__const.finestruct_cooling_CA.energy = [4 x double] [double 0.000000e+00, double 0.000000e+00, double 2.400000e+01, double 6.300000e+01]
@__const.finestruct_cooling_CA.EinsA = [4 x double] [double 0.000000e+00, double 7.900000e-08, double 2.700000e-07, double 2.000000e-14]
define double @finestruct_cooling_CA(double %0, i32 %1, double %2, double %3, double %4, double %5, double %6, double* %7, double** %8, double** %9) {
%11 = alloca [4 x double]
%12 = alloca [4 x i32]
%13 = alloca [4 x i32]
%14 = alloca [4 x double]
%15 = alloca [4 x double]
%16 = alloca [4 x double]
%17 = bitcast [4 x double]* %11 to i8*
%18 = bitcast [4 x i32]* %12 to i8*
%19 = bitcast [4 x i32]* %13 to i8*
%20 = bitcast [4 x double]* %14 to i8*
%21 = bitcast [4 x double]* %15 to i8*
%22 = fdiv double %0, 3.000000e+02
%23 = tail call double @pow(double %22, double 2.400000e-01)
%24 = tail call double @pow(double %22, double 3.500000e-01)
%25 = tail call double @pow(double %22, double 5.700000e-01)
%26 = tail call double @pow(double %0, double 4.500000e-02)
%27 = tail call double @pow(double %0, double 3.500000e-02)
%28 = tail call double @pow(double %0, double 8.400000e-02)
%29 = bitcast [4 x double]* %16 to i8*
%30 = fcmp olt double %0, 1.000000e+03
br i1 %30, label %31, label %70
31: ; preds = %10
%32 = tail call double @log(double %0)
%33 = tail call double @llvm.fmuladd.f64(double %32, double 0xBFE8C2D27807789A, double 0xC02280B8CFBFC654)
%34 = tail call double @log(double %0)
%35 = fmul double %34, %34
%36 = tail call double @llvm.fmuladd.f64(double %35, double 3.611840e-01, double %33)
%37 = tail call double @log(double %0)
%38 = tail call double @pow(double %37, double 3.000000e+00)
%39 = tail call double @llvm.fmuladd.f64(double %38, double -1.508920e-02, double %36)
%40 = tail call double @log(double %0)
%41 = tail call double @pow(double %40, double 4.000000e+00)
%42 = tail call double @llvm.fmuladd.f64(double %41, double -6.563250e-04, double %39)
%43 = tail call double @exp(double %42)
%44 = tail call double @log(double %0)
%45 = tail call double @llvm.fmuladd.f64(double %44, double -5.744300e-01, double -7.438700e+00)
%46 = tail call double @log(double %0)
%47 = fmul double %46, %46
%48 = tail call double @llvm.fmuladd.f64(double %47, double 3.582640e-01, double %45)
%49 = tail call double @log(double %0)
%50 = tail call double @pow(double %49, double 3.000000e+00)
%51 = tail call double @llvm.fmuladd.f64(double %50, double -4.181660e-02, double %48)
%52 = tail call double @log(double %0)
%53 = tail call double @pow(double %52, double 4.000000e+00)
%54 = tail call double @llvm.fmuladd.f64(double %53, double -2.352720e-03, double %51)
%55 = tail call double @exp(double %54)
%56 = tail call double @log(double %0)
%57 = tail call double @llvm.fmuladd.f64(double %56, double -1.307430e+00, double -7.697350e+00)
%58 = tail call double @log(double %0)
%59 = fmul double %58, %58
%60 = tail call double @llvm.fmuladd.f64(double %59, double 6.976380e-01, double %57)
%61 = tail call double @log(double %0)
%62 = tail call double @pow(double %61, double 3.000000e+00)
%63 = tail call double @llvm.fmuladd.f64(double %62, double -1.113380e-01, double %60)
%64 = tail call double @log(double %0)
%65 = tail call double @pow(double %64, double 4.000000e+00)
%66 = tail call double @llvm.fmuladd.f64(double %65, double 7.052770e-03, double %63)
%67 = tail call double @exp(double %66)
%68 = insertelement <2 x double> poison, double %43, i64 0
%69 = insertelement <2 x double> %68, double %55, i64 1
br label %70
70: ; preds = %31, %10
%71 = phi double [ %67, %31 ], [ undef, %10 ]
%72 = phi <2 x double> [ %69, %31 ], [ undef, %10 ]
%73 = fcmp ult double %0, 1.000000e+03
br i1 %73, label %113, label %74
74: ; preds = %70
%75 = tail call double @log(double %0)
%76 = tail call double @llvm.fmuladd.f64(double %75, double -2.279130e+02, double 4.446000e+02)
%77 = tail call double @log(double %0)
%78 = fmul double %77, %77
%79 = tail call double @llvm.fmuladd.f64(double %78, double 4.259520e+01, double %76)
%80 = tail call double @log(double %0)
%81 = tail call double @pow(double %80, double 3.000000e+00)
%82 = tail call double @llvm.fmuladd.f64(double %81, double -3.476200e+00, double %79)
%83 = tail call double @log(double %0)
%84 = tail call double @pow(double %83, double 4.000000e+00)
%85 = tail call double @llvm.fmuladd.f64(double %84, double 1.050850e-01, double %82)
%86 = tail call double @exp(double %85)
%87 = tail call double @log(double %0)
%88 = tail call double @llvm.fmuladd.f64(double %87, double -2.021920e+02, double 3.861860e+02)
%89 = tail call double @log(double %0)
%90 = fmul double %89, %89
%91 = tail call double @llvm.fmuladd.f64(double %90, double 3.850490e+01, double %88)
%92 = tail call double @log(double %0)
%93 = tail call double @pow(double %92, double 3.000000e+00)
%94 = tail call double @llvm.fmuladd.f64(double %93, double -3.192680e+00, double %91)
%95 = tail call double @log(double %0)
%96 = tail call double @pow(double %95, double 4.000000e+00)
%97 = tail call double @llvm.fmuladd.f64(double %96, double 0x3FB90D2D0F2CC3AD, double %94)
%98 = tail call double @exp(double %97)
%99 = tail call double @log(double %0)
%100 = tail call double @llvm.fmuladd.f64(double %99, double -1.874740e+02, double 3.506090e+02)
%101 = tail call double @log(double %0)
%102 = fmul double %101, %101
%103 = tail call double @llvm.fmuladd.f64(double %102, double 3.618030e+01, double %100)
%104 = tail call double @log(double %0)
%105 = tail call double @pow(double %104, double 3.000000e+00)
%106 = tail call double @llvm.fmuladd.f64(double %105, double -3.032380e+00, double %103)
%107 = tail call double @log(double %0)
%108 = tail call double @pow(double %107, double 4.000000e+00)
%109 = tail call double @llvm.fmuladd.f64(double %108, double 9.381380e-02, double %106)
%110 = tail call double @exp(double %109)
%111 = insertelement <2 x double> poison, double %86, i64 0
%112 = insertelement <2 x double> %111, double %98, i64 1
br label %113
113: ; preds = %74, %70
%114 = phi double [ %71, %70 ], [ %110, %74 ]
%115 = phi <2 x double> [ %72, %70 ], [ %112, %74 ]
%116 = fcmp olt double %0, 1.500000e+02
br i1 %116, label %117, label %128
117: ; preds = %113
%118 = tail call double @pow(double %0, double -1.900000e-01)
%119 = tail call double @pow(double %0, double -8.000000e-02)
%120 = tail call double @pow(double %0, double -4.000000e-02)
%121 = insertelement <2 x double> poison, double %118, i64 0
%122 = insertelement <2 x double> %121, double %120, i64 1
%123 = fmul <2 x double> %122, <double 1.610000e-10, double 2.090000e-10>
%124 = tail call double @pow(double %0, double -7.000000e-02)
%125 = insertelement <2 x double> poison, double %124, i64 0
%126 = insertelement <2 x double> %125, double %119, i64 1
%127 = fmul <2 x double> %126, <double 1.180000e-10, double 1.050000e-10>
br label %128
128: ; preds = %117, %113
%129 = phi <2 x double> [ %123, %117 ], [ undef, %113 ]
%130 = phi <2 x double> [ %127, %117 ], [ undef, %113 ]
%131 = fcmp oge double %0, 1.500000e+02
%132 = fcmp ole double %0, 1.000000e+03
%133 = and i1 %131, %132
br i1 %133, label %134, label %145
134: ; preds = %128
%135 = tail call double @pow(double %0, double 1.300000e-01)
%136 = tail call double @pow(double %0, double 1.200000e-01)
%137 = tail call double @pow(double %0, double 2.000000e-01)
%138 = insertelement <2 x double> poison, double %135, i64 0
%139 = insertelement <2 x double> %138, double %137, i64 1
%140 = fmul <2 x double> %139, <double 3.500000e-11, double 6.710000e-11>
%141 = tail call double @pow(double %0, double 1.300000e-01)
%142 = insertelement <2 x double> poison, double %141, i64 0
%143 = insertelement <2 x double> %142, double %136, i64 1
%144 = fmul <2 x double> %143, <double 4.220000e-11, double 3.720000e-11>
br label %145
145: ; preds = %134, %128
%146 = phi <2 x double> [ %140, %134 ], [ %129, %128 ]
%147 = phi <2 x double> [ %144, %134 ], [ %130, %128 ]
%148 = fcmp ogt double %0, 1.000000e+03
%149 = select i1 %148, <2 x double> <double 8.100000e-11, double 2.610000e-10>, <2 x double> %146
%150 = select i1 %148, <2 x double> <double 1.030000e-10, double 8.500000e-11>, <2 x double> %147
%151 = fmul double %28, 2.000000e-10
%152 = insertelement <2 x double> poison, double %26, i64 0
%153 = insertelement <2 x double> %152, double %27, i64 1
%154 = fmul <2 x double> %153, <double 1.300000e-10, double 7.800000e-11>
%155 = fmul double %25, 8.000000e-10
%156 = insertelement <2 x double> poison, double %23, i64 0
%157 = insertelement <2 x double> %156, double %24, i64 1
%158 = fmul <2 x double> %157, <double 1.200000e-09, double 5.400000e-09>
%159 = tail call double @pow(double %0, double 2.700000e-01)
%160 = fmul double %159, 4.500000e-11
%161 = tail call double @pow(double %0, double 1.800000e-01)
%162 = fmul double %161, 3.100000e-11
%163 = tail call double @ortho_para_ratio(double %0)
%164 = fsub double 1.000000e+00, %163
%165 = getelementptr inbounds [4 x double], [4 x double]* %16, i64 0, i64 1
%166 = insertelement <2 x double> poison, double %6, i64 0
%167 = shufflevector <2 x double> %166, <2 x double> poison, <2 x i32> zeroinitializer
%168 = fmul <2 x double> %158, %167
%169 = insertelement <2 x double> poison, double %3, i64 0
%170 = shufflevector <2 x double> %169, <2 x double> poison, <2 x i32> zeroinitializer
%171 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %170, <2 x double> %115, <2 x double> %168)
%172 = insertelement <2 x double> poison, double %4, i64 0
%173 = shufflevector <2 x double> %172, <2 x double> poison, <2 x i32> zeroinitializer
%174 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %173, <2 x double> %154, <2 x double> %171)
%175 = insertelement <2 x double> poison, double %164, i64 0
%176 = shufflevector <2 x double> %175, <2 x double> poison, <2 x i32> zeroinitializer
%177 = extractelement <2 x double> %150, i64 1
%178 = insertelement <2 x double> poison, double %177, i64 0
%179 = insertelement <2 x double> %178, double %160, i64 1
%180 = fmul <2 x double> %176, %179
%181 = insertelement <2 x double> poison, double %163, i64 0
%182 = shufflevector <2 x double> %181, <2 x double> poison, <2 x i32> zeroinitializer
%183 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %182, <2 x double> %149, <2 x double> %180)
%184 = insertelement <2 x double> poison, double %5, i64 0
%185 = shufflevector <2 x double> %184, <2 x double> poison, <2 x i32> zeroinitializer
%186 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %185, <2 x double> %183, <2 x double> %174)
%187 = bitcast double* %165 to <2 x double>*
store <2 x double> %186, <2 x double>* %187
%188 = fmul double %155, %6
%189 = tail call double @llvm.fmuladd.f64(double %3, double %114, double %188)
%190 = tail call double @llvm.fmuladd.f64(double %4, double %151, double %189)
%191 = fmul double %164, %162
%192 = extractelement <2 x double> %150, i64 0
%193 = tail call double @llvm.fmuladd.f64(double %163, double %192, double %191)
%194 = tail call double @llvm.fmuladd.f64(double %5, double %193, double %190)
%195 = getelementptr inbounds [4 x double], [4 x double]* %16, i64 0, i64 3
store double %194, double* %195
%196 = getelementptr inbounds [4 x double], [4 x double]* %11, i64 0, i64 0
%197 = getelementptr inbounds [4 x i32], [4 x i32]* %12, i64 0, i64 0
%198 = getelementptr inbounds [4 x i32], [4 x i32]* %13, i64 0, i64 0
%199 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 0
%200 = getelementptr inbounds [4 x double], [4 x double]* %15, i64 0, i64 0
%201 = getelementptr inbounds [4 x double], [4 x double]* %16, i64 0, i64 0
%202 = call double @getCoolingRate(i32 3, i32 3, double* %196, i32* %197, i32* %198, double* %199, double %0, double* %200, i32 %1, double %2, double** %8, double** %9, double* %201, double* %7)
ret double %202
}