// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../external/HMcode/hmcode.c
// Function: hmcode_noradiation_growth_compute
int hmcode_noradiation_growth_compute(
                                      struct fourier *pfo,
                                      struct hmcode_workspace *phw
                                      ){

  struct hmcode_growth *phg;
  int i;
  double *pvec_growth;
  int *used_in_output;
  //int (*generic_evolver)() = evolver_ndf15;
  double f;
  /* This could be moved to the precision stucture, but to be sure to
     get the same as the original HMcode, we hard-code it to the same
     value: */
  double tol_hmcode_growth_integration = 1e-10;

  /* evolvers */
  extern int evolver_rk(EVOLVER_PROTOTYPE);
  extern int evolver_ndf15(EVOLVER_PROTOTYPE);
  int (*generic_evolver)(EVOLVER_PROTOTYPE) = evolver_ndf15;

  phg = phw->phg;

  class_alloc(pvec_growth,phg->fg_size*sizeof(double),phg->error_message);
  class_alloc(used_in_output,phg->fg_size*sizeof(int),phg->error_message);

  for(i=0;i<phg->fg_size;++i){
    used_in_output[i] = _TRUE_;
  }

  class_call(hmcode_norad(phg, phg->a_ini),
             phg->error_message,
             phg->error_message);

  f = 1.-phg->pvecnorad[phg->index_norad_Om];

  pvec_growth[phg->index_fg_g] = pow(phg->a_ini,1.-3.*f/5.);
  pvec_growth[phg->index_fg_dg] = (1.-3.*f/5.)*pow(phg->a_ini,-3.*f/5.);

  /** - perform the integration */
  class_call(generic_evolver(hmcode_growth_derivs,
                             phg->a_ini,
                             phg->a_final,
                             pvec_growth,
                             used_in_output,
                             phg->fg_size,
                             phg,
                             tol_hmcode_growth_integration,
                             phg->smallest_allowed_variation,
                             NULL,
                             1.,
                             phg->a_table,
                             phg->a_size,
                             hmcode_growth_sources,
                             NULL,
                             phg->error_message),
             phg->error_message,
             phg->error_message);

  class_call(array_spline_table_line_to_line(
                                             phg->a_table,
                                             phg->a_size,
                                             phg->growth_table,
                                             phg->gt_size,
                                             phg->index_gt_g,
                                             phg->index_gt_ddg,
                                             _SPLINE_EST_DERIV_,
                                             phg->error_message),
             phg->error_message,
             phg->error_message);

  class_call(array_integrate_spline_table_line_to_line(
                                                       phg->a_table,
                                                       phg->a_size,
                                                       phg->growth_table,
                                                       phg->gt_size,
                                                       phg->index_gt_g,
                                                       phg->index_gt_ddg,
                                                       phg->index_gt_intg,
                                                       phg->error_message),
             phg->error_message,
             phg->error_message);

  class_call(array_spline_table_line_to_line(
                                             phg->a_table,
                                             phg->a_size,
                                             phg->growth_table,
                                             phg->gt_size,
                                             phg->index_gt_intg,
                                             phg->index_gt_ddintg,
                                             _SPLINE_EST_DERIV_,
                                             phg->error_message),
             phg->error_message,
             phg->error_message);

  class_call(array_spline_table_line_to_line(
                                             phg->a_table,
                                             phg->a_size,
                                             phg->growth_table,
                                             phg->gt_size,
                                             phg->index_gt_Omnorad,
                                             phg->index_gt_ddOmnorad,
                                             _SPLINE_EST_DERIV_,
                                             phg->error_message),
             phg->error_message,
             phg->error_message);

  for(i=0;i<phg->a_size;++i){
    phg->normgrowth_table[i] /= phg->normgrowth_table[phg->a_size-1];
    //printf("%i - %.10e %.10e \n",i,phg->a_table[i],phg->normgrowth_table[i]);
  }

  class_call(array_spline_table_columns(
                                        phg->a_table,
                                        phg->a_size,
                                        phg->normgrowth_table,
                                        1,
                                        phg->ddnormgrowth_table,
                                        _SPLINE_EST_DERIV_,
                                        phg->error_message),
             phg->error_message,
             phg->error_message);

  class_call(array_spline_table_columns(
                                        phg->normgrowth_table,
                                        phg->a_size,
                                        phg->a_table,
                                        1,
                                        phg->dda_table,
                                        _SPLINE_EST_DERIV_,
                                        phg->error_message),
             phg->error_message,
             phg->error_message);

  for(i=0;i<phg->a_size;++i){
    //printf("%i - %.10e %.10e %.10e \n",i,phg->a_table[i],phg->ddnormgrowth_table[i],phg->dda_table[i]);
  }

  free(pvec_growth);
  free(used_in_output);

  return _SUCCESS_;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x5098, %rsp           # imm = 0x5098
movq %rdi, 0x5088(%rsp)
movq %rsi, 0x5080(%rsp)
movsd 0x13f4e(%rip), %xmm0    # 0x1d6530
movsd %xmm0, 0x5050(%rsp)
leaq -0x1b30b2(%rip), %rax   # 0xf540
movq %rax, 0x5048(%rsp)
movq 0x5080(%rsp), %rax
movq 0x70(%rax), %rax
movq %rax, 0x5078(%rsp)
movq 0x5078(%rsp), %rax
movslq 0xd0(%rax), %rdi
shlq $0x3, %rdi
callq 0x8460
movq %rax, 0x5068(%rsp)
cmpq $0x0, 0x5068(%rsp)
jne 0x1c26b8
movq 0x5078(%rsp), %rax
movslq 0xd0(%rax), %rax
shlq $0x3, %rax
movl %eax, 0x5044(%rsp)
leaq 0x4840(%rsp), %rdi
movl 0x5044(%rsp), %ecx
leaq 0xf99b(%rip), %rsi      # 0x1d2004
leaq 0x4fe7f(%rip), %rdx     # 0x2124ef
movb $0x0, %al
callq 0x5b9c0
movq 0x5078(%rsp), %rdi
addq $0x100, %rdi            # imm = 0x100
leaq 0x4840(%rsp), %r8
leaq 0xf99f(%rip), %rsi      # 0x1d2034
leaq 0x4fe5f(%rip), %rdx     # 0x2124fb
movl $0x993, %ecx            # imm = 0x993
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x5094(%rsp)
jmp 0x1c3030
movq 0x5078(%rsp), %rax
movslq 0xd0(%rax), %rdi
shlq $0x2, %rdi
callq 0x8460
movq %rax, 0x5060(%rsp)
cmpq $0x0, 0x5060(%rsp)
jne 0x1c2762
movq 0x5078(%rsp), %rax
movslq 0xd0(%rax), %rax
shlq $0x2, %rax
movl %eax, 0x483c(%rsp)
leaq 0x4030(%rsp), %rdi
movl 0x483c(%rsp), %ecx
leaq 0xf8f1(%rip), %rsi      # 0x1d2004
leaq 0x311bb(%rip), %rdx     # 0x1f38d5
movb $0x0, %al
callq 0x5b9c0
movq 0x5078(%rsp), %rdi
addq $0x100, %rdi            # imm = 0x100
leaq 0x4030(%rsp), %r8
leaq 0xf8f5(%rip), %rsi      # 0x1d2034
leaq 0x4fdb5(%rip), %rdx     # 0x2124fb
movl $0x994, %ecx            # imm = 0x994
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x5094(%rsp)
jmp 0x1c3030
movl $0x0, 0x5074(%rsp)
movl 0x5074(%rsp), %eax
movq 0x5078(%rsp), %rcx
cmpl 0xd0(%rcx), %eax
jge 0x1c27ae
movq 0x5060(%rsp), %rax
movslq 0x5074(%rsp), %rcx
movl $0x1, (%rax,%rcx,4)
movl 0x5074(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x5074(%rsp)
jmp 0x1c276d
movq 0x5078(%rsp), %rdi
movq 0x5078(%rsp), %rax
movsd 0xb0(%rax), %xmm0
callq 0x1c30d0
cmpl $0x1, %eax
jne 0x1c283d
leaq 0x3830(%rsp), %rdi
movq 0x5078(%rsp), %rcx
addq $0x100, %rcx            # imm = 0x100
leaq 0xfbea(%rip), %rsi      # 0x1d23d8
leaq 0x4fd28(%rip), %rdx     # 0x21251d
movb $0x0, %al
callq 0x5b9c0
movq 0x5078(%rsp), %rdi
addq $0x100, %rdi            # imm = 0x100
leaq 0x3830(%rsp), %r8
leaq 0xf81a(%rip), %rsi      # 0x1d2034
leaq 0x4fcda(%rip), %rdx     # 0x2124fb
movl $0x99c, %ecx            # imm = 0x99C
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x5094(%rsp)
jmp 0x1c3030
movq 0x5078(%rsp), %rax
movq 0xe8(%rax), %rax
movq 0x5078(%rsp), %rcx
movslq 0xdc(%rcx), %rcx
movsd 0xf9e5(%rip), %xmm0     # 0x1d2248
subsd (%rax,%rcx,8), %xmm0
movsd %xmm0, 0x5058(%rsp)
movq 0x5078(%rsp), %rax
movsd 0xb0(%rax), %xmm0
movsd 0x10e0f(%rip), %xmm2    # 0x1d3698
mulsd 0x5058(%rsp), %xmm2
movsd 0xf9d6(%rip), %xmm1     # 0x1d2270
divsd %xmm1, %xmm2
movsd 0xf9a2(%rip), %xmm1     # 0x1d2248
subsd %xmm2, %xmm1
callq 0x8610
movq 0x5068(%rsp), %rax
movq 0x5078(%rsp), %rcx
movslq 0xc8(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x10dc5(%rip), %xmm1    # 0x1d3698
mulsd 0x5058(%rsp), %xmm1
movsd 0xf98c(%rip), %xmm0     # 0x1d2270
divsd %xmm0, %xmm1
movsd 0xf958(%rip), %xmm0     # 0x1d2248
subsd %xmm1, %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0x5078(%rsp), %rax
movsd 0xb0(%rax), %xmm0
movsd 0x13096(%rip), %xmm1    # 0x1d59a8
mulsd 0x5058(%rsp), %xmm1
movsd 0xf94d(%rip), %xmm2     # 0x1d2270
divsd %xmm2, %xmm1
callq 0x8610
movaps %xmm0, %xmm1
movsd 0x28(%rsp), %xmm0
mulsd %xmm1, %xmm0
movq 0x5068(%rsp), %rax
movq 0x5078(%rsp), %rcx
movslq 0xcc(%rcx), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x5048(%rsp), %rax
movq 0x5078(%rsp), %rcx
movsd 0xb0(%rcx), %xmm0
movq 0x5078(%rsp), %rcx
movsd 0xb8(%rcx), %xmm1
movq 0x5068(%rsp), %rsi
movq 0x5060(%rsp), %rdx
movq 0x5078(%rsp), %rcx
movl 0xd0(%rcx), %ecx
movq 0x5078(%rsp), %r8
movsd 0x5050(%rsp), %xmm2
movq 0x5078(%rsp), %rdi
movsd 0xc0(%rdi), %xmm3
movq 0x5078(%rsp), %rdi
movq (%rdi), %r14
movq 0x5078(%rsp), %rdi
movl 0x8(%rdi), %ebx
movq 0x5078(%rsp), %r10
addq $0x100, %r10            # imm = 0x100
leaq 0xab8(%rip), %rdi       # 0x1c34a0
xorl %r9d, %r9d
movsd 0xf855(%rip), %xmm4     # 0x1d2248
leaq 0xce6(%rip), %r11       # 0x1c36e0
movq %r14, (%rsp)
movl %ebx, 0x8(%rsp)
movq %r11, 0x10(%rsp)
movq $0x0, 0x18(%rsp)
movq %r10, 0x20(%rsp)
callq *%rax
cmpl $0x1, %eax
jne 0x1c2a89
leaq 0x3030(%rsp), %rdi
movq 0x5078(%rsp), %rcx
addq $0x100, %rcx            # imm = 0x100
leaq 0xf99e(%rip), %rsi      # 0x1d23d8
leaq 0x4fafa(%rip), %rdx     # 0x21253b
movb $0x0, %al
callq 0x5b9c0
movq 0x5078(%rsp), %rdi
addq $0x100, %rdi            # imm = 0x100
leaq 0x3030(%rsp), %r8
leaq 0xf5ce(%rip), %rsi      # 0x1d2034
leaq 0x4fa8e(%rip), %rdx     # 0x2124fb
movl $0x9b5, %ecx            # imm = 0x9B5
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x5094(%rsp)
jmp 0x1c3030
movq 0x5078(%rsp), %rax
movq (%rax), %rdi
movq 0x5078(%rsp), %rax
movl 0x8(%rax), %esi
movq 0x5078(%rsp), %rax
movq 0x10(%rax), %rdx
movq 0x5078(%rsp), %rax
movl 0x30(%rax), %ecx
movq 0x5078(%rsp), %rax
movl 0x34(%rax), %r8d
movq 0x5078(%rsp), %rax
movl 0x38(%rax), %r9d
movq 0x5078(%rsp), %rax
addq $0x100, %rax            # imm = 0x100
movl $0x1, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x1c1c0
cmpl $0x1, %eax
jne 0x1c2b5f
leaq 0x2830(%rsp), %rdi
movq 0x5078(%rsp), %rcx
addq $0x100, %rcx            # imm = 0x100
leaq 0xf8c8(%rip), %rsi      # 0x1d23d8
leaq 0x4fb2e(%rip), %rdx     # 0x212645
movb $0x0, %al
callq 0x5b9c0
movq 0x5078(%rsp), %rdi
addq $0x100, %rdi            # imm = 0x100
leaq 0x2830(%rsp), %r8
leaq 0xf4f8(%rip), %rsi      # 0x1d2034
leaq 0x4f9b8(%rip), %rdx     # 0x2124fb
movl $0x9c1, %ecx            # imm = 0x9C1
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x5094(%rsp)
jmp 0x1c3030
movq 0x5078(%rsp), %rax
movq (%rax), %rdi
movq 0x5078(%rsp), %rax
movl 0x8(%rax), %esi
movq 0x5078(%rsp), %rax
movq 0x10(%rax), %rdx
movq 0x5078(%rsp), %rax
movl 0x30(%rax), %ecx
movq 0x5078(%rsp), %rax
movl 0x34(%rax), %r8d
movq 0x5078(%rsp), %rax
movl 0x38(%rax), %r9d
movq 0x5078(%rsp), %rax
movl 0x3c(%rax), %r10d
movq 0x5078(%rsp), %rax
addq $0x100, %rax            # imm = 0x100
movl %r10d, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x1ac60
cmpl $0x1, %eax
jne 0x1c2c3e
leaq 0x2030(%rsp), %rdi
movq 0x5078(%rsp), %rcx
addq $0x100, %rcx            # imm = 0x100
leaq 0xf7e9(%rip), %rsi      # 0x1d23d8
leaq 0x4fae7(%rip), %rdx     # 0x2126dd
movb $0x0, %al
callq 0x5b9c0
movq 0x5078(%rsp), %rdi
addq $0x100, %rdi            # imm = 0x100
leaq 0x2030(%rsp), %r8
leaq 0xf419(%rip), %rsi      # 0x1d2034
leaq 0x4f8d9(%rip), %rdx     # 0x2124fb
movl $0x9cd, %ecx            # imm = 0x9CD
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x5094(%rsp)
jmp 0x1c3030
movq 0x5078(%rsp), %rax
movq (%rax), %rdi
movq 0x5078(%rsp), %rax
movl 0x8(%rax), %esi
movq 0x5078(%rsp), %rax
movq 0x10(%rax), %rdx
movq 0x5078(%rsp), %rax
movl 0x30(%rax), %ecx
movq 0x5078(%rsp), %rax
movl 0x3c(%rax), %r8d
movq 0x5078(%rsp), %rax
movl 0x40(%rax), %r9d
movq 0x5078(%rsp), %rax
addq $0x100, %rax            # imm = 0x100
movl $0x1, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x1c1c0
cmpl $0x1, %eax
jne 0x1c2d14
leaq 0x1830(%rsp), %rdi
movq 0x5078(%rsp), %rcx
addq $0x100, %rcx            # imm = 0x100
leaq 0xf713(%rip), %rsi      # 0x1d23d8
leaq 0x4fac4(%rip), %rdx     # 0x212790
movb $0x0, %al
callq 0x5b9c0
movq 0x5078(%rsp), %rdi
addq $0x100, %rdi            # imm = 0x100
leaq 0x1830(%rsp), %r8
leaq 0xf343(%rip), %rsi      # 0x1d2034
leaq 0x4f803(%rip), %rdx     # 0x2124fb
movl $0x9d9, %ecx            # imm = 0x9D9
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x5094(%rsp)
jmp 0x1c3030
movq 0x5078(%rsp), %rax
movq (%rax), %rdi
movq 0x5078(%rsp), %rax
movl 0x8(%rax), %esi
movq 0x5078(%rsp), %rax
movq 0x10(%rax), %rdx
movq 0x5078(%rsp), %rax
movl 0x30(%rax), %ecx
movq 0x5078(%rsp), %rax
movl 0x44(%rax), %r8d
movq 0x5078(%rsp), %rax
movl 0x48(%rax), %r9d
movq 0x5078(%rsp), %rax
addq $0x100, %rax            # imm = 0x100
movl $0x1, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x1c1c0
cmpl $0x1, %eax
jne 0x1c2dea
leaq 0x1030(%rsp), %rdi
movq 0x5078(%rsp), %rcx
addq $0x100, %rcx            # imm = 0x100
leaq 0xf63d(%rip), %rsi      # 0x1d23d8
leaq 0x4fa8c(%rip), %rdx     # 0x21282e
movb $0x0, %al
callq 0x5b9c0
movq 0x5078(%rsp), %rdi
addq $0x100, %rdi            # imm = 0x100
leaq 0x1030(%rsp), %r8
leaq 0xf26d(%rip), %rsi      # 0x1d2034
leaq 0x4f72d(%rip), %rdx     # 0x2124fb
movl $0x9e5, %ecx            # imm = 0x9E5
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x5094(%rsp)
jmp 0x1c3030
movl $0x0, 0x5074(%rsp)
movl 0x5074(%rsp), %eax
movq 0x5078(%rsp), %rcx
cmpl 0x8(%rcx), %eax
jge 0x1c2e60
movq 0x5078(%rsp), %rax
movq 0x18(%rax), %rax
movq 0x5078(%rsp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm1
movq 0x5078(%rsp), %rax
movq 0x18(%rax), %rax
movslq 0x5074(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl 0x5074(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x5074(%rsp)
jmp 0x1c2df5
movq 0x5078(%rsp), %rax
movq (%rax), %rdi
movq 0x5078(%rsp), %rax
movl 0x8(%rax), %esi
movq 0x5078(%rsp), %rax
movq 0x18(%rax), %rdx
movq 0x5078(%rsp), %rax
movq 0x20(%rax), %r8
movq 0x5078(%rsp), %rax
addq $0x100, %rax            # imm = 0x100
movl $0x1, %r9d
movl %r9d, %ecx
movq %rax, (%rsp)
callq 0x1f4b0
cmpl $0x1, %eax
jne 0x1c2f20
leaq 0x830(%rsp), %rdi
movq 0x5078(%rsp), %rcx
addq $0x100, %rcx            # imm = 0x100
leaq 0xf507(%rip), %rsi      # 0x1d23d8
leaq 0x4f9fa(%rip), %rdx     # 0x2128d2
movb $0x0, %al
callq 0x5b9c0
movq 0x5078(%rsp), %rdi
addq $0x100, %rdi            # imm = 0x100
leaq 0x830(%rsp), %r8
leaq 0xf137(%rip), %rsi      # 0x1d2034
leaq 0x4f5f7(%rip), %rdx     # 0x2124fb
movl $0x9f5, %ecx            # imm = 0x9F5
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x5094(%rsp)
jmp 0x1c3030
movq 0x5078(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x5078(%rsp), %rax
movl 0x8(%rax), %esi
movq 0x5078(%rsp), %rax
movq (%rax), %rdx
movq 0x5078(%rsp), %rax
movq 0x28(%rax), %r8
movq 0x5078(%rsp), %rax
addq $0x100, %rax            # imm = 0x100
movl $0x1, %r9d
movl %r9d, %ecx
movq %rax, (%rsp)
callq 0x1f4b0
cmpl $0x1, %eax
jne 0x1c2fd7
leaq 0x30(%rsp), %rdi
movq 0x5078(%rsp), %rcx
addq $0x100, %rcx            # imm = 0x100
leaq 0xf44a(%rip), %rsi      # 0x1d23d8
leaq 0x4f9be(%rip), %rdx     # 0x212953
movb $0x0, %al
callq 0x5b9c0
movq 0x5078(%rsp), %rdi
addq $0x100, %rdi            # imm = 0x100
leaq 0x30(%rsp), %r8
leaq 0xf07d(%rip), %rsi      # 0x1d2034
leaq 0x4f53d(%rip), %rdx     # 0x2124fb
movl $0xa00, %ecx            # imm = 0xA00
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x5094(%rsp)
jmp 0x1c3030
movl $0x0, 0x5074(%rsp)
movl 0x5074(%rsp), %eax
movq 0x5078(%rsp), %rcx
cmpl 0x8(%rcx), %eax
jge 0x1c300b
jmp 0x1c2ff8
movl 0x5074(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x5074(%rsp)
jmp 0x1c2fe2
movq 0x5068(%rsp), %rdi
callq 0x8420
movq 0x5060(%rsp), %rdi
callq 0x8420
movl $0x0, 0x5094(%rsp)
movl 0x5094(%rsp), %eax
addq $0x5098, %rsp           # imm = 0x5098
popq %rbx
popq %r14
retq
nopw %cs:(%rax,%rax)