// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../source/thermodynamics.c
// Function: thermodynamics_workspace_init
int thermodynamics_workspace_init(
                                  struct precision * ppr,
                                  struct background * pba,
                                  struct thermodynamics * pth,
                                  struct thermo_workspace * ptw
                                  ) {

  /** Summary: */

  /** Define local variables */
  int index_ap;
  /* for varying fundamental constants */
  double alpha = 1., me = 1.;

  /** - number of z values */
  ptw->Nz_reco_lin = ppr->thermo_Nz_lin;
  ptw->Nz_reco_log = ppr->thermo_Nz_log;
  ptw->Nz_reco = ptw->Nz_reco_lin + ptw->Nz_reco_log;
  ptw->Nz_reio = ppr->reionization_z_start_max / ppr->reionization_sampling;
  ptw->Nz_tot = ptw->Nz_reio + ptw->Nz_reco;

  /** - relevant cosmological parameters */

  /* primordial helium mass fraction */
  ptw->YHe = pth->YHe;
  /* primordial helium-to-hydrogen nucleon ratio */
  ptw->fHe = pth->fHe;
  /* Hubble parameter today in SI units */
  ptw->SIunit_H0 = pba->H0 * _c_ / _Mpc_over_m_;
  /* H number density today in SI units*/
  ptw->SIunit_nH0 = 3.*ptw->SIunit_H0*ptw->SIunit_H0*pba->Omega0_b/(8.*_PI_*_G_*_m_H_)*(1.-ptw->YHe);
  /* CMB temperature today in Kelvin */
  ptw->Tcmb = pba->T_cmb;

  /** - relevant constants */

  /* Prefactor in non-relativistic number density for temperature -- (2*pi*m_e) and unit conversion */
  ptw->const_NR_numberdens = 2.*_PI_*(_m_e_/_h_P_)*(_k_B_/_h_P_);
  /* Ionization energy for HI -- temperature equivalent in Kelvin */
  ptw->const_Tion_H = _h_P_*_c_*_L_H_ion_/_k_B_;
  /* Ionization energy for HeI -- temperature equivalent in Kelvin */
  ptw->const_Tion_HeI = _h_P_*_c_*_L_He1_ion_/_k_B_;
  /* Ionization energy for HeII -- temperature equivalent in Kelvin */
  ptw->const_Tion_HeII = _h_P_*_c_*_L_He2_ion_/_k_B_;

  /* the field reionization_optical_depth is computed and filled later */

  /** - Allocate and initialize differential equation workspace */
  class_alloc(ptw->ptdw,
              sizeof(struct thermo_diffeq_workspace),
              pth->error_message);

  // Initialize ionisation fraction.
  ptw->ptdw->x_reio = 1.+2.*ptw->fHe;
  ptw->ptdw->x_noreio = 1.+2.*ptw->fHe;

  /** - define approximations */
  index_ap=0;
  /* Approximations have to appear in chronological order here! */
  class_define_index(ptw->ptdw->index_ap_idmtca,ptw->has_ap_idmtca,index_ap,1); //DM tight coupling (assumed always before any recombination phases)
  class_define_index(ptw->ptdw->index_ap_brec,_TRUE_,index_ap,1); // before H- and He-recombination
  class_define_index(ptw->ptdw->index_ap_He1,_TRUE_,index_ap,1);  // during 1st He-recombination (HeIII)
  class_define_index(ptw->ptdw->index_ap_He1f,_TRUE_,index_ap,1); // in between 1st and 2nd He recombination
  class_define_index(ptw->ptdw->index_ap_He2,_TRUE_,index_ap,1);  // beginning of 2nd He-recombination (HeII)
  class_define_index(ptw->ptdw->index_ap_H,_TRUE_,index_ap,1);    // beginning of H-recombination (HI)
  class_define_index(ptw->ptdw->index_ap_frec,_TRUE_,index_ap,1); // during and after full H- and HeII-recombination
  class_define_index(ptw->ptdw->index_ap_reio,_TRUE_,index_ap,1); // during reionization
  ptw->ptdw->ap_size=index_ap;

  /* Set correct initial approximation scheme */
  ptw->ptdw->ap_current = ptw->ptdw->index_ap_brec;
  if (ptw->has_ap_idmtca == _TRUE_)
    ptw->ptdw->ap_current = ptw->ptdw->index_ap_idmtca;

  /** - store all ending redshifts for each approximation */
  class_alloc(ptw->ptdw->ap_z_limits,ptw->ptdw->ap_size*sizeof(double),pth->error_message);

  if (ptw->has_ap_idmtca == _TRUE_)
    ptw->ptdw->ap_z_limits[ptw->ptdw->index_ap_idmtca] = ptw->z_ap_idmtca;
  ptw->ptdw->ap_z_limits[ptw->ptdw->index_ap_brec] =
    ppr->recfast_z_He_1+ppr->recfast_delta_z_He_1; // beginning 1st He-recombination
  ptw->ptdw->ap_z_limits[ptw->ptdw->index_ap_He1] =
    ppr->recfast_z_He_2+ppr->recfast_delta_z_He_2; // end 1st He-recombination
  ptw->ptdw->ap_z_limits[ptw->ptdw->index_ap_He1f] =
    ppr->recfast_z_He_3+ppr->recfast_delta_z_He_3; // beginning 2nd He-recombination
  ptw->ptdw->ap_z_limits[ptw->ptdw->index_ap_He2] =
    ppr->recfast_z_early_H_recombination;          // beginning early H-recombination
  ptw->ptdw->ap_z_limits[ptw->ptdw->index_ap_H] =
    ppr->recfast_z_full_H_recombination;           // beginning full recombination equations
  ptw->ptdw->ap_z_limits[ptw->ptdw->index_ap_frec] =
    ppr->reionization_z_start_max;                 // beginning reionization
  ptw->ptdw->ap_z_limits[ptw->ptdw->index_ap_reio] = 0.0; // today

  /** - Rescale these redshifts in case of varying fundamental constants */
  if (pth->has_varconst == _TRUE_) {
    for (index_ap=0;index_ap<ptw->ptdw->ap_size;++index_ap){
      class_call(background_varconst_of_z(pba,ptw->ptdw->ap_z_limits[index_ap], &alpha, &me),
                 pba->error_message,
                 pth->error_message);
      ptw->ptdw->ap_z_limits[index_ap]*=me*alpha*alpha;
    }
  }

  /** - store smoothing deltas for transitions at the beginning of each aproximation */
  class_alloc(ptw->ptdw->ap_z_limits_delta,ptw->ptdw->ap_size*sizeof(double),pth->error_message);

  if (ptw->has_ap_idmtca == _TRUE_)
    ptw->ptdw->ap_z_limits_delta[ptw->ptdw->index_ap_idmtca] = 0.;
  ptw->ptdw->ap_z_limits_delta[ptw->ptdw->index_ap_brec] = 0.;
  ptw->ptdw->ap_z_limits_delta[ptw->ptdw->index_ap_He1] = ppr->recfast_delta_z_He_1;
  ptw->ptdw->ap_z_limits_delta[ptw->ptdw->index_ap_He1f] = ppr->recfast_delta_z_He_2;
  ptw->ptdw->ap_z_limits_delta[ptw->ptdw->index_ap_He2] = ppr->recfast_delta_z_He_3;
  ptw->ptdw->ap_z_limits_delta[ptw->ptdw->index_ap_H] = ppr->recfast_delta_z_early_H_recombination;
  ptw->ptdw->ap_z_limits_delta[ptw->ptdw->index_ap_frec] = ppr->recfast_delta_z_full_H_recombination;
  ptw->ptdw->ap_z_limits_delta[ptw->ptdw->index_ap_reio] = ppr->recfast_delta_z_reio;

  /* With recombination computed by HyRec or Recfast, we need to allocate and initialize the wrappers */

  switch (pth->recombination) {

  case hyrec:
    class_alloc(ptw->ptdw->phyrec,
                sizeof(struct thermohyrec),
                pth->error_message);

    ptw->ptdw->phyrec->thermohyrec_verbose = pth->hyrec_verbose;
    class_call(thermodynamics_hyrec_init(ppr,pba,pth,ptw->SIunit_nH0,pba->T_cmb,ptw->fHe, ptw->ptdw->ap_z_limits[ptw->ptdw->index_ap_brec],ptw->ptdw->phyrec),
               ptw->ptdw->phyrec->error_message,
               pth->error_message);
    break;

  case recfast:
    class_alloc(ptw->ptdw->precfast,
                sizeof(struct thermorecfast),
                pth->error_message);

    class_call(recfast_init(ppr,pba,pth,ptw->ptdw->precfast,pth->recfast_photoion_mode,ptw->fHe),
               ptw->ptdw->precfast->error_message,
               pth->error_message);

    break;
  }

  /** - Allocate reionisation parameter workspace */
  class_alloc(ptw->ptrp,
              sizeof(struct thermo_reionization_parameters),
              pth->error_message);

  return _SUCCESS_;

}

// Assembly:
subq $0x48a8, %rsp           # imm = 0x48A8
movq %rdi, 0x4898(%rsp)
movq %rsi, 0x4890(%rsp)
movq %rdx, 0x4888(%rsp)
movq %rcx, 0x4880(%rsp)
movsd 0x11ccd9(%rip), %xmm0   # 0x1d2248
movsd %xmm0, 0x4870(%rsp)
movsd 0x11ccc8(%rip), %xmm0   # 0x1d2248
movsd %xmm0, 0x4868(%rsp)
movq 0x4898(%rsp), %rax
movl 0x1a8(%rax), %ecx
movq 0x4880(%rsp), %rax
movl %ecx, (%rax)
movq 0x4898(%rsp), %rax
movl 0x1ac(%rax), %ecx
movq 0x4880(%rsp), %rax
movl %ecx, 0x4(%rax)
movq 0x4880(%rsp), %rax
movl (%rax), %ecx
movq 0x4880(%rsp), %rax
addl 0x4(%rax), %ecx
movq 0x4880(%rsp), %rax
movl %ecx, 0x8(%rax)
movq 0x4898(%rsp), %rax
movsd 0x3e8(%rax), %xmm0
movq 0x4898(%rsp), %rax
divsd 0x3f0(%rax), %xmm0
cvttsd2si %xmm0, %ecx
movq 0x4880(%rsp), %rax
movl %ecx, 0xc(%rax)
movq 0x4880(%rsp), %rax
movl 0xc(%rax), %ecx
movq 0x4880(%rsp), %rax
addl 0x8(%rax), %ecx
movq 0x4880(%rsp), %rax
movl %ecx, 0x10(%rax)
movq 0x4888(%rsp), %rax
movsd (%rax), %xmm0
movq 0x4880(%rsp), %rax
movsd %xmm0, 0x18(%rax)
movq 0x4888(%rsp), %rax
movsd 0x1000(%rax), %xmm0
movq 0x4880(%rsp), %rax
movsd %xmm0, 0x20(%rax)
movq 0x4890(%rsp), %rax
movsd 0x120fc0(%rip), %xmm0   # 0x1d6630
mulsd (%rax), %xmm0
movsd 0x120fe4(%rip), %xmm1   # 0x1d6660
divsd %xmm1, %xmm0
movq 0x4880(%rsp), %rax
movsd %xmm0, 0x28(%rax)
movq 0x4880(%rsp), %rax
movsd 0x11dffb(%rip), %xmm0   # 0x1d3698
mulsd 0x28(%rax), %xmm0
movq 0x4880(%rsp), %rax
mulsd 0x28(%rax), %xmm0
movq 0x4890(%rsp), %rax
mulsd 0x20(%rax), %xmm0
movsd 0x13be0c(%rip), %xmm1   # 0x1f14d0
divsd %xmm1, %xmm0
movq 0x4880(%rsp), %rax
movsd 0x11cb70(%rip), %xmm1   # 0x1d2248
subsd 0x18(%rax), %xmm1
mulsd %xmm1, %xmm0
movq 0x4880(%rsp), %rax
movsd %xmm0, 0x30(%rax)
movq 0x4890(%rsp), %rax
movsd 0x18(%rax), %xmm0
movq 0x4880(%rsp), %rax
movsd %xmm0, 0x38(%rax)
movq 0x4880(%rsp), %rax
movsd 0x13be20(%rip), %xmm0   # 0x1f1538
movsd %xmm0, 0x40(%rax)
movq 0x4880(%rsp), %rax
movsd 0x13be03(%rip), %xmm0   # 0x1f1530
movsd %xmm0, 0x48(%rax)
movq 0x4880(%rsp), %rax
movsd 0x13bde6(%rip), %xmm0   # 0x1f1528
movsd %xmm0, 0x50(%rax)
movq 0x4880(%rsp), %rax
movsd 0x13bdc9(%rip), %xmm0   # 0x1f1520
movsd %xmm0, 0x58(%rax)
movl $0xd0, %edi
callq 0x8460
movq %rax, %rcx
movq 0x4880(%rsp), %rax
movq %rcx, 0x80(%rax)
movq 0x4880(%rsp), %rax
cmpq $0x0, 0x80(%rax)
jne 0xb57fa
movl $0xd0, 0x4864(%rsp)
leaq 0x4060(%rsp), %rdi
movl 0x4864(%rsp), %ecx
leaq 0x11c859(%rip), %rsi    # 0x1d2004
leaq 0x13ccd7(%rip), %rdx    # 0x1f2489
movb $0x0, %al
callq 0x5b9c0
movq 0x4888(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x4060(%rsp), %r8
leaq 0x11c85d(%rip), %rsi    # 0x1d2034
leaq 0x13ccb5(%rip), %rdx    # 0x1f2493
movl $0x33e, %ecx            # imm = 0x33E
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x48a4(%rsp)
jmp 0xb652f
movq 0x4880(%rsp), %rax
movsd 0x20(%rax), %xmm0
addsd %xmm0, %xmm0
movsd 0x11ca35(%rip), %xmm1   # 0x1d2248
addsd %xmm1, %xmm0
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movsd %xmm0, 0x18(%rax)
movq 0x4880(%rsp), %rax
movsd 0x20(%rax), %xmm0
addsd %xmm0, %xmm0
movsd 0x11ca04(%rip), %xmm1   # 0x1d2248
addsd %xmm1, %xmm0
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movsd %xmm0, 0x10(%rax)
movl $0x0, 0x487c(%rsp)
movq 0x4880(%rsp), %rax
cmpw $0x0, 0x60(%rax)
je 0xb58a0
movl 0x487c(%rsp), %ecx
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movl %ecx, 0x70(%rax)
movl 0x487c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x487c(%rsp)
movl 0x487c(%rsp), %ecx
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movl %ecx, 0x74(%rax)
movl 0x487c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x487c(%rsp)
movl 0x487c(%rsp), %ecx
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movl %ecx, 0x78(%rax)
movl 0x487c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x487c(%rsp)
movl 0x487c(%rsp), %ecx
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movl %ecx, 0x7c(%rax)
movl 0x487c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x487c(%rsp)
movl 0x487c(%rsp), %ecx
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movl %ecx, 0x80(%rax)
movl 0x487c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x487c(%rsp)
movl 0x487c(%rsp), %ecx
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movl %ecx, 0x84(%rax)
movl 0x487c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x487c(%rsp)
movl 0x487c(%rsp), %ecx
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movl %ecx, 0x88(%rax)
movl 0x487c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x487c(%rsp)
movl 0x487c(%rsp), %ecx
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movl %ecx, 0x8c(%rax)
movl 0x487c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x487c(%rsp)
movl 0x487c(%rsp), %ecx
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movl %ecx, 0x94(%rax)
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movl 0x74(%rax), %ecx
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movl %ecx, 0x90(%rax)
movq 0x4880(%rsp), %rax
movswl 0x60(%rax), %eax
cmpl $0x1, %eax
jne 0xb5a4d
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movl 0x70(%rax), %ecx
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movl %ecx, 0x90(%rax)
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movslq 0x94(%rax), %rdi
shlq $0x3, %rdi
callq 0x8460
movq %rax, %rcx
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq %rcx, 0xa0(%rax)
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0xa0(%rax)
jne 0xb5b28
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movslq 0x94(%rax), %rax
shlq $0x3, %rax
movl %eax, 0x405c(%rsp)
leaq 0x3850(%rsp), %rdi
movl 0x405c(%rsp), %ecx
leaq 0x11c52b(%rip), %rsi    # 0x1d2004
leaq 0x13c9d1(%rip), %rdx    # 0x1f24b1
movb $0x0, %al
callq 0x5b9c0
movq 0x4888(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x3850(%rsp), %r8
leaq 0x11c52f(%rip), %rsi    # 0x1d2034
leaq 0x13c987(%rip), %rdx    # 0x1f2493
movl $0x357, %ecx            # imm = 0x357
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x48a4(%rsp)
jmp 0xb652f
movq 0x4880(%rsp), %rax
movswl 0x60(%rax), %eax
cmpl $0x1, %eax
jne 0xb5b74
movq 0x4880(%rsp), %rax
movsd 0x68(%rax), %xmm0
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq 0xa0(%rax), %rax
movq 0x4880(%rsp), %rcx
movq 0x80(%rcx), %rcx
movslq 0x70(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x4898(%rsp), %rax
movsd 0x258(%rax), %xmm0
movq 0x4898(%rsp), %rax
addsd 0x260(%rax), %xmm0
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq 0xa0(%rax), %rax
movq 0x4880(%rsp), %rcx
movq 0x80(%rcx), %rcx
movslq 0x74(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x4898(%rsp), %rax
movsd 0x268(%rax), %xmm0
movq 0x4898(%rsp), %rax
addsd 0x270(%rax), %xmm0
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq 0xa0(%rax), %rax
movq 0x4880(%rsp), %rcx
movq 0x80(%rcx), %rcx
movslq 0x78(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x4898(%rsp), %rax
movsd 0x278(%rax), %xmm0
movq 0x4898(%rsp), %rax
addsd 0x280(%rax), %xmm0
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq 0xa0(%rax), %rax
movq 0x4880(%rsp), %rcx
movq 0x80(%rcx), %rcx
movslq 0x7c(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x4898(%rsp), %rax
movsd 0x288(%rax), %xmm0
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq 0xa0(%rax), %rax
movq 0x4880(%rsp), %rcx
movq 0x80(%rcx), %rcx
movslq 0x80(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x4898(%rsp), %rax
movsd 0x298(%rax), %xmm0
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq 0xa0(%rax), %rax
movq 0x4880(%rsp), %rcx
movq 0x80(%rcx), %rcx
movslq 0x84(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x4898(%rsp), %rax
movsd 0x3e8(%rax), %xmm0
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq 0xa0(%rax), %rax
movq 0x4880(%rsp), %rcx
movq 0x80(%rcx), %rcx
movslq 0x88(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq 0xa0(%rax), %rax
movq 0x4880(%rsp), %rcx
movq 0x80(%rcx), %rcx
movslq 0x8c(%rcx), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq 0x4888(%rsp), %rax
movswl 0xe78(%rax), %eax
cmpl $0x1, %eax
jne 0xb5ea7
movl $0x0, 0x487c(%rsp)
movl 0x487c(%rsp), %eax
movq 0x4880(%rsp), %rcx
movq 0x80(%rcx), %rcx
cmpl 0x94(%rcx), %eax
jge 0xb5ea5
movq 0x4890(%rsp), %rdi
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq 0xa0(%rax), %rax
movslq 0x487c(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
leaq 0x4870(%rsp), %rsi
leaq 0x4868(%rsp), %rdx
callq 0xa2870
cmpl $0x1, %eax
jne 0xb5e4c
leaq 0x3050(%rsp), %rdi
movq 0x4890(%rsp), %rcx
addq $0xd1c, %rcx            # imm = 0xD1C
leaq 0x11c5db(%rip), %rsi    # 0x1d23d8
leaq 0x13c6c4(%rip), %rdx    # 0x1f24c8
movb $0x0, %al
callq 0x5b9c0
movq 0x4888(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x3050(%rsp), %r8
leaq 0x11c20b(%rip), %rsi    # 0x1d2034
leaq 0x13c663(%rip), %rdx    # 0x1f2493
movl $0x36e, %ecx            # imm = 0x36E
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x48a4(%rsp)
jmp 0xb652f
movsd 0x4868(%rsp), %xmm0
mulsd 0x4870(%rsp), %xmm0
mulsd 0x4870(%rsp), %xmm0
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq 0xa0(%rax), %rax
movslq 0x487c(%rsp), %rcx
mulsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl 0x487c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x487c(%rsp)
jmp 0xb5d78
jmp 0xb5ea7
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movslq 0x94(%rax), %rdi
shlq $0x3, %rdi
callq 0x8460
movq %rax, %rcx
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq %rcx, 0xa8(%rax)
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0xa8(%rax)
jne 0xb5f82
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movslq 0x94(%rax), %rax
shlq $0x3, %rax
movl %eax, 0x304c(%rsp)
leaq 0x2840(%rsp), %rdi
movl 0x304c(%rsp), %ecx
leaq 0x11c0d1(%rip), %rsi    # 0x1d2004
leaq 0x13c5da(%rip), %rdx    # 0x1f2514
movb $0x0, %al
callq 0x5b9c0
movq 0x4888(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x2840(%rsp), %r8
leaq 0x11c0d5(%rip), %rsi    # 0x1d2034
leaq 0x13c52d(%rip), %rdx    # 0x1f2493
movl $0x374, %ecx            # imm = 0x374
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x48a4(%rsp)
jmp 0xb652f
movq 0x4880(%rsp), %rax
movswl 0x60(%rax), %eax
cmpl $0x1, %eax
jne 0xb5fc4
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq 0xa8(%rax), %rax
movq 0x4880(%rsp), %rcx
movq 0x80(%rcx), %rcx
movslq 0x70(%rcx), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rcx
movq 0xa8(%rcx), %rax
movslq 0x74(%rcx), %rcx
movq $0x0, (%rax,%rcx,8)
movq 0x4898(%rsp), %rax
movsd 0x260(%rax), %xmm0
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rcx
movq 0xa8(%rcx), %rax
movslq 0x78(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x4898(%rsp), %rax
movsd 0x270(%rax), %xmm0
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rcx
movq 0xa8(%rcx), %rax
movslq 0x7c(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x4898(%rsp), %rax
movsd 0x280(%rax), %xmm0
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rcx
movq 0xa8(%rcx), %rax
movslq 0x80(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x4898(%rsp), %rax
movsd 0x290(%rax), %xmm0
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rcx
movq 0xa8(%rcx), %rax
movslq 0x84(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x4898(%rsp), %rax
movsd 0x2a0(%rax), %xmm0
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rcx
movq 0xa8(%rcx), %rax
movslq 0x88(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x4898(%rsp), %rax
movsd 0x2a8(%rax), %xmm0
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rcx
movq 0xa8(%rcx), %rax
movslq 0x8c(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x4888(%rsp), %rax
movl 0x10(%rax), %eax
movl %eax, 0xc(%rsp)
testl %eax, %eax
je 0xb6315
jmp 0xb6125
movl 0xc(%rsp), %eax
subl $0x1, %eax
jne 0xb648f
jmp 0xb6134
movl $0x828, %edi            # imm = 0x828
callq 0x8460
movq %rax, %rcx
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq %rcx, 0xc0(%rax)
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0xc0(%rax)
jne 0xb61e0
movl $0x828, 0x283c(%rsp) # imm = 0x828
leaq 0x2030(%rsp), %rdi
movl 0x283c(%rsp), %ecx
leaq 0x11be73(%rip), %rsi    # 0x1d2004
leaq 0x13c399(%rip), %rdx    # 0x1f2531
movb $0x0, %al
callq 0x5b9c0
movq 0x4888(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x2030(%rsp), %r8
leaq 0x11be77(%rip), %rsi    # 0x1d2034
leaq 0x13c2cf(%rip), %rdx    # 0x1f2493
movl $0x387, %ecx            # imm = 0x387
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x48a4(%rsp)
jmp 0xb652f
movq 0x4888(%rsp), %rax
movswl 0x1062(%rax), %ecx
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq 0xc0(%rax), %rax
movl %ecx, 0x820(%rax)
movq 0x4898(%rsp), %rdi
movq 0x4890(%rsp), %rsi
movq 0x4888(%rsp), %rdx
movq 0x4880(%rsp), %rax
movsd 0x30(%rax), %xmm0
movq 0x4890(%rsp), %rax
movsd 0x18(%rax), %xmm1
movq 0x4880(%rsp), %rax
movsd 0x20(%rax), %xmm2
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq 0xa0(%rax), %rax
movq 0x4880(%rsp), %rcx
movq 0x80(%rcx), %rcx
movslq 0x74(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm3
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq 0xc0(%rax), %rcx
callq 0x1b36e0
cmpl $0x1, %eax
jne 0xb6310
leaq 0x1830(%rsp), %rdi
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq 0xc0(%rax), %rcx
addq $0x20, %rcx
leaq 0x11c117(%rip), %rsi    # 0x1d23d8
leaq 0x13c27b(%rip), %rdx    # 0x1f2543
movb $0x0, %al
callq 0x5b9c0
movq 0x4888(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x1830(%rsp), %r8
leaq 0x11bd47(%rip), %rsi    # 0x1d2034
leaq 0x13c19f(%rip), %rdx    # 0x1f2493
movl $0x38c, %ecx            # imm = 0x38C
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x48a4(%rsp)
jmp 0xb652f
jmp 0xb648f
movl $0x938, %edi            # imm = 0x938
callq 0x8460
movq %rax, %rcx
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq %rcx, 0xc8(%rax)
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0xc8(%rax)
jne 0xb63c1
movl $0x938, 0x182c(%rsp) # imm = 0x938
leaq 0x1020(%rsp), %rdi
movl 0x182c(%rsp), %ecx
leaq 0x11bc92(%rip), %rsi    # 0x1d2004
leaq 0x13c259(%rip), %rdx    # 0x1f25d2
movb $0x0, %al
callq 0x5b9c0
movq 0x4888(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x1020(%rsp), %r8
leaq 0x11bc96(%rip), %rsi    # 0x1d2034
leaq 0x13c0ee(%rip), %rdx    # 0x1f2493
movl $0x392, %ecx            # imm = 0x392
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x48a4(%rsp)
jmp 0xb652f
movq 0x4898(%rsp), %rdi
movq 0x4890(%rsp), %rsi
movq 0x4888(%rsp), %rdx
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq 0xc8(%rax), %rcx
movq 0x4888(%rsp), %rax
movl 0x14(%rax), %r8d
movq 0x4880(%rsp), %rax
movsd 0x20(%rax), %xmm0
callq 0x19a090
cmpl $0x1, %eax
jne 0xb648d
leaq 0x820(%rsp), %rdi
movq 0x4880(%rsp), %rax
movq 0x80(%rax), %rax
movq 0xc8(%rax), %rcx
addq $0x134, %rcx            # imm = 0x134
leaq 0x11bf9a(%rip), %rsi    # 0x1d23d8
leaq 0x13c1a1(%rip), %rdx    # 0x1f25e6
movb $0x0, %al
callq 0x5b9c0
movq 0x4888(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x820(%rsp), %r8
leaq 0x11bbca(%rip), %rsi    # 0x1d2034
leaq 0x13c022(%rip), %rdx    # 0x1f2493
movl $0x396, %ecx            # imm = 0x396
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x48a4(%rsp)
jmp 0xb652f
jmp 0xb648f
movl $0x48, %edi
callq 0x8460
movq %rax, %rcx
movq 0x4880(%rsp), %rax
movq %rcx, 0x88(%rax)
movq 0x4880(%rsp), %rax
cmpq $0x0, 0x88(%rax)
jne 0xb6524
movl $0x48, 0x81c(%rsp)
leaq 0x10(%rsp), %rdi
movl 0x81c(%rsp), %ecx
leaq 0x11bb29(%rip), %rsi    # 0x1d2004
leaq 0x13c156(%rip), %rdx    # 0x1f2638
movb $0x0, %al
callq 0x5b9c0
movq 0x4888(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x10(%rsp), %r8
leaq 0x11bb30(%rip), %rsi    # 0x1d2034
leaq 0x13bf88(%rip), %rdx    # 0x1f2493
movl $0x39e, %ecx            # imm = 0x39E
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x48a4(%rsp)
jmp 0xb652f
movl $0x0, 0x48a4(%rsp)
movl 0x48a4(%rsp), %eax
addq $0x48a8, %rsp           # imm = 0x48A8
retq
nop