// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x6858, %rsp           # imm = 0x6858
movq %rdi, 0x6848(%rsp)
movq %rsi, 0x6840(%rsp)
movq %rdx, 0x6838(%rsp)
movq %rcx, 0x6830(%rsp)
movl $0x0, 0x681c(%rsp)
movq 0x6838(%rsp), %rax
movl 0xf08(%rax), %eax
subl $0x1, %eax
movl %eax, 0x6824(%rsp)
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movslq 0x6824(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd 0x113e8a(%rip), %xmm1   # 0x1d6588
ucomisd %xmm1, %xmm0
jbe 0xc2717
movl 0x6824(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x6824(%rsp)
jmp 0xc26da
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
addl $0x1, %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xe94(%rdx), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xe94(%rdx), %ecx
movslq %ecx, %rcx
ucomisd (%rax,%rcx,8), %xmm0
jbe 0xc281a
leaq 0x6010(%rsp), %rdi
leaq 0x132ed8(%rip), %rsi    # 0x1f567d
movsd 0x113ddb(%rip), %xmm0   # 0x1d6588
movb $0x1, %al
callq 0x5b9c0
leaq 0x5810(%rsp), %rdi
leaq 0x6010(%rsp), %rcx
leaq 0x10f8b7(%rip), %rsi    # 0x1d2082
leaq 0x132f71(%rip), %rdx    # 0x1f5743
movb $0x0, %al
callq 0x5b9c0
movq 0x6838(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x5810(%rsp), %r8
leaq 0x10f83d(%rip), %rsi    # 0x1d2034
leaq 0x132fcf(%rip), %rdx    # 0x1f57cd
movl $0xebb, %ecx            # imm = 0xEBB
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x6854(%rsp)
jmp 0xc3841
jmp 0xc281c
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
addl $0x1, %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xe94(%rdx), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm1
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xe94(%rdx), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd %xmm1, %xmm0
jb 0xc28b1
movl 0x6824(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x6824(%rsp)
jmp 0xc281c
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xe94(%rdx), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, 0x6828(%rsp)
movl 0x6824(%rsp), %eax
movl %eax, 0x6820(%rsp)
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movl 0x6824(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movl 0x6824(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm2
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movslq 0x6824(%rsp), %rcx
subsd (%rax,%rcx,8), %xmm2
movsd 0x11031f(%rip), %xmm1   # 0x1d2c88
mulsd %xmm2, %xmm1
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xe94(%rdx), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm2
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
addl $0x2, %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xe94(%rdx), %ecx
movslq %ecx, %rcx
subsd (%rax,%rcx,8), %xmm2
mulsd %xmm2, %xmm1
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xe94(%rdx), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm2
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
addl $0x1, %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xe94(%rdx), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm3
addsd %xmm3, %xmm3
subsd %xmm3, %xmm2
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
addl $0x2, %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xe94(%rdx), %ecx
movslq %ecx, %rcx
addsd (%rax,%rcx,8), %xmm2
divsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movq 0x6838(%rsp), %rax
movsd %xmm0, 0xf30(%rax)
movq 0x6838(%rsp), %rax
movsd 0xf30(%rax), %xmm0
movq 0x6848(%rsp), %rax
addsd 0xa28(%rax), %xmm0
movsd 0x113a9f(%rip), %xmm1   # 0x1d6588
ucomisd %xmm1, %xmm0
jb 0xc2b97
leaq 0x5010(%rsp), %rdi
movq 0x6838(%rsp), %rax
movsd 0xf30(%rax), %xmm0
movq 0x6848(%rsp), %rax
addsd 0xa28(%rax), %xmm0
leaq 0x132cdd(%rip), %rsi    # 0x1f57ff
movsd 0x113a5e(%rip), %xmm1   # 0x1d6588
movb $0x2, %al
callq 0x5b9c0
leaq 0x4810(%rsp), %rdi
leaq 0x5010(%rsp), %rcx
leaq 0x10f53a(%rip), %rsi    # 0x1d2082
leaq 0x132d1e(%rip), %rdx    # 0x1f586d
movb $0x0, %al
callq 0x5b9c0
movq 0x6838(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x4810(%rsp), %r8
leaq 0x10f4c0(%rip), %rsi    # 0x1d2034
leaq 0x132c52(%rip), %rdx    # 0x1f57cd
movl $0xed0, %ecx            # imm = 0xED0
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x6854(%rsp)
jmp 0xc3841
movq 0x6838(%rsp), %rax
movsd 0xf30(%rax), %xmm1
movq 0x6848(%rsp), %rax
subsd 0xa28(%rax), %xmm1
movsd 0x113a59(%rip), %xmm0   # 0x1d6618
ucomisd %xmm1, %xmm0
jb 0xc2c6d
leaq 0x4010(%rsp), %rdi
movq 0x6838(%rsp), %rax
movsd 0xf30(%rax), %xmm0
movq 0x6848(%rsp), %rax
subsd 0xa28(%rax), %xmm0
leaq 0x132caf(%rip), %rsi    # 0x1f58a7
movsd 0x113a18(%rip), %xmm1   # 0x1d6618
movb $0x2, %al
callq 0x5b9c0
leaq 0x3810(%rsp), %rdi
leaq 0x4010(%rsp), %rcx
leaq 0x10f464(%rip), %rsi    # 0x1d2082
leaq 0x132cef(%rip), %rdx    # 0x1f5914
movb $0x0, %al
callq 0x5b9c0
movq 0x6838(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x3810(%rsp), %r8
leaq 0x10f3ea(%rip), %rsi    # 0x1d2034
leaq 0x132b7c(%rip), %rdx    # 0x1f57cd
movl $0xed4, %ecx            # imm = 0xED4
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x6854(%rsp)
jmp 0xc3841
movq 0x6840(%rsp), %rdi
movq 0x6838(%rsp), %rax
movsd 0xf30(%rax), %xmm0
movq 0x6838(%rsp), %rsi
addq $0xf38, %rsi            # imm = 0xF38
callq 0x9ee00
cmpl $0x1, %eax
jne 0xc2d0b
leaq 0x3010(%rsp), %rdi
movq 0x6840(%rsp), %rcx
addq $0xd1c, %rcx            # imm = 0xD1C
leaq 0x10f71c(%rip), %rsi    # 0x1d23d8
leaq 0x132c8b(%rip), %rdx    # 0x1f594e
movb $0x0, %al
callq 0x5b9c0
movq 0x6838(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x3010(%rsp), %r8
leaq 0x10f34c(%rip), %rsi    # 0x1d2034
leaq 0x132ade(%rip), %rdx    # 0x1f57cd
movl $0xeda, %ecx            # imm = 0xEDA
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x6854(%rsp)
jmp 0xc3841
movq 0x6840(%rsp), %rdi
movq 0x6838(%rsp), %rax
movsd 0xf30(%rax), %xmm0
movq 0x6830(%rsp), %r8
movl $0x2, %esi
xorl %edx, %edx
leaq 0x681c(%rsp), %rcx
callq 0x9e4b0
cmpl $0x1, %eax
jne 0xc2db1
leaq 0x2810(%rsp), %rdi
movq 0x6840(%rsp), %rcx
addq $0xd1c, %rcx            # imm = 0xD1C
leaq 0x10f676(%rip), %rsi    # 0x1d23d8
leaq 0x132c19(%rip), %rdx    # 0x1f5982
movb $0x0, %al
callq 0x5b9c0
movq 0x6838(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x2810(%rsp), %r8
leaq 0x10f2a6(%rip), %rsi    # 0x1d2034
leaq 0x132a38(%rip), %rdx    # 0x1f57cd
movl $0xede, %ecx            # imm = 0xEDE
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x6854(%rsp)
jmp 0xc3841
movq 0x6830(%rsp), %rax
movq 0x6840(%rsp), %rcx
movslq 0x420(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x6838(%rsp), %rax
movsd %xmm0, 0xf40(%rax)
movq 0x6838(%rsp), %rax
movsd 0xf40(%rax), %xmm0
movq 0x6838(%rsp), %rax
movsd 0x10f44b(%rip), %xmm1   # 0x1d2248
addsd 0xf30(%rax), %xmm1
divsd %xmm1, %xmm0
movq 0x6838(%rsp), %rax
movsd %xmm0, 0xf48(%rax)
movq 0x6830(%rsp), %rax
movq 0x6840(%rsp), %rcx
movslq 0x414(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x6838(%rsp), %rax
movsd %xmm0, 0xf58(%rax)
movq 0x6838(%rsp), %rax
movsd 0xf58(%rax), %xmm0
movq 0x6838(%rsp), %rax
movsd 0x10f3e3(%rip), %xmm1   # 0x1d2248
addsd 0xf30(%rax), %xmm1
mulsd %xmm1, %xmm0
movq 0x6838(%rsp), %rax
movsd %xmm0, 0xf50(%rax)
movq 0x6838(%rsp), %rax
movsd 0xf50(%rax), %xmm0
movq 0x6840(%rsp), %rax
movsd 0x310(%rax), %xmm1
movq 0x6838(%rsp), %rax
subsd 0xf38(%rax), %xmm1
divsd %xmm1, %xmm0
movq 0x6838(%rsp), %rax
movsd %xmm0, 0xfd0(%rax)
movq 0x6838(%rsp), %rax
movswl 0x32(%rax), %eax
cmpl $0x1, %eax
jne 0xc304a
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movl 0x6824(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x6838(%rsp), %rax
subsd 0xf30(%rax), %xmm0
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movl 0x6824(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm1
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movslq 0x6824(%rsp), %rcx
subsd (%rax,%rcx,8), %xmm1
divsd %xmm1, %xmm0
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xf00(%rdx), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm2
movq 0x6838(%rsp), %rax
movsd 0xf30(%rax), %xmm1
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movslq 0x6824(%rsp), %rcx
subsd (%rax,%rcx,8), %xmm1
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movl 0x6824(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm3
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movslq 0x6824(%rsp), %rcx
subsd (%rax,%rcx,8), %xmm3
divsd %xmm3, %xmm1
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
addl $0x1, %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xf00(%rdx), %ecx
movslq %ecx, %rcx
mulsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x6838(%rsp), %rax
movsd %xmm0, 0xf60(%rax)
jmp 0xc304c
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xe80(%rdx), %ecx
movslq %ecx, %rcx
movsd 0x10f1be(%rip), %xmm1   # 0x1d2248
divsd (%rax,%rcx,8), %xmm1
movq 0x6838(%rsp), %rax
movq 0xf18(%rax), %rax
movslq 0x6824(%rsp), %rcx
divsd (%rax,%rcx,8), %xmm1
movq 0x6848(%rsp), %rax
movsd 0x630(%rax), %xmm0
ucomisd %xmm1, %xmm0
jbe 0xc3161
movl 0x6824(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x6824(%rsp)
cmpl $0x0, 0x6824(%rsp)
jge 0xc315c
leaq 0x2010(%rsp), %rdi
leaq 0x1328e8(%rip), %rsi    # 0x1f59d7
movb $0x0, %al
callq 0x5b9c0
leaq 0x1810(%rsp), %rdi
leaq 0x2010(%rsp), %rcx
leaq 0x10ef75(%rip), %rsi    # 0x1d2082
leaq 0x13291b(%rip), %rdx    # 0x1f5a2f
movb $0x0, %al
callq 0x5b9c0
movq 0x6838(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x1810(%rsp), %r8
leaq 0x10eefb(%rip), %rsi    # 0x1d2034
leaq 0x13268d(%rip), %rdx    # 0x1f57cd
movl $0xef3, %ecx            # imm = 0xEF3
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x6854(%rsp)
jmp 0xc3841
jmp 0xc304c
movq 0x6838(%rsp), %rax
movq 0xf18(%rax), %rax
movslq 0x6824(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x6838(%rsp), %rax
movsd %xmm0, 0xfd8(%rax)
movl 0x6820(%rsp), %eax
movl %eax, 0x6824(%rsp)
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xe94(%rdx), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movsd 0x6828(%rsp), %xmm1
movq 0x6848(%rsp), %rax
mulsd 0x670(%rax), %xmm1
xorl %eax, %eax
ucomisd %xmm1, %xmm0
movb %al, 0xf(%rsp)
jbe 0xc320a
cmpl $0x0, 0x6824(%rsp)
setg %al
movb %al, 0xf(%rsp)
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0xc3214
jmp 0xc322a
movl 0x6824(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x6824(%rsp)
jmp 0xc319b
movq 0x6840(%rsp), %rdi
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movslq 0x6824(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x6838(%rsp), %rsi
addq $0xfc8, %rsi            # imm = 0xFC8
callq 0x9ee00
cmpl $0x1, %eax
jne 0xc32d4
leaq 0x1010(%rsp), %rdi
movq 0x6840(%rsp), %rcx
addq $0xd1c, %rcx            # imm = 0xD1C
leaq 0x10f153(%rip), %rsi    # 0x1d23d8
leaq 0x1327af(%rip), %rdx    # 0x1f5a3b
movb $0x0, %al
callq 0x5b9c0
movq 0x6838(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x1010(%rsp), %r8
leaq 0x10ed83(%rip), %rsi    # 0x1d2034
leaq 0x132515(%rip), %rdx    # 0x1f57cd
movl $0xf02, %ecx            # imm = 0xF02
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x6854(%rsp)
jmp 0xc3841
movl $0x0, 0x6824(%rsp)
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xe90(%rdx), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
xorl %eax, %eax
movsd 0x12e274(%rip), %xmm1   # 0x1f1598
ucomisd %xmm1, %xmm0
movb %al, 0xe(%rsp)
jbe 0xc334a
movl 0x6824(%rsp), %eax
movq 0x6838(%rsp), %rcx
cmpl 0xf08(%rcx), %eax
setl %al
movb %al, 0xe(%rsp)
movb 0xe(%rsp), %al
testb $0x1, %al
jne 0xc3354
jmp 0xc336a
movl 0x6824(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x6824(%rsp)
jmp 0xc32df
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movl 0x6824(%rsp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm1
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
subl $0x1, %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xe90(%rdx), %ecx
movslq %ecx, %rcx
movsd 0x12e1cc(%rip), %xmm0   # 0x1f1598
subsd (%rax,%rcx,8), %xmm0
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xe90(%rdx), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm2
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
subl $0x1, %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xe90(%rdx), %ecx
movslq %ecx, %rcx
subsd (%rax,%rcx,8), %xmm2
divsd %xmm2, %xmm0
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movslq 0x6824(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movl 0x6824(%rsp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
subsd (%rax,%rcx,8), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x6838(%rsp), %rax
movsd %xmm0, 0xf68(%rax)
movq 0x6840(%rsp), %rdi
movq 0x6838(%rsp), %rax
movsd 0xf68(%rax), %xmm0
movq 0x6838(%rsp), %rsi
addq $0xf70, %rsi            # imm = 0xF70
callq 0x9ee00
cmpl $0x1, %eax
jne 0xc3541
leaq 0x810(%rsp), %rdi
movq 0x6840(%rsp), %rcx
addq $0xd1c, %rcx            # imm = 0xD1C
leaq 0x10eee6(%rip), %rsi    # 0x1d23d8
leaq 0x132583(%rip), %rdx    # 0x1f5a7c
movb $0x0, %al
callq 0x5b9c0
movq 0x6838(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x810(%rsp), %r8
leaq 0x10eb16(%rip), %rsi    # 0x1d2034
leaq 0x1322a8(%rip), %rdx    # 0x1f57cd
movl $0xf12, %ecx            # imm = 0xF12
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x6854(%rsp)
jmp 0xc3841
movq 0x6840(%rsp), %rdi
movq 0x6838(%rsp), %rax
movsd 0xf70(%rax), %xmm0
movq 0x6830(%rsp), %r8
movl $0x2, %esi
xorl %edx, %edx
leaq 0x681c(%rsp), %rcx
callq 0x9e9b0
cmpl $0x1, %eax
jne 0xc35e1
leaq 0x10(%rsp), %rdi
movq 0x6840(%rsp), %rcx
addq $0xd1c, %rcx            # imm = 0xD1C
leaq 0x10ee43(%rip), %rsi    # 0x1d23d8
leaq 0x132516(%rip), %rdx    # 0x1f5ab2
movb $0x0, %al
callq 0x5b9c0
movq 0x6838(%rsp), %rdi
addq $0x1064, %rdi           # imm = 0x1064
leaq 0x10(%rsp), %r8
leaq 0x10ea76(%rip), %rsi    # 0x1d2034
leaq 0x132208(%rip), %rdx    # 0x1f57cd
movl $0xf16, %ecx            # imm = 0xF16
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x6854(%rsp)
jmp 0xc3841
movq 0x6830(%rsp), %rax
movq 0x6840(%rsp), %rcx
movslq 0x420(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x6838(%rsp), %rax
movsd %xmm0, 0xf78(%rax)
movq 0x6838(%rsp), %rax
movsd 0xf78(%rax), %xmm0
movq 0x6838(%rsp), %rax
movsd 0x10ec1b(%rip), %xmm1   # 0x1d2248
addsd 0xf68(%rax), %xmm1
divsd %xmm1, %xmm0
movq 0x6838(%rsp), %rax
movsd %xmm0, 0xf80(%rax)
movq 0x6830(%rsp), %rax
movq 0x6840(%rsp), %rcx
movslq 0x414(%rcx), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x6838(%rsp), %rax
movsd %xmm0, 0xf90(%rax)
movq 0x6838(%rsp), %rax
movsd 0xf90(%rax), %xmm0
movq 0x6838(%rsp), %rax
movsd 0x10ebb3(%rip), %xmm1   # 0x1d2248
addsd 0xf68(%rax), %xmm1
mulsd %xmm1, %xmm0
movq 0x6838(%rsp), %rax
movsd %xmm0, 0xf88(%rax)
movq 0x6838(%rsp), %rax
movswl 0x32(%rax), %eax
cmpl $0x1, %eax
jne 0xc3836
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movl 0x6824(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x6838(%rsp), %rax
subsd 0xf68(%rax), %xmm0
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movl 0x6824(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm1
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movslq 0x6824(%rsp), %rcx
subsd (%rax,%rcx,8), %xmm1
divsd %xmm1, %xmm0
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xf00(%rdx), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm2
movq 0x6838(%rsp), %rax
movsd 0xf68(%rax), %xmm1
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movslq 0x6824(%rsp), %rcx
subsd (%rax,%rcx,8), %xmm1
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movl 0x6824(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm3
movq 0x6838(%rsp), %rax
movq 0xf10(%rax), %rax
movslq 0x6824(%rsp), %rcx
subsd (%rax,%rcx,8), %xmm3
divsd %xmm3, %xmm1
movq 0x6838(%rsp), %rax
movq 0xf20(%rax), %rax
movl 0x6824(%rsp), %ecx
addl $0x1, %ecx
movq 0x6838(%rsp), %rdx
imull 0xf04(%rdx), %ecx
movq 0x6838(%rsp), %rdx
addl 0xf00(%rdx), %ecx
movslq %ecx, %rcx
mulsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x6838(%rsp), %rax
movsd %xmm0, 0xf98(%rax)
movl $0x0, 0x6854(%rsp)
movl 0x6854(%rsp), %eax
addq $0x6858, %rsp           # imm = 0x6858
retq