// File: /workspace/github_c_makefile_star2_O1/PoulinV[P]AxiCLASS/build/../source/input.c
// Function: input_read_parameters
int input_read_parameters(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;

  /** Set all input parameters to default values */
  class_call(input_default_params(pba,pth,ppt,ptr,ppm,phr,pfo,ple,psd,pop),
             errmsg,
             errmsg);

  /** Read verbose for input structure */
  class_read_int("input_verbose",input_verbose);

  /**
   * Read the general parameters of the
   *  background, thermodynamics, and perturbation structures
   * This function is exclusively for those parameters, NOT
   *  related to any physical species
   * */
  class_call(input_read_parameters_general(pfc,pba,pth,ppt,pfo,psd,
                                           errmsg),
             errmsg,
             errmsg);

  /** Read the parameters for each physical species (has to be called after the general read) */
  class_call(input_read_parameters_species(pfc,ppr,pba,pth,ppt,
                                           input_verbose,
                                           errmsg),
             errmsg,
             errmsg);

  /** Read parameters for exotic energy injection quantities */
  class_call(input_read_parameters_injection(pfc,ppr,pth,
                                             errmsg),
             errmsg,
             errmsg);

  /** Read parameters for nonlinear quantities */
  class_call(input_read_parameters_nonlinear(pfc,ppr,pba,pth,ppt,pfo,
                                             input_verbose,
                                             errmsg),
             errmsg,
             errmsg);

  /** Read parameters for primordial quantities */
  class_call(input_read_parameters_primordial(pfc,ppt,ppm,
                                              errmsg),
             errmsg,
             errmsg);

  /** Read parameters for spectra quantities */
  class_call(input_read_parameters_spectra(pfc,ppr,pba,ppm,ppt,ptr,phr,pop,
                                           errmsg),
             errmsg,
             errmsg);

  /** Read parameters for lensing quantities */
  class_call(input_read_parameters_lensing(pfc,ppr,ppt,ptr,ple,
                                           errmsg),
             errmsg,
             errmsg);

  /** Read parameters for distortions quantities */
  class_call(input_read_parameters_distortions(pfc,ppr,psd,
                                               errmsg),
             errmsg,
             errmsg);

  /** Read obsolete parameters */
  class_call(input_read_parameters_additional(pfc,ppr,pba,pth,
                                              errmsg),
             errmsg,
             errmsg);

  /** Read parameters for output quantities */
  class_call(input_read_parameters_output(pfc,pba,pth,ppt,ptr,ppm,phr,pfo,ple,psd,pop,
                                          errmsg),
             errmsg,
             errmsg);

  return _SUCCESS_;

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x848, %rsp            # imm = 0x848
movq %r9, %rax
movq %rdx, %r15
movq %rsi, 0x10(%rsp)
movq %rdi, %rbp
movq 0x8b0(%rsp), %r13
movq 0x888(%rsp), %r9
movq 0x880(%rsp), %r14
movq %rdx, %rdi
movq %rcx, 0x28(%rsp)
movq %rcx, %rsi
movq %r8, 0x18(%rsp)
movq %r8, %rdx
movq %rax, 0x38(%rsp)
movq %rax, %rcx
movq %r14, %r8
pushq 0x8a8(%rsp)
pushq 0x8a8(%rsp)
pushq 0x8a8(%rsp)
pushq 0x8a8(%rsp)
callq 0x410ea
addq $0x20, %rsp
leaq 0xb955b(%rip), %rsi     # 0xf6294
leaq 0x24(%rsp), %rdx
leaq 0x20(%rsp), %rcx
movq %rbp, %rdi
movq %r13, %r8
callq 0x1e6c0
movl %eax, %r12d
cmpl $0x1, %eax
jne 0x3cdab
leaq 0xb4693(%rip), %rsi     # 0xf13f0
leaq 0xb953e(%rip), %rdx     # 0xf62a2
movl $0x0, 0xc(%rsp)
leaq 0x40(%rsp), %r14
movq %r14, %rdi
movq %r13, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0xb42af(%rip), %rsi     # 0xf1034
leaq 0xbfd48(%rip), %rdx     # 0xfcad4
movq %r13, %rbx
movq %r13, %rdi
movl $0x8dd, %ecx            # imm = 0x8DD
movq %r14, %r8
movq 0x880(%rsp), %r14
xorl %eax, %eax
callq 0x30c2c
jmp 0x3cdbf
movq %r13, %rbx
xorl %eax, %eax
cmpl $0x1, 0x20(%rsp)
jne 0x3cdbb
movl 0x24(%rsp), %eax
movl %eax, 0xc(%rsp)
movq 0x18(%rsp), %r13
movl $0x1, %eax
cmpl $0x1, %r12d
je 0x3d1d3
subq $0x8, %rsp
movq %rbp, %rdi
movq %r15, %rsi
movq %r15, %r12
movq 0x30(%rsp), %r15
movq %r15, %rdx
movq %r13, %rcx
movq 0x8a8(%rsp), %r9
movq %rbp, 0x8(%rsp)
movq %rbx, %rbp
pushq %rbx
callq 0x419b1
addq $0x10, %rsp
cmpl $0x1, %eax
jne 0x3ce45
leaq 0xb45df(%rip), %rsi     # 0xf13f0
leaq 0xbfcd2(%rip), %rdx     # 0xfcaea
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0xb4203(%rip), %rsi     # 0xf1034
leaq 0xbfc9c(%rip), %rdx     # 0xfcad4
movq %rbp, %rdi
movl $0x8e8, %ecx            # imm = 0x8E8
jmp 0x3d1c4
subq $0x8, %rsp
movq 0x8(%rsp), %rdi
movq 0x18(%rsp), %rbx
movq %rbx, %rsi
movq %r12, 0x38(%rsp)
movq %r12, %rdx
movq %r15, %rcx
movq %r13, %r8
movl 0x14(%rsp), %r9d
pushq %rbp
callq 0x45417
addq $0x10, %rsp
cmpl $0x1, %eax
jne 0x3ceb3
leaq 0xb4571(%rip), %rsi     # 0xf13f0
leaq 0xbfca3(%rip), %rdx     # 0xfcb29
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0xb4195(%rip), %rsi     # 0xf1034
leaq 0xbfc2e(%rip), %rdx     # 0xfcad4
movq %rbp, %rdi
movl $0x8ef, %ecx            # imm = 0x8EF
jmp 0x3d1c4
movq (%rsp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
movq %rbp, %rcx
callq 0x50179
testl %eax, %eax
je 0x3cf04
leaq 0xb4520(%rip), %rsi     # 0xf13f0
leaq 0xbfc9c(%rip), %rdx     # 0xfcb73
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0xb4144(%rip), %rsi     # 0xf1034
leaq 0xbfbdd(%rip), %rdx     # 0xfcad4
movq %rbp, %rdi
movl $0x8f5, %ecx            # imm = 0x8F5
jmp 0x3d1c4
subq $0x10, %rsp
movq %rbp, 0x8(%rsp)
movq 0x10(%rsp), %rdi
movq %rbx, %rsi
movq 0x40(%rsp), %r15
movq %r15, %rdx
movq %r13, %r8
movq 0x8a0(%rsp), %r9
callq 0x51c5b
addq $0x10, %rsp
testl %eax, %eax
je 0x3cf70
leaq 0xb44b4(%rip), %rsi     # 0xf13f0
leaq 0xbfc65(%rip), %rdx     # 0xfcba8
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0xb40d8(%rip), %rsi     # 0xf1034
leaq 0xbfb71(%rip), %rdx     # 0xfcad4
movq %rbp, %rdi
movl $0x8fc, %ecx            # imm = 0x8FC
jmp 0x3d1c4
movq (%rsp), %rdi
movq %r13, %rsi
movq %r14, %rdx
movq %rbp, %rcx
callq 0x52f4d
cmpl $0x1, %eax
jne 0x3cfc2
leaq 0xb4462(%rip), %rsi     # 0xf13f0
leaq 0xbfc63(%rip), %rdx     # 0xfcbf8
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0xb4086(%rip), %rsi     # 0xf1034
leaq 0xbfb1f(%rip), %rdx     # 0xfcad4
movq %rbp, %rdi
movl $0x902, %ecx            # imm = 0x902
jmp 0x3d1c4
subq $0x8, %rsp
movq 0x8(%rsp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
movq %r14, %rcx
movq %r13, %r8
movq %r14, %r12
movq 0x40(%rsp), %r14
movq %r14, %r9
pushq %rbp
movq 0x8b8(%rsp), %rax
pushq %rax
movq 0x8a0(%rsp), %rbx
pushq %rbx
callq 0x5a09d
addq $0x20, %rsp
testl %eax, %eax
je 0x3d03d
leaq 0xb43e7(%rip), %rsi     # 0xf13f0
leaq 0xbfc1e(%rip), %rdx     # 0xfcc2e
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0xb400b(%rip), %rsi     # 0xf1034
leaq 0xbfaa4(%rip), %rdx     # 0xfcad4
movq %rbp, %rdi
movl $0x908, %ecx            # imm = 0x908
jmp 0x3d1c4
movq (%rsp), %rdi
movq 0x10(%rsp), %rsi
movq %r13, %rdx
movq %r14, %rcx
movq 0x898(%rsp), %r8
movq %rbp, %r9
callq 0x5b533
testl %eax, %eax
je 0x3d09b
leaq 0xb4389(%rip), %rsi     # 0xf13f0
leaq 0xbfc07(%rip), %rdx     # 0xfcc75
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0xb3fad(%rip), %rsi     # 0xf1034
leaq 0xbfa46(%rip), %rdx     # 0xfcad4
movq %rbp, %rdi
movl $0x90e, %ecx            # imm = 0x90E
jmp 0x3d1c4
movq (%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x8a0(%rsp), %rdx
movq %rbp, %rcx
callq 0x5bae8
testl %eax, %eax
je 0x3d0f3
leaq 0xb4331(%rip), %rsi     # 0xf13f0
leaq 0xbfbea(%rip), %rdx     # 0xfccb0
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0xb3f55(%rip), %rsi     # 0xf1034
leaq 0xbf9ee(%rip), %rdx     # 0xfcad4
movq %rbp, %rdi
movl $0x914, %ecx            # imm = 0x914
jmp 0x3d1c4
movq (%rsp), %rdi
movq 0x10(%rsp), %rsi
movq %r15, %rdx
movq %r15, %r13
movq 0x28(%rsp), %r15
movq %r15, %rcx
movq %rbp, %r8
callq 0x5c8e8
testl %eax, %eax
je 0x3d14e
leaq 0xb42d3(%rip), %rsi     # 0xf13f0
leaq 0xbfbc3(%rip), %rdx     # 0xfcce7
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0xb3ef7(%rip), %rsi     # 0xf1034
leaq 0xbf990(%rip), %rdx     # 0xfcad4
movq %rbp, %rdi
movl $0x91a, %ecx            # imm = 0x91A
jmp 0x3d1c4
movq (%rsp), %rdi
movq %r13, %rsi
movq %r15, %rdx
movq 0x18(%rsp), %rcx
movq %r14, %r8
movq %r12, %r9
pushq %rbp
pushq 0x8b0(%rsp)
pushq 0x8b0(%rsp)
pushq 0x8b0(%rsp)
pushq 0x8b0(%rsp)
pushq %rbx
callq 0x5d5ed
addq $0x30, %rsp
testl %eax, %eax
je 0x3d1e5
leaq 0xb425b(%rip), %rsi     # 0xf13f0
leaq 0xbfb85(%rip), %rdx     # 0xfcd21
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0xb3e7f(%rip), %rsi     # 0xf1034
leaq 0xbf918(%rip), %rdx     # 0xfcad4
movq %rbp, %rdi
movl $0x920, %ecx            # imm = 0x920
movq %rbx, %r8
xorl %eax, %eax
callq 0x30c2c
movl $0x1, %eax
addq $0x848, %rsp            # imm = 0x848
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %eax, %eax
jmp 0x3d1d3