// File: /workspace/github_c_makefile_star2_O1/PoulinV[P]AxiCLASS/build/../external/heating/noninjection.c
// Function: noninjection_init
int noninjection_init(struct precision* ppr,
                      struct background* pba,
                      struct thermodynamics* pth,
                      struct perturbations* ppt,
                      struct primordial* ppm,
                      struct noninjection* pni){

  /** Summary: */

  /** - Define local variables */
  int index_k,index_z;
  int last_index_back, last_index_thermo, last_index_coarse = 0;
  double *pvecback, *pvecthermo;
  double R, dkappa;
  double dEdt;
  double z_wkb;
  double h,a,b;
  double temp_injection;
  double z_coarse;

  /* z-table */
  pni->z_size = pth->tt_size;
  class_alloc(pni->z_table,
              pni->z_size*sizeof(double),
              pni->error_message);
  memcpy(pni->z_table,
         pth->z_table,
         pni->z_size*sizeof(double));
  pni->last_index_z = 0;

  /* Photon non-injected table */
  class_alloc(pni->photon_dep_table,
              pni->z_size*sizeof(double),
              pni->error_message);
  /* Initialize to zero */
  for(index_z = 0; index_z < pni->z_size; ++index_z){
    pni->photon_dep_table[index_z] = 0.;
  }

  /** - Allocate new storage space that is a bit coarser in z as to reduce computational costs */
  pni->logz_max = log(1.+pni->z_table[pni->z_size-1]);
  pni->z_size_coarse = ppr->noninjection_Nz_log; /* This table is only going to be filled after the initial run anyway */
  class_alloc(pni->z_table_coarse,
              pni->z_size_coarse*sizeof(double),
              pni->error_message);
  for(index_z=0;index_z<pni->z_size_coarse-1;++index_z){
    pni->z_table_coarse[index_z] = exp(index_z*pni->logz_max/(pni->z_size_coarse-1))-1.;
  }
  pni->z_table_coarse[pni->z_size_coarse-1] = pni->z_table[pni->z_size-1];

  class_alloc(pni->noninjection_table,
              pni->z_size_coarse*sizeof(double),
              pni->error_message);
  class_alloc(pni->ddnoninjection_table,
              pni->z_size_coarse*sizeof(double),
              pni->error_message);

  /** - Allocate qunatities from primordial structure */
  pni->k_max = ppr->k_max_acc_diss;
  pni->k_min = ppr->k_min_acc_diss;
  pni->k_size = ppr->noninjection_Nk_acc_diss;
  class_alloc(pni->k,
              pni->k_size*sizeof(double),
              pni->error_message);
  class_alloc(pni->k_weights,
              pni->k_size*sizeof(double),
              pni->error_message);
  class_alloc(pni->pk_primordial_k,
              pni->k_size*sizeof(double),
              pni->error_message);

  /** - Import primordial spectrum */
  for (index_k=0; index_k<pni->k_size; index_k++) {
    pni->k[index_k] = exp(log(pni->k_min)+(log(pni->k_max)-log(pni->k_min))/(pni->k_size)*index_k);

    class_call(primordial_spectrum_at_k(ppm,
                                        ppt->index_md_scalars,
                                        linear,
                                        pni->k[index_k],
                                        &pni->pk_primordial_k[index_k]),
               ppm->error_message,
               pni->error_message);
  }

  /** - Prepare wavenumber integration */
  class_call(array_trapezoidal_weights(pni->k,
                                       pni->k_size,
                                       pni->k_weights,
                                       pni->error_message),
             pni->error_message,
             pni->error_message);

  class_alloc(pni->integrand_approx,
              pni->k_size*sizeof(double),
              pni->error_message);

  /** - Allocate backgorund and thermodynamcis vectors */
  last_index_back = 0;
  last_index_thermo = 0;
  class_alloc(pvecback,
              pba->bg_size*sizeof(double),
              pni->error_message);
  class_alloc(pvecthermo,
              pth->tt_size*sizeof(double),
              pni->error_message);

  /** - Calculate WKB approximation ampltidue factor f_nu at early times */
  z_wkb = ppr->z_wkb_acc_diss;
  class_call(background_at_z(pba,
                             z_wkb,
                             long_info,
                             inter_normal,
                             &last_index_back,
                             pvecback),
             pba->error_message,
             pni->error_message);

  pni->f_nu_wkb = (1.-pvecback[pba->index_bg_rho_g]/(pvecback[pba->index_bg_Omega_r]*pvecback[pba->index_bg_rho_crit]));

  /** - Import quantities from other structures */
  /* Background structure */
  pni->H0 = pba->H0*_c_/_Mpc_over_m_;                                                               // [1/s]
  pni->T_g0 = pba->T_cmb;                                                                           // [K]
  pni->Omega0_b = pba->Omega0_b;                                                                    // [-]
  pni->Omega0_cdm = pba->Omega0_cdm;                                                                // [-]
  pni->rho0_cdm = pba->Omega0_cdm*pow(pni->H0,2)*3/8./_PI_/_G_*_c_*_c_;                             // [J/m^3]

  /* Thermodynamics structure */
  pni->fHe = pth->fHe;                                                                              // [-]
  pni->N_e0 = pth->n_e;                                                                             // [1/m^3]

  /** - Loop over z and calculate the heating at each point */
  dEdt = 0.;
  for(index_z=0; index_z<pni->z_size_coarse; ++index_z){

    z_coarse = pni->z_table_coarse[index_z];
    pni->noninjection_table[index_z] = 0.;

    /* Import quantities from background and thermodynamics structure */
    class_call(background_at_z(pba,
                               z_coarse,
                               long_info,
                               inter_closeby,
                               &last_index_back,
                               pvecback),
               pba->error_message,
               pni->error_message);

    pni->H = pvecback[pba->index_bg_H]*_c_/_Mpc_over_m_;                                            // [1/s]
    pni->a = pvecback[pba->index_bg_a];                                                             // [-]
    pni->rho_g = pvecback[pba->index_bg_rho_g]*_Jm3_over_Mpc2_;                                     // [J/m^3]
    R = (3./4.)*pvecback[pba->index_bg_rho_b]/pvecback[pba->index_bg_rho_g];                        // [-]
    pni->nH = pni->N_e0*pow(pni->a,-3);

    class_call(thermodynamics_at_z(pba,
                                   pth,
                                   z_coarse,
                                   inter_normal,
                                   &last_index_thermo,
                                   pvecback,
                                   pvecthermo),
               pth->error_message,
               pni->error_message);

    dkappa = pvecthermo[pth->index_th_dkappa];                                                      // [1/Mpc]
    pni->dkD_dz = 1./(pvecback[pba->index_bg_H]*dkappa)*(16./15.+pow(R,2.)/(1.+R))/(6.*(1.0+R));    // [Mpc^2]
    pni->kD = 2.*_PI_/pvecthermo[pth->index_th_r_d];                                                // [1/Mpc]
    pni->T_b = pvecthermo[pth->index_th_Tb];                                                        // [K]
    pni->T_g = pni->T_g0/pni->a;                                                                    // [K]
    pni->x_e = pvecthermo[pth->index_th_xe];                                                        // [-]
    pni->heat_capacity = (3./2.)*_k_B_*pni->nH*(1.+pni->fHe+pni->x_e);                              // [J/(K m^3)]

    /* Include all non-injected energy that does not need to be deposited (i.e. adiabatic terms as below) */
    /* First order cooling of photons due to adiabatic interaction with baryons */
    class_call(noninjection_rate_adiabatic_cooling(pni,
                                                   z_coarse,
                                                   &dEdt),
               pni->error_message,
               pni->error_message);
    pni->noninjection_table[index_z]+=dEdt;

    /* Second order acoustic dissipation of BAO */
    class_call(noninjection_rate_acoustic_diss(pni,
                                               z_coarse,
                                               &dEdt),
               pni->error_message,
               pni->error_message);
    pni->noninjection_table[index_z]+=dEdt;
  }

  /** - Spline coarse z table in view of interpolation */
  class_call(array_spline_table_columns2(pni->z_table_coarse,
                                         pni->z_size_coarse,
                                         pni->noninjection_table,
                                         1,
                                         pni->ddnoninjection_table,
                                         _SPLINE_EST_DERIV_,
                                         pni->error_message),
             pni->error_message,
             pni->error_message);

  /** - Evaluate the spline coarse table at the fine-grained z samples */
  for(index_z=0;index_z<pni->z_size;++index_z){
    class_call(array_spline_hunt(pni->z_table_coarse,
                                 pni->z_size_coarse,
                                 pni->z_table[index_z],
                                 &last_index_coarse,
                                 &h,&a,&b,
                                 pni->error_message),
               pni->error_message,
               pni->error_message);

    temp_injection = array_spline_eval(pni->noninjection_table,
                                       pni->ddnoninjection_table,
                                       last_index_coarse,
                                       last_index_coarse+1,
                                       h,a,b);
    pni->photon_dep_table[index_z]+=temp_injection;
  }

  /** - Free temporary variables */
  free(pvecback);
  free(pvecthermo);

  return _SUCCESS_;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x888, %rsp            # imm = 0x888
movq %r9, %rbx
movq %r8, 0x10(%rsp)
movq %rcx, 0x30(%rsp)
movq %rdx, %r12
movq %rsi, 0x28(%rsp)
movq %rdi, %rbp
movl $0x0, 0x8(%rsp)
movslq 0xf08(%rdx), %r15
movl %r15d, 0x60(%r9)
leaq (,%r15,8), %r14
movq %r14, %rdi
callq 0x8460
movq %rax, 0x68(%rbx)
testq %rax, %rax
je 0xd61d1
movq %rax, %r13
movq 0xf10(%r12), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x82d0
movl $0x0, 0x70(%rbx)
movq %r14, %rdi
callq 0x8460
movq %rax, 0x108(%rbx)
testq %rax, %rax
je 0xd621a
testl %r15d, %r15d
jle 0xd5f94
movq %rax, %rdi
xorl %esi, %esi
movq %r14, %rdx
callq 0x8200
movsd -0x8(%r13,%r15,8), %xmm0
addsd 0x1b2bd(%rip), %xmm0    # 0xf1260
callq 0x82c0
movsd %xmm0, 0x48(%rbx)
movslq 0x1dc(%rbp), %r14
movl %r14d, 0x40(%rbx)
movq %r14, %rdi
shlq $0x3, %rdi
callq 0x8460
movq %rax, 0x38(%rbx)
testq %rax, %rax
je 0xd6263
movl 0x40(%rbx), %r15d
leal -0x1(%r15), %eax
cmpl $0x2, %r15d
jl 0xd6021
xorl %r14d, %r14d
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
mulsd 0x48(%rbx), %xmm0
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
callq 0x8670
addsd 0x1b7e1(%rip), %xmm0    # 0xf17e8
movq 0x38(%rbx), %rax
movsd %xmm0, (%rax,%r14,8)
incq %r14
movslq 0x40(%rbx), %r15
leaq -0x1(%r15), %rax
cmpq %rax, %r14
jl 0xd5fe2
movq 0x38(%rbx), %rcx
movq 0x68(%rbx), %rdx
movslq 0x60(%rbx), %rsi
movsd -0x8(%rdx,%rsi,8), %xmm0
cltq
movsd %xmm0, (%rcx,%rax,8)
movslq %r15d, %r14
shlq $0x3, %r14
movq %r14, %rdi
callq 0x8460
movq %rax, 0x50(%rbx)
testq %rax, %rax
je 0xd62ad
movq %r14, %rdi
callq 0x8460
movq %rax, 0x58(%rbx)
testq %rax, %rax
je 0xd62f6
movupd 0x1e8(%rbp), %xmm0
movupd %xmm0, (%rbx)
movslq 0x1e0(%rbp), %r15
movl %r15d, 0x10(%rbx)
movq %r15, %r14
shlq $0x3, %r14
movq %r14, %rdi
callq 0x8460
movq %rax, 0x18(%rbx)
testq %rax, %rax
je 0xd633f
movq %r14, %rdi
callq 0x8460
movq %rax, 0x20(%rbx)
testq %rax, %rax
je 0xd6389
movq %r14, %rdi
callq 0x8460
movq %rax, 0x28(%rbx)
testq %rax, %rax
je 0xd63d3
movl 0x10(%rbx), %esi
testl %esi, %esi
jle 0xd6173
xorl %r14d, %r14d
xorl %r15d, %r15d
movsd (%rbx), %xmm0
callq 0x82c0
movsd %xmm0, 0x50(%rsp)
movsd 0x8(%rbx), %xmm0
callq 0x82c0
movsd %xmm0, 0x20(%rsp)
movsd (%rbx), %xmm0
callq 0x82c0
movsd 0x20(%rsp), %xmm1
subsd %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtsi2sdl 0x10(%rbx), %xmm0
divsd %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtsi2sd %r15d, %xmm0
mulsd %xmm1, %xmm0
addsd 0x50(%rsp), %xmm0
callq 0x8670
movq 0x18(%rbx), %rax
movsd %xmm0, (%rax,%r14)
movq 0x30(%rsp), %rax
movl 0x848(%rax), %esi
movq 0x28(%rbx), %rcx
addq %r14, %rcx
movq 0x10(%rsp), %rdi
xorl %edx, %edx
callq 0x97030
cmpl $0x1, %eax
je 0xd64ff
incq %r15
movslq 0x10(%rbx), %rsi
addq $0x8, %r14
cmpq %rsi, %r15
jl 0xd60d9
movq 0x18(%rbx), %rdi
movq 0x20(%rbx), %rdx
leaq 0x110(%rbx), %r14
movq %r14, %rcx
callq 0x1b383
cmpl $0x1, %eax
jne 0xd641d
leaq 0x1b256(%rip), %rsi     # 0xf13f0
leaq 0x56a53(%rip), %rdx     # 0x12cbf4
leaq 0x80(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x1ae77(%rip), %rsi     # 0xf1034
leaq 0x56929(%rip), %rdx     # 0x12caed
movq %r14, %rdi
movl $0x71, %ecx
jmp 0xd6626
shll $0x3, %r15d
leaq 0x1ae28(%rip), %rsi     # 0xf1004
leaq 0x568fd(%rip), %rdx     # 0x12cae0
leaq 0x80(%rsp), %r14
movq %r14, %rdi
movl %r15d, %ecx
xorl %eax, %eax
callq 0x30c2c
addq $0x110, %rbx            # imm = 0x110
leaq 0x1ae2e(%rip), %rsi     # 0xf1034
leaq 0x568e0(%rip), %rdx     # 0x12caed
movq %rbx, %rdi
movl $0x2f, %ecx
jmp 0xd6548
shll $0x3, %r15d
leaq 0x1addf(%rip), %rsi     # 0xf1004
leaq 0x568d3(%rip), %rdx     # 0x12caff
leaq 0x80(%rsp), %r14
movq %r14, %rdi
movl %r15d, %ecx
xorl %eax, %eax
callq 0x30c2c
addq $0x110, %rbx            # imm = 0x110
leaq 0x1ade5(%rip), %rsi     # 0xf1034
leaq 0x56897(%rip), %rdx     # 0x12caed
movq %rbx, %rdi
movl $0x38, %ecx
jmp 0xd6548
leal (,%r14,8), %ecx
leaq 0x1ad92(%rip), %rsi     # 0xf1004
leaq 0x5689c(%rip), %rdx     # 0x12cb15
leaq 0x80(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
addq $0x110, %rbx            # imm = 0x110
leaq 0x1ad9b(%rip), %rsi     # 0xf1034
leaq 0x5684d(%rip), %rdx     # 0x12caed
movq %rbx, %rdi
movl $0x43, %ecx
jmp 0xd6548
shll $0x3, %r15d
leaq 0x1ad4c(%rip), %rsi     # 0xf1004
leaq 0x5686a(%rip), %rdx     # 0x12cb29
leaq 0x80(%rsp), %r14
movq %r14, %rdi
movl %r15d, %ecx
xorl %eax, %eax
callq 0x30c2c
addq $0x110, %rbx            # imm = 0x110
leaq 0x1ad52(%rip), %rsi     # 0xf1034
leaq 0x56804(%rip), %rdx     # 0x12caed
movq %rbx, %rdi
movl $0x4b, %ecx
jmp 0xd6548
shll $0x3, %r15d
leaq 0x1ad03(%rip), %rsi     # 0xf1004
leaq 0x56839(%rip), %rdx     # 0x12cb41
leaq 0x80(%rsp), %r14
movq %r14, %rdi
movl %r15d, %ecx
xorl %eax, %eax
callq 0x30c2c
addq $0x110, %rbx            # imm = 0x110
leaq 0x1ad09(%rip), %rsi     # 0xf1034
leaq 0x567bb(%rip), %rdx     # 0x12caed
movq %rbx, %rdi
movl $0x4e, %ecx
jmp 0xd6548
leal (,%r15,8), %ecx
leaq 0x1acb6(%rip), %rsi     # 0xf1004
leaq 0x56806(%rip), %rdx     # 0x12cb5b
leaq 0x80(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
addq $0x110, %rbx            # imm = 0x110
leaq 0x1acbf(%rip), %rsi     # 0xf1034
leaq 0x56771(%rip), %rdx     # 0x12caed
movq %rbx, %rdi
movl $0x56, %ecx
jmp 0xd6548
leal (,%r15,8), %ecx
leaq 0x1ac6c(%rip), %rsi     # 0xf1004
leaq 0x567c3(%rip), %rdx     # 0x12cb62
leaq 0x80(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
addq $0x110, %rbx            # imm = 0x110
leaq 0x1ac75(%rip), %rsi     # 0xf1034
leaq 0x56727(%rip), %rdx     # 0x12caed
movq %rbx, %rdi
movl $0x59, %ecx
jmp 0xd6548
leal (,%r15,8), %ecx
leaq 0x1ac22(%rip), %rsi     # 0xf1004
leaq 0x56788(%rip), %rdx     # 0x12cb71
leaq 0x80(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
addq $0x110, %rbx            # imm = 0x110
leaq 0x1ac2b(%rip), %rsi     # 0xf1034
leaq 0x566dd(%rip), %rdx     # 0x12caed
movq %rbx, %rdi
movl $0x5c, %ecx
jmp 0xd6548
movslq 0x10(%rbx), %r15
leaq (,%r15,8), %rdi
callq 0x8460
movq %rax, 0x30(%rbx)
testq %rax, %rax
je 0xd656b
xorl %eax, %eax
movl %eax, 0xc(%rsp)
movl %eax, 0x44(%rsp)
movq 0x28(%rsp), %rax
movslq 0x43c(%rax), %r15
leaq (,%r15,8), %rdi
callq 0x8460
testq %rax, %rax
je 0xd65aa
movq %rax, %r13
movslq 0xf08(%r12), %r15
leaq (,%r15,8), %rdi
callq 0x8460
testq %rax, %rax
je 0xd65e9
movq %rax, 0x48(%rsp)
movsd 0x1f8(%rbp), %xmm0
leaq 0xc(%rsp), %rcx
movq 0x28(%rsp), %r15
movq %r15, %rdi
movl $0x2, %esi
xorl %edx, %edx
movq %r13, %r8
callq 0x5ea8c
cmpl $0x1, %eax
jne 0xd662e
addq $0xd1c, %r15            # imm = 0xD1C
leaq 0x1af28(%rip), %rsi     # 0xf13f0
leaq 0x5678e(%rip), %rdx     # 0x12cc5d
leaq 0x80(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x1ab49(%rip), %rsi     # 0xf1034
leaq 0x565fb(%rip), %rdx     # 0x12caed
movq %r14, %rdi
movl $0x8a, %ecx
jmp 0xd6626
movq 0x10(%rsp), %rcx
addq $0x32a, %rcx            # imm = 0x32A
leaq 0x1aede(%rip), %rsi     # 0xf13f0
leaq 0x5666d(%rip), %rdx     # 0x12cb86
leaq 0x80(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
addq $0x110, %rbx            # imm = 0x110
leaq 0x1aafb(%rip), %rsi     # 0xf1034
leaq 0x565ad(%rip), %rdx     # 0x12caed
movq %rbx, %rdi
movl $0x68, %ecx
movq %r14, %r8
xorl %eax, %eax
callq 0x30c2c
movl $0x1, %ebp
movl %ebp, %eax
addq $0x888, %rsp            # imm = 0x888
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
shll $0x3, %r15d
leaq 0x1aa8e(%rip), %rsi     # 0xf1004
leaq 0x566ca(%rip), %rdx     # 0x12cc47
leaq 0x80(%rsp), %rbx
movq %rbx, %rdi
movl %r15d, %ecx
xorl %eax, %eax
callq 0x30c2c
leaq 0x1aa9b(%rip), %rsi     # 0xf1034
leaq 0x5654d(%rip), %rdx     # 0x12caed
movq %r14, %rdi
movl $0x75, %ecx
jmp 0xd6626
shll $0x3, %r15d
leaq 0x1aa4f(%rip), %rsi     # 0xf1004
leaq 0x41c96(%rip), %rdx     # 0x118252
leaq 0x80(%rsp), %rbx
movq %rbx, %rdi
movl %r15d, %ecx
xorl %eax, %eax
callq 0x30c2c
leaq 0x1aa5c(%rip), %rsi     # 0xf1034
leaq 0x5650e(%rip), %rdx     # 0x12caed
movq %r14, %rdi
movl $0x7c, %ecx
jmp 0xd6626
shll $0x3, %r15d
leaq 0x1aa10(%rip), %rsi     # 0xf1004
leaq 0x41c65(%rip), %rdx     # 0x118260
leaq 0x80(%rsp), %rbx
movq %rbx, %rdi
movl %r15d, %ecx
xorl %eax, %eax
callq 0x30c2c
leaq 0x1aa1d(%rip), %rsi     # 0xf1034
leaq 0x564cf(%rip), %rdx     # 0x12caed
movq %r14, %rdi
movl $0x7f, %ecx
movq %rbx, %r8
jmp 0xd654b
movslq 0x38c(%r15), %rax
movsd (%r13,%rax,8), %xmm0
movslq 0x404(%r15), %rax
movsd (%r13,%rax,8), %xmm1
movslq 0x408(%r15), %rax
mulsd (%r13,%rax,8), %xmm1
divsd %xmm1, %xmm0
movsd 0x1abfc(%rip), %xmm1    # 0xf1260
subsd %xmm0, %xmm1
movsd %xmm1, 0x78(%rbx)
movsd 0x1f54b(%rip), %xmm2    # 0xf5bc0
movsd (%r15), %xmm0
mulsd %xmm2, %xmm0
divsd 0x1f432(%rip), %xmm0    # 0xf5ab8
movsd %xmm0, 0x90(%rbx)
movups 0x18(%r15), %xmm1
movups %xmm1, 0x98(%rbx)
movsd 0x28(%r15), %xmm1
movsd %xmm1, 0xa8(%rbx)
mulsd %xmm0, %xmm0
mulsd %xmm1, %xmm0
mulsd 0x1bfc8(%rip), %xmm0    # 0xf2680
mulsd 0x1f400(%rip), %xmm0    # 0xf5ac0
divsd 0x1d900(%rip), %xmm0    # 0xf3fc8
divsd 0x1f3f8(%rip), %xmm0    # 0xf5ac8
mulsd %xmm2, %xmm0
mulsd %xmm2, %xmm0
movsd %xmm0, 0xb0(%rbx)
movupd 0x1000(%r12), %xmm0
movupd %xmm0, 0xb8(%rbx)
movq $0x0, 0x38(%rsp)
movl 0x40(%rbx), %esi
testl %esi, %esi
jle 0xd698c
xorl %r15d, %r15d
movq %r14, 0x18(%rsp)
movq 0x28(%rsp), %rbp
movq 0x38(%rbx), %rax
movq 0x50(%rbx), %rcx
movsd (%rax,%r15,8), %xmm0
movq $0x0, (%rcx,%r15,8)
movq %rbp, %rdi
movsd %xmm0, 0x10(%rsp)
movl $0x2, %esi
movl $0x1, %edx
leaq 0xc(%rsp), %rcx
movq %r13, %r8
callq 0x5ea8c
cmpl $0x1, %eax
je 0xd6afd
movslq 0x384(%rbp), %rax
movsd (%r13,%rax,8), %xmm0
mulsd 0x1f458(%rip), %xmm0    # 0xf5bc0
divsd 0x1f348(%rip), %xmm0    # 0xf5ab8
movsd %xmm0, 0xc8(%rbx)
movslq 0x380(%rbp), %rax
movsd (%r13,%rax,8), %xmm0
movsd %xmm0, 0xd0(%rbx)
movslq 0x38c(%rbp), %rax
movsd (%r13,%rax,8), %xmm1
movsd %xmm1, 0x20(%rsp)
mulsd 0x39f36(%rip), %xmm1    # 0x1106e0
movsd %xmm1, 0xd8(%rbx)
movslq 0x390(%rbp), %rax
movsd (%r13,%rax,8), %xmm1
movaps %xmm1, 0x50(%rsp)
movsd 0xc0(%rbx), %xmm1
movsd %xmm1, 0x30(%rsp)
movsd 0x1dc95(%rip), %xmm1    # 0xf4470
callq 0x8620
mulsd 0x30(%rsp), %xmm0
movsd %xmm0, 0xe8(%rbx)
movq %rbp, %rdi
movq %r12, %rsi
movsd 0x10(%rsp), %xmm0
xorl %edx, %edx
leaq 0x44(%rsp), %rcx
movq %r13, %r8
movq 0x48(%rsp), %r14
movq %r14, %r9
callq 0x68bbc
cmpl $0x1, %eax
je 0xd6b42
movapd 0x50(%rsp), %xmm3
mulsd 0x1f300(%rip), %xmm3    # 0xf5b28
divsd 0x20(%rsp), %xmm3
movslq 0xe80(%r12), %rax
movsd (%r14,%rax,8), %xmm0
movslq 0x384(%rbp), %rax
mulsd (%r13,%rax,8), %xmm0
movapd %xmm3, %xmm1
mulsd %xmm3, %xmm1
shufpd $0x2, 0x56265(%rip), %xmm1 # xmm1 = xmm1[0],mem[1]
movsd 0x1a9fd(%rip), %xmm4    # 0xf1260
addsd %xmm4, %xmm3
movapd %xmm3, %xmm2
unpcklpd %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
divpd %xmm2, %xmm1
movapd %xmm1, %xmm0
addsd 0x39e89(%rip), %xmm0    # 0x110708
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
mulsd %xmm0, %xmm1
shufpd $0x2, 0x56240(%rip), %xmm1 # xmm1 = xmm1[0],mem[1]
mulsd 0x1bdd8(%rip), %xmm3    # 0xf2670
movslq 0xf00(%r12), %rax
movhpd (%r14,%rax,8), %xmm3    # xmm3 = xmm3[0],mem[0]
divpd %xmm3, %xmm1
movupd %xmm1, 0x80(%rbx)
movslq 0xee4(%r12), %rax
movsd (%r14,%rax,8), %xmm0
movsd %xmm0, 0xf0(%rbx)
movsd 0x98(%rbx), %xmm0
divsd 0xd0(%rbx), %xmm0
movsd %xmm0, 0xf8(%rbx)
movslq 0xe7c(%r12), %rax
movsd (%r14,%rax,8), %xmm1
movsd %xmm1, 0x100(%rbx)
movsd 0xe8(%rbx), %xmm2
mulsd 0x39dea(%rip), %xmm2    # 0x1106f0
movsd 0xb8(%rbx), %xmm3
addsd %xmm4, %xmm3
addsd %xmm1, %xmm3
mulsd %xmm2, %xmm3
movsd %xmm3, 0xe0(%rbx)
xorpd 0x1a906(%rip), %xmm3    # 0xf1230
mulsd 0xc8(%rbx), %xmm3
mulsd %xmm0, %xmm3
movsd %xmm3, 0x38(%rsp)
movq 0x50(%rbx), %rax
addsd (%rax,%r15,8), %xmm3
movsd %xmm3, (%rax,%r15,8)
movq %rbx, %rdi
leaq 0x38(%rsp), %rsi
callq 0xd6c31
testl %eax, %eax
jne 0xd6b89
movsd 0x38(%rsp), %xmm0
movq 0x50(%rbx), %rax
addsd (%rax,%r15,8), %xmm0
movsd %xmm0, (%rax,%r15,8)
incq %r15
movslq 0x40(%rbx), %rsi
cmpq %rsi, %r15
movq 0x18(%rsp), %r14
jl 0xd6713
movq 0x38(%rbx), %rdi
movq 0x50(%rbx), %rdx
movq 0x58(%rbx), %r8
movq %r14, (%rsp)
movl $0x1, %ebp
movl $0x1, %ecx
movl $0x1, %r9d
callq 0x15f89
cmpl $0x1, %eax
jne 0xd69fe
leaq 0x1aa33(%rip), %rsi     # 0xf13f0
leaq 0x563d5(%rip), %rdx     # 0x12cd99
leaq 0x80(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x1a654(%rip), %rsi     # 0xf1034
leaq 0x56106(%rip), %rdx     # 0x12caed
movq %r14, %rdi
movl $0xde, %ecx
movq %rbx, %r8
xorl %eax, %eax
callq 0x30c2c
jmp 0xd6557
cmpl $0x0, 0x60(%rbx)
jle 0xd6ae4
xorl %r12d, %r12d
leaq 0x70(%rsp), %rbp
leaq 0x68(%rsp), %r15
movq 0x38(%rbx), %rdi
movl 0x40(%rbx), %esi
movq 0x68(%rbx), %rax
movsd (%rax,%r12,8), %xmm0
movq %r14, (%rsp)
leaq 0x8(%rsp), %rdx
leaq 0x78(%rsp), %rcx
movq %rbp, %r8
movq %r15, %r9
callq 0x19cfd
cmpl $0x1, %eax
je 0xd6bcc
movsd 0x70(%rsp), %xmm1
movslq 0x8(%rsp), %rax
movsd 0x68(%rsp), %xmm2
movq 0x50(%rbx), %rcx
movq 0x58(%rbx), %rdx
movsd 0x8(%rcx,%rax,8), %xmm3
mulsd %xmm2, %xmm3
movsd (%rcx,%rax,8), %xmm0
mulsd %xmm1, %xmm0
addsd %xmm3, %xmm0
movapd %xmm2, %xmm3
mulsd %xmm2, %xmm3
mulsd %xmm2, %xmm3
subsd %xmm2, %xmm3
movapd %xmm1, %xmm2
mulsd %xmm1, %xmm2
mulsd %xmm1, %xmm2
mulsd 0x8(%rdx,%rax,8), %xmm3
subsd %xmm1, %xmm2
mulsd (%rdx,%rax,8), %xmm2
addsd %xmm3, %xmm2
movsd 0x78(%rsp), %xmm1
mulsd %xmm1, %xmm2
mulsd %xmm1, %xmm2
divsd 0x1bbb3(%rip), %xmm2    # 0xf2670
addsd %xmm0, %xmm2
movq 0x108(%rbx), %rax
addsd (%rax,%r12,8), %xmm2
movsd %xmm2, (%rax,%r12,8)
incq %r12
movslq 0x60(%rbx), %rax
cmpq %rax, %r12
jl 0xd6a15
movq %r13, %rdi
callq 0x8410
movq 0x48(%rsp), %rdi
callq 0x8410
xorl %ebp, %ebp
jmp 0xd6557
addq $0xd1c, %rbp            # imm = 0xD1C
leaq 0x1a8e5(%rip), %rsi     # 0xf13f0
leaq 0x5619c(%rip), %rdx     # 0x12ccae
leaq 0x80(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x1a506(%rip), %rsi     # 0xf1034
leaq 0x55fb8(%rip), %rdx     # 0x12caed
movq %r14, %rdi
movl $0xa9, %ecx
jmp 0xd6626
addq $0x1064, %r12           # imm = 0x1064
leaq 0x1a8a0(%rip), %rsi     # 0xf13f0
leaq 0x561ac(%rip), %rdx     # 0x12cd03
leaq 0x80(%rsp), %rbx
movq %rbx, %rdi
movq %r12, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x1a4c1(%rip), %rsi     # 0xf1034
leaq 0x55f73(%rip), %rdx     # 0x12caed
movq 0x18(%rsp), %rdi
movl $0xb9, %ecx
jmp 0xd6626
leaq 0x1a860(%rip), %rsi     # 0xf13f0
leaq 0x561cc(%rip), %rdx     # 0x12cd63
leaq 0x80(%rsp), %rbx
movq %rbx, %rdi
movq 0x18(%rsp), %r14
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x1a47c(%rip), %rsi     # 0xf1034
leaq 0x55f2e(%rip), %rdx     # 0x12caed
movq %r14, %rdi
movl $0xd1, %ecx
jmp 0xd6626
leaq 0x1a81d(%rip), %rsi     # 0xf13f0
leaq 0x56252(%rip), %rdx     # 0x12ce2c
leaq 0x80(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x1a43e(%rip), %rsi     # 0xf1034
leaq 0x55ef0(%rip), %rdx     # 0x12caed
movq %r14, %rdi
movl $0xe9, %ecx
jmp 0xd6626