// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../source/fourier.c
// Function: fourier_free
int fourier_free(
                 struct fourier *pfo
                 ) {
  int index_pk;

  if ((pfo->has_pk_matter == _TRUE_) || (pfo->method > nl_none)) {

    free(pfo->k);
    free(pfo->ln_k);

    for (index_pk=0; index_pk<pfo->pk_size; index_pk++) {
      free(pfo->ln_pk_ic_l[index_pk]);
      free(pfo->ln_pk_l[index_pk]);
      free(pfo->ln_pk_l_extra[index_pk]);
      if (pfo->ln_tau_size>1) {
        free(pfo->ddln_pk_ic_l[index_pk]);
        free(pfo->ddln_pk_l[index_pk]);
        free(pfo->ddln_pk_l_extra[index_pk]);
      }
    }
    free(pfo->ln_pk_ic_l);
    free(pfo->ln_pk_l);
    free(pfo->ln_pk_l_extra);

    if (pfo->has_pk_analytic_nowiggle == _TRUE_) {
      free(pfo->ln_pk_l_an_extra);
      free(pfo->ddln_pk_l_an_extra);
    }

    free (pfo->sigma8);

    if (pfo->ln_tau_size>1) {
      free(pfo->ddln_pk_ic_l);
      free(pfo->ddln_pk_l);
      free(pfo->ddln_pk_l_extra);
      free(pfo->ln_tau);
    }

    free(pfo->is_non_zero);
  }

  if (pfo->method > nl_none) {

    free(pfo->tau);
    for (index_pk=0;index_pk<pfo->pk_size;index_pk++){
      free(pfo->nl_corr_density[index_pk]);
      free(pfo->k_nl[index_pk]);
      free(pfo->ln_pk_nl[index_pk]);
      if (pfo->ln_tau_size > 1)
        free(pfo->ddln_pk_nl[index_pk]);
    }
    free(pfo->nl_corr_density);
    free(pfo->k_nl);
    free(pfo->ln_pk_nl);
    if (pfo->ln_tau_size > 1)
      free(pfo->ddln_pk_nl);
  }

  if (pfo->has_pk_eq == _TRUE_) {
    free(pfo->pk_eq_tau);
    free(pfo->pk_eq_w_and_Omega);
    free(pfo->pk_eq_ddw_and_ddOmega);
  }

  if (pfo->has_pk_numerical_nowiggle) {
    free(pfo->ln_pk_l_nw_extra);
    if (pfo->ln_tau_size > 1)
      free(pfo->ddln_pk_l_nw_extra);
  }

  pfo->is_allocated = _FALSE_;
  return _SUCCESS_;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq 0x10(%rsp), %rax
movswl 0x68(%rax), %eax
cmpl $0x1, %eax
je 0x12e4c5
movq 0x10(%rsp), %rax
cmpl $0x0, (%rax)
jbe 0x12e68e
movq 0x10(%rsp), %rax
movq 0x78(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rdi
callq 0x8420
movl $0x0, 0xc(%rsp)
movl 0xc(%rsp), %eax
movq 0x10(%rsp), %rcx
cmpl 0x64(%rcx), %eax
jge 0x12e5ba
movq 0x10(%rsp), %rax
movq 0x98(%rax), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0xa8(%rax), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0x108(%rax), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
cmpl $0x1, 0x90(%rax)
jle 0x12e5a8
movq 0x10(%rsp), %rax
movq 0xa0(%rax), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0xb0(%rax), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0x110(%rax), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x8420
jmp 0x12e5aa
movl 0xc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xc(%rsp)
jmp 0x12e4ec
movq 0x10(%rsp), %rax
movq 0x98(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0xa8(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0x108(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movswl 0x38(%rax), %eax
cmpl $0x1, %eax
jne 0x12e61d
movq 0x10(%rsp), %rax
movq 0x118(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0x120(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0xc8(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
cmpl $0x1, 0x90(%rax)
jle 0x12e680
movq 0x10(%rsp), %rax
movq 0xa0(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0xb0(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0x110(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0x88(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0x48(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
cmpl $0x0, (%rax)
jbe 0x12e7a3
movq 0x10(%rsp), %rax
movq 0x148(%rax), %rdi
callq 0x8420
movl $0x0, 0xc(%rsp)
movl 0xc(%rsp), %eax
movq 0x10(%rsp), %rcx
cmpl 0x64(%rcx), %eax
jge 0x12e74f
movq 0x10(%rsp), %rax
movq 0x150(%rax), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0x158(%rax), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0xb8(%rax), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
cmpl $0x1, 0x90(%rax)
jle 0x12e73d
movq 0x10(%rsp), %rax
movq 0xc0(%rax), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x8420
jmp 0x12e73f
movl 0xc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xc(%rsp)
jmp 0x12e6b5
movq 0x10(%rsp), %rax
movq 0x150(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0x158(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0xb8(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
cmpl $0x1, 0x90(%rax)
jle 0x12e7a1
movq 0x10(%rsp), %rax
movq 0xc0(%rax), %rdi
callq 0x8420
jmp 0x12e7a3
movq 0x10(%rsp), %rax
movswl 0x28(%rax), %eax
cmpl $0x1, %eax
jne 0x12e7e4
movq 0x10(%rsp), %rax
movq 0x178(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0x180(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
movq 0x188(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
cmpw $0x0, 0x3a(%rax)
je 0x12e822
movq 0x10(%rsp), %rax
movq 0x130(%rax), %rdi
callq 0x8420
movq 0x10(%rsp), %rax
cmpl $0x1, 0x90(%rax)
jle 0x12e820
movq 0x10(%rsp), %rax
movq 0x138(%rax), %rdi
callq 0x8420
jmp 0x12e822
movq 0x10(%rsp), %rax
movw $0x0, 0x992(%rax)
xorl %eax, %eax
addq $0x18, %rsp
retq
nopw (%rax,%rax)