// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../source/background.c
// Function: background_functions
int background_functions(
                         struct background * pba,
                         double a,
                         double * pvecback_B, /* vector with argument pvecback[index_bi] */
                         enum vecback_format return_format,
                         double * pvecback /* vector with argument pvecback[index_bg] (must be already allocated with a size compatible with return_format) */
                         ) {

  /** Summary: */

  /** - define local variables */

  /* total density */
  double rho_tot;

  /* critical density */
  double rho_crit;
  /* total pressure */
  double p_tot;
  /* total relativistic density */
  double rho_r;
  /* total non-relativistic density */
  double rho_m;
  /* background ncdm quantities */
  double rho_ncdm,p_ncdm,pseudo_p_ncdm;
  /* index for n_ncdm species */
  int n_ncdm;
  /* fluid's time-dependent equation of state parameter */
  double w_fld, dw_over_da, integral_fld;
  // short kg_fld_switch;
  /* scalar field quantities */
  double phi = 0, phi_prime = 0;
  //printf("Inside background_functions.\n");//print_trigger

  /* Since we only know a_prime_over_a after we have rho_tot,
     it is not possible to simply sum up p_tot_prime directly.
     Instead we sum up dp_dloga = p_prime/a_prime_over_a. The formula is
     p_prime = a_prime_over_a * dp_dloga = a_prime_over_a * Sum [ (w_prime/a_prime_over_a -3(1+w)w)rho].
     Note: The scalar field contribution must be added in the end, as an exception!*/
  double dp_dloga;

  /** - initialize local variables */
  rho_tot = 0.;
  p_tot = 0.;

  dp_dloga = 0.;
  rho_r=0.;
  rho_m=0.;

  class_test(a <= 0.,
             pba->error_message,
             "a = %e instead of strictly positive",a);

  /** - pass value of \f$ a\f$ to output */
  pvecback[pba->index_bg_a] = a;

  /** - compute each component's density and pressure */

  /* photons */
  pvecback[pba->index_bg_rho_g] = pba->Omega0_g * pow(pba->H0,2) / pow(a,4);
  rho_tot += pvecback[pba->index_bg_rho_g];
  p_tot += (1./3.) * pvecback[pba->index_bg_rho_g];
  dp_dloga += -(4./3.) * pvecback[pba->index_bg_rho_g];
  rho_r += pvecback[pba->index_bg_rho_g];

  /* baryons */
  pvecback[pba->index_bg_rho_b] = pba->Omega0_b * pow(pba->H0,2) / pow(a,3);
  rho_tot += pvecback[pba->index_bg_rho_b];
  p_tot += 0;
  rho_m += pvecback[pba->index_bg_rho_b];

  /* cdm */
  if (pba->has_cdm == _TRUE_) {
    pvecback[pba->index_bg_rho_cdm] = pba->Omega0_cdm * pow(pba->H0,2) / pow(a,3);
    rho_tot += pvecback[pba->index_bg_rho_cdm];
    p_tot += 0.;
    rho_m += pvecback[pba->index_bg_rho_cdm];
  }

  /* idm */
  if (pba->has_idm == _TRUE_) {
    pvecback[pba->index_bg_rho_idm] = pba->Omega0_idm * pow(pba->H0,2) / pow(a,3);
    rho_tot += pvecback[pba->index_bg_rho_idm];
    p_tot += 0.;
    rho_m += pvecback[pba->index_bg_rho_idm];
  }

  /* dcdm */
  if (pba->has_dcdm == _TRUE_) {
    /* Pass value of rho_dcdm to output */
    pvecback[pba->index_bg_rho_dcdm] = pvecback_B[pba->index_bi_rho_dcdm];
    rho_tot += pvecback[pba->index_bg_rho_dcdm];
    p_tot += 0.;
    rho_m += pvecback[pba->index_bg_rho_dcdm];
  }
  /* dr */
  if (pba->has_dr == _TRUE_) {
    /* Pass value of rho_dr to output */
    pvecback[pba->index_bg_rho_dr] = pvecback_B[pba->index_bi_rho_dr];
    rho_tot += pvecback[pba->index_bg_rho_dr];
    p_tot += (1./3.)*pvecback[pba->index_bg_rho_dr];
    dp_dloga += -(4./3.) * pvecback[pba->index_bg_rho_dr];
    rho_r += pvecback[pba->index_bg_rho_dr];
  }

    //printf("Scalar field? %f \n", pba->has_scf);//print_trigger
    /* Scalar field */
    if (pba->has_scf == _TRUE_ && pba->scf_kg_eq == _TRUE_) {

    pba->kg_fld_switch = _FALSE_;
    //printf("Inside scf table update\n"); //print_trigger
    phi = pvecback_B[pba->index_bi_phi_scf];
    phi_prime = pvecback_B[pba->index_bi_phi_prime_scf];
    //At this point phi and phi prime have already been updated, from their evolution equations, rho_scf is still from the last step,
    //The next few lines then calculate the new values for the density etc... from the new values of phi and phi prime
    pvecback[pba->index_bg_phi_scf] = phi; // value of the scalar field phi
    pvecback[pba->index_bg_phi_prime_scf] = phi_prime; // value of the scalar field phi derivative wrt conformal time
    pvecback[pba->index_bg_V_scf] = V_scf(pba,phi); //V_scf(pba,phi); //write here potential as function of phi
    pvecback[pba->index_bg_dV_scf] = dV_scf(pba,phi); // dV_scf(pba,phi); //potential' as function of phi
    pvecback[pba->index_bg_ddV_scf] = ddV_scf(pba,phi); // ddV_scf(pba,phi); //potential'' as function of phi
    pvecback[pba->index_bg_rho_scf] = (phi_prime*phi_prime/(2*a*a) + V_scf(pba,phi))/3.; // energy of the scalar field. The field units are set automatically by setting the initial conditions
    pvecback[pba->index_bg_p_scf] = (phi_prime*phi_prime/(2*a*a) - V_scf(pba,phi))/3.; // pressure of the scalar field

    pvecback[pba->index_bg_w_scf] =pvecback[pba->index_bg_p_scf]/pvecback[pba->index_bg_rho_scf]; // e.o.s of the scalar field, only used for outputs
    pvecback_B[pba->index_bi_rho_scf] = pvecback[pba->index_bg_rho_scf];

    rho_tot += pvecback[pba->index_bg_rho_scf];
    p_tot += pvecback[pba->index_bg_p_scf];
    dp_dloga += 0.0; /** <-- This depends on a_prime_over_a, so we cannot add it now! */

    rho_r += 3.*pvecback[pba->index_bg_p_scf]; //field pressure contributes radiation
    rho_m += pvecback[pba->index_bg_rho_scf] - 3.* pvecback[pba->index_bg_p_scf]; //the rest contributes matter

    if(pba->background_verbose>11) printf("here KG equation, a %e phi: %e, phi': %e rho_scf: %e \n", a, pvecback_B[pba->index_bi_phi_scf], pvecback_B[pba->index_bi_phi_prime_scf], pvecback[pba->index_bg_rho_scf]);

  }
  else if(pba->has_scf == _TRUE_ &&  pba->scf_kg_eq == _FALSE_){
    // phi = pvecback[pba->index_bg_phi_scf]; //phi is frozen to its last value.
    phi = pvecback_B[pba->index_bi_phi_scf];
    phi_prime = pvecback_B[pba->index_bi_phi_prime_scf];
    /*** WE STORE THESE DUMMY QUANTITIES ANYWAY ***/
    pvecback[pba->index_bg_phi_scf] = phi; // value of the scalar field phi
    pvecback[pba->index_bg_phi_prime_scf] = phi_prime; // value of the scalar field phi derivative wrt conformal time
    pvecback[pba->index_bg_V_scf] = V_scf(pba,phi); //V_scf(pba,phi); //write here potential as function of phi
    pvecback[pba->index_bg_dV_scf] = dV_scf(pba,phi); // dV_scf(pba,phi); //potential' as function of phi
    pvecback[pba->index_bg_ddV_scf] = ddV_scf(pba,phi); // ddV_scf(pba,phi); //potential'' as function of phi

    if(pba->kg_fld_switch == _FALSE_){
      pba->kg_fld_switch = _TRUE_;
      //if we just switched from KG to fluid, we need to correctly initialize the density.
      pvecback_B[pba->index_bi_rho_scf] = (phi_prime*phi_prime/(2*a*a) + V_scf(pba,phi))/3.;
    }
    /****THE REAL QUANTITIES ARE ASSIGNED HERE****/
    //pvecback[pba->index_bg_rho_scf] = pba->Omega0_scf * pow(pba->H0,2) / pow(a_rel,3);

    pvecback[pba->index_bg_rho_scf] = pvecback_B[pba->index_bi_rho_scf];
    pvecback[pba->index_bg_p_scf] = pba->w_scf*pvecback_B[pba->index_bi_rho_scf];
    if(pba->log10_axion_ac > -30){
      /* approximate fluid equation of state for the axion */
      pvecback[pba->index_bg_w_scf] = (1+pba->w_scf)/(1+pow(pba->a_c/a,3*(1+pba->w_scf)))-1;
    }
    else{
      pvecback[pba->index_bg_w_scf] = pba->w_scf;
    }


      rho_tot += pvecback[pba->index_bg_rho_scf];
      p_tot += pvecback[pba->index_bg_p_scf];
      rho_r += 3.*pvecback[pba->index_bg_p_scf]; //field pressure contributes radiation
      rho_m += pvecback[pba->index_bg_rho_scf] - 3.* pvecback[pba->index_bg_p_scf]; //the rest contributes matter

    if(pba->background_verbose>11) printf("now fluid equation H %e p %e rho %e \n",3*pvecback[pba->index_bg_H],pvecback[pba->index_bg_p_scf],pvecback[pba->index_bg_rho_scf]);

  }
  //printf("Scalar field? %f \n", pba->has_scf); //print_trigger


  /* ncdm */
  if (pba->has_ncdm == _TRUE_) {

    /* Loop over species: */
    for (n_ncdm=0; n_ncdm<pba->N_ncdm; n_ncdm++) {

      /* function returning background ncdm[n_ncdm] quantities (only
         those for which non-NULL pointers are passed) */
      class_call(background_ncdm_momenta(
                                         pba->q_ncdm_bg[n_ncdm],
                                         pba->w_ncdm_bg[n_ncdm],
                                         pba->q_size_ncdm_bg[n_ncdm],
                                         pba->M_ncdm[n_ncdm],
                                         pba->factor_ncdm[n_ncdm],
                                         1./a-1.,
                                         NULL,
                                         &rho_ncdm,
                                         &p_ncdm,
                                         NULL,
                                         &pseudo_p_ncdm),
                 pba->error_message,
                 pba->error_message);

      pvecback[pba->index_bg_rho_ncdm1+n_ncdm] = rho_ncdm;
      rho_tot += rho_ncdm;
      pvecback[pba->index_bg_p_ncdm1+n_ncdm] = p_ncdm;
      p_tot += p_ncdm;
      pvecback[pba->index_bg_pseudo_p_ncdm1+n_ncdm] = pseudo_p_ncdm;
      /** See e.g. Eq. A6 in 1811.00904. */
      dp_dloga += (pseudo_p_ncdm - 5*p_ncdm);

      /* (3 p_ncdm1) is the "relativistic" contribution to rho_ncdm1 */
      rho_r += 3.* p_ncdm;

      /* (rho_ncdm1 - 3 p_ncdm1) is the "non-relativistic" contribution
         to rho_ncdm1 */
      rho_m += rho_ncdm - 3.* p_ncdm;
    }
  }

  /* Lambda */
  if (pba->has_lambda == _TRUE_) {
    pvecback[pba->index_bg_rho_lambda] = pba->Omega0_lambda * pow(pba->H0,2);
    rho_tot += pvecback[pba->index_bg_rho_lambda];
    p_tot -= pvecback[pba->index_bg_rho_lambda];
  }

  /* fluid with w(a) and constant cs2 */
  /* or whatever other fluid species you have defined under background_w_fld */
  if (pba->has_fld == _TRUE_) {

    /* get rho_fld from vector of integrated variables */
    pvecback[pba->index_bg_rho_fld] = pvecback_B[pba->index_bi_rho_fld];

    /* get w_fld from dedicated function */
    class_call(background_w_fld(pba,a,&w_fld,&dw_over_da,&integral_fld), pba->error_message, pba->error_message);
    pvecback[pba->index_bg_w_fld] = w_fld;

    // Obsolete: at the beginning, we had here the analytic integral solution corresponding to the case w=w0+w1(1-a/a0):
    // pvecback[pba->index_bg_rho_fld] = pba->Omega0_fld * pow(pba->H0,2) / pow(a,3.*(1.+pba->w0_fld+pba->wa_fld)) * exp(3.*pba->wa_fld*(a-1.));
    // But now everthing is integrated numerically for a given w_fld(a) defined in the function background_w_fld.
    // printf("pvecback[pba->index_bg_rho_fld] %e\n", pvecback[pba->index_bg_rho_fld]);
    rho_tot += pvecback[pba->index_bg_rho_fld];
    p_tot += w_fld * pvecback[pba->index_bg_rho_fld];
    dp_dloga += (a*dw_over_da-3*(1+w_fld)*w_fld)*pvecback[pba->index_bg_rho_fld];

    // printf("w_fld %e\n", w_fld);
    if(w_fld>0){
      rho_m += pvecback[pba->index_bg_rho_fld] - 3.* w_fld * pvecback[pba->index_bg_rho_fld]; //the rest contributes matter
      rho_r += 3.* w_fld * pvecback[pba->index_bg_rho_fld]; //the rest contributes matter
      // printf("w_fld %e pvecback[pba->index_bg_rho_fld] - 3.* w_fld * pvecback[pba->index_bg_rho_fld] %e\n", w_fld,pvecback[pba->index_bg_rho_fld] - 3.* w_fld * pvecback[pba->index_bg_rho_fld]);
    }
  }

  /* relativistic neutrinos (and all relativistic relics) */
  if (pba->has_ur == _TRUE_) {
    pvecback[pba->index_bg_rho_ur] = pba->Omega0_ur * pow(pba->H0,2) / pow(a,4);
    rho_tot += pvecback[pba->index_bg_rho_ur];
    p_tot += (1./3.) * pvecback[pba->index_bg_rho_ur];
    dp_dloga += -(4./3.) * pvecback[pba->index_bg_rho_ur];
    rho_r += pvecback[pba->index_bg_rho_ur];
  }

  /* interacting dark radiation */
  if (pba->has_idr == _TRUE_) {
    pvecback[pba->index_bg_rho_idr] = pba->Omega0_idr * pow(pba->H0,2) / pow(a,4);
    rho_tot += pvecback[pba->index_bg_rho_idr];
    p_tot += (1./3.) * pvecback[pba->index_bg_rho_idr];
    rho_r += pvecback[pba->index_bg_rho_idr];
  }

  /** - compute expansion rate H from Friedmann equation: this is the
      only place where the Friedmann equation is assumed. Remember
      that densities are all expressed in units of \f$ [3c^2/8\pi G] \f$, ie
      \f$ \rho_{class} = [8 \pi G \rho_{physical} / 3 c^2]\f$ */
  pvecback[pba->index_bg_H] = sqrt(rho_tot-pba->K/a/a);

  /** - compute derivative of H with respect to conformal time */
  pvecback[pba->index_bg_H_prime] = - (3./2.) * (rho_tot + p_tot) * a + pba->K/a;

  if(pba->has_scf == _TRUE_){
    pvecback[pba->index_bg_Omega_scf] = pvecback[pba->index_bg_rho_scf] / rho_tot;
  }

  /* Total energy density*/
  pvecback[pba->index_bg_rho_tot] = rho_tot;

  /* Total pressure */
  pvecback[pba->index_bg_p_tot] = p_tot;

  /* Derivative of total pressure w.r.t. conformal time */
  pvecback[pba->index_bg_p_tot_prime] = a*pvecback[pba->index_bg_H]*dp_dloga;
  if (pba->has_scf == _TRUE_) {
    /** The contribution of scf was not added to dp_dloga, add p_scf_prime here: */
    pvecback[pba->index_bg_p_prime_scf] = pvecback[pba->index_bg_phi_prime_scf]*
      (-pvecback[pba->index_bg_phi_prime_scf]*pvecback[pba->index_bg_H]/a-2./3.*pvecback[pba->index_bg_dV_scf]);
    pvecback[pba->index_bg_p_tot_prime] += pvecback[pba->index_bg_p_prime_scf];
  }

  /** - compute critical density */
  rho_crit = rho_tot-pba->K/a/a;

  class_test(rho_crit <= 0.,
             pba->error_message,
             "rho_crit = %e instead of strictly positive",rho_crit);

  /** - compute relativistic density to total density ratio */
  pvecback[pba->index_bg_Omega_r] = rho_r / rho_crit;

  /** - compute other quantities in the exhaustive, redundant format */
  if (return_format == long_info) {

    /** - store critical density */
    pvecback[pba->index_bg_rho_crit] = rho_crit;

    /** - compute Omega_m */
    pvecback[pba->index_bg_Omega_m] = rho_m / rho_crit;

    /** - cosmological time */
    pvecback[pba->index_bg_time] = pvecback_B[pba->index_bi_time];

    /** - comoving sound horizon */
    pvecback[pba->index_bg_rs] = pvecback_B[pba->index_bi_rs];

    /** - growth factor */
    pvecback[pba->index_bg_D] = pvecback_B[pba->index_bi_D];

    /** - velocity growth factor */
    pvecback[pba->index_bg_f] = pvecback_B[pba->index_bi_D_prime]/( pvecback_B[pba->index_bi_D]*a*pvecback[pba->index_bg_H]);

    /**- Varying fundamental constants */
    if (pba->has_varconst == _TRUE_) {
      class_call(background_varconst_of_z(pba,
                                          1./a-1.,
                                          &(pvecback[pba->index_bg_varc_alpha]),
                                          &(pvecback[pba->index_bg_varc_me])
                                          ),
                 pba->error_message,
                 pba->error_message);
    }

    /* one can put other variables here */
    /*  */
    /*  */

    /** - compute and store fractional energy density of fluid
          to later calculate the location of the peak of f_EDE */
    // if( (pba->has_fld == _TRUE_) && ((pba->fluid_equation_of_state == EDE) && (pba->ede_parametrization == pheno_axion)) ){
    if( (pba->has_fld == _TRUE_)){
      // TK ????????? do we want to make this only for the pheno_axion case of EDE?
      pvecback[pba->index_bg_Omega_fld] = pvecback[pba->index_bg_rho_fld] / rho_tot;
    }


  }

  return _SUCCESS_;

}

// Assembly:
subq $0x3948, %rsp           # imm = 0x3948
movq %rdi, 0x3938(%rsp)
movsd %xmm0, 0x3930(%rsp)
movq %rsi, 0x3928(%rsp)
movl %edx, 0x3924(%rsp)
movq %rcx, 0x3918(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x38b0(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x38a8(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x3910(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x3900(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x38a0(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x38f8(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x38f0(%rsp)
xorps %xmm0, %xmm0
ucomisd 0x3930(%rsp), %xmm0
jb 0x9f1ea
leaq 0x30a0(%rsp), %rdi
movsd 0x3930(%rsp), %xmm0
leaq 0x14fb26(%rip), %rsi    # 0x1eeca3
movb $0x1, %al
callq 0x5b9c0
leaq 0x28a0(%rsp), %rdi
leaq 0x30a0(%rsp), %rcx
leaq 0x132ee7(%rip), %rsi    # 0x1d2082
leaq 0x14fb25(%rip), %rdx    # 0x1eecc7
movb $0x0, %al
callq 0x5b9c0
movq 0x3938(%rsp), %rdi
addq $0xd1c, %rdi            # imm = 0xD1C
leaq 0x28a0(%rsp), %r8
leaq 0x132e6d(%rip), %rsi    # 0x1d2034
leaq 0x14fb01(%rip), %rdx    # 0x1eeccf
movl $0x1a8, %ecx            # imm = 0x1A8
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x3944(%rsp)
jmp 0xa11a4
movsd 0x3930(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x380(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3938(%rsp), %rax
movsd 0x10(%rax), %xmm0
movsd %xmm0, 0x80(%rsp)
movq 0x3938(%rsp), %rax
movsd (%rax), %xmm0
movsd 0x133a47(%rip), %xmm1   # 0x1d2c80
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x80(%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x88(%rsp)
movsd 0x3930(%rsp), %xmm0
movsd 0x136260(%rip), %xmm1   # 0x1d54c8
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x88(%rsp), %xmm0
divsd %xmm1, %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x38c(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x38c(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x3910(%rsp), %xmm0
movsd %xmm0, 0x3910(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x38c(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd 0x3900(%rsp), %xmm1
movsd 0x1361a4(%rip), %xmm2   # 0x1d5498
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x3900(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x38c(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd 0x38a0(%rsp), %xmm1
movsd 0x14f3e6(%rip), %xmm2   # 0x1ee718
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x38a0(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x38c(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x38f8(%rsp), %xmm0
movsd %xmm0, 0x38f8(%rsp)
movq 0x3938(%rsp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, 0x90(%rsp)
movq 0x3938(%rsp), %rax
movsd (%rax), %xmm0
movsd 0x1338e5(%rip), %xmm1   # 0x1d2c80
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x90(%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x98(%rsp)
movsd 0x3930(%rsp), %xmm0
movsd 0x1342ce(%rip), %xmm1   # 0x1d3698
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x98(%rsp), %xmm0
divsd %xmm1, %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x390(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x390(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x3910(%rsp), %xmm0
movsd %xmm0, 0x3910(%rsp)
xorps %xmm0, %xmm0
addsd 0x3900(%rsp), %xmm0
movsd %xmm0, 0x3900(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x390(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x38f0(%rsp), %xmm0
movsd %xmm0, 0x38f0(%rsp)
movq 0x3938(%rsp), %rax
movswl 0x4b4(%rax), %eax
cmpl $0x1, %eax
jne 0x9f573
movq 0x3938(%rsp), %rax
movsd 0x28(%rax), %xmm0
movsd %xmm0, 0x70(%rsp)
movq 0x3938(%rsp), %rax
movsd (%rax), %xmm0
movsd 0x1337d5(%rip), %xmm1   # 0x1d2c80
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x70(%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x78(%rsp)
movsd 0x3930(%rsp), %xmm0
movsd 0x1341c4(%rip), %xmm1   # 0x1d3698
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x78(%rsp), %xmm0
divsd %xmm1, %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x394(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x394(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x3910(%rsp), %xmm0
movsd %xmm0, 0x3910(%rsp)
xorps %xmm0, %xmm0
addsd 0x3900(%rsp), %xmm0
movsd %xmm0, 0x3900(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x394(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x38f0(%rsp), %xmm0
movsd %xmm0, 0x38f0(%rsp)
movq 0x3938(%rsp), %rax
movswl 0x4b6(%rax), %eax
cmpl $0x1, %eax
jne 0x9f67d
movq 0x3938(%rsp), %rax
movsd 0xf0(%rax), %xmm0
movsd %xmm0, 0x60(%rsp)
movq 0x3938(%rsp), %rax
movsd (%rax), %xmm0
movsd 0x1336cb(%rip), %xmm1   # 0x1d2c80
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x60(%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x68(%rsp)
movsd 0x3930(%rsp), %xmm0
movsd 0x1340ba(%rip), %xmm1   # 0x1d3698
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x68(%rsp), %xmm0
divsd %xmm1, %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x398(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x398(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x3910(%rsp), %xmm0
movsd %xmm0, 0x3910(%rsp)
xorps %xmm0, %xmm0
addsd 0x3900(%rsp), %xmm0
movsd %xmm0, 0x3900(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x398(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x38f0(%rsp), %xmm0
movsd %xmm0, 0x38f0(%rsp)
movq 0x3938(%rsp), %rax
movswl 0x4b8(%rax), %eax
cmpl $0x1, %eax
jne 0x9f73e
movq 0x3928(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x480(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3b4(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3b4(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x3910(%rsp), %xmm0
movsd %xmm0, 0x3910(%rsp)
xorps %xmm0, %xmm0
addsd 0x3900(%rsp), %xmm0
movsd %xmm0, 0x3900(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3b4(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x38f0(%rsp), %xmm0
movsd %xmm0, 0x38f0(%rsp)
movq 0x3938(%rsp), %rax
movswl 0x4ba(%rax), %eax
cmpl $0x1, %eax
jne 0x9f866
movq 0x3928(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x484(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3b8(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3b8(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x3910(%rsp), %xmm0
movsd %xmm0, 0x3910(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3b8(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd 0x3900(%rsp), %xmm1
movsd 0x135caf(%rip), %xmm2   # 0x1d5498
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x3900(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3b8(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd 0x38a0(%rsp), %xmm1
movsd 0x14eef1(%rip), %xmm2   # 0x1ee718
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x38a0(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3b8(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x38f8(%rsp), %xmm0
movsd %xmm0, 0x38f8(%rsp)
movq 0x3938(%rsp), %rax
movswl 0x4bc(%rax), %eax
cmpl $0x1, %eax
jne 0x9fcec
movq 0x3938(%rsp), %rax
movswl 0x230(%rax), %eax
cmpl $0x1, %eax
jne 0x9fcec
movq 0x3938(%rsp), %rax
movw $0x0, 0x232(%rax)
movq 0x3928(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x490(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, 0x38b0(%rsp)
movq 0x3928(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x494(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, 0x38a8(%rsp)
movsd 0x38b0(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3bc(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x38a8(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3c0(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3938(%rsp), %rdi
movsd 0x38b0(%rsp), %xmm0
callq 0xa11c0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3c4(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3938(%rsp), %rdi
movsd 0x38b0(%rsp), %xmm0
callq 0xa12d0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3c8(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3938(%rsp), %rdi
movsd 0x38b0(%rsp), %xmm0
callq 0xa1420
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3cc(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x38a8(%rsp), %xmm0
mulsd 0x38a8(%rsp), %xmm0
movsd 0x133295(%rip), %xmm1   # 0x1d2c80
mulsd 0x3930(%rsp), %xmm1
mulsd 0x3930(%rsp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x50(%rsp)
movq 0x3938(%rsp), %rdi
movsd 0x38b0(%rsp), %xmm0
callq 0xa11c0
movaps %xmm0, %xmm1
movsd 0x50(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd 0x133c66(%rip), %xmm1   # 0x1d3698
divsd %xmm1, %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d0(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x38a8(%rsp), %xmm0
mulsd 0x38a8(%rsp), %xmm0
movsd 0x133214(%rip), %xmm1   # 0x1d2c80
mulsd 0x3930(%rsp), %xmm1
mulsd 0x3930(%rsp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x58(%rsp)
movq 0x3938(%rsp), %rdi
movsd 0x38b0(%rsp), %xmm0
callq 0xa11c0
movaps %xmm0, %xmm1
movsd 0x58(%rsp), %xmm0
subsd %xmm1, %xmm0
movsd 0x133be5(%rip), %xmm1   # 0x1d3698
divsd %xmm1, %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d8(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d8(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d0(%rcx), %rcx
divsd (%rax,%rcx,8), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3e0(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x3928(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x48c(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x3910(%rsp), %xmm0
movsd %xmm0, 0x3910(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d8(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x3900(%rsp), %xmm0
movsd %xmm0, 0x3900(%rsp)
xorps %xmm0, %xmm0
addsd 0x38a0(%rsp), %xmm0
movsd %xmm0, 0x38a0(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d8(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd 0x38f8(%rsp), %xmm1
movsd 0x133a9b(%rip), %xmm2   # 0x1d3698
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x38f8(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm1
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d8(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd 0x135d5a(%rip), %xmm2   # 0x1d59a8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
addsd 0x38f0(%rsp), %xmm0
movsd %xmm0, 0x38f0(%rsp)
movq 0x3938(%rsp), %rax
movswl 0xd1a(%rax), %eax
cmpl $0xb, %eax
jle 0x9fce7
movsd 0x3930(%rsp), %xmm0
movq 0x3928(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x490(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm1
movq 0x3928(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x494(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm2
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm3
leaq 0x14f004(%rip), %rdi    # 0x1eece4
movb $0x4, %al
callq 0x8030
jmp 0xa01d7
movq 0x3938(%rsp), %rax
movswl 0x4bc(%rax), %eax
cmpl $0x1, %eax
jne 0xa01d5
movq 0x3938(%rsp), %rax
movswl 0x230(%rax), %eax
cmpl $0x0, %eax
jne 0xa01d5
movq 0x3928(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x490(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, 0x38b0(%rsp)
movq 0x3928(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x494(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, 0x38a8(%rsp)
movsd 0x38b0(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3bc(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x38a8(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3c0(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3938(%rsp), %rdi
movsd 0x38b0(%rsp), %xmm0
callq 0xa11c0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3c4(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3938(%rsp), %rdi
movsd 0x38b0(%rsp), %xmm0
callq 0xa12d0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3c8(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3938(%rsp), %rdi
movsd 0x38b0(%rsp), %xmm0
callq 0xa1420
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3cc(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3938(%rsp), %rax
movswl 0x232(%rax), %eax
cmpl $0x0, %eax
jne 0x9fef0
movq 0x3938(%rsp), %rax
movw $0x1, 0x232(%rax)
movsd 0x38a8(%rsp), %xmm0
mulsd 0x38a8(%rsp), %xmm0
movsd 0x132df7(%rip), %xmm1   # 0x1d2c80
mulsd 0x3930(%rsp), %xmm1
mulsd 0x3930(%rsp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x48(%rsp)
movq 0x3938(%rsp), %rdi
movsd 0x38b0(%rsp), %xmm0
callq 0xa11c0
movaps %xmm0, %xmm1
movsd 0x48(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd 0x1337c8(%rip), %xmm1   # 0x1d3698
divsd %xmm1, %xmm0
movq 0x3928(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x48c(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3928(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x48c(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d0(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3938(%rsp), %rax
movsd 0x218(%rax), %xmm0
movq 0x3928(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x48c(%rcx), %rcx
mulsd (%rax,%rcx,8), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d8(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3938(%rsp), %rax
movsd 0x1b8(%rax), %xmm0
movsd 0x136738(%rip), %xmm1   # 0x1d66c0
ucomisd %xmm1, %xmm0
jbe 0xa0035
movq 0x3938(%rsp), %rax
movsd 0x1322a6(%rip), %xmm0   # 0x1d2248
addsd 0x218(%rax), %xmm0
movsd %xmm0, 0x40(%rsp)
movq 0x3938(%rsp), %rax
movsd 0x1c8(%rax), %xmm0
divsd 0x3930(%rsp), %xmm0
movq 0x3938(%rsp), %rax
movsd 0x13226f(%rip), %xmm2   # 0x1d2248
addsd 0x218(%rax), %xmm2
movsd 0x1336af(%rip), %xmm1   # 0x1d3698
mulsd %xmm2, %xmm1
callq 0x8610
movaps %xmm0, %xmm2
movsd 0x40(%rsp), %xmm0
movsd 0x132245(%rip), %xmm1   # 0x1d2248
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd 0x132235(%rip), %xmm1   # 0x1d2248
subsd %xmm1, %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3e0(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0xa0061
movq 0x3938(%rsp), %rax
movsd 0x218(%rax), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3e0(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x3910(%rsp), %xmm0
movsd %xmm0, 0x3910(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d8(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x3900(%rsp), %xmm0
movsd %xmm0, 0x3900(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d8(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd 0x38f8(%rsp), %xmm1
movsd 0x1335ae(%rip), %xmm2   # 0x1d3698
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x38f8(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm1
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d8(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd 0x13586d(%rip), %xmm2   # 0x1d59a8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
addsd 0x38f0(%rsp), %xmm0
movsd %xmm0, 0x38f0(%rsp)
movq 0x3938(%rsp), %rax
movswl 0xd1a(%rax), %eax
cmpl $0xb, %eax
jle 0xa01d3
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x384(%rcx), %rcx
movsd 0x133510(%rip), %xmm0   # 0x1d3698
mulsd (%rax,%rcx,8), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d8(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm1
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm2
leaq 0x14eb4f(%rip), %rdi    # 0x1eed1b
movb $0x3, %al
callq 0x8030
jmp 0xa01d5
jmp 0xa01d7
movq 0x3938(%rsp), %rax
movswl 0x4be(%rax), %eax
cmpl $0x1, %eax
jne 0xa04c5
movl $0x0, 0x38d4(%rsp)
movl 0x38d4(%rsp), %eax
movq 0x3938(%rsp), %rcx
cmpl 0x248(%rcx), %eax
jge 0xa04c3
movq 0x3938(%rsp), %rax
movq 0x4d8(%rax), %rax
movslq 0x38d4(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
movq 0x3938(%rsp), %rax
movq 0x4e0(%rax), %rax
movslq 0x38d4(%rsp), %rcx
movq (%rax,%rcx,8), %rsi
movq 0x3938(%rsp), %rax
movq 0x500(%rax), %rax
movslq 0x38d4(%rsp), %rcx
movl (%rax,%rcx,4), %edx
movq 0x3938(%rsp), %rax
movq 0x270(%rax), %rax
movslq 0x38d4(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x3938(%rsp), %rax
movq 0x510(%rax), %rax
movslq 0x38d4(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm1
movsd 0x131fa3(%rip), %xmm2   # 0x1d2248
divsd 0x3930(%rsp), %xmm2
movsd 0x131f92(%rip), %xmm3   # 0x1d2248
subsd %xmm3, %xmm2
xorl %eax, %eax
movl %eax, %ecx
leaq 0x38e8(%rsp), %r8
leaq 0x38e0(%rsp), %r9
leaq 0x38d8(%rsp), %rax
movq $0x0, (%rsp)
movq %rax, 0x8(%rsp)
callq 0xa15d0
cmpl $0x1, %eax
jne 0xa035a
leaq 0x20a0(%rsp), %rdi
movq 0x3938(%rsp), %rcx
addq $0xd1c, %rcx            # imm = 0xD1C
leaq 0x1320cd(%rip), %rsi    # 0x1d23d8
leaq 0x14ea2f(%rip), %rdx    # 0x1eed41
movb $0x0, %al
callq 0x5b9c0
movq 0x3938(%rsp), %rdi
addq $0xd1c, %rdi            # imm = 0xD1C
leaq 0x20a0(%rsp), %r8
leaq 0x131cfd(%rip), %rsi    # 0x1d2034
leaq 0x14e991(%rip), %rdx    # 0x1eeccf
movl $0x23b, %ecx            # imm = 0x23B
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x3944(%rsp)
jmp 0xa11a4
movsd 0x38e8(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movl 0x3ec(%rcx), %ecx
addl 0x38d4(%rsp), %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x38e8(%rsp), %xmm0
addsd 0x3910(%rsp), %xmm0
movsd %xmm0, 0x3910(%rsp)
movsd 0x38e0(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movl 0x3f0(%rcx), %ecx
addl 0x38d4(%rsp), %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x38e0(%rsp), %xmm0
addsd 0x3900(%rsp), %xmm0
movsd %xmm0, 0x3900(%rsp)
movsd 0x38d8(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movl 0x3f4(%rcx), %ecx
addl 0x38d4(%rsp), %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x38d8(%rsp), %xmm1
movsd 0x38e0(%rsp), %xmm0
movsd 0x14e2f4(%rip), %xmm2   # 0x1ee728
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
addsd 0x38a0(%rsp), %xmm0
movsd %xmm0, 0x38a0(%rsp)
movsd 0x38e0(%rsp), %xmm0
movsd 0x38f8(%rsp), %xmm1
movsd 0x133230(%rip), %xmm2   # 0x1d3698
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x38f8(%rsp)
movsd 0x38e8(%rsp), %xmm1
movsd 0x38e0(%rsp), %xmm0
movsd 0x135515(%rip), %xmm2   # 0x1d59a8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
addsd 0x38f0(%rsp), %xmm0
movsd %xmm0, 0x38f0(%rsp)
movl 0x38d4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x38d4(%rsp)
jmp 0xa01fa
jmp 0xa04c5
movq 0x3938(%rsp), %rax
movswl 0x4c0(%rax), %eax
cmpl $0x1, %eax
jne 0xa0592
movq 0x3938(%rsp), %rax
movsd 0x30(%rax), %xmm0
movsd %xmm0, 0x38(%rsp)
movq 0x3938(%rsp), %rax
movsd (%rax), %xmm0
movsd 0x13277c(%rip), %xmm1   # 0x1d2c80
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x38(%rsp), %xmm0
mulsd %xmm1, %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x39c(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x39c(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x3910(%rsp), %xmm0
movsd %xmm0, 0x3910(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x39c(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm1
movsd 0x3900(%rsp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x3900(%rsp)
movq 0x3938(%rsp), %rax
movswl 0x4c2(%rax), %eax
cmpl $0x1, %eax
jne 0xa087a
movq 0x3928(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x488(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3a0(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3938(%rsp), %rdi
movsd 0x3930(%rsp), %xmm0
leaq 0x38c8(%rsp), %rsi
leaq 0x38c0(%rsp), %rdx
leaq 0x38b8(%rsp), %rcx
callq 0xa1970
cmpl $0x1, %eax
jne 0xa0682
leaq 0x18a0(%rsp), %rdi
movq 0x3938(%rsp), %rcx
addq $0xd1c, %rcx            # imm = 0xD1C
leaq 0x131da5(%rip), %rsi    # 0x1d23d8
leaq 0x14e7e1(%rip), %rdx    # 0x1eee1b
movb $0x0, %al
callq 0x5b9c0
movq 0x3938(%rsp), %rdi
addq $0xd1c, %rdi            # imm = 0xD1C
leaq 0x18a0(%rsp), %r8
leaq 0x1319d5(%rip), %rsi    # 0x1d2034
leaq 0x14e669(%rip), %rdx    # 0x1eeccf
movl $0x25d, %ecx            # imm = 0x25D
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x3944(%rsp)
jmp 0xa11a4
movsd 0x38c8(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3a4(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3a0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x3910(%rsp), %xmm0
movsd %xmm0, 0x3910(%rsp)
movsd 0x38c8(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3a0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd 0x3900(%rsp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x3900(%rsp)
movsd 0x3930(%rsp), %xmm0
movsd 0x38c0(%rsp), %xmm2
movsd 0x131b1a(%rip), %xmm3   # 0x1d2248
addsd 0x38c8(%rsp), %xmm3
movsd 0x132f59(%rip), %xmm1   # 0x1d3698
mulsd %xmm3, %xmm1
mulsd 0x38c8(%rsp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3a0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd 0x38a0(%rsp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x38a0(%rsp)
movsd 0x38c8(%rsp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0xa0878
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3a0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm1
movsd 0x132ebd(%rip), %xmm0   # 0x1d3698
mulsd 0x38c8(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3a0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
addsd 0x38f0(%rsp), %xmm0
movsd %xmm0, 0x38f0(%rsp)
movsd 0x132e5f(%rip), %xmm0   # 0x1d3698
mulsd 0x38c8(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3a0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd 0x38f8(%rsp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x38f8(%rsp)
jmp 0xa087a
movq 0x3938(%rsp), %rax
movswl 0x4c4(%rax), %eax
cmpl $0x1, %eax
jne 0xa09eb
movq 0x3938(%rsp), %rax
movsd 0xe8(%rax), %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0x3938(%rsp), %rax
movsd (%rax), %xmm0
movsd 0x1323c4(%rip), %xmm1   # 0x1d2c80
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x28(%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x30(%rsp)
movsd 0x3930(%rsp), %xmm0
movsd 0x134be3(%rip), %xmm1   # 0x1d54c8
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x30(%rsp), %xmm0
divsd %xmm1, %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3ac(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3ac(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x3910(%rsp), %xmm0
movsd %xmm0, 0x3910(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3ac(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd 0x3900(%rsp), %xmm1
movsd 0x134b2a(%rip), %xmm2   # 0x1d5498
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x3900(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3ac(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd 0x38a0(%rsp), %xmm1
movsd 0x14dd6c(%rip), %xmm2   # 0x1ee718
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x38a0(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3ac(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x38f8(%rsp), %xmm0
movsd %xmm0, 0x38f8(%rsp)
movq 0x3938(%rsp), %rax
movswl 0x4c6(%rax), %eax
cmpl $0x1, %eax
jne 0xa0b1e
movq 0x3938(%rsp), %rax
movsd 0xf8(%rax), %xmm0
movsd %xmm0, 0x18(%rsp)
movq 0x3938(%rsp), %rax
movsd (%rax), %xmm0
movsd 0x132253(%rip), %xmm1   # 0x1d2c80
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x18(%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x20(%rsp)
movsd 0x3930(%rsp), %xmm0
movsd 0x134a72(%rip), %xmm1   # 0x1d54c8
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x20(%rsp), %xmm0
divsd %xmm1, %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3b0(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3b0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x3910(%rsp), %xmm0
movsd %xmm0, 0x3910(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3b0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd 0x3900(%rsp), %xmm1
movsd 0x1349b9(%rip), %xmm2   # 0x1d5498
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x3900(%rsp)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3b0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x38f8(%rsp), %xmm0
movsd %xmm0, 0x38f8(%rsp)
movsd 0x3910(%rsp), %xmm0
movq 0x3938(%rsp), %rax
movsd 0x318(%rax), %xmm1
divsd 0x3930(%rsp), %xmm1
divsd 0x3930(%rsp), %xmm1
subsd %xmm1, %xmm0
callq 0x82e0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x384(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x3910(%rsp), %xmm1
addsd 0x3900(%rsp), %xmm1
movsd 0x134960(%rip), %xmm0   # 0x1d54e8
mulsd %xmm1, %xmm0
movsd 0x3930(%rsp), %xmm2
movq 0x3938(%rsp), %rax
movsd 0x318(%rax), %xmm1
divsd 0x3930(%rsp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x388(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3938(%rsp), %rax
movswl 0x4bc(%rax), %eax
cmpl $0x1, %eax
jne 0xa0c27
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
divsd 0x3910(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3d4(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x3910(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3f8(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x3900(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3fc(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x3930(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x384(%rcx), %rcx
mulsd (%rax,%rcx,8), %xmm0
mulsd 0x38a0(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x400(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3938(%rsp), %rax
movswl 0x4bc(%rax), %eax
cmpl $0x1, %eax
jne 0xa0dd0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3c0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3c0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm2
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x384(%rcx), %rcx
mulsd (%rax,%rcx,8), %xmm2
divsd 0x3930(%rsp), %xmm2
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3c8(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm1
movsd 0x14d9b5(%rip), %xmm3   # 0x1ee720
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3dc(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3dc(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x400(%rcx), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd 0x3910(%rsp), %xmm0
movq 0x3938(%rsp), %rax
movsd 0x318(%rax), %xmm1
divsd 0x3930(%rsp), %xmm1
divsd 0x3930(%rsp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, 0x3908(%rsp)
xorps %xmm0, %xmm0
ucomisd 0x3908(%rsp), %xmm0
jb 0xa0e9f
leaq 0x10a0(%rsp), %rdi
movsd 0x3908(%rsp), %xmm0
leaq 0x14e022(%rip), %rsi    # 0x1eee54
movb $0x1, %al
callq 0x5b9c0
leaq 0x8a0(%rsp), %rdi
leaq 0x10a0(%rsp), %rcx
leaq 0x131232(%rip), %rsi    # 0x1d2082
leaq 0x14e028(%rip), %rdx    # 0x1eee7f
movb $0x0, %al
callq 0x5b9c0
movq 0x3938(%rsp), %rdi
addq $0xd1c, %rdi            # imm = 0xD1C
leaq 0x8a0(%rsp), %r8
leaq 0x1311b8(%rip), %rsi    # 0x1d2034
leaq 0x14de4c(%rip), %rdx    # 0x1eeccf
movl $0x2a2, %ecx            # imm = 0x2A2
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x3944(%rsp)
jmp 0xa11a4
movsd 0x38f8(%rsp), %xmm0
divsd 0x3908(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x404(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
cmpl $0x2, 0x3924(%rsp)
jne 0xa1199
movsd 0x3908(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x408(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x38f0(%rsp), %xmm0
divsd 0x3908(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x40c(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3928(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x498(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x41c(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3928(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x49c(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x420(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3928(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x4a4(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x424(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3928(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x4a8(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x3928(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x4a4(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd 0x3930(%rsp), %xmm1
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x384(%rcx), %rcx
mulsd (%rax,%rcx,8), %xmm1
divsd %xmm1, %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x428(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x3938(%rsp), %rax
movswl 0x4ca(%rax), %eax
cmpl $0x1, %eax
jne 0xa1142
movq 0x3938(%rsp), %rdi
movsd 0x1311cd(%rip), %xmm0   # 0x1d2248
divsd 0x3930(%rsp), %xmm0
movsd 0x1311bc(%rip), %xmm1   # 0x1d2248
subsd %xmm1, %xmm0
movq 0x3918(%rsp), %rsi
movq 0x3938(%rsp), %rax
movslq 0x42c(%rax), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq 0x3918(%rsp), %rdx
movq 0x3938(%rsp), %rax
movslq 0x430(%rax), %rax
shlq $0x3, %rax
addq %rax, %rdx
callq 0xa2870
cmpl $0x1, %eax
jne 0xa1140
leaq 0xa0(%rsp), %rdi
movq 0x3938(%rsp), %rcx
addq $0xd1c, %rcx            # imm = 0xD1C
leaq 0x1312e4(%rip), %rsi    # 0x1d23d8
leaq 0x14dd93(%rip), %rdx    # 0x1eee8e
movb $0x0, %al
callq 0x5b9c0
movq 0x3938(%rsp), %rdi
addq $0xd1c, %rdi            # imm = 0xD1C
leaq 0xa0(%rsp), %r8
leaq 0x130f14(%rip), %rsi    # 0x1d2034
leaq 0x14dba8(%rip), %rdx    # 0x1eeccf
movl $0x2c4, %ecx            # imm = 0x2C4
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x3944(%rsp)
jmp 0xa11a4
jmp 0xa1142
movq 0x3938(%rsp), %rax
movswl 0x4c2(%rax), %eax
cmpl $0x1, %eax
jne 0xa1197
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3a0(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
divsd 0x3910(%rsp), %xmm0
movq 0x3918(%rsp), %rax
movq 0x3938(%rsp), %rcx
movslq 0x3a8(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0xa1199
movl $0x0, 0x3944(%rsp)
movl 0x3944(%rsp), %eax
addq $0x3948, %rsp           # imm = 0x3948
retq
nopw %cs:(%rax,%rax)