// File: /workspace/github_c_makefile_star2_O1/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 $0x1048, %rsp           # imm = 0x1048
movq %rcx, %rbx
xorpd %xmm2, %xmm2
ucomisd %xmm2, %xmm0
jne 0x8d74c
jp 0x8d74c
leaq 0x65655(%rip), %rsi     # 0xf2d2d
leaq 0x40(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0x63994(%rip), %rsi     # 0xf1082
leaq 0x8cfd4(%rip), %rdx     # 0x11a6c9
leaq 0x840(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0x6c8a, %rbx           # imm = 0x6C8A
leaq 0x6391c(%rip), %rsi     # 0xf1034
leaq 0x8cbc5(%rip), %rdx     # 0x11a2e4
movq %rbx, %rdi
movl $0x191b, %ecx           # imm = 0x191B
movq %r15, %r8
xorl %eax, %eax
callq 0x30c2c
movl $0x1, %r12d
movl %r12d, %eax
addq $0x1048, %rsp           # imm = 0x1048
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, 0x28(%rsp)
movq %rdi, 0x10(%rsp)
movswl 0x154(%r9), %edx
leaq 0x158(%r9), %rcx
movq 0x30(%r9), %r8
movl $0x1, %r12d
movq %rsi, %rdi
movsd %xmm1, 0x20(%rsp)
movapd %xmm1, %xmm0
movl $0x1, %esi
callq 0x5ed53
cmpl $0x1, %eax
jne 0x8d7eb
addq $0xd1c, %r13            # imm = 0xD1C
leaq 0x63c4a(%rip), %rsi     # 0xf13f0
leaq 0x8cb54(%rip), %rdx     # 0x11a301
leaq 0x40(%rsp), %r14
movq %r14, %rdi
movq %r13, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0x6c8a, %rbx           # imm = 0x6C8A
leaq 0x63867(%rip), %rsi     # 0xf1034
leaq 0x8cb10(%rip), %rdx     # 0x11a2e4
movq %rbx, %rdi
movl $0x1924, %ecx           # imm = 0x1924
movq %r14, %r8
xorl %eax, %eax
callq 0x30c2c
jmp 0x8d737
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 0x8d874
jp 0x8d874
leaq 0x8cb58(%rip), %rsi     # 0x11a378
leaq 0x40(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0x6384c(%rip), %rsi     # 0xf1082
leaq 0x8cb60(%rip), %rdx     # 0x11a39d
leaq 0x840(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0x6c8a, %rbx           # imm = 0x6C8A
leaq 0x637d4(%rip), %rsi     # 0xf1034
leaq 0x8ca7d(%rip), %rdx     # 0x11a2e4
movq %rbx, %rdi
movl $0x1928, %ecx           # imm = 0x1928
jmp 0x8d727
movsd 0x639e4(%rip), %xmm4    # 0xf1260
movapd %xmm4, %xmm5
divsd 0x28(%rsp), %xmm5
movapd %xmm4, %xmm2
divsd %xmm0, %xmm2
cmpw $0x1, 0xe(%rbx)
jne 0x8dbf9
cmpl %ebp, 0x848(%rbx)
jne 0x8dbf9
movsd %xmm2, 0x18(%rsp)
movsd %xmm5, 0x8(%rsp)
divsd %xmm1, %xmm4
addsd 0x63f2b(%rip), %xmm4    # 0xf17e8
movswl 0x154(%r15), %edx
leaq 0x15c(%r15), %rcx
movq 0x38(%r15), %r9
movq %r13, %rdi
movq %r14, %rsi
movapd %xmm4, %xmm0
callq 0x68bbc
cmpl $0x1, %eax
jne 0x8d92d
addq $0x1064, %r14           # imm = 0x1064
leaq 0x63afe(%rip), %rsi     # 0xf13f0
leaq 0x8cae8(%rip), %rdx     # 0x11a3e1
leaq 0x40(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0x6c8a, %rbx           # imm = 0x6C8A
leaq 0x6371b(%rip), %rsi     # 0xf1034
leaq 0x8c9c4(%rip), %rdx     # 0x11a2e4
movq %rbx, %rdi
movl $0x193a, %ecx           # imm = 0x193A
jmp 0x8d727
movzwl 0x36(%r14), %eax
xorpd %xmm1, %xmm1
xorpd %xmm0, %xmm0
cmpw $0x1, %ax
movsd 0x20(%rsp), %xmm2
movq 0x10(%rsp), %rdi
movsd 0x6390f(%rip), %xmm4    # 0xf1260
movsd 0x8(%rsp), %xmm5
jne 0x8d9d4
movq 0x38(%r15), %rcx
movslq 0xec8(%r14), %rdx
movsd (%rcx,%rdx,8), %xmm3
ucomisd %xmm0, %xmm3
jne 0x8d9cc
jp 0x8d9cc
leaq 0x8cb0f(%rip), %rsi     # 0x11a487
leaq 0x40(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0x636f4(%rip), %rsi     # 0xf1082
leaq 0x8cb1e(%rip), %rdx     # 0x11a4b3
leaq 0x840(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0x6c8a, %rbx           # imm = 0x6C8A
leaq 0x6367c(%rip), %rsi     # 0xf1034
leaq 0x8c925(%rip), %rdx     # 0x11a2e4
movq %rbx, %rdi
movl $0x1940, %ecx           # imm = 0x1940
jmp 0x8d727
movapd %xmm4, %xmm0
divsd %xmm3, %xmm0
movq 0x38(%r15), %rcx
movslq 0xe80(%r14), %rdx
movsd (%rcx,%rdx,8), %xmm3
ucomisd %xmm1, %xmm3
jne 0x8dd7f
jp 0x8dd7f
leaq 0x180(%r15), %rdx
leaq 0x160(%r15), %r12
xorpd %xmm6, %xmm6
movsd 0x28(%rsp), %xmm0
movq (%rdx), %rax
movslq (%r12), %rcx
movl $0x1, (%rax,%rcx,4)
cmpw $0x1, 0x34(%r14)
jne 0x8daa6
movq 0x38(%r15), %rax
movslq 0xed8(%r14), %rcx
movapd %xmm4, %xmm1
divsd (%rax,%rcx,8), %xmm1
divsd %xmm1, %xmm6
ucomisd 0x590(%rdi), %xmm6
jb 0x8daa6
movq 0x180(%r15), %rax
movslq 0x160(%r15), %rcx
cmpl $0x0, (%rax,%rcx,4)
jne 0x8da91
cmpw $0x3, 0x6c88(%rbx)
jl 0x8da91
leaq 0x8cbc2(%rip), %rdi     # 0x11a62f
movapd %xmm2, %xmm1
movb $0x2, %al
callq 0x8030
movsd 0x8(%rsp), %xmm5
movsd 0x637da(%rip), %xmm4    # 0xf1260
movq 0x10(%rsp), %rdi
movsd 0x20(%rsp), %xmm2
movq 0x180(%r15), %rax
movslq 0x160(%r15), %rcx
movl $0x1, (%rax,%rcx,4)
movzwl 0x38(%r14), %eax
cmpw $0x1, %ax
jne 0x8daeb
movq 0x38(%r15), %rcx
movslq 0xeac(%r14), %rdx
movsd (%rcx,%rdx,8), %xmm1
movl $0x1, %ecx
xorpd %xmm3, %xmm3
ucomisd %xmm3, %xmm1
jne 0x8df00
jp 0x8df00
movq 0x180(%r15), %rdx
movslq 0x168(%r15), %rsi
movl %ecx, (%rdx,%rsi,4)
movapd %xmm2, %xmm0
divsd %xmm5, %xmm0
ucomisd 0x628(%rdi), %xmm0
jbe 0x8db16
ucomisd 0xfd8(%r14), %xmm2
jbe 0x8db16
movl $0x1, %ecx
cmpl $0x3, 0x620(%rdi)
jne 0x8db18
xorl %ecx, %ecx
movq 0x180(%r15), %rdx
movslq 0x164(%r15), %rsi
movl %ecx, (%rdx,%rsi,4)
cmpw $0x1, 0x4c6(%r13)
jne 0x8db82
ucomisd 0x640(%rdi), %xmm0
jbe 0x8db6f
ucomisd 0xfe0(%r14), %xmm2
jbe 0x8db6f
testw %ax, %ax
je 0x8db61
movsd 0x1028(%r14), %xmm1
ucomisd 0x641a1(%rip), %xmm1    # 0xf1d00
jb 0x8db6f
movl $0x1, %eax
cmpl $0x0, 0x638(%rdi)
jne 0x8db71
xorl %eax, %eax
movq 0x180(%r15), %rcx
movslq 0x16c(%r15), %rdx
movl %eax, (%rcx,%rdx,4)
cmpw $0x1, 0x4c4(%r13)
movsd 0x18(%rsp), %xmm2
jne 0x8dbbe
ucomisd 0x658(%rdi), %xmm0
jbe 0x8dbab
movl $0x1, %eax
cmpl $0x3, 0x650(%rdi)
jne 0x8dbad
xorl %eax, %eax
movq 0x180(%r15), %rcx
movslq 0x170(%r15), %rdx
movl %eax, (%rcx,%rdx,4)
cmpw $0x1, 0x4be(%r13)
jne 0x8dbf9
movq 0x10(%rsp), %rcx
ucomisd 0x668(%rcx), %xmm0
jbe 0x8dbe6
movl $0x1, %eax
cmpl $0x3, 0x660(%rcx)
jne 0x8dbe8
xorl %eax, %eax
movq 0x180(%r15), %rcx
movslq 0x174(%r15), %rdx
movl %eax, (%rcx,%rdx,4)
xorl %r12d, %r12d
cmpw $0x1, 0x12(%rbx)
jne 0x8d737
cmpl %ebp, 0x84c(%rbx)
jne 0x8d737
movsd %xmm2, 0x18(%rsp)
movsd %xmm5, 0x8(%rsp)
movslq 0x380(%r13), %rax
movq 0x30(%r15), %r8
movq 0x38(%r15), %r9
divsd (%r8,%rax,8), %xmm4
addsd 0x63bac(%rip), %xmm4    # 0xf17e8
movswl 0x154(%r15), %edx
leaq 0x15c(%r15), %rcx
movq %r13, %rdi
movq %r14, %rsi
movapd %xmm4, %xmm0
callq 0x68bbc
cmpl $0x1, %eax
jne 0x8dca8
addq $0x1064, %r14           # imm = 0x1064
leaq 0x63783(%rip), %rsi     # 0xf13f0
leaq 0x8c76d(%rip), %rdx     # 0x11a3e1
leaq 0x40(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0x6c8a, %rbx           # imm = 0x6C8A
leaq 0x633a0(%rip), %rsi     # 0xf1034
leaq 0x8c649(%rip), %rdx     # 0x11a2e4
movq %rbx, %rdi
movl $0x19d6, %ecx           # imm = 0x19D6
jmp 0x8d727
movq 0x38(%r15), %rax
movslq 0xe80(%r14), %rcx
movsd (%rax,%rcx,8), %xmm0
movl $0x1, %eax
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x8dcdc
jp 0x8dcdc
movsd 0x20(%rsp), %xmm1
movq 0x10(%rsp), %rsi
movsd 0x8(%rsp), %xmm3
jmp 0x8dd2a
movsd 0x6357c(%rip), %xmm2    # 0xf1260
divsd %xmm0, %xmm2
movapd %xmm2, %xmm0
divsd 0x18(%rsp), %xmm0
movq 0x10(%rsp), %rsi
movsd 0x578(%rsi), %xmm1
ucomisd %xmm0, %xmm1
movsd 0x20(%rsp), %xmm1
movsd 0x8(%rsp), %xmm3
jbe 0x8dd25
divsd %xmm3, %xmm2
movsd 0x580(%rsi), %xmm0
xorl %eax, %eax
ucomisd %xmm2, %xmm0
ja 0x8dd2a
movl $0x1, %eax
movq 0x180(%r15), %rcx
movslq 0x160(%r15), %rdx
movl %eax, (%rcx,%rdx,4)
movapd %xmm1, %xmm0
divsd %xmm3, %xmm0
ucomisd 0x628(%rsi), %xmm0
jbe 0x8dd65
ucomisd 0xfd8(%r14), %xmm1
jbe 0x8dd65
cmpl $0x3, 0x620(%rsi)
jne 0x8df89
movq 0x180(%r15), %rax
movslq 0x164(%r15), %rcx
movl $0x0, (%rax,%rcx,4)
jmp 0x8d737
movapd %xmm4, %xmm6
divsd %xmm3, %xmm6
ucomisd %xmm6, %xmm1
jbe 0x8de18
movq 0x30(%r15), %rax
movslq 0x380(%r13), %rdx
divsd (%rax,%rdx,8), %xmm4
addsd 0x63a3f(%rip), %xmm4    # 0xf17e8
movslq 0xe7c(%r14), %rax
movsd (%rcx,%rax,8), %xmm3
leaq 0x8c726(%rip), %rsi     # 0x11a4e2
leaq 0x40(%rsp), %r14
movq %r14, %rdi
movapd %xmm6, %xmm0
movapd %xmm4, %xmm1
movb $0x4, %al
callq 0x30c2c
leaq 0x632a8(%rip), %rsi     # 0xf1082
leaq 0x8c805(%rip), %rdx     # 0x11a5e6
leaq 0x840(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0x6c8a, %rbx           # imm = 0x6C8A
leaq 0x63230(%rip), %rsi     # 0xf1034
leaq 0x8c4d9(%rip), %rdx     # 0x11a2e4
movq %rbx, %rdi
movl $0x1959, %ecx           # imm = 0x1959
jmp 0x8d727
movapd %xmm6, %xmm1
divsd 0x18(%rsp), %xmm1
movsd 0x578(%rdi), %xmm3
ucomisd %xmm1, %xmm3
jbe 0x8de48
movapd %xmm6, %xmm1
divsd %xmm5, %xmm1
movsd 0x580(%rdi), %xmm3
xorl %ecx, %ecx
ucomisd %xmm1, %xmm3
ja 0x8de4d
movl $0x1, %ecx
movq 0x180(%r15), %rdx
movslq 0x160(%r15), %rsi
movl %ecx, (%rdx,%rsi,4)
cmpw $0x1, %ax
jne 0x8dfa3
movapd %xmm6, %xmm1
divsd %xmm0, %xmm1
ucomisd 0x588(%rdi), %xmm1
movsd 0x28(%rsp), %xmm0
jb 0x8da1a
leaq 0x180(%r15), %rdx
movq 0x180(%r15), %rax
leaq 0x160(%r15), %r12
movslq 0x160(%r15), %rcx
cmpl $0x0, (%rax,%rcx,4)
jne 0x8da0c
movq %rdx, 0x30(%rsp)
movsd %xmm6, 0x38(%rsp)
cmpw $0x3, 0x6c88(%rbx)
jl 0x8dedd
leaq 0x8c72b(%rip), %rdi     # 0x11a5f1
movapd %xmm2, %xmm1
movb $0x2, %al
callq 0x8030
movsd 0x28(%rsp), %xmm0
movsd 0x20(%rsp), %xmm2
movq 0x10(%rsp), %rdi
movsd 0x63376(%rip), %xmm4    # 0xf1260
movsd 0x8(%rsp), %xmm5
movsd 0x38(%rsp), %xmm6
movq 0x30(%rsp), %rdx
jmp 0x8da0c
movapd %xmm4, %xmm0
divsd %xmm1, %xmm0
ucomisd %xmm0, %xmm3
jbe 0x8dfae
movq 0x30(%r15), %rax
movslq 0x380(%r13), %rcx
divsd (%rax,%rcx,8), %xmm4
addsd 0x638be(%rip), %xmm4    # 0xf17e8
leaq 0x8c73c(%rip), %rsi     # 0x11a66d
leaq 0x40(%rsp), %r14
movq %r14, %rdi
movapd %xmm4, %xmm1
movb $0x3, %al
callq 0x30c2c
leaq 0x63137(%rip), %rsi     # 0xf1082
leaq 0x8c75c(%rip), %rdx     # 0x11a6ae
leaq 0x840(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0x6c8a, %rbx           # imm = 0x6C8A
leaq 0x630bf(%rip), %rsi     # 0xf1034
leaq 0x8c368(%rip), %rdx     # 0x11a2e4
movq %rbx, %rdi
movl $0x1987, %ecx           # imm = 0x1987
jmp 0x8d727
movq 0x180(%r15), %rax
movslq 0x164(%r15), %rcx
movl $0x1, (%rax,%rcx,4)
jmp 0x8d737
movsd 0x28(%rsp), %xmm0
jmp 0x8da1a
movapd %xmm0, %xmm1
divsd 0x18(%rsp), %xmm1
movsd 0x5b0(%rdi), %xmm3
ucomisd %xmm1, %xmm3
jbe 0x8dada
divsd %xmm5, %xmm0
movsd 0x5a8(%rdi), %xmm1
ucomisd %xmm0, %xmm1
jbe 0x8dada
movsd 0x1028(%r14), %xmm0
ucomisd 0x63d0f(%rip), %xmm0    # 0xf1d00
jb 0x8dada
cmpl $0x0, 0x830(%rbx)
jne 0x8dada
xorl %ecx, %ecx
jmp 0x8dada