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

  /** Summary: */

  /** Define local variables */
  double g_max;

  int index_tau;
  int index_tau_max;
  int last_index_back=0;

  /** - find maximum of g */
  index_tau=pth->tt_size-1;
  while (pth->z_table[index_tau]>_Z_REC_MAX_) {
    index_tau--;
  }

  class_test(pth->thermodynamics_table[(index_tau+1)*pth->th_size+pth->index_th_g] >
             pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_g],
             pth->error_message,
             "The visibility function is not increasing at redshift _Z_REC_MAX_=%g, which is the value imposed in thermodynamics.h\n This implies that recombination must have already happened at a too early time.",_Z_REC_MAX_);

  while (pth->thermodynamics_table[(index_tau+1)*pth->th_size+pth->index_th_g] <=
         pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_g]) {
    index_tau--;
  }

  g_max = pth->thermodynamics_table[index_tau*pth->th_size+pth->index_th_g];
  index_tau_max = index_tau;

  /* approximation for maximum of g, using cubic interpolation, assuming equally spaced z's */
  pth->z_rec=pth->z_table[index_tau+1]+0.5*(pth->z_table[index_tau+1]-pth->z_table[index_tau])
    *(pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_g]
      -pth->thermodynamics_table[(index_tau+2)*pth->th_size+pth->index_th_g])
    /(pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_g]
      -2.*pth->thermodynamics_table[(index_tau+1)*pth->th_size+pth->index_th_g]
      +pth->thermodynamics_table[(index_tau+2)*pth->th_size+pth->index_th_g]
      );

  class_test(pth->z_rec+ppr->smallest_allowed_variation >= _Z_REC_MAX_,
             pth->error_message,
             "recombination (at z=%g) happens before _Z_REC_MAX_=%g, which is the maximum value imposed in thermodynamics.h",pth->z_rec+ppr->smallest_allowed_variation,_Z_REC_MAX_);

  class_test(pth->z_rec-ppr->smallest_allowed_variation <= _Z_REC_MIN_,
             pth->error_message,
             "recombination (at z=%g) happens after _Z_REC_MIN_=%g, which is the minimum value imposed in thermodynamics.h",pth->z_rec-ppr->smallest_allowed_variation,_Z_REC_MIN_);

  /** - find conformal recombination time using background_tau_of_z **/

  class_call(background_tau_of_z(pba,pth->z_rec,&(pth->tau_rec)),
             pba->error_message,
             pth->error_message);

  class_call(background_at_z(pba,pth->z_rec, long_info, inter_normal, &last_index_back, pvecback),
             pba->error_message,
             pth->error_message);

  pth->rs_rec=pvecback[pba->index_bg_rs];
  pth->ds_rec=pth->rs_rec/(1.+pth->z_rec);
  pth->da_rec=pvecback[pba->index_bg_ang_distance];
  pth->ra_rec=pth->da_rec*(1.+pth->z_rec);
  pth->angular_rescaling=pth->ra_rec/(pba->conformal_age-pth->tau_rec);

  /** - find damping scale at recombination (using linear interpolation) */
  if (pth->compute_damping_scale == _TRUE_) {

    pth->rd_rec = (pth->z_table[index_tau+1]-pth->z_rec)/(pth->z_table[index_tau+1]-pth->z_table[index_tau])*pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_r_d]
      +(pth->z_rec-pth->z_table[index_tau])/(pth->z_table[index_tau+1]-pth->z_table[index_tau])*pth->thermodynamics_table[(index_tau+1)*pth->th_size+pth->index_th_r_d];

  }

  /** - find time (always after recombination) at which tau_c/tau falls below some threshold, defining tau_free_streaming */
  while (1./pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_dkappa]/pth->tau_table[index_tau]
         < ppr->radiation_streaming_trigger_tau_c_over_tau) {

    index_tau--;
    class_test(index_tau<0, pth->error_message,"Could not find a time at which photons free-stream. This is very suspicious. Aborting.\n");

  }

  pth->tau_free_streaming = pth->tau_table[index_tau];

  /** - find time above which visibility falls below a given fraction of its maximum */
  index_tau=index_tau_max;
  while ((pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_g] >
          g_max * ppr->neglect_CMB_sources_below_visibility)
         && (index_tau > 0))
    index_tau--;

  class_call(background_tau_of_z(pba,pth->z_table[index_tau],&(pth->tau_cut)),
             pba->error_message,
             pth->error_message);

  /** - find z_star (when optical depth kappa crosses one, using linear
      interpolation) and sound horizon at that time */

  index_tau=0;
  while ((pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_exp_m_kappa] > 1./_E_) && (index_tau < pth->tt_size))
    index_tau++;

  pth->z_star = pth->z_table[index_tau-1]+
    (1./_E_-pth->thermodynamics_table[(index_tau-1)*pth->th_size+pth->index_th_exp_m_kappa])
    /(pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_exp_m_kappa]-pth->thermodynamics_table[(index_tau-1)*pth->th_size+pth->index_th_exp_m_kappa])
    *(pth->z_table[index_tau]-pth->z_table[index_tau-1]);

  class_call(background_tau_of_z(pba,pth->z_star,&(pth->tau_star)),
             pba->error_message,
             pth->error_message);

  class_call(background_at_tau(pba,pth->tau_star, long_info, inter_normal, &last_index_back, pvecback),
             pba->error_message,
             pth->error_message);

  pth->rs_star=pvecback[pba->index_bg_rs];
  pth->ds_star=pth->rs_star/(1.+pth->z_star);
  pth->da_star=pvecback[pba->index_bg_ang_distance];
  pth->ra_star=pth->da_star*(1.+pth->z_star);

  if (pth->compute_damping_scale == _TRUE_) {

    pth->rd_star = (pth->z_table[index_tau+1]-pth->z_star)/(pth->z_table[index_tau+1]-pth->z_table[index_tau])*pth->thermodynamics_table[(index_tau)*pth->th_size+pth->index_th_r_d]
      +(pth->z_star-pth->z_table[index_tau])/(pth->z_table[index_tau+1]-pth->z_table[index_tau])*pth->thermodynamics_table[(index_tau+1)*pth->th_size+pth->index_th_r_d];

  }

  return _SUCCESS_;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1048, %rsp           # imm = 0x1048
movq %rcx, 0x20(%rsp)
movabsq $-0x100000000, %r13     # imm = 0xFFFFFFFF00000000
movl $0x0, 0x14(%rsp)
movslq 0xf08(%rdx), %r10
movl %r10d, %eax
movq 0xf10(%rdx), %rcx
movq %r10, %r8
shlq $0x20, %r8
leaq (,%r10,8), %r15
movabsq $0x100000000, %rbx      # imm = 0x100000000
addq %r8, %rbx
movabsq $0x200000000, %rbp      # imm = 0x200000000
addq %r8, %rbp
leaq (%rcx,%r10,8), %r8
addq $-0x8, %r8
xorl %r12d, %r12d
movsd 0x9ec06(%rip), %xmm0    # 0x110720
movsd (%r8,%r12,8), %xmm1
addq $-0x8, %r15
addq %r13, %rbx
decq %r12
addq %r13, %rbp
ucomisd %xmm0, %xmm1
ja 0x71b1a
leaq (%rax,%r12), %r9
incl %r9d
movq %r10, 0x38(%rsp)
addl %r12d, %r10d
movq 0xf20(%rdx), %r14
movslq 0xf04(%rdx), %r11
imull %r11d, %r9d
movslq 0xe94(%rdx), %r8
addl %r8d, %r9d
movslq %r9d, %r9
movsd (%r14,%r9,8), %xmm0
imull %r11d, %r10d
addl %r8d, %r10d
movslq %r10d, %r9
ucomisd (%r14,%r9,8), %xmm0
jbe 0x71bdf
leaq 0xa2bb4(%rip), %rsi     # 0x114734
leaq 0x40(%rsp), %r14
movsd 0x9eb93(%rip), %xmm0    # 0x110720
movq %r14, %rdi
movb $0x1, %al
movq %rdx, %rbx
callq 0x30c2c
leaq 0x7f4e1(%rip), %rsi     # 0xf1082
leaq 0xa2c52(%rip), %rdx     # 0x1147fa
leaq 0x840(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0x1064, %rbx           # imm = 0x1064
leaq 0x7f469(%rip), %rsi     # 0xf1034
leaq 0xa2cb2(%rip), %rdx     # 0x114884
movq %rbx, %rdi
movl $0xebb, %ecx            # imm = 0xEBB
jmp 0x71e13
movq %rdi, 0x18(%rsp)
movq %rsi, 0x8(%rsp)
movq %rax, 0x30(%rsp)
leaq (%rax,%r12), %rsi
addq $0x3, %rsi
leaq (%r14,%r8,8), %rdi
imull %r11d, %esi
addl %r8d, %esi
movq %r11, %r8
imulq %r15, %r8
addq $0x8, %r15
leaq (,%r11,8), %r9
negq %r9
movq %r11, %r10
imulq %r15, %r10
movsd (%rdi,%r10), %xmm1
movsd (%rdi,%r8), %xmm5
addq %r13, %rbx
decq %r12
addq $-0x8, %r15
addq %r13, %rbp
subl %r11d, %esi
addq %r9, %rdi
ucomisd %xmm1, %xmm5
jae 0x71c1e
movq %rbp, %rdi
sarq $0x1d, %rdi
movsd (%rcx,%rdi), %xmm2
movq %rbx, %rdi
sarq $0x1d, %rdi
movapd %xmm2, %xmm3
subsd (%rcx,%rdi), %xmm3
mulsd 0x80069(%rip), %xmm3    # 0xf1cd0
movslq %esi, %rax
movsd (%r14,%rax,8), %xmm4
movapd %xmm5, %xmm0
subsd %xmm4, %xmm0
mulsd %xmm3, %xmm0
addsd %xmm1, %xmm1
movapd %xmm5, %xmm3
subsd %xmm1, %xmm3
addsd %xmm4, %xmm3
divsd %xmm3, %xmm0
addsd %xmm2, %xmm0
movsd %xmm0, 0xf30(%rdx)
movq 0x18(%rsp), %rax
movsd 0xa28(%rax), %xmm1
movapd %xmm1, %xmm2
addsd %xmm0, %xmm2
ucomisd 0x9ea67(%rip), %xmm2    # 0x110720
movq 0x8(%rsp), %rdi
jae 0x71d47
movapd %xmm0, %xmm2
subsd %xmm1, %xmm2
movsd 0x83efc(%rip), %xmm1    # 0xf5bd0
ucomisd %xmm2, %xmm1
jae 0x71dae
movsd %xmm5, 0x28(%rsp)
leaq 0xf38(%rdx), %rsi
movq %rdx, %r14
callq 0x5efb7
cmpl $0x1, %eax
jne 0x71e36
movq 0x8(%rsp), %rcx
addq $0xd1c, %rcx            # imm = 0xD1C
leaq 0x7f6e1(%rip), %rsi     # 0xf13f0
leaq 0xa2cef(%rip), %rdx     # 0x114a05
leaq 0x40(%rsp), %r15
movq %r15, %rdi
xorl %eax, %eax
callq 0x30c2c
addq $0x1064, %r14           # imm = 0x1064
leaq 0x7f301(%rip), %rsi     # 0xf1034
leaq 0xa2b4a(%rip), %rdx     # 0x114884
movq %r14, %rdi
movl $0xeda, %ecx            # imm = 0xEDA
jmp 0x71e13
leaq 0xa2b68(%rip), %rsi     # 0x1148b6
leaq 0x40(%rsp), %r14
movsd 0x9e9c5(%rip), %xmm1    # 0x110720
movq %r14, %rdi
movapd %xmm2, %xmm0
movb $0x2, %al
movq %rdx, %rbx
callq 0x30c2c
leaq 0x7f30f(%rip), %rsi     # 0xf1082
leaq 0xa2baa(%rip), %rdx     # 0x114924
leaq 0x840(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0x1064, %rbx           # imm = 0x1064
leaq 0x7f297(%rip), %rsi     # 0xf1034
leaq 0xa2ae0(%rip), %rdx     # 0x114884
movq %rbx, %rdi
movl $0xed0, %ecx            # imm = 0xED0
jmp 0x71e13
leaq 0xa2ba9(%rip), %rsi     # 0x11495e
leaq 0x40(%rsp), %r14
movsd 0x83e0e(%rip), %xmm1    # 0xf5bd0
movq %r14, %rdi
movapd %xmm2, %xmm0
movb $0x2, %al
movq %rdx, %rbx
callq 0x30c2c
leaq 0x7f2a8(%rip), %rsi     # 0xf1082
leaq 0xa2bea(%rip), %rdx     # 0x1149cb
leaq 0x840(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0x1064, %rbx           # imm = 0x1064
leaq 0x7f230(%rip), %rsi     # 0xf1034
leaq 0xa2a79(%rip), %rdx     # 0x114884
movq %rbx, %rdi
movl $0xed4, %ecx            # imm = 0xED4
movq %r15, %r8
xorl %eax, %eax
callq 0x30c2c
movl $0x1, %ebp
movl %ebp, %eax
addq $0x1048, %rsp           # imm = 0x1048
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movsd 0xf30(%r14), %xmm0
leaq 0x14(%rsp), %rcx
movq 0x8(%rsp), %rdi
movl $0x2, %esi
xorl %edx, %edx
movq 0x20(%rsp), %r8
callq 0x5ea8c
cmpl $0x1, %eax
jne 0x71eaa
movq 0x8(%rsp), %rcx
addq $0xd1c, %rcx            # imm = 0xD1C
leaq 0x7f57e(%rip), %rsi     # 0xf13f0
leaq 0xa2bc0(%rip), %rdx     # 0x114a39
leaq 0x40(%rsp), %r15
movq %r15, %rdi
xorl %eax, %eax
callq 0x30c2c
addq $0x1064, %r14           # imm = 0x1064
leaq 0x7f19e(%rip), %rsi     # 0xf1034
leaq 0xa29e7(%rip), %rdx     # 0x114884
movq %r14, %rdi
movl $0xede, %ecx            # imm = 0xEDE
jmp 0x71e13
movq 0x8(%rsp), %rdi
movslq 0x420(%rdi), %rax
movq 0x20(%rsp), %rcx
movsd (%rcx,%rax,8), %xmm1
movsd %xmm1, 0xf40(%r14)
movsd 0xf30(%r14), %xmm0
movsd 0x7f386(%rip), %xmm2    # 0xf1260
addsd %xmm0, %xmm2
divsd %xmm2, %xmm1
movsd %xmm1, 0xf48(%r14)
movslq 0x414(%rdi), %rax
movsd (%rcx,%rax,8), %xmm1
movsd %xmm1, 0xf58(%r14)
mulsd %xmm1, %xmm2
movsd %xmm2, 0xf50(%r14)
movsd 0x310(%rdi), %xmm1
subsd 0xf38(%r14), %xmm1
divsd %xmm1, %xmm2
movsd %xmm2, 0xfd0(%r14)
cmpw $0x1, 0x32(%r14)
movq %r14, %r9
jne 0x71fbe
movq 0x30(%rsp), %rax
leaq (%rax,%r12), %rcx
incq %rcx
addq %r12, %rax
addq $0x2, %rax
movq %rbp, %rdx
sarq $0x20, %rdx
sarq $0x20, %rbx
movq 0xf10(%r9), %rsi
movsd (%rsi,%rdx,8), %xmm1
movapd %xmm1, %xmm2
subsd %xmm0, %xmm2
movsd (%rsi,%rbx,8), %xmm3
subsd %xmm3, %xmm1
divsd %xmm1, %xmm2
movq 0xf20(%r9), %rdx
movl 0xf00(%r9), %esi
movl 0xf04(%r9), %r8d
imull %r8d, %ecx
addl %esi, %ecx
movslq %ecx, %rcx
subsd %xmm3, %xmm0
divsd %xmm1, %xmm0
imull %r8d, %eax
addl %esi, %eax
cltq
mulsd (%rdx,%rax,8), %xmm0
mulsd (%rdx,%rcx,8), %xmm2
addsd %xmm0, %xmm2
movsd %xmm2, 0xf60(%r9)
movq 0x38(%rsp), %rax
leaq (%rax,%r12), %rsi
addq $0x2, %rsi
leaq 0x1(%rax,%r12), %rax
movq 0xf18(%r9), %r10
movq 0xf20(%r9), %rdx
movslq 0xf04(%r9), %rcx
movslq 0xe80(%r9), %r8
movq 0x18(%rsp), %r11
movsd 0x630(%r11), %xmm0
leaq (%rdx,%r8,8), %r8
imulq %rcx, %r15
addq %r15, %r8
shlq $0x3, %rcx
negq %rcx
movsd 0x7f24c(%rip), %xmm1    # 0xf1260
movsd 0x28(%rsp), %xmm4
movapd %xmm1, %xmm3
divsd (%r8), %xmm3
movsd -0x8(%r10,%rsi,8), %xmm2
divsd %xmm2, %xmm3
ucomisd %xmm3, %xmm0
jbe 0x7209d
decq %rsi
addq %rcx, %r8
testq %rsi, %rsi
jg 0x7201a
leaq 0xa2a48(%rip), %rsi     # 0x114a8e
leaq 0x40(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
movq %r9, %rbx
callq 0x30c2c
leaq 0x7f023(%rip), %rsi     # 0xf1082
leaq 0xa2a80(%rip), %rdx     # 0x114ae6
leaq 0x840(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0x1064, %rbx           # imm = 0x1064
leaq 0x7efab(%rip), %rsi     # 0xf1034
leaq 0xa27f4(%rip), %rdx     # 0x114884
movq %rbx, %rdi
movl $0xef3, %ecx            # imm = 0xEF3
jmp 0x71e13
movsd %xmm2, 0xfd8(%r9)
movslq 0xe94(%r9), %rsi
movq 0x18(%rsp), %r8
mulsd 0x670(%r8), %xmm4
leaq (%rdx,%rsi,8), %rdx
addq %r15, %rdx
addq %r13, %rbp
testq %rax, %rax
jle 0x720da
movsd (%rdx), %xmm0
decq %rax
addq %rcx, %rdx
ucomisd %xmm4, %xmm0
ja 0x720c2
movq 0xf10(%r9), %rax
sarq $0x1d, %rbp
movsd (%rax,%rbp), %xmm0
leaq 0xfc8(%r9), %rsi
movq %r9, %rbx
movq %rdi, %r14
callq 0x5efb7
cmpl $0x1, %eax
jne 0x7214a
addq $0xd1c, %r14            # imm = 0xD1C
leaq 0x7f2e1(%rip), %rsi     # 0xf13f0
leaq 0xa29dc(%rip), %rdx     # 0x114af2
leaq 0x40(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0x1064, %rbx           # imm = 0x1064
leaq 0x7eefe(%rip), %rsi     # 0xf1034
leaq 0xa2747(%rip), %rdx     # 0x114884
movq %rbx, %rdi
movl $0xf02, %ecx            # imm = 0xF02
jmp 0x71e13
movq 0xf20(%rbx), %rax
movslq 0xf04(%rbx), %rdx
movslq 0xe90(%rbx), %rcx
movsd (%rax,%rcx,8), %xmm0
xorl %esi, %esi
ucomisd 0x9e5ba(%rip), %xmm0    # 0x110728
movq %rbx, %r14
jbe 0x721ba
movl 0xf08(%r14), %edi
xorl %esi, %esi
testl %edi, %edi
cmovgl %edi, %esi
movq 0x8(%rsp), %r13
jle 0x721c7
leaq (,%rdx,8), %r8
leaq (%r8,%rcx,8), %r9
addq %rax, %r9
xorl %r10d, %r10d
movsd 0x9e586(%rip), %xmm1    # 0x110728
movsd (%r9), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x721c1
incq %r10
addq %r8, %r9
cmpq %r10, %rsi
jne 0x721a2
jmp 0x721c7
movq 0x8(%rsp), %r13
jmp 0x721c7
incl %r10d
movl %r10d, %esi
movq 0xf10(%r14), %r9
movslq %esi, %r8
decl %esi
movsd -0x8(%r9,%r8,8), %xmm1
imull %edx, %esi
addl %ecx, %esi
movslq %esi, %rcx
movsd (%rax,%rcx,8), %xmm2
movsd 0x9e539(%rip), %xmm3    # 0x110728
subsd %xmm2, %xmm3
subsd %xmm2, %xmm0
divsd %xmm0, %xmm3
movl %r8d, %ebx
movsd (%r9,%rbx,8), %xmm0
subsd %xmm1, %xmm0
mulsd %xmm3, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0xf68(%r14)
leaq 0xf70(%r14), %r12
movq %r13, %rdi
movq %r12, %rsi
callq 0x5efb7
cmpl $0x1, %eax
jne 0x72279
addq $0xd1c, %r13            # imm = 0xD1C
leaq 0x7f1b2(%rip), %rsi     # 0xf13f0
leaq 0xa28ee(%rip), %rdx     # 0x114b33
leaq 0x40(%rsp), %r15
movq %r15, %rdi
movq %r13, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0x1064, %r14           # imm = 0x1064
leaq 0x7edcf(%rip), %rsi     # 0xf1034
leaq 0xa2618(%rip), %rdx     # 0x114884
movq %r14, %rdi
movl $0xf12, %ecx            # imm = 0xF12
jmp 0x71e13
movsd (%r12), %xmm0
xorl %ebp, %ebp
leaq 0x14(%rsp), %rcx
movq %r13, %rdi
movl $0x2, %esi
xorl %edx, %edx
movq 0x20(%rsp), %r15
movq %r15, %r8
callq 0x5ed53
cmpl $0x1, %eax
jne 0x722eb
addq $0xd1c, %r13            # imm = 0xD1C
leaq 0x7f140(%rip), %rsi     # 0xf13f0
leaq 0xa28b2(%rip), %rdx     # 0x114b69
leaq 0x40(%rsp), %r15
movq %r15, %rdi
movq %r13, %rcx
xorl %eax, %eax
callq 0x30c2c
addq $0x1064, %r14           # imm = 0x1064
leaq 0x7ed5d(%rip), %rsi     # 0xf1034
leaq 0xa25a6(%rip), %rdx     # 0x114884
movq %r14, %rdi
movl $0xf16, %ecx            # imm = 0xF16
jmp 0x71e13
movslq 0x420(%r13), %rax
movsd (%r15,%rax,8), %xmm1
movsd %xmm1, 0xf78(%r14)
movsd 0xf68(%r14), %xmm0
movsd 0x7ef4e(%rip), %xmm2    # 0xf1260
addsd %xmm0, %xmm2
divsd %xmm2, %xmm1
movsd %xmm1, 0xf80(%r14)
movslq 0x414(%r13), %rax
movsd (%r15,%rax,8), %xmm1
movsd %xmm1, 0xf90(%r14)
mulsd %xmm1, %xmm2
movsd %xmm2, 0xf88(%r14)
cmpw $0x1, 0x32(%r14)
jne 0x71e22
movq 0xf10(%r14), %rax
movsd (%rax,%rbx,8), %xmm2
movsd 0x8(%rax,%rbx,8), %xmm3
movapd %xmm3, %xmm1
subsd %xmm0, %xmm1
subsd %xmm2, %xmm3
divsd %xmm3, %xmm1
movq 0xf20(%r14), %rax
movl 0xf00(%r14), %ecx
movl 0xf04(%r14), %edx
leal 0x1(%rbx), %esi
imull %edx, %esi
imull %ebx, %edx
addl %ecx, %edx
movslq %edx, %rdx
subsd %xmm2, %xmm0
divsd %xmm3, %xmm0
addl %ecx, %esi
movslq %esi, %rcx
mulsd (%rax,%rcx,8), %xmm0
mulsd (%rax,%rdx,8), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0xf98(%r14)
jmp 0x71e22