// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../external/HMcode/hmcode.c
// Function: hmcode_norad
int hmcode_norad(
                 struct hmcode_growth *phg,
                 double a
                 ){

  double AHnr_nu, H2nr_nu;
  double w_v = -1.;
  double w_de = phg->w0+(1.-a)*phg->wa;
  double X_de = pow(a, -3.*(1.+phg->w0+phg->wa))*exp(-3.*phg->wa*(1.-a));
  double Om_norad;
  double AH_norad, H2_norad;
  double a3;

  a3 = a*a*a;

  if( a > phg->a_nu ){
    AHnr_nu = phg->Omega_nu/a3;
    H2nr_nu = phg->Omega_nu/a3;
  }
  else{
    H2nr_nu = 0.;
    AHnr_nu = 0.;
  }

  AH_norad = -(phg->Omega_cdm/a3+phg->Omega_b/a3+AHnr_nu+phg->Omega_v*(1.+3.*w_v) + phg->Omega_w*(1.+3.*w_de)*X_de)/2.;
  H2_norad = (phg->Omega_cdm/a3 + phg->Omega_b/a3 + H2nr_nu + phg->Omega_v + phg->Omega_w*X_de + (1.-phg->Omega_m-phg->Omega_v-phg->Omega_w)/a/a);

  H2_norad+=phg->Omega_nu*(pow(1.+pow(0.3173*a/phg->a_nu,1.83),1./1.83)-1.)/a3/a;//Correction from inconsistent modeling between X_nu and H2_norad in HMcode

  if( a > phg->a_nu ){
    Om_norad = phg->Omega_m/a3/H2_norad;
  }
  else{
    Om_norad = (phg->Omega_cdm + phg->Omega_b)/a3/H2_norad;
  }
  phg->pvecnorad[phg->index_norad_H2] = H2_norad;
  phg->pvecnorad[phg->index_norad_AH] = AH_norad;
  phg->pvecnorad[phg->index_norad_Om] = Om_norad;

  return _SUCCESS_;
}

// Assembly:
subq $0x68, %rsp
movq %rdi, 0x60(%rsp)
movsd %xmm0, 0x58(%rsp)
movsd 0xf6e9(%rip), %xmm0     # 0x1d27d0
movsd %xmm0, 0x40(%rsp)
movq 0x60(%rsp), %rax
movsd 0x70(%rax), %xmm1
movsd 0xf149(%rip), %xmm0     # 0x1d2248
subsd 0x58(%rsp), %xmm0
movq 0x60(%rsp), %rax
movsd 0x78(%rax), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x38(%rsp)
movsd 0x58(%rsp), %xmm0
movq 0x60(%rsp), %rax
movsd 0xf118(%rip), %xmm2     # 0x1d2248
addsd 0x70(%rax), %xmm2
movq 0x60(%rsp), %rax
addsd 0x78(%rax), %xmm2
movsd 0x12861(%rip), %xmm1    # 0x1d59a8
mulsd %xmm2, %xmm1
callq 0x8610
movsd %xmm0, 0x8(%rsp)
movq 0x60(%rsp), %rax
movsd 0x12845(%rip), %xmm0    # 0x1d59a8
mulsd 0x78(%rax), %xmm0
movsd 0xf0d8(%rip), %xmm1     # 0x1d2248
subsd 0x58(%rsp), %xmm1
mulsd %xmm1, %xmm0
callq 0x8670
movaps %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x30(%rsp)
movsd 0x58(%rsp), %xmm0
mulsd 0x58(%rsp), %xmm0
mulsd 0x58(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movsd 0x58(%rsp), %xmm0
movq 0x60(%rsp), %rax
ucomisd 0x90(%rax), %xmm0
jbe 0x1c31f3
movq 0x60(%rsp), %rax
movsd 0x88(%rax), %xmm0
divsd 0x10(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
movq 0x60(%rsp), %rax
movsd 0x88(%rax), %xmm0
divsd 0x10(%rsp), %xmm0
movsd %xmm0, 0x48(%rsp)
jmp 0x1c3205
xorps %xmm0, %xmm0
movsd %xmm0, 0x48(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x50(%rsp)
movq 0x60(%rsp), %rax
movsd 0x50(%rax), %xmm0
divsd 0x10(%rsp), %xmm0
movq 0x60(%rsp), %rax
movsd 0x58(%rax), %xmm1
divsd 0x10(%rsp), %xmm1
addsd %xmm1, %xmm0
addsd 0x50(%rsp), %xmm0
movq 0x60(%rsp), %rax
movsd 0x60(%rax), %xmm1
movsd 0x40(%rsp), %xmm2
movsd 0x10451(%rip), %xmm3    # 0x1d3698
mulsd %xmm3, %xmm2
movsd 0xeff5(%rip), %xmm3     # 0x1d2248
addsd %xmm3, %xmm2
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movq 0x60(%rsp), %rax
movsd 0x68(%rax), %xmm0
movsd 0x38(%rsp), %xmm2
movsd 0x10421(%rip), %xmm3    # 0x1d3698
mulsd %xmm3, %xmm2
movsd 0xefc5(%rip), %xmm3     # 0x1d2248
addsd %xmm3, %xmm2
mulsd %xmm2, %xmm0
movsd 0x30(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd 0xf9c8(%rip), %xmm1     # 0x1d2c80
divsd %xmm1, %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x60(%rsp), %rax
movsd 0x50(%rax), %xmm1
divsd 0x10(%rsp), %xmm1
movq 0x60(%rsp), %rax
movsd 0x58(%rax), %xmm0
divsd 0x10(%rsp), %xmm0
addsd %xmm0, %xmm1
addsd 0x48(%rsp), %xmm1
movq 0x60(%rsp), %rax
addsd 0x60(%rax), %xmm1
movq 0x60(%rsp), %rax
movsd 0x68(%rax), %xmm0
movsd 0x30(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x60(%rsp), %rax
movsd 0xef2d(%rip), %xmm1     # 0x1d2248
subsd 0x80(%rax), %xmm1
movq 0x60(%rsp), %rax
subsd 0x60(%rax), %xmm1
movq 0x60(%rsp), %rax
subsd 0x68(%rax), %xmm1
divsd 0x58(%rsp), %xmm1
divsd 0x58(%rsp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, 0x18(%rsp)
movq 0x60(%rsp), %rax
movsd 0x88(%rax), %xmm0
movsd %xmm0, (%rsp)
movsd 0x4d0e9(%rip), %xmm0    # 0x210450
mulsd 0x58(%rsp), %xmm0
movq 0x60(%rsp), %rax
divsd 0x90(%rax), %xmm0
movsd 0x4d0c6(%rip), %xmm1    # 0x210448
callq 0x8610
movaps %xmm0, %xmm1
movsd 0xeeb6(%rip), %xmm0     # 0x1d2248
addsd %xmm1, %xmm0
movsd 0x4d0a2(%rip), %xmm1    # 0x210440
callq 0x8610
movaps %xmm0, %xmm1
movsd (%rsp), %xmm0
movsd 0xee95(%rip), %xmm2     # 0x1d2248
subsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
divsd 0x10(%rsp), %xmm0
divsd 0x58(%rsp), %xmm0
addsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x58(%rsp), %xmm0
movq 0x60(%rsp), %rax
ucomisd 0x90(%rax), %xmm0
jbe 0x1c3409
movq 0x60(%rsp), %rax
movsd 0x80(%rax), %xmm0
divsd 0x10(%rsp), %xmm0
divsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x28(%rsp)
jmp 0x1c342f
movq 0x60(%rsp), %rax
movsd 0x50(%rax), %xmm0
movq 0x60(%rsp), %rax
addsd 0x58(%rax), %xmm0
divsd 0x10(%rsp), %xmm0
divsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x28(%rsp)
movsd 0x18(%rsp), %xmm0
movq 0x60(%rsp), %rax
movq 0xe8(%rax), %rax
movq 0x60(%rsp), %rcx
movslq 0xd4(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x20(%rsp), %xmm0
movq 0x60(%rsp), %rax
movq 0xe8(%rax), %rax
movq 0x60(%rsp), %rcx
movslq 0xd8(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x28(%rsp), %xmm0
movq 0x60(%rsp), %rax
movq 0xe8(%rax), %rax
movq 0x60(%rsp), %rcx
movslq 0xdc(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
xorl %eax, %eax
addq $0x68, %rsp
retq
nop