// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../source/input.c
// Function: input_read_from_file
int input_read_from_file(struct file_content * pfc,
                         struct precision * ppr,
                         struct background *pba,
                         struct thermodynamics *pth,
                         struct perturbations *ppt,
                         struct transfer *ptr,
                         struct primordial *ppm,
                         struct harmonic *phr,
                         struct fourier * pfo,
                         struct lensing *ple,
                         struct distortions *psd,
                         struct output *pop,
                         ErrorMsg errmsg) {


  /** Summary: */

  /** - Define local variables */
  int input_verbose = 0;
  int has_shooting;

  /** Set default values
      Before getting into the assignment of parameters and the shooting, we want
      to already fix our precision parameters. No precision parameter should
      depend on any input parameter  */
  class_call(input_read_precisions(pfc,ppr,pba,pth,ppt,ptr,ppm,phr,pfo,ple,psd,pop,
                                   errmsg),
             errmsg,
             errmsg);

  class_read_int("input_verbose",input_verbose);
  if (input_verbose >0) printf("Reading input parameters\n");

  /** -- Special setting of parameter, before anything else: did shooting fail? */
  pba->shooting_failed = _FALSE_;

  /** Find out if shooting necessary and, eventually, shoot and initialize
      read parameters */
  class_call(input_shooting(pfc,ppr,pba,pth,ppt,ptr,ppm,phr,pfo,ple,psd,pop,
                            input_verbose,
                            &has_shooting,
                            errmsg),
             errmsg,
             errmsg);

  /** Update structs with input that is potentially updated after shooting */
  class_call(input_read_parameters(pfc,ppr,pba,pth,ppt,ptr,ppm,phr,pfo,ple,psd,pop,
                                    errmsg),
              errmsg,
              errmsg);

  if (has_shooting == _TRUE_ && pba->shooting_failed == _TRUE_) {
    // Shooting failed, but error must be thrown in background in order to trigger a
    // runtime error, so here we skip the rest and go straight to background
    return _SUCCESS_;
  }

  /** Write info on the read/unread parameters. This is the correct place to do it,
      since we want it to happen after all the shooting business,
      and after the final reading of all parameters */
  class_call(input_write_info(pfc,pop,
                              errmsg),
             errmsg,
             errmsg);

  if (pfo->has_pk_eq == _TRUE_) {

    if (input_verbose > 0) {
      printf(" -> since you want to use Halofit with a non-zero wa_fld and the Pk_equal method,\n");
      printf("    calling background module to extract the effective w(tau), Omega_m(tau) parameters");
      printf("    required by this method\n");
    }
    class_call(input_prepare_pk_eq(ppr,pba,pth,pfo,input_verbose,errmsg),
               errmsg,
               errmsg);
  }

  return _SUCCESS_;

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x30a8, %rsp           # imm = 0x30A8
movq 0x3110(%rsp), %rax
movq 0x3108(%rsp), %rax
movq 0x3100(%rsp), %rax
movq 0x30f8(%rsp), %rax
movq 0x30f0(%rsp), %rax
movq 0x30e8(%rsp), %rax
movq 0x30e0(%rsp), %rax
movq %rdi, 0x3098(%rsp)
movq %rsi, 0x3090(%rsp)
movq %rdx, 0x3088(%rsp)
movq %rcx, 0x3080(%rsp)
movq %r8, 0x3078(%rsp)
movq %r9, 0x3070(%rsp)
movl $0x0, 0x306c(%rsp)
movq 0x3098(%rsp), %rdi
movq 0x3090(%rsp), %rsi
movq 0x3088(%rsp), %rdx
movq 0x3080(%rsp), %rcx
movq 0x3078(%rsp), %r8
movq 0x3070(%rsp), %r9
movq 0x30e0(%rsp), %r12
movq 0x30e8(%rsp), %r15
movq 0x30f0(%rsp), %r14
movq 0x30f8(%rsp), %rbx
movq 0x3100(%rsp), %r11
movq 0x3108(%rsp), %r10
movq 0x3110(%rsp), %rax
movq %r12, (%rsp)
movq %r15, 0x8(%rsp)
movq %r14, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq %r11, 0x20(%rsp)
movq %r10, 0x28(%rsp)
movq %rax, 0x30(%rsp)
callq 0x5e490
cmpl $0x1, %eax
jne 0x5d457
leaq 0x2860(%rsp), %rdi
movq 0x3110(%rsp), %rcx
leaq 0x174fc9(%rip), %rsi    # 0x1d23d8
leaq 0x17994a(%rip), %rdx    # 0x1d6d60
movb $0x0, %al
callq 0x5b9c0
movq 0x3110(%rsp), %rdi
leaq 0x2860(%rsp), %r8
leaq 0x174c00(%rip), %rsi    # 0x1d2034
leaq 0x179974(%rip), %rdx    # 0x1d6daf
movl $0x19b, %ecx            # imm = 0x19B
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x30a4(%rsp)
jmp 0x5d8c1
jmp 0x5d459
movq 0x3098(%rsp), %rdi
movq 0x3110(%rsp), %r8
leaq 0x179954(%rip), %rsi    # 0x1d6dc4
leaq 0x285c(%rsp), %rdx
leaq 0x2858(%rsp), %rcx
callq 0x38300
cmpl $0x1, %eax
jne 0x5d4e9
leaq 0x2050(%rsp), %rdi
movq 0x3110(%rsp), %rcx
leaq 0x174f37(%rip), %rsi    # 0x1d23d8
leaq 0x17992a(%rip), %rdx    # 0x1d6dd2
movb $0x0, %al
callq 0x5b9c0
movq 0x3110(%rsp), %rdi
leaq 0x2050(%rsp), %r8
leaq 0x174b6e(%rip), %rsi    # 0x1d2034
leaq 0x1798e2(%rip), %rdx    # 0x1d6daf
movl $0x19d, %ecx            # imm = 0x19D
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x30a4(%rsp)
jmp 0x5d8c1
cmpl $0x1, 0x2858(%rsp)
jne 0x5d501
movl 0x285c(%rsp), %eax
movl %eax, 0x306c(%rsp)
jmp 0x5d503
cmpl $0x0, 0x306c(%rsp)
jle 0x5d51b
leaq 0x1798ff(%rip), %rdi    # 0x1d6e13
movb $0x0, %al
callq 0x8030
movq 0x3088(%rsp), %rax
movw $0x0, 0x518(%rax)
movq 0x3098(%rsp), %rdi
movq 0x3090(%rsp), %rsi
movq 0x3088(%rsp), %rdx
movq 0x3080(%rsp), %rcx
movq 0x3078(%rsp), %r8
movq 0x3070(%rsp), %r9
movq 0x30e0(%rsp), %rbp
movq 0x30e8(%rsp), %r13
movq 0x30f0(%rsp), %r12
movq 0x30f8(%rsp), %r15
movq 0x3100(%rsp), %r14
movq 0x3108(%rsp), %rbx
movl 0x306c(%rsp), %r11d
movq 0x3110(%rsp), %rax
leaq 0x3068(%rsp), %r10
movq %rbp, (%rsp)
movq %r13, 0x8(%rsp)
movq %r12, 0x10(%rsp)
movq %r15, 0x18(%rsp)
movq %r14, 0x20(%rsp)
movq %rbx, 0x28(%rsp)
movl %r11d, 0x30(%rsp)
movq %r10, 0x38(%rsp)
movq %rax, 0x40(%rsp)
callq 0x68da0
cmpl $0x1, %eax
jne 0x5d639
leaq 0x1850(%rsp), %rdi
movq 0x3110(%rsp), %rcx
leaq 0x174de7(%rip), %rsi    # 0x1d23d8
leaq 0x179835(%rip), %rdx    # 0x1d6e2d
movb $0x0, %al
callq 0x5b9c0
movq 0x3110(%rsp), %rdi
leaq 0x1850(%rsp), %r8
leaq 0x174a1e(%rip), %rsi    # 0x1d2034
leaq 0x179792(%rip), %rdx    # 0x1d6daf
movl $0x1aa, %ecx            # imm = 0x1AA
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x30a4(%rsp)
jmp 0x5d8c1
movq 0x3098(%rsp), %rdi
movq 0x3090(%rsp), %rsi
movq 0x3088(%rsp), %rdx
movq 0x3080(%rsp), %rcx
movq 0x3078(%rsp), %r8
movq 0x3070(%rsp), %r9
movq 0x30e0(%rsp), %r12
movq 0x30e8(%rsp), %r15
movq 0x30f0(%rsp), %r14
movq 0x30f8(%rsp), %rbx
movq 0x3100(%rsp), %r11
movq 0x3108(%rsp), %r10
movq 0x3110(%rsp), %rax
movq %r12, (%rsp)
movq %r15, 0x8(%rsp)
movq %r14, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq %r11, 0x20(%rsp)
movq %r10, 0x28(%rsp)
movq %rax, 0x30(%rsp)
callq 0x6c0f0
cmpl $0x1, %eax
jne 0x5d72c
leaq 0x1050(%rsp), %rdi
movq 0x3110(%rsp), %rcx
leaq 0x174cf4(%rip), %rsi    # 0x1d23d8
leaq 0x1797a8(%rip), %rdx    # 0x1d6e93
movb $0x0, %al
callq 0x5b9c0
movq 0x3110(%rsp), %rdi
leaq 0x1050(%rsp), %r8
leaq 0x17492b(%rip), %rsi    # 0x1d2034
leaq 0x17969f(%rip), %rdx    # 0x1d6daf
movl $0x1b0, %ecx            # imm = 0x1B0
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x30a4(%rsp)
jmp 0x5d8c1
cmpl $0x1, 0x3068(%rsp)
jne 0x5d75a
movq 0x3088(%rsp), %rax
movswl 0x518(%rax), %eax
cmpl $0x1, %eax
jne 0x5d75a
movl $0x0, 0x30a4(%rsp)
jmp 0x5d8c1
movq 0x3098(%rsp), %rdi
movq 0x3108(%rsp), %rsi
movq 0x3110(%rsp), %rdx
callq 0x6c970
cmpl $0x1, %eax
jne 0x5d7db
leaq 0x850(%rsp), %rdi
movq 0x3110(%rsp), %rcx
leaq 0x174c45(%rip), %rsi    # 0x1d23d8
leaq 0x179748(%rip), %rdx    # 0x1d6ee2
movb $0x0, %al
callq 0x5b9c0
movq 0x3110(%rsp), %rdi
leaq 0x850(%rsp), %r8
leaq 0x17487c(%rip), %rsi    # 0x1d2034
leaq 0x1795f0(%rip), %rdx    # 0x1d6daf
movl $0x1be, %ecx            # imm = 0x1BE
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x30a4(%rsp)
jmp 0x5d8c1
movq 0x30f0(%rsp), %rax
movswl 0x28(%rax), %eax
cmpl $0x1, %eax
jne 0x5d8b6
cmpl $0x0, 0x306c(%rsp)
jle 0x5d824
leaq 0x179703(%rip), %rdi    # 0x1d6f04
movb $0x0, %al
callq 0x8030
leaq 0x179748(%rip), %rdi    # 0x1d6f57
movb $0x0, %al
callq 0x8030
leaq 0x179791(%rip), %rdi    # 0x1d6fae
movb $0x0, %al
callq 0x8030
movq 0x3090(%rsp), %rdi
movq 0x3088(%rsp), %rsi
movq 0x3080(%rsp), %rdx
movq 0x30f0(%rsp), %rcx
movl 0x306c(%rsp), %r8d
movq 0x3110(%rsp), %r9
callq 0x6d2c0
cmpl $0x1, %eax
jne 0x5d8b4
leaq 0x50(%rsp), %rdi
movq 0x3110(%rsp), %rcx
leaq 0x174b66(%rip), %rsi    # 0x1d23d8
leaq 0x179752(%rip), %rdx    # 0x1d6fcb
movb $0x0, %al
callq 0x5b9c0
movq 0x3110(%rsp), %rdi
leaq 0x50(%rsp), %r8
leaq 0x1747a0(%rip), %rsi    # 0x1d2034
leaq 0x179514(%rip), %rdx    # 0x1d6daf
movl $0x1c9, %ecx            # imm = 0x1C9
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x30a4(%rsp)
jmp 0x5d8c1
jmp 0x5d8b6
movl $0x0, 0x30a4(%rsp)
movl 0x30a4(%rsp), %eax
addq $0x30a8, %rsp           # imm = 0x30A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopw (%rax,%rax)