// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../external/HyRec2020/history.c
// Function: rec_HubbleRate
double rec_HubbleRate(REC_COSMOPARAMS *cosmo, double z) {
  double a = 1./(1.+z), y, Tnu0;
  int i;
  cosmo->onuh2 = 0;
  Tnu0 = cosmo->T0 * pow(4./11.,1./3.) ;
  if (cosmo->Nmnu == 0) cosmo->onuh2 = 0;
  else{
    /* Massive neutrino energy density using fitting function */
    for (i=0;i<cosmo->Nmnu;i++) {
      y = cosmo->mnu[i]/kBoltz/(Tnu0/a);
      cosmo->onuh2 = cosmo->onuh2 + (1.+0.317322*0.0457584*pow(y,3.47446+1.)
          + 2.05298*0.0457584*pow(y,3.47446-1.))/(1.+0.0457584*pow(y,3.47446))*(3.45e-8*Tnu0*Tnu0*Tnu0*Tnu0)*5.6822*2;
    }
  }

  /* Total density parameter, including curvature */
  double rho = cosmo->ocbh2 /a/a/a     /* Matter (baryon + CDM) */
             + cosmo->okh2 /a/a       /* Curvature */
             + cosmo->odeh2 * pow(1./a, 3*(1+cosmo->w0)) * exp(3*cosmo->wa* (log(1./a)-1.+a))  /* Dark energy */
             + cosmo->orh2 /a/a/a/a   /* Radiation (photons + massless neutrinos) */
             + cosmo->onuh2 /a/a/a/a; /* Massive neutrinos */
  /* Conversion to Hubble rate in sec-1 */

  return( 3.2407792896393e-18 * sqrt(rho) );
}

// Assembly:
subq $0x78, %rsp
movq %rdi, 0x70(%rsp)
movsd %xmm0, 0x68(%rsp)
movsd 0x24351(%rip), %xmm1    # 0x1d2248
addsd 0x68(%rsp), %xmm1
movsd 0x24343(%rip), %xmm0    # 0x1d2248
divsd %xmm1, %xmm0
movsd %xmm0, 0x60(%rsp)
movq 0x70(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x38(%rax)
movq 0x70(%rsp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, 0x38(%rsp)
movsd 0x2871c(%rip), %xmm0    # 0x1d6650
movsd 0x2755c(%rip), %xmm1    # 0x1d5498
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x38(%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x50(%rsp)
movq 0x70(%rsp), %rax
movsd 0x60(%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x1adf7b
jp 0x1adf7b
movq 0x70(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x38(%rax)
jmp 0x1ae0d1
movl $0x0, 0x4c(%rsp)
cvtsi2sdl 0x4c(%rsp), %xmm1
movq 0x70(%rsp), %rax
movsd 0x60(%rax), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x1ae0cf
movq 0x70(%rsp), %rax
movslq 0x4c(%rsp), %rcx
movsd 0x68(%rax,%rcx,8), %xmm0
movsd 0x60943(%rip), %xmm1    # 0x20e8f8
divsd %xmm1, %xmm0
movsd 0x50(%rsp), %xmm1
divsd 0x60(%rsp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x58(%rsp)
movq 0x70(%rsp), %rax
movsd 0x38(%rax), %xmm0
movsd %xmm0, 0x28(%rsp)
movsd 0x58(%rsp), %xmm0
movsd 0x60c93(%rip), %xmm1    # 0x20ec80
callq 0x8610
movsd 0x60c7e(%rip), %xmm1    # 0x20ec78
mulsd %xmm1, %xmm0
movsd 0x24242(%rip), %xmm1    # 0x1d2248
addsd %xmm1, %xmm0
movsd %xmm0, 0x20(%rsp)
movsd 0x58(%rsp), %xmm0
movsd 0x60c52(%rip), %xmm1    # 0x20ec70
callq 0x8610
movsd 0x20(%rsp), %xmm1
movsd 0x60c37(%rip), %xmm2    # 0x20ec68
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x30(%rsp)
movsd 0x58(%rsp), %xmm0
movsd 0x60c13(%rip), %xmm1    # 0x20ec60
callq 0x8610
movsd 0x28(%rsp), %xmm1
movaps %xmm0, %xmm2
movsd 0x30(%rsp), %xmm0
movsd 0x60bef(%rip), %xmm3    # 0x20ec58
mulsd %xmm3, %xmm2
movsd 0x241d3(%rip), %xmm3    # 0x1d2248
addsd %xmm3, %xmm2
divsd %xmm2, %xmm0
movsd 0x60bcb(%rip), %xmm2    # 0x20ec50
mulsd 0x50(%rsp), %xmm2
mulsd 0x50(%rsp), %xmm2
mulsd 0x50(%rsp), %xmm2
mulsd 0x50(%rsp), %xmm2
mulsd %xmm2, %xmm0
movsd 0x60b9f(%rip), %xmm2    # 0x20ec48
mulsd %xmm2, %xmm0
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
movq 0x70(%rsp), %rax
movsd %xmm0, 0x38(%rax)
movl 0x4c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x4c(%rsp)
jmp 0x1adf83
jmp 0x1ae0d1
movq 0x70(%rsp), %rax
movsd 0x18(%rax), %xmm0
divsd 0x60(%rsp), %xmm0
divsd 0x60(%rsp), %xmm0
divsd 0x60(%rsp), %xmm0
movq 0x70(%rsp), %rax
movsd 0x28(%rax), %xmm1
divsd 0x60(%rsp), %xmm1
divsd 0x60(%rsp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0x70(%rsp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, (%rsp)
movsd 0x24124(%rip), %xmm0    # 0x1d2248
divsd 0x60(%rsp), %xmm0
movq 0x70(%rsp), %rax
movsd 0x24111(%rip), %xmm2    # 0x1d2248
addsd 0x40(%rax), %xmm2
movsd 0x25554(%rip), %xmm1    # 0x1d3698
mulsd %xmm2, %xmm1
callq 0x8610
movaps %xmm0, %xmm1
movsd (%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x18(%rsp)
movq 0x70(%rsp), %rax
movsd 0x2552c(%rip), %xmm0    # 0x1d3698
mulsd 0x48(%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movsd 0x240c9(%rip), %xmm0    # 0x1d2248
divsd 0x60(%rsp), %xmm0
callq 0x82f0
movaps %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
movsd 0x240ad(%rip), %xmm2    # 0x1d2248
subsd %xmm2, %xmm1
addsd 0x60(%rsp), %xmm1
mulsd %xmm1, %xmm0
callq 0x8670
movsd 0x10(%rsp), %xmm1
movaps %xmm0, %xmm2
movsd 0x18(%rsp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x70(%rsp), %rax
movsd 0x30(%rax), %xmm1
divsd 0x60(%rsp), %xmm1
divsd 0x60(%rsp), %xmm1
divsd 0x60(%rsp), %xmm1
divsd 0x60(%rsp), %xmm1
addsd %xmm1, %xmm0
movq 0x70(%rsp), %rax
movsd 0x38(%rax), %xmm1
divsd 0x60(%rsp), %xmm1
divsd 0x60(%rsp), %xmm1
divsd 0x60(%rsp), %xmm1
divsd 0x60(%rsp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, 0x40(%rsp)
movsd 0x40(%rsp), %xmm0
callq 0x82e0
movaps %xmm0, %xmm1
movsd 0x60a5b(%rip), %xmm0    # 0x20ec88
mulsd %xmm1, %xmm0
addq $0x78, %rsp
retq
nopw %cs:(%rax,%rax)