// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../source/perturbations.c
// Function: perturbations_einstein
int perturbations_einstein(
                           struct precision * ppr,
                           struct background * pba,
                           struct thermodynamics * pth,
                           struct perturbations * ppt,
                           int index_md,
                           double k,
                           double tau,
                           double * y,
                           struct perturbations_workspace * ppw
                           ) {
  /** Summary: */

  /** - define local variables */

  double k2,a,a2,a_prime_over_a;
  double s2_squared;
  double shear_g = 0.;
  double shear_idr = 0.;

  /** - define wavenumber and scale factor related quantities */

  k2 = k*k;
  a = ppw->pvecback[pba->index_bg_a];
  a2 = a * a;
  a_prime_over_a = ppw->pvecback[pba->index_bg_H]*a;
  s2_squared = 1.-3.*pba->K/k2;

  /** - sum up perturbations from all species */
  class_call(perturbations_total_stress_energy(ppr,pba,pth,ppt,index_md,k,y,ppw),
             ppt->error_message,
             ppt->error_message);

  /** - for scalar modes: */

  if (_scalars_) {

    /** - --> infer metric perturbations from Einstein equations */

    /* newtonian gauge */
    if (ppt->gauge == newtonian) {

      /* in principle we could get phi from the constrain equation:

         ppw->pvecmetric[ppw->index_mt_phi] = -1.5 * (a2/k2/k2/s2/s2) * (k2 * delta_rho + 3.*a_prime_over_a * rho_plus_p_theta);

         with s2_squared = sqrt(1-3K/k2) = ppw->s_l[2]*ppw->s_l[2]

         This was the case in class v1.3. However the integration is
         more stable is we treat phi as a dynamical variable
         y[ppw->pv->index_pt_phi], which derivative is given by the
         second equation below (credits to Guido Walter Pettinari). */

      /* equation for psi */
      ppw->pvecmetric[ppw->index_mt_psi] = y[ppw->pv->index_pt_phi] - 4.5 * (a2/k2) * ppw->rho_plus_p_shear;

      /* equation for phi' */
      ppw->pvecmetric[ppw->index_mt_phi_prime] = -a_prime_over_a * ppw->pvecmetric[ppw->index_mt_psi] + 1.5 * (a2/k2) * ppw->rho_plus_p_theta;

      /* eventually, infer radiation streaming approximation for
         gamma and ur (this is exactly the right place to do it
         because the result depends on h_prime) */

      if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_on) {

        class_call(perturbations_rsa_delta_and_theta(ppr,pba,pth,ppt,k,y,a_prime_over_a,ppw->pvecthermo,ppw,ppt->error_message),
                   ppt->error_message,
                   ppt->error_message);
      }

      if ((pba->has_idr)&&(ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_on)){

        class_call(perturbations_rsa_idr_delta_and_theta(ppr,pba,pth,ppt,k,y,a_prime_over_a,ppw->pvecthermo,ppw,ppt->error_message),
                   ppt->error_message,
                   ppt->error_message);
      }
    }

    /* synchronous gauge */
    if (ppt->gauge == synchronous) {

      /* first equation involving total density fluctuation */
      ppw->pvecmetric[ppw->index_mt_h_prime] =
        ( k2 * s2_squared * y[ppw->pv->index_pt_eta] + 1.5 * a2 * ppw->delta_rho)/(0.5*a_prime_over_a);  /* h' */

      /* eventually, infer radiation streaming approximation for
         gamma and ur (this is exactly the right place to do it
         because the result depends on h_prime) */

      if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_on) {

        class_call(perturbations_rsa_delta_and_theta(ppr,pba,pth,ppt,k,y,a_prime_over_a,ppw->pvecthermo,ppw,ppt->error_message),
                   ppt->error_message,
                   ppt->error_message);
      }

      if ((pba->has_idr==_TRUE_)&&(ppw->approx[ppw->index_ap_rsa_idr] == (int)rsa_idr_on)) {

        class_call(perturbations_rsa_idr_delta_and_theta(ppr,pba,pth,ppt,k,y,a_prime_over_a,ppw->pvecthermo,ppw,ppt->error_message),
                   ppt->error_message,
                   ppt->error_message);

        ppw->rho_plus_p_theta += 4./3.*ppw->pvecback[pba->index_bg_rho_idr]*ppw->rsa_theta_idr;
      }

      /* second equation involving total velocity */
      ppw->pvecmetric[ppw->index_mt_eta_prime] = (1.5 * a2 * ppw->rho_plus_p_theta + 0.5 * pba->K * ppw->pvecmetric[ppw->index_mt_h_prime])/k2/s2_squared;  /* eta' */

      /* third equation involving total pressure */
      ppw->pvecmetric[ppw->index_mt_h_prime_prime] =
        - 2. * a_prime_over_a * ppw->pvecmetric[ppw->index_mt_h_prime]
        + 2. * k2 * s2_squared * y[ppw->pv->index_pt_eta]
        - 9. * a2 * ppw->delta_p;

      /* alpha = (h'+6eta')/2k^2 */
      ppw->pvecmetric[ppw->index_mt_alpha] = (ppw->pvecmetric[ppw->index_mt_h_prime] + 6.*ppw->pvecmetric[ppw->index_mt_eta_prime])/2./k2;

      /* eventually, infer first-order tight-coupling approximation for photon
         shear, then correct the total shear */
      if (ppw->approx[ppw->index_ap_tca] == (int)tca_on) {

        if (pth->has_idm_g == _TRUE_) {
          shear_g = 16./45./(ppw->pvecthermo[pth->index_th_dkappa] + ppw->pvecthermo[pth->index_th_dmu_idm_g])*(y[ppw->pv->index_pt_theta_g]+k2*ppw->pvecmetric[ppw->index_mt_alpha]);
        }
        else {
          shear_g = 16./45./ppw->pvecthermo[pth->index_th_dkappa]*(y[ppw->pv->index_pt_theta_g]+k2*ppw->pvecmetric[ppw->index_mt_alpha]);
        }

        ppw->rho_plus_p_shear += 4./3.*ppw->pvecback[pba->index_bg_rho_g]*shear_g;

      }

      if (pth->has_idm_dr == _TRUE_) {
        if (ppw->approx[ppw->index_ap_tca_idm_dr] == (int)tca_idm_dr_on){

          shear_idr = 0.5*8./15./ppw->pvecthermo[pth->index_th_dmu_idm_dr]/ppt->alpha_idm_dr[0]*(y[ppw->pv->index_pt_theta_idr]+k2*ppw->pvecmetric[ppw->index_mt_alpha]);

          ppw->rho_plus_p_shear += 4./3.*ppw->pvecback[pba->index_bg_rho_idr]*shear_idr;
        }
      }

      /* fourth equation involving total shear */
      ppw->pvecmetric[ppw->index_mt_alpha_prime] =  //TBC
        - 2. * a_prime_over_a * ppw->pvecmetric[ppw->index_mt_alpha]
        + y[ppw->pv->index_pt_eta]
        - 4.5 * (a2/k2) * ppw->rho_plus_p_shear;

    }

    /* transform (delta_m, theta_m) of the current gauge into
       gauge-independent variables (you could comment this out if you
       really want gauge-dependent results) */

    if (ppt->has_matter_source_in_current_gauge == _FALSE_) {
      if (ppt->has_source_delta_m == _TRUE_) {
        ppw->delta_m += 3. *ppw->pvecback[pba->index_bg_a]*ppw->pvecback[pba->index_bg_H] * ppw->theta_m/k2;
        // note: until 2.4.3 there was a typo, the factor was (-2 H'/H) instead
        // of (3 aH). There is the same typo in the CLASSgal paper
        // 1307.1459v1,v2,v3. It came from a confusion between (1+w_total)
        // and (1+w_matter)=1 [the latter is the relevant one here].
        //
        // note2: at this point this gauge-invariant variable is only
        // valid if all matter components are pressureless and
        // stable. This relation will be generalized soon to the case
        // of decaying dark matter.
      }

      if (ppt->has_source_delta_cb == _TRUE_) {
        ppw->delta_cb += 3. *ppw->pvecback[pba->index_bg_a]*ppw->pvecback[pba->index_bg_H] * ppw->theta_cb/k2;//check gauge transformation
      }

      if (ppt->has_source_theta_m == _TRUE_) {
        if  (ppt->gauge == synchronous) {
          ppw->theta_m += ppw->pvecmetric[ppw->index_mt_alpha]*k2;
        }
      }
      if (ppt->has_source_theta_cb == _TRUE_){
        if  (ppt->gauge == synchronous) {
          ppw->theta_cb += ppw->pvecmetric[ppw->index_mt_alpha]*k2; //check gauge transformation
        }
      }
    }
  }
  /** - for vector modes */

  if (_vectors_) {

    if (ppt->gauge == newtonian) {

      ppw->pvecmetric[ppw->index_mt_V_prime] = -2.*a_prime_over_a*y[ppw->pv->index_pt_V] - 3.*ppw->vector_source_pi/k;

    }

    if (ppt->gauge == synchronous) {

      // assuming    vector_source_pi = p_class a^2 pi_T^{(1)} and  vector_source_v = (rho_class+p_class)a^2 v^{(1)}

      // from Hu and White:
      ppw->pvecmetric[ppw->index_mt_hv_prime_prime] = -2.*a_prime_over_a*y[ppw->pv->index_pt_hv_prime] - 3.*ppw->vector_source_pi/k2;

      // what we suspect:
      //ppw->pvecmetric[ppw->index_mt_hv_prime_prime] = -2.*a_prime_over_a*y[ppw->pv->index_pt_hv_prime] - 3.*ppw->vector_source_pi;

      // if we use the other equation:
      //ppw->pvecmetric[ppw->index_mt_hv_prime] = -2./k/ (1.-2.*pba->K/k2) * 3. * ppw->vector_source_v;

    }

  }

  /** - for tensor modes */

  if (_tensors_) {

    /* single einstein equation for tensor perturbations */
    ppw->pvecmetric[ppw->index_mt_gw_prime_prime] = -2.*a_prime_over_a*y[ppw->pv->index_pt_gwdot]-(k2+2.*pba->K)*y[ppw->pv->index_pt_gw]+ppw->gw_source;

  }

  return _SUCCESS_;

}

// Assembly:
subq $0x2898, %rsp           # imm = 0x2898
movq 0x28a0(%rsp), %rax
movq %rdi, 0x2888(%rsp)
movq %rsi, 0x2880(%rsp)
movq %rdx, 0x2878(%rsp)
movq %rcx, 0x2870(%rsp)
movl %r8d, 0x286c(%rsp)
movsd %xmm0, 0x2860(%rsp)
movsd %xmm1, 0x2858(%rsp)
movq %r9, 0x2850(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x2820(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x2818(%rsp)
movsd 0x2860(%rsp), %xmm0
mulsd 0x2860(%rsp), %xmm0
movsd %xmm0, 0x2848(%rsp)
movq 0x28a0(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x2880(%rsp), %rcx
movslq 0x380(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, 0x2840(%rsp)
movsd 0x2840(%rsp), %xmm0
mulsd 0x2840(%rsp), %xmm0
movsd %xmm0, 0x2838(%rsp)
movq 0x28a0(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x2880(%rsp), %rcx
movslq 0x384(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
mulsd 0x2840(%rsp), %xmm0
movsd %xmm0, 0x2830(%rsp)
movq 0x2880(%rsp), %rax
movsd 0xd397e(%rip), %xmm1    # 0x1d3698
mulsd 0x318(%rax), %xmm1
divsd 0x2848(%rsp), %xmm1
movsd 0xd2515(%rip), %xmm0    # 0x1d2248
subsd %xmm1, %xmm0
movsd %xmm0, 0x2828(%rsp)
movq 0x2888(%rsp), %rdi
movq 0x2880(%rsp), %rsi
movq 0x2878(%rsp), %rdx
movq 0x2870(%rsp), %rcx
movl 0x286c(%rsp), %r8d
movsd 0x2860(%rsp), %xmm0
movq 0x2850(%rsp), %r9
movq 0x28a0(%rsp), %rax
movq %rax, (%rsp)
callq 0x100e70
cmpl $0x1, %eax
jne 0xffdfc
leaq 0x2010(%rsp), %rdi
movq 0x2870(%rsp), %rcx
addq $0x6c8a, %rcx           # imm = 0x6C8A
leaq 0xd262b(%rip), %rsi     # 0x1d23d8
leaq 0xfbaf0(%rip), %rdx     # 0x1fb8a4
movb $0x0, %al
callq 0x5b9c0
movq 0x2870(%rsp), %rdi
addq $0x6c8a, %rdi           # imm = 0x6C8A
leaq 0x2010(%rsp), %r8
leaq 0xd225b(%rip), %rsi     # 0x1d2034
leaq 0xfbb08(%rip), %rdx     # 0x1fb8e8
movl $0x1adb, %ecx           # imm = 0x1ADB
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x2894(%rsp)
jmp 0x100e60
movq 0x2870(%rsp), %rax
movswl 0xe(%rax), %eax
cmpl $0x1, %eax
jne 0x100bf2
movl 0x286c(%rsp), %eax
movq 0x2870(%rsp), %rcx
cmpl 0x848(%rcx), %eax
jne 0x100bf2
movq 0x2870(%rsp), %rax
cmpl $0x0, 0x83c(%rax)
jne 0x100177
movq 0x2850(%rsp), %rax
movq 0x28a0(%rsp), %rcx
movq 0x48(%rcx), %rcx
movslq 0xd4(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm1
movsd 0x2838(%rsp), %xmm2
divsd 0x2848(%rsp), %xmm2
movsd 0xf64d5(%rip), %xmm0    # 0x1f6350
mulsd %xmm2, %xmm0
movq 0x28a0(%rsp), %rax
movsd 0x60(%rax), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq (%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x2830(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq (%rcx), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd 0x2838(%rsp), %xmm3
divsd 0x2848(%rsp), %xmm3
movsd 0xd2d33(%rip), %xmm1    # 0x1d2c50
mulsd %xmm3, %xmm1
movq 0x28a0(%rsp), %rax
mulsd 0x58(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x4(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x28a0(%rsp), %rax
movq 0x180(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x164(%rcx), %rcx
cmpl $0x1, (%rax,%rcx,4)
jne 0x100059
movq 0x2888(%rsp), %rdi
movq 0x2880(%rsp), %rsi
movq 0x2878(%rsp), %rdx
movq 0x2870(%rsp), %rcx
movsd 0x2860(%rsp), %xmm0
movq 0x2850(%rsp), %r8
movsd 0x2830(%rsp), %xmm1
movq 0x28a0(%rsp), %rax
movq 0x38(%rax), %r9
movq 0x28a0(%rsp), %r10
movq 0x2870(%rsp), %rax
addq $0x6c8a, %rax           # imm = 0x6C8A
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x107200
cmpl $0x1, %eax
jne 0x100057
leaq 0x1810(%rsp), %rdi
movq 0x2870(%rsp), %rcx
addq $0x6c8a, %rcx           # imm = 0x6C8A
leaq 0xd23d0(%rip), %rsi     # 0x1d23d8
leaq 0xfb8f0(%rip), %rdx     # 0x1fb8ff
movb $0x0, %al
callq 0x5b9c0
movq 0x2870(%rsp), %rdi
addq $0x6c8a, %rdi           # imm = 0x6C8A
leaq 0x1810(%rsp), %r8
leaq 0xd2000(%rip), %rsi     # 0x1d2034
leaq 0xfb8ad(%rip), %rdx     # 0x1fb8e8
movl $0x1aff, %ecx           # imm = 0x1AFF
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x2894(%rsp)
jmp 0x100e60
jmp 0x100059
movq 0x2880(%rsp), %rax
cmpw $0x0, 0x4c6(%rax)
je 0x100175
movq 0x28a0(%rsp), %rax
movq 0x180(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x16c(%rcx), %rcx
cmpl $0x1, (%rax,%rcx,4)
jne 0x100175
movq 0x2888(%rsp), %rdi
movq 0x2880(%rsp), %rsi
movq 0x2878(%rsp), %rdx
movq 0x2870(%rsp), %rcx
movsd 0x2860(%rsp), %xmm0
movq 0x2850(%rsp), %r8
movsd 0x2830(%rsp), %xmm1
movq 0x28a0(%rsp), %rax
movq 0x38(%rax), %r9
movq 0x28a0(%rsp), %r10
movq 0x2870(%rsp), %rax
addq $0x6c8a, %rax           # imm = 0x6C8A
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x107d40
cmpl $0x1, %eax
jne 0x100173
leaq 0x1010(%rsp), %rdi
movq 0x2870(%rsp), %rcx
addq $0x6c8a, %rcx           # imm = 0x6C8A
leaq 0xd22b4(%rip), %rsi     # 0x1d23d8
leaq 0xfb841(%rip), %rdx     # 0x1fb96c
movb $0x0, %al
callq 0x5b9c0
movq 0x2870(%rsp), %rdi
addq $0x6c8a, %rdi           # imm = 0x6C8A
leaq 0x1010(%rsp), %r8
leaq 0xd1ee4(%rip), %rsi     # 0x1d2034
leaq 0xfb791(%rip), %rdx     # 0x1fb8e8
movl $0x1b06, %ecx           # imm = 0x1B06
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x2894(%rsp)
jmp 0x100e60
jmp 0x100175
jmp 0x100177
movq 0x2870(%rsp), %rax
cmpl $0x1, 0x83c(%rax)
jne 0x1009e2
movsd 0x2848(%rsp), %xmm0
mulsd 0x2828(%rsp), %xmm0
movq 0x2850(%rsp), %rax
movq 0x28a0(%rsp), %rcx
movq 0x48(%rcx), %rcx
movslq 0xd0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd 0xd2a8a(%rip), %xmm1    # 0x1d2c50
mulsd 0x2838(%rsp), %xmm1
movq 0x28a0(%rsp), %rax
mulsd 0x50(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd 0xd2a9c(%rip), %xmm1    # 0x1d2c88
mulsd 0x2830(%rsp), %xmm1
divsd %xmm1, %xmm0
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x8(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x28a0(%rsp), %rax
movq 0x180(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x164(%rcx), %rcx
cmpl $0x1, (%rax,%rcx,4)
jne 0x10031c
movq 0x2888(%rsp), %rdi
movq 0x2880(%rsp), %rsi
movq 0x2878(%rsp), %rdx
movq 0x2870(%rsp), %rcx
movsd 0x2860(%rsp), %xmm0
movq 0x2850(%rsp), %r8
movsd 0x2830(%rsp), %xmm1
movq 0x28a0(%rsp), %rax
movq 0x38(%rax), %r9
movq 0x28a0(%rsp), %r10
movq 0x2870(%rsp), %rax
addq $0x6c8a, %rax           # imm = 0x6C8A
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x107200
cmpl $0x1, %eax
jne 0x10031a
leaq 0x810(%rsp), %rdi
movq 0x2870(%rsp), %rcx
addq $0x6c8a, %rcx           # imm = 0x6C8A
leaq 0xd210d(%rip), %rsi     # 0x1d23d8
leaq 0xfb62d(%rip), %rdx     # 0x1fb8ff
movb $0x0, %al
callq 0x5b9c0
movq 0x2870(%rsp), %rdi
addq $0x6c8a, %rdi           # imm = 0x6C8A
leaq 0x810(%rsp), %r8
leaq 0xd1d3d(%rip), %rsi     # 0x1d2034
leaq 0xfb5ea(%rip), %rdx     # 0x1fb8e8
movl $0x1b19, %ecx           # imm = 0x1B19
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x2894(%rsp)
jmp 0x100e60
jmp 0x10031c
movq 0x2880(%rsp), %rax
movswl 0x4c6(%rax), %eax
cmpl $0x1, %eax
jne 0x100484
movq 0x28a0(%rsp), %rax
movq 0x180(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x16c(%rcx), %rcx
cmpl $0x1, (%rax,%rcx,4)
jne 0x100484
movq 0x2888(%rsp), %rdi
movq 0x2880(%rsp), %rsi
movq 0x2878(%rsp), %rdx
movq 0x2870(%rsp), %rcx
movsd 0x2860(%rsp), %xmm0
movq 0x2850(%rsp), %r8
movsd 0x2830(%rsp), %xmm1
movq 0x28a0(%rsp), %rax
movq 0x38(%rax), %r9
movq 0x28a0(%rsp), %r10
movq 0x2870(%rsp), %rax
addq $0x6c8a, %rax           # imm = 0x6C8A
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x107d40
cmpl $0x1, %eax
jne 0x100432
leaq 0x10(%rsp), %rdi
movq 0x2870(%rsp), %rcx
addq $0x6c8a, %rcx           # imm = 0x6C8A
leaq 0xd1ff2(%rip), %rsi     # 0x1d23d8
leaq 0xfb57f(%rip), %rdx     # 0x1fb96c
movb $0x0, %al
callq 0x5b9c0
movq 0x2870(%rsp), %rdi
addq $0x6c8a, %rdi           # imm = 0x6C8A
leaq 0x10(%rsp), %r8
leaq 0xd1c25(%rip), %rsi     # 0x1d2034
leaq 0xfb4d2(%rip), %rdx     # 0x1fb8e8
movl $0x1b20, %ecx           # imm = 0x1B20
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x2894(%rsp)
jmp 0x100e60
movq 0x28a0(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x2880(%rsp), %rcx
movslq 0x3b0(%rcx), %rcx
movsd 0xd50bb(%rip), %xmm0    # 0x1d5510
mulsd (%rax,%rcx,8), %xmm0
movq 0x28a0(%rsp), %rax
movsd 0xd0(%rax), %xmm2
movq 0x28a0(%rsp), %rax
movsd 0x58(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x58(%rax)
movsd 0xd27c4(%rip), %xmm0    # 0x1d2c50
mulsd 0x2838(%rsp), %xmm0
movq 0x28a0(%rsp), %rax
movsd 0x58(%rax), %xmm2
movq 0x2880(%rsp), %rax
movsd 0xd27d6(%rip), %xmm1    # 0x1d2c88
mulsd 0x318(%rax), %xmm1
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x8(%rcx), %rcx
mulsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
divsd 0x2848(%rsp), %xmm0
divsd 0x2828(%rsp), %xmm0
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x10(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0xd326a(%rip), %xmm1    # 0x1d3780
mulsd 0x2830(%rsp), %xmm1
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x8(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd 0xd273c(%rip), %xmm0    # 0x1d2c80
mulsd 0x2848(%rsp), %xmm0
mulsd 0x2828(%rsp), %xmm0
movq 0x2850(%rsp), %rax
movq 0x28a0(%rsp), %rcx
movq 0x48(%rcx), %rcx
movslq 0xd0(%rcx), %rcx
mulsd (%rax,%rcx,8), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0xd317a(%rip), %xmm0    # 0x1d3700
mulsd 0x2838(%rsp), %xmm0
movq 0x28a0(%rsp), %rax
movsd 0x68(%rax), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0xc(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x8(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm1
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x10(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd 0xd306e(%rip), %xmm2    # 0x1d3688
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd 0xd2656(%rip), %xmm1    # 0x1d2c80
divsd %xmm1, %xmm0
divsd 0x2848(%rsp), %xmm0
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x14(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x28a0(%rsp), %rax
movq 0x180(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x160(%rcx), %rcx
cmpl $0x0, (%rax,%rcx,4)
jne 0x100805
movq 0x2878(%rsp), %rax
movswl 0x36(%rax), %eax
cmpl $0x1, %eax
jne 0x10073a
movq 0x28a0(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x2878(%rsp), %rcx
movslq 0xe80(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm1
movq 0x28a0(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x2878(%rsp), %rcx
movslq 0xec8(%rcx), %rcx
addsd (%rax,%rcx,8), %xmm1
movsd 0xf5cbf(%rip), %xmm0    # 0x1f6398
divsd %xmm1, %xmm0
movq 0x2850(%rsp), %rax
movq 0x28a0(%rsp), %rcx
movq 0x48(%rcx), %rcx
movslq 0x4(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd 0x2848(%rsp), %xmm1
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x14(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm3
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, 0x2820(%rsp)
jmp 0x1007ba
movq 0x28a0(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x2878(%rsp), %rcx
movslq 0xe80(%rcx), %rcx
movsd 0xf5c3b(%rip), %xmm0    # 0x1f6398
divsd (%rax,%rcx,8), %xmm0
movq 0x2850(%rsp), %rax
movq 0x28a0(%rsp), %rcx
movq 0x48(%rcx), %rcx
movslq 0x4(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd 0x2848(%rsp), %xmm1
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x14(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm3
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, 0x2820(%rsp)
movq 0x28a0(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x2880(%rsp), %rcx
movslq 0x38c(%rcx), %rcx
movsd 0xd4d33(%rip), %xmm0    # 0x1d5510
mulsd (%rax,%rcx,8), %xmm0
movsd 0x2820(%rsp), %xmm2
movq 0x28a0(%rsp), %rax
movsd 0x60(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x60(%rax)
movq 0x2878(%rsp), %rax
movswl 0x38(%rax), %eax
cmpl $0x1, %eax
jne 0x100925
movq 0x28a0(%rsp), %rax
movq 0x180(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x168(%rcx), %rcx
cmpl $0x0, (%rax,%rcx,4)
jne 0x100923
movq 0x28a0(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x2878(%rsp), %rcx
movslq 0xeac(%rcx), %rcx
movsd 0xf5a5b(%rip), %xmm0    # 0x1f62c0
divsd (%rax,%rcx,8), %xmm0
movq 0x2870(%rsp), %rax
movq 0x820(%rax), %rax
divsd (%rax), %xmm0
movq 0x2850(%rsp), %rax
movq 0x28a0(%rsp), %rcx
movq 0x48(%rcx), %rcx
movslq 0x94(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd 0x2848(%rsp), %xmm1
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x14(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm3
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, 0x2818(%rsp)
movq 0x28a0(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x2880(%rsp), %rcx
movslq 0x3b0(%rcx), %rcx
movsd 0xd4c15(%rip), %xmm0    # 0x1d5510
mulsd (%rax,%rcx,8), %xmm0
movsd 0x2818(%rsp), %xmm2
movq 0x28a0(%rsp), %rax
movsd 0x60(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x60(%rax)
jmp 0x100925
movsd 0xd2e53(%rip), %xmm1    # 0x1d3780
mulsd 0x2830(%rsp), %xmm1
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x14(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm2
movq 0x2850(%rsp), %rax
movq 0x28a0(%rsp), %rcx
movq 0x48(%rcx), %rcx
movslq 0xd0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x2838(%rsp), %xmm2
divsd 0x2848(%rsp), %xmm2
movsd 0xf59bb(%rip), %xmm0    # 0x1f6350
mulsd %xmm2, %xmm0
movq 0x28a0(%rsp), %rax
movsd 0x60(%rax), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x18(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x2870(%rsp), %rax
movswl 0x844(%rax), %eax
cmpl $0x0, %eax
jne 0x100bf0
movq 0x2870(%rsp), %rax
movswl 0x87c(%rax), %eax
cmpl $0x1, %eax
jne 0x100a87
movq 0x28a0(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x2880(%rsp), %rcx
movslq 0x380(%rcx), %rcx
movsd 0xd2c67(%rip), %xmm0    # 0x1d3698
mulsd (%rax,%rcx,8), %xmm0
movq 0x28a0(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x2880(%rsp), %rcx
movslq 0x384(%rcx), %rcx
mulsd (%rax,%rcx,8), %xmm0
movq 0x28a0(%rsp), %rax
mulsd 0x108(%rax), %xmm0
divsd 0x2848(%rsp), %xmm0
movq 0x28a0(%rsp), %rax
addsd 0x100(%rax), %xmm0
movsd %xmm0, 0x100(%rax)
movq 0x2870(%rsp), %rax
movswl 0x87e(%rax), %eax
cmpl $0x1, %eax
jne 0x100b14
movq 0x28a0(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x2880(%rsp), %rcx
movslq 0x380(%rcx), %rcx
movsd 0xd2bda(%rip), %xmm0    # 0x1d3698
mulsd (%rax,%rcx,8), %xmm0
movq 0x28a0(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x2880(%rsp), %rcx
movslq 0x384(%rcx), %rcx
mulsd (%rax,%rcx,8), %xmm0
movq 0x28a0(%rsp), %rax
mulsd 0x118(%rax), %xmm0
divsd 0x2848(%rsp), %xmm0
movq 0x28a0(%rsp), %rax
addsd 0x110(%rax), %xmm0
movsd %xmm0, 0x110(%rax)
movq 0x2870(%rsp), %rax
movswl 0x898(%rax), %eax
cmpl $0x1, %eax
jne 0x100b81
movq 0x2870(%rsp), %rax
cmpl $0x1, 0x83c(%rax)
jne 0x100b7f
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x14(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd 0x2848(%rsp), %xmm2
movq 0x28a0(%rsp), %rax
movsd 0x108(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x108(%rax)
jmp 0x100b81
movq 0x2870(%rsp), %rax
movswl 0x89a(%rax), %eax
cmpl $0x1, %eax
jne 0x100bee
movq 0x2870(%rsp), %rax
cmpl $0x1, 0x83c(%rax)
jne 0x100bec
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x14(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd 0x2848(%rsp), %xmm2
movq 0x28a0(%rsp), %rax
movsd 0x118(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x118(%rax)
jmp 0x100bee
jmp 0x100bf0
jmp 0x100bf2
movq 0x2870(%rsp), %rax
movswl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x100d6a
movl 0x286c(%rsp), %eax
movq 0x2870(%rsp), %rcx
cmpl 0x850(%rcx), %eax
jne 0x100d6a
movq 0x2870(%rsp), %rax
cmpl $0x0, 0x83c(%rax)
jne 0x100cc5
movsd 0xd2b41(%rip), %xmm0    # 0x1d3780
mulsd 0x2830(%rsp), %xmm0
movq 0x2850(%rsp), %rax
movq 0x28a0(%rsp), %rcx
movq 0x48(%rcx), %rcx
movslq 0xdc(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm2
movq 0x28a0(%rsp), %rax
movsd 0xd2a20(%rip), %xmm1    # 0x1d3698
mulsd 0x80(%rax), %xmm1
divsd 0x2860(%rsp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x20(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x2870(%rsp), %rax
cmpl $0x1, 0x83c(%rax)
jne 0x100d68
movsd 0xd2a9e(%rip), %xmm0    # 0x1d3780
mulsd 0x2830(%rsp), %xmm0
movq 0x2850(%rsp), %rax
movq 0x28a0(%rsp), %rcx
movq 0x48(%rcx), %rcx
movslq 0xd8(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm2
movq 0x28a0(%rsp), %rax
movsd 0xd297d(%rip), %xmm1    # 0x1d3698
mulsd 0x80(%rax), %xmm1
divsd 0x2848(%rsp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x24(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0x100d6a
movq 0x2870(%rsp), %rax
movswl 0x12(%rax), %eax
cmpl $0x1, %eax
jne 0x100e55
movl 0x286c(%rsp), %eax
movq 0x2870(%rsp), %rcx
cmpl 0x84c(%rcx), %eax
jne 0x100e55
movsd 0xd29de(%rip), %xmm0    # 0x1d3780
mulsd 0x2830(%rsp), %xmm0
movq 0x2850(%rsp), %rax
movq 0x28a0(%rsp), %rcx
movq 0x48(%rcx), %rcx
movslq 0xe4(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd 0x2848(%rsp), %xmm3
movq 0x2880(%rsp), %rax
movsd 0x318(%rax), %xmm1
addsd %xmm1, %xmm1
addsd %xmm3, %xmm1
movq 0x2850(%rsp), %rax
movq 0x28a0(%rsp), %rcx
movq 0x48(%rcx), %rcx
movslq 0xe0(%rcx), %rcx
mulsd (%rax,%rcx,8), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x28a0(%rsp), %rax
addsd 0x78(%rax), %xmm0
movq 0x28a0(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x28a0(%rsp), %rcx
movslq 0x1c(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl $0x0, 0x2894(%rsp)
movl 0x2894(%rsp), %eax
addq $0x2898, %rsp           # imm = 0x2898
retq
nop