// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../external/HMcode/hmcode.c
// Function: hmcode_cbnu_ratio
int hmcode_cbnu_ratio(
                      double k,
                      double z,
                      double fnu,
                      double om_m,
                      double Tcmb,
                      double growth,
                      double *cbnu_ratio
                      ){

  double pcb, BigT, zeq, D, q, Nnu, yfs, Dcb, Dcbnu;

  pcb=(5.-sqrt(1+24*(1.-fnu)))/4;

  BigT=Tcmb/2.7;

  zeq=(2.5e4)*om_m*pow(BigT,-4.);
  //IF (EdS_Tcold_growth) THEN
  //    D=(1.+zeq)/(1.+z) ! EdS solution
  //ELSE
  //    D=(1.+zeq)*ungrow(z, cosm) ! General solution
  //END IF
  D=(1.+zeq)*growth;//(1.+zeq)/(1.+z);

  q=k*BigT*BigT/om_m;

  Nnu = 1;
  yfs=17.2*fnu*(1.+0.488*pow(fnu,-7./6.))*pow(Nnu*q/fnu,2);

  Dcb=pow(1.+pow(D/(1.+yfs),0.7),pcb/0.7);
  Dcbnu=pow(pow(1-fnu,0.7/pcb)+pow(D/(1.+yfs),0.7),pcb/0.7);

  *cbnu_ratio =  Dcb/Dcbnu;

  return _SUCCESS_;
}

// Assembly:
subq $0xa8, %rsp
movsd %xmm0, 0xa0(%rsp)
movsd %xmm1, 0x98(%rsp)
movsd %xmm2, 0x90(%rsp)
movsd %xmm3, 0x88(%rsp)
movsd %xmm4, 0x80(%rsp)
movsd %xmm5, 0x78(%rsp)
movq %rdi, 0x70(%rsp)
movsd 0x134e1(%rip), %xmm0    # 0x1d2248
subsd 0x90(%rsp), %xmm0
movsd 0x14918(%rip), %xmm1    # 0x1d3690
mulsd %xmm1, %xmm0
movsd 0x134c4(%rip), %xmm1    # 0x1d2248
addsd %xmm1, %xmm0
callq 0x82e0
movaps %xmm0, %xmm1
movsd 0x134d8(%rip), %xmm0    # 0x1d2270
subsd %xmm1, %xmm0
movsd 0x16724(%rip), %xmm1    # 0x1d54c8
divsd %xmm1, %xmm0
movsd %xmm0, 0x68(%rsp)
movsd 0x80(%rsp), %xmm0
movsd 0x51619(%rip), %xmm1    # 0x2103d8
divsd %xmm1, %xmm0
movsd %xmm0, 0x60(%rsp)
movsd 0x515ff(%rip), %xmm0    # 0x2103d0
mulsd 0x88(%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
movsd 0x60(%rsp), %xmm0
movsd 0x166d2(%rip), %xmm1    # 0x1d54c0
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x58(%rsp)
movsd 0x1343a(%rip), %xmm0    # 0x1d2248
addsd 0x58(%rsp), %xmm0
mulsd 0x78(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
movsd 0xa0(%rsp), %xmm0
mulsd 0x60(%rsp), %xmm0
mulsd 0x60(%rsp), %xmm0
divsd 0x88(%rsp), %xmm0
movsd %xmm0, 0x48(%rsp)
movsd 0x133fc(%rip), %xmm0    # 0x1d2248
movsd %xmm0, 0x40(%rsp)
movsd 0x5156e(%rip), %xmm0    # 0x2103c8
mulsd 0x90(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movsd 0x90(%rsp), %xmm0
movsd 0x51546(%rip), %xmm1    # 0x2103c0
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x10(%rsp), %xmm0
movsd 0x51528(%rip), %xmm2    # 0x2103b8
mulsd %xmm2, %xmm1
movsd 0x133ac(%rip), %xmm2    # 0x1d2248
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x40(%rsp), %xmm0
mulsd 0x48(%rsp), %xmm0
divsd 0x90(%rsp), %xmm0
movl $0x2, %edi
callq 0x5b970
movaps %xmm0, %xmm1
movsd 0x18(%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x38(%rsp)
movsd 0x50(%rsp), %xmm0
movsd 0x1335e(%rip), %xmm1    # 0x1d2248
addsd 0x38(%rsp), %xmm1
divsd %xmm1, %xmm0
movsd 0x3d4cc(%rip), %xmm1    # 0x1fc3c8
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x1333c(%rip), %xmm0    # 0x1d2248
addsd %xmm1, %xmm0
movsd 0x68(%rsp), %xmm1
movsd 0x3d4aa(%rip), %xmm2    # 0x1fc3c8
divsd %xmm2, %xmm1
callq 0x8610
movsd %xmm0, 0x30(%rsp)
movsd 0x13313(%rip), %xmm0    # 0x1d2248
subsd 0x90(%rsp), %xmm0
movsd 0x3d482(%rip), %xmm1    # 0x1fc3c8
divsd 0x68(%rsp), %xmm1
callq 0x8610
movsd %xmm0, 0x20(%rsp)
movsd 0x50(%rsp), %xmm0
movsd 0x132e3(%rip), %xmm1    # 0x1d2248
addsd 0x38(%rsp), %xmm1
divsd %xmm1, %xmm0
movsd 0x3d451(%rip), %xmm1    # 0x1fc3c8
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x20(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd 0x68(%rsp), %xmm1
movsd 0x3d431(%rip), %xmm2    # 0x1fc3c8
divsd %xmm2, %xmm1
callq 0x8610
movsd %xmm0, 0x28(%rsp)
movsd 0x30(%rsp), %xmm0
divsd 0x28(%rsp), %xmm0
movq 0x70(%rsp), %rax
movsd %xmm0, (%rax)
xorl %eax, %eax
addq $0xa8, %rsp
retq
nopw %cs:(%rax,%rax)