// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../external/HyRec2020/hydrogen.c
// Function: rec_TLA_dxHIIdlna
double rec_TLA_dxHIIdlna(REC_COSMOPARAMS *cosmo, double xe, double xHII, double nH, double H, double TM, double TR, double Fudge) {

  double RLya, alphaB_TM, alphaB_TR, four_betaB, C, s, Dxe2, DalphaB;
  double fsR = cosmo->fsR, meR = cosmo->meR;

  rescale_T(&TM, fsR, meR);
  rescale_T(&TR, fsR, meR);

  RLya       = LYA_FACT(fsR, meR) * H / nH / (1.-xHII);
  alphaB_TM  = Fudge * alphaB_PPB(TM, fsR, meR);
  alphaB_TR  = Fudge * alphaB_PPB(TR, fsR, meR);

  four_betaB = SAHA_FACT(fsR, meR) *TR*sqrt(TR) *exp(-0.25*EI/TR) * alphaB_TR;
  C          = (3.*RLya + L2s_rescaled(fsR, meR))/(3.*RLya + L2s_rescaled(fsR, meR) + four_betaB);    /* Peebles' C-factor */

  s          = SAHA_FACT(fsR, meR) *TR*sqrt(TR) *exp(-EI/TR)/nH;
  Dxe2       = xe*xHII - s*(1.-xHII);    /* xe xp - xe xp[Saha eq with 1s] -- gives more compact expressions */
  DalphaB    = alphaB_TM - alphaB_TR;

  return -nH*(s*(1.-xHII)*DalphaB + Dxe2*alphaB_TM)*C/H + (cosmo->inj_params->ion + (1.-C)*cosmo->inj_params->exclya)/H;

}

// Assembly:
subq $0xd8, %rsp
movq %rdi, 0xd0(%rsp)
movsd %xmm0, 0xc8(%rsp)
movsd %xmm1, 0xc0(%rsp)
movsd %xmm2, 0xb8(%rsp)
movsd %xmm3, 0xb0(%rsp)
movsd %xmm4, 0xa8(%rsp)
movsd %xmm5, 0xa0(%rsp)
movsd %xmm6, 0x98(%rsp)
movq 0xd0(%rsp), %rax
movsd 0x98(%rax), %xmm0
movsd %xmm0, 0x50(%rsp)
movq 0xd0(%rsp), %rax
movsd 0xa0(%rax), %xmm0
movsd %xmm0, 0x48(%rsp)
movsd 0x50(%rsp), %xmm0
movsd 0x48(%rsp), %xmm1
leaq 0xa8(%rsp), %rdi
callq 0x1a7840
movsd 0x50(%rsp), %xmm0
movsd 0x48(%rsp), %xmm1
leaq 0xa0(%rsp), %rdi
callq 0x1a7840
movsd 0x50(%rsp), %xmm0
movsd 0x48(%rsp), %xmm1
callq 0x1a77b0
mulsd 0xb0(%rsp), %xmm0
divsd 0xb8(%rsp), %xmm0
movsd 0x2a831(%rip), %xmm1    # 0x1d2248
subsd 0xc0(%rsp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x90(%rsp)
movsd 0x98(%rsp), %xmm0
movsd %xmm0, (%rsp)
movsd 0xa8(%rsp), %xmm0
movsd 0x50(%rsp), %xmm1
movsd 0x48(%rsp), %xmm2
callq 0x1a7880
movaps %xmm0, %xmm1
movsd (%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x88(%rsp)
movsd 0x98(%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
movsd 0xa0(%rsp), %xmm0
movsd 0x50(%rsp), %xmm1
movsd 0x48(%rsp), %xmm2
callq 0x1a7880
movaps %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x80(%rsp)
movsd 0x50(%rsp), %xmm0
movsd 0x48(%rsp), %xmm1
callq 0x1a7770
mulsd 0xa0(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movsd 0xa0(%rsp), %xmm0
callq 0x82e0
movaps %xmm0, %xmm1
movsd 0x10(%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x66e16(%rip), %xmm0    # 0x20e908
divsd 0xa0(%rsp), %xmm0
callq 0x8670
movaps %xmm0, %xmm1
movsd 0x18(%rsp), %xmm0
mulsd %xmm1, %xmm0
mulsd 0x80(%rsp), %xmm0
movsd %xmm0, 0x78(%rsp)
movsd 0x90(%rsp), %xmm0
movsd %xmm0, 0x20(%rsp)
movsd 0x50(%rsp), %xmm0
movsd 0x48(%rsp), %xmm1
callq 0x1a77f0
movaps %xmm0, %xmm1
movsd 0x20(%rsp), %xmm0
movsd 0x2bb4b(%rip), %xmm2    # 0x1d3698
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x30(%rsp)
movsd 0x90(%rsp), %xmm0
movsd %xmm0, 0x28(%rsp)
movsd 0x50(%rsp), %xmm0
movsd 0x48(%rsp), %xmm1
callq 0x1a77f0
movsd 0x28(%rsp), %xmm1
movaps %xmm0, %xmm2
movsd 0x30(%rsp), %xmm0
movsd 0x2bb06(%rip), %xmm3    # 0x1d3698
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
addsd 0x78(%rsp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x70(%rsp)
movsd 0x50(%rsp), %xmm0
movsd 0x48(%rsp), %xmm1
callq 0x1a7770
mulsd 0xa0(%rsp), %xmm0
movsd %xmm0, 0x38(%rsp)
movsd 0xa0(%rsp), %xmm0
callq 0x82e0
movaps %xmm0, %xmm1
movsd 0x38(%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x40(%rsp)
movsd 0x66d0d(%rip), %xmm0    # 0x20e900
divsd 0xa0(%rsp), %xmm0
callq 0x8670
movaps %xmm0, %xmm1
movsd 0x40(%rsp), %xmm0
mulsd %xmm1, %xmm0
divsd 0xb8(%rsp), %xmm0
movsd %xmm0, 0x68(%rsp)
movsd 0xc8(%rsp), %xmm0
movsd 0xc0(%rsp), %xmm2
movsd 0x68(%rsp), %xmm1
movsd 0x2a60b(%rip), %xmm3    # 0x1d2248
subsd 0xc0(%rsp), %xmm3
mulsd %xmm3, %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x60(%rsp)
movsd 0x88(%rsp), %xmm0
subsd 0x80(%rsp), %xmm0
movsd %xmm0, 0x58(%rsp)
movsd 0xb8(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd 0x68(%rsp), %xmm1
movsd 0x2a593(%rip), %xmm2    # 0x1d2248
subsd 0xc0(%rsp), %xmm2
mulsd %xmm2, %xmm1
movsd 0x58(%rsp), %xmm3
movsd 0x60(%rsp), %xmm2
mulsd 0x88(%rsp), %xmm2
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
mulsd 0x70(%rsp), %xmm0
divsd 0xb0(%rsp), %xmm0
movq 0xd0(%rsp), %rax
movq 0xb8(%rax), %rax
movsd 0x60(%rax), %xmm2
movsd 0x2a53a(%rip), %xmm1    # 0x1d2248
subsd 0x70(%rsp), %xmm1
movq 0xd0(%rsp), %rax
movq 0xb8(%rax), %rax
movsd 0x68(%rax), %xmm3
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
divsd 0xb0(%rsp), %xmm1
addsd %xmm1, %xmm0
addq $0xd8, %rsp
retq
nopw %cs:(%rax,%rax)