// File: /workspace/github_c_makefile_star2_O1/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 0x58ae1
leaq 0xa20eb(%rip), %rdi     # 0xfabb2
leaq 0x8c753(%rip), %rsi     # 0xe5221
xorl %eax, %eax
callq 0x8030
leaq 0xa3c99(%rip), %rdi     # 0xfc775
callq 0x8510
cmpw $0x1, 0x380(%rbx)
jne 0x58b4e
leaq 0x382(%rbx), %rdx
leaq 0xa20d3(%rip), %rsi     # 0xfabcc
movq %rsp, %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0x88575(%rip), %rsi     # 0xe1082
leaq 0xa20fe(%rip), %rdx     # 0xfac12
leaq 0x800(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0xb84, %rbx            # imm = 0xB84
leaq 0x884fd(%rip), %rsi     # 0xe1034
leaq 0xa20f3(%rip), %rdx     # 0xfac31
movq %rbx, %rdi
movl $0x336, %ecx            # imm = 0x336
movq %r15, %r8
jmp 0x58c3e
movq %rbx, %rdi
callq 0x58c6c
movq %r14, %rdi
movq %rbx, %rsi
callq 0x59044
testl %eax, %eax
je 0x58ba5
addq $0xb84, %rbx            # imm = 0xB84
leaq 0x8887d(%rip), %rsi     # 0xe13f0
leaq 0xa20c7(%rip), %rdx     # 0xfac41
movq %rsp, %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x884a3(%rip), %rsi     # 0xe1034
leaq 0xa2099(%rip), %rdx     # 0xfac31
movq %rbx, %rdi
movl $0x340, %ecx            # imm = 0x340
jmp 0x58c3b
movq %r14, %rdi
movq %rbx, %rsi
callq 0x595ca
testl %eax, %eax
je 0x58bf1
addq $0xb84, %rbx            # imm = 0xB84
leaq 0x8882e(%rip), %rsi     # 0xe13f0
leaq 0xa2093(%rip), %rdx     # 0xfac5c
movq %rsp, %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x88454(%rip), %rsi     # 0xe1034
leaq 0xa204a(%rip), %rdx     # 0xfac31
movq %rbx, %rdi
movl $0x345, %ecx            # imm = 0x345
jmp 0x58c3b
movq %r14, %rdi
movq %rbx, %rsi
callq 0x5a348
testl %eax, %eax
je 0x58c57
addq $0xb84, %rbx            # imm = 0xB84
leaq 0x887e2(%rip), %rsi     # 0xe13f0
leaq 0xa2061(%rip), %rdx     # 0xfac76
movq %rsp, %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x88408(%rip), %rsi     # 0xe1034
leaq 0xa1ffe(%rip), %rdx     # 0xfac31
movq %rbx, %rdi
movl $0x34a, %ecx            # imm = 0x34A
movq %r14, %r8
xorl %eax, %eax
callq 0x30c2c
movl $0x1, %eax
addq $0x1000, %rsp           # imm = 0x1000
popq %rbx
popq %r14
popq %r15
retq
movq %rbx, %rdi
callq 0x5a62e
movw $0x1, 0x1384(%rbx)
xorl %eax, %eax
jmp 0x58c4a