// File: /workspace/github_c_makefile_star2_O1/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 $0x1248, %rsp           # imm = 0x1248
movq %rdx, 0x140(%rsp)
movq %rdi, 0x18(%rsp)
movq 0x8(%rsi), %r15
movq 0x10(%rsi), %rdi
movq 0x38(%rsi), %rax
movq 0x30(%rax), %rcx
movq 0x48(%rax), %rbx
movslq 0x380(%r15), %rdx
movq 0x180(%rax), %r8
movslq 0x164(%rax), %r9
movl (%r8,%r9,4), %r12d
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
xorpd %xmm13, %xmm13
testl %r12d, %r12d
jne 0x94730
movslq (%rbx), %r8
movq 0x18(%rsp), %r9
movsd (%r9,%r8,8), %xmm0
movaps %xmm0, 0x60(%rsp)
movslq 0x4(%rbx), %r8
movsd (%r9,%r8,8), %xmm13
movsd (%rcx,%rdx,8), %xmm5
movslq 0x384(%r15), %r9
movslq 0x38c(%r15), %r11
movslq 0x388(%r15), %r10
movslq 0x390(%r15), %r14
movq 0x38(%rax), %r8
movq %r8, 0x1d8(%rsp)
movslq 0x28(%rbx), %r13
movq %rax, %r8
movq %rbx, 0x80(%rsp)
movslq 0x2c(%rbx), %rbx
movslq 0xef0(%rdi), %rbp
movq %rdi, 0x148(%rsp)
movzwl 0x34(%rdi), %edi
cmpw $0x1, %di
je 0x947a1
xorpd %xmm14, %xmm14
movq 0x148(%rsp), %rax
cmpw $0x1, 0x36(%rax)
xorpd %xmm1, %xmm1
jne 0x947f7
movq 0x80(%rsp), %rax
movslq 0x3c(%rax), %rax
movq %r11, %rdx
movq %r14, %r11
movq %r10, %r14
movq %rbp, %r10
movq %r13, %rbp
movq %rbx, %r13
movl %r12d, %ebx
movq %r15, %r12
movl %edi, %r15d
movq 0x18(%rsp), %rdi
movsd (%rdi,%rax,8), %xmm14
movl %r15d, %edi
movq %r12, %r15
movl %ebx, %r12d
movq %r13, %rbx
movq %rbp, %r13
movq %r10, %rbp
movq %r14, %r10
movq %r11, %r14
movq %rdx, %r11
movsd 0xe0(%r8), %xmm1
movsd 0x30(%rsi), %xmm0
movaps %xmm0, (%rsp)
movsd (%rcx,%r9,8), %xmm11
mulsd %xmm5, %xmm11
movsd 0x318(%r15), %xmm0
movsd %xmm0, 0xe8(%rsp)
movsd (%rcx,%r11,8), %xmm9
mulsd (%rcx,%r10,8), %xmm5
movsd (%rcx,%r14,8), %xmm2
movq (%rsi), %r10
movq 0x18(%rsi), %r14
movq %r8, %rdx
movq 0x40(%r8), %r8
movq 0x18(%rsp), %rax
movsd (%rax,%r13,8), %xmm0
movaps %xmm0, 0xd0(%rsp)
movsd (%rax,%rbx,8), %xmm3
movq 0x1d8(%rsp), %r11
movsd (%r11,%rbp,8), %xmm0
movapd %xmm0, 0x50(%rsp)
xorpd %xmm7, %xmm7
xorpd %xmm6, %xmm6
xorpd %xmm12, %xmm12
xorpd %xmm4, %xmm4
cmpw $0x1, %di
movq 0x148(%rsp), %r9
jne 0x948c0
cmpl $0x2, 0x5a0(%r10)
jne 0x94b19
movslq 0xed8(%r9), %rax
movsd (%r11,%rax,8), %xmm6
movslq 0xedc(%r9), %rax
movsd (%r11,%rax,8), %xmm12
movslq 0x398(%r15), %rax
movsd (%rcx,%rax,8), %xmm4
divsd %xmm2, %xmm4
movzwl 0x36(%r9), %ecx
xorpd %xmm0, %xmm0
cmpw $0x1, %cx
movq %rdx, %rbx
jne 0x94901
movslq 0xec8(%r9), %rax
movsd (%r11,%rax,8), %xmm7
movslq 0xecc(%r9), %rax
movsd (%r11,%rax,8), %xmm0
movl 0x5a0(%r10), %edx
cmpl $0x2, %edx
je 0x94901
cmpl $0x5, %edx
jne 0x95355
movsd %xmm7, 0x38(%rsp)
movsd %xmm6, 0xf0(%rsp)
movsd %xmm4, 0x170(%rsp)
movsd %xmm1, 0x110(%rsp)
movapd %xmm11, %xmm4
addsd %xmm11, %xmm4
movapd %xmm11, %xmm1
movapd %xmm4, 0x130(%rsp)
mulsd %xmm4, %xmm1
mulsd 0x5fb69(%rip), %xmm9    # 0xf44b0
addsd %xmm1, %xmm5
movapd %xmm5, 0xb0(%rsp)
divsd %xmm2, %xmm9
movslq 0xe80(%r9), %rax
movsd (%r11,%rax,8), %xmm2
movsd 0x5c8f2(%rip), %xmm6    # 0xf1260
movapd %xmm6, %xmm10
movapd %xmm2, 0x120(%rsp)
divsd %xmm2, %xmm10
movslq 0xe88(%r9), %rax
movsd (%r11,%rax,8), %xmm2
movapd 0x5c89a(%rip), %xmm5    # 0xf1230
movapd %xmm2, 0x1b0(%rsp)
xorpd %xmm2, %xmm5
movapd %xmm10, %xmm7
movapd %xmm5, 0x190(%rsp)
mulsd %xmm5, %xmm7
mulsd %xmm10, %xmm7
movapd %xmm9, %xmm5
addsd %xmm6, %xmm5
movl 0x5a0(%r10), %esi
xorpd %xmm2, %xmm2
movsd %xmm2, 0x98(%rsp)
xorpd %xmm8, %xmm8
movapd %xmm2, 0x1c0(%rsp)
cmpl $0x4, %esi
movapd %xmm11, 0x70(%rsp)
movapd %xmm9, 0x20(%rsp)
jl 0x94b86
movapd %xmm12, %xmm15
movapd %xmm11, %xmm2
mulsd %xmm10, %xmm2
mulsd %xmm9, %xmm2
divsd %xmm5, %xmm2
movapd %xmm5, %xmm12
movapd %xmm7, %xmm4
unpcklpd %xmm2, %xmm4            # xmm4 = xmm4[0],xmm2[0]
movapd %xmm5, %xmm2
unpcklpd %xmm5, %xmm2            # xmm2 = xmm2[0],xmm5[0]
divpd %xmm2, %xmm4
movapd %xmm4, %xmm8
unpckhpd %xmm4, %xmm8            # xmm8 = xmm8[1],xmm4[1]
addsd %xmm4, %xmm8
movapd %xmm8, 0x1c0(%rsp)
jne 0x94b77
movslq 0xe8c(%r9), %rax
movsd (%r11,%rax,8), %xmm8
mulsd %xmm10, %xmm8
movapd 0x1b0(%rsp), %xmm9
movapd %xmm9, %xmm4
addsd %xmm9, %xmm4
mulsd %xmm9, %xmm4
mulsd %xmm10, %xmm4
mulsd %xmm10, %xmm4
mulsd %xmm10, %xmm4
mulsd %xmm10, %xmm8
subsd %xmm8, %xmm4
divsd %xmm12, %xmm4
movapd %xmm7, %xmm8
addsd %xmm7, %xmm8
movapd 0xb0(%rsp), %xmm9
subsd %xmm1, %xmm9
movapd %xmm1, %xmm11
mulsd 0x20(%rsp), %xmm11
divsd %xmm12, %xmm11
addsd %xmm9, %xmm11
unpcklpd %xmm8, %xmm11           # xmm11 = xmm11[0],xmm8[0]
movapd %xmm10, %xmm8
unpcklpd 0x70(%rsp), %xmm8       # xmm8 = xmm8[0],mem[0]
mulpd %xmm11, %xmm8
movapd 0x70(%rsp), %xmm11
movapd 0x20(%rsp), %xmm9
unpcklpd %xmm9, %xmm9            # xmm9 = xmm9[0,0]
mulpd %xmm8, %xmm9
divpd %xmm2, %xmm9
divpd %xmm2, %xmm9
movapd %xmm9, %xmm8
unpckhpd %xmm9, %xmm8            # xmm8 = xmm8[1],xmm9[1]
addsd %xmm4, %xmm8
addsd %xmm9, %xmm8
movapd 0x20(%rsp), %xmm9
jmp 0x94b7c
leaq 0x861bf(%rip), %rsi     # 0x11acdf
leaq 0xa40(%rsp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0x5c549(%rip), %rsi     # 0xf1082
leaq 0x861f6(%rip), %rdx     # 0x11ad36
leaq 0x240(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0x6c8a, %r14           # imm = 0x6C8A
leaq 0x5c4d1(%rip), %rsi     # 0xf1034
leaq 0x8620a(%rip), %rdx     # 0x11ad74
movq %r14, %rdi
movl $0x2bcd, %ecx           # imm = 0x2BCD
jmp 0x95417
xorpd %xmm8, %xmm8
movapd %xmm12, %xmm5
movapd %xmm15, %xmm12
movapd %xmm1, 0x230(%rsp)
movsd %xmm10, 0xa0(%rsp)
xorpd %xmm1, %xmm1
movsd %xmm1, 0x90(%rsp)
cmpw $0x1, %cx
jne 0x94bf7
movsd 0x38(%rsp), %xmm2
addsd 0x120(%rsp), %xmm2
movapd %xmm6, %xmm1
divsd %xmm2, %xmm1
addsd 0x1b0(%rsp), %xmm0
xorpd 0x5c65c(%rip), %xmm0    # 0xf1230
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
movsd %xmm1, 0xa0(%rsp)
movsd %xmm1, 0x98(%rsp)
movsd %xmm0, 0x90(%rsp)
xorpd %xmm15, %xmm15
cmpw $0x1, %di
je 0x94c1a
xorpd %xmm0, %xmm0
movsd %xmm0, 0x150(%rsp)
movapd %xmm0, 0x160(%rsp)
jmp 0x94c4d
movsd 0xf0(%rsp), %xmm0
divsd %xmm0, %xmm6
movsd %xmm6, 0x150(%rsp)
xorpd 0x5c5f7(%rip), %xmm12   # 0xf1230
divsd %xmm0, %xmm12
divsd %xmm0, %xmm12
movapd %xmm12, 0x160(%rsp)
movapd %xmm13, %xmm6
movapd %xmm8, 0x220(%rsp)
movapd (%rsp), %xmm0
mulsd %xmm0, %xmm0
movapd %xmm0, (%rsp)
movl 0x83c(%r14), %r10d
xorpd %xmm12, %xmm12
xorpd %xmm4, %xmm4
cmpl $0x1, %r10d
jne 0x94cb5
movslq 0x8(%rbx), %rax
movsd (%r8,%rax,8), %xmm15
mulsd 0x5d03d(%rip), %xmm15   # 0xf1cd0
movslq 0x14(%rbx), %rax
movsd (%r8,%rax,8), %xmm12
movapd (%rsp), %xmm0
mulsd %xmm0, %xmm12
movslq 0x18(%rbx), %rax
movsd (%r8,%rax,8), %xmm4
mulsd %xmm0, %xmm4
xorpd %xmm0, %xmm0
movsd %xmm0, 0x40(%rsp)
testl %r10d, %r10d
jne 0x94cf4
movslq 0x4(%rbx), %rax
movsd (%r8,%rax,8), %xmm15
mulsd 0x5f799(%rip), %xmm15   # 0xf4470
movslq (%rbx), %rax
movsd (%r8,%rax,8), %xmm0
mulsd (%rsp), %xmm0
movsd %xmm0, 0x40(%rsp)
xorpd %xmm12, %xmm12
xorpd %xmm4, %xmm4
cmpl $0x1, %r12d
jne 0x94d02
movsd 0xb0(%rbx), %xmm6
movapd 0x5c526(%rip), %xmm0    # 0xf1230
xorpd %xmm11, %xmm0
movapd %xmm0, 0x100(%rsp)
movsd 0x5f84f(%rip), %xmm13   # 0xf4570
mulsd %xmm9, %xmm13
movsd %xmm13, 0x1d0(%rsp)
mulsd 0x60(%rsp), %xmm13
movapd 0x50(%rsp), %xmm0
mulsd 0xd0(%rsp), %xmm0
movapd %xmm0, 0x210(%rsp)
addsd %xmm0, %xmm13
mulsd (%rsp), %xmm13
movapd %xmm11, %xmm0
mulsd %xmm3, %xmm0
subsd %xmm0, %xmm13
divsd %xmm5, %xmm13
addsd 0x40(%rsp), %xmm13
cmpw $0x1, %cx
jne 0x94d9b
movapd %xmm9, %xmm0
divsd %xmm5, %xmm0
mulsd 0x38(%rsp), %xmm0
movapd %xmm6, %xmm2
subsd %xmm14, %xmm2
mulsd %xmm0, %xmm2
subsd %xmm2, %xmm13
movapd %xmm10, %xmm8
divsd %xmm5, %xmm8
xorpd %xmm2, %xmm2
testl %esi, %esi
jne 0x94e7d
addsd %xmm9, %xmm9
divsd %xmm5, %xmm9
mulsd 0x70(%rsp), %xmm9
movapd %xmm3, %xmm0
subsd %xmm6, %xmm0
mulsd %xmm9, %xmm0
movapd 0x60(%rsp), %xmm2
movapd %xmm14, %xmm1
movapd %xmm12, %xmm14
movapd 0x100(%rsp), %xmm12
mulsd %xmm12, %xmm2
mulsd 0x5ceda(%rip), %xmm2    # 0xf1cd0
movapd 0x5c431(%rip), %xmm9    # 0xf1230
movapd %xmm3, %xmm11
xorpd %xmm9, %xmm11
subsd %xmm15, %xmm11
mulsd 0x50(%rsp), %xmm11
addsd %xmm2, %xmm11
xorpd %xmm6, %xmm9
subsd %xmm15, %xmm9
mulsd 0x78c23(%rip), %xmm9    # 0x10da50
mulsd 0x5f73a(%rip), %xmm9    # 0xf4570
addsd %xmm11, %xmm9
mulsd (%rsp), %xmm9
movapd 0xb0(%rsp), %xmm2
mulsd %xmm3, %xmm2
subsd %xmm2, %xmm9
movapd %xmm12, %xmm2
movapd %xmm14, %xmm12
movapd %xmm1, %xmm14
mulsd 0x40(%rsp), %xmm2
addsd %xmm9, %xmm2
movapd 0x20(%rsp), %xmm9
mulsd %xmm8, %xmm2
addsd %xmm0, %xmm2
movl %esi, %eax
orl $0x4, %eax
movapd %xmm7, %xmm0
divsd %xmm10, %xmm0
movapd 0x130(%rsp), %xmm11
divsd %xmm5, %xmm11
cmpl $0x5, %eax
movapd %xmm6, 0xc0(%rsp)
movapd %xmm5, 0x1a0(%rsp)
jne 0x94fba
movapd %xmm0, %xmm2
subsd %xmm11, %xmm2
movapd %xmm3, %xmm9
subsd %xmm6, %xmm9
mulsd %xmm2, %xmm9
movapd 0x60(%rsp), %xmm2
movapd %xmm4, %xmm5
movapd %xmm14, %xmm4
movapd 0x100(%rsp), %xmm14
mulsd %xmm14, %xmm2
mulsd 0x5cddd(%rip), %xmm2    # 0xf1cd0
movapd %xmm7, %xmm6
movapd %xmm10, %xmm7
movapd %xmm8, %xmm1
movapd %xmm13, %xmm8
movapd %xmm12, %xmm13
movapd %xmm5, %xmm12
movapd 0x5c317(%rip), %xmm10   # 0xf1230
movapd %xmm3, %xmm5
xorpd %xmm10, %xmm5
subsd %xmm15, %xmm5
mulsd 0x50(%rsp), %xmm5
addsd %xmm2, %xmm5
xorpd 0xc0(%rsp), %xmm10
subsd %xmm15, %xmm10
mulsd 0x78b07(%rip), %xmm10   # 0x10da50
mulsd 0x5f61e(%rip), %xmm10   # 0xf4570
addsd %xmm5, %xmm10
mulsd (%rsp), %xmm10
movapd 0xb0(%rsp), %xmm2
mulsd %xmm3, %xmm2
subsd %xmm2, %xmm10
movapd %xmm14, %xmm2
movapd %xmm4, %xmm14
mulsd 0x40(%rsp), %xmm2
addsd %xmm10, %xmm2
movapd %xmm12, %xmm4
movapd %xmm13, %xmm12
movapd %xmm8, %xmm13
movapd %xmm1, %xmm8
movapd %xmm7, %xmm10
movapd %xmm6, %xmm7
movapd 0xc0(%rsp), %xmm6
mulsd %xmm1, %xmm2
addsd %xmm9, %xmm2
movapd 0x20(%rsp), %xmm9
cmpl $0x4, %esi
je 0x94fc8
cmpl $0x2, %esi
jne 0x95085
subsd %xmm11, %xmm0
movapd %xmm3, %xmm9
subsd %xmm6, %xmm9
mulsd %xmm0, %xmm9
movapd 0x60(%rsp), %xmm0
movapd 0x100(%rsp), %xmm11
mulsd %xmm11, %xmm0
mulsd 0x5ccd7(%rip), %xmm0    # 0xf1cd0
movslq 0xef4(%r9), %rax
movsd (%r11,%rax,8), %xmm2
mulsd 0xd0(%rsp), %xmm2
addsd %xmm0, %xmm2
movapd 0x5c215(%rip), %xmm0    # 0xf1230
movapd %xmm3, %xmm5
xorpd %xmm0, %xmm5
subsd %xmm15, %xmm5
mulsd 0x50(%rsp), %xmm5
addsd %xmm2, %xmm5
xorpd %xmm6, %xmm0
subsd %xmm15, %xmm0
mulsd 0x78a0d(%rip), %xmm0    # 0x10da50
mulsd 0x5f525(%rip), %xmm0    # 0xf4570
addsd %xmm5, %xmm0
mulsd (%rsp), %xmm0
movapd 0xb0(%rsp), %xmm2
mulsd %xmm3, %xmm2
subsd %xmm2, %xmm0
movapd %xmm11, %xmm2
mulsd 0x40(%rsp), %xmm2
addsd %xmm0, %xmm2
mulsd %xmm8, %xmm2
addsd %xmm9, %xmm2
movapd 0x20(%rsp), %xmm9
cmpw $0x1, %cx
jne 0x95105
cmpl $0x5, %esi
ja 0x95105
movl $0x34, %eax
btl %esi, %eax
jae 0x95105
movsd 0x38(%rsp), %xmm1
movapd %xmm1, %xmm0
mulsd %xmm8, %xmm0
movapd (%rsp), %xmm5
mulsd 0x60(%rsp), %xmm5
mulsd 0x5f4b4(%rip), %xmm5    # 0xf4570
addsd 0x40(%rsp), %xmm5
movapd %xmm3, %xmm9
subsd %xmm6, %xmm9
mulsd 0x120(%rsp), %xmm9
addsd %xmm5, %xmm9
movapd %xmm14, %xmm5
subsd %xmm6, %xmm5
mulsd %xmm1, %xmm5
addsd %xmm9, %xmm5
movapd 0x20(%rsp), %xmm9
subsd 0x110(%rsp), %xmm5
mulsd %xmm0, %xmm5
subsd %xmm5, %xmm2
cmpw $0x1, %di
movapd %xmm8, 0x1e0(%rsp)
jne 0x951e1
movapd 0x160(%rsp), %xmm1
movsd 0x150(%rsp), %xmm11
divsd %xmm11, %xmm1
movapd 0x70(%rsp), %xmm0
subsd %xmm1, %xmm0
subsd %xmm3, %xmm14
mulsd %xmm14, %xmm0
addsd 0x110(%rsp), %xmm0
movapd 0x100(%rsp), %xmm5
mulsd %xmm3, %xmm5
addsd 0x40(%rsp), %xmm5
movapd (%rsp), %xmm8
mulsd 0x50(%rsp), %xmm8
mulsd 0xd0(%rsp), %xmm8
addsd %xmm5, %xmm8
movapd %xmm9, %xmm5
divsd %xmm10, %xmm5
movapd %xmm6, %xmm9
subsd %xmm3, %xmm9
mulsd %xmm5, %xmm9
addsd %xmm8, %xmm9
movsd 0x170(%rsp), %xmm1
movsd 0xf0(%rsp), %xmm5
mulsd %xmm1, %xmm5
mulsd %xmm14, %xmm5
addsd %xmm9, %xmm5
movapd 0x20(%rsp), %xmm9
subsd %xmm5, %xmm0
mulsd %xmm10, %xmm1
divsd %xmm11, %xmm1
divsd 0x1a0(%rsp), %xmm1
mulsd %xmm0, %xmm1
subsd %xmm1, %xmm2
movapd %xmm12, %xmm0
addsd %xmm6, %xmm0
movsd 0x803f6(%rip), %xmm6    # 0x1155e8
movsd 0xa0(%rsp), %xmm14
mulsd %xmm6, %xmm14
addsd %xmm13, %xmm4
cmpw $0x1, %cx
je 0x9521d
movapd %xmm7, %xmm8
mulsd %xmm0, %xmm8
movapd %xmm10, %xmm5
jmp 0x95235
movsd 0x90(%rsp), %xmm8
mulsd %xmm0, %xmm8
movsd 0x98(%rsp), %xmm5
mulsd %xmm4, %xmm5
addsd %xmm8, %xmm5
mulsd %xmm0, %xmm14
mulsd %xmm6, %xmm5
cmpl $0x3, %esi
jne 0x952b9
cmpl $0x1, %r10d
movapd 0xc0(%rsp), %xmm6
je 0x953b0
testl %r10d, %r10d
jne 0x952c2
leaq 0x85c0e(%rip), %rsi     # 0x11ae79
leaq 0xa40(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0x5c301(%rip), %rsi     # 0xf1585
leaq 0x240(%rsp), %r15
movq %r15, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x30c2c
leaq 0x5bd94(%rip), %rsi     # 0xf1034
leaq 0x85acd(%rip), %rdx     # 0x11ad74
movq 0x140(%rsp), %rdi
movl $0x2c68, %ecx           # imm = 0x2C68
jmp 0x95417
movapd 0xc0(%rsp), %xmm6
movsd 0xe8(%rsp), %xmm12
mulsd 0x5f19b(%rip), %xmm12   # 0xf4470
divsd (%rsp), %xmm12
addsd 0x5bf7c(%rip), %xmm12   # 0xf1260
cmpl $0x4, %esi
jne 0x95ece
cmpl $0x1, %r10d
je 0x9542b
testl %r10d, %r10d
jne 0x95ece
leaq 0x85c90(%rip), %rsi     # 0x11af97
leaq 0xa40(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0x5c265(%rip), %rsi     # 0xf1585
leaq 0x240(%rsp), %r15
movq %r15, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x30c2c
leaq 0x5bcf8(%rip), %rsi     # 0xf1034
leaq 0x85a31(%rip), %rdx     # 0x11ad74
movq 0x140(%rsp), %rdi
movl $0x2ca0, %ecx           # imm = 0x2CA0
jmp 0x95417
leaq 0x85a39(%rip), %rsi     # 0x11ad95
leaq 0xa40(%rsp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0x5bd0d(%rip), %rsi     # 0xf1082
leaq 0x85a83(%rip), %rdx     # 0x11adff
leaq 0x240(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0x6c8a, %r14           # imm = 0x6C8A
leaq 0x5bc95(%rip), %rsi     # 0xf1034
leaq 0x859ce(%rip), %rdx     # 0x11ad74
movq %r14, %rdi
movl $0x2bd6, %ecx           # imm = 0x2BD6
jmp 0x95417
cmpl $0x0, 0x320(%r15)
je 0x95783
leaq 0x85b44(%rip), %rsi     # 0x11af09
leaq 0xa40(%rsp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0x5bca4(%rip), %rsi     # 0xf1082
leaq 0x85ba3(%rip), %rdx     # 0x11af88
leaq 0x240(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0x6c8a, %r14           # imm = 0x6C8A
leaq 0x5bc2c(%rip), %rsi     # 0xf1034
leaq 0x85965(%rip), %rdx     # 0x11ad74
movq %r14, %rdi
movl $0x2c70, %ecx           # imm = 0x2C70
movq %r15, %r8
xorl %eax, %eax
callq 0x30c2c
movl $0x1, %eax
jmp 0x96018
movapd %xmm4, 0x40(%rsp)
movapd %xmm7, 0x20(%rsp)
movapd 0x70(%rsp), %xmm0
movsd 0x5c3a2(%rip), %xmm11   # 0xf17e8
addsd %xmm9, %xmm11
movapd 0x5bddd(%rip), %xmm7    # 0xf1230
movslq 0xef4(%r9), %rax
movapd %xmm3, %xmm8
xorpd %xmm7, %xmm8
subsd %xmm15, %xmm8
mulsd 0x50(%rsp), %xmm8
movsd %xmm14, 0xa0(%rsp)
movsd %xmm15, 0x18(%rsp)
movsd (%r11,%rax,8), %xmm1
movsd %xmm1, 0x80(%rsp)
mulsd 0xd0(%rsp), %xmm1
movsd %xmm1, 0xc0(%rsp)
addsd %xmm1, %xmm8
mulsd %xmm0, %xmm9
mulsd 0x5bdd3(%rip), %xmm9    # 0xf1288
movapd 0x60(%rsp), %xmm1
mulsd %xmm1, %xmm9
addsd %xmm8, %xmm9
movapd 0x100(%rsp), %xmm15
movapd %xmm15, %xmm8
mulsd %xmm0, %xmm8
movapd %xmm0, %xmm4
movapd 0xb0(%rsp), %xmm0
addsd %xmm0, %xmm8
movapd %xmm8, %xmm14
xorpd %xmm7, %xmm14
xorpd %xmm7, %xmm6
subsd 0x18(%rsp), %xmm6
movsd 0x1d0(%rsp), %xmm7
mulsd 0x5ef18(%rip), %xmm7    # 0xf4428
divsd 0x5d168(%rip), %xmm7    # 0xf2680
mulsd %xmm7, %xmm6
addsd %xmm9, %xmm6
mulsd %xmm4, %xmm11
mulsd %xmm3, %xmm14
mulsd %xmm13, %xmm11
addsd %xmm14, %xmm11
movapd (%rsp), %xmm4
mulsd %xmm4, %xmm6
addsd %xmm11, %xmm6
divsd 0x1a0(%rsp), %xmm6
mulsd 0x5bd34(%rip), %xmm1    # 0xf1288
movapd 0x210(%rsp), %xmm7
addsd %xmm1, %xmm7
mulsd %xmm4, %xmm7
movsd %xmm12, 0xe8(%rsp)
movapd %xmm15, %xmm1
mulsd %xmm3, %xmm1
addsd %xmm7, %xmm1
movapd 0x220(%rsp), %xmm9
mulsd %xmm1, %xmm9
movapd %xmm15, %xmm1
mulsd %xmm13, %xmm1
addsd %xmm14, %xmm1
movsd 0x5ee95(%rip), %xmm14   # 0xf4438
subsd 0x50(%rsp), %xmm14
movslq 0x8(%rbx), %rax
movsd 0x5c71a(%rip), %xmm7    # 0xf1cd0
movsd (%r8,%rax,8), %xmm11
mulsd %xmm7, %xmm11
movslq 0xc(%rbx), %rax
mulsd (%r8,%rax,8), %xmm7
addsd %xmm3, %xmm11
addsd %xmm13, %xmm7
mulsd %xmm14, %xmm7
mulsd %xmm11, %xmm14
addsd 0xc0(%rsp), %xmm14
mulsd %xmm4, %xmm14
addsd %xmm1, %xmm14
mulsd %xmm15, %xmm6
movsd 0x5d158(%rip), %xmm1    # 0xf2758
mulsd %xmm1, %xmm8
mulsd %xmm13, %xmm8
addsd %xmm8, %xmm6
mulsd 0x5ee59(%rip), %xmm0    # 0xf4470
movapd 0x70(%rsp), %xmm12
mulsd %xmm12, %xmm0
movapd 0x230(%rsp), %xmm8
mulsd %xmm12, %xmm8
addsd %xmm0, %xmm8
mulsd %xmm3, %xmm8
subsd %xmm8, %xmm6
movsd 0x80(%rsp), %xmm8
mulsd %xmm1, %xmm8
movslq 0xef8(%r9), %rax
movapd 0xd0(%rsp), %xmm0
mulsd (%r11,%rax,8), %xmm0
mulsd %xmm11, %xmm8
addsd %xmm8, %xmm0
movsd 0xa0(%rsp), %xmm11
addsd %xmm0, %xmm7
mulsd %xmm4, %xmm7
addsd %xmm6, %xmm7
movapd 0x130(%rsp), %xmm6
movapd %xmm6, %xmm0
movapd 0x1e0(%rsp), %xmm12
mulsd %xmm12, %xmm0
movsd 0x5bbb6(%rip), %xmm1    # 0xf1260
subsd %xmm0, %xmm1
movapd %xmm4, %xmm0
mulsd %xmm12, %xmm0
movsd 0xe8(%rsp), %xmm4
movapd %xmm4, %xmm8
mulsd %xmm4, %xmm0
mulsd %xmm11, %xmm6
addsd %xmm5, %xmm6
mulsd %xmm0, %xmm6
mulsd %xmm2, %xmm1
addsd %xmm6, %xmm1
movapd 0x1c0(%rsp), %xmm0
addsd %xmm0, %xmm0
mulsd %xmm14, %xmm0
addsd %xmm9, %xmm0
mulsd %xmm12, %xmm7
addsd %xmm0, %xmm7
mulsd %xmm12, %xmm7
movapd %xmm1, %xmm2
subsd %xmm7, %xmm2
movsd 0x7ff15(%rip), %xmm0    # 0x115628
cmpw $0x1, %cx
jne 0x95e79
mulsd 0x90(%rsp), %xmm0
addsd 0x5bb32(%rip), %xmm0    # 0xf1260
movsd 0x7fefa(%rip), %xmm1    # 0x115630
movsd 0x98(%rsp), %xmm6
mulsd %xmm6, %xmm1
mulsd 0x5c0ad(%rip), %xmm1    # 0xf17f8
divsd 0x5f0d5(%rip), %xmm1    # 0xf4828
mulsd %xmm6, %xmm1
movapd 0x40(%rsp), %xmm6
mulsd %xmm6, %xmm1
mulsd %xmm11, %xmm0
addsd %xmm1, %xmm0
movapd %xmm6, %xmm4
movapd %xmm0, %xmm14
movapd %xmm8, %xmm12
movapd 0x20(%rsp), %xmm7
jmp 0x95ece
movapd (%rsp), %xmm1
addsd %xmm1, %xmm1
movq 0x80(%rsp), %rax
movslq 0xd0(%rax), %rax
movq 0x18(%rsp), %rdi
movsd (%rdi,%rax,8), %xmm2
movapd %xmm2, 0x150(%rsp)
movslq 0x8(%rbx), %rax
movsd (%r8,%rax,8), %xmm0
mulsd 0x130(%rsp), %xmm0
mulsd %xmm2, %xmm1
subsd %xmm0, %xmm1
movapd %xmm1, 0x160(%rsp)
movsd 0x5cf7e(%rip), %xmm0    # 0xf2758
movapd %xmm12, 0x200(%rsp)
movsd %xmm15, 0x18(%rsp)
movsd 0x5ec7c(%rip), %xmm15   # 0xf4470
movapd 0x50(%rsp), %xmm1
mulsd %xmm1, %xmm15
movapd %xmm1, %xmm12
movapd %xmm15, %xmm1
addsd 0x5c4ef(%rip), %xmm1    # 0xf1d00
mulsd %xmm9, %xmm1
movapd %xmm1, 0xf0(%rsp)
addsd %xmm0, %xmm1
movsd %xmm1, 0x180(%rsp)
movapd %xmm12, %xmm1
mulsd 0x5ce47(%rip), %xmm1    # 0xf2680
movapd %xmm1, 0x80(%rsp)
addsd %xmm0, %xmm1
movapd %xmm1, 0x1f0(%rsp)
movapd %xmm0, %xmm1
movapd 0x1a0(%rsp), %xmm0
divsd %xmm0, %xmm1
movapd %xmm0, %xmm9
movapd 0x190(%rsp), %xmm0
divsd 0x120(%rsp), %xmm0
movapd 0x70(%rsp), %xmm2
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x38(%rsp)
movapd 0x60(%rsp), %xmm11
mulsd 0x5c435(%rip), %xmm11   # 0xf1cd0
movsd 0x7fd85(%rip), %xmm1    # 0x115628
mulsd %xmm7, %xmm1
movsd 0x5b9b1(%rip), %xmm0    # 0xf1260
addsd %xmm0, %xmm1
mulsd %xmm14, %xmm1
movsd %xmm1, 0x190(%rsp)
movapd %xmm10, 0xa0(%rsp)
movapd %xmm4, 0x40(%rsp)
movapd %xmm14, %xmm4
addsd %xmm14, %xmm4
subsd %xmm4, %xmm11
movapd 0x5b948(%rip), %xmm1    # 0xf1230
movapd 0xb0(%rsp), %xmm4
movapd %xmm4, %xmm0
movapd %xmm4, %xmm8
xorpd %xmm1, %xmm0
movapd %xmm3, %xmm10
xorpd %xmm1, %xmm10
subsd 0x18(%rsp), %xmm10
movapd %xmm10, 0x170(%rsp)
xorpd %xmm6, %xmm1
subsd 0x18(%rsp), %xmm1
movapd %xmm1, 0x110(%rsp)
movsd 0x5eb7c(%rip), %xmm4    # 0xf44b0
mulsd %xmm1, %xmm4
mulsd 0x5b948(%rip), %xmm4    # 0xf1288
movapd %xmm12, %xmm6
mulsd %xmm10, %xmm6
addsd %xmm4, %xmm6
movapd %xmm2, %xmm1
movapd %xmm2, %xmm4
mulsd 0x5cd22(%rip), %xmm4    # 0xf2680
mulsd %xmm2, %xmm4
movapd 0x100(%rsp), %xmm10
mulsd %xmm2, %xmm10
addsd %xmm8, %xmm10
movapd %xmm8, %xmm2
movapd %xmm9, %xmm14
mulsd %xmm9, %xmm10
movapd %xmm4, %xmm9
mulsd %xmm12, %xmm9
movapd %xmm12, %xmm8
addsd %xmm10, %xmm9
subsd %xmm4, %xmm9
movapd 0x20(%rsp), %xmm4
addsd %xmm4, %xmm4
mulsd %xmm4, %xmm9
movapd %xmm1, %xmm4
mulsd %xmm2, %xmm4
movsd 0x180(%rsp), %xmm2
mulsd %xmm4, %xmm2
movsd 0x5be1e(%rip), %xmm4    # 0xf17e8
movapd 0x80(%rsp), %xmm10
addsd %xmm4, %xmm10
movapd %xmm10, 0x80(%rsp)
movapd 0xf0(%rsp), %xmm12
addsd %xmm4, %xmm12
movapd %xmm1, %xmm10
mulsd %xmm1, %xmm10
movapd (%rsp), %xmm4
unpcklpd %xmm4, %xmm4            # xmm4 = xmm4[0,0]
unpcklpd %xmm1, %xmm10           # xmm10 = xmm10[0],xmm1[0]
mulpd %xmm4, %xmm10
unpcklpd %xmm8, %xmm12           # xmm12 = xmm12[0],xmm8[0]
mulpd %xmm10, %xmm12
movapd %xmm12, 0xf0(%rsp)
unpckhpd %xmm10, %xmm10          # xmm10 = xmm10[1,1]
mulsd %xmm10, %xmm11
mulsd %xmm3, %xmm0
subsd %xmm11, %xmm0
addsd %xmm5, %xmm6
mulsd (%rsp), %xmm6
addsd %xmm0, %xmm6
movapd %xmm3, %xmm1
subsd 0xc0(%rsp), %xmm1
movapd %xmm1, 0x180(%rsp)
movapd 0x120(%rsp), %xmm0
divsd %xmm0, %xmm6
divsd %xmm14, %xmm6
movsd 0x38(%rsp), %xmm11
mulsd %xmm1, %xmm11
addsd %xmm6, %xmm11
divsd %xmm14, %xmm9
divsd %xmm14, %xmm9
divsd %xmm14, %xmm9
movapd %xmm14, %xmm8
mulsd %xmm1, %xmm9
divsd %xmm0, %xmm9
subsd %xmm9, %xmm11
movsd %xmm11, 0x38(%rsp)
movapd 0x20(%rsp), %xmm11
movsd 0x5cbcb(%rip), %xmm1    # 0xf2680
mulsd %xmm1, %xmm11
movsd 0x5c23e(%rip), %xmm0    # 0xf1d00
addsd %xmm0, %xmm11
movapd %xmm15, %xmm6
addsd 0x5b79b(%rip), %xmm15   # 0xf1270
mulsd 0x20(%rsp), %xmm15
addsd %xmm0, %xmm15
mulsd %xmm3, %xmm2
divsd %xmm14, %xmm2
movapd %xmm2, %xmm12
movsd 0x5b769(%rip), %xmm2    # 0xf1260
addsd %xmm2, %xmm6
mulsd %xmm10, %xmm15
movapd %xmm10, %xmm0
mulsd %xmm6, %xmm0
mulsd %xmm3, %xmm0
divsd %xmm1, %xmm0
divsd %xmm14, %xmm0
addsd %xmm12, %xmm0
movapd (%rsp), %xmm9
mulsd 0xb0(%rsp), %xmm9
mulsd %xmm9, %xmm11
movapd 0x50(%rsp), %xmm14
mulsd %xmm14, %xmm9
mulsd 0xd0(%rsp), %xmm9
divsd %xmm8, %xmm9
addsd %xmm9, %xmm0
movapd 0x1f0(%rsp), %xmm1
mulsd 0x20(%rsp), %xmm1
addsd %xmm2, %xmm1
movapd %xmm1, %xmm9
movapd 0x60(%rsp), %xmm1
movapd %xmm1, %xmm10
unpcklpd %xmm9, %xmm10           # xmm10 = xmm10[0],xmm9[0]
mulpd 0xf0(%rsp), %xmm10
movapd 0x7f885(%rip), %xmm9    # 0x115410
unpcklpd 0x170(%rsp), %xmm9      # xmm9 = xmm9[0],mem[0]
mulpd %xmm10, %xmm9
mulsd %xmm1, %xmm11
movsd 0x5e9c8(%rip), %xmm10   # 0xf4570
mulsd %xmm10, %xmm11
movsd 0x5e873(%rip), %xmm2    # 0xf4428
mulsd %xmm2, %xmm15
divsd 0x5cabd(%rip), %xmm15   # 0xf2680
mulsd 0x110(%rsp), %xmm15
mulsd %xmm10, %xmm15
movapd 0x70(%rsp), %xmm10
mulsd %xmm6, %xmm10
unpcklpd (%rsp), %xmm10          # xmm10 = xmm10[0],mem[0]
mulpd %xmm4, %xmm10
movapd 0x200(%rsp), %xmm12
unpcklpd 0x150(%rsp), %xmm12     # xmm12 = xmm12[0],mem[0]
movapd 0x7f81b(%rip), %xmm4    # 0x115420
movapd 0x80(%rsp), %xmm1
unpcklpd %xmm1, %xmm4            # xmm4 = xmm4[0],xmm1[0]
mulpd %xmm10, %xmm4
unpckhpd %xmm10, %xmm10          # xmm10 = xmm10[1,1]
mulsd 0x20(%rsp), %xmm10
unpcklpd %xmm14, %xmm10          # xmm10 = xmm10[0],xmm14[0]
mulpd %xmm4, %xmm12
movsd %xmm1, %xmm4            # xmm4 = xmm1[0],xmm4[1]
mulpd %xmm10, %xmm4
movapd 0x60(%rsp), %xmm14
movapd %xmm14, %xmm10
unpcklpd 0xd0(%rsp), %xmm10      # xmm10 = xmm10[0],mem[0]
mulpd %xmm4, %xmm10
movapd %xmm8, %xmm4
unpcklpd %xmm8, %xmm4            # xmm4 = xmm4[0],xmm8[0]
divpd %xmm4, %xmm9
divpd 0x7f7c7(%rip), %xmm10   # 0x115430
divpd %xmm4, %xmm10
movapd %xmm10, %xmm4
unpckhpd %xmm10, %xmm4           # xmm4 = xmm4[1],xmm10[1]
addsd %xmm0, %xmm4
addsd %xmm10, %xmm4
divsd %xmm8, %xmm11
addsd %xmm11, %xmm4
addsd %xmm9, %xmm4
unpckhpd %xmm9, %xmm9            # xmm9 = xmm9[1,1]
addsd %xmm4, %xmm9
divsd %xmm8, %xmm15
divpd 0x77e68(%rip), %xmm12   # 0x10db10
addsd %xmm15, %xmm9
movsd 0x18(%rsp), %xmm15
addsd %xmm12, %xmm9
unpckhpd %xmm12, %xmm12          # xmm12 = xmm12[1,1]
addsd %xmm9, %xmm12
movapd (%rsp), %xmm0
mulsd 0x130(%rsp), %xmm0
movapd 0x80(%rsp), %xmm4
mulsd %xmm0, %xmm4
movslq 0x10(%rbx), %rax
mulsd (%r8,%rax,8), %xmm4
addsd %xmm12, %xmm4
movslq 0xc(%rbx), %rax
movapd 0x160(%rsp), %xmm1
subsd (%r8,%rax,8), %xmm1
mulsd (%rsp), %xmm6
mulsd %xmm1, %xmm6
divsd 0x5c95f(%rip), %xmm6    # 0xf2670
addsd %xmm4, %xmm6
movapd (%rsp), %xmm4
mulsd %xmm2, %xmm4
movapd 0x50(%rsp), %xmm9
mulsd %xmm4, %xmm9
mulsd 0x170(%rsp), %xmm9
movapd 0xb0(%rsp), %xmm10
mulsd %xmm2, %xmm10
mulsd %xmm3, %xmm10
subsd %xmm9, %xmm10
movapd 0x20(%rsp), %xmm9
mulsd %xmm14, %xmm0
addsd %xmm10, %xmm0
divsd 0x5c91a(%rip), %xmm4    # 0xf2680
mulsd 0x110(%rsp), %xmm4
addsd %xmm0, %xmm4
mulsd 0x5bf55(%rip), %xmm4    # 0xf1cd0
movapd 0x120(%rsp), %xmm10
divsd %xmm10, %xmm6
divsd %xmm8, %xmm4
divsd %xmm8, %xmm4
movapd 0x1b0(%rsp), %xmm14
mulsd %xmm14, %xmm4
unpcklpd %xmm4, %xmm6            # xmm6 = xmm6[0],xmm4[0]
movapd %xmm10, %xmm0
unpcklpd %xmm10, %xmm0           # xmm0 = xmm0[0],xmm10[0]
divpd %xmm0, %xmm6
movapd %xmm8, %xmm0
unpcklpd %xmm10, %xmm0           # xmm0 = xmm0[0],xmm10[0]
divpd %xmm0, %xmm6
divpd %xmm0, %xmm6
movsd 0x38(%rsp), %xmm0
addsd %xmm6, %xmm0
unpckhpd %xmm6, %xmm6            # xmm6 = xmm6[1,1]
subsd %xmm6, %xmm0
movapd 0xc0(%rsp), %xmm6
mulsd 0x70(%rsp), %xmm2
mulsd %xmm9, %xmm2
divsd %xmm8, %xmm2
divsd %xmm8, %xmm2
mulsd %xmm14, %xmm2
divsd %xmm10, %xmm2
divsd %xmm10, %xmm2
mulsd 0x180(%rsp), %xmm2
addsd %xmm0, %xmm2
movsd 0x7f815(%rip), %xmm0    # 0x115630
mulsd 0xa0(%rsp), %xmm0
mulsd 0x5b9cc(%rip), %xmm0    # 0xf17f8
movslq 0x18(%rbx), %rax
movsd (%r8,%rax,8), %xmm4
mulsd (%rsp), %xmm4
addsd %xmm13, %xmm4
divsd 0x5e9e0(%rip), %xmm0    # 0xf4828
mulsd 0xa0(%rsp), %xmm0
mulsd %xmm4, %xmm0
movapd 0x40(%rsp), %xmm4
movapd 0xa0(%rsp), %xmm10
movsd 0x190(%rsp), %xmm14
addsd %xmm0, %xmm14
jmp 0x952c2
movapd 0x20(%rsp), %xmm7
mulsd %xmm7, %xmm0
addsd 0x5b3d5(%rip), %xmm0    # 0xf1260
movsd 0x7f79d(%rip), %xmm1    # 0x115630
mulsd %xmm10, %xmm1
mulsd 0x5b958(%rip), %xmm1    # 0xf17f8
divsd 0x5e980(%rip), %xmm1    # 0xf4828
mulsd %xmm10, %xmm1
movapd 0x40(%rsp), %xmm6
mulsd %xmm6, %xmm1
mulsd %xmm11, %xmm0
addsd %xmm1, %xmm0
movapd %xmm6, %xmm4
movapd %xmm0, %xmm14
movapd %xmm8, %xmm12
cmpl $0x5, %esi
jne 0x96005
movapd %xmm4, %xmm9
movapd 0x130(%rsp), %xmm6
movapd %xmm6, %xmm0
movapd 0x1e0(%rsp), %xmm11
mulsd %xmm11, %xmm0
movsd 0x5b35f(%rip), %xmm8    # 0xf1260
subsd %xmm0, %xmm8
movapd (%rsp), %xmm4
mulsd %xmm11, %xmm4
mulsd %xmm12, %xmm6
mulsd %xmm12, %xmm5
mulsd %xmm14, %xmm6
addsd %xmm5, %xmm6
movsd 0x5e50d(%rip), %xmm0    # 0xf4438
subsd 0x50(%rsp), %xmm0
movapd 0x1c0(%rsp), %xmm1
addsd %xmm1, %xmm1
mulsd %xmm1, %xmm3
mulsd %xmm11, %xmm13
addsd %xmm3, %xmm13
mulsd %xmm0, %xmm13
subsd %xmm13, %xmm6
mulsd %xmm4, %xmm6
mulsd %xmm8, %xmm2
addsd %xmm6, %xmm2
cmpw $0x1, %cx
jne 0x95fc0
movsd 0x90(%rsp), %xmm3
mulsd 0x7f6ae(%rip), %xmm3    # 0x115628
addsd 0x5b2de(%rip), %xmm3    # 0xf1260
movsd 0x7f6a6(%rip), %xmm0    # 0x115630
movsd 0x98(%rsp), %xmm1
mulsd %xmm1, %xmm0
mulsd 0x5b859(%rip), %xmm0    # 0xf17f8
divsd 0x5e881(%rip), %xmm0    # 0xf4828
mulsd %xmm1, %xmm0
mulsd %xmm9, %xmm0
mulsd %xmm14, %xmm3
addsd %xmm0, %xmm3
movapd %xmm3, %xmm14
jmp 0x96005
mulsd 0x7f660(%rip), %xmm7    # 0x115628
addsd 0x5b290(%rip), %xmm7    # 0xf1260
movsd 0x7f658(%rip), %xmm0    # 0x115630
mulsd %xmm10, %xmm0
mulsd 0x5b813(%rip), %xmm0    # 0xf17f8
divsd 0x5e83b(%rip), %xmm0    # 0xf4828
mulsd %xmm10, %xmm0
mulsd %xmm9, %xmm0
mulsd %xmm14, %xmm7
addsd %xmm0, %xmm7
movapd %xmm7, %xmm14
movsd %xmm14, 0x90(%rbx)
movsd %xmm2, 0x98(%rbx)
xorl %eax, %eax
addq $0x1248, %rsp           # imm = 0x1248
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq