#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 */
int exp(double);
int /*<<< orphan*/ gcor2(double, double, double, double, double, double, double,
                         double *, double *);
double log(double);
int pow(int, int);
double sqrt(double);
void corpbespin(double rs, double t, double zet, int lgga, int lpot, double *ec,
                double *vcup, double *vcdown, double *h__, double *dvcup,
                double *dvcdown, double *dv2rho) {
  double b, b2, q4, t2, q5, t4, ep, eu, pon, alfm, eprs, eurs, rtrs, f, z4,
      ecrs, fz, eczet, comm, g, g2, g3, dg;
  double tmp1, tmp2, tmp3, tmp4;
  double alfrsm;
  rtrs = sqrt(rs);
  gcor2(.0310907, .2137, 7.5957, 3.5876, 1.6382, .49294, rtrs, &eu, &eurs);
  gcor2(.01554535, .20548, 14.1189, 6.1977, 3.3662, .62517, rtrs, &ep, &eprs);
  gcor2(.0168869, .11125, 10.357, 3.6231, .88026, .49671, rtrs, &alfm, &alfrsm);
  z4 = zet * zet * zet * zet;
  f = (pow(1. + zet, 4. / 3.) + pow(1. - zet, 4. / 3.) - 2.) /
      0.5198420997897463295344212145565;
  *ec = eu * (1. - f * z4) + ep * f * z4 -
        alfm * f * (1. - z4) / (8. / (9. * 0.5198420997897463295344212145565));
  ecrs =
      eurs * (1. - f * z4) + eprs * f * z4 -
      alfrsm * f * (1. - z4) / (8. / (9. * 0.5198420997897463295344212145565));
  fz = 4. / 3. * (pow(1. + zet, 1. / 3.) - pow(1. - zet, 1. / 3.)) /
       0.5198420997897463295344212145565;
  eczet =
      4. * pow(zet, 3) * f *
          (ep - eu + alfm / (8. / (9. * 0.5198420997897463295344212145565))) +
      fz * (z4 * ep - z4 * eu -
            (1. - z4) * alfm / (8. / (9. * 0.5198420997897463295344212145565)));
  comm = *ec - rs * ecrs / 3. - zet * eczet;
  *vcup = comm + eczet;
  *vcdown = comm - eczet;
  if (lgga == 0) {
    return;
  }
  g = 0.5 * (pow(1. + zet, 2. / 3.) + pow(1. - zet, 2. / 3.));
  g2 = g * g;
  g3 = g2 * g;
  dg = (1. / 3.) * (pow(1. + zet, -1. / 3.) - pow(1. - zet, -1. / 3.));
  pon = -(*ec) / (g3 * 0.03109069086965489503494086371273);
  b = (0.06672455060314922 / 0.03109069086965489503494086371273) /
      (exp(pon) - 1.);
  t /= g;
  b2 = b * b;
  t2 = t * t;
  t4 = t2 * t2;
  q4 = b * t2 + 1.;
  q5 = b * t2 + 1. + b2 * t4;
  *h__ = g3 * 0.03109069086965489503494086371273 *
         log(q4 * (0.06672455060314922 / 0.03109069086965489503494086371273) *
                 t2 / q5 +
             1.);
  if (lpot == 0) {
    return;
  }
  tmp1 = q4 / q5;
  tmp2 = b2 * t4 * (1. + q4) / (q5 * q5);
  tmp3 = 1. / (1. + (0.06672455060314922 / 0.03109069086965489503494086371273) *
                        t2 * tmp1);
  tmp4 =
      dg *
      (3. * (*h__) / g -
       0.06672455060314922 * t2 * g2 *
           (2. * tmp1 - tmp2 * (3. *
                                    (b + (0.06672455060314922 /
                                          0.03109069086965489503494086371273)) *
                                    (*ec) / (0.06672455060314922 * g3) +
                                2.)) *
           tmp3);
  *dvcup = *h__ -
           0.06672455060314922 * g3 * t2 *
               (7. / 3. * tmp1 +
                tmp2 * ((b + (0.06672455060314922 /
                              0.03109069086965489503494086371273)) *
                            (*vcup - (*ec)) / (0.06672455060314922 * g3) -
                        7. / 3.)) *
               tmp3 +
           tmp4 * (1. - zet);
  *dvcdown = *h__ -
             0.06672455060314922 * g3 * t2 *
                 (7. / 3. * tmp1 +
                  tmp2 * ((b + (0.06672455060314922 /
                                0.03109069086965489503494086371273)) *
                              (*vcdown - (*ec)) / (0.06672455060314922 * g3) -
                          7. / 3.)) *
                 tmp3 -
             tmp4 * (1. + zet);
  *dv2rho = 0.5 * 0.06672455060314922 * g *
            0.409240950261429630406974844266531 * rs * (tmp1 - tmp2) * tmp3;
}


x86 assembly (clang, -O0):
<corpbespin>:
push   %rbp
mov    %rsp,%rbp
sub    $0x140,%rsp
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
mov    %edi,-0x1c(%rbp)
mov    %esi,-0x20(%rbp)
mov    %rdx,-0x28(%rbp)
mov    %rcx,-0x30(%rbp)
mov    %r8,-0x38(%rbp)
mov    %r9,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
call   1070 <sqrt@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm6
ff
movsd  0xeea(%rip),%xmm0
movsd  0xeea(%rip),%xmm1
movsd  0xeea(%rip),%xmm2
movsd  0xeea(%rip),%xmm3
movsd  0xeea(%rip),%xmm4
movsd  0xeea(%rip),%xmm5
lea    -0x80(%rbp),%rdi
lea    -0xa0(%rbp),%rsi
call   1030 <gcor2@plt>
movsd  -0xa8(%rbp),%xmm6
ff
movsd  0xe72(%rip),%xmm0
movsd  0xe72(%rip),%xmm1
movsd  0xe72(%rip),%xmm2
movsd  0xe72(%rip),%xmm3
movsd  0xe72(%rip),%xmm4
movsd  0xe72(%rip),%xmm5
lea    -0x78(%rbp),%rdi
lea    -0x98(%rbp),%rsi
call   1030 <gcor2@plt>
movsd  -0xa8(%rbp),%xmm6
ff
movsd  0xdfa(%rip),%xmm0
movsd  0xdfa(%rip),%xmm1
movsd  0xdfa(%rip),%xmm2
movsd  0xdfa(%rip),%xmm3
movsd  0xdfa(%rip),%xmm4
movsd  0xdfa(%rip),%xmm5
lea    -0x90(%rbp),%rdi
lea    -0x120(%rbp),%rsi
call   1030 <gcor2@plt>
movsd  -0x18(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0xd73(%rip),%xmm0
addsd  -0x18(%rbp),%xmm0
cvttsd2si %xmm0,%edi
mov    $0x1,%esi
call   1060 <pow@plt>
mov    %eax,-0x128(%rbp)
movsd  0xd52(%rip),%xmm0
subsd  -0x18(%rbp),%xmm0
cvttsd2si %xmm0,%edi
mov    $0x1,%esi
call   1060 <pow@plt>
mov    %eax,%ecx
mov    -0x128(%rbp),%eax
add    %ecx,%eax
cvtsi2sd %eax,%xmm0
movsd  0xd49(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xd2d(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm1,%xmm2
movsd  0xcd9(%rip),%xmm1
addsd  %xmm1,%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  -0xb0(%rbp),%xmm1
ff
mulsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x90(%rbp),%xmm1
ff
mulsd  -0xb0(%rbp),%xmm1
ff
movsd  0xca0(%rip),%xmm2
subsd  -0xb8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
movsd  0xc84(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm1,%xmm2
movsd  0xc41(%rip),%xmm1
addsd  %xmm1,%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  -0xb0(%rbp),%xmm1
ff
mulsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x120(%rbp),%xmm1
ff
mulsd  -0xb0(%rbp),%xmm1
ff
movsd  0xc05(%rip),%xmm2
subsd  -0xb8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
movsd  0xbe9(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0xbd9(%rip),%xmm0
addsd  -0x18(%rbp),%xmm0
cvttsd2si %xmm0,%edi
xor    %esi,%esi
call   1060 <pow@plt>
mov    %eax,-0x124(%rbp)
movsd  0xbbb(%rip),%xmm0
subsd  -0x18(%rbp),%xmm0
cvttsd2si %xmm0,%edi
xor    %esi,%esi
call   1060 <pow@plt>
mov    %eax,%ecx
mov    -0x124(%rbp),%eax
sub    %ecx,%eax
cvtsi2sd %eax,%xmm1
movsd  0xbad(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0xb99(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
cvttsd2si -0x18(%rbp),%edi
mov    $0x3,%esi
call   1060 <pow@plt>
cvtsi2sd %eax,%xmm1
movsd  0xb6a(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  -0xb0(%rbp),%xmm0
ff
movsd  -0x78(%rbp),%xmm2
subsd  -0x80(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movsd  0xb34(%rip),%xmm3
divsd  %xmm3,%xmm1
addsd  %xmm1,%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0xb8(%rbp),%xmm3
ff
movsd  -0x78(%rbp),%xmm5
movsd  -0xb8(%rbp),%xmm4
ff
mulsd  -0x80(%rbp),%xmm4
movq   %xmm4,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm4
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
movsd  0xaeb(%rip),%xmm4
subsd  -0xb8(%rbp),%xmm4
ff
mulsd  -0x90(%rbp),%xmm4
ff
movsd  0xacb(%rip),%xmm5
divsd  %xmm5,%xmm4
subsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x8(%rbp),%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  0xa8a(%rip),%xmm2
divsd  %xmm2,%xmm0
subsd  %xmm0,%xmm1
movsd  -0x18(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
addsd  -0xd0(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xd8(%rbp),%xmm0
ff
subsd  -0xd0(%rbp),%xmm0
ff
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
cmpl   $0x0,-0x1c(%rbp)
jne    15f1 <corpbespin+0x4a1>
jmp    1b8f <corpbespin+0xa3f>
movsd  0xa17(%rip),%xmm0
addsd  -0x18(%rbp),%xmm0
cvttsd2si %xmm0,%edi
xor    %esi,%esi
call   1060 <pow@plt>
mov    %eax,-0x138(%rbp)
movsd  0x9f9(%rip),%xmm0
subsd  -0x18(%rbp),%xmm0
cvttsd2si %xmm0,%edi
xor    %esi,%esi
call   1060 <pow@plt>
mov    %eax,%ecx
mov    -0x138(%rbp),%eax
add    %ecx,%eax
cvtsi2sd %eax,%xmm1
movsd  0xaa3(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  0x98f(%rip),%xmm0
addsd  -0x18(%rbp),%xmm0
cvttsd2si %xmm0,%edi
xor    %esi,%esi
call   1060 <pow@plt>
mov    %eax,-0x134(%rbp)
movsd  0x971(%rip),%xmm0
subsd  -0x18(%rbp),%xmm0
cvttsd2si %xmm0,%edi
xor    %esi,%esi
call   1060 <pow@plt>
mov    %eax,%ecx
mov    -0x134(%rbp),%eax
sub    %ecx,%eax
cvtsi2sd %eax,%xmm1
movsd  0xa13(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x9d8(%rip),%xmm1
mulsd  -0xf0(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
call   1040 <exp@plt>
cvtsi2sd %eax,%xmm1
movsd  0x8eb(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0x997(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0x10(%rbp),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x48(%rbp),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x10(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
mulsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x87d(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x48(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm0
mulsd  %xmm0,%xmm1
movsd  0x85e(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  0x8fb(%rip),%xmm0
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  0x8db(%rip),%xmm0
mulsd  -0x58(%rbp),%xmm0
mulsd  -0x60(%rbp),%xmm0
divsd  -0x68(%rbp),%xmm0
movsd  0x80c(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1050 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x130(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
cmpl   $0x0,-0x20(%rbp)
jne    1833 <corpbespin+0x6e3>
jmp    1b8f <corpbespin+0xa3f>
movsd  -0x58(%rbp),%xmm0
divsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  0x7b9(%rip),%xmm1
addsd  -0x58(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x68(%rbp),%xmm1
mulsd  -0x68(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  0x84a(%rip),%xmm1
mulsd  -0x60(%rbp),%xmm1
movsd  -0x100(%rbp),%xmm0
ff
mulsd  %xmm0,%xmm1
movsd  0x779(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0x76d(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  0x73d(%rip),%xmm2
mulsd  (%rax),%xmm2
divsd  -0xe0(%rbp),%xmm2
ff
movsd  0x829(%rip),%xmm1
mulsd  -0x60(%rbp),%xmm1
mulsd  -0xe8(%rbp),%xmm1
ff
movsd  -0x100(%rbp),%xmm3
ff
movsd  -0x108(%rbp),%xmm4
ff
movsd  0x7cc(%rip),%xmm6
addsd  -0x48(%rbp),%xmm6
movsd  0x6f7(%rip),%xmm5
mulsd  %xmm6,%xmm5
mov    -0x28(%rbp),%rax
mulsd  (%rax),%xmm5
movsd  0x7e3(%rip),%xmm6
mulsd  -0xf0(%rbp),%xmm6
ff
divsd  %xmm6,%xmm5
movsd  0x6ff(%rip),%xmm6
addsd  %xmm6,%xmm5
mulsd  %xmm5,%xmm4
movq   %xmm4,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm4
addsd  %xmm3,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
movsd  -0x110(%rbp),%xmm3
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x761(%rip),%xmm1
mulsd  -0xf0(%rbp),%xmm1
ff
mulsd  -0x60(%rbp),%xmm1
movsd  -0x100(%rbp),%xmm2
ff
movsd  -0x108(%rbp),%xmm3
ff
movsd  0x704(%rip),%xmm4
addsd  -0x48(%rbp),%xmm4
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm5
mov    -0x28(%rbp),%rax
subsd  (%rax),%xmm5
mulsd  %xmm5,%xmm4
movsd  0x71b(%rip),%xmm5
mulsd  -0xf0(%rbp),%xmm5
ff
divsd  %xmm5,%xmm4
movsd  0x6ff(%rip),%xmm5
subsd  %xmm5,%xmm4
mulsd  %xmm4,%xmm3
movsd  0x6ef(%rip),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
movsd  -0x110(%rbp),%xmm2
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x118(%rbp),%xmm0
ff
movsd  0x5c4(%rip),%xmm2
subsd  -0x18(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0x68f(%rip),%xmm1
mulsd  -0xf0(%rbp),%xmm1
ff
mulsd  -0x60(%rbp),%xmm1
movsd  -0x100(%rbp),%xmm2
ff
movsd  -0x108(%rbp),%xmm3
ff
movsd  0x632(%rip),%xmm4
addsd  -0x48(%rbp),%xmm4
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm5
mov    -0x28(%rbp),%rax
subsd  (%rax),%xmm5
mulsd  %xmm5,%xmm4
movsd  0x649(%rip),%xmm5
mulsd  -0xf0(%rbp),%xmm5
ff
divsd  %xmm5,%xmm4
movsd  0x62d(%rip),%xmm5
subsd  %xmm5,%xmm4
mulsd  %xmm4,%xmm3
movsd  0x61d(%rip),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
movsd  -0x110(%rbp),%xmm2
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x118(%rbp),%xmm0
ff
movsd  0x4f2(%rip),%xmm2
addsd  -0x18(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  0x59e(%rip),%xmm0
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  0x586(%rip),%xmm1
mulsd  %xmm1,%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  -0x100(%rbp),%xmm1
ff
subsd  -0x108(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
mulsd  -0x110(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,(%rax)
add    $0x140,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<corpbespin>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xb8,%rsp
mov    %r9,0x50(%rsp)
mov    %r8,0x58(%rsp)
mov    %rcx,%r12
mov    %rdx,%r15
mov    %esi,0x4c(%rsp)
mov    %edi,%ebp
movsd  %xmm2,0x8(%rsp)
movsd  %xmm1,0x40(%rsp)
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
movsd  %xmm0,0x60(%rsp)
jb     1199 <corpbespin+0x49>
sqrtsd %xmm0,%xmm6
jmp    11a2 <corpbespin+0x52>
call   1070 <sqrt@plt>
movapd %xmm0,%xmm6
movsd  0xe56(%rip),%xmm0
movsd  0xe56(%rip),%xmm1
movsd  0xe56(%rip),%xmm2
movsd  0xe56(%rip),%xmm3
movsd  0xe56(%rip),%xmm4
movsd  0xe56(%rip),%xmm5
lea    0x70(%rsp),%rdi
lea    0xa8(%rsp),%rsi
movsd  %xmm6,0x10(%rsp)
call   1030 <gcor2@plt>
movsd  0xe3e(%rip),%xmm0
movsd  0xe3e(%rip),%xmm1
movsd  0xe3e(%rip),%xmm2
movsd  0xe3e(%rip),%xmm3
movsd  0xe3e(%rip),%xmm4
movsd  0xe3e(%rip),%xmm5
lea    0x78(%rsp),%rdi
lea    0xb0(%rsp),%rsi
movsd  0x10(%rsp),%xmm6
call   1030 <gcor2@plt>
movsd  0xe26(%rip),%xmm0
movsd  0xe26(%rip),%xmm1
movsd  0xe26(%rip),%xmm2
movsd  0xe26(%rip),%xmm3
movsd  0xe26(%rip),%xmm4
movsd  0xe26(%rip),%xmm5
lea    0x68(%rsp),%rdi
lea    0xa0(%rsp),%rsi
movsd  0x10(%rsp),%xmm6
call   1030 <gcor2@plt>
movsd  0x8(%rsp),%xmm0
movapd %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
addsd  0xdf2(%rip),%xmm0
movsd  %xmm0,0x98(%rsp)
cvttsd2si %xmm0,%r14d
mov    %r14d,%edi
mov    $0x1,%esi
call   1060 <pow@plt>
mov    %eax,%ebx
movsd  0xdcd(%rip),%xmm0
subsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x90(%rsp)
cvttsd2si %xmm0,%r13d
mov    %r13d,%edi
mov    $0x1,%esi
call   1060 <pow@plt>
add    %ebx,%eax
xorps  %xmm3,%xmm3
cvtsi2sd %eax,%xmm3
addsd  0xda3(%rip),%xmm3
divsd  0xda3(%rip),%xmm3
movapd %xmm3,%xmm0
movsd  0x10(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd7d(%rip),%xmm4
movapd %xmm4,%xmm2
subsd  %xmm0,%xmm2
movsd  0x78(%rsp),%xmm0
mulsd  %xmm3,%xmm0
movapd %xmm3,%xmm6
mulsd  %xmm1,%xmm0
movapd %xmm1,%xmm3
movsd  0x70(%rsp),%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x68(%rsp),%xmm0
mulsd  %xmm6,%xmm0
subsd  %xmm3,%xmm4
mulsd  %xmm4,%xmm0
movapd %xmm4,%xmm5
movsd  %xmm4,0x30(%rsp)
movsd  0xd45(%rip),%xmm4
divsd  %xmm4,%xmm0
subsd  %xmm0,%xmm1
movsd  %xmm1,(%r15)
movsd  0xb0(%rsp),%xmm0
movsd  %xmm6,0x20(%rsp)
mulsd  %xmm6,%xmm0
mulsd  %xmm3,%xmm0
mulsd  0xa8(%rsp),%xmm2
addsd  %xmm0,%xmm2
movsd  0xa0(%rsp),%xmm0
mulsd  %xmm6,%xmm0
mulsd  %xmm5,%xmm0
divsd  %xmm4,%xmm0
subsd  %xmm0,%xmm2
movsd  %xmm2,0x38(%rsp)
mov    %r14d,%edi
xor    %esi,%esi
call   1060 <pow@plt>
mov    %eax,%ebx
mov    %r13d,%edi
xor    %esi,%esi
call   1060 <pow@plt>
sub    %eax,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
mulsd  0xcd6(%rip),%xmm0
divsd  0xcbe(%rip),%xmm0
movsd  %xmm0,0x28(%rsp)
cvttsd2si 0x8(%rsp),%edi
mov    $0x3,%esi
call   1060 <pow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xcb1(%rip),%xmm0
mulsd  0x20(%rsp),%xmm0
movsd  0x78(%rsp),%xmm1
movsd  0x70(%rsp),%xmm2
movapd %xmm1,%xmm3
subsd  %xmm2,%xmm3
movsd  0x68(%rsp),%xmm4
movsd  0x30(%rsp),%xmm5
mulsd  %xmm4,%xmm5
movsd  0xc6f(%rip),%xmm6
divsd  %xmm6,%xmm4
addsd  %xmm3,%xmm4
mulsd  %xmm0,%xmm4
movsd  0x10(%rsp),%xmm3
mulsd  %xmm3,%xmm2
mulsd  %xmm1,%xmm3
subsd  %xmm2,%xmm3
divsd  %xmm6,%xmm5
subsd  %xmm5,%xmm3
mulsd  0x28(%rsp),%xmm3
movsd  0x60(%rsp),%xmm0
movsd  0x38(%rsp),%xmm1
mulsd  %xmm0,%xmm1
divsd  0xc43(%rip),%xmm1
addsd  (%r15),%xmm1
addsd  %xmm4,%xmm3
movsd  0x8(%rsp),%xmm0
mulsd  %xmm3,%xmm0
subsd  %xmm0,%xmm1
movapd %xmm3,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%r12)
subsd  %xmm3,%xmm1
mov    0x58(%rsp),%rax
movsd  %xmm1,(%rax)
test   %ebp,%ebp
je     17e5 <corpbespin+0x695>
mov    %r14d,%edi
xor    %esi,%esi
call   1060 <pow@plt>
mov    %eax,%ebx
mov    %r13d,%edi
xor    %esi,%esi
call   1060 <pow@plt>
add    %ebx,%eax
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
mulsd  0xbea(%rip),%xmm1
movsd  %xmm1,0x8(%rsp)
movapd %xmm1,%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x30(%rsp)
mulsd  %xmm0,%xmm1
movapd %xmm1,0x10(%rsp)
mov    %r14d,%edi
xor    %esi,%esi
call   1060 <pow@plt>
mov    %eax,%ebp
mov    %r13d,%edi
xor    %esi,%esi
call   1060 <pow@plt>
movsd  (%r15),%xmm0
xorpd  0xc11(%rip),%xmm0
mov    %eax,%ebx
movsd  0xba7(%rip),%xmm1
mulsd  0x10(%rsp),%xmm1
movsd  %xmm1,0x38(%rsp)
divsd  %xmm1,%xmm0
call   1040 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0xb8b(%rip),%xmm0
movsd  0xb8b(%rip),%xmm4
movapd %xmm4,%xmm2
divsd  %xmm0,%xmm2
movsd  0x40(%rsp),%xmm1
divsd  0x8(%rsp),%xmm1
movapd %xmm2,%xmm0
mulsd  %xmm2,%xmm0
mulsd  %xmm1,%xmm1
movapd %xmm1,%xmm3
mulsd  %xmm1,%xmm3
mulsd  %xmm0,%xmm3
movsd  %xmm2,0x20(%rsp)
movapd %xmm2,%xmm5
mulsd  %xmm1,%xmm5
movsd  0xaf9(%rip),%xmm2
addsd  %xmm2,%xmm5
movsd  %xmm3,0x28(%rsp)
addsd  %xmm5,%xmm3
movsd  %xmm5,0x88(%rsp)
movapd %xmm5,%xmm0
mulsd  %xmm4,%xmm0
movsd  %xmm1,0x40(%rsp)
mulsd  %xmm1,%xmm0
movsd  %xmm3,0x80(%rsp)
divsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
call   1050 <log@plt>
movsd  0x60(%rsp),%xmm8
mulsd  0x38(%rsp),%xmm0
mov    0x50(%rsp),%rax
movsd  %xmm0,(%rax)
cmpl   $0x0,0x4c(%rsp)
je     17e5 <corpbespin+0x695>
sub    %ebx,%ebp
movsd  0x88(%rsp),%xmm2
movapd %xmm2,%xmm1
movsd  0x80(%rsp),%xmm3
divsd  %xmm3,%xmm1
movsd  0xa74(%rip),%xmm10
addsd  %xmm10,%xmm2
movsd  0x28(%rsp),%xmm12
mulsd  %xmm2,%xmm12
mulsd  %xmm3,%xmm3
divsd  %xmm3,%xmm12
movsd  0x40(%rsp),%xmm9
movapd %xmm9,%xmm2
movsd  0xa96(%rip),%xmm4
mulsd  %xmm4,%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm10,%xmm2
divsd  %xmm2,%xmm10
movsd  0xa8c(%rip),%xmm3
movapd %xmm0,%xmm2
mulsd  %xmm3,%xmm2
movsd  0x20(%rsp),%xmm13
addsd  %xmm4,%xmm13
mulsd  %xmm13,%xmm3
movsd  (%r15),%xmm4
mulsd  %xmm4,%xmm3
movapd 0x10(%rsp),%xmm11
mulsd  0xa62(%rip),%xmm11
divsd  %xmm11,%xmm3
addsd  0xa5d(%rip),%xmm3
mulsd  %xmm12,%xmm3
movapd %xmm1,%xmm5
addsd  %xmm1,%xmm5
subsd  %xmm3,%xmm5
movsd  0xa4c(%rip),%xmm3
mulsd  %xmm9,%xmm3
movsd  0x30(%rsp),%xmm6
mulsd  %xmm3,%xmm6
xorps  %xmm3,%xmm3
cvtsi2sd %ebp,%xmm3
mulsd  0xa0e(%rip),%xmm3
mulsd  %xmm5,%xmm6
movsd  0x8(%rsp),%xmm7
divsd  %xmm7,%xmm2
mulsd  %xmm10,%xmm6
addsd  %xmm2,%xmm6
mulsd  %xmm3,%xmm6
movsd  (%r12),%xmm3
subsd  %xmm4,%xmm3
mulsd  %xmm13,%xmm3
divsd  %xmm11,%xmm3
movsd  0x9ff(%rip),%xmm2
addsd  %xmm2,%xmm3
mulsd  %xmm12,%xmm3
movapd 0xa0e(%rip),%xmm4
xorpd  %xmm11,%xmm4
mulsd  %xmm9,%xmm4
movsd  0x9e4(%rip),%xmm5
mulsd  %xmm1,%xmm5
addsd  %xmm5,%xmm3
mulsd  %xmm4,%xmm3
mulsd  %xmm10,%xmm3
addsd  %xmm0,%xmm3
movsd  0x90(%rsp),%xmm0
mulsd  %xmm6,%xmm0
addsd  %xmm3,%xmm0
mov    0xf0(%rsp),%rax
movsd  %xmm0,(%rax)
mov    0x58(%rsp),%rax
movsd  (%rax),%xmm0
subsd  (%r15),%xmm0
mulsd  %xmm13,%xmm0
divsd  %xmm11,%xmm0
addsd  %xmm2,%xmm0
mulsd  %xmm12,%xmm0
addsd  %xmm5,%xmm0
mulsd  %xmm4,%xmm0
mulsd  0x98(%rsp),%xmm6
mulsd  %xmm10,%xmm0
mov    0x50(%rsp),%rax
addsd  (%rax),%xmm0
subsd  %xmm6,%xmm0
mov    0xf8(%rsp),%rax
movsd  %xmm0,(%rax)
mulsd  0x962(%rip),%xmm7
mulsd  0x962(%rip),%xmm7
mulsd  %xmm8,%xmm7
subsd  %xmm12,%xmm1
mulsd  %xmm7,%xmm1
mulsd  %xmm10,%xmm1
mov    0x100(%rsp),%rax
movsd  %xmm1,(%rax)
add    $0xb8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @corpbespin(double %0, double %1, double %2, i32 %3, i32 %4, double* %5, double* %6, double* %7, double* %8, double* %9, double* %10, double* %11) {
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca i32
%17 = alloca i32
%18 = alloca double*
%19 = alloca double*
%20 = alloca double*
%21 = alloca double*
%22 = alloca double*
%23 = alloca double*
%24 = alloca double*
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
%41 = alloca double
%42 = alloca double
%43 = alloca double
%44 = alloca double
%45 = alloca double
%46 = alloca double
%47 = alloca double
%48 = alloca double
%49 = alloca double
%50 = alloca double
%51 = alloca double
%52 = alloca double
store double %0, double* %13
store double %1, double* %14
store double %2, double* %15
store i32 %3, i32* %16
store i32 %4, i32* %17
store double* %5, double** %18
store double* %6, double** %19
store double* %7, double** %20
store double* %8, double** %21
store double* %9, double** %22
store double* %10, double** %23
store double* %11, double** %24
%53 = load double, double* %13
%54 = call double @sqrt(double %53)
store double %54, double* %37
%55 = load double, double* %37
%56 = call i32 @gcor2(double 3.109070e-02, double 2.137000e-01, double 0x401E61FF2E48E8A7, double 3.587600e+00, double 1.638200e+00, double 4.929400e-01, double %55, double* %32, double* %36)
%57 = load double, double* %37
%58 = call i32 @gcor2(double 0x3F8FD63D8ED6C7F8, double 2.054800e-01, double 1.411890e+01, double 6.197700e+00, double 3.366200e+00, double 6.251700e-01, double %57, double* %31, double* %35)
%59 = load double, double* %37
%60 = call i32 @gcor2(double 1.688690e-02, double 1.112500e-01, double 1.035700e+01, double 3.623100e+00, double 8.802600e-01, double 4.967100e-01, double %59, double* %34, double* %52)
%61 = load double, double* %15
%62 = load double, double* %15
%63 = fmul double %61, %62
%64 = load double, double* %15
%65 = fmul double %63, %64
%66 = load double, double* %15
%67 = fmul double %65, %66
store double %67, double* %39
%68 = load double, double* %15
%69 = fadd double 1.000000e+00, %68
%70 = fptosi double %69 to i32
%71 = call i32 @pow(i32 %70, i32 1)
%72 = load double, double* %15
%73 = fsub double 1.000000e+00, %72
%74 = fptosi double %73 to i32
%75 = call i32 @pow(i32 %74, i32 1)
%76 = add nsw i32 %71, %75
%77 = sitofp i32 %76 to double
%78 = fsub double %77, 2.000000e+00
%79 = fdiv double %78, 0x3FE0A28BE635CA2C
store double %79, double* %38
%80 = load double, double* %32
%81 = load double, double* %38
%82 = load double, double* %39
%83 = fneg double %81
%84 = call double @llvm.fmuladd.f64(double %83, double %82, double 1.000000e+00)
%85 = load double, double* %31
%86 = load double, double* %38
%87 = fmul double %85, %86
%88 = load double, double* %39
%89 = fmul double %87, %88
%90 = call double @llvm.fmuladd.f64(double %80, double %84, double %89)
%91 = load double, double* %34
%92 = load double, double* %38
%93 = fmul double %91, %92
%94 = load double, double* %39
%95 = fsub double 1.000000e+00, %94
%96 = fmul double %93, %95
%97 = fdiv double %96, 0x3FFB5BD60DAF8057
%98 = fsub double %90, %97
%99 = load double*, double** %18
store double %98, double* %99
%100 = load double, double* %36
%101 = load double, double* %38
%102 = load double, double* %39
%103 = fneg double %101
%104 = call double @llvm.fmuladd.f64(double %103, double %102, double 1.000000e+00)
%105 = load double, double* %35
%106 = load double, double* %38
%107 = fmul double %105, %106
%108 = load double, double* %39
%109 = fmul double %107, %108
%110 = call double @llvm.fmuladd.f64(double %100, double %104, double %109)
%111 = load double, double* %52
%112 = load double, double* %38
%113 = fmul double %111, %112
%114 = load double, double* %39
%115 = fsub double 1.000000e+00, %114
%116 = fmul double %113, %115
%117 = fdiv double %116, 0x3FFB5BD60DAF8057
%118 = fsub double %110, %117
store double %118, double* %40
%119 = load double, double* %15
%120 = fadd double 1.000000e+00, %119
%121 = fptosi double %120 to i32
%122 = call i32 @pow(i32 %121, i32 0)
%123 = load double, double* %15
%124 = fsub double 1.000000e+00, %123
%125 = fptosi double %124 to i32
%126 = call i32 @pow(i32 %125, i32 0)
%127 = sub nsw i32 %122, %126
%128 = sitofp i32 %127 to double
%129 = fmul double 0x3FF5555555555555, %128
%130 = fdiv double %129, 0x3FE0A28BE635CA2C
store double %130, double* %41
%131 = load double, double* %15
%132 = fptosi double %131 to i32
%133 = call i32 @pow(i32 %132, i32 3)
%134 = sitofp i32 %133 to double
%135 = fmul double 4.000000e+00, %134
%136 = load double, double* %38
%137 = fmul double %135, %136
%138 = load double, double* %31
%139 = load double, double* %32
%140 = fsub double %138, %139
%141 = load double, double* %34
%142 = fdiv double %141, 0x3FFB5BD60DAF8057
%143 = fadd double %140, %142
%144 = load double, double* %41
%145 = load double, double* %39
%146 = load double, double* %31
%147 = load double, double* %39
%148 = load double, double* %32
%149 = fmul double %147, %148
%150 = fneg double %149
%151 = call double @llvm.fmuladd.f64(double %145, double %146, double %150)
%152 = load double, double* %39
%153 = fsub double 1.000000e+00, %152
%154 = load double, double* %34
%155 = fmul double %153, %154
%156 = fdiv double %155, 0x3FFB5BD60DAF8057
%157 = fsub double %151, %156
%158 = fmul double %144, %157
%159 = call double @llvm.fmuladd.f64(double %137, double %143, double %158)
store double %159, double* %42
%160 = load double*, double** %18
%161 = load double, double* %160
%162 = load double, double* %13
%163 = load double, double* %40
%164 = fmul double %162, %163
%165 = fdiv double %164, 3.000000e+00
%166 = fsub double %161, %165
%167 = load double, double* %15
%168 = load double, double* %42
%169 = fneg double %167
%170 = call double @llvm.fmuladd.f64(double %169, double %168, double %166)
store double %170, double* %43
%171 = load double, double* %43
%172 = load double, double* %42
%173 = fadd double %171, %172
%174 = load double*, double** %19
store double %173, double* %174
%175 = load double, double* %43
%176 = load double, double* %42
%177 = fsub double %175, %176
%178 = load double*, double** %20
store double %177, double* %178
%179 = load i32, i32* %16
%180 = icmp eq i32 %179, 0
br i1 %180, label %181, label %182
181: ; preds = %12
br label %382
182: ; preds = %12
%183 = load double, double* %15
%184 = fadd double 1.000000e+00, %183
%185 = fptosi double %184 to i32
%186 = call i32 @pow(i32 %185, i32 0)
%187 = load double, double* %15
%188 = fsub double 1.000000e+00, %187
%189 = fptosi double %188 to i32
%190 = call i32 @pow(i32 %189, i32 0)
%191 = add nsw i32 %186, %190
%192 = sitofp i32 %191 to double
%193 = fmul double 5.000000e-01, %192
store double %193, double* %44
%194 = load double, double* %44
%195 = load double, double* %44
%196 = fmul double %194, %195
store double %196, double* %45
%197 = load double, double* %45
%198 = load double, double* %44
%199 = fmul double %197, %198
store double %199, double* %46
%200 = load double, double* %15
%201 = fadd double 1.000000e+00, %200
%202 = fptosi double %201 to i32
%203 = call i32 @pow(i32 %202, i32 0)
%204 = load double, double* %15
%205 = fsub double 1.000000e+00, %204
%206 = fptosi double %205 to i32
%207 = call i32 @pow(i32 %206, i32 0)
%208 = sub nsw i32 %203, %207
%209 = sitofp i32 %208 to double
%210 = fmul double 0x3FD5555555555555, %209
store double %210, double* %47
%211 = load double*, double** %18
%212 = load double, double* %211
%213 = fneg double %212
%214 = load double, double* %46
%215 = fmul double %214, 0x3F9FD63CF1FB1944
%216 = fdiv double %213, %215
store double %216, double* %33
%217 = load double, double* %33
%218 = call i32 @exp(double %217)
%219 = sitofp i32 %218 to double
%220 = fsub double %219, 1.000000e+00
%221 = fdiv double 0x40012B444959F3BB, %220
store double %221, double* %25
%222 = load double, double* %44
%223 = load double, double* %14
%224 = fdiv double %223, %222
store double %224, double* %14
%225 = load double, double* %25
%226 = load double, double* %25
%227 = fmul double %225, %226
store double %227, double* %26
%228 = load double, double* %14
%229 = load double, double* %14
%230 = fmul double %228, %229
store double %230, double* %28
%231 = load double, double* %28
%232 = load double, double* %28
%233 = fmul double %231, %232
store double %233, double* %30
%234 = load double, double* %25
%235 = load double, double* %28
%236 = call double @llvm.fmuladd.f64(double %234, double %235, double 1.000000e+00)
store double %236, double* %27
%237 = load double, double* %25
%238 = load double, double* %28
%239 = call double @llvm.fmuladd.f64(double %237, double %238, double 1.000000e+00)
%240 = load double, double* %26
%241 = load double, double* %30
%242 = call double @llvm.fmuladd.f64(double %240, double %241, double %239)
store double %242, double* %29
%243 = load double, double* %46
%244 = fmul double %243, 0x3F9FD63CF1FB1944
%245 = load double, double* %27
%246 = fmul double %245, 0x40012B444959F3BB
%247 = load double, double* %28
%248 = fmul double %246, %247
%249 = load double, double* %29
%250 = fdiv double %248, %249
%251 = fadd double %250, 1.000000e+00
%252 = call double @log(double %251)
%253 = fmul double %244, %252
%254 = load double*, double** %21
store double %253, double* %254
%255 = load i32, i32* %17
%256 = icmp eq i32 %255, 0
br i1 %256, label %257, label %258
257: ; preds = %182
br label %382
258: ; preds = %182
%259 = load double, double* %27
%260 = load double, double* %29
%261 = fdiv double %259, %260
store double %261, double* %48
%262 = load double, double* %26
%263 = load double, double* %30
%264 = fmul double %262, %263
%265 = load double, double* %27
%266 = fadd double 1.000000e+00, %265
%267 = fmul double %264, %266
%268 = load double, double* %29
%269 = load double, double* %29
%270 = fmul double %268, %269
%271 = fdiv double %267, %270
store double %271, double* %49
%272 = load double, double* %28
%273 = fmul double 0x40012B444959F3BB, %272
%274 = load double, double* %48
%275 = call double @llvm.fmuladd.f64(double %273, double %274, double 1.000000e+00)
%276 = fdiv double 1.000000e+00, %275
store double %276, double* %50
%277 = load double, double* %47
%278 = load double*, double** %21
%279 = load double, double* %278
%280 = fmul double 3.000000e+00, %279
%281 = load double, double* %44
%282 = fdiv double %280, %281
%283 = load double, double* %28
%284 = fmul double 0x3FB114DC32AE4A6A, %283
%285 = load double, double* %45
%286 = fmul double %284, %285
%287 = load double, double* %48
%288 = load double, double* %49
%289 = load double, double* %25
%290 = fadd double %289, 0x40012B444959F3BB
%291 = fmul double 3.000000e+00, %290
%292 = load double*, double** %18
%293 = load double, double* %292
%294 = fmul double %291, %293
%295 = load double, double* %46
%296 = fmul double 0x3FB114DC32AE4A6A, %295
%297 = fdiv double %294, %296
%298 = fadd double %297, 2.000000e+00
%299 = fmul double %288, %298
%300 = fneg double %299
%301 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %287, double %300)
%302 = fmul double %286, %301
%303 = load double, double* %50
%304 = fneg double %302
%305 = call double @llvm.fmuladd.f64(double %304, double %303, double %282)
%306 = fmul double %277, %305
store double %306, double* %51
%307 = load double*, double** %21
%308 = load double, double* %307
%309 = load double, double* %46
%310 = fmul double 0x3FB114DC32AE4A6A, %309
%311 = load double, double* %28
%312 = fmul double %310, %311
%313 = load double, double* %48
%314 = load double, double* %49
%315 = load double, double* %25
%316 = fadd double %315, 0x40012B444959F3BB
%317 = load double*, double** %19
%318 = load double, double* %317
%319 = load double*, double** %18
%320 = load double, double* %319
%321 = fsub double %318, %320
%322 = fmul double %316, %321
%323 = load double, double* %46
%324 = fmul double 0x3FB114DC32AE4A6A, %323
%325 = fdiv double %322, %324
%326 = fsub double %325, 0x4002AAAAAAAAAAAB
%327 = fmul double %314, %326
%328 = call double @llvm.fmuladd.f64(double 0x4002AAAAAAAAAAAB, double %313, double %327)
%329 = fmul double %312, %328
%330 = load double, double* %50
%331 = fneg double %329
%332 = call double @llvm.fmuladd.f64(double %331, double %330, double %308)
%333 = load double, double* %51
%334 = load double, double* %15
%335 = fsub double 1.000000e+00, %334
%336 = call double @llvm.fmuladd.f64(double %333, double %335, double %332)
%337 = load double*, double** %22
store double %336, double* %337
%338 = load double*, double** %21
%339 = load double, double* %338
%340 = load double, double* %46
%341 = fmul double 0x3FB114DC32AE4A6A, %340
%342 = load double, double* %28
%343 = fmul double %341, %342
%344 = load double, double* %48
%345 = load double, double* %49
%346 = load double, double* %25
%347 = fadd double %346, 0x40012B444959F3BB
%348 = load double*, double** %20
%349 = load double, double* %348
%350 = load double*, double** %18
%351 = load double, double* %350
%352 = fsub double %349, %351
%353 = fmul double %347, %352
%354 = load double, double* %46
%355 = fmul double 0x3FB114DC32AE4A6A, %354
%356 = fdiv double %353, %355
%357 = fsub double %356, 0x4002AAAAAAAAAAAB
%358 = fmul double %345, %357
%359 = call double @llvm.fmuladd.f64(double 0x4002AAAAAAAAAAAB, double %344, double %358)
%360 = fmul double %343, %359
%361 = load double, double* %50
%362 = fneg double %360
%363 = call double @llvm.fmuladd.f64(double %362, double %361, double %339)
%364 = load double, double* %51
%365 = load double, double* %15
%366 = fadd double 1.000000e+00, %365
%367 = fneg double %364
%368 = call double @llvm.fmuladd.f64(double %367, double %366, double %363)
%369 = load double*, double** %23
store double %368, double* %369
%370 = load double, double* %44
%371 = fmul double 0x3FA114DC32AE4A6A, %370
%372 = fmul double %371, 0x3FDA3100F463A2A9
%373 = load double, double* %13
%374 = fmul double %372, %373
%375 = load double, double* %48
%376 = load double, double* %49
%377 = fsub double %375, %376
%378 = fmul double %374, %377
%379 = load double, double* %50
%380 = fmul double %378, %379
%381 = load double*, double** %24
store double %380, double* %381
br label %382
382: ; preds = %258, %257, %181
ret void
}

LLVM IR (-O2):
define void @corpbespin(double %0, double %1, double %2, i32 %3, i32 %4, double* nocapture %5, double* nocapture %6, double* nocapture %7, double* nocapture %8, double* nocapture writeonly %9, double* nocapture writeonly %10, double* nocapture writeonly %11) {
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = bitcast double* %13 to i8*
%20 = bitcast double* %14 to i8*
%21 = bitcast double* %15 to i8*
%22 = bitcast double* %16 to i8*
%23 = bitcast double* %17 to i8*
%24 = bitcast double* %18 to i8*
%25 = tail call double @sqrt(double %0)
%26 = call i32 @gcor2(double 3.109070e-02, double 2.137000e-01, double 0x401E61FF2E48E8A7, double 3.587600e+00, double 1.638200e+00, double 4.929400e-01, double %25, double* %14, double* %17)
%27 = call i32 @gcor2(double 0x3F8FD63D8ED6C7F8, double 2.054800e-01, double 1.411890e+01, double 6.197700e+00, double 3.366200e+00, double 6.251700e-01, double %25, double* %13, double* %16)
%28 = call i32 @gcor2(double 1.688690e-02, double 1.112500e-01, double 1.035700e+01, double 3.623100e+00, double 8.802600e-01, double 4.967100e-01, double %25, double* %15, double* %18)
%29 = fmul double %2, %2
%30 = fmul double %29, %2
%31 = fmul double %30, %2
%32 = fadd double %2, 1.000000e+00
%33 = fptosi double %32 to i32
%34 = call i32 @pow(i32 %33, i32 1)
%35 = fsub double 1.000000e+00, %2
%36 = fptosi double %35 to i32
%37 = call i32 @pow(i32 %36, i32 1)
%38 = add nsw i32 %37, %34
%39 = sitofp i32 %38 to double
%40 = fadd double %39, -2.000000e+00
%41 = fdiv double %40, 0x3FE0A28BE635CA2C
%42 = load double, double* %14
%43 = fneg double %41
%44 = call double @llvm.fmuladd.f64(double %43, double %31, double 1.000000e+00)
%45 = load double, double* %13
%46 = fmul double %45, %41
%47 = fmul double %31, %46
%48 = call double @llvm.fmuladd.f64(double %42, double %44, double %47)
%49 = load double, double* %15
%50 = fmul double %49, %41
%51 = fsub double 1.000000e+00, %31
%52 = fmul double %51, %50
%53 = fdiv double %52, 0x3FFB5BD60DAF8057
%54 = fsub double %48, %53
store double %54, double* %5
%55 = load double, double* %17
%56 = load double, double* %16
%57 = fmul double %41, %56
%58 = fmul double %31, %57
%59 = call double @llvm.fmuladd.f64(double %55, double %44, double %58)
%60 = load double, double* %18
%61 = fmul double %41, %60
%62 = fmul double %51, %61
%63 = fdiv double %62, 0x3FFB5BD60DAF8057
%64 = fsub double %59, %63
%65 = call i32 @pow(i32 %33, i32 0)
%66 = call i32 @pow(i32 %36, i32 0)
%67 = sub nsw i32 %65, %66
%68 = sitofp i32 %67 to double
%69 = fmul double %68, 0x3FF5555555555555
%70 = fdiv double %69, 0x3FE0A28BE635CA2C
%71 = fptosi double %2 to i32
%72 = call i32 @pow(i32 %71, i32 3)
%73 = sitofp i32 %72 to double
%74 = fmul double %73, 4.000000e+00
%75 = fmul double %41, %74
%76 = load double, double* %13
%77 = load double, double* %14
%78 = fsub double %76, %77
%79 = load double, double* %15
%80 = fdiv double %79, 0x3FFB5BD60DAF8057
%81 = fadd double %78, %80
%82 = fneg double %31
%83 = fmul double %77, %82
%84 = call double @llvm.fmuladd.f64(double %31, double %76, double %83)
%85 = fmul double %51, %79
%86 = fdiv double %85, 0x3FFB5BD60DAF8057
%87 = fsub double %84, %86
%88 = fmul double %70, %87
%89 = call double @llvm.fmuladd.f64(double %75, double %81, double %88)
%90 = load double, double* %5
%91 = fmul double %64, %0
%92 = fdiv double %91, 3.000000e+00
%93 = fsub double %90, %92
%94 = fneg double %2
%95 = call double @llvm.fmuladd.f64(double %94, double %89, double %93)
%96 = fadd double %89, %95
store double %96, double* %6
%97 = fsub double %95, %89
store double %97, double* %7
%98 = icmp eq i32 %3, 0
br i1 %98, label %191, label %99
99: ; preds = %12
%100 = call i32 @pow(i32 %33, i32 0)
%101 = call i32 @pow(i32 %36, i32 0)
%102 = add nsw i32 %101, %100
%103 = sitofp i32 %102 to double
%104 = fmul double %103, 5.000000e-01
%105 = fmul double %104, %104
%106 = fmul double %104, %105
%107 = call i32 @pow(i32 %33, i32 0)
%108 = call i32 @pow(i32 %36, i32 0)
%109 = load double, double* %5
%110 = fneg double %109
%111 = fmul double %106, 0x3F9FD63CF1FB1944
%112 = fdiv double %110, %111
%113 = call i32 @exp(double %112)
%114 = sitofp i32 %113 to double
%115 = fadd double %114, -1.000000e+00
%116 = fdiv double 0x40012B444959F3BB, %115
%117 = fdiv double %1, %104
%118 = fmul double %116, %116
%119 = fmul double %117, %117
%120 = fmul double %119, %119
%121 = call double @llvm.fmuladd.f64(double %116, double %119, double 1.000000e+00)
%122 = call double @llvm.fmuladd.f64(double %118, double %120, double %121)
%123 = fmul double %121, 0x40012B444959F3BB
%124 = fmul double %119, %123
%125 = fdiv double %124, %122
%126 = fadd double %125, 1.000000e+00
%127 = call double @log(double %126)
%128 = fmul double %127, %111
store double %128, double* %8
%129 = icmp eq i32 %4, 0
br i1 %129, label %191, label %130
130: ; preds = %99
%131 = sub nsw i32 %107, %108
%132 = sitofp i32 %131 to double
%133 = fmul double %132, 0x3FD5555555555555
%134 = fdiv double %121, %122
%135 = fmul double %120, %118
%136 = fadd double %121, 1.000000e+00
%137 = fmul double %135, %136
%138 = fmul double %122, %122
%139 = fdiv double %137, %138
%140 = fmul double %119, 0x40012B444959F3BB
%141 = call double @llvm.fmuladd.f64(double %140, double %134, double 1.000000e+00)
%142 = fdiv double 1.000000e+00, %141
%143 = fmul double %128, 3.000000e+00
%144 = fdiv double %143, %104
%145 = fadd double %116, 0x40012B444959F3BB
%146 = fmul double %145, 3.000000e+00
%147 = load double, double* %5
%148 = fmul double %146, %147
%149 = fmul double %106, 0x3FB114DC32AE4A6A
%150 = fdiv double %148, %149
%151 = fadd double %150, 2.000000e+00
%152 = fneg double %139
%153 = fmul double %151, %152
%154 = call double @llvm.fmuladd.f64(double %134, double 2.000000e+00, double %153)
%155 = fmul double %119, 0xBFB114DC32AE4A6A
%156 = fmul double %105, %155
%157 = fmul double %156, %154
%158 = call double @llvm.fmuladd.f64(double %157, double %142, double %144)
%159 = fmul double %133, %158
%160 = load double, double* %6
%161 = fsub double %160, %147
%162 = fmul double %145, %161
%163 = fdiv double %162, %149
%164 = fadd double %163, 0xC002AAAAAAAAAAAB
%165 = fmul double %139, %164
%166 = call double @llvm.fmuladd.f64(double %134, double 0x4002AAAAAAAAAAAB, double %165)
%167 = fneg double %149
%168 = fmul double %119, %167
%169 = fmul double %168, %166
%170 = call double @llvm.fmuladd.f64(double %169, double %142, double %128)
%171 = call double @llvm.fmuladd.f64(double %159, double %35, double %170)
store double %171, double* %9
%172 = load double, double* %8
%173 = load double, double* %7
%174 = load double, double* %5
%175 = fsub double %173, %174
%176 = fmul double %145, %175
%177 = fdiv double %176, %149
%178 = fadd double %177, 0xC002AAAAAAAAAAAB
%179 = fmul double %139, %178
%180 = call double @llvm.fmuladd.f64(double %134, double 0x4002AAAAAAAAAAAB, double %179)
%181 = fmul double %168, %180
%182 = call double @llvm.fmuladd.f64(double %181, double %142, double %172)
%183 = fneg double %159
%184 = call double @llvm.fmuladd.f64(double %183, double %32, double %182)
store double %184, double* %10
%185 = fmul double %104, 0x3FA114DC32AE4A6A
%186 = fmul double %185, 0x3FDA3100F463A2A9
%187 = fmul double %186, %0
%188 = fsub double %134, %139
%189 = fmul double %187, %188
%190 = fmul double %142, %189
store double %190, double* %11
br label %191
191: ; preds = %99, %12, %130
ret void
}