#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 cos(double);
double exp(double);
double pow(double, double);
double sin(double);
void RunEngineCycle(double stroke, double bore, double conrod, double compRatio,
                    double sparkAngle, int nCyl, double IVO, double IVC,
                    double Liv, double Div, double k, double R, double Ru,
                    double Hu, double Tw, double AFR, double Pexth, double Tamb,
                    double Pamb, double Air_Density, double MwAir,
                    double MwFuel, double RPM, double Throttle,
                    double thetastep, double Fuel_Density, double *Power,
                    double *Torque, double *FuelBurn, double *EngineWeight) {
  double disp, l_a, resVol, n, t_to_theta, intake_close, intake_open;
  double burnDuration, burnEnd, r_burnDuration, T_exh, m_res, Cm, Cf;
  double C_heat, Pratio_crit, Mw, h_ind, FMEP, P0, T0, C1, C2;
  double e1, e2, Qfac, valve1, mass_in, Qloss, P, Pmix, pmi;
  double dWeibe_dtheta, A, V, dV_dtheta, s_theta, c_theta;
  double term2, Q, dQ_dtheta, phi, Ar, LD, CD, Tg, h, Lv;
  double theta, thetad, thetaSinceSpark, Pratio, flow_direction;
  double BMEP, term, dm_dtheta;
  disp = .25 * 3.1415926535 * bore * bore * stroke * nCyl;
  l_a = conrod / (.5 * stroke);
  resVol = 1.0 / (compRatio - 1.0);
  n = RPM * .001;
  t_to_theta = RPM / 60.0 * 2.0 * 3.1415926535;
  thetastep *= 3.1415926535 / 180.0;
  intake_close = (IVC - 180.0) * 3.1415926535 / 180.0;
  intake_open = (IVO - 360.0) * 3.1415926535 / 180.0;
  burnDuration = (-1.6189 * n * n + 19.886 * n + 39.951) * 3.1415926535 / 180.0;
  burnEnd = 2.0 * burnDuration;
  r_burnDuration = 1.0 / burnDuration;
  T_exh = 3.3955 * n * n * n - 51.9 * n * n + 279.49 * n + 676.21;
  m_res = 1.52 * (101.325) * 30.4 * disp / ((compRatio - 1.0) * T_exh * Ru);
  Cm = 2.0 * stroke * RPM / 60.0;
  Cf = -0.019738 * n + 0.986923;
  C_heat = -0.043624 * n + 1.2953;
  Pratio_crit = pow(2.0 / (k + 1.0), k / (k - 1.0));
  Mw = (AFR * MwAir + MwFuel) / (1.0 + AFR);
  h_ind = 130.0 * pow(disp, -0.06) * pow(Cm + 1.4, 0.8);
  FMEP = .05 * n * n + .15 * n + .97;
  P0 = Pamb * Cf;
  T0 = Tamb * C_heat;
  C1 = (2000.0 * Mw / (Ru * T0) * (k / (k - 1)));
  C2 = thetastep * Throttle * P0 / t_to_theta;
  e1 = 2.0 / k;
  e2 = (k + 1.0) / k;
  Qfac = .95 * Hu / (1.0 + AFR);
  valve1 = 3.1415926535 / (IVO + IVC + 180);
  mass_in = 0.0;
  Qloss = 0.0;
  P = Pexth;
  Pmix = 0.0;
  pmi = 0.0;
  for (thetad = -360; thetad < 181; thetad++) {
    theta = thetad * thetastep;
    s_theta = sin(theta);
    c_theta = cos(theta);
    term = pow(l_a * l_a - s_theta * s_theta, .5);
    term2 = (l_a + 1.0 - c_theta - term);
    V = disp * (resVol + .5 * term2);
    dV_dtheta = .5 * disp * s_theta * (1.0 + c_theta / term);
    A = .5 * 3.1415926535 * bore * (bore + stroke * term2);
    thetaSinceSpark = theta - sparkAngle;
    if (thetaSinceSpark > 0 && thetaSinceSpark < burnEnd) {
      dWeibe_dtheta = -exp(-5.0 * pow(thetaSinceSpark * r_burnDuration, 3.0)) *
                      (-15.0 * pow(thetaSinceSpark * r_burnDuration, 2.0)) *
                      r_burnDuration;
      Q = Qfac * mass_in;
      dQ_dtheta = Q * dWeibe_dtheta;
    } else
      dQ_dtheta = 0.0;
    P += (((k - 1) * (dQ_dtheta - Qloss) - k * P * dV_dtheta) / V) * thetastep;
    if (theta <= intake_close && theta >= intake_open) {
      phi = valve1 * (IVO - IVC + 540 + 2.0 * thetad);
      Lv = .5 * Liv * (1 + cos(phi));
      Ar = 3.1415926535 * Div * Lv;
      LD = Lv / Div;
      CD = (190.47 * LD * LD * LD * LD - 143.13 * LD * LD * LD +
            31.248 * LD * LD - 2.5999 * LD + 0.6913);
      Pratio = (P + 5.5 * Pmix) / P0;
      if (Pratio > 1) {
        Pratio = 1.0 / Pratio;
        flow_direction = -1.0;
      } else
        flow_direction = 1.0;
      if (Pratio < Pratio_crit)
        Pratio = Pratio_crit;
      dm_dtheta = flow_direction * CD * Ar * C2 *
                  pow(C1 * (pow(Pratio, e1) - pow(Pratio, e2)), .5);
      mass_in += dm_dtheta;
    }
    Tg = P * V * Mw / ((mass_in + m_res) * Ru);
    Pmix = mass_in * T0 * Ru / (Mw * V);
    h = h_ind * pow(P, 0.8) * pow(Tg, -0.4);
    Qloss = .001 * h * A * (Tg - Tw) / t_to_theta;
    pmi += (P + Pmix) * dV_dtheta;
  }
  BMEP = pmi * thetastep / disp - FMEP;
  Power[0] = 0.5 * BMEP * RPM * disp * nCyl / 60.0;
  Torque[0] = 30.0 * Power[0] / (3.1415926535 * RPM) * 1000.0;
  FuelBurn[0] = (nCyl * mass_in * 1000.0 * RPM) /
                (60.0 * Fuel_Density * (1.0 + AFR) * 2.0);
  EngineWeight[0] = (100.0 / .002) * (disp - .001) + 75.0;
}


x86 assembly (clang, -O0):
<RunEngineCycle>:
push   %rbp
mov    %rsp,%rbp
sub    $0x270,%rsp
movsd  0x90(%rbp),%xmm8
movsd  0x88(%rbp),%xmm8
movsd  0x80(%rbp),%xmm8
movsd  0x78(%rbp),%xmm8
movsd  0x70(%rbp),%xmm8
movsd  0x68(%rbp),%xmm8
movsd  0x60(%rbp),%xmm8
movsd  0x58(%rbp),%xmm8
movsd  0x50(%rbp),%xmm8
movsd  0x48(%rbp),%xmm8
movsd  0x40(%rbp),%xmm8
movsd  0x38(%rbp),%xmm8
movsd  0x30(%rbp),%xmm8
movsd  0x28(%rbp),%xmm8
movsd  0x20(%rbp),%xmm8
movsd  0x18(%rbp),%xmm8
movsd  0x10(%rbp),%xmm8
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movsd  %xmm3,-0x20(%rbp)
movsd  %xmm4,-0x28(%rbp)
mov    %edi,-0x2c(%rbp)
movsd  %xmm5,-0x38(%rbp)
movsd  %xmm6,-0x40(%rbp)
movsd  %xmm7,-0x48(%rbp)
mov    %rsi,-0x50(%rbp)
mov    %rdx,-0x58(%rbp)
mov    %rcx,-0x60(%rbp)
mov    %r8,-0x68(%rbp)
movsd  0xefb(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
cvtsi2sdl -0x2c(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xec9(%rip),%xmm1
mulsd  -0x8(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x20(%rbp),%xmm1
movsd  0xdd6(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xdca(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  0xe89(%rip),%xmm0
mulsd  0x78(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0x78(%rbp),%xmm0
movsd  0xe17(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xda3(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd77(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xe3b(%rip),%xmm0
mulsd  0x88(%rbp),%xmm0
movsd  %xmm0,0x88(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  0xd4e(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xd3a(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd36(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  0xde5(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xd09(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd05(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0xdb1(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  -0x88(%rbp),%xmm2
ff
movsd  0xd91(%rip),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xd71(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xcad(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xca9(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0xcad(%rip),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  0xc85(%rip),%xmm0
divsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0xd0d(%rip),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
mulsd  -0x88(%rbp),%xmm1
ff
movsd  -0x88(%rbp),%xmm2
ff
movsd  0xce5(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
mulsd  -0x88(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x88(%rbp),%xmm0
ff
movsd  0xc9e(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xc86(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0xc6a(%rip),%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
movsd  0xbd8(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  -0xc0(%rbp),%xmm1
ff
mulsd  0x28(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0xbc3(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  0x78(%rbp),%xmm0
movsd  0xc19(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  0xbed(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbe9(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  0xbb5(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbb1(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  0xb3d(%rip),%xmm1
addsd  0x18(%rbp),%xmm1
movsd  0xb40(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  0x18(%rbp),%xmm1
movsd  0x18(%rbp),%xmm2
movsd  0xb1a(%rip),%xmm3
subsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
call   1060 <pow@plt>
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  0x40(%rbp),%xmm0
movsd  0x68(%rbp),%xmm2
movsd  0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xae6(%rip),%xmm1
addsd  0x40(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  0xb18(%rip),%xmm1
call   1060 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xb00(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x230(%rbp)
ff
movsd  0xae4(%rip),%xmm0
addsd  -0xd0(%rbp),%xmm0
ff
movsd  0xacc(%rip),%xmm1
call   1060 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x230(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  0xaa0(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  -0x88(%rbp),%xmm2
ff
movsd  0xa80(%rip),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xa60(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  0x58(%rbp),%xmm0
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  0x50(%rbp),%xmm0
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  0xa1a(%rip),%xmm0
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  0x28(%rbp),%xmm1
mulsd  -0x110(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  0x18(%rbp),%xmm1
movsd  0x18(%rbp),%xmm2
movsd  0x9d7(%rip),%xmm3
subsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  0x88(%rbp),%xmm0
mulsd  0x80(%rbp),%xmm0
mulsd  -0x108(%rbp),%xmm0
ff
divsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  0x9a3(%rip),%xmm0
divsd  0x18(%rbp),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  0x97e(%rip),%xmm0
addsd  0x18(%rbp),%xmm0
divsd  0x18(%rbp),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  0x96c(%rip),%xmm0
mulsd  0x30(%rbp),%xmm0
movsd  0x957(%rip),%xmm1
addsd  0x40(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x38(%rbp),%xmm1
addsd  -0x40(%rbp),%xmm1
movsd  0x92c(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0x918(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  0x48(%rbp),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  0x8c3(%rip),%xmm0
movsd  %xmm0,-0x1f8(%rbp)
ff
movsd  0x9b3(%rip),%xmm0
ucomisd -0x1f8(%rbp),%xmm0
ff
jbe    1ea1 <RunEngineCycle+0xd61>
movsd  -0x1f8(%rbp),%xmm0
ff
mulsd  0x88(%rbp),%xmm0
movsd  %xmm0,-0x1f0(%rbp)
ff
movsd  -0x1f0(%rbp),%xmm0
ff
call   1030 <sin@plt>
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0x1f0(%rbp),%xmm0
ff
call   1050 <cos@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x190(%rbp),%xmm1
ff
mulsd  -0x190(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x90e(%rip),%xmm1
call   1060 <pow@plt>
movsd  %xmm0,-0x220(%rbp)
ff
movsd  0x821(%rip),%xmm0
addsd  -0x78(%rbp),%xmm0
subsd  -0x198(%rbp),%xmm0
ff
subsd  -0x220(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  -0x80(%rbp),%xmm2
movsd  -0x1a0(%rbp),%xmm1
ff
movsd  0x8c2(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  0x8a6(%rip),%xmm0
mulsd  -0x70(%rbp),%xmm0
mulsd  -0x190(%rbp),%xmm0
ff
movsd  -0x198(%rbp),%xmm2
ff
divsd  -0x220(%rbp),%xmm2
ff
movsd  0x7a9(%rip),%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  0x8a1(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm2
movsd  -0x8(%rbp),%xmm1
movsd  -0x1a0(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x1f0(%rbp),%xmm0
ff
subsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x200(%rbp)
ff
movsd  -0x200(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    19c3 <RunEngineCycle+0x883>
movsd  -0x200(%rbp),%xmm1
ff
movsd  -0xb0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    19c3 <RunEngineCycle+0x883>
movsd  -0x200(%rbp),%xmm0
ff
mulsd  -0xb8(%rbp),%xmm0
ff
movsd  0x832(%rip),%xmm1
call   1060 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x81a(%rip),%xmm0
mulsd  %xmm1,%xmm0
call   1040 <exp@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x238(%rbp)
ff
movsd  -0x200(%rbp),%xmm0
ff
mulsd  -0xb8(%rbp),%xmm0
ff
movsd  0x6ca(%rip),%xmm1
call   1060 <pow@plt>
movaps %xmm0,%xmm2
movsd  -0x238(%rbp),%xmm0
ff
movsd  0x7ba(%rip),%xmm1
mulsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mulsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0x1a8(%rbp),%xmm0
ff
mulsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b0(%rbp)
ff
jmp    19ce <RunEngineCycle+0x88e>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  0x18(%rbp),%xmm0
movsd  0x63d(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  -0x1b0(%rbp),%xmm2
ff
subsd  -0x150(%rbp),%xmm2
ff
movsd  0x18(%rbp),%xmm1
mulsd  -0x158(%rbp),%xmm1
ff
mulsd  -0x188(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
divsd  -0x180(%rbp),%xmm0
ff
movsd  0x88(%rbp),%xmm2
movsd  -0x158(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x1f0(%rbp),%xmm1
ff
movsd  -0x98(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     1d49 <RunEngineCycle+0xc09>
movsd  -0x1f0(%rbp),%xmm0
ff
ucomisd -0xa0(%rbp),%xmm0
ff
jb     1d49 <RunEngineCycle+0xc09>
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x38(%rbp),%xmm2
subsd  -0x40(%rbp),%xmm2
movsd  0x6e3(%rip),%xmm1
addsd  %xmm1,%xmm2
movsd  -0x1f8(%rbp),%xmm1
ff
addsd  %xmm1,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  0x633(%rip),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x240(%rbp)
ff
movsd  -0x1b8(%rbp),%xmm0
ff
call   1050 <cos@plt>
movsd  -0x240(%rbp),%xmm0
ff
add    $0x1,%eax
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  0x50e(%rip),%xmm0
mulsd  0x10(%rbp),%xmm0
mulsd  -0x1e8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0x1e8(%rbp),%xmm0
ff
divsd  0x10(%rbp),%xmm0
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  0x644(%rip),%xmm0
mulsd  -0x1c8(%rbp),%xmm0
ff
mulsd  -0x1c8(%rbp),%xmm0
ff
mulsd  -0x1c8(%rbp),%xmm0
ff
movsd  -0x1c8(%rbp),%xmm2
ff
movsd  0x614(%rip),%xmm1
mulsd  -0x1c8(%rbp),%xmm1
ff
mulsd  -0x1c8(%rbp),%xmm1
ff
mulsd  -0x1c8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x5cd(%rip),%xmm1
mulsd  -0x1c8(%rbp),%xmm1
ff
movsd  -0x1c8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x1c8(%rbp),%xmm0
ff
movsd  0x59d(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x585(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x158(%rbp),%xmm1
ff
movsd  -0x160(%rbp),%xmm0
ff
movsd  0x559(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
divsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x208(%rbp)
ff
movsd  -0x208(%rbp),%xmm0
ff
movsd  0x401(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1c4e <RunEngineCycle+0xb0e>
movsd  0x3ef(%rip),%xmm0
divsd  -0x208(%rbp),%xmm0
ff
movsd  %xmm0,-0x208(%rbp)
ff
movsd  0x53f(%rip),%xmm0
movsd  %xmm0,-0x210(%rbp)
ff
jmp    1c5e <RunEngineCycle+0xb1e>
movsd  0x3c2(%rip),%xmm0
movsd  %xmm0,-0x210(%rbp)
ff
movsd  -0x208(%rbp),%xmm1
ff
movsd  -0xe8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1c88 <RunEngineCycle+0xb48>
movsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x208(%rbp)
ff
movsd  -0x210(%rbp),%xmm0
ff
mulsd  -0x1d0(%rbp),%xmm0
ff
mulsd  -0x1c0(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0x248(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0x250(%rbp)
ff
movsd  -0x208(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm1
ff
call   1060 <pow@plt>
movsd  %xmm0,-0x258(%rbp)
ff
movsd  -0x208(%rbp),%xmm0
ff
movsd  -0x130(%rbp),%xmm1
ff
call   1060 <pow@plt>
movsd  -0x258(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x250(%rbp),%xmm0
ff
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x3db(%rip),%xmm1
call   1060 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x248(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x228(%rbp)
ff
movsd  -0x228(%rbp),%xmm0
ff
addsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
mulsd  -0x180(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm1
ff
addsd  -0xc8(%rbp),%xmm1
ff
mulsd  0x28(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x110(%rbp),%xmm0
ff
mulsd  0x28(%rbp),%xmm0
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  -0x180(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x268(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  0x27d(%rip),%xmm1
call   1060 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x268(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x260(%rbp)
ff
movsd  -0x1d8(%rbp),%xmm0
ff
movsd  0x389(%rip),%xmm1
call   1060 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x260(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  0x2c5(%rip),%xmm0
mulsd  -0x1e0(%rbp),%xmm0
ff
mulsd  -0x178(%rbp),%xmm0
ff
movsd  -0x1d8(%rbp),%xmm1
ff
subsd  0x38(%rbp),%xmm1
mulsd  %xmm1,%xmm0
divsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
addsd  -0x160(%rbp),%xmm0
ff
movsd  -0x188(%rbp),%xmm2
ff
movsd  -0x168(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  0x18c(%rip),%xmm0
addsd  -0x1f8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1f8(%rbp)
ff
jmp    1745 <RunEngineCycle+0x605>
movsd  -0x168(%rbp),%xmm0
ff
mulsd  0x88(%rbp),%xmm0
divsd  -0x70(%rbp),%xmm0
subsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x218(%rbp)
ff
movsd  0x222(%rip),%xmm0
mulsd  -0x218(%rbp),%xmm0
ff
mulsd  0x78(%rbp),%xmm0
mulsd  -0x70(%rbp),%xmm0
cvtsi2sdl -0x2c(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x19f(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x50(%rbp),%rax
movsd  0x217(%rip),%xmm0
mulsd  (%rax),%xmm0
movsd  0xf3(%rip),%xmm1
mulsd  0x78(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  0x1f2(%rip),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x58(%rbp),%rax
movsd  %xmm0,(%rax)
cvtsi2sdl -0x2c(%rbp),%xmm0
mulsd  -0x148(%rbp),%xmm0
ff
movsd  0x1d1(%rip),%xmm1
mulsd  %xmm1,%xmm0
mulsd  0x78(%rbp),%xmm0
movsd  0x138(%rip),%xmm1
mulsd  0x90(%rbp),%xmm1
movsd  0xb0(%rip),%xmm2
addsd  0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xaf(%rip),%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x60(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x70(%rbp),%xmm0
movsd  0x152(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0x166(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x162(%rip),%xmm1
addsd  %xmm1,%xmm0
mov    -0x68(%rbp),%rax
movsd  %xmm0,(%rax)
add    $0x270,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<RunEngineCycle>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x1c0,%rsp
mov    %r8,%r14
mov    %rcx,%r15
mov    %rdx,%r12
mov    %rsi,%rbx
movsd  %xmm7,0x80(%rsp)
movsd  %xmm6,0x10(%rsp)
movsd  %xmm5,0x78(%rsp)
movsd  %xmm4,0x180(%rsp)
movsd  0x258(%rsp),%xmm8
movapd %xmm0,%xmm4
mulsd  0xe79(%rip),%xmm4
divsd  %xmm4,%xmm2
movsd  %xmm2,0xc8(%rsp)
movsd  0xe6b(%rip),%xmm9
addsd  %xmm9,%xmm3
movsd  0xe65(%rip),%xmm11
movsd  0xe64(%rip),%xmm10
mulsd  %xmm8,%xmm10
movsd  0xe8f(%rip),%xmm7
mulsd  %xmm10,%xmm7
movsd  0xe8a(%rip),%xmm4
mulsd  %xmm10,%xmm4
mulsd  %xmm10,%xmm7
addsd  %xmm4,%xmm7
movsd  0xe84(%rip),%xmm4
mulsd  %xmm10,%xmm4
mulsd  %xmm10,%xmm4
movsd  0xe7a(%rip),%xmm2
mulsd  %xmm10,%xmm2
mulsd  %xmm10,%xmm2
mulsd  %xmm10,%xmm4
addsd  %xmm2,%xmm4
movsd  0xe67(%rip),%xmm2
mulsd  %xmm10,%xmm2
addsd  %xmm4,%xmm2
movapd %xmm11,%xmm4
addsd  0xe59(%rip),%xmm2
divsd  %xmm3,%xmm4
movsd  %xmm4,0x168(%rsp)
mulsd  %xmm3,%xmm2
movsd  0xdb8(%rip),%xmm4
movsd  %xmm1,0xc0(%rsp)
mulsd  %xmm1,%xmm4
mulsd  %xmm1,%xmm4
mulsd  %xmm0,%xmm4
xorps  %xmm3,%xmm3
cvtsi2sd %edi,%xmm3
movsd  %xmm3,0xe0(%rsp)
mulsd  %xmm3,%xmm4
movsd  %xmm4,0x48(%rsp)
movsd  0xe11(%rip),%xmm3
mulsd  %xmm4,%xmm3
movsd  0x208(%rsp),%xmm1
mulsd  %xmm1,%xmm2
divsd  %xmm2,%xmm3
movsd  %xmm3,0x160(%rsp)
movsd  0xd83(%rip),%xmm1
movapd %xmm8,%xmm3
divsd  %xmm1,%xmm3
addsd  %xmm3,%xmm3
movsd  0xd76(%rip),%xmm2
mulsd  %xmm2,%xmm3
movapd %xmm3,0x190(%rsp)
movsd  0x268(%rsp),%xmm3
mulsd  0xd60(%rip),%xmm3
movsd  %xmm3,0x50(%rsp)
movsd  0xd5a(%rip),%xmm3
addsd  %xmm6,%xmm3
mulsd  %xmm2,%xmm3
movsd  0xd52(%rip),%xmm4
divsd  %xmm4,%xmm3
movsd  %xmm3,0x158(%rsp)
movapd %xmm5,%xmm3
addsd  0xd41(%rip),%xmm3
mulsd  %xmm2,%xmm3
addsd  0xd4d(%rip),%xmm7
divsd  %xmm4,%xmm3
movsd  %xmm3,0x120(%rsp)
mulsd  %xmm2,%xmm7
divsd  %xmm4,%xmm7
movapd %xmm11,%xmm3
divsd  %xmm7,%xmm3
movsd  %xmm3,0xb0(%rsp)
addsd  %xmm7,%xmm7
movsd  %xmm7,0x128(%rsp)
movsd  %xmm0,0x178(%rsp)
addsd  %xmm0,%xmm0
mulsd  %xmm8,%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0xd25(%rip),%xmm0
mulsd  %xmm10,%xmm0
addsd  0xd20(%rip),%xmm0
movsd  %xmm0,0x70(%rsp)
movsd  0xd1a(%rip),%xmm0
movsd  %xmm10,0xe8(%rsp)
mulsd  %xmm10,%xmm0
addsd  0xd0b(%rip),%xmm0
movapd %xmm0,0x20(%rsp)
movsd  0x1f8(%rsp),%xmm2
movapd %xmm2,%xmm1
addsd  %xmm11,%xmm1
movsd  %xmm1,0x68(%rsp)
movsd  0xced(%rip),%xmm0
movsd  %xmm0,0x60(%rsp)
divsd  %xmm1,%xmm0
addsd  %xmm2,%xmm9
movapd %xmm2,%xmm1
movsd  %xmm9,0x170(%rsp)
divsd  %xmm9,%xmm1
movsd  %xmm1,0x8(%rsp)
call   1060 <pow@plt>
movsd  %xmm0,0x108(%rsp)
movsd  0x248(%rsp),%xmm1
movsd  0x220(%rsp),%xmm0
mulsd  %xmm0,%xmm1
addsd  0x250(%rsp),%xmm1
addsd  0xbf0(%rip),%xmm0
movsd  %xmm0,0xa8(%rsp)
divsd  %xmm0,%xmm1
movsd  %xmm1,0xb8(%rsp)
movsd  0xc7a(%rip),%xmm1
movsd  0x48(%rsp),%xmm0
call   1060 <pow@plt>
mulsd  0xc6f(%rip),%xmm0
movsd  %xmm0,0x58(%rsp)
movsd  0x30(%rsp),%xmm0
addsd  0xc63(%rip),%xmm0
movsd  0xc63(%rip),%xmm1
call   1060 <pow@plt>
movsd  0x70(%rsp),%xmm4
mulsd  0x238(%rsp),%xmm4
mulsd  0x58(%rsp),%xmm0
movsd  %xmm0,0x150(%rsp)
movapd 0x20(%rsp),%xmm3
mulsd  0x230(%rsp),%xmm3
movsd  0xc31(%rip),%xmm2
mulsd  0xb8(%rsp),%xmm2
movapd %xmm3,%xmm0
movapd %xmm3,%xmm7
movsd  0x208(%rsp),%xmm6
mulsd  %xmm6,%xmm0
divsd  %xmm0,%xmm2
mulsd  0x8(%rsp),%xmm2
movsd  %xmm2,0x100(%rsp)
movsd  0x228(%rsp),%xmm2
movsd  0x260(%rsp),%xmm0
mulsd  0x50(%rsp),%xmm0
movapd %xmm4,%xmm3
movsd  %xmm4,0x70(%rsp)
mulsd  %xmm4,%xmm0
divsd  0x190(%rsp),%xmm0
movsd  %xmm0,0xf8(%rsp)
movsd  0x1f8(%rsp),%xmm3
movsd  0x60(%rsp),%xmm0
divsd  %xmm3,%xmm0
movsd  %xmm0,0x60(%rsp)
movsd  0x68(%rsp),%xmm0
divsd  %xmm3,%xmm0
movsd  %xmm0,0x68(%rsp)
movsd  0x210(%rsp),%xmm0
mulsd  0xb96(%rip),%xmm0
divsd  0xa8(%rsp),%xmm0
movsd  %xmm0,0x110(%rsp)
movsd  0x78(%rsp),%xmm5
movapd %xmm5,%xmm0
movsd  0x10(%rsp),%xmm4
addsd  %xmm4,%xmm0
addsd  0xac8(%rip),%xmm0
movsd  0xc8(%rsp),%xmm3
addsd  0xa87(%rip),%xmm3
movsd  %xmm3,0x148(%rsp)
movsd  0x48(%rsp),%xmm1
movsd  0xa60(%rip),%xmm3
mulsd  %xmm3,%xmm1
movsd  %xmm1,0x140(%rsp)
movsd  0xb33(%rip),%xmm1
mulsd  0xc0(%rsp),%xmm1
movsd  %xmm1,0x138(%rsp)
movapd %xmm5,%xmm1
subsd  %xmm4,%xmm1
addsd  0xb19(%rip),%xmm1
movsd  %xmm1,0x78(%rsp)
movsd  0x80(%rsp),%xmm1
mulsd  %xmm3,%xmm1
movsd  %xmm1,0x80(%rsp)
movsd  0x1f0(%rsp),%xmm1
movsd  0xa24(%rip),%xmm3
mulsd  %xmm3,%xmm1
movsd  %xmm1,0xf0(%rsp)
divsd  %xmm0,%xmm3
movsd  0xa2b(%rip),%xmm5
movsd  %xmm3,0x118(%rsp)
unpcklpd %xmm7,%xmm1
movapd %xmm1,0x1b0(%rsp)
unpcklpd %xmm6,%xmm1
movapd %xmm1,0x1a0(%rsp)
xorpd  %xmm4,%xmm4
mov    $0x21d,%ebp
xorpd  %xmm1,%xmm1
movapd %xmm1,0x30(%rsp)
xorpd  %xmm3,%xmm3
jmp    1793 <RunEngineCycle+0x653>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movapd 0x30(%rsp),%xmm1
movapd %xmm1,0x30(%rsp)
movsd  0xb8(%rsp),%xmm0
movapd %xmm0,%xmm3
mulsd  %xmm4,%xmm3
movapd %xmm3,0x90(%rsp)
mulsd  %xmm2,%xmm4
mulsd  %xmm0,%xmm4
movsd  0x160(%rsp),%xmm0
addsd  %xmm1,%xmm0
movsd  0x208(%rsp),%xmm1
mulsd  %xmm1,%xmm0
divsd  %xmm0,%xmm4
movapd %xmm4,0x20(%rsp)
movapd %xmm2,%xmm0
movsd  0xa0a(%rip),%xmm1
call   1060 <pow@plt>
mulsd  0x150(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movapd 0x20(%rsp),%xmm0
movsd  0xa58(%rip),%xmm1
call   1060 <pow@plt>
movsd  0x8(%rsp),%xmm2
mulsd  0x18(%rsp),%xmm0
mulsd  0x917(%rip),%xmm0
movapd 0xd0(%rsp),%xmm1
shufpd $0x2,0x1b0(%rsp),%xmm1
unpcklpd 0x30(%rsp),%xmm0
mulpd  %xmm1,%xmm0
movapd 0x20(%rsp),%xmm1
subsd  0x218(%rsp),%xmm1
shufpd $0x2,0x1a0(%rsp),%xmm1
mulpd  %xmm0,%xmm1
movapd 0x190(%rsp),%xmm0
unpcklpd 0x90(%rsp),%xmm0
divpd  %xmm0,%xmm1
movapd %xmm1,%xmm0
movapd %xmm1,%xmm4
unpckhpd %xmm1,%xmm0
addsd  %xmm2,%xmm0
mulsd  0x10(%rsp),%xmm0
movsd  0x188(%rsp),%xmm3
addsd  %xmm0,%xmm3
movsd  0x58(%rsp),%xmm5
addsd  0x88e(%rip),%xmm5
add    $0xffffffff,%ebp
je     1b55 <RunEngineCycle+0xa15>
movapd %xmm4,0x90(%rsp)
movsd  %xmm3,0x188(%rsp)
movsd  %xmm2,0xd0(%rsp)
movsd  0x50(%rsp),%xmm0
movsd  %xmm5,0x58(%rsp)
mulsd  %xmm5,%xmm0
movsd  %xmm0,0x20(%rsp)
call   1030 <sin@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0x20(%rsp),%xmm0
call   1050 <cos@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0x10(%rsp),%xmm1
mulsd  %xmm1,%xmm1
movsd  0xc8(%rsp),%xmm0
mulsd  %xmm0,%xmm0
subsd  %xmm1,%xmm0
movsd  0x7fe(%rip),%xmm1
call   1060 <pow@plt>
movsd  0x8(%rsp),%xmm3
movsd  0x20(%rsp),%xmm6
movsd  0x7f5(%rip),%xmm1
movapd %xmm0,%xmm7
movapd %xmm3,%xmm5
divsd  %xmm0,%xmm5
addsd  %xmm1,%xmm5
movapd %xmm6,%xmm1
subsd  0x180(%rsp),%xmm1
ucomisd 0x948(%rip),%xmm1
xorpd  %xmm2,%xmm2
jbe    18f8 <RunEngineCycle+0x7b8>
movsd  0x128(%rsp),%xmm0
ucomisd %xmm1,%xmm0
xorpd  %xmm2,%xmm2
jbe    18f8 <RunEngineCycle+0x7b8>
mulsd  0xb0(%rsp),%xmm1
movsd  %xmm1,0x130(%rsp)
movapd %xmm1,%xmm0
movsd  0x879(%rip),%xmm1
movsd  %xmm5,0x18(%rsp)
movsd  %xmm7,0x88(%rsp)
call   1060 <pow@plt>
mulsd  0x865(%rip),%xmm0
call   1040 <exp@plt>
movsd  0x88(%rsp),%xmm7
movsd  0x8(%rsp),%xmm3
movsd  0x18(%rsp),%xmm5
movsd  0x20(%rsp),%xmm6
movsd  0x130(%rsp),%xmm1
mulsd  %xmm1,%xmm1
mulsd  0x838(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  0xb0(%rsp),%xmm1
movsd  0x110(%rsp),%xmm2
mulsd  0x30(%rsp),%xmm2
mulsd  %xmm1,%xmm2
movsd  0x148(%rsp),%xmm4
subsd  %xmm3,%xmm4
subsd  %xmm7,%xmm4
movsd  0x10(%rsp),%xmm3
mulsd  0x140(%rsp),%xmm3
mulsd  %xmm5,%xmm3
subsd  0x90(%rsp),%xmm2
movsd  0xd0(%rsp),%xmm7
movapd %xmm7,%xmm0
mulsd  0x1f8(%rsp),%xmm0
mulsd  %xmm3,%xmm0
mulsd  0x170(%rsp),%xmm2
subsd  %xmm0,%xmm2
movsd  0x178(%rsp),%xmm5
mulsd  %xmm4,%xmm5
mulsd  0x6a7(%rip),%xmm4
addsd  0x168(%rsp),%xmm4
mulsd  0x48(%rsp),%xmm4
divsd  %xmm4,%xmm2
mulsd  0x50(%rsp),%xmm2
addsd  %xmm7,%xmm2
addsd  0xc0(%rsp),%xmm5
mulsd  0x138(%rsp),%xmm5
movsd  0x158(%rsp),%xmm0
ucomisd %xmm6,%xmm0
movsd  %xmm2,0x8(%rsp)
movsd  %xmm3,0x10(%rsp)
movapd %xmm5,0xd0(%rsp)
jb     1670 <RunEngineCycle+0x530>
ucomisd 0x120(%rsp),%xmm6
jb     1670 <RunEngineCycle+0x530>
movapd %xmm4,0x20(%rsp)
movsd  0x58(%rsp),%xmm0
addsd  %xmm0,%xmm0
addsd  0x78(%rsp),%xmm0
mulsd  0x118(%rsp),%xmm0
call   1050 <cos@plt>
movapd 0x90(%rsp),%xmm3
add    $0x1,%eax
xorps  %xmm4,%xmm4
cvtsi2sd %eax,%xmm4
mulsd  0x80(%rsp),%xmm4
movapd %xmm4,%xmm0
divsd  0x1f0(%rsp),%xmm0
movapd %xmm0,%xmm1
mulsd  0x6f8(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
movapd %xmm0,%xmm2
mulsd  0x6ec(%rip),%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
movapd %xmm0,%xmm2
mulsd  0x6d8(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  %xmm1,%xmm2
mulsd  0x6d0(%rip),%xmm0
addsd  %xmm2,%xmm0
addsd  0x6cc(%rip),%xmm0
unpckhpd %xmm3,%xmm3
mulsd  0x6c8(%rip),%xmm3
addsd  0x8(%rsp),%xmm3
divsd  0x70(%rsp),%xmm3
movsd  0x58c(%rip),%xmm1
ucomisd %xmm1,%xmm3
jbe    1a9a <RunEngineCycle+0x95a>
xorpd  0x706(%rip),%xmm0
mulsd  0xf0(%rsp),%xmm4
mulsd  %xmm0,%xmm4
mulsd  0xf8(%rsp),%xmm4
movsd  %xmm4,0x90(%rsp)
movapd %xmm1,%xmm0
divsd  %xmm3,%xmm0
cmpltsd %xmm3,%xmm1
andpd  %xmm1,%xmm0
andnpd %xmm3,%xmm1
orpd   %xmm0,%xmm1
movsd  0x108(%rsp),%xmm0
maxsd  %xmm1,%xmm0
movsd  %xmm0,0x88(%rsp)
movsd  0x60(%rsp),%xmm1
call   1060 <pow@plt>
movsd  %xmm0,0x18(%rsp)
movsd  0x88(%rsp),%xmm0
movsd  0x68(%rsp),%xmm1
call   1060 <pow@plt>
movsd  0x18(%rsp),%xmm1
subsd  %xmm0,%xmm1
mulsd  0x100(%rsp),%xmm1
movapd %xmm1,%xmm0
movsd  0x4dc(%rip),%xmm1
call   1060 <pow@plt>
mulsd  0x90(%rsp),%xmm0
movapd 0x30(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  0x8(%rsp),%xmm2
movapd 0x20(%rsp),%xmm4
jmp    1676 <RunEngineCycle+0x536>
movsd  0x5f3(%rip),%xmm0
movsd  0xe8(%rsp),%xmm1
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
mulsd  0x5e2(%rip),%xmm1
addsd  %xmm0,%xmm1
addsd  0x5de(%rip),%xmm1
movsd  0x50(%rsp),%xmm5
mulsd  %xmm3,%xmm5
movsd  0x48(%rsp),%xmm2
divsd  %xmm2,%xmm5
subsd  %xmm1,%xmm5
mulsd  0x466(%rip),%xmm5
movsd  0x258(%rsp),%xmm1
mulsd  %xmm1,%xmm5
mulsd  %xmm2,%xmm5
movsd  0xe0(%rsp),%xmm4
mulsd  %xmm4,%xmm5
movsd  0x460(%rip),%xmm3
divsd  %xmm3,%xmm5
movsd  %xmm5,(%rbx)
mulsd  0x590(%rip),%xmm5
movsd  0x450(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  %xmm0,%xmm5
movsd  0x580(%rip),%xmm0
mulsd  %xmm0,%xmm5
movsd  %xmm5,(%r12)
movapd 0x30(%rsp),%xmm5
mulsd  %xmm4,%xmm5
mulsd  %xmm0,%xmm5
mulsd  %xmm1,%xmm5
movsd  0x270(%rsp),%xmm1
mulsd  %xmm3,%xmm1
movsd  0xa8(%rsp),%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm0,%xmm0
divsd  %xmm0,%xmm5
addsd  0x542(%rip),%xmm2
mulsd  0x542(%rip),%xmm2
movsd  %xmm5,(%r15)
addsd  0x53d(%rip),%xmm2
movsd  %xmm2,(%r14)
add    $0x1c0,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @RunEngineCycle(double %0, double %1, double %2, double %3, double %4, i32 %5, double %6, double %7, double %8, double %9, double %10, double %11, double %12, double %13, double %14, double %15, double %16, double %17, double %18, double %19, double %20, double %21, double %22, double %23, double %24, double %25, double* nocapture writeonly %26, double* nocapture writeonly %27, double* nocapture writeonly %28, double* nocapture writeonly %29) {
%31 = fmul double %1, 0x3FE921FB54411744
%32 = fmul double %31, %1
%33 = fmul double %32, %0
%34 = sitofp i32 %5 to double
%35 = fmul double %33, %34
%36 = fmul double %0, 5.000000e-01
%37 = fdiv double %2, %36
%38 = fadd double %3, -1.000000e+00
%39 = fdiv double 1.000000e+00, %38
%40 = fmul double %22, 1.000000e-03
%41 = fdiv double %22, 6.000000e+01
%42 = fmul double %41, 2.000000e+00
%43 = fmul double %42, 0x400921FB54411744
%44 = fmul double %24, 0x3F91DF46A2506B91
%45 = fadd double %7, -1.800000e+02
%46 = fmul double %45, 0x400921FB54411744
%47 = fdiv double %46, 1.800000e+02
%48 = fadd double %6, -3.600000e+02
%49 = fmul double %48, 0x400921FB54411744
%50 = fdiv double %49, 1.800000e+02
%51 = fmul double %40, -1.618900e+00
%52 = fmul double %40, 1.988600e+01
%53 = tail call double @llvm.fmuladd.f64(double %51, double %40, double %52)
%54 = fadd double %53, 3.995100e+01
%55 = fmul double %54, 0x400921FB54411744
%56 = fdiv double %55, 1.800000e+02
%57 = fmul double %56, 2.000000e+00
%58 = fdiv double 1.000000e+00, %56
%59 = fmul double %40, 3.395500e+00
%60 = fmul double %40, %59
%61 = fmul double %40, -5.190000e+01
%62 = fmul double %40, %61
%63 = tail call double @llvm.fmuladd.f64(double %60, double %40, double %62)
%64 = tail call double @llvm.fmuladd.f64(double %40, double 2.794900e+02, double %63)
%65 = fadd double %64, 6.762100e+02
%66 = fmul double %35, 0x40B24A068DB8BAC7
%67 = fmul double %38, %65
%68 = fmul double %67, %12
%69 = fdiv double %66, %68
%70 = fmul double %0, 2.000000e+00
%71 = fmul double %70, %22
%72 = fdiv double %71, 6.000000e+01
%73 = tail call double @llvm.fmuladd.f64(double %40, double -1.973800e-02, double 0x3FEF94DF8B157258)
%74 = tail call double @llvm.fmuladd.f64(double %40, double -4.362400e-02, double 1.295300e+00)
%75 = fadd double %10, 1.000000e+00
%76 = fdiv double 2.000000e+00, %75
%77 = fadd double %10, -1.000000e+00
%78 = fdiv double %10, %77
%79 = tail call double @pow(double %76, double %78)
%80 = tail call double @llvm.fmuladd.f64(double %15, double %20, double %21)
%81 = fadd double %15, 1.000000e+00
%82 = fdiv double %80, %81
%83 = tail call double @pow(double %35, double -6.000000e-02)
%84 = fmul double %83, 1.300000e+02
%85 = fadd double %72, 1.400000e+00
%86 = tail call double @pow(double %85, double 8.000000e-01)
%87 = fmul double %84, %86
%88 = fmul double %73, %18
%89 = fmul double %74, %17
%90 = fmul double %82, 2.000000e+03
%91 = fmul double %89, %12
%92 = fdiv double %90, %91
%93 = fmul double %78, %92
%94 = fmul double %44, %23
%95 = fmul double %88, %94
%96 = fdiv double %95, %43
%97 = fdiv double 2.000000e+00, %10
%98 = fdiv double %75, %10
%99 = fmul double %13, 0x3FEE666666666666
%100 = fdiv double %99, %81
%101 = fadd double %6, %7
%102 = fadd double %101, 1.800000e+02
%103 = fdiv double 0x400921FB54411744, %102
%104 = fadd double %37, 1.000000e+00
%105 = fmul double %35, 5.000000e-01
%106 = fmul double %1, 0x3FF921FB54411744
%107 = fsub double %6, %7
%108 = fadd double %107, 5.400000e+02
%109 = fmul double %8, 5.000000e-01
%110 = fmul double %9, 0x400921FB54411744
%111 = insertelement <2 x double> poison, double %89, i64 1
%112 = insertelement <2 x double> poison, double %12, i64 1
%113 = insertelement <2 x double> poison, double %43, i64 0
br label %114
114: ; preds = %30, %207
%115 = phi double [ 0.000000e+00, %30 ], [ %208, %207 ]
%116 = phi double [ %16, %30 ], [ %164, %207 ]
%117 = phi i32 [ -360, %30 ], [ %232, %207 ]
%118 = phi double [ 0.000000e+00, %30 ], [ %231, %207 ]
%119 = phi <2 x double> [ zeroinitializer, %30 ], [ %228, %207 ]
%120 = sitofp i32 %117 to double
%121 = fmul double %44, %120
%122 = tail call double @sin(double %121)
%123 = tail call i32 @cos(double %121)
%124 = sitofp i32 %123 to double
%125 = fneg double %122
%126 = fmul double %122, %125
%127 = tail call double @llvm.fmuladd.f64(double %37, double %37, double %126)
%128 = tail call double @pow(double %127, double 5.000000e-01)
%129 = fsub double %104, %124
%130 = fsub double %129, %128
%131 = tail call double @llvm.fmuladd.f64(double %130, double 5.000000e-01, double %39)
%132 = fmul double %35, %131
%133 = fmul double %105, %122
%134 = fdiv double %124, %128
%135 = fadd double %134, 1.000000e+00
%136 = fmul double %133, %135
%137 = tail call double @llvm.fmuladd.f64(double %0, double %130, double %1)
%138 = fmul double %106, %137
%139 = fsub double %121, %4
%140 = fcmp ogt double %139, 0.000000e+00
%141 = fcmp olt double %139, %57
%142 = select i1 %140, i1 %141, i1 false
br i1 %142, label %143, label %155
143: ; preds = %114
%144 = fmul double %58, %139
%145 = tail call double @pow(double %144, double 3.000000e+00)
%146 = fmul double %145, -5.000000e+00
%147 = tail call double @exp(double %146)
%148 = fneg double %147
%149 = fmul double %144, %144
%150 = fmul double %149, -1.500000e+01
%151 = fmul double %150, %148
%152 = fmul double %58, %151
%153 = fmul double %100, %115
%154 = fmul double %153, %152
br label %155
155: ; preds = %114, %143
%156 = phi double [ %154, %143 ], [ 0.000000e+00, %114 ]
%157 = extractelement <2 x double> %119, i64 0
%158 = fsub double %156, %157
%159 = fneg double %116
%160 = fmul double %159, %10
%161 = fmul double %160, %136
%162 = tail call double @llvm.fmuladd.f64(double %77, double %158, double %161)
%163 = fdiv double %162, %132
%164 = tail call double @llvm.fmuladd.f64(double %163, double %44, double %116)
%165 = fcmp ugt double %121, %47
%166 = fcmp ult double %121, %50
%167 = or i1 %165, %166
br i1 %167, label %207, label %168
168: ; preds = %155
%169 = tail call double @llvm.fmuladd.f64(double %120, double 2.000000e+00, double %108)
%170 = fmul double %103, %169
%171 = tail call i32 @cos(double %170)
%172 = add nsw i32 %171, 1
%173 = sitofp i32 %172 to double
%174 = fmul double %109, %173
%175 = fmul double %110, %174
%176 = fdiv double %174, %9
%177 = fmul double %176, 1.904700e+02
%178 = fmul double %176, %177
%179 = fmul double %176, %178
%180 = fmul double %176, -1.431300e+02
%181 = fmul double %176, %180
%182 = fmul double %176, %181
%183 = tail call double @llvm.fmuladd.f64(double %179, double %176, double %182)
%184 = fmul double %176, 3.124800e+01
%185 = tail call double @llvm.fmuladd.f64(double %184, double %176, double %183)
%186 = tail call double @llvm.fmuladd.f64(double %176, double -2.599900e+00, double %185)
%187 = fadd double %186, 6.913000e-01
%188 = extractelement <2 x double> %119, i64 1
%189 = tail call double @llvm.fmuladd.f64(double %188, double 5.500000e+00, double %164)
%190 = fdiv double %189, %88
%191 = fcmp ogt double %190, 1.000000e+00
%192 = fdiv double 1.000000e+00, %190
%193 = select i1 %191, double %192, double %190
%194 = fcmp olt double %193, %79
%195 = select i1 %194, double %79, double %193
%196 = fneg double %187
%197 = select i1 %191, double %196, double %187
%198 = fmul double %175, %197
%199 = fmul double %96, %198
%200 = tail call double @pow(double %195, double %97)
%201 = tail call double @pow(double %195, double %98)
%202 = fsub double %200, %201
%203 = fmul double %93, %202
%204 = tail call double @pow(double %203, double 5.000000e-01)
%205 = fmul double %204, %199
%206 = fadd double %115, %205
br label %207
207: ; preds = %168, %155
%208 = phi double [ %206, %168 ], [ %115, %155 ]
%209 = fmul double %132, %164
%210 = fmul double %82, %209
%211 = fadd double %69, %208
%212 = fmul double %211, %12
%213 = fdiv double %210, %212
%214 = fmul double %82, %132
%215 = tail call double @pow(double %164, double 8.000000e-01)
%216 = fmul double %87, %215
%217 = tail call double @pow(double %213, double -4.000000e-01)
%218 = fmul double %216, %217
%219 = fmul double %218, 1.000000e-03
%220 = insertelement <2 x double> %111, double %138, i64 0
%221 = insertelement <2 x double> poison, double %219, i64 0
%222 = insertelement <2 x double> %221, double %208, i64 1
%223 = fmul <2 x double> %220, %222
%224 = fsub double %213, %14
%225 = insertelement <2 x double> %112, double %224, i64 0
%226 = fmul <2 x double> %223, %225
%227 = insertelement <2 x double> %113, double %214, i64 1
%228 = fdiv <2 x double> %226, %227
%229 = extractelement <2 x double> %228, i64 1
%230 = fadd double %164, %229
%231 = tail call double @llvm.fmuladd.f64(double %230, double %136, double %118)
%232 = add nsw i32 %117, 1
%233 = icmp eq i32 %232, 181
br i1 %233, label %234, label %114
234: ; preds = %207
%235 = fmul double %40, 5.000000e-02
%236 = fmul double %40, 1.500000e-01
%237 = tail call double @llvm.fmuladd.f64(double %235, double %40, double %236)
%238 = fadd double %237, 0x3FEF0A3D70A3D70A
%239 = fmul double %44, %231
%240 = fdiv double %239, %35
%241 = fsub double %240, %238
%242 = fmul double %241, 5.000000e-01
%243 = fmul double %242, %22
%244 = fmul double %35, %243
%245 = fmul double %244, %34
%246 = fdiv double %245, 6.000000e+01
store double %246, double* %26
%247 = fmul double %246, 3.000000e+01
%248 = fmul double %22, 0x400921FB54411744
%249 = fdiv double %247, %248
%250 = fmul double %249, 1.000000e+03
store double %250, double* %27
%251 = fmul double %208, %34
%252 = fmul double %251, 1.000000e+03
%253 = fmul double %252, %22
%254 = fmul double %25, 6.000000e+01
%255 = fmul double %81, %254
%256 = fmul double %255, 2.000000e+00
%257 = fdiv double %253, %256
store double %257, double* %28
%258 = fadd double %35, -1.000000e-03
%259 = tail call double @llvm.fmuladd.f64(double %258, double 5.000000e+04, double 7.500000e+01)
store double %259, double* %29
ret void
}