// File: /workspace/github_c_makefile_star2_O3/lesgourg[P]class_public/build/../source/background.c
// Function: background_init
int background_init(
                    struct precision * ppr,
                    struct background * pba
                    ) {

  /** Summary: */

  /** - write class version */
  if (pba->background_verbose > 0) {
    printf("Running CLASS version %s\n",_VERSION_);
    printf("Computing background\n");
  }

  /** - if shooting failed during input, catch the error here */
  class_test(pba->shooting_failed == _TRUE_,
             pba->error_message,
             "Shooting failed, try optimising input_get_guess(). Error message:\n\n%s",
             pba->shooting_error);

  /** - assign values to all indices in vectors of background quantities */
  class_call(background_indices(pba),
             pba->error_message,
             pba->error_message);

  /** - check that input parameters make sense and write additional information about them */
  class_call(background_checks(ppr,pba),
             pba->error_message,
             pba->error_message);

  /** - integrate the background over log(a), allocate and fill the background table */
  class_call(background_solve(ppr,pba),
             pba->error_message,
             pba->error_message);

  /** - find and store a few derived parameters at radiation-matter equality */
  class_call(background_find_equality(ppr,pba),
             pba->error_message,
             pba->error_message);

  /* - write a summary of the budget of the universe */
  class_call(background_output_budget(pba),
             pba->error_message,
             pba->error_message);

  pba->is_allocated = _TRUE_;

  return _SUCCESS_;

}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x1000, %rsp           # imm = 0x1000
movq %rsi, %rbx
movq %rdi, %r14
cmpw $0x0, 0xb82(%rsi)
jle 0x56944
leaq 0xa22b8(%rip), %rdi     # 0xf8be2
leaq 0x8c900(%rip), %rsi     # 0xe3231
xorl %eax, %eax
callq 0x8030
leaq 0xa3e66(%rip), %rdi     # 0xfa7a5
callq 0x8510
cmpw $0x1, 0x380(%rbx)
jne 0x569b1
leaq 0x382(%rbx), %rdx
leaq 0xa22a0(%rip), %rsi     # 0xf8bfc
movq %rsp, %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30af0
leaq 0x88712(%rip), %rsi     # 0xdf082
leaq 0xa22cb(%rip), %rdx     # 0xf8c42
leaq 0x800(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30af0
addq $0xb84, %rbx            # imm = 0xB84
leaq 0x8869a(%rip), %rsi     # 0xdf034
leaq 0xa22c0(%rip), %rdx     # 0xf8c61
movq %rbx, %rdi
movl $0x336, %ecx            # imm = 0x336
movq %r15, %r8
jmp 0x56aa1
movq %rbx, %rdi
callq 0x56acf
movq %r14, %rdi
movq %rbx, %rsi
callq 0x56e60
testl %eax, %eax
je 0x56a08
addq $0xb84, %rbx            # imm = 0xB84
leaq 0x88a1a(%rip), %rsi     # 0xdf3f0
leaq 0xa2294(%rip), %rdx     # 0xf8c71
movq %rsp, %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30af0
leaq 0x88640(%rip), %rsi     # 0xdf034
leaq 0xa2266(%rip), %rdx     # 0xf8c61
movq %rbx, %rdi
movl $0x340, %ecx            # imm = 0x340
jmp 0x56a9e
movq %r14, %rdi
movq %rbx, %rsi
callq 0x5739b
testl %eax, %eax
je 0x56a54
addq $0xb84, %rbx            # imm = 0xB84
leaq 0x889cb(%rip), %rsi     # 0xdf3f0
leaq 0xa2260(%rip), %rdx     # 0xf8c8c
movq %rsp, %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30af0
leaq 0x885f1(%rip), %rsi     # 0xdf034
leaq 0xa2217(%rip), %rdx     # 0xf8c61
movq %rbx, %rdi
movl $0x345, %ecx            # imm = 0x345
jmp 0x56a9e
movq %r14, %rdi
movq %rbx, %rsi
callq 0x58104
testl %eax, %eax
je 0x56aba
addq $0xb84, %rbx            # imm = 0xB84
leaq 0x8897f(%rip), %rsi     # 0xdf3f0
leaq 0xa222e(%rip), %rdx     # 0xf8ca6
movq %rsp, %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30af0
leaq 0x885a5(%rip), %rsi     # 0xdf034
leaq 0xa21cb(%rip), %rdx     # 0xf8c61
movq %rbx, %rdi
movl $0x34a, %ecx            # imm = 0x34A
movq %r14, %r8
xorl %eax, %eax
callq 0x30af0
movl $0x1, %eax
addq $0x1000, %rsp           # imm = 0x1000
popq %rbx
popq %r14
popq %r15
retq
movq %rbx, %rdi
callq 0x583dd
movw $0x1, 0x1384(%rbx)
xorl %eax, %eax
jmp 0x56aad