// File: /workspace/github_c_makefile_star2_O3/lesgourg[P]class_public/build/../source/background.c
// Function: background_initial_conditions
int background_initial_conditions(
                                  struct precision *ppr,
                                  struct background *pba,
                                  double * pvecback, /* vector with argument pvecback[index_bg] (must be already allocated, normal format is sufficient) */
                                  double * pvecback_integration, /* vector with argument pvecback_integration[index_bi] (must be already allocated with size pba->bi_size) */
                                  double * loga_ini
                                  ) {

  /** Summary: */

  /** - define local variables */

  /* scale factor */
  double a;

  double rho_ncdm, p_ncdm, rho_ncdm_rel_tot=0.;
  double f,Omega_rad, rho_rad;
  int counter,is_early_enough,n_ncdm;
  double scf_lambda;
  double rho_fld_today;
  double w_fld,dw_over_da_fld,integral_fld;

  /** - fix initial value of \f$ a \f$ */
  a = ppr->a_ini_over_a_today_default;

  /**  If we have ncdm species, perhaps we need to start earlier
       than the standard value for the species to be relativistic.
       This could happen for some WDM models.
  */

  if (pba->has_ncdm == _TRUE_) {

    for (counter=0; counter < _MAX_IT_; counter++) {

      is_early_enough = _TRUE_;
      rho_ncdm_rel_tot = 0.;

      for (n_ncdm=0; n_ncdm<pba->N_ncdm; n_ncdm++) {

        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.0,
                                           NULL,
                                           &rho_ncdm,
                                           &p_ncdm,
                                           NULL,
                                           NULL),
                   pba->error_message,
                   pba->error_message);
        rho_ncdm_rel_tot += 3.*p_ncdm;
        if (fabs(p_ncdm/rho_ncdm-1./3.)>ppr->tol_ncdm_initial_w) {
          is_early_enough = _FALSE_;
        }
      }
      if (is_early_enough == _TRUE_) {
        break;
      }
      else {
        a *= _SCALE_BACK_;
      }
    }
    class_test(counter == _MAX_IT_,
               pba->error_message,
               "Search for initial scale factor a such that all ncdm species are relativistic failed.");
  }

  /* Set initial values of {B} variables: */
  Omega_rad = pba->Omega0_g;
  if (pba->has_ur == _TRUE_) {
    Omega_rad += pba->Omega0_ur;
  }
  if (pba->has_idr == _TRUE_) {
    Omega_rad += pba->Omega0_idr;
  }
  rho_rad = Omega_rad*pow(pba->H0,2)/pow(a,4);
  if (pba->has_ncdm == _TRUE_) {
    /** - We must add the relativistic contribution from NCDM species */
    rho_rad += rho_ncdm_rel_tot;
  }
  if (pba->has_dcdm == _TRUE_) {
    /* Remember that the critical density today in CLASS conventions is H0^2 */
    pvecback_integration[pba->index_bi_rho_dcdm] =
      pba->Omega_ini_dcdm*pba->H0*pba->H0*pow(a,-3);
    if (pba->background_verbose > 3)
      printf("Density is %g. Omega_ini=%g\n",pvecback_integration[pba->index_bi_rho_dcdm],pba->Omega_ini_dcdm);
  }

  if (pba->has_dr == _TRUE_) {
    if (pba->has_dcdm == _TRUE_) {
      /**  - f is the critical density fraction of DR. The exact solution is:
       *
       * `f = -Omega_rad+pow(pow(Omega_rad,3./2.)+0.5*pow(a,6)*pvecback_integration[pba->index_bi_rho_dcdm]*pba->Gamma_dcdm/pow(pba->H0,3),2./3.);`
       *
       * but it is not numerically stable for very small f which is always the case.
       * Instead we use the Taylor expansion of this equation, which is equivalent to
       * ignoring f(a) in the Hubble rate.
       */
      f = 1./3.*pow(a,6)*pvecback_integration[pba->index_bi_rho_dcdm]*pba->Gamma_dcdm/pow(pba->H0,3)/sqrt(Omega_rad);
      pvecback_integration[pba->index_bi_rho_dr] = f*pba->H0*pba->H0/pow(a,4);
    }
    else{
      /** There is also a space reserved for a future case where dr is not sourced by dcdm */
      pvecback_integration[pba->index_bi_rho_dr] = 0.0;
    }
  }

  if (pba->has_fld == _TRUE_) {

    /* rho_fld today */
    rho_fld_today = pba->Omega0_fld * pow(pba->H0,2);

    /* integrate rho_fld(a) from a_ini to a_0, to get rho_fld(a_ini) given rho_fld(a0) */
    class_call(background_w_fld(pba,a,&w_fld,&dw_over_da_fld,&integral_fld), pba->error_message, pba->error_message);

    /* Note: for complicated w_fld(a) functions with no simple
       analytic integral, this is the place were you should compute
       numerically the simple 1d integral [int_{a_ini}^{a_0} 3
       [(1+w_fld)/a] da] (e.g. with the Romberg method?) instead of
       calling background_w_fld */

    /* rho_fld at initial time */
    pvecback_integration[pba->index_bi_rho_fld] = rho_fld_today * exp(integral_fld);

  }

  /** - Fix initial value of \f$ \phi, \phi' \f$
   * set directly in the radiation attractor => fixes the units in terms of rho_ur
   *
   * TODO:
   * - There seems to be some small oscillation when it starts.
   * - Check equations and signs. Sign of phi_prime?
   * - is rho_ur all there is early on?
   */
  if (pba->has_scf == _TRUE_) {
    scf_lambda = pba->scf_parameters[0];
    if (pba->attractor_ic_scf == _TRUE_) {
      pvecback_integration[pba->index_bi_phi_scf] = -1/scf_lambda*
        log(rho_rad*4./(3*pow(scf_lambda,2)-12))*pba->phi_ini_scf;
      if (3.*pow(scf_lambda,2)-12. < 0) {
        /** - --> If there is no attractor solution for scf_lambda, assign some value. Otherwise would give a nan.*/
        pvecback_integration[pba->index_bi_phi_scf] = 1./scf_lambda;//seems to do the work
        if (pba->background_verbose > 0) {
          printf(" No attractor IC for lambda = %.3e ! \n ",scf_lambda);
        }
      }
      pvecback_integration[pba->index_bi_phi_prime_scf] = 2.*a*sqrt(V_scf(pba,pvecback_integration[pba->index_bi_phi_scf]))*pba->phi_prime_ini_scf;
    }
    else {
      printf("Not using attractor initial conditions\n");
      /** - --> If no attractor initial conditions are assigned, gets the provided ones. */
      pvecback_integration[pba->index_bi_phi_scf] = pba->phi_ini_scf;
      pvecback_integration[pba->index_bi_phi_prime_scf] = pba->phi_prime_ini_scf;
    }
    class_test(!isfinite(pvecback_integration[pba->index_bi_phi_scf]) ||
               !isfinite(pvecback_integration[pba->index_bi_phi_scf]),
               pba->error_message,
               "initial phi = %e phi_prime = %e -> check initial conditions",
               pvecback_integration[pba->index_bi_phi_scf],
               pvecback_integration[pba->index_bi_phi_scf]);
  }

  /* Infer pvecback from pvecback_integration */
  class_call(background_functions(pba, a, pvecback_integration, normal_info, pvecback),
             pba->error_message,
             pba->error_message);

  /* Just checking that our initial time indeed is deep enough in the radiation
     dominated regime */
  class_test(fabs(pvecback[pba->index_bg_Omega_r]-1.) > ppr->tol_initial_Omega_r,
             pba->error_message,
             "Omega_r = %e, not close enough to 1. Decrease a_ini_over_a_today_default in order to start from radiation domination.",
             pvecback[pba->index_bg_Omega_r]);

  /** - compute initial proper time, assuming radiation-dominated
      universe since Big Bang and therefore \f$ t=1/(2H) \f$ (good
      approximation for most purposes) */

  class_test(pvecback[pba->index_bg_H] <= 0.,
             pba->error_message,
             "H = %e instead of strictly positive",pvecback[pba->index_bg_H]);

  pvecback_integration[pba->index_bi_time] = 1./(2.* pvecback[pba->index_bg_H]);

  /** - compute initial conformal time, assuming radiation-dominated
      universe since Big Bang and therefore \f$ \tau=1/(aH) \f$
      (good approximation for most purposes) */
  pvecback_integration[pba->index_bi_tau] = 1./(a * pvecback[pba->index_bg_H]);

  /** - compute initial sound horizon, assuming \f$ c_s=1/\sqrt{3} \f$ initially */
  pvecback_integration[pba->index_bi_rs] = pvecback_integration[pba->index_bi_tau]/sqrt(3.);

  /** - set initial value of D and D' in RD. D and D' need only be set up to an overall constant, since they will later be re-normalized. From Ma&Bertschinger, one can derive D ~ (ktau)^2 at early times, from which one finds D'/D = 2 aH (assuming aH=1/tau during RD) */
  pvecback_integration[pba->index_bi_D] = 1.;
  pvecback_integration[pba->index_bi_D_prime] = 2.*a*pvecback[pba->index_bg_H];

  /** - return the value finally chosen for the initial log(a) */
  *loga_ini = log(a);

  return _SUCCESS_;

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x10b8, %rsp           # imm = 0x10B8
movq %r8, 0x68(%rsp)
movq %rcx, 0x10(%rsp)
movq %rdx, 0x70(%rsp)
movq %rsi, %rbx
movq %rdi, 0x58(%rsp)
movsd (%rdi), %xmm0
xorpd %xmm1, %xmm1
cmpw $0x1, 0x32a(%rsi)
jne 0x5a750
movl 0x70(%rbx), %eax
xorl %ecx, %ecx
movq %rbx, 0x78(%rsp)
testl %eax, %eax
jle 0x5a6e6
movl %ecx, 0x54(%rsp)
movsd 0x84d65(%rip), %xmm1    # 0xdf260
movapd %xmm1, %xmm2
movsd %xmm0, 0x18(%rsp)
divsd %xmm0, %xmm2
addsd 0x852d7(%rip), %xmm2    # 0xdf7e8
addsd %xmm1, %xmm2
xorpd %xmm1, %xmm1
movl $0x1, %r12d
xorl %r15d, %r15d
movsd %xmm2, 0x60(%rsp)
movsd %xmm1, 0x38(%rsp)
movq 0x340(%rbx), %rax
movq (%rax,%r15,8), %r14
movq 0x348(%rbx), %rax
movq (%rax,%r15,8), %r13
movq 0x368(%rbx), %rax
movslq (%rax,%r15,4), %rbp
movq 0x90(%rbx), %rax
movsd (%rax,%r15,8), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x378(%rbx), %rax
movsd (%rax,%r15,8), %xmm0
movaps %xmm0, 0x90(%rsp)
movapd %xmm2, %xmm0
movsd 0x87eb5(%rip), %xmm1    # 0xe2438
callq 0x8620
movsd %xmm0, 0x80(%rsp)
testq %rbp, %rbp
jle 0x5a63c
movsd 0x8(%rsp), %xmm2
mulsd %xmm2, %xmm2
movsd 0x60(%rsp), %xmm0
divsd %xmm0, %xmm2
divsd %xmm0, %xmm2
xorpd %xmm3, %xmm3
xorl %ebx, %ebx
movsd %xmm2, 0x8(%rsp)
movsd (%r14,%rbx,8), %xmm4
mulsd %xmm4, %xmm4
movapd %xmm2, %xmm0
addsd %xmm4, %xmm0
ucomisd 0x84c80(%rip), %xmm0    # 0xdf258
jb 0x5a5e0
sqrtsd %xmm0, %xmm0
jmp 0x5a603
movapd %xmm3, 0x40(%rsp)
movapd %xmm4, 0x20(%rsp)
callq 0x82b0
movapd 0x20(%rsp), %xmm4
movapd 0x40(%rsp), %xmm3
movsd 0x8(%rsp), %xmm2
movapd %xmm4, %xmm1
mulsd %xmm0, %xmm1
mulsd %xmm4, %xmm4
divsd 0x86069(%rip), %xmm4    # 0xe0680
divsd %xmm0, %xmm4
unpcklpd %xmm4, %xmm1            # xmm1 = xmm1[0],xmm4[0]
movsd (%r13,%rbx,8), %xmm0
unpcklpd %xmm0, %xmm0            # xmm0 = xmm0[0,0]
mulpd %xmm1, %xmm0
addpd %xmm0, %xmm3
incq %rbx
cmpq %rbx, %rbp
jne 0x5a5be
jmp 0x5a640
xorpd %xmm3, %xmm3
movapd 0x90(%rsp), %xmm2
mulsd 0x80(%rsp), %xmm2
unpcklpd %xmm2, %xmm2            # xmm2 = xmm2[0,0]
mulpd %xmm3, %xmm2
movapd %xmm2, %xmm0
unpckhpd %xmm2, %xmm0            # xmm0 = xmm0[1],xmm2[1]
movapd %xmm0, %xmm1
divsd %xmm2, %xmm0
addsd 0x89456(%rip), %xmm0    # 0xe3ac8
andpd 0x84bc6(%rip), %xmm0    # 0xdf240
movq 0x58(%rsp), %rax
ucomisd 0x50(%rax), %xmm0
mulsd 0x85ff4(%rip), %xmm1    # 0xe0680
movl $0x0, %eax
cmoval %eax, %r12d
movsd 0x38(%rsp), %xmm0
addsd %xmm1, %xmm0
movapd %xmm0, %xmm1
incq %r15
movq 0x78(%rsp), %rbx
movslq 0x70(%rbx), %rax
cmpq %rax, %r15
movsd 0x60(%rsp), %xmm2
jl 0x5a528
cmpl $0x1, %r12d
movsd 0x18(%rsp), %xmm0
movl 0x54(%rsp), %ecx
je 0x5a6ea
mulsd 0x84bba(%rip), %xmm0    # 0xdf290
incl %ecx
cmpl $0x2710, %ecx           # imm = 0x2710
jne 0x5a4e7
jmp 0x5a6f2
xorpd %xmm1, %xmm1
cmpl $0x2710, %ecx           # imm = 0x2710
jne 0x5a750
leaq 0x9f7e7(%rip), %rsi     # 0xf9ee0
leaq 0xb0(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30af0
leaq 0x84970(%rip), %rsi     # 0xdf082
leaq 0x87cbe(%rip), %rdx     # 0xe23d7
leaq 0x8b0(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30af0
addq $0xb84, %rbx            # imm = 0xB84
leaq 0x848f8(%rip), %rsi     # 0xdf034
leaq 0x9f77f(%rip), %rdx     # 0xf9ec2
movq %rbx, %rdi
movl $0x895, %ecx            # imm = 0x895
jmp 0x5ac35
movsd 0x10(%rbx), %xmm2
cmpw $0x1, 0x330(%rbx)
jne 0x5a764
addsd 0x28(%rbx), %xmm2
cmpw $0x1, 0x332(%rbx)
movsd %xmm1, 0x38(%rsp)
jne 0x5a779
addsd 0x40(%rbx), %xmm2
movsd (%rbx), %xmm1
mulsd %xmm1, %xmm1
movsd %xmm2, 0x8(%rsp)
mulsd %xmm2, %xmm1
movsd %xmm1, 0x40(%rsp)
movsd 0x87c9f(%rip), %xmm1    # 0xe2438
movsd %xmm0, 0x18(%rsp)
callq 0x8620
movsd 0x40(%rsp), %xmm1
divsd %xmm0, %xmm1
movapd %xmm1, %xmm0
movzwl 0x324(%rbx), %eax
cmpw $0x1, 0x32a(%rbx)
jne 0x5a7c9
addsd 0x38(%rsp), %xmm0
movsd %xmm0, 0x40(%rsp)
movq 0x10(%rsp), %rsi
cmpw $0x1, %ax
jne 0x5a83d
movsd (%rbx), %xmm0
movsd 0x58(%rbx), %xmm1
mulsd %xmm0, %xmm1
mulsd %xmm0, %xmm1
movsd %xmm1, 0x20(%rsp)
movsd 0x87c87(%rip), %xmm1    # 0xe2480
movsd 0x18(%rsp), %xmm0
callq 0x8620
movq 0x10(%rsp), %rsi
mulsd 0x20(%rsp), %xmm0
movslq 0x2f0(%rbx), %rax
movsd %xmm0, (%rsi,%rax,8)
cmpw $0x4, 0xb82(%rbx)
jl 0x5a83d
movsd 0x58(%rbx), %xmm1
leaq 0x9f705(%rip), %rdi     # 0xf9f36
movb $0x2, %al
callq 0x8030
movq 0x10(%rsp), %rsi
cmpw $0x1, 0x326(%rbx)
movsd 0x18(%rsp), %xmm0
jne 0x5a91f
xorpd %xmm1, %xmm1
cmpw $0x1, 0x324(%rbx)
jne 0x5a913
movsd 0x85e05(%rip), %xmm1    # 0xe0670
movq %rsi, %r14
callq 0x8620
mulsd 0x87bcd(%rip), %xmm0    # 0xe2448
movslq 0x2f0(%rbx), %rax
mulsd (%r14,%rax,8), %xmm0
mulsd 0x60(%rbx), %xmm0
movsd %xmm0, 0x20(%rsp)
movsd (%rbx), %xmm0
movsd 0x85de1(%rip), %xmm1    # 0xe0680
callq 0x8620
movsd 0x20(%rsp), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, 0x20(%rsp)
xorpd %xmm1, %xmm1
movsd 0x8(%rsp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x5a8ca
sqrtsd %xmm0, %xmm0
jmp 0x5a8cf
callq 0x82b0
movsd 0x20(%rsp), %xmm1
divsd %xmm0, %xmm1
movsd (%rbx), %xmm0
mulsd %xmm0, %xmm1
mulsd %xmm0, %xmm1
movsd %xmm1, 0x20(%rsp)
movsd 0x87b45(%rip), %xmm1    # 0xe2438
movsd 0x18(%rsp), %xmm0
callq 0x8620
movsd 0x20(%rsp), %xmm1
divsd %xmm0, %xmm1
movsd 0x18(%rsp), %xmm0
movq 0x10(%rsp), %rsi
movslq 0x2f4(%rbx), %rax
movsd %xmm1, (%rsi,%rax,8)
cmpw $0x1, 0x32e(%rbx)
jne 0x5a9f0
movsd (%rbx), %xmm1
movsd %xmm1, 0x8(%rsp)
movsd 0x100(%rbx), %xmm1
movsd %xmm1, 0x20(%rsp)
leaq 0xa8(%rsp), %rsi
leaq 0xa0(%rsp), %rdx
leaq 0x88(%rsp), %rcx
movq %rbx, %rdi
callq 0x56265
testl %eax, %eax
je 0x5a9b1
addq $0xb84, %rbx            # imm = 0xB84
leaq 0x84a79(%rip), %rsi     # 0xdf3f0
leaq 0x9f5d5(%rip), %rdx     # 0xf9f53
leaq 0xb0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30af0
leaq 0x8469a(%rip), %rsi     # 0xdf034
leaq 0x9f521(%rip), %rdx     # 0xf9ec2
movq %rbx, %rdi
movl $0x8c6, %ecx            # imm = 0x8C6
movq %r14, %r8
jmp 0x5ac38
movsd 0x8(%rsp), %xmm0
mulsd %xmm0, %xmm0
movsd 0x20(%rsp), %xmm1
mulsd %xmm0, %xmm1
movsd %xmm1, 0x20(%rsp)
movsd 0x88(%rsp), %xmm0
callq 0x8670
mulsd 0x20(%rsp), %xmm0
movslq 0x2f8(%rbx), %rax
movq 0x10(%rsp), %rsi
movsd %xmm0, (%rsi,%rax,8)
cmpw $0x1, 0x328(%rbx)
jne 0x5ac49
cmpw $0x1, 0x150(%rbx)
jne 0x5ab50
movq 0x148(%rbx), %rax
movsd (%rax), %xmm1
movsd 0x84dc9(%rip), %xmm3    # 0xdf7e8
movsd 0x40(%rsp), %xmm0
mulsd 0x87a0b(%rip), %xmm0    # 0xe2438
movapd %xmm1, %xmm2
mulsd %xmm1, %xmm2
mulsd 0x85c43(%rip), %xmm2    # 0xe0680
movsd %xmm1, 0x8(%rsp)
divsd %xmm1, %xmm3
movsd %xmm3, 0x20(%rsp)
addsd 0x9d9f3(%rip), %xmm2    # 0xf8448
movsd %xmm2, 0x40(%rsp)
divsd %xmm2, %xmm0
callq 0x82c0
movapd %xmm0, %xmm1
mulsd 0x20(%rsp), %xmm1
mulsd 0x158(%rbx), %xmm1
movslq 0x2fc(%rbx), %rax
movq 0x10(%rsp), %rcx
movsd %xmm1, (%rcx,%rax,8)
xorpd %xmm0, %xmm0
ucomisd 0x40(%rsp), %xmm0
jbe 0x5aad5
movsd 0x847c5(%rip), %xmm1    # 0xdf260
divsd 0x8(%rsp), %xmm1
movsd %xmm1, (%rcx,%rax,8)
cmpw $0x0, 0xb82(%rbx)
jle 0x5aad5
leaq 0x9f4d9(%rip), %rdi     # 0xf9f90
movsd 0x8(%rsp), %xmm0
movb $0x1, %al
callq 0x8030
movslq 0x2fc(%rbx), %rax
movq 0x10(%rsp), %rcx
movsd (%rcx,%rax,8), %xmm1
movsd %xmm1, 0x38(%rsp)
movsd 0x18(%rsp), %xmm0
addsd %xmm0, %xmm0
movsd %xmm0, 0x40(%rsp)
movq 0x148(%rbx), %rax
movsd (%rax), %xmm0
xorpd 0x84732(%rip), %xmm0    # 0xdf230
mulsd %xmm1, %xmm0
callq 0x8670
movsd %xmm0, 0x20(%rsp)
movq 0x148(%rbx), %rax
movsd 0x8(%rax), %xmm1
movsd 0x10(%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movsd 0x38(%rsp), %xmm0
subsd 0x18(%rax), %xmm0
callq 0x8620
addsd 0x8(%rsp), %xmm0
mulsd 0x20(%rsp), %xmm0
ucomisd 0x84710(%rip), %xmm0    # 0xdf258
jb 0x5ab8b
sqrtsd %xmm0, %xmm0
jmp 0x5ab90
leaq 0x9fe0f(%rip), %rdi     # 0xfa966
callq 0x8510
movsd 0x158(%rbx), %xmm0
movslq 0x2fc(%rbx), %rax
movq 0x10(%rsp), %rsi
movsd %xmm0, (%rsi,%rax,8)
movsd 0x160(%rbx), %xmm0
movslq 0x300(%rbx), %rcx
movsd %xmm0, (%rsi,%rcx,8)
jmp 0x5abba
callq 0x82b0
movsd 0x40(%rsp), %xmm1
mulsd %xmm0, %xmm1
mulsd 0x160(%rbx), %xmm1
movslq 0x300(%rbx), %rax
movq 0x10(%rsp), %rsi
movsd %xmm1, (%rsi,%rax,8)
movslq 0x2fc(%rbx), %rax
movq (%rsi,%rax,8), %xmm0
movq %xmm0, %rax
btrq $0x3f, %rax
movabsq $0x7ff0000000000000, %rcx # imm = 0x7FF0000000000000
cmpq %rcx, %rax
jl 0x5ac49
leaq 0x9f3d9(%rip), %rsi     # 0xf9fb8
leaq 0xb0(%rsp), %r14
movq %r14, %rdi
movdqa %xmm0, %xmm1
movb $0x2, %al
callq 0x30af0
leaq 0x84486(%rip), %rsi     # 0xdf082
leaq 0x9f3f1(%rip), %rdx     # 0xf9ff4
leaq 0x8b0(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30af0
addq $0xb84, %rbx            # imm = 0xB84
leaq 0x8440e(%rip), %rsi     # 0xdf034
leaq 0x9f295(%rip), %rdx     # 0xf9ec2
movq %rbx, %rdi
movl $0x8f4, %ecx            # imm = 0x8F4
movq %r15, %r8
xorl %eax, %eax
callq 0x30af0
movl $0x1, %ebp
jmp 0x5ae58
movl $0x1, %ebp
movq %rbx, %rdi
movsd 0x18(%rsp), %xmm0
movl $0x1, %edx
movq 0x70(%rsp), %r14
movq %r14, %rcx
callq 0x550ea
testl %eax, %eax
je 0x5acb5
addq $0xb84, %rbx            # imm = 0xB84
leaq 0x84775(%rip), %rsi     # 0xdf3f0
leaq 0x9f3e3(%rip), %rdx     # 0xfa065
leaq 0xb0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30af0
leaq 0x84396(%rip), %rsi     # 0xdf034
leaq 0x9f21d(%rip), %rdx     # 0xf9ec2
movq %rbx, %rdi
movl $0x8fa, %ecx            # imm = 0x8FA
movq %r14, %r8
jmp 0x5ae51
movslq 0x278(%rbx), %rax
movsd (%r14,%rax,8), %xmm0
movsd 0x84b1e(%rip), %xmm1    # 0xdf7e8
addsd %xmm0, %xmm1
andpd 0x8456a(%rip), %xmm1    # 0xdf240
movq 0x58(%rsp), %rax
ucomisd 0x20(%rax), %xmm1
jbe 0x5ad40
leaq 0x9f3c6(%rip), %rsi     # 0xfa0af
leaq 0xb0(%rsp), %r14
movq %r14, %rdi
movb $0x1, %al
callq 0x30af0
leaq 0x84380(%rip), %rsi     # 0xdf082
leaq 0x9f41c(%rip), %rdx     # 0xfa125
leaq 0x8b0(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30af0
addq $0xb84, %rbx            # imm = 0xB84
leaq 0x84308(%rip), %rsi     # 0xdf034
leaq 0x9f18f(%rip), %rdx     # 0xf9ec2
movq %rbx, %rdi
movl $0x901, %ecx            # imm = 0x901
jmp 0x5ae4e
movslq 0x20c(%rbx), %rax
movsd (%r14,%rax,8), %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
jae 0x5adf5
addsd %xmm0, %xmm0
movsd 0x844f9(%rip), %xmm1    # 0xdf260
movapd %xmm1, %xmm2
divsd %xmm0, %xmm2
movslq 0x304(%rbx), %rcx
movq 0x10(%rsp), %rsi
movsd %xmm2, (%rsi,%rcx,8)
movsd (%r14,%rax,8), %xmm2
movsd 0x18(%rsp), %xmm0
mulsd %xmm0, %xmm2
divsd %xmm2, %xmm1
movslq 0x30c(%rbx), %rcx
movsd %xmm1, (%rsi,%rcx,8)
divsd 0x9d6a8(%rip), %xmm1    # 0xf8450
movslq 0x308(%rbx), %rcx
movsd %xmm1, (%rsi,%rcx,8)
movslq 0x310(%rbx), %rcx
movabsq $0x3ff0000000000000, %rdx # imm = 0x3FF0000000000000
movq %rdx, (%rsi,%rcx,8)
movapd %xmm0, %xmm1
addsd %xmm0, %xmm1
mulsd (%r14,%rax,8), %xmm1
movslq 0x314(%rbx), %rax
movsd %xmm1, (%rsi,%rax,8)
callq 0x82c0
movq 0x68(%rsp), %rax
movsd %xmm0, (%rax)
xorl %ebp, %ebp
jmp 0x5ae58
leaq 0x9f36d(%rip), %rsi     # 0xfa169
leaq 0xb0(%rsp), %r14
movq %r14, %rdi
movb $0x1, %al
callq 0x30af0
leaq 0x8426d(%rip), %rsi     # 0xdf082
leaq 0x9f371(%rip), %rdx     # 0xfa18d
leaq 0x8b0(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30af0
addq $0xb84, %rbx            # imm = 0xB84
leaq 0x841f5(%rip), %rsi     # 0xdf034
leaq 0x9f07c(%rip), %rdx     # 0xf9ec2
movq %rbx, %rdi
movl $0x909, %ecx            # imm = 0x909
movq %r15, %r8
xorl %eax, %eax
callq 0x30af0
movl %ebp, %eax
addq $0x10b8, %rsp           # imm = 0x10B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq