// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../main/class.c
// Function: main
int main(int argc, char **argv) {

  struct precision pr;        /* for precision parameters */
  struct background ba;       /* for cosmological background */
  struct thermodynamics th;           /* for thermodynamics */
  struct perturbations pt;         /* for source functions */
  struct primordial pm;       /* for primordial spectra */
  struct fourier fo;        /* for non-linear spectra */
  struct transfer tr;        /* for transfer functions */
  struct harmonic hr;          /* for output spectra */
  struct lensing le;          /* for lensed spectra */
  struct distortions sd;      /* for spectral distortions */
  struct output op;           /* for output files */
  ErrorMsg errmsg;            /* for error messages */

  if (input_init(argc, argv,&pr,&ba,&th,&pt,&tr,&pm,&hr,&fo,&le,&sd,&op,errmsg) == _FAILURE_) {
    printf("\n\nError running input_init \n=>%s\n",errmsg);
    return _FAILURE_;
  }

  if (background_init(&pr,&ba) == _FAILURE_) {
    printf("\n\nError running background_init \n=>%s\n",ba.error_message);
    return _FAILURE_;
  }

  if (thermodynamics_init(&pr,&ba,&th) == _FAILURE_) {
    printf("\n\nError in thermodynamics_init \n=>%s\n",th.error_message);
    return _FAILURE_;
  }

  if (perturbations_init(&pr,&ba,&th,&pt) == _FAILURE_) {
    printf("\n\nError in perturbations_init \n=>%s\n",pt.error_message);
    return _FAILURE_;
  }

  if (primordial_init(&pr,&pt,&pm) == _FAILURE_) {
    printf("\n\nError in primordial_init \n=>%s\n",pm.error_message);
    return _FAILURE_;
  }

  if (fourier_init(&pr,&ba,&th,&pt,&pm,&fo) == _FAILURE_) {
    printf("\n\nError in fourier_init \n=>%s\n",fo.error_message);
    return _FAILURE_;
  }

  if (transfer_init(&pr,&ba,&th,&pt,&fo,&tr) == _FAILURE_) {
    printf("\n\nError in transfer_init \n=>%s\n",tr.error_message);
    return _FAILURE_;
  }

  if (harmonic_init(&pr,&ba,&pt,&pm,&fo,&tr,&hr) == _FAILURE_) {
    printf("\n\nError in harmonic_init \n=>%s\n",hr.error_message);
    return _FAILURE_;
  }

  if (lensing_init(&pr,&pt,&hr,&fo,&le) == _FAILURE_) {
    printf("\n\nError in lensing_init \n=>%s\n",le.error_message);
    return _FAILURE_;
  }

  if (distortions_init(&pr,&ba,&th,&pt,&pm,&sd) == _FAILURE_) {
    printf("\n\nError in distortions_init \n=>%s\n",sd.error_message);
    return _FAILURE_;
  }

  if (output_init(&ba,&th,&pt,&pm,&tr,&hr,&fo,&le,&sd,&op) == _FAILURE_) {
    printf("\n\nError in output_init \n=>%s\n",op.error_message);
    return _FAILURE_;
  }

  /****** all calculations done, now free the structures ******/

  if (distortions_free(&sd) == _FAILURE_) {
    printf("\n\nError in distortions_free \n=>%s\n",sd.error_message);
    return _FAILURE_;
  }

  if (lensing_free(&le) == _FAILURE_) {
    printf("\n\nError in lensing_free \n=>%s\n",le.error_message);
    return _FAILURE_;
  }

  if (harmonic_free(&hr) == _FAILURE_) {
    printf("\n\nError in harmonic_free \n=>%s\n",hr.error_message);
    return _FAILURE_;
  }

  if (transfer_free(&tr) == _FAILURE_) {
    printf("\n\nError in transfer_free \n=>%s\n",tr.error_message);
    return _FAILURE_;
  }

  if (fourier_free(&fo) == _FAILURE_) {
    printf("\n\nError in fourier_free \n=>%s\n",fo.error_message);
    return _FAILURE_;
  }

  if (primordial_free(&pm) == _FAILURE_) {
    printf("\n\nError in primordial_free \n=>%s\n",pm.error_message);
    return _FAILURE_;
  }

  if (perturbations_free(&pt) == _FAILURE_) {
    printf("\n\nError in perturbations_free \n=>%s\n",pt.error_message);
    return _FAILURE_;
  }

  if (thermodynamics_free(&th) == _FAILURE_) {
    printf("\n\nError in thermodynamics_free \n=>%s\n",th.error_message);
    return _FAILURE_;
  }

  if (background_free(&ba) == _FAILURE_) {
    printf("\n\nError in background_free \n=>%s\n",ba.error_message);
    return _FAILURE_;
  }

  return _SUCCESS_;

}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x11ea0, %rsp          # imm = 0x11EA0
movl $0x0, 0x11e9c(%rsp)
movl %edi, 0x11e98(%rsp)
movq %rsi, 0x11e90(%rsp)
movl 0x11e98(%rsp), %edi
movq 0x11e90(%rsp), %rsi
leaq 0x40(%rsp), %rax
leaq 0x10c60(%rsp), %rdx
leaq 0xf740(%rsp), %rcx
leaq 0xded8(%rsp), %r8
leaq 0x6a48(%rsp), %r9
leaq 0x43f0(%rsp), %r13
leaq 0x5ef8(%rsp), %r12
leaq 0x3b00(%rsp), %r15
leaq 0x5560(%rsp), %r14
leaq 0x3268(%rsp), %rbx
leaq 0x1460(%rsp), %r11
leaq 0x840(%rsp), %r10
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq %rbx, 0x20(%rsp)
movq %r11, 0x28(%rsp)
movq %r10, 0x30(%rsp)
movq %rax, 0x38(%rsp)
callq 0x5ca40
cmpl $0x1, %eax
jne 0x1d17ca
leaq 0x40(%rsp), %rsi
leaq 0x43d57(%rip), %rdi     # 0x21550a
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0x10c60(%rsp), %rdi
leaq 0xf740(%rsp), %rsi
callq 0xa2940
cmpl $0x1, %eax
jne 0x1d1811
leaq 0xf740(%rsp), %rsi
addq $0xd1c, %rsi            # imm = 0xD1C
leaq 0x43d32(%rip), %rdi     # 0x21552c
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0x10c60(%rsp), %rdi
leaq 0xf740(%rsp), %rsi
leaq 0xded8(%rsp), %rdx
callq 0xb2880
cmpl $0x1, %eax
jne 0x1d1860
leaq 0xded8(%rsp), %rsi
addq $0x1064, %rsi           # imm = 0x1064
leaq 0x43d0a(%rip), %rdi     # 0x215553
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0x10c60(%rsp), %rdi
leaq 0xf740(%rsp), %rsi
leaq 0xded8(%rsp), %rdx
leaq 0x6a48(%rsp), %rcx
callq 0xca790
cmpl $0x1, %eax
jne 0x1d18b7
leaq 0x6a48(%rsp), %rsi
addq $0x6c8a, %rsi           # imm = 0x6C8A
leaq 0x43cd9(%rip), %rdi     # 0x215579
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0x10c60(%rsp), %rdi
leaq 0x6a48(%rsp), %rsi
leaq 0x5ef8(%rsp), %rdx
callq 0x111d00
cmpl $0x1, %eax
jne 0x1d1906
leaq 0x5ef8(%rsp), %rsi
addq $0x32a, %rsi            # imm = 0x32A
leaq 0x43caf(%rip), %rdi     # 0x21559e
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0x10c60(%rsp), %rdi
leaq 0xf740(%rsp), %rsi
leaq 0xded8(%rsp), %rdx
leaq 0x6a48(%rsp), %rcx
leaq 0x5ef8(%rsp), %r8
leaq 0x5560(%rsp), %r9
callq 0x128e40
cmpl $0x1, %eax
jne 0x1d196d
leaq 0x5560(%rsp), %rsi
addq $0x192, %rsi            # imm = 0x192
leaq 0x43c6a(%rip), %rdi     # 0x2155c0
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0x10c60(%rsp), %rdi
leaq 0xf740(%rsp), %rsi
leaq 0xded8(%rsp), %rdx
leaq 0x6a48(%rsp), %rcx
leaq 0x5560(%rsp), %r8
leaq 0x43f0(%rsp), %r9
callq 0x12fd70
cmpl $0x1, %eax
jne 0x1d19d4
leaq 0x43f0(%rsp), %rsi
addq $0x96a, %rsi            # imm = 0x96A
leaq 0x43c22(%rip), %rdi     # 0x2155df
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0x10c60(%rsp), %rdi
leaq 0xf740(%rsp), %rsi
leaq 0x6a48(%rsp), %rdx
leaq 0x5ef8(%rsp), %rcx
leaq 0x5560(%rsp), %r8
leaq 0x43f0(%rsp), %r9
leaq 0x3b00(%rsp), %rax
movq %rax, (%rsp)
callq 0x14d2c0
cmpl $0x1, %eax
jne 0x1d1a47
leaq 0x3b00(%rsp), %rsi
addq $0xea, %rsi
leaq 0x43bcf(%rip), %rdi     # 0x2155ff
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0x10c60(%rsp), %rdi
leaq 0x6a48(%rsp), %rsi
leaq 0x3b00(%rsp), %rdx
leaq 0x5560(%rsp), %rcx
leaq 0x3268(%rsp), %r8
callq 0x156040
cmpl $0x1, %eax
jne 0x1d1aa6
leaq 0x3268(%rsp), %rsi
addq $0x92, %rsi
leaq 0x43b90(%rip), %rdi     # 0x21561f
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0x10c60(%rsp), %rdi
leaq 0xf740(%rsp), %rsi
leaq 0xded8(%rsp), %rdx
leaq 0x6a48(%rsp), %rcx
leaq 0x5ef8(%rsp), %r8
leaq 0x1460(%rsp), %r9
callq 0x18e830
cmpl $0x1, %eax
jne 0x1d1b0d
leaq 0x1460(%rsp), %rsi
addq $0x1602, %rsi           # imm = 0x1602
leaq 0x43b48(%rip), %rdi     # 0x21563e
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0xf740(%rsp), %rdi
leaq 0xded8(%rsp), %rsi
leaq 0x6a48(%rsp), %rdx
leaq 0x5ef8(%rsp), %rcx
leaq 0x43f0(%rsp), %r8
leaq 0x3b00(%rsp), %r9
leaq 0x5560(%rsp), %rbx
leaq 0x3268(%rsp), %r11
leaq 0x1460(%rsp), %r10
leaq 0x840(%rsp), %rax
movq %rbx, (%rsp)
movq %r11, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movq %rax, 0x18(%rsp)
callq 0x1c77a0
cmpl $0x1, %eax
jne 0x1d1ba7
leaq 0x840(%rsp), %rsi
addq $0x420, %rsi            # imm = 0x420
leaq 0x43ad1(%rip), %rdi     # 0x215661
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0x1460(%rsp), %rdi
callq 0x193550
cmpl $0x1, %eax
jne 0x1d1be6
leaq 0x1460(%rsp), %rsi
addq $0x1602, %rsi           # imm = 0x1602
leaq 0x43ab0(%rip), %rdi     # 0x21567f
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0x3268(%rsp), %rdi
callq 0x160700
cmpl $0x1, %eax
jne 0x1d1c25
leaq 0x3268(%rsp), %rsi
addq $0x92, %rsi
leaq 0x43a94(%rip), %rdi     # 0x2156a2
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0x3b00(%rsp), %rdi
callq 0x14f9a0
cmpl $0x1, %eax
jne 0x1d1c64
leaq 0x3b00(%rsp), %rsi
addq $0xea, %rsi
leaq 0x43a74(%rip), %rdi     # 0x2156c1
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0x43f0(%rsp), %rdi
callq 0x1379e0
cmpl $0x1, %eax
jne 0x1d1ca3
leaq 0x43f0(%rsp), %rsi
addq $0x96a, %rsi            # imm = 0x96A
leaq 0x43a55(%rip), %rdi     # 0x2156e1
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0x5560(%rsp), %rdi
callq 0x12e4a0
cmpl $0x1, %eax
jne 0x1d1ce2
leaq 0x5560(%rsp), %rsi
addq $0x192, %rsi            # imm = 0x192
leaq 0x43a36(%rip), %rdi     # 0x215701
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0x5ef8(%rsp), %rdi
callq 0x115f20
cmpl $0x1, %eax
jne 0x1d1d21
leaq 0x5ef8(%rsp), %rsi
addq $0x32a, %rsi            # imm = 0x32A
leaq 0x43a16(%rip), %rdi     # 0x215720
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0x6a48(%rsp), %rdi
callq 0xd1b20
cmpl $0x1, %eax
jne 0x1d1d60
leaq 0x6a48(%rsp), %rsi
addq $0x6c8a, %rsi           # imm = 0x6C8A
leaq 0x439f9(%rip), %rdi     # 0x215742
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0xded8(%rsp), %rdi
callq 0xbab10
cmpl $0x1, %eax
jne 0x1d1d9c
leaq 0xded8(%rsp), %rsi
addq $0x1064, %rsi           # imm = 0x1064
leaq 0x439df(%rip), %rdi     # 0x215767
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
leaq 0xf740(%rsp), %rdi
callq 0xa8ec0
cmpl $0x1, %eax
jne 0x1d1dd8
leaq 0xf740(%rsp), %rsi
addq $0xd1c, %rsi            # imm = 0xD1C
leaq 0x439c9(%rip), %rdi     # 0x21578d
movb $0x0, %al
callq 0x8030
movl $0x1, 0x11e9c(%rsp)
jmp 0x1d1de3
movl $0x0, 0x11e9c(%rsp)
movl 0x11e9c(%rsp), %eax
addq $0x11ea0, %rsp          # imm = 0x11EA0
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq