// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../source/background.c
// Function: background_tau_of_z
int background_tau_of_z(
                        struct background *pba,
                        double z,
                        double * tau
                        ) {

  /** Summary: */

  /** - define local variables */

  /* necessary for calling array_interpolate(), but never used */
  int last_index;

  /** - check that \f$ z \f$ is in the pre-computed range */
  class_test(z < pba->z_table[pba->bt_size-1],
             pba->error_message,
             "out of range: z=%e < z_min=%e\n",z,pba->z_table[pba->bt_size-1]);

  class_test(z > pba->z_table[0],
             pba->error_message,
             "out of range: z=%e > z_max=%e\n",z,pba->z_table[0]);

  /** - interpolate from pre-computed table with array_interpolate() */
  class_call(array_interpolate_spline(
                                      pba->z_table,
                                      pba->bt_size,
                                      pba->tau_table,
                                      pba->d2tau_dz2_table,
                                      1,
                                      z,
                                      &last_index,
                                      tau,
                                      1,
                                      pba->error_message),
             pba->error_message,
             pba->error_message);
  return _SUCCESS_;
}

// Assembly:
subq $0x2848, %rsp           # imm = 0x2848
movq %rdi, 0x2838(%rsp)
movsd %xmm0, 0x2830(%rsp)
movq %rsi, 0x2828(%rsp)
movsd 0x2830(%rsp), %xmm1
movq 0x2838(%rsp), %rax
movq 0x458(%rax), %rax
movq 0x2838(%rsp), %rcx
movl 0x440(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x9ef08
leaq 0x2020(%rsp), %rdi
movsd 0x2830(%rsp), %xmm0
movq 0x2838(%rsp), %rax
movq 0x458(%rax), %rax
movq 0x2838(%rsp), %rcx
movl 0x440(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm1
leaq 0x14fbd4(%rip), %rsi    # 0x1eea6f
movb $0x2, %al
callq 0x5b9c0
leaq 0x1820(%rsp), %rdi
leaq 0x2020(%rsp), %rcx
leaq 0x1331c9(%rip), %rsi    # 0x1d2082
leaq 0x14fbce(%rip), %rdx    # 0x1eea8e
movb $0x0, %al
callq 0x5b9c0
movq 0x2838(%rsp), %rdi
addq $0xd1c, %rdi            # imm = 0xD1C
leaq 0x1820(%rsp), %r8
leaq 0x13314f(%rip), %rsi    # 0x1d2034
leaq 0x14fbc3(%rip), %rdx    # 0x1eeaaf
movl $0x11f, %ecx            # imm = 0x11F
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x2844(%rsp)
jmp 0x9f0b4
movsd 0x2830(%rsp), %xmm0
movq 0x2838(%rsp), %rax
movq 0x458(%rax), %rax
ucomisd (%rax), %xmm0
jbe 0x9efc2
leaq 0x1020(%rsp), %rdi
movsd 0x2830(%rsp), %xmm0
movq 0x2838(%rsp), %rax
movq 0x458(%rax), %rax
movsd (%rax), %xmm1
leaq 0x14fb6e(%rip), %rsi    # 0x1eeac3
movb $0x2, %al
callq 0x5b9c0
leaq 0x820(%rsp), %rdi
leaq 0x1020(%rsp), %rcx
leaq 0x13310f(%rip), %rsi    # 0x1d2082
leaq 0x14fb68(%rip), %rdx    # 0x1eeae2
movb $0x0, %al
callq 0x5b9c0
movq 0x2838(%rsp), %rdi
addq $0xd1c, %rdi            # imm = 0xD1C
leaq 0x820(%rsp), %r8
leaq 0x133095(%rip), %rsi    # 0x1d2034
leaq 0x14fb09(%rip), %rdx    # 0x1eeaaf
movl $0x123, %ecx            # imm = 0x123
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x2844(%rsp)
jmp 0x9f0b4
movq 0x2838(%rsp), %rax
movq 0x458(%rax), %rdi
movq 0x2838(%rsp), %rax
movl 0x440(%rax), %esi
movq 0x2838(%rsp), %rax
movq 0x450(%rax), %rdx
movq 0x2838(%rsp), %rax
movq 0x468(%rax), %rcx
movsd 0x2830(%rsp), %xmm0
movq 0x2828(%rsp), %r10
movq 0x2838(%rsp), %rax
addq $0xd1c, %rax            # imm = 0xD1C
movl $0x1, %r8d
leaq 0x2824(%rsp), %r9
movq %r10, (%rsp)
movl $0x1, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x24220
cmpl $0x1, %eax
jne 0x9f0a9
leaq 0x20(%rsp), %rdi
movq 0x2838(%rsp), %rcx
addq $0xd1c, %rcx            # imm = 0xD1C
leaq 0x133378(%rip), %rsi    # 0x1d23d8
leaq 0x14fa8f(%rip), %rdx    # 0x1eeaf6
movb $0x0, %al
callq 0x5b9c0
movq 0x2838(%rsp), %rdi
addq $0xd1c, %rdi            # imm = 0xD1C
leaq 0x20(%rsp), %r8
leaq 0x132fab(%rip), %rsi    # 0x1d2034
leaq 0x14fa1f(%rip), %rdx    # 0x1eeaaf
movl $0x132, %ecx            # imm = 0x132
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x2844(%rsp)
jmp 0x9f0b4
movl $0x0, 0x2844(%rsp)
movl 0x2844(%rsp), %eax
addq $0x2848, %rsp           # imm = 0x2848
retq
nopw %cs:(%rax,%rax)