// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../source/thermodynamics.c
// Function: thermodynamics_calculate_remaining_quantities
int thermodynamics_calculate_remaining_quantities(
                                                  struct precision * ppr,
                                                  struct background * pba,
                                                  struct thermodynamics* pth,
                                                  double* pvecback
                                                  ) {

  /** Summary: */

  /* The temporary quantities stored in columns ddkappa and dddkappa will not be used anymore, so they can and WILL be overwritten by other
     intermediate steps of other computations */

  class_call(thermodynamics_calculate_conformal_drag_time(pba,pth,pvecback),
             pth->error_message,
             pth->error_message);

  if (pth->compute_damping_scale == _TRUE_) {
    class_call(thermodynamics_calculate_damping_scale(pba,pth,pvecback),
               pth->error_message,
               pth->error_message);
  }

  class_call(thermodynamics_calculate_opticals(ppr,pth),
             pth->error_message,
             pth->error_message);

  /* Please note, this function has to be before the spline_table_lines to generate the correct d2thdz2_table */
  if (pba->has_idr == _TRUE_ || pth->has_idm_b == _TRUE_) {
    class_call(thermodynamics_calculate_idm_and_idr_quantities(ppr,pba,pth,pvecback),
               pth->error_message,
               pth->error_message);
  }

  /** - fill tables of second derivatives with respect to z (in view of spline interpolation) */
  class_call(array_spline_table_lines(pth->z_table,
                                      pth->tt_size,
                                      pth->thermodynamics_table,
                                      pth->th_size,
                                      pth->d2thermodynamics_dz2_table,
                                      _SPLINE_EST_DERIV_,
                                      pth->error_message),
             pth->error_message,
             pth->error_message);

  class_call(thermodynamics_calculate_recombination_quantities(ppr,pba,pth,pvecback),
             pth->error_message,
             pth->error_message);

  class_call(thermodynamics_calculate_drag_quantities(ppr,pba,pth,pvecback),
             pth->error_message,
             pth->error_message);


  return _SUCCESS_;
}

// Assembly:
subq $0x3838, %rsp           # imm = 0x3838
movq %rdi, 0x3828(%rsp)
movq %rsi, 0x3820(%rsp)
movq %rdx, 0x3818(%rsp)
movq %rcx, 0x3810(%rsp)
movq 0x3820(%rsp), %rdi
movq 0x3818(%rsp), %rsi
movq 0x3810(%rsp), %rdx
callq 0xbfe50
cmpl $0x1, %eax
jne 0xba146
leaq 0x3010(%rsp), %rdi
movq 0x3818(%rsp), %rcx
addq $0x1064, %rcx           # imm = 0x1064
leaq 0x1182e1(%rip), %rsi    # 0x1d23d8
leaq 0x139193(%rip), %rdx    # 0x1f3291
movb $0x0, %al
callq 0x5b9c0
movq 0x3818(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x3010(%rsp), %r8
leaq 0x117f11(%rip), %rsi    # 0x1d2034
leaq 0x1391a6(%rip), %rdx    # 0x1f32d0
movl $0x6cf, %ecx            # imm = 0x6CF
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x3834(%rsp)
jmp 0xba53d
movq 0x3818(%rsp), %rax
movswl 0x32(%rax), %eax
cmpl $0x1, %eax
jne 0xba1ec
movq 0x3820(%rsp), %rdi
movq 0x3818(%rsp), %rsi
movq 0x3810(%rsp), %rdx
callq 0xc02d0
cmpl $0x1, %eax
jne 0xba1ea
leaq 0x2810(%rsp), %rdi
movq 0x3818(%rsp), %rcx
addq $0x1064, %rcx           # imm = 0x1064
leaq 0x11823d(%rip), %rsi    # 0x1d23d8
leaq 0x13915c(%rip), %rdx    # 0x1f32fe
movb $0x0, %al
callq 0x5b9c0
movq 0x3818(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x2810(%rsp), %r8
leaq 0x117e6d(%rip), %rsi    # 0x1d2034
leaq 0x139102(%rip), %rdx    # 0x1f32d0
movl $0x6d4, %ecx            # imm = 0x6D4
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x3834(%rsp)
jmp 0xba53d
jmp 0xba1ec
movq 0x3828(%rsp), %rdi
movq 0x3818(%rsp), %rsi
callq 0xc0a10
cmpl $0x1, %eax
jne 0xba273
leaq 0x2010(%rsp), %rdi
movq 0x3818(%rsp), %rcx
addq $0x1064, %rcx           # imm = 0x1064
leaq 0x1181b4(%rip), %rsi    # 0x1d23d8
leaq 0x13910c(%rip), %rdx    # 0x1f3337
movb $0x0, %al
callq 0x5b9c0
movq 0x3818(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x2010(%rsp), %r8
leaq 0x117de4(%rip), %rsi    # 0x1d2034
leaq 0x139079(%rip), %rdx    # 0x1f32d0
movl $0x6d9, %ecx            # imm = 0x6D9
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x3834(%rsp)
jmp 0xba53d
movq 0x3820(%rsp), %rax
movswl 0x4c6(%rax), %eax
cmpl $0x1, %eax
je 0xba29c
movq 0x3818(%rsp), %rax
movswl 0x34(%rax), %eax
cmpl $0x1, %eax
jne 0xba335
movq 0x3828(%rsp), %rdi
movq 0x3820(%rsp), %rsi
movq 0x3818(%rsp), %rdx
movq 0x3810(%rsp), %rcx
callq 0xc1900
cmpl $0x1, %eax
jne 0xba333
leaq 0x1810(%rsp), %rdi
movq 0x3818(%rsp), %rcx
addq $0x1064, %rcx           # imm = 0x1064
leaq 0x1180f4(%rip), %rsi    # 0x1d23d8
leaq 0x139077(%rip), %rdx    # 0x1f3362
movb $0x0, %al
callq 0x5b9c0
movq 0x3818(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x1810(%rsp), %r8
leaq 0x117d24(%rip), %rsi    # 0x1d2034
leaq 0x138fb9(%rip), %rdx    # 0x1f32d0
movl $0x6df, %ecx            # imm = 0x6DF
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x3834(%rsp)
jmp 0xba53d
jmp 0xba335
movq 0x3818(%rsp), %rax
movq 0xf10(%rax), %rdi
movq 0x3818(%rsp), %rax
movl 0xf08(%rax), %esi
movq 0x3818(%rsp), %rax
movq 0xf20(%rax), %rdx
movq 0x3818(%rsp), %rax
movl 0xf04(%rax), %ecx
movq 0x3818(%rsp), %rax
movq 0xf28(%rax), %r8
movq 0x3818(%rsp), %rax
addq $0x1064, %rax           # imm = 0x1064
movl $0x1, %r9d
movq %rax, (%rsp)
callq 0x1cf90
cmpl $0x1, %eax
jne 0xba40d
leaq 0x1010(%rsp), %rdi
movq 0x3818(%rsp), %rcx
addq $0x1064, %rcx           # imm = 0x1064
leaq 0x11801a(%rip), %rsi    # 0x1d23d8
leaq 0x138fe3(%rip), %rdx    # 0x1f33a8
movb $0x0, %al
callq 0x5b9c0
movq 0x3818(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x1010(%rsp), %r8
leaq 0x117c4a(%rip), %rsi    # 0x1d2034
leaq 0x138edf(%rip), %rdx    # 0x1f32d0
movl $0x6eb, %ecx            # imm = 0x6EB
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x3834(%rsp)
jmp 0xba53d
movq 0x3828(%rsp), %rdi
movq 0x3820(%rsp), %rsi
movq 0x3818(%rsp), %rdx
movq 0x3810(%rsp), %rcx
callq 0xc2690
cmpl $0x1, %eax
jne 0xba4a4
leaq 0x810(%rsp), %rdi
movq 0x3818(%rsp), %rcx
addq $0x1064, %rcx           # imm = 0x1064
leaq 0x117f83(%rip), %rsi    # 0x1d23d8
leaq 0x138fe2(%rip), %rdx    # 0x1f343e
movb $0x0, %al
callq 0x5b9c0
movq 0x3818(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x810(%rsp), %r8
leaq 0x117bb3(%rip), %rsi    # 0x1d2034
leaq 0x138e48(%rip), %rdx    # 0x1f32d0
movl $0x6ef, %ecx            # imm = 0x6EF
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x3834(%rsp)
jmp 0xba53d
movq 0x3828(%rsp), %rdi
movq 0x3820(%rsp), %rsi
movq 0x3818(%rsp), %rdx
movq 0x3810(%rsp), %rcx
callq 0xc3850
cmpl $0x1, %eax
jne 0xba532
leaq 0x10(%rsp), %rdi
movq 0x3818(%rsp), %rcx
addq $0x1064, %rcx           # imm = 0x1064
leaq 0x117eef(%rip), %rsi    # 0x1d23d8
leaq 0x138f96(%rip), %rdx    # 0x1f3486
movb $0x0, %al
callq 0x5b9c0
movq 0x3818(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x10(%rsp), %r8
leaq 0x117b22(%rip), %rsi    # 0x1d2034
leaq 0x138db7(%rip), %rdx    # 0x1f32d0
movl $0x6f3, %ecx            # imm = 0x6F3
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x3834(%rsp)
jmp 0xba53d
movl $0x0, 0x3834(%rsp)
movl 0x3834(%rsp), %eax
addq $0x3838, %rsp           # imm = 0x3838
retq
nopl (%rax)