// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../source/fourier.c
// Function: fourier_pks_at_k_and_z
int fourier_pks_at_k_and_z(
                           struct background * pba,
                           struct primordial * ppm,
                           struct fourier *pfo,
                           enum pk_outputs pk_output,
                           double k,
                           double z,
                           double * out_pk, // number P_m(k)
                           double * out_pk_ic, // array P_m_ic(k) of index [index_ic1_ic2]
                           double * out_pk_cb, // number P_cb(k)
                           double * out_pk_cb_ic // array P__cb_ic(k)of index [index_ic1_ic2]
                           ) {

  if (pfo->has_pk_cb == _TRUE_) {

    class_call(fourier_pk_at_k_and_z(pba,
                                     ppm,
                                     pfo,
                                     pk_output,
                                     k,
                                     z,
                                     pfo->index_pk_cb,
                                     out_pk_cb,
                                     out_pk_cb_ic
                                     ),
               pfo->error_message,
               pfo->error_message);
  }
  if (pfo->has_pk_m == _TRUE_) {

    class_call(fourier_pk_at_k_and_z(pba,
                                     ppm,
                                     pfo,
                                     pk_output,
                                     k,
                                     z,
                                     pfo->index_pk_m,
                                     out_pk,
                                     out_pk_ic
                                     ),
               pfo->error_message,
               pfo->error_message);
  }

  return _SUCCESS_;
}

// Assembly:
subq $0x1058, %rsp           # imm = 0x1058
movq 0x1068(%rsp), %rax
movq 0x1060(%rsp), %rax
movq %rdi, 0x1048(%rsp)
movq %rsi, 0x1040(%rsp)
movq %rdx, 0x1038(%rsp)
movl %ecx, 0x1034(%rsp)
movsd %xmm0, 0x1028(%rsp)
movsd %xmm1, 0x1020(%rsp)
movq %r8, 0x1018(%rsp)
movq %r9, 0x1010(%rsp)
movq 0x1038(%rsp), %rax
movswl 0x52(%rax), %eax
cmpl $0x1, %eax
jne 0x126627
movq 0x1048(%rsp), %rdi
movq 0x1040(%rsp), %rsi
movq 0x1038(%rsp), %rdx
movl 0x1034(%rsp), %ecx
movsd 0x1028(%rsp), %xmm0
movsd 0x1020(%rsp), %xmm1
movq 0x1038(%rsp), %rax
movl 0x58(%rax), %r8d
movq 0x1060(%rsp), %r9
movq 0x1068(%rsp), %rax
movq %rax, (%rsp)
callq 0x125160
cmpl $0x1, %eax
jne 0x126625
leaq 0x810(%rsp), %rdi
movq 0x1038(%rsp), %rcx
addq $0x192, %rcx            # imm = 0x192
leaq 0xabe02(%rip), %rsi     # 0x1d23d8
leaq 0xd9c9c(%rip), %rdx     # 0x200279
movb $0x0, %al
callq 0x5b9c0
movq 0x1038(%rsp), %rdi
addq $0x192, %rdi            # imm = 0x192
leaq 0x810(%rsp), %r8
leaq 0xaba32(%rip), %rsi     # 0x1d2034
leaq 0xd9cd2(%rip), %rdx     # 0x2002db
movl $0x306, %ecx            # imm = 0x306
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x1054(%rsp)
jmp 0x126708
jmp 0x126627
movq 0x1038(%rsp), %rax
movswl 0x50(%rax), %eax
cmpl $0x1, %eax
jne 0x1266fd
movq 0x1048(%rsp), %rdi
movq 0x1040(%rsp), %rsi
movq 0x1038(%rsp), %rdx
movl 0x1034(%rsp), %ecx
movsd 0x1028(%rsp), %xmm0
movsd 0x1020(%rsp), %xmm1
movq 0x1038(%rsp), %rax
movl 0x54(%rax), %r8d
movq 0x1018(%rsp), %r9
movq 0x1010(%rsp), %rax
movq %rax, (%rsp)
callq 0x125160
cmpl $0x1, %eax
jne 0x1266fb
leaq 0x10(%rsp), %rdi
movq 0x1038(%rsp), %rcx
addq $0x192, %rcx            # imm = 0x192
leaq 0xabd26(%rip), %rsi     # 0x1d23d8
leaq 0xd9c39(%rip), %rdx     # 0x2002f2
movb $0x0, %al
callq 0x5b9c0
movq 0x1038(%rsp), %rdi
addq $0x192, %rdi            # imm = 0x192
leaq 0x10(%rsp), %r8
leaq 0xab959(%rip), %rsi     # 0x1d2034
leaq 0xd9bf9(%rip), %rdx     # 0x2002db
movl $0x315, %ecx            # imm = 0x315
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x1054(%rsp)
jmp 0x126708
jmp 0x1266fd
movl $0x0, 0x1054(%rsp)
movl 0x1054(%rsp), %eax
addq $0x1058, %rsp           # imm = 0x1058
retq
nopw (%rax,%rax)