// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../source/thermodynamics.c
// Function: thermodynamics_sources
int thermodynamics_sources(
                           double mz,
                           double * y,
                           double * dy,
                           int index_z,
                           void * thermo_parameters_and_workspace,
                           ErrorMsg error_message
                           ) {

  /** Summary: */

  /** Define local variables */
  /* Shorthand notations */
  double z,x=0.,Tmat,Trad,dTmat;
  /* Varying fundamental constants */
  double sigmaTrescale = 1.,alpha = 1.,me = 1.;
  /* Recfast smoothing */
  double x_previous, weight,s;
  /* Structures as shorthand_notation */
  struct thermodynamics_parameters_and_workspace * ptpaw;
  struct background * pba;
  struct thermodynamics * pth;
  struct thermo_workspace * ptw;
  struct thermo_diffeq_workspace * ptdw;
  struct thermo_vector * ptv;
  int ap_current;

  /* Redshift */
  z = -mz;

  /** - Rename structure fields (just to avoid heavy notations) */

  /* Structs */
  ptpaw = thermo_parameters_and_workspace;
  pba = ptpaw->pba;
  pth = ptpaw->pth;
  /* Thermo workspace & vector */
  ptw = ptpaw->ptw;
  ptdw = ptw->ptdw;
  ptv = ptdw->ptv;
  /* Approximation flag */
  ap_current = ptdw->ap_current;

  if (pth->has_exotic_injection == _TRUE_) {
    /* Tell heating module that it should store the heating at this z in its internal table */
    (pth->in).to_store = _TRUE_;
  }

  /** - Recalculate all quantities at this current redshift: we need
      at least pvecback, ptdw->x_reio, dy[ptv->index_ti_D_Tmat] */

  class_call(thermodynamics_derivs(mz,y,dy,thermo_parameters_and_workspace,error_message),
             error_message,
             error_message);

  /* Assign local variables (note that pvecback is filled through derivs) */
  Trad = ptw->Tcmb*(1.+z);
  Tmat = y[ptv->index_ti_D_Tmat] + Trad;
  /* Note that dy[index_ti_Q] represents dQ/d(-z), thus we need -dy here */
  dTmat = -dy[ptv->index_ti_D_Tmat] + Trad/(1.+z);

  /* Get sigmaT rescale factor from fundamental constants */
  if (pth->has_varconst == _TRUE_) {
    class_call(background_varconst_of_z(pba, z, &alpha, &me),
               pba->error_message,
               pth->error_message);
    sigmaTrescale = alpha*alpha/me/me;
  }

  /* get x */
  x = ptdw->x_reio;

  /** - In the recfast case, we manually smooth the results a bit */

  /* Smoothing if we are shortly after an approximation switch, i.e. if z is within 2 delta after the switch*/
  if ((ap_current != 0) && (z > ptdw->ap_z_limits[ap_current-1]-2*ptdw->ap_z_limits_delta[ap_current])) {

    class_call(thermodynamics_ionization_fractions(z,y,pba,pth,ptw,ap_current-1),
               pth->error_message,
               error_message);

    x_previous = ptdw->x_reio;
    // get s from 0 to 1
    s = (ptdw->ap_z_limits[ap_current-1]-z)/(2*ptdw->ap_z_limits_delta[ap_current]);
    // infer f2(x) = smooth function interpolating from 0 to 1
    weight = f2(s);

    /* get smoothed x */
    x = weight*x+(1.-weight)*x_previous;
  }

  /** - Store the results in the table. Results are obtained in order of decreasing z, and stored in order of growing z */

  /* ionization fraction */
  pth->thermodynamics_table[(pth->tt_size-index_z-1)*pth->th_size+pth->index_th_xe] = x;

  /* Tb */
  pth->thermodynamics_table[(pth->tt_size-index_z-1)*pth->th_size+pth->index_th_Tb] = Tmat;

  /* Baryon temperature derivative */
  pth->thermodynamics_table[(pth->tt_size-index_z-1)*pth->th_size+pth->index_th_dTb] = dTmat;

  /* wb = (k_B/mu) Tb */
  pth->thermodynamics_table[(pth->tt_size-index_z-1)*pth->th_size+pth->index_th_wb]
    = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * ptw->YHe + x * (1.-ptw->YHe)) * Tmat;

  /* cb2 = (k_B/mu) Tb (1-1/3 dlnTb/dlna) = (k_B/mu) Tb (1 + 1/3 (1+z) dlnTb/dz) */
  pth->thermodynamics_table[(pth->tt_size-index_z-1)*pth->th_size+pth->index_th_cb2]
    = _k_B_ / ( _c_ * _c_ * _m_H_ ) * (1. + (1./_not4_ - 1.) * ptw->YHe + x * (1.-ptw->YHe)) * Tmat * (1. + (1.+z) * dTmat / Tmat / 3.);

  /* dkappa/dtau = a n_e x_e sigma_T = a^{-2} n_e(today) x_e sigma_T (in units of 1/Mpc) */
  pth->thermodynamics_table[(pth->tt_size-index_z-1)*pth->th_size+pth->index_th_dkappa]
    = (1.+z) * (1.+z) * ptw->SIunit_nH0 * x * sigmaTrescale * _sigma_ * _Mpc_over_m_;

  if (pba->has_idm == _TRUE_) {
    pth->thermodynamics_table[(pth->tt_size-index_z-1)*pth->th_size + pth->index_th_T_idm] = ptdw->T_idm;
    pth->thermodynamics_table[(pth->tt_size-index_z-1)*pth->th_size + pth->index_th_c2_idm] = ptdw->c2_idm;
    if (pth->has_idm_g == _TRUE_) {
      pth->thermodynamics_table[(pth->tt_size-index_z-1)*pth->th_size + pth->index_th_dmu_idm_g] = ptdw->dmu_idm_g;
    }
    if (pth->has_idm_dr == _TRUE_) {
      pth->thermodynamics_table[(pth->tt_size-index_z-1)*pth->th_size + pth->index_th_dmu_idm_dr]  = ptdw->dmu_idm_dr;
      pth->thermodynamics_table[(pth->tt_size-index_z-1)*pth->th_size + pth->index_th_ddmu_idm_dr] = ptdw->Sinv_idm_dr * ptdw->dmu_idm_dr; /* store temporarily in 'wrong' column */
    }
    if (pth->has_idm_b == _TRUE_){
      pth->thermodynamics_table[(pth->tt_size-index_z-1)*pth->th_size+pth->index_th_R_idm_b] = ptdw->R_idm_b;
    }
  }
  if (pba->has_idr == _TRUE_) {
    pth->thermodynamics_table[(pth->tt_size-index_z-1)*pth->th_size + pth->index_th_T_idr] = pba->T_idr*(1.+z);
    pth->thermodynamics_table[(pth->tt_size-index_z-1)*pth->th_size + pth->index_th_dmu_idr] = ptdw->dmu_idr;
  }

  return _SUCCESS_;
}

// Assembly:
subq $0x18c8, %rsp           # imm = 0x18C8
movsd %xmm0, 0x18b8(%rsp)
movq %rdi, 0x18b0(%rsp)
movq %rsi, 0x18a8(%rsp)
movl %edx, 0x18a4(%rsp)
movq %rcx, 0x1898(%rsp)
movq %r8, 0x1890(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x1880(%rsp)
movsd 0x11343d(%rip), %xmm0   # 0x1d2248
movsd %xmm0, 0x1860(%rsp)
movsd 0x11342c(%rip), %xmm0   # 0x1d2248
movsd %xmm0, 0x1858(%rsp)
movsd 0x11341b(%rip), %xmm0   # 0x1d2248
movsd %xmm0, 0x1850(%rsp)
movsd 0x18b8(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, 0x1888(%rsp)
movq 0x1898(%rsp), %rax
movq %rax, 0x1830(%rsp)
movq 0x1830(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x1828(%rsp)
movq 0x1830(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x1820(%rsp)
movq 0x1830(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x1818(%rsp)
movq 0x1818(%rsp), %rax
movq 0x80(%rax), %rax
movq %rax, 0x1810(%rsp)
movq 0x1810(%rsp), %rax
movq 0xb8(%rax), %rax
movq %rax, 0x1808(%rsp)
movq 0x1810(%rsp), %rax
movl 0x90(%rax), %eax
movl %eax, 0x1804(%rsp)
movq 0x1820(%rsp), %rax
movswl 0xb8(%rax), %eax
cmpl $0x1, %eax
jne 0xbef13
movq 0x1820(%rsp), %rax
movl $0x1, 0x62c(%rax)
movsd 0x18b8(%rsp), %xmm0
movq 0x18b0(%rsp), %rdi
movq 0x18a8(%rsp), %rsi
movq 0x1898(%rsp), %rdx
movq 0x1890(%rsp), %rcx
callq 0xbdaa0
cmpl $0x1, %eax
jne 0xbefa5
leaq 0x1000(%rsp), %rdi
movq 0x1890(%rsp), %rcx
leaq 0x11347b(%rip), %rsi    # 0x1d23d8
leaq 0x1352ce(%rip), %rdx    # 0x1f4232
movb $0x0, %al
callq 0x5b9c0
movq 0x1890(%rsp), %rdi
leaq 0x1000(%rsp), %r8
leaq 0x1130b2(%rip), %rsi    # 0x1d2034
leaq 0x1352f6(%rip), %rdx    # 0x1f427f
movl $0xb85, %ecx            # imm = 0xB85
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x18c4(%rsp)
jmp 0xbf9e4
movq 0x1818(%rsp), %rax
movsd 0x38(%rax), %xmm0
movsd 0x11328e(%rip), %xmm1   # 0x1d2248
addsd 0x1888(%rsp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, 0x1870(%rsp)
movq 0x18b0(%rsp), %rax
movq 0x1808(%rsp), %rcx
movslq 0xc(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x1870(%rsp), %xmm0
movsd %xmm0, 0x1878(%rsp)
movq 0x18a8(%rsp), %rax
movq 0x1808(%rsp), %rcx
movslq 0xc(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd 0x1870(%rsp), %xmm1
movsd 0x11320c(%rip), %xmm2   # 0x1d2248
addsd 0x1888(%rsp), %xmm2
divsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, 0x1868(%rsp)
movq 0x1820(%rsp), %rax
movswl 0xe78(%rax), %eax
cmpl $0x1, %eax
jne 0xbf133
movq 0x1828(%rsp), %rdi
movsd 0x1888(%rsp), %xmm0
leaq 0x1858(%rsp), %rsi
leaq 0x1850(%rsp), %rdx
callq 0xa2870
cmpl $0x1, %eax
jne 0xbf106
leaq 0x800(%rsp), %rdi
movq 0x1828(%rsp), %rcx
addq $0xd1c, %rcx            # imm = 0xD1C
leaq 0x113321(%rip), %rsi    # 0x1d23d8
leaq 0x132572(%rip), %rdx    # 0x1f1630
movb $0x0, %al
callq 0x5b9c0
movq 0x1820(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x800(%rsp), %r8
leaq 0x112f51(%rip), %rsi    # 0x1d2034
leaq 0x135195(%rip), %rdx    # 0x1f427f
movl $0xb91, %ecx            # imm = 0xB91
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x18c4(%rsp)
jmp 0xbf9e4
movsd 0x1858(%rsp), %xmm0
mulsd 0x1858(%rsp), %xmm0
divsd 0x1850(%rsp), %xmm0
divsd 0x1850(%rsp), %xmm0
movsd %xmm0, 0x1860(%rsp)
movq 0x1810(%rsp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, 0x1880(%rsp)
cmpl $0x0, 0x1804(%rsp)
je 0xbf344
movsd 0x1888(%rsp), %xmm0
movq 0x1810(%rsp), %rax
movq 0xa0(%rax), %rax
movl 0x1804(%rsp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm1
movq 0x1810(%rsp), %rax
movq 0xa8(%rax), %rax
movslq 0x1804(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm2
addsd %xmm2, %xmm2
subsd %xmm2, %xmm1
ucomisd %xmm1, %xmm0
jbe 0xbf344
movsd 0x1888(%rsp), %xmm0
movq 0x18b0(%rsp), %rdi
movq 0x1828(%rsp), %rsi
movq 0x1820(%rsp), %rdx
movq 0x1818(%rsp), %rcx
movl 0x1804(%rsp), %r8d
subl $0x1, %r8d
callq 0xc4340
cmpl $0x1, %eax
jne 0xbf24a
movq %rsp, %rdi
movq 0x1820(%rsp), %rcx
addq $0x1064, %rcx           # imm = 0x1064
leaq 0x1131d1(%rip), %rsi    # 0x1d23d8
leaq 0x135088(%rip), %rdx    # 0x1f4296
movb $0x0, %al
callq 0x5b9c0
movq 0x1890(%rsp), %rdi
movq %rsp, %r8
leaq 0x112e0d(%rip), %rsi    # 0x1d2034
leaq 0x135051(%rip), %rdx    # 0x1f427f
movl $0xb9f, %ecx            # imm = 0xB9F
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x18c4(%rsp)
jmp 0xbf9e4
movq 0x1810(%rsp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, 0x1848(%rsp)
movq 0x1810(%rsp), %rax
movq 0xa0(%rax), %rax
movl 0x1804(%rsp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
subsd 0x1888(%rsp), %xmm0
movq 0x1810(%rsp), %rax
movq 0xa8(%rax), %rax
movslq 0x1804(%rsp), %rcx
movsd 0x1139d7(%rip), %xmm1   # 0x1d2c80
mulsd (%rax,%rcx,8), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x1838(%rsp)
movsd 0x1838(%rsp), %xmm0
mulsd 0x1838(%rsp), %xmm0
movsd 0x1838(%rsp), %xmm2
movsd 0x1143ba(%rip), %xmm1   # 0x1d3698
divsd %xmm1, %xmm2
movsd 0x11399e(%rip), %xmm1   # 0x1d2c88
subsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd 0x11438e(%rip), %xmm1   # 0x1d3688
mulsd %xmm1, %xmm0
movsd %xmm0, 0x1840(%rsp)
movsd 0x1840(%rsp), %xmm0
movsd 0x1880(%rsp), %xmm2
movsd 0x112f27(%rip), %xmm1   # 0x1d2248
subsd 0x1840(%rsp), %xmm1
mulsd 0x1848(%rsp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x1880(%rsp)
movsd 0x1880(%rsp), %xmm0
movq 0x1820(%rsp), %rax
movq 0xf20(%rax), %rax
movq 0x1820(%rsp), %rcx
movl 0xf08(%rcx), %ecx
subl 0x18a4(%rsp), %ecx
subl $0x1, %ecx
movq 0x1820(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x1820(%rsp), %rdx
addl 0xe7c(%rdx), %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x1878(%rsp), %xmm0
movq 0x1820(%rsp), %rax
movq 0xf20(%rax), %rax
movq 0x1820(%rsp), %rcx
movl 0xf08(%rcx), %ecx
subl 0x18a4(%rsp), %ecx
subl $0x1, %ecx
movq 0x1820(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x1820(%rsp), %rdx
addl 0xee4(%rdx), %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x1868(%rsp), %xmm0
movq 0x1820(%rsp), %rax
movq 0xf20(%rax), %rax
movq 0x1820(%rsp), %rcx
movl 0xf08(%rcx), %ecx
subl 0x18a4(%rsp), %ecx
subl $0x1, %ecx
movq 0x1820(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x1820(%rsp), %rdx
addl 0xee8(%rdx), %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x1818(%rsp), %rax
movsd 0x18(%rax), %xmm0
movsd 0x132040(%rip), %xmm1   # 0x1f1498
mulsd %xmm1, %xmm0
movsd 0x112de4(%rip), %xmm1   # 0x1d2248
addsd %xmm1, %xmm0
movsd 0x1880(%rsp), %xmm1
movq 0x1818(%rsp), %rax
movsd 0x112dc7(%rip), %xmm2   # 0x1d2248
subsd 0x18(%rax), %xmm2
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x131ffa(%rip), %xmm0   # 0x1f1490
mulsd %xmm1, %xmm0
mulsd 0x1878(%rsp), %xmm0
movq 0x1820(%rsp), %rax
movq 0xf20(%rax), %rax
movq 0x1820(%rsp), %rcx
movl 0xf08(%rcx), %ecx
subl 0x18a4(%rsp), %ecx
subl $0x1, %ecx
movq 0x1820(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x1820(%rsp), %rdx
addl 0xeec(%rdx), %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x1818(%rsp), %rax
movsd 0x18(%rax), %xmm0
movsd 0x131f94(%rip), %xmm1   # 0x1f1498
mulsd %xmm1, %xmm0
movsd 0x112d38(%rip), %xmm1   # 0x1d2248
addsd %xmm1, %xmm0
movsd 0x1880(%rsp), %xmm1
movq 0x1818(%rsp), %rax
movsd 0x112d1b(%rip), %xmm2   # 0x1d2248
subsd 0x18(%rax), %xmm2
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x131f4e(%rip), %xmm0   # 0x1f1490
mulsd %xmm1, %xmm0
mulsd 0x1878(%rsp), %xmm0
movsd 0x112cf1(%rip), %xmm2   # 0x1d2248
addsd 0x1888(%rsp), %xmm2
mulsd 0x1868(%rsp), %xmm2
divsd 0x1878(%rsp), %xmm2
movsd 0x11411e(%rip), %xmm1   # 0x1d3698
divsd %xmm1, %xmm2
movsd 0x112cc2(%rip), %xmm1   # 0x1d2248
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movq 0x1820(%rsp), %rax
movq 0xf20(%rax), %rax
movq 0x1820(%rsp), %rcx
movl 0xf08(%rcx), %ecx
subl 0x18a4(%rsp), %ecx
subl $0x1, %ecx
movq 0x1820(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x1820(%rsp), %rdx
addl 0xef0(%rdx), %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x112c66(%rip), %xmm0   # 0x1d2248
addsd 0x1888(%rsp), %xmm0
movsd 0x112c55(%rip), %xmm1   # 0x1d2248
addsd 0x1888(%rsp), %xmm1
mulsd %xmm1, %xmm0
movq 0x1818(%rsp), %rax
mulsd 0x30(%rax), %xmm0
mulsd 0x1880(%rsp), %xmm0
mulsd 0x1860(%rsp), %xmm0
movsd 0x1171c1(%rip), %xmm1   # 0x1d67e8
mulsd %xmm1, %xmm0
movsd 0x11702d(%rip), %xmm1   # 0x1d6660
mulsd %xmm1, %xmm0
movq 0x1820(%rsp), %rax
movq 0xf20(%rax), %rax
movq 0x1820(%rsp), %rcx
movl 0xf08(%rcx), %ecx
subl 0x18a4(%rsp), %ecx
subl $0x1, %ecx
movq 0x1820(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x1820(%rsp), %rdx
addl 0xe80(%rdx), %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x1828(%rsp), %rax
movswl 0x4b6(%rax), %eax
cmpl $0x1, %eax
jne 0xbf8f7
movq 0x1810(%rsp), %rax
movsd 0x38(%rax), %xmm0
movq 0x1820(%rsp), %rax
movq 0xf20(%rax), %rax
movq 0x1820(%rsp), %rcx
movl 0xf08(%rcx), %ecx
subl 0x18a4(%rsp), %ecx
subl $0x1, %ecx
movq 0x1820(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x1820(%rsp), %rdx
addl 0xea0(%rdx), %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x1810(%rsp), %rax
movsd 0x50(%rax), %xmm0
movq 0x1820(%rsp), %rax
movq 0xf20(%rax), %rax
movq 0x1820(%rsp), %rcx
movl 0xf08(%rcx), %ecx
subl 0x18a4(%rsp), %ecx
subl $0x1, %ecx
movq 0x1820(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x1820(%rsp), %rdx
addl 0xea4(%rdx), %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x1820(%rsp), %rax
movswl 0x36(%rax), %eax
cmpl $0x1, %eax
jne 0xbf7b7
movq 0x1810(%rsp), %rax
movsd 0x48(%rax), %xmm0
movq 0x1820(%rsp), %rax
movq 0xf20(%rax), %rax
movq 0x1820(%rsp), %rcx
movl 0xf08(%rcx), %ecx
subl 0x18a4(%rsp), %ecx
subl $0x1, %ecx
movq 0x1820(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x1820(%rsp), %rdx
addl 0xec8(%rdx), %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x1820(%rsp), %rax
movswl 0x38(%rax), %eax
cmpl $0x1, %eax
jne 0xbf88b
movq 0x1810(%rsp), %rax
movsd 0x58(%rax), %xmm0
movq 0x1820(%rsp), %rax
movq 0xf20(%rax), %rax
movq 0x1820(%rsp), %rcx
movl 0xf08(%rcx), %ecx
subl 0x18a4(%rsp), %ecx
subl $0x1, %ecx
movq 0x1820(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x1820(%rsp), %rdx
addl 0xeac(%rdx), %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x1810(%rsp), %rax
movsd 0x68(%rax), %xmm0
movq 0x1810(%rsp), %rax
mulsd 0x58(%rax), %xmm0
movq 0x1820(%rsp), %rax
movq 0xf20(%rax), %rax
movq 0x1820(%rsp), %rcx
movl 0xf08(%rcx), %ecx
subl 0x18a4(%rsp), %ecx
subl $0x1, %ecx
movq 0x1820(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x1820(%rsp), %rdx
addl 0xeb0(%rdx), %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x1820(%rsp), %rax
movswl 0x34(%rax), %eax
cmpl $0x1, %eax
jne 0xbf8f5
movq 0x1810(%rsp), %rax
movsd 0x30(%rax), %xmm0
movq 0x1820(%rsp), %rax
movq 0xf20(%rax), %rax
movq 0x1820(%rsp), %rcx
movl 0xf08(%rcx), %ecx
subl 0x18a4(%rsp), %ecx
subl $0x1, %ecx
movq 0x1820(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x1820(%rsp), %rdx
addl 0xed8(%rdx), %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0xbf8f7
movq 0x1828(%rsp), %rax
movswl 0x4c6(%rax), %eax
cmpl $0x1, %eax
jne 0xbf9d9
movq 0x1828(%rsp), %rax
movsd 0x100(%rax), %xmm0
movsd 0x112921(%rip), %xmm1   # 0x1d2248
addsd 0x1888(%rsp), %xmm1
mulsd %xmm1, %xmm0
movq 0x1820(%rsp), %rax
movq 0xf20(%rax), %rax
movq 0x1820(%rsp), %rcx
movl 0xf08(%rcx), %ecx
subl 0x18a4(%rsp), %ecx
subl $0x1, %ecx
movq 0x1820(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x1820(%rsp), %rdx
addl 0xea8(%rdx), %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x1810(%rsp), %rax
movsd 0x60(%rax), %xmm0
movq 0x1820(%rsp), %rax
movq 0xf20(%rax), %rax
movq 0x1820(%rsp), %rcx
movl 0xf08(%rcx), %ecx
subl 0x18a4(%rsp), %ecx
subl $0x1, %ecx
movq 0x1820(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x1820(%rsp), %rdx
addl 0xeb8(%rdx), %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movl $0x0, 0x18c4(%rsp)
movl 0x18c4(%rsp), %eax
addq $0x18c8, %rsp           # imm = 0x18C8
retq
nopw %cs:(%rax,%rax)