// File: /workspace/github_c_makefile_star2_O2/PoulinV[P]AxiCLASS/build/../source/perturbations.c
// Function: perturbations_tca_slip_and_shear
int perturbations_tca_slip_and_shear(double * y,
                                     void * parameters_and_workspace,
                                     ErrorMsg error_message
                                     ) {
  /** Summary: */

  /** - define local variables */

  /* scale factor and other background quantities */
  double a,a_prime_over_a,a_primeprime_over_a,R;

  /* useful terms for tight-coupling approximation */
  double slip=0.;
  double tau_c=0.,dtau_c=0.;
  double theta_prime,shear_g_prime=0.,theta_prime_prime;
  double g0,g0_prime,g0_prime_prime;
  double F=0.,F_prime=0.,F_prime_prime=0.;

  /* short-cut names for the fields of the input structure */
  struct perturbations_parameters_and_workspace * pppaw;
  double k,k2;
  struct precision * ppr;
  struct background * pba;
  struct thermodynamics * pth;
  struct perturbations * ppt;
  struct perturbations_workspace * ppw;
  double * pvecback;
  double * pvecthermo;
  double * pvecmetric;
  struct perturbations_vector * pv;

  /* short-cut notations for the perturbations */
  double delta_g=0.,theta_g=0.,shear_g=0.;
  double delta_b,theta_b;
  double Delta;
  double cb2;
  double metric_continuity=0.,metric_euler=0.,metric_shear=0.,metric_shear_prime=0.;

  /* idm_g effects on tca */
  double theta_idm = 0., theta_idm_prime = 0.;
  double tau_2_idm_g=0., dtau_2_idm_g=0.;
  double dmu_idm_g = 0., ddmu_idm_g = 0.;
  /* in case of idm_b - for notation see 1802.06788 */
  double tau_idm_b=0., dtau_idm_b=0.;
  double R_idm_b = 0., R_idm_b_prime = 0.;
  double S_idm_b = 0.;

  /* for use with curvature */
  double s2_squared;

  /** - rename the fields of the input structure (just to avoid heavy notations) */

  pppaw = (struct perturbations_parameters_and_workspace *)parameters_and_workspace;

  k = pppaw->k;
  k2=k*k;

  ppr = pppaw->ppr;
  pba = pppaw->pba;
  pth = pppaw->pth;
  ppt = pppaw->ppt;
  ppw = pppaw->ppw;

  pvecback = ppw->pvecback;
  pvecthermo = ppw->pvecthermo;
  pvecmetric = ppw->pvecmetric;
  pv = ppw->pv;

  /** - compute related background quantities */

  a = pvecback[pba->index_bg_a];
  a_prime_over_a = pvecback[pba->index_bg_H] * a;
  a_primeprime_over_a = pvecback[pba->index_bg_H_prime] * a + 2. * a_prime_over_a * a_prime_over_a;
  R = 4./3. * pvecback[pba->index_bg_rho_g]/pvecback[pba->index_bg_rho_b];
  s2_squared = 1.-3.*pba->K/k2;

  /** - --> (a) define short-cut notations for the scalar perturbations */
  if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_off) {
    delta_g = y[pv->index_pt_delta_g];
    theta_g = y[pv->index_pt_theta_g];
  }
  delta_b = y[pv->index_pt_delta_b];
  theta_b = y[pv->index_pt_theta_b];
  cb2 = pvecthermo[pth->index_th_cb2];
  /* during TCA one can show that sound speed = adiabatic sound speed,
     so no need to take into account corrections from perturbed
     recombination here */

  if ((pth->has_idm_b == _TRUE_) || (pth->has_idm_g == _TRUE_)) {
    theta_idm = y[pv->index_pt_theta_idm];
    theta_idm_prime = ppw->theta_idm_prime;
  }

  /* terms for idm_b */
  if (pth->has_idm_b == _TRUE_) {
    R_idm_b = pvecthermo[pth->index_th_R_idm_b];
    R_idm_b_prime = pvecthermo[pth->index_th_dR_idm_b];
    S_idm_b = pvecback[pba->index_bg_rho_idm]/pvecback[pba->index_bg_rho_b];
    class_test( (ppr->tight_coupling_approximation != (int)first_order_CLASS) ,
                ppt->error_message,
                "idm_b is only coded with first order CLASS approximation in the tight coupling regime.");
  }

  if (pth->has_idm_g == _TRUE_) {
    dmu_idm_g = pvecthermo[pth->index_th_dmu_idm_g];
    ddmu_idm_g = pvecthermo[pth->index_th_ddmu_idm_g];

    class_test(ppr->tight_coupling_approximation != (int)first_order_CLASS && ppr->tight_coupling_approximation != (int)compromise_CLASS,
               ppt->error_message,
               "idm_g is only coded with the first order and compromise CLASS approximation in the tight coupling regime.");
  }

  /** - --> (b) define short-cut notations used only in tight-coupling approximation */
  tau_c = 1./pvecthermo[pth->index_th_dkappa]; /* inverse of opacity */
  dtau_c = -pvecthermo[pth->index_th_ddkappa]*tau_c*tau_c; /* its first derivative wrt conformal time */
  F = tau_c/(1+R); /* F = tau_c/(1+R) */
  if (ppr->tight_coupling_approximation >= (int)second_order_CLASS) {
    F_prime = dtau_c/(1+R)+tau_c*a_prime_over_a*R/(1+R)/(1+R); /*F' needed by second_order_CLASS and compromise_CLASS */
    if (ppr->tight_coupling_approximation == (int)second_order_CLASS) {
      F_prime_prime =(- pvecthermo[pth->index_th_dddkappa]*tau_c*tau_c /* F'' needed by second_order_CLASS only */
                      + 2.*pvecthermo[pth->index_th_ddkappa]*pvecthermo[pth->index_th_ddkappa]*tau_c*tau_c*tau_c)/(1+R)
        +2.*dtau_c*a_prime_over_a*R/(1+R)/(1+R)
        +tau_c*((a_primeprime_over_a-2.*a_prime_over_a*a_prime_over_a)+2.*a_prime_over_a*a_prime_over_a*R/(1+R))*R/(1+R)/(1+R);
    }
  }
  /* these are only needed for the photon shear */
  if (pth->has_idm_g == _TRUE_) {
    tau_2_idm_g = 1./(pvecthermo[pth->index_th_dkappa] + dmu_idm_g);
    dtau_2_idm_g = - (pvecthermo[pth->index_th_ddkappa] + ddmu_idm_g)*tau_2_idm_g*tau_2_idm_g;
  }

  if (pth->has_idm_b == _TRUE_) {
    tau_idm_b = 1./R_idm_b;
    dtau_idm_b = -R_idm_b_prime/R_idm_b/R_idm_b;
  }

  /** - --> (c) compute metric-related quantities (depending on gauge; additional gauges can be coded below)

      - Each continuity equation contains a term in (theta+metric_continuity) with
      metric_continuity = (h_prime/2) in synchronous gauge, (-3 phi_prime) in newtonian gauge

      - Each Euler equation contains a source term metric_euler with
      metric_euler = 0 in synchronous gauge, (k2 psi) in newtonian gauge

      - Each shear derivative equation contains a source term metric_shear equal to
      metric_shear = (h_prime+6eta_prime)/2 in synchronous gauge, 0 in newtonian gauge

      - metric_shear_prime is the derivative of metric_shear

      - In the ufa_class approximation, the leading-order source term is (h_prime/2) in synchronous gauge,
      (-3 (phi_prime+psi_prime)) in newtonian gauge: we approximate the later by (-6 phi_prime) */

  if (ppt->gauge == synchronous) {

    metric_continuity = pvecmetric[ppw->index_mt_h_prime]/2.;
    metric_euler = 0.;
    metric_shear = k2 * pvecmetric[ppw->index_mt_alpha];
    metric_shear_prime = k2 * pvecmetric[ppw->index_mt_alpha_prime];
  }

  if (ppt->gauge == newtonian) {

    metric_continuity = -3.*pvecmetric[ppw->index_mt_phi_prime];
    metric_euler = k2*pvecmetric[ppw->index_mt_psi];
    metric_shear = 0.;
    metric_shear_prime = 0.;
  }

  /** - --> (d) if some approximation schemes are turned on, enforce a few y[ ] values computed in perturbations_einstein */

  /* free-streaming photon velocity */
  if (ppw->approx[ppw->index_ap_rsa] == (int)rsa_on)
    theta_g = ppw->rsa_theta_g;



  /** - ---> intermediate quantities for 2nd order tca (or 1st with idm_g): zero order for theta_b' = theta_g' */
  theta_prime = (-a_prime_over_a*theta_b+k2*(cb2*delta_b+R/4.*delta_g))/(1.+R) + metric_euler;

  /** - ---> standard photon velocity derivative without tca (neglecting shear) - only needed for idm_g_dr behavior */
  if (pth->has_idm_g == _TRUE_) {
	theta_prime += -R/(1.+R) * dmu_idm_g * (theta_g - theta_idm);
  }

  /** - ---> like Ma & Bertschinger */
  if (ppr->tight_coupling_approximation == (int)first_order_MB) {

    slip=2.*R/(1.+R)*a_prime_over_a*(theta_b-theta_g)
      +F*(-a_primeprime_over_a*theta_b
          +k2*(-a_prime_over_a*delta_g/2.
               +cb2*(-theta_b-metric_continuity)
               -4./3.*(-theta_g-metric_continuity)/4.)
          -a_prime_over_a*metric_euler);

  }

  /** - ---> relax assumption dkappa~a\f$^{-2}\f$ (like in CAMB) */
  if ((ppr->tight_coupling_approximation == (int)first_order_CAMB) || (ppr->tight_coupling_approximation == (int)compromise_CLASS)) {

    slip=(dtau_c/tau_c-2.*a_prime_over_a/(1.+R))*(theta_b-theta_g)
      +F*(-a_primeprime_over_a*theta_b
          +k2*(-a_prime_over_a*delta_g/2.
               +cb2*(-theta_b-metric_continuity)
               -4./3.*(-theta_g-metric_continuity)/4.)
          -a_prime_over_a*metric_euler);
  }

  /** - ---> also relax assumption cb2~a\f$^{-1}\f$ */
  if ((ppr->tight_coupling_approximation == (int)first_order_CLASS) || (ppr->tight_coupling_approximation == (int)second_order_CLASS)){

    slip=(dtau_c/tau_c-2.*a_prime_over_a/(1.+R))*(theta_b-theta_g)
      +F*(-a_primeprime_over_a*theta_b
          +k2*(-a_prime_over_a*delta_g/2.
               +pvecthermo[pth->index_th_dcb2]*delta_b
               +cb2*(-theta_b-metric_continuity)
               -4./3.*(-theta_g-metric_continuity)/4.)
          -a_prime_over_a*metric_euler);
  }


  if (pth->has_idm_g == _TRUE_ && (ppr->tight_coupling_approximation == (int)first_order_CLASS || ppr->tight_coupling_approximation == (int)second_order_CLASS ||  ppr->tight_coupling_approximation == (int)compromise_CLASS )) {
    slip += -F*dmu_idm_g * ( k2*delta_g/4. + metric_euler + pvecthermo[pth->index_th_dkappa]*(theta_b-theta_g) + dmu_idm_g * (theta_idm - theta_g)
                             - theta_idm_prime);
  }

  if (pth->has_idm_b == _TRUE_) {
    slip -= S_idm_b * tau_c/tau_idm_b / (1.+R)
      * ( (a_prime_over_a - dtau_idm_b/tau_idm_b) * (theta_idm - theta_b)
          + theta_idm_prime
          - (-a_prime_over_a*theta_b + metric_euler + cb2*k2*delta_b + R/tau_c*(theta_g - theta_b) + S_idm_b*R_idm_b*(theta_idm - theta_b)) );
  }

  /** - ---> intermediate quantities for 2nd order tca: shear_g at first order in tight-coupling */
  shear_g=16./45.*tau_c*(theta_g+metric_shear);
  /* (Ma & Bertschinger give (1/9)*(4/3) instead of (2/15)*(4/3)
     because they didn't include the contribution of G_gamma0
     and G_gamma2, which are of the same order as sigma_g. This
     was already consistently included in CAMB) */
  /* if there is idm_g we have to use a different photon shear term, see 1802.06589 */
  if (pth->has_idm_g == _TRUE_) {
    shear_g = 16./45. * tau_2_idm_g * (theta_g + metric_shear);
  }
  /** - ---> intermediate quantities for 2nd order tca: shear_g_prime at first order in tight-coupling */
  shear_g_prime=16./45.*(tau_c*(theta_prime+metric_shear_prime)+dtau_c*(theta_g+metric_shear));

  /* change for idm_g, same as above */
  if (pth->has_idm_g == _TRUE_) {
    shear_g_prime = 16./45.*(tau_2_idm_g*(theta_prime + metric_shear_prime) + dtau_2_idm_g*(theta_g+metric_shear));
  }
  /** - ---> 2nd order as in CRS*/
  if (ppr->tight_coupling_approximation == (int)second_order_CRS) {

    if (ppt->gauge == newtonian) {

      class_stop(error_message,
                 "the second_order_CRS approach to tight-coupling is coded in synchronous gauge, not newtonian: change gauge or try another tight-coupling scheme");

    }

    if (ppt->gauge == synchronous) {

      class_test(pba->sgnK != 0,
                 ppt->error_message,
                 "the second_order_CRS approach to tight-coupling is coded in the flat case only: for non-flat try another tight-coupling scheme");

      /* infer Delta from h'' using Einstein equation */

      Delta = 2*k2*y[pv->index_pt_eta]
        -2*a_prime_over_a*pvecmetric[ppw->index_mt_h_prime]
        -pvecmetric[ppw->index_mt_h_prime_prime];

      /* monster expression for slip at second-order in tight-coupling */
      slip=(-2./(1.+R)*a_prime_over_a-pvecthermo[pth->index_th_ddkappa]/pvecthermo[pth->index_th_dkappa])*(theta_b-theta_g)
        +(-a_primeprime_over_a*theta_b
          -k2*a_prime_over_a*(delta_g/2.-2.*shear_g)
          +k2*(cb2*(-theta_b-metric_continuity)
               -4./3.*(-theta_g-metric_continuity)/4.
               +shear_g_prime)
          )/pvecthermo[pth->index_th_dkappa]/(1.+R)
        -2.*R*(3.*a_prime_over_a*a_prime_over_a*cb2+(1.+R)*(a_primeprime_over_a-a_prime_over_a*a_prime_over_a)-3.*a_prime_over_a*a_prime_over_a)
        /(1.+R)/(1.+R)/(1.+R)*(theta_b-theta_g)/pvecthermo[pth->index_th_dkappa]
        +(
          a_primeprime_over_a*a_prime_over_a*((2.-3.*cb2)*R-2.)*theta_b/(1.+R)
          +a_prime_over_a*k2*(1.-3.*cb2)*theta_b/3./(1.+R)
          +a_primeprime_over_a*k2*cb2*delta_b/(1.+R)
          +k2*k2*(3.*cb2-1.)*cb2*delta_b/3./(1.+R)
          +k2*k2*R*(3.*cb2-1.)*delta_g/12./(1.+R)
          +a_primeprime_over_a*k2*(2.+3.*R)*delta_g/4./(1.+R)
          +a_prime_over_a*a_prime_over_a*k2*((2.-3.*cb2)*R-1.)*delta_g/2./(1.+R)
          +a_prime_over_a*k2*cb2*(1.+(3.*cb2-2.)*R)*(-theta_b-metric_continuity)/(1.+R)
          +a_prime_over_a*k2*(2.+(5.-3.*cb2)*R)*4./3.*(-theta_g-metric_continuity)/4./(1.+R)
          +a_prime_over_a*(1.-3.*cb2)*k2*2.*metric_shear/3.
          +k2*k2*(3.*cb2-1.)*y[pv->index_pt_eta]/3.
          +2.*a_prime_over_a*k2*(3.*cb2-1.)*pvecmetric[ppw->index_mt_eta_prime]
          +k2*(1.-3.*cb2)*Delta/6.
          )/pvecthermo[pth->index_th_dkappa]/pvecthermo[pth->index_th_dkappa]/(1.+R)/(1.+R)
        -(4.*a_primeprime_over_a*theta_b-4.*k2*cb2*(-theta_b-metric_continuity)+2.*a_prime_over_a*k2*delta_g+k2*4./3.*(-theta_g-metric_continuity))/2./(1.+R)/(1.+R)*pvecthermo[pth->index_th_ddkappa]/pvecthermo[pth->index_th_dkappa]/pvecthermo[pth->index_th_dkappa]/pvecthermo[pth->index_th_dkappa]
        +4.*a_prime_over_a*R/(1.+R)/(1.+R)*pvecthermo[pth->index_th_ddkappa]/pvecthermo[pth->index_th_dkappa]/pvecthermo[pth->index_th_dkappa]*(theta_b-theta_g);

      /* second-order correction to shear */
      shear_g = (1.-11./6.*dtau_c)*shear_g-11./6.*tau_c*16./45.*tau_c*(theta_prime+k2*pvecmetric[ppw->index_mt_alpha_prime]);

    }
  }

  /** - ---> 2nd order like in CLASS paper */
  if (ppr->tight_coupling_approximation == (int)second_order_CLASS) {

    if (ppt->gauge == newtonian) {

      class_stop(error_message,
                 "the second_order_CLASS approach to tight-coupling is coded in synchronous gauge, not newtonian: change gauge or try another tight-coupling scheme");

    }

    if (ppt->gauge == synchronous) {

      /* zero order for theta_b'' = theta_g'' */
      theta_prime_prime = ((R-1.)*a_prime_over_a*theta_prime-(a_primeprime_over_a-a_prime_over_a*a_prime_over_a)*theta_b
                           +k2*(pvecthermo[pth->index_th_dcb2]*delta_b+cb2*(-theta_b-metric_continuity)-a_prime_over_a*R/4.*delta_g+R/4.*4./3.*(-theta_g-metric_continuity)))/(1.+R);

      /* zero-order quantities g0, g0', go'' */
      g0 = -a_prime_over_a*theta_b + k2*(cb2*delta_b-delta_g/4.);
      g0_prime = -a_prime_over_a*theta_prime-(a_primeprime_over_a-a_prime_over_a*a_prime_over_a)*theta_b+k2*(pvecthermo[pth->index_th_dcb2]*delta_b+(1./3.-cb2)*(theta_b+0.5*pvecmetric[ppw->index_mt_h_prime]));
      g0_prime_prime = -a_prime_over_a*theta_prime_prime-2.*(a_primeprime_over_a-a_prime_over_a*a_prime_over_a)*theta_prime
        -(2.*a_prime_over_a*a_prime_over_a*a_prime_over_a-3.*a_primeprime_over_a*a_prime_over_a)*theta_b
        +k2*(pvecthermo[pth->index_th_ddcb2]*delta_b-2.*pvecthermo[pth->index_th_dcb2]*(theta_b+0.5*pvecmetric[ppw->index_mt_h_prime])+(1./3.-cb2)*(theta_prime+0.5*pvecmetric[ppw->index_mt_h_prime_prime]));

      /* slip at second order */
      slip = (1.-2*a_prime_over_a*F)*slip + F*k2*s2_squared*(2.*a_prime_over_a*shear_g+shear_g_prime)
        -F*(F_prime_prime*g0+2.*F_prime*g0_prime+F*g0_prime_prime);

      /* second-order correction to shear*/
      /* this is modified for idm_g, see 1802.06589 */
      if (pth->has_idm_g == _TRUE_) {
        shear_g = (1.-11./6.*dtau_2_idm_g)*shear_g-11./6.*tau_2_idm_g*16./45.*tau_2_idm_g*(theta_prime+metric_shear_prime);
      }
      else {
        shear_g = (1.-11./6.*dtau_c)*shear_g-11./6.*tau_c*16./45.*tau_c*(theta_prime+metric_shear_prime);
      }
    }
  }

  /** - ---> add only the most important 2nd order terms */
  if (ppr->tight_coupling_approximation == (int)compromise_CLASS) {

    /* slip at second order (only leading second-order terms) */
    slip = (1.-2.*a_prime_over_a*F)*slip + F*k2*(2.*a_prime_over_a*s2_squared*shear_g+s2_squared*shear_g_prime-(1./3.-cb2)*(F*theta_prime+2.*F_prime*theta_b));

    /* second-order correction to shear */
    /* this is modified for idm_g, see 1802.06589 */
    if (pth->has_idm_g == _TRUE_) {
      shear_g = (1.-11./6.*dtau_2_idm_g)*shear_g-11./6.*tau_2_idm_g*16./45.*tau_2_idm_g*(theta_prime+metric_shear_prime);
    }
    else {
      shear_g = (1.-11./6.*dtau_c)*shear_g-11./6.*tau_c*16./45.*tau_c*(theta_prime+metric_shear_prime);
    }
  }

  /** - ---> store tight-coupling values of photon shear and its derivative */

  ppw->tca_shear_g = shear_g;
  ppw->tca_slip = slip;

  return _SUCCESS_;

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x11f8, %rsp           # imm = 0x11F8
movq %rdx, %rbx
movq 0x8(%rsi), %r10
movq 0x10(%rsi), %rdx
movq 0x38(%rsi), %rax
movq 0x30(%rax), %r15
movq 0x38(%rax), %r8
movq 0x48(%rax), %r9
movslq 0x380(%r10), %rcx
movsd (%r15,%rcx,8), %xmm11
movslq 0x384(%r10), %r13
movslq 0x388(%r10), %rcx
movslq 0x38c(%r10), %r14
movslq 0x390(%r10), %r11
movq 0x180(%rax), %r12
movslq 0x164(%rax), %rbp
movl (%r12,%rbp,4), %r12d
xorps %xmm0, %xmm0
xorpd %xmm6, %xmm6
testl %r12d, %r12d
jne 0x8d1cd
movslq (%r9), %rbp
movsd (%rdi,%rbp,8), %xmm0
movslq 0x4(%r9), %rbp
movsd (%rdi,%rbp,8), %xmm6
movaps %xmm0, 0x170(%rsp)
movsd 0x30(%rsi), %xmm0
movaps %xmm0, 0x20(%rsp)
movsd (%r15,%r13,8), %xmm8
mulsd %xmm11, %xmm8
movsd 0x318(%r10), %xmm2
movsd (%r15,%r14,8), %xmm15
mulsd (%r15,%rcx,8), %xmm11
movsd (%r15,%r11,8), %xmm1
movq (%rsi), %r11
movq 0x18(%rsi), %r14
movq 0x40(%rax), %rcx
movslq 0x28(%r9), %rsi
movsd (%rdi,%rsi,8), %xmm0
movaps %xmm0, 0x160(%rsp)
movslq 0x2c(%r9), %rsi
movsd (%rdi,%rsi,8), %xmm0
movaps %xmm0, 0x30(%rsp)
movslq 0xef0(%rdx), %rsi
movsd (%r8,%rsi,8), %xmm0
movapd %xmm0, 0x50(%rsp)
movzwl 0x34(%rdx), %ebp
cmpw $0x1, %bp
jne 0x8d2ac
cmpl $0x2, 0x5a0(%r11)
jne 0x8d69b
movslq 0x398(%r10), %rsi
movsd (%r15,%rsi,8), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, 0x80(%rsp)
movslq 0xedc(%rdx), %rsi
movsd (%r8,%rsi,8), %xmm14
movslq 0xed8(%rdx), %rsi
movsd (%r8,%rsi,8), %xmm3
movsd 0xe0(%rax), %xmm10
movslq 0x3c(%r9), %rsi
movsd (%rdi,%rsi,8), %xmm4
cmpw $0x1, 0x36(%rdx)
je 0x8d2f1
jmp 0x8d37f
xorpd %xmm0, %xmm0
movsd %xmm0, 0x80(%rsp)
cmpw $0x1, 0x36(%rdx)
xorpd %xmm14, %xmm14
xorpd %xmm3, %xmm3
xorpd %xmm4, %xmm4
xorpd %xmm10, %xmm10
jne 0x8d37f
movslq 0x3c(%r9), %rsi
movsd (%rdi,%rsi,8), %xmm4
movsd 0xe0(%rax), %xmm10
movsd %xmm0, 0x80(%rsp)
movslq 0xec8(%rdx), %rsi
movsd (%r8,%rsi,8), %xmm13
movslq 0xecc(%rdx), %rsi
movsd (%r8,%rsi,8), %xmm0
movl 0x5a0(%r11), %r11d
movb $0x1, %sil
cmpl $0x2, %r11d
je 0x8d391
cmpl $0x5, %r11d
je 0x8d391
leaq 0x8194d(%rip), %rsi     # 0x10ec75
leaq 0x9f0(%rsp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x57d41(%rip), %rsi     # 0xe5082
leaq 0x81997(%rip), %rdx     # 0x10ecdf
leaq 0x1f0(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
addq $0x6c8a, %r14           # imm = 0x6C8A
leaq 0x57cc9(%rip), %rsi     # 0xe5034
leaq 0x818e2(%rip), %rdx     # 0x10ec54
movq %r14, %rdi
movl $0x2bd6, %ecx           # imm = 0x2BD6
jmp 0x8d6f4
movl 0x5a0(%r11), %r11d
xorpd %xmm13, %xmm13
xorl %esi, %esi
xorpd %xmm0, %xmm0
movsd %xmm4, 0x130(%rsp)
movsd %xmm3, 0xe8(%rsp)
movsd %xmm2, 0x8(%rsp)
movapd %xmm8, %xmm2
addsd %xmm8, %xmm2
movapd %xmm8, %xmm3
movapd %xmm2, 0x100(%rsp)
mulsd %xmm2, %xmm3
mulsd 0x5b0b2(%rip), %xmm15   # 0xe8480
movapd %xmm3, 0x1b0(%rsp)
addsd %xmm3, %xmm11
divsd %xmm1, %xmm15
movslq 0xe80(%rdx), %r15
movsd (%r8,%r15,8), %xmm2
movsd 0x57e6a(%rip), %xmm1    # 0xe5260
movapd %xmm1, %xmm3
movapd %xmm2, 0x120(%rsp)
divsd %xmm2, %xmm3
movslq 0xe88(%rdx), %r15
movsd (%r8,%r15,8), %xmm4
movapd 0x57e14(%rip), %xmm2    # 0xe5230
xorpd %xmm4, %xmm2
movapd %xmm3, %xmm12
movapd %xmm2, 0x1c0(%rsp)
mulsd %xmm2, %xmm12
mulsd %xmm3, %xmm12
movapd %xmm15, %xmm2
addsd %xmm1, %xmm2
movapd %xmm2, 0xc0(%rsp)
xorpd %xmm1, %xmm1
movsd %xmm1, 0x90(%rsp)
xorpd %xmm7, %xmm7
xorpd %xmm5, %xmm5
cmpl $0x4, %r11d
movapd %xmm3, 0x10(%rsp)
movapd %xmm4, 0x1a0(%rsp)
jl 0x8d5af
movapd %xmm8, %xmm1
mulsd %xmm3, %xmm1
mulsd %xmm15, %xmm1
movapd 0xc0(%rsp), %xmm9
divsd %xmm9, %xmm1
movapd %xmm12, %xmm2
unpcklpd %xmm1, %xmm2            # xmm2 = xmm2[0],xmm1[0]
movapd %xmm9, %xmm1
unpcklpd %xmm9, %xmm1            # xmm1 = xmm1[0],xmm9[0]
divpd %xmm1, %xmm2
movapd %xmm2, %xmm5
unpckhpd %xmm2, %xmm5            # xmm5 = xmm5[1],xmm2[1]
addsd %xmm2, %xmm5
jne 0x8d5af
movslq 0xe8c(%rdx), %r15
movsd (%r8,%r15,8), %xmm3
mulsd 0x10(%rsp), %xmm3
movapd %xmm4, %xmm2
addsd %xmm4, %xmm2
mulsd %xmm4, %xmm2
mulsd 0x10(%rsp), %xmm2
mulsd 0x10(%rsp), %xmm2
mulsd 0x10(%rsp), %xmm2
mulsd 0x10(%rsp), %xmm3
subsd %xmm3, %xmm2
divsd %xmm9, %xmm2
movapd %xmm12, %xmm3
addsd %xmm12, %xmm3
movapd %xmm11, %xmm4
movapd %xmm6, %xmm7
movapd %xmm13, %xmm6
movapd %xmm14, %xmm13
movapd %xmm10, %xmm14
movapd 0x1b0(%rsp), %xmm10
subsd %xmm10, %xmm4
movapd %xmm5, 0xf0(%rsp)
movapd %xmm10, %xmm5
movapd %xmm14, %xmm10
movapd %xmm13, %xmm14
movapd %xmm6, %xmm13
movapd %xmm7, %xmm6
mulsd %xmm15, %xmm5
divsd %xmm9, %xmm5
addsd %xmm4, %xmm5
unpcklpd %xmm3, %xmm5            # xmm5 = xmm5[0],xmm3[0]
movapd 0x10(%rsp), %xmm3
unpcklpd %xmm8, %xmm3            # xmm3 = xmm3[0],xmm8[0]
mulpd %xmm5, %xmm3
movapd 0xf0(%rsp), %xmm5
movapd %xmm15, %xmm4
unpcklpd %xmm15, %xmm4           # xmm4 = xmm4[0],xmm15[0]
mulpd %xmm3, %xmm4
movapd 0x10(%rsp), %xmm3
divpd %xmm1, %xmm4
divpd %xmm1, %xmm4
movapd %xmm4, %xmm7
unpckhpd %xmm4, %xmm7            # xmm7 = xmm7[1],xmm4[1]
addsd %xmm2, %xmm7
addsd %xmm4, %xmm7
movapd 0x1a0(%rsp), %xmm4
movapd %xmm3, %xmm2
xorpd %xmm1, %xmm1
movsd %xmm1, (%rsp)
testb %sil, %sil
je 0x8d5fd
movapd %xmm13, %xmm1
addsd 0x120(%rsp), %xmm1
movsd 0x57c89(%rip), %xmm2    # 0xe5260
divsd %xmm1, %xmm2
addsd %xmm4, %xmm0
xorpd 0x57c49(%rip), %xmm0    # 0xe5230
mulsd %xmm2, %xmm0
mulsd %xmm2, %xmm0
movsd %xmm2, 0x90(%rsp)
movsd %xmm0, (%rsp)
movapd 0x20(%rsp), %xmm0
mulsd %xmm0, %xmm0
movapd %xmm0, 0x20(%rsp)
movl 0x83c(%r14), %r15d
xorpd %xmm0, %xmm0
movapd %xmm0, 0x140(%rsp)
testl %r15d, %r15d
movapd %xmm5, 0xf0(%rsp)
movapd %xmm7, 0x1e0(%rsp)
je 0x8d706
cmpl $0x1, %r15d
movapd 0x170(%rsp), %xmm0
jne 0x8d738
movslq 0x8(%rax), %r13
movsd (%rcx,%r13,8), %xmm5
mulsd 0x5864f(%rip), %xmm5    # 0xe5cb0
movslq 0x14(%rax), %r13
movsd (%rcx,%r13,8), %xmm1
movapd 0x20(%rsp), %xmm4
mulsd %xmm4, %xmm1
movapd %xmm1, 0x140(%rsp)
movslq 0x18(%rax), %r13
movsd (%rcx,%r13,8), %xmm1
mulsd %xmm4, %xmm1
movapd %xmm1, 0x60(%rsp)
xorpd %xmm4, %xmm4
jmp 0x8d74a
leaq 0x8151d(%rip), %rsi     # 0x10ebbf
leaq 0x9f0(%rsp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x579c7(%rip), %rsi     # 0xe5082
leaq 0x81554(%rip), %rdx     # 0x10ec16
leaq 0x1f0(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
addq $0x6c8a, %r14           # imm = 0x6C8A
leaq 0x5794f(%rip), %rsi     # 0xe5034
leaq 0x81568(%rip), %rdx     # 0x10ec54
movq %r14, %rdi
movl $0x2bcd, %ecx           # imm = 0x2BCD
movq %r15, %r8
xorl %eax, %eax
callq 0x2e014
pushq $0x1
popq %rax
jmp 0x8e9e1
movslq 0x4(%rax), %r13
movsd (%rcx,%r13,8), %xmm5
mulsd 0x5ad28(%rip), %xmm5    # 0xe8440
movslq (%rax), %r13
movsd (%rcx,%r13,8), %xmm4
mulsd 0x20(%rsp), %xmm4
movapd %xmm0, 0x60(%rsp)
movapd 0x170(%rsp), %xmm0
jmp 0x8d74a
xorpd %xmm5, %xmm5
xorpd %xmm4, %xmm4
xorpd %xmm1, %xmm1
movapd %xmm1, 0x60(%rsp)
movsd 0x130(%rsp), %xmm7
movsd %xmm2, 0xa0(%rsp)
cmpl $0x1, %r12d
jne 0x8d76a
movsd 0xb0(%rax), %xmm6
movapd 0x57abe(%rip), %xmm1    # 0xe5230
xorpd %xmm8, %xmm1
movapd %xmm1, 0xb0(%rsp)
movsd 0x5ad78(%rip), %xmm1    # 0xe8500
mulsd %xmm15, %xmm1
movapd %xmm15, %xmm2
movsd %xmm1, 0x198(%rsp)
movapd %xmm1, %xmm15
mulsd %xmm0, %xmm15
movapd 0x50(%rsp), %xmm1
mulsd 0x160(%rsp), %xmm1
movapd %xmm1, 0x1d0(%rsp)
addsd %xmm1, %xmm15
mulsd 0x20(%rsp), %xmm15
movapd %xmm8, %xmm1
mulsd 0x30(%rsp), %xmm1
subsd %xmm1, %xmm15
movapd 0xc0(%rsp), %xmm9
divsd %xmm9, %xmm15
addsd %xmm4, %xmm15
testb %sil, %sil
movapd %xmm6, 0x40(%rsp)
movapd %xmm8, 0xd0(%rsp)
movapd %xmm11, 0x150(%rsp)
movapd %xmm2, 0x70(%rsp)
je 0x8d831
movapd %xmm2, %xmm1
divsd %xmm9, %xmm1
mulsd %xmm13, %xmm1
movapd %xmm6, %xmm2
subsd %xmm7, %xmm2
mulsd %xmm1, %xmm2
subsd %xmm2, %xmm15
movapd %xmm3, %xmm11
divsd %xmm9, %xmm11
cmpl $0x5, %r11d
movapd %xmm12, 0x110(%rsp)
je 0x8d934
cmpl $0x1, %r11d
je 0x8d934
movapd %xmm13, %xmm6
xorpd %xmm1, %xmm1
testl %r11d, %r11d
jne 0x8da09
movapd 0x70(%rsp), %xmm1
addsd %xmm1, %xmm1
divsd 0xc0(%rsp), %xmm1
mulsd 0xd0(%rsp), %xmm1
movapd 0x30(%rsp), %xmm12
movapd %xmm12, %xmm2
movapd 0x40(%rsp), %xmm3
subsd %xmm3, %xmm2
mulsd %xmm1, %xmm2
movapd %xmm0, %xmm1
movapd 0xb0(%rsp), %xmm9
mulsd %xmm9, %xmm1
mulsd 0x583f4(%rip), %xmm1    # 0xe5cb0
movapd 0x5796b(%rip), %xmm8    # 0xe5230
movapd %xmm12, %xmm13
xorpd %xmm8, %xmm13
subsd %xmm5, %xmm13
mulsd 0x50(%rsp), %xmm13
addsd %xmm1, %xmm13
xorpd %xmm3, %xmm8
movapd 0x10(%rsp), %xmm3
subsd %xmm5, %xmm8
mulsd 0x74047(%rip), %xmm8    # 0x101940
mulsd 0x5abfe(%rip), %xmm8    # 0xe8500
addsd %xmm13, %xmm8
mulsd 0x20(%rsp), %xmm8
movapd 0x150(%rsp), %xmm1
mulsd %xmm12, %xmm1
subsd %xmm1, %xmm8
movapd %xmm9, %xmm1
mulsd %xmm4, %xmm1
addsd %xmm8, %xmm1
jmp 0x8dafe
movapd %xmm13, %xmm6
movapd %xmm12, %xmm1
divsd %xmm3, %xmm1
movapd 0x100(%rsp), %xmm2
divsd 0xc0(%rsp), %xmm2
subsd %xmm2, %xmm1
movapd 0x30(%rsp), %xmm12
movapd %xmm12, %xmm2
movapd 0x40(%rsp), %xmm3
subsd %xmm3, %xmm2
mulsd %xmm1, %xmm2
movapd %xmm0, %xmm1
movapd 0xb0(%rsp), %xmm9
mulsd %xmm9, %xmm1
mulsd 0x58323(%rip), %xmm1    # 0xe5cb0
movapd 0x5789a(%rip), %xmm8    # 0xe5230
movapd %xmm12, %xmm13
xorpd %xmm8, %xmm13
subsd %xmm5, %xmm13
mulsd 0x50(%rsp), %xmm13
addsd %xmm1, %xmm13
xorpd %xmm3, %xmm8
movapd 0x10(%rsp), %xmm3
subsd %xmm5, %xmm8
mulsd 0x73f76(%rip), %xmm8    # 0x101940
mulsd 0x5ab2d(%rip), %xmm8    # 0xe8500
addsd %xmm13, %xmm8
mulsd 0x20(%rsp), %xmm8
movapd 0x150(%rsp), %xmm1
mulsd %xmm12, %xmm1
subsd %xmm1, %xmm8
movapd %xmm9, %xmm1
mulsd %xmm4, %xmm1
addsd %xmm8, %xmm1
mulsd %xmm11, %xmm1
addsd %xmm2, %xmm1
cmpl $0x4, %r11d
je 0x8da19
cmpl $0x2, %r11d
jne 0x8db07
movapd 0x110(%rsp), %xmm1
divsd %xmm3, %xmm1
movapd 0x100(%rsp), %xmm2
divsd 0xc0(%rsp), %xmm2
subsd %xmm2, %xmm1
movapd 0x30(%rsp), %xmm12
movapd %xmm12, %xmm2
movapd 0x40(%rsp), %xmm3
subsd %xmm3, %xmm2
mulsd %xmm1, %xmm2
movapd %xmm0, %xmm1
movapd 0xb0(%rsp), %xmm9
mulsd %xmm9, %xmm1
mulsd 0x5823f(%rip), %xmm1    # 0xe5cb0
movslq 0xef4(%rdx), %r12
movsd (%r8,%r12,8), %xmm8
mulsd 0x160(%rsp), %xmm8
addsd %xmm1, %xmm8
movapd 0x5779a(%rip), %xmm13   # 0xe5230
movapd %xmm12, %xmm1
xorpd %xmm13, %xmm1
subsd %xmm5, %xmm1
mulsd 0x50(%rsp), %xmm1
addsd %xmm8, %xmm1
xorpd %xmm3, %xmm13
movapd 0x10(%rsp), %xmm3
subsd %xmm5, %xmm13
mulsd 0x73e78(%rip), %xmm13   # 0x101940
mulsd 0x5aa2f(%rip), %xmm13   # 0xe8500
addsd %xmm1, %xmm13
mulsd 0x20(%rsp), %xmm13
movapd 0x150(%rsp), %xmm1
mulsd %xmm12, %xmm1
subsd %xmm1, %xmm13
movapd %xmm9, %xmm1
mulsd %xmm4, %xmm1
addsd %xmm13, %xmm1
mulsd %xmm11, %xmm1
addsd %xmm2, %xmm1
testb %sil, %sil
je 0x8db9a
cmpl $0x5, %r11d
movsd 0x8(%rsp), %xmm12
ja 0x8dba1
pushq $0x34
popq %r12
btl %r11d, %r12d
jae 0x8dba1
movapd %xmm6, %xmm2
mulsd %xmm11, %xmm2
movapd 0x20(%rsp), %xmm8
mulsd %xmm0, %xmm8
mulsd 0x5a9b7(%rip), %xmm8    # 0xe8500
addsd %xmm4, %xmm8
movapd 0x30(%rsp), %xmm13
movapd 0x40(%rsp), %xmm3
subsd %xmm3, %xmm13
mulsd 0x120(%rsp), %xmm13
addsd %xmm8, %xmm13
movapd %xmm7, %xmm8
subsd %xmm3, %xmm8
movapd 0x10(%rsp), %xmm3
mulsd %xmm6, %xmm8
addsd %xmm13, %xmm8
subsd %xmm10, %xmm8
mulsd %xmm2, %xmm8
subsd %xmm8, %xmm1
jmp 0x8dba1
movsd 0x8(%rsp), %xmm12
mulsd 0x5a896(%rip), %xmm12   # 0xe8440
cmpw $0x1, %bp
jne 0x8dce1
xorpd 0x57673(%rip), %xmm14   # 0xe5230
movapd %xmm11, 0x180(%rsp)
movsd 0x80(%rsp), %xmm11
movsd 0xe8(%rsp), %xmm6
divsd %xmm6, %xmm14
movsd 0x57679(%rip), %xmm2    # 0xe5260
divsd %xmm6, %xmm2
divsd %xmm6, %xmm14
divsd %xmm2, %xmm14
movapd 0xd0(%rsp), %xmm8
subsd %xmm14, %xmm8
movapd %xmm5, %xmm14
movapd %xmm12, %xmm5
movapd 0x30(%rsp), %xmm12
subsd %xmm12, %xmm7
mulsd %xmm7, %xmm8
addsd %xmm10, %xmm8
movapd %xmm7, %xmm10
movapd 0xb0(%rsp), %xmm7
mulsd %xmm12, %xmm7
addsd %xmm4, %xmm7
movapd 0x20(%rsp), %xmm4
mulsd 0x50(%rsp), %xmm4
movapd 0x160(%rsp), %xmm0
mulsd %xmm0, %xmm4
addsd %xmm7, %xmm4
movapd 0x70(%rsp), %xmm7
divsd %xmm3, %xmm7
movapd %xmm3, %xmm9
movapd 0x40(%rsp), %xmm3
movapd %xmm3, %xmm13
subsd %xmm12, %xmm13
movapd %xmm5, %xmm12
movapd %xmm14, %xmm5
mulsd %xmm7, %xmm13
addsd %xmm4, %xmm13
mulsd %xmm11, %xmm6
mulsd %xmm10, %xmm6
addsd %xmm13, %xmm6
subsd %xmm6, %xmm8
mulsd %xmm9, %xmm11
movapd 0x170(%rsp), %xmm0
divsd %xmm2, %xmm11
movapd 0xc0(%rsp), %xmm13
divsd %xmm13, %xmm11
mulsd %xmm8, %xmm11
subsd %xmm11, %xmm1
movapd 0x180(%rsp), %xmm11
movapd 0x110(%rsp), %xmm14
jmp 0x8dcfb
movapd 0x40(%rsp), %xmm3
movapd 0x110(%rsp), %xmm14
movapd 0xc0(%rsp), %xmm13
movsd 0xa0(%rsp), %xmm9
movapd 0x60(%rsp), %xmm10
divsd 0x20(%rsp), %xmm12
movapd 0x140(%rsp), %xmm2
addsd %xmm3, %xmm2
movsd 0x7b7a0(%rip), %xmm4    # 0x1094c8
mulsd %xmm4, %xmm9
addsd %xmm15, %xmm10
testb %sil, %sil
jne 0x8dd55
movapd %xmm14, %xmm7
mulsd %xmm2, %xmm7
movapd 0x10(%rsp), %xmm3
movapd %xmm3, %xmm6
mulsd %xmm10, %xmm6
addsd %xmm7, %xmm6
jmp 0x8dd76
movsd (%rsp), %xmm7
mulsd %xmm2, %xmm7
movsd 0x90(%rsp), %xmm6
mulsd %xmm10, %xmm6
addsd %xmm7, %xmm6
movapd 0x10(%rsp), %xmm3
addsd 0x574e1(%rip), %xmm12   # 0xe5260
mulsd %xmm2, %xmm9
mulsd %xmm4, %xmm6
cmpl $0x5, %r11d
je 0x8de68
cmpl $0x4, %r11d
je 0x8de05
cmpl $0x3, %r11d
jne 0x8e9ce
cmpl $0x1, %r15d
je 0x8e29b
testl %r15d, %r15d
jne 0x8e9ce
leaq 0x80f9d(%rip), %rsi     # 0x10ed59
leaq 0x9f0(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x577b0(%rip), %rsi     # 0xe5585
leaq 0x1f0(%rsp), %r15
movq %r15, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x2e014
leaq 0x57243(%rip), %rsi     # 0xe5034
leaq 0x80e5c(%rip), %rdx     # 0x10ec54
movq %rbx, %rdi
movl $0x2c68, %ecx           # imm = 0x2C68
jmp 0x8d6f4
cmpl $0x1, %r15d
je 0x8df8f
testl %r15d, %r15d
jne 0x8e9ce
leaq 0x81058(%rip), %rsi     # 0x10ee77
leaq 0x9f0(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x5774d(%rip), %rsi     # 0xe5585
leaq 0x1f0(%rsp), %r15
movq %r15, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x2e014
leaq 0x571e0(%rip), %rsi     # 0xe5034
leaq 0x80df9(%rip), %rdx     # 0x10ec54
movq %rbx, %rdi
movl $0x2ca0, %ecx           # imm = 0x2CA0
jmp 0x8d6f4
movapd 0x100(%rsp), %xmm4
movapd %xmm4, %xmm0
mulsd %xmm11, %xmm0
movsd 0x573de(%rip), %xmm5    # 0xe5260
subsd %xmm0, %xmm5
movapd 0x20(%rsp), %xmm7
mulsd %xmm11, %xmm7
mulsd %xmm12, %xmm4
mulsd %xmm12, %xmm6
mulsd %xmm9, %xmm4
addsd %xmm6, %xmm4
movsd 0x5a55c(%rip), %xmm0    # 0xe8408
subsd 0x50(%rsp), %xmm0
movapd 0xf0(%rsp), %xmm6
addsd %xmm6, %xmm6
movapd 0x30(%rsp), %xmm2
mulsd %xmm6, %xmm2
mulsd %xmm11, %xmm15
addsd %xmm2, %xmm15
mulsd %xmm0, %xmm15
subsd %xmm15, %xmm4
mulsd %xmm7, %xmm4
mulsd %xmm5, %xmm1
addsd %xmm4, %xmm1
testb %sil, %sil
je 0x8df44
movsd (%rsp), %xmm3
mulsd 0x7b60d(%rip), %xmm3    # 0x109508
addsd 0x5735d(%rip), %xmm3    # 0xe5260
movsd 0x7b605(%rip), %xmm0    # 0x109510
movsd 0x90(%rsp), %xmm2
mulsd %xmm2, %xmm0
mulsd 0x578d8(%rip), %xmm0    # 0xe57f8
divsd 0x5a890(%rip), %xmm0    # 0xe87b8
mulsd %xmm2, %xmm0
mulsd %xmm10, %xmm0
mulsd %xmm9, %xmm3
addsd %xmm0, %xmm3
movapd %xmm3, %xmm9
jmp 0x8e9ce
mulsd 0x7b5bb(%rip), %xmm14   # 0x109508
addsd 0x5730a(%rip), %xmm14   # 0xe5260
movsd 0x7b5b2(%rip), %xmm0    # 0x109510
mulsd %xmm3, %xmm0
mulsd 0x5788e(%rip), %xmm0    # 0xe57f8
divsd 0x5a846(%rip), %xmm0    # 0xe87b8
mulsd %xmm3, %xmm0
mulsd %xmm10, %xmm0
mulsd %xmm9, %xmm14
addsd %xmm0, %xmm14
movapd %xmm14, %xmm9
jmp 0x8e9ce
movapd %xmm10, 0x60(%rsp)
movsd 0x5784a(%rip), %xmm2    # 0xe57e8
movsd %xmm12, 0x8(%rsp)
movapd 0x70(%rsp), %xmm12
addsd %xmm12, %xmm2
movslq 0xef4(%rdx), %rdi
movapd 0x20(%rsp), %xmm13
movapd %xmm11, 0x180(%rsp)
movapd 0x5725e(%rip), %xmm11   # 0xe5230
movapd 0x30(%rsp), %xmm8
xorpd %xmm11, %xmm8
subsd %xmm5, %xmm8
mulsd 0x50(%rsp), %xmm8
movsd (%r8,%rdi,8), %xmm3
movsd %xmm3, 0x80(%rsp)
movsd %xmm9, 0xa0(%rsp)
movapd 0x160(%rsp), %xmm9
mulsd %xmm9, %xmm3
movsd %xmm3, 0x140(%rsp)
addsd %xmm3, %xmm8
movapd 0xd0(%rsp), %xmm14
mulsd %xmm14, %xmm12
mulsd 0x57250(%rip), %xmm12   # 0xe5288
mulsd %xmm0, %xmm12
addsd %xmm8, %xmm12
movapd 0xb0(%rsp), %xmm7
movapd %xmm7, %xmm10
mulsd %xmm14, %xmm10
movapd 0x150(%rsp), %xmm4
addsd %xmm4, %xmm10
movapd %xmm10, %xmm8
xorpd %xmm11, %xmm8
movapd 0x40(%rsp), %xmm3
xorpd %xmm11, %xmm3
subsd %xmm5, %xmm3
movsd 0x198(%rsp), %xmm5
mulsd 0x5a36b(%rip), %xmm5    # 0xe83f8
divsd 0x586b3(%rip), %xmm5    # 0xe6748
mulsd %xmm5, %xmm3
addsd %xmm12, %xmm3
mulsd %xmm14, %xmm2
movapd 0x30(%rsp), %xmm14
mulsd %xmm14, %xmm8
mulsd %xmm15, %xmm2
addsd %xmm8, %xmm2
mulsd %xmm13, %xmm3
addsd %xmm2, %xmm3
divsd 0xc0(%rsp), %xmm3
mulsd 0x571b5(%rip), %xmm0    # 0xe5288
movapd 0x1d0(%rsp), %xmm5
addsd %xmm0, %xmm5
mulsd %xmm13, %xmm5
movapd %xmm7, %xmm2
mulsd %xmm14, %xmm2
addsd %xmm5, %xmm2
movapd 0x1e0(%rsp), %xmm12
mulsd %xmm2, %xmm12
movapd %xmm7, %xmm2
mulsd %xmm15, %xmm2
addsd %xmm8, %xmm2
movsd 0x5a2f0(%rip), %xmm11   # 0xe8408
subsd 0x50(%rsp), %xmm11
movslq 0x8(%rax), %rdi
movsd 0x57b85(%rip), %xmm0    # 0xe5cb0
movsd (%rcx,%rdi,8), %xmm5
mulsd %xmm0, %xmm5
movslq 0xc(%rax), %rdi
mulsd (%rcx,%rdi,8), %xmm0
addsd %xmm14, %xmm5
addsd %xmm15, %xmm0
mulsd %xmm11, %xmm0
mulsd %xmm5, %xmm11
addsd 0x140(%rsp), %xmm11
mulsd %xmm13, %xmm11
addsd %xmm2, %xmm11
movsd 0x585cb(%rip), %xmm2    # 0xe6738
mulsd %xmm2, %xmm10
mulsd %xmm15, %xmm10
mulsd %xmm7, %xmm3
addsd %xmm10, %xmm3
mulsd 0x5a2b8(%rip), %xmm4    # 0xe8440
movapd 0xd0(%rsp), %xmm10
mulsd %xmm10, %xmm4
movapd 0x1b0(%rsp), %xmm8
mulsd %xmm10, %xmm8
addsd %xmm4, %xmm8
mulsd %xmm14, %xmm8
subsd %xmm8, %xmm3
movsd 0x80(%rsp), %xmm4
mulsd %xmm2, %xmm4
movslq 0xef8(%rdx), %rcx
mulsd (%r8,%rcx,8), %xmm9
mulsd %xmm5, %xmm4
addsd %xmm4, %xmm9
addsd %xmm9, %xmm0
movsd 0xa0(%rsp), %xmm5
mulsd %xmm13, %xmm0
addsd %xmm3, %xmm0
movapd 0x100(%rsp), %xmm3
movapd %xmm3, %xmm2
movapd 0x180(%rsp), %xmm7
mulsd %xmm7, %xmm2
movsd 0x5704f(%rip), %xmm4    # 0xe5260
subsd %xmm2, %xmm4
mulsd %xmm7, %xmm13
movsd 0x8(%rsp), %xmm2
mulsd %xmm13, %xmm2
mulsd %xmm5, %xmm3
addsd %xmm6, %xmm3
mulsd %xmm2, %xmm3
mulsd %xmm1, %xmm4
addsd %xmm3, %xmm4
movapd 0xf0(%rsp), %xmm1
addsd %xmm1, %xmm1
mulsd %xmm11, %xmm1
addsd %xmm12, %xmm1
mulsd %xmm7, %xmm0
addsd %xmm1, %xmm0
mulsd %xmm7, %xmm0
movapd %xmm4, %xmm1
subsd %xmm0, %xmm1
testb %sil, %sil
je 0x8e307
movsd (%rsp), %xmm9
mulsd 0x7b28c(%rip), %xmm9    # 0x109508
addsd 0x56fdb(%rip), %xmm9    # 0xe5260
movsd 0x7b283(%rip), %xmm0    # 0x109510
movsd 0x90(%rsp), %xmm2
jmp 0x8e331
cmpl $0x0, 0x320(%r10)
je 0x8e35e
leaq 0x80b39(%rip), %rsi     # 0x10ede9
leaq 0x9f0(%rsp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x56db9(%rip), %rsi     # 0xe5082
leaq 0x80b98(%rip), %rdx     # 0x10ee68
leaq 0x1f0(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
addq $0x6c8a, %r14           # imm = 0x6C8A
leaq 0x56d41(%rip), %rsi     # 0xe5034
leaq 0x8095a(%rip), %rdx     # 0x10ec54
movq %r14, %rdi
movl $0x2c70, %ecx           # imm = 0x2C70
jmp 0x8d6f4
movapd 0x110(%rsp), %xmm9
mulsd 0x7b1ee(%rip), %xmm9    # 0x109508
addsd 0x56f3d(%rip), %xmm9    # 0xe5260
movsd 0x7b1e5(%rip), %xmm0    # 0x109510
movapd 0x10(%rsp), %xmm2
mulsd %xmm2, %xmm0
mulsd 0x574bb(%rip), %xmm0    # 0xe57f8
divsd 0x5a473(%rip), %xmm0    # 0xe87b8
mulsd %xmm2, %xmm0
mulsd 0x60(%rsp), %xmm0
mulsd %xmm5, %xmm9
addsd %xmm0, %xmm9
jmp 0x8e9ce
movapd 0x20(%rsp), %xmm1
addsd %xmm1, %xmm1
movslq 0xd0(%r9), %rdx
movslq 0x8(%rax), %rsi
movapd %xmm0, %xmm4
movsd (%rcx,%rsi,8), %xmm0
mulsd 0x100(%rsp), %xmm0
movsd (%rdi,%rdx,8), %xmm2
movapd %xmm2, 0xf0(%rsp)
mulsd %xmm2, %xmm1
subsd %xmm0, %xmm1
movapd %xmm1, 0x130(%rsp)
movsd 0x5a094(%rip), %xmm1    # 0xe8440
movapd 0x50(%rsp), %xmm11
mulsd %xmm11, %xmm1
movsd %xmm1, 0xe8(%rsp)
movapd %xmm1, %xmm0
addsd 0x57913(%rip), %xmm0    # 0xe5ce0
mulsd 0x70(%rsp), %xmm0
movapd %xmm0, 0x90(%rsp)
movapd %xmm5, %xmm8
movsd 0x5834f(%rip), %xmm5    # 0xe6738
movapd %xmm0, %xmm1
addsd %xmm5, %xmm1
movsd %xmm1, 0x8(%rsp)
mulsd 0x58348(%rip), %xmm11   # 0xe6748
movapd %xmm11, 0xa0(%rsp)
addsd %xmm5, %xmm11
divsd %xmm13, %xmm5
movapd 0x1c0(%rsp), %xmm1
divsd 0x120(%rsp), %xmm1
movapd %xmm9, %xmm0
movapd 0xd0(%rsp), %xmm7
mulsd %xmm7, %xmm5
addsd %xmm1, %xmm5
movsd %xmm5, (%rsp)
mulsd 0x7b0be(%rip), %xmm14   # 0x109508
movapd %xmm4, %xmm5
mulsd 0x5785a(%rip), %xmm5    # 0xe5cb0
movsd 0x56e01(%rip), %xmm9    # 0xe5260
addsd %xmm9, %xmm14
mulsd %xmm0, %xmm14
movapd %xmm14, 0x110(%rsp)
movapd %xmm0, %xmm3
addsd %xmm0, %xmm3
subsd %xmm3, %xmm5
movapd 0x30(%rsp), %xmm3
movapd %xmm3, %xmm0
movapd %xmm13, %xmm4
movapd 0x40(%rsp), %xmm1
subsd %xmm1, %xmm0
movapd %xmm0, 0x80(%rsp)
movapd 0x56d87(%rip), %xmm0    # 0xe5230
movapd 0x150(%rsp), %xmm12
movapd %xmm12, %xmm2
xorpd %xmm0, %xmm2
movapd %xmm3, %xmm14
xorpd %xmm0, %xmm14
xorpd %xmm0, %xmm1
subsd %xmm8, %xmm14
movapd %xmm14, 0x60(%rsp)
subsd %xmm8, %xmm1
movapd %xmm1, 0x40(%rsp)
movsd 0x59f97(%rip), %xmm3    # 0xe8480
mulsd %xmm1, %xmm3
mulsd 0x56d93(%rip), %xmm3    # 0xe5288
movapd 0x50(%rsp), %xmm10
movapd %xmm10, %xmm0
mulsd %xmm14, %xmm0
addsd %xmm3, %xmm0
addsd %xmm6, %xmm0
movapd %xmm7, %xmm3
mulsd 0x5822e(%rip), %xmm3    # 0xe6748
mulsd %xmm7, %xmm3
movapd 0xb0(%rsp), %xmm6
mulsd %xmm7, %xmm6
addsd %xmm12, %xmm6
mulsd %xmm13, %xmm6
movapd %xmm3, %xmm8
mulsd %xmm10, %xmm8
addsd %xmm6, %xmm8
subsd %xmm3, %xmm8
movapd 0x70(%rsp), %xmm13
movapd %xmm13, %xmm3
addsd %xmm13, %xmm3
mulsd %xmm3, %xmm8
movapd %xmm7, %xmm3
mulsd %xmm12, %xmm3
movsd 0x8(%rsp), %xmm1
mulsd %xmm3, %xmm1
movsd %xmm1, 0x8(%rsp)
movsd 0x57268(%rip), %xmm3    # 0xe57e8
movapd 0xa0(%rsp), %xmm1
addsd %xmm3, %xmm1
movapd %xmm1, 0xa0(%rsp)
movapd 0x90(%rsp), %xmm1
addsd %xmm3, %xmm1
movsd 0xe8(%rsp), %xmm14
movapd %xmm14, %xmm6
addsd %xmm9, %xmm6
mulsd %xmm13, %xmm11
addsd %xmm9, %xmm11
movapd %xmm11, 0xb0(%rsp)
movapd 0x20(%rsp), %xmm9
movapd %xmm7, %xmm13
mulsd %xmm7, %xmm13
movapd %xmm9, %xmm3
unpcklpd %xmm9, %xmm3            # xmm3 = xmm3[0],xmm9[0]
unpcklpd %xmm7, %xmm13           # xmm13 = xmm13[0],xmm7[0]
mulpd %xmm3, %xmm13
unpcklpd %xmm10, %xmm1           # xmm1 = xmm1[0],xmm10[0]
mulpd %xmm13, %xmm1
movapd %xmm1, 0x90(%rsp)
unpckhpd %xmm13, %xmm13          # xmm13 = xmm13[1,1]
mulsd %xmm13, %xmm5
movapd 0x30(%rsp), %xmm11
mulsd %xmm11, %xmm2
subsd %xmm5, %xmm2
mulsd %xmm9, %xmm0
addsd %xmm2, %xmm0
movapd 0x120(%rsp), %xmm2
divsd %xmm2, %xmm0
divsd %xmm4, %xmm0
movsd (%rsp), %xmm1
movapd 0x80(%rsp), %xmm10
mulsd %xmm10, %xmm1
addsd %xmm0, %xmm1
divsd %xmm4, %xmm8
divsd %xmm4, %xmm8
divsd %xmm4, %xmm8
mulsd %xmm10, %xmm8
divsd %xmm2, %xmm8
subsd %xmm8, %xmm1
movsd %xmm1, (%rsp)
movapd 0x70(%rsp), %xmm7
movapd %xmm7, %xmm1
movsd 0x580c4(%rip), %xmm2    # 0xe6748
mulsd %xmm2, %xmm1
addsd 0x56bdf(%rip), %xmm14   # 0xe5270
movsd 0x57647(%rip), %xmm0    # 0xe5ce0
addsd %xmm0, %xmm1
mulsd %xmm7, %xmm14
addsd %xmm0, %xmm14
movsd 0x8(%rsp), %xmm0
mulsd %xmm11, %xmm0
divsd %xmm4, %xmm0
movapd %xmm0, %xmm8
mulsd %xmm13, %xmm14
movapd %xmm14, %xmm5
movapd %xmm13, %xmm0
mulsd %xmm6, %xmm0
mulsd %xmm11, %xmm0
divsd %xmm2, %xmm0
movapd %xmm2, %xmm13
divsd %xmm4, %xmm0
addsd %xmm8, %xmm0
movapd %xmm9, %xmm2
mulsd %xmm12, %xmm2
mulsd %xmm2, %xmm1
movapd 0x50(%rsp), %xmm7
mulsd %xmm7, %xmm2
movapd 0x160(%rsp), %xmm14
mulsd %xmm14, %xmm2
divsd %xmm4, %xmm2
addsd %xmm2, %xmm0
movapd 0x170(%rsp), %xmm11
movapd %xmm11, %xmm2
unpcklpd 0xb0(%rsp), %xmm2       # xmm2 = xmm2[0],mem[0]
mulpd 0x90(%rsp), %xmm2
movapd 0x7abc2(%rip), %xmm10   # 0x109300
unpcklpd 0x60(%rsp), %xmm10      # xmm10 = xmm10[0],mem[0]
mulpd %xmm2, %xmm10
mulsd %xmm11, %xmm1
movsd 0x59da8(%rip), %xmm8    # 0xe8500
mulsd %xmm8, %xmm1
mulsd 0x59c93(%rip), %xmm5    # 0xe83f8
divsd %xmm13, %xmm5
mulsd 0x40(%rsp), %xmm5
mulsd %xmm8, %xmm5
movapd 0xd0(%rsp), %xmm8
mulsd %xmm6, %xmm8
unpcklpd %xmm9, %xmm8            # xmm8 = xmm8[0],xmm9[0]
mulpd %xmm3, %xmm8
movapd 0x140(%rsp), %xmm13
unpcklpd 0xf0(%rsp), %xmm13      # xmm13 = xmm13[0],mem[0]
movapd 0x75ec6(%rip), %xmm3    # 0x104670
movapd 0xa0(%rsp), %xmm2
unpcklpd %xmm2, %xmm3            # xmm3 = xmm3[0],xmm2[0]
mulpd %xmm8, %xmm3
unpckhpd %xmm8, %xmm8            # xmm8 = xmm8[1,1]
mulsd 0x70(%rsp), %xmm8
unpcklpd %xmm7, %xmm8            # xmm8 = xmm8[0],xmm7[0]
mulpd %xmm3, %xmm13
movsd %xmm2, %xmm3            # xmm3 = xmm2[0],xmm3[1]
mulpd %xmm8, %xmm3
movapd %xmm11, %xmm8
unpcklpd %xmm14, %xmm8           # xmm8 = xmm8[0],xmm14[0]
mulpd %xmm3, %xmm8
movapd %xmm4, %xmm3
unpcklpd %xmm4, %xmm3            # xmm3 = xmm3[0],xmm4[0]
divpd 0x7ab15(%rip), %xmm8    # 0x109310
divpd %xmm3, %xmm10
divpd %xmm3, %xmm8
movapd %xmm8, %xmm3
unpckhpd %xmm8, %xmm3            # xmm3 = xmm3[1],xmm8[1]
addsd %xmm0, %xmm3
addsd %xmm8, %xmm3
divsd %xmm4, %xmm1
addsd %xmm1, %xmm3
addsd %xmm10, %xmm3
unpckhpd %xmm10, %xmm10          # xmm10 = xmm10[1,1]
addsd %xmm3, %xmm10
divsd %xmm4, %xmm5
addsd %xmm5, %xmm10
divpd 0x731bf(%rip), %xmm13   # 0x101a00
addsd %xmm13, %xmm10
unpckhpd %xmm13, %xmm13          # xmm13 = xmm13[1,1]
addsd %xmm10, %xmm13
movapd 0x100(%rsp), %xmm1
mulsd %xmm9, %xmm1
mulsd %xmm1, %xmm2
movslq 0x10(%rax), %rdx
mulsd (%rcx,%rdx,8), %xmm2
addsd %xmm13, %xmm2
movslq 0xc(%rax), %rdx
movapd 0x130(%rsp), %xmm0
subsd (%rcx,%rdx,8), %xmm0
mulsd %xmm9, %xmm6
mulsd %xmm0, %xmm6
divsd 0x57dbd(%rip), %xmm6    # 0xe6650
addsd %xmm2, %xmm6
movapd %xmm9, %xmm0
movsd 0x59b54(%rip), %xmm2    # 0xe83f8
mulsd %xmm2, %xmm0
mulsd %xmm0, %xmm7
mulsd 0x60(%rsp), %xmm7
movapd %xmm7, %xmm3
mulsd %xmm2, %xmm12
movapd %xmm2, %xmm7
mulsd 0x30(%rsp), %xmm12
subsd %xmm3, %xmm12
mulsd %xmm11, %xmm1
addsd %xmm12, %xmm1
divsd 0x57e6b(%rip), %xmm0    # 0xe6748
mulsd 0x40(%rsp), %xmm0
addsd %xmm1, %xmm0
mulsd 0x573c1(%rip), %xmm0    # 0xe5cb0
movapd 0x120(%rsp), %xmm2
divsd %xmm2, %xmm6
divsd %xmm4, %xmm0
divsd %xmm4, %xmm0
movapd 0x1a0(%rsp), %xmm1
mulsd %xmm1, %xmm0
unpcklpd %xmm0, %xmm6            # xmm6 = xmm6[0],xmm0[0]
movapd %xmm2, %xmm0
unpcklpd %xmm2, %xmm0            # xmm0 = xmm0[0],xmm2[0]
divpd %xmm0, %xmm6
movapd %xmm4, %xmm0
unpcklpd %xmm2, %xmm0            # xmm0 = xmm0[0],xmm2[0]
divpd %xmm0, %xmm6
divpd %xmm0, %xmm6
movsd (%rsp), %xmm0
addsd %xmm6, %xmm0
unpckhpd %xmm6, %xmm6            # xmm6 = xmm6[1,1]
subsd %xmm6, %xmm0
movapd %xmm0, %xmm5
movapd 0xd0(%rsp), %xmm3
mulsd %xmm7, %xmm3
mulsd 0x70(%rsp), %xmm3
divsd %xmm4, %xmm3
divsd %xmm4, %xmm3
mulsd %xmm1, %xmm3
divsd %xmm2, %xmm3
divsd %xmm2, %xmm3
mulsd 0x80(%rsp), %xmm3
movsd 0x7ab92(%rip), %xmm0    # 0x109510
movapd 0x10(%rsp), %xmm1
mulsd %xmm1, %xmm0
mulsd 0x56e68(%rip), %xmm0    # 0xe57f8
addsd %xmm5, %xmm3
movslq 0x18(%rax), %rdx
mulsd (%rcx,%rdx,8), %xmm9
addsd %xmm15, %xmm9
divsd 0x59e0d(%rip), %xmm0    # 0xe87b8
mulsd %xmm1, %xmm0
mulsd %xmm9, %xmm0
movapd 0x110(%rsp), %xmm1
addsd %xmm0, %xmm1
movapd %xmm1, %xmm0
movapd %xmm3, %xmm1
movapd %xmm0, %xmm9
movsd %xmm9, 0x90(%rax)
movsd %xmm1, 0x98(%rax)
xorl %eax, %eax
addq $0x11f8, %rsp           # imm = 0x11F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop