// File: /workspace/github_c_makefile_star2_O2/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 0x528ac
leaq 0x9d200(%rip), %rdi     # 0xefa92
leaq 0x878b8(%rip), %rsi     # 0xda151
xorl %eax, %eax
callq 0x8030
leaq 0x9edae(%rip), %rdi     # 0xf1655
callq 0x8540
cmpw $0x1, 0x380(%rbx)
jne 0x52919
leaq 0x382(%rbx), %rdx
leaq 0x9d1e8(%rip), %rsi     # 0xefaac
movq %rsp, %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x837aa(%rip), %rsi     # 0xd6082
leaq 0x9d213(%rip), %rdx     # 0xefaf2
leaq 0x800(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x2e014
addq $0xb84, %rbx            # imm = 0xB84
leaq 0x83732(%rip), %rsi     # 0xd6034
leaq 0x9d208(%rip), %rdx     # 0xefb11
movq %rbx, %rdi
movl $0x336, %ecx            # imm = 0x336
movq %r15, %r8
jmp 0x52a09
movq %rbx, %rdi
callq 0x52a35
movq %r14, %rdi
movq %rbx, %rsi
callq 0x52dba
testl %eax, %eax
je 0x52970
addq $0xb84, %rbx            # imm = 0xB84
leaq 0x83ab2(%rip), %rsi     # 0xd63f0
leaq 0x9d1dc(%rip), %rdx     # 0xefb21
movq %rsp, %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x836d8(%rip), %rsi     # 0xd6034
leaq 0x9d1ae(%rip), %rdx     # 0xefb11
movq %rbx, %rdi
movl $0x340, %ecx            # imm = 0x340
jmp 0x52a06
movq %r14, %rdi
movq %rbx, %rsi
callq 0x532da
testl %eax, %eax
je 0x529bc
addq $0xb84, %rbx            # imm = 0xB84
leaq 0x83a63(%rip), %rsi     # 0xd63f0
leaq 0x9d1a8(%rip), %rdx     # 0xefb3c
movq %rsp, %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x83689(%rip), %rsi     # 0xd6034
leaq 0x9d15f(%rip), %rdx     # 0xefb11
movq %rbx, %rdi
movl $0x345, %ecx            # imm = 0x345
jmp 0x52a06
movq %r14, %rdi
movq %rbx, %rsi
callq 0x54016
testl %eax, %eax
je 0x52a20
addq $0xb84, %rbx            # imm = 0xB84
leaq 0x83a17(%rip), %rsi     # 0xd63f0
leaq 0x9d176(%rip), %rdx     # 0xefb56
movq %rsp, %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x8363d(%rip), %rsi     # 0xd6034
leaq 0x9d113(%rip), %rdx     # 0xefb11
movq %rbx, %rdi
movl $0x34a, %ecx            # imm = 0x34A
movq %r14, %r8
xorl %eax, %eax
callq 0x2e014
pushq $0x1
popq %rax
addq $0x1000, %rsp           # imm = 0x1000
popq %rbx
popq %r14
popq %r15
retq
movq %rbx, %rdi
callq 0x542db
movw $0x1, 0x1384(%rbx)
xorl %eax, %eax
jmp 0x52a13