// File: /workspace/github_c_makefile_star2_O3/PoulinV[P]AxiCLASS/build/../source/perturbations.c
// Function: perturbations_approximations
int perturbations_approximations(
                                 struct precision * ppr,
                                 struct background * pba,
                                 struct thermodynamics * pth,
                                 struct perturbations * ppt,
                                 int index_md,
                                 double k,
                                 double tau,
                                 struct perturbations_workspace * ppw
                                 ) {
  /** Summary: */

  /** - define local variables */

  /* (a) time scale of Fourier mode, \f$ \tau_k = 1/k \f$ */
  double tau_k;
  /* (b) time scale of expansion, \f$ \tau_h = a/a' \f$ */
  double tau_h;
  /* (c) time scale of recombination, \f$ \tau_{\gamma} = 1/\kappa' \f$ */
  double tau_c = 0.;

  /* in case of idm_g there is a third condition for the tca, tau_c * dmu_idm_g << 1 which we need to take into account - see 1802.06589 */
  double tau_dmu_idm_g = 0., tau_dmu_idm_dr = 0.;
  /* in case of idm_b there is a fourth condition */
  double tau_R_idm_b;
  /** - compute Fourier mode time scale = \f$ \tau_k = 1/k \f$ */


  class_test(k == 0.,
             ppt->error_message,
             "stop to avoid division by zero");

  tau_k = 1./k;

  /** - evaluate background quantities with background_at_tau() and
      Hubble time scale \f$ \tau_h = a/a' \f$ */

  class_call(background_at_tau(pba,tau, normal_info, (interpolation_method)ppw->inter_mode, &(ppw->last_index_back), ppw->pvecback),
             pba->error_message,
             ppt->error_message);

  class_test(ppw->pvecback[pba->index_bg_H]*ppw->pvecback[pba->index_bg_a] == 0.,
             ppt->error_message,
             "aH=0, stop to avoid division by zero");

  tau_h = 1./(ppw->pvecback[pba->index_bg_H]*ppw->pvecback[pba->index_bg_a]);

  /** - for scalar modes: */

  if (_scalars_) {

    /** - --> (a) evaluate thermodynamical quantities with thermodynamics_at_z() */

    class_call(thermodynamics_at_z(pba,
                                   pth,
                                   1./ppw->pvecback[pba->index_bg_a]-1.,  /* redshift z=1/a-1 */
                                   (interpolation_method)ppw->inter_mode,
                                   &(ppw->last_index_thermo),
                                   ppw->pvecback,
                                   ppw->pvecthermo),
               pth->error_message,
               ppt->error_message);

    /* in case of idm_g, calculate relevant quantities */
    if (pth->has_idm_g == _TRUE_) {
      class_test(ppw->pvecthermo[pth->index_th_dmu_idm_g] == 0.,
                 ppt->error_message,
                 "dmu_idm_g = 0 - stop to avoid division by 0")
        tau_dmu_idm_g = 1./ppw->pvecthermo[pth->index_th_dmu_idm_g];
    }

    /** - ---> (b.1.) if \f$ \kappa'=0 \f$, recombination is finished; tight-coupling approximation must be off */

    if (ppw->pvecthermo[pth->index_th_dkappa] == 0.) {

      ppw->approx[ppw->index_ap_tca] = (int)tca_off;

    }

    /** - ---> (b.2.) if \f$ \kappa' \neq 0 \f$, recombination is not finished: check tight-coupling approximation */

    else {

      /** - ----> (b.2.a) compute recombination time scale for photons, \f$ \tau_{\gamma} = 1/ \kappa' \f$ */
      tau_c = 1./ppw->pvecthermo[pth->index_th_dkappa];

      class_test(tau_c < 0.,
                 ppt->error_message,
                 "tau_c = 1/kappa' should always be positive unless there is something wrong in the thermodynamics module. However you have here tau_c=%e at z=%e, conformal time=%e x_e=%e. (This could come from the interpolation of a too poorly sampled reionisation history?).\n",
                 tau_c,
                 1./ppw->pvecback[pba->index_bg_a]-1.,
                 tau,
                 ppw->pvecthermo[pth->index_th_xe]);

      /** - ----> (b.2.b) check whether tight-coupling approximation should be on */

      if ((tau_c/tau_h < ppr->tight_coupling_trigger_tau_c_over_tau_h) &&
          (tau_c/tau_k < ppr->tight_coupling_trigger_tau_c_over_tau_k)) {
        ppw->approx[ppw->index_ap_tca] = (int)tca_on;
      }
      else {
        ppw->approx[ppw->index_ap_tca] = (int)tca_off;
      }


      /* for idm_g there is a third condition for the tca */
      if (pth->has_idm_g == _TRUE_) {
        if (tau_c/tau_dmu_idm_g >= ppr->tight_coupling_trigger_tau_c_over_tau_dmu_idm_g) {
          if (ppw->approx[ppw->index_ap_tca] == (int)tca_on && ppt->perturbations_verbose > 2)   {
            printf("switched off tca for k = %5.e because of idm_g at tau = %5.e\n", k, tau);
          }
          ppw->approx[ppw->index_ap_tca] = (int)tca_off;
        }
      }
    }
    /* for idm_b there is a fourth condition for the tca */
    if (pth->has_idm_b == _TRUE_) {
      tau_R_idm_b = 1./ppw->pvecthermo[pth->index_th_R_idm_b];
      if (tau_c/tau_R_idm_b >= ppr->tight_coupling_trigger_tau_c_over_tau_R_idm_b) {
        if (ppw->approx[ppw->index_ap_tca] == (int)tca_on && ppt->perturbations_verbose > 2)   {
          printf("switched off tca for k = %5.e because of idm_b at tau = %5.e\n", k, tau);
        }
        ppw->approx[ppw->index_ap_tca] = (int)tca_off;
      }
    }

    if (pth->has_idm_dr == _TRUE_){
      if (ppw->pvecthermo[pth->index_th_dmu_idm_dr] == 0.){
        ppw->approx[ppw->index_ap_tca_idm_dr] = (int)tca_idm_dr_off;
      }
      else{
        tau_dmu_idm_dr = 1./ppw->pvecthermo[pth->index_th_dmu_idm_dr];

        class_test(tau_dmu_idm_dr < 0.,
                   ppt->error_message,
                   "negative tau_idm_dr=1/dmu_idm_dr=%e at z=%e, conformal time=%e.\n",
                   tau_dmu_idm_dr,
                   1./ppw->pvecback[pba->index_bg_a]-1.,
                   tau);

        if ((tau_dmu_idm_dr / tau_h < ppr->idm_dr_tight_coupling_trigger_tau_c_over_tau_h) &&
            (tau_dmu_idm_dr / tau_k < ppr->idm_dr_tight_coupling_trigger_tau_c_over_tau_k) &&
            (pth->n_index_idm_dr>=2) && (ppt->idr_nature == idr_free_streaming)) {
          ppw->approx[ppw->index_ap_tca_idm_dr] = (int)tca_idm_dr_on;
        }
        else{
          ppw->approx[ppw->index_ap_tca_idm_dr] = (int)tca_idm_dr_off;
        }
      }
    }

    /** - --> (c) free-streaming approximations */

    if ((tau/tau_k > ppr->radiation_streaming_trigger_tau_over_tau_k) &&
        (tau > pth->tau_free_streaming) &&
        (ppr->radiation_streaming_approximation != rsa_none)) {

      ppw->approx[ppw->index_ap_rsa] = (int)rsa_on;
    }
    else {
      ppw->approx[ppw->index_ap_rsa] = (int)rsa_off;
    }

    /* interacting dark radiation free streaming approximation*/
    if (pba->has_idr == _TRUE_){

      if ((tau/tau_k > ppr->idr_streaming_trigger_tau_over_tau_k) &&
          (tau > pth->tau_idr_free_streaming) &&
          (pth->has_idm_dr == _FALSE_ || pth->n_index_idm_dr >= 2) &&
          (ppr->idr_streaming_approximation != rsa_idr_none)){

        ppw->approx[ppw->index_ap_rsa_idr] = (int)rsa_idr_on;
      }
      else{
        ppw->approx[ppw->index_ap_rsa_idr] = (int)rsa_idr_off;
      }
    }

    if (pba->has_ur == _TRUE_) {

      if ((tau/tau_k > ppr->ur_fluid_trigger_tau_over_tau_k) &&
          (ppr->ur_fluid_approximation != ufa_none)) {

        ppw->approx[ppw->index_ap_ufa] = (int)ufa_on;
      }
      else {
        ppw->approx[ppw->index_ap_ufa] = (int)ufa_off;
      }
    }

    if (pba->has_ncdm == _TRUE_) {

      if ((tau/tau_k > ppr->ncdm_fluid_trigger_tau_over_tau_k) &&
          (ppr->ncdm_fluid_approximation != ncdmfa_none)) {

        ppw->approx[ppw->index_ap_ncdmfa] = (int)ncdmfa_on;
      }
      else {
        ppw->approx[ppw->index_ap_ncdmfa] = (int)ncdmfa_off;
      }
    }
  }

  /** - for tensor modes: */

  if (_tensors_) {

    /** - --> (a) evaluate thermodynamical quantities with thermodynamics_at_z() */

    class_call(thermodynamics_at_z(pba,
                                   pth,
                                   1./ppw->pvecback[pba->index_bg_a]-1.,  /* redshift z=1/a-1 */
                                   (interpolation_method)ppw->inter_mode,
                                   &(ppw->last_index_thermo),
                                   ppw->pvecback,
                                   ppw->pvecthermo),
               pth->error_message,
               ppt->error_message);

    /** - ---> (b.1.) if \f$ \kappa'=0 \f$, recombination is finished; tight-coupling approximation must be off */

    if (ppw->pvecthermo[pth->index_th_dkappa] == 0.) {

      ppw->approx[ppw->index_ap_tca] = (int)tca_off;

    }

    /** - ---> (b.2.) if \f$ \kappa' \neq 0 \f$, recombination is not finished: check tight-coupling approximation */

    else {

      /** - ----> (b.2.a) compute recombination time scale for photons, \f$ \tau_{\gamma} = 1/ \kappa' \f$ */
      tau_c = 1./ppw->pvecthermo[pth->index_th_dkappa];

      /** - ----> (b.2.b) check whether tight-coupling approximation should be on */
      if ((tau_c/tau_h < ppr->tight_coupling_trigger_tau_c_over_tau_h) &&
          (tau_c/tau_k < ppr->tight_coupling_trigger_tau_c_over_tau_k)) {
        ppw->approx[ppw->index_ap_tca] = (int)tca_on;
      }
      else {
        ppw->approx[ppw->index_ap_tca] = (int)tca_off;
      }
    }

    if ((tau/tau_k > ppr->radiation_streaming_trigger_tau_over_tau_k) &&
        (tau > pth->tau_free_streaming) &&
        (ppr->radiation_streaming_approximation != rsa_none)) {

      ppw->approx[ppw->index_ap_rsa] = (int)rsa_on;
    }
    else {
      ppw->approx[ppw->index_ap_rsa] = (int)rsa_off;
    }
  }

  return _SUCCESS_;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1038, %rsp           # imm = 0x1038
movq %rcx, %rbx
xorpd %xmm2, %xmm2
ucomisd %xmm2, %xmm0
jne 0x8abbc
jp 0x8abbc
leaq 0x651f5(%rip), %rsi     # 0xefd3d
leaq 0x30(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30af0
leaq 0x63524(%rip), %rsi     # 0xee082
leaq 0x8cba4(%rip), %rdx     # 0x117709
leaq 0x830(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30af0
addq $0x6c8a, %rbx           # imm = 0x6C8A
leaq 0x634ac(%rip), %rsi     # 0xee034
leaq 0x8c795(%rip), %rdx     # 0x117324
movq %rbx, %rdi
movl $0x191b, %ecx           # imm = 0x191B
movq %r15, %r8
xorl %eax, %eax
callq 0x30af0
movl $0x1, %r12d
movl %r12d, %eax
addq $0x1038, %rsp           # imm = 0x1038
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r9, %r15
movl %r8d, %ebp
movq %rdx, %r14
movq %rsi, %r13
movsd %xmm0, 0x20(%rsp)
movq %rdi, 0x8(%rsp)
movswl 0x154(%r9), %edx
leaq 0x158(%r9), %rcx
movq 0x30(%r9), %r8
movl $0x1, %r12d
movq %rsi, %rdi
movsd %xmm1, 0x18(%rsp)
movapd %xmm1, %xmm0
movl $0x1, %esi
callq 0x5c63f
cmpl $0x1, %eax
jne 0x8ac5b
addq $0xd1c, %r13            # imm = 0xD1C
leaq 0x637da(%rip), %rsi     # 0xee3f0
leaq 0x8c724(%rip), %rdx     # 0x117341
leaq 0x30(%rsp), %r14
movq %r14, %rdi
movq %r13, %rcx
xorl %eax, %eax
callq 0x30af0
addq $0x6c8a, %rbx           # imm = 0x6C8A
leaq 0x633f7(%rip), %rsi     # 0xee034
leaq 0x8c6e0(%rip), %rdx     # 0x117324
movq %rbx, %rdi
movl $0x1924, %ecx           # imm = 0x1924
movq %r14, %r8
xorl %eax, %eax
callq 0x30af0
jmp 0x8aba7
movq 0x30(%r15), %r8
movslq 0x384(%r13), %rax
movslq 0x380(%r13), %rcx
movsd (%r8,%rcx,8), %xmm1
movsd (%r8,%rax,8), %xmm0
mulsd %xmm1, %xmm0
xorpd %xmm2, %xmm2
ucomisd %xmm2, %xmm0
jne 0x8ace4
jp 0x8ace4
leaq 0x8c728(%rip), %rsi     # 0x1173b8
leaq 0x30(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30af0
leaq 0x633dc(%rip), %rsi     # 0xee082
leaq 0x8c730(%rip), %rdx     # 0x1173dd
leaq 0x830(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30af0
addq $0x6c8a, %rbx           # imm = 0x6C8A
leaq 0x63364(%rip), %rsi     # 0xee034
leaq 0x8c64d(%rip), %rdx     # 0x117324
movq %rbx, %rdi
movl $0x1928, %ecx           # imm = 0x1928
jmp 0x8ab97
movsd 0x63574(%rip), %xmm4    # 0xee260
movapd %xmm4, %xmm5
divsd 0x20(%rsp), %xmm5
movapd %xmm4, %xmm2
divsd %xmm0, %xmm2
cmpw $0x1, 0xe(%rbx)
jne 0x8b030
cmpl %ebp, 0x848(%rbx)
jne 0x8b030
movsd %xmm2, 0x10(%rsp)
movsd %xmm5, (%rsp)
divsd %xmm1, %xmm4
addsd 0x63abc(%rip), %xmm4    # 0xee7e8
movswl 0x154(%r15), %edx
leaq 0x15c(%r15), %rcx
movq 0x38(%r15), %r9
movq %r13, %rdi
movq %r14, %rsi
movapd %xmm4, %xmm0
callq 0x662ac
cmpl $0x1, %eax
jne 0x8ad9c
addq $0x1064, %r14           # imm = 0x1064
leaq 0x6368f(%rip), %rsi     # 0xee3f0
leaq 0x8c6b9(%rip), %rdx     # 0x117421
leaq 0x30(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30af0
addq $0x6c8a, %rbx           # imm = 0x6C8A
leaq 0x632ac(%rip), %rsi     # 0xee034
leaq 0x8c595(%rip), %rdx     # 0x117324
movq %rbx, %rdi
movl $0x193a, %ecx           # imm = 0x193A
jmp 0x8ab97
movzwl 0x36(%r14), %ecx
movq 0x38(%r15), %rax
xorpd %xmm1, %xmm1
xorpd %xmm0, %xmm0
cmpw $0x1, %cx
movsd 0x18(%rsp), %xmm2
movq 0x8(%rsp), %rdi
movsd 0x6349c(%rip), %xmm4    # 0xee260
movsd (%rsp), %xmm5
jne 0x8ae42
movslq 0xec8(%r14), %rdx
movsd (%rax,%rdx,8), %xmm3
ucomisd %xmm0, %xmm3
jne 0x8ae3a
jp 0x8ae3a
leaq 0x8c6e1(%rip), %rsi     # 0x1174c7
leaq 0x30(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30af0
leaq 0x63286(%rip), %rsi     # 0xee082
leaq 0x8c6f0(%rip), %rdx     # 0x1174f3
leaq 0x830(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30af0
addq $0x6c8a, %rbx           # imm = 0x6C8A
leaq 0x6320e(%rip), %rsi     # 0xee034
leaq 0x8c4f7(%rip), %rdx     # 0x117324
movq %rbx, %rdi
movl $0x1940, %ecx           # imm = 0x1940
jmp 0x8ab97
movapd %xmm4, %xmm0
divsd %xmm3, %xmm0
movslq 0xe80(%r14), %rdx
movsd (%rax,%rdx,8), %xmm3
ucomisd %xmm1, %xmm3
jne 0x8b1ac
jp 0x8b1ac
movq 0x180(%r15), %rax
movslq 0x160(%r15), %rcx
leaq (%rax,%rcx,4), %rcx
xorpd %xmm6, %xmm6
movsd 0x20(%rsp), %xmm0
movl $0x1, (%rcx)
cmpw $0x1, 0x34(%r14)
jne 0x8af00
movq 0x38(%r15), %rcx
movslq 0xed8(%r14), %rdx
movapd %xmm4, %xmm1
divsd (%rcx,%rdx,8), %xmm1
divsd %xmm1, %xmm6
ucomisd 0x590(%rdi), %xmm6
jb 0x8af00
movslq 0x160(%r15), %rcx
cmpl $0x0, (%rax,%rcx,4)
jne 0x8aef9
cmpw $0x3, 0x6c88(%rbx)
jl 0x8aef9
leaq 0x8c7a7(%rip), %rdi     # 0x11766f
movapd %xmm2, %xmm1
movb $0x2, %al
callq 0x8030
movsd (%rsp), %xmm5
movsd 0x63380(%rip), %xmm4    # 0xee260
movq 0x8(%rsp), %rdi
movsd 0x18(%rsp), %xmm2
movq 0x180(%r15), %rax
movslq 0x160(%r15), %rcx
movl $0x1, (%rax,%rcx,4)
movzwl 0x38(%r14), %ecx
cmpw $0x1, %cx
jne 0x8af3e
movq 0x38(%r15), %rdx
movslq 0xeac(%r14), %rsi
movsd (%rdx,%rsi,8), %xmm1
movl $0x1, %edx
xorpd %xmm3, %xmm3
ucomisd %xmm3, %xmm1
jne 0x8b31b
jp 0x8b31b
movslq 0x168(%r15), %rsi
movl %edx, (%rax,%rsi,4)
movapd %xmm2, %xmm0
divsd %xmm5, %xmm0
ucomisd 0x628(%rdi), %xmm0
jbe 0x8af69
ucomisd 0xfd8(%r14), %xmm2
jbe 0x8af69
movl $0x1, %edx
cmpl $0x3, 0x620(%rdi)
jne 0x8af6b
xorl %edx, %edx
movslq 0x164(%r15), %rsi
movl %edx, (%rax,%rsi,4)
cmpw $0x1, 0x4c6(%r13)
jne 0x8afc7
ucomisd 0x640(%rdi), %xmm0
jbe 0x8afbb
ucomisd 0xfe0(%r14), %xmm2
jbe 0x8afbb
testw %cx, %cx
je 0x8afad
movsd 0x1028(%r14), %xmm1
ucomisd 0x63d55(%rip), %xmm1    # 0xeed00
jb 0x8afbb
movl $0x1, %ecx
cmpl $0x0, 0x638(%rdi)
jne 0x8afbd
xorl %ecx, %ecx
movslq 0x16c(%r15), %rdx
movl %ecx, (%rax,%rdx,4)
cmpw $0x1, 0x4c4(%r13)
movsd 0x10(%rsp), %xmm2
jne 0x8affc
ucomisd 0x658(%rdi), %xmm0
jbe 0x8aff0
movl $0x1, %ecx
cmpl $0x3, 0x650(%rdi)
jne 0x8aff2
xorl %ecx, %ecx
movslq 0x170(%r15), %rdx
movl %ecx, (%rax,%rdx,4)
cmpw $0x1, 0x4be(%r13)
jne 0x8b030
movq 0x8(%rsp), %rdx
ucomisd 0x668(%rdx), %xmm0
jbe 0x8b024
movl $0x1, %ecx
cmpl $0x3, 0x660(%rdx)
jne 0x8b026
xorl %ecx, %ecx
movslq 0x174(%r15), %rdx
movl %ecx, (%rax,%rdx,4)
xorl %r12d, %r12d
cmpw $0x1, 0x12(%rbx)
jne 0x8aba7
cmpl %ebp, 0x84c(%rbx)
jne 0x8aba7
movsd %xmm2, 0x10(%rsp)
movsd %xmm5, (%rsp)
movslq 0x380(%r13), %rax
movq 0x30(%r15), %r8
movq 0x38(%r15), %r9
divsd (%r8,%rax,8), %xmm4
addsd 0x63776(%rip), %xmm4    # 0xee7e8
movswl 0x154(%r15), %edx
leaq 0x15c(%r15), %rcx
movq %r13, %rdi
movq %r14, %rsi
movapd %xmm4, %xmm0
callq 0x662ac
cmpl $0x1, %eax
jne 0x8b0de
addq $0x1064, %r14           # imm = 0x1064
leaq 0x6334d(%rip), %rsi     # 0xee3f0
leaq 0x8c377(%rip), %rdx     # 0x117421
leaq 0x30(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30af0
addq $0x6c8a, %rbx           # imm = 0x6C8A
leaq 0x62f6a(%rip), %rsi     # 0xee034
leaq 0x8c253(%rip), %rdx     # 0x117324
movq %rbx, %rdi
movl $0x19d6, %ecx           # imm = 0x19D6
jmp 0x8ab97
movq 0x38(%r15), %rax
movslq 0xe80(%r14), %rcx
movsd (%rax,%rcx,8), %xmm0
movl $0x1, %ecx
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x8b111
jp 0x8b111
movsd 0x18(%rsp), %xmm1
movq 0x8(%rsp), %rsi
movsd (%rsp), %xmm3
jmp 0x8b15e
movsd 0x63147(%rip), %xmm2    # 0xee260
divsd %xmm0, %xmm2
movapd %xmm2, %xmm0
divsd 0x10(%rsp), %xmm0
movq 0x8(%rsp), %rsi
movsd 0x578(%rsi), %xmm1
ucomisd %xmm0, %xmm1
movsd 0x18(%rsp), %xmm1
movsd (%rsp), %xmm3
jbe 0x8b159
divsd %xmm3, %xmm2
movsd 0x580(%rsi), %xmm0
xorl %ecx, %ecx
ucomisd %xmm2, %xmm0
ja 0x8b15e
movl $0x1, %ecx
movq 0x180(%r15), %rax
movslq 0x160(%r15), %rdx
movl %ecx, (%rax,%rdx,4)
movapd %xmm1, %xmm0
divsd %xmm3, %xmm0
ucomisd 0x628(%rsi), %xmm0
jbe 0x8b199
ucomisd 0xfd8(%r14), %xmm1
jbe 0x8b199
cmpl $0x3, 0x620(%rsi)
jne 0x8b3a4
movslq 0x164(%r15), %rcx
movl $0x0, (%rax,%rcx,4)
jmp 0x8aba7
movapd %xmm4, %xmm6
divsd %xmm3, %xmm6
ucomisd %xmm6, %xmm1
jbe 0x8b245
movq 0x30(%r15), %rcx
movslq 0x380(%r13), %rdx
divsd (%rcx,%rdx,8), %xmm4
addsd 0x63612(%rip), %xmm4    # 0xee7e8
movslq 0xe7c(%r14), %rcx
movsd (%rax,%rcx,8), %xmm3
leaq 0x8c339(%rip), %rsi     # 0x117522
leaq 0x30(%rsp), %r14
movq %r14, %rdi
movapd %xmm6, %xmm0
movapd %xmm4, %xmm1
movb $0x4, %al
callq 0x30af0
leaq 0x62e7b(%rip), %rsi     # 0xee082
leaq 0x8c418(%rip), %rdx     # 0x117626
leaq 0x830(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30af0
addq $0x6c8a, %rbx           # imm = 0x6C8A
leaq 0x62e03(%rip), %rsi     # 0xee034
leaq 0x8c0ec(%rip), %rdx     # 0x117324
movq %rbx, %rdi
movl $0x1959, %ecx           # imm = 0x1959
jmp 0x8ab97
movapd %xmm6, %xmm1
divsd 0x10(%rsp), %xmm1
movsd 0x578(%rdi), %xmm3
ucomisd %xmm1, %xmm3
jbe 0x8b275
movapd %xmm6, %xmm1
divsd %xmm5, %xmm1
movsd 0x580(%rdi), %xmm3
xorl %edx, %edx
ucomisd %xmm1, %xmm3
ja 0x8b27a
movl $0x1, %edx
movq 0x180(%r15), %rax
movslq 0x160(%r15), %rsi
movl %edx, (%rax,%rsi,4)
cmpw $0x1, %cx
jne 0x8b3b7
movapd %xmm6, %xmm1
divsd %xmm0, %xmm1
ucomisd 0x588(%rdi), %xmm1
movsd 0x20(%rsp), %xmm0
jb 0x8ae80
movslq 0x160(%r15), %rcx
cmpl $0x0, (%rax,%rcx,4)
jne 0x8b312
cmpw $0x3, 0x6c88(%rbx)
jl 0x8b312
leaq 0x8c362(%rip), %rdi     # 0x117631
movapd %xmm2, %xmm1
movb $0x2, %al
movsd %xmm6, 0x28(%rsp)
callq 0x8030
movsd 0x28(%rsp), %xmm6
movsd 0x20(%rsp), %xmm0
movsd (%rsp), %xmm5
movsd 0x62f67(%rip), %xmm4    # 0xee260
movq 0x8(%rsp), %rdi
movsd 0x18(%rsp), %xmm2
movq 0x180(%r15), %rax
movslq 0x160(%r15), %rcx
leaq (%rax,%rcx,4), %rcx
jmp 0x8ae7a
movapd %xmm4, %xmm0
divsd %xmm1, %xmm0
ucomisd %xmm0, %xmm3
jbe 0x8b3c2
movq 0x30(%r15), %rax
movslq 0x380(%r13), %rcx
divsd (%rax,%rcx,8), %xmm4
addsd 0x634a3(%rip), %xmm4    # 0xee7e8
leaq 0x8c361(%rip), %rsi     # 0x1176ad
leaq 0x30(%rsp), %r14
movq %r14, %rdi
movapd %xmm4, %xmm1
movb $0x3, %al
callq 0x30af0
leaq 0x62d1c(%rip), %rsi     # 0xee082
leaq 0x8c381(%rip), %rdx     # 0x1176ee
leaq 0x830(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30af0
addq $0x6c8a, %rbx           # imm = 0x6C8A
leaq 0x62ca4(%rip), %rsi     # 0xee034
leaq 0x8bf8d(%rip), %rdx     # 0x117324
movq %rbx, %rdi
movl $0x1987, %ecx           # imm = 0x1987
jmp 0x8ab97
movslq 0x164(%r15), %rcx
movl $0x1, (%rax,%rcx,4)
jmp 0x8aba7
movsd 0x20(%rsp), %xmm0
jmp 0x8ae80
movapd %xmm0, %xmm1
divsd 0x10(%rsp), %xmm1
movsd 0x5b0(%rdi), %xmm3
ucomisd %xmm1, %xmm3
jbe 0x8af34
divsd %xmm5, %xmm0
movsd 0x5a8(%rdi), %xmm1
ucomisd %xmm0, %xmm1
jbe 0x8af34
movsd 0x1028(%r14), %xmm0
ucomisd 0x638fb(%rip), %xmm0    # 0xeed00
jb 0x8af34
cmpl $0x0, 0x830(%rbx)
jne 0x8af34
xorl %edx, %edx
jmp 0x8af34