// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../source/transfer.c
// Function: transfer_init
int transfer_init(
                  struct precision * ppr,
                  struct background * pba,
                  struct thermodynamics * pth,
                  struct perturbations * ppt,
                  struct fourier * pfo,
                  struct transfer * ptr
                  ) {

  /** Summary: */

  /** - define local variables */

  /* running index for wavenumbers */
  int index_q;

  /* conformal time today */
  double tau0;
  /* conformal time at recombination */
  double tau_rec;
  /* order of magnitude of the oscillation period of transfer functions */
  double q_period;

  /* maximum number of sampling times for transfer sources */
  int tau_size_max;

  /* array of sources S(k,tau), just taken from perturbation module,
     or transformed if non-linear corrections are needed
     sources[index_md][index_ic * ppt->tp_size[index_md] + index_tp][index_tau * ppt->k_size[index_md] + index_k]
  */
  double *** sources;

  /* array of source derivatives S''(k,tau)
     (second derivative with respect to k, not tau!),
     used to interpolate sources at the right values of k,
     sources_spline[index_md][index_ic * ppt->tp_size[index_md] + index_tp][index_tau * ppt->k_size[index_md] + index_k]
  */
  double *** sources_spline;


  /** - array with the correspondence between the index of sources in
      the perturbation module and in the transfer module,
      tp_of_tt[index_md][index_tt]
  */
  int ** tp_of_tt;

  /* structure containing the flat spherical bessel functions */

  HyperInterpStruct BIS;
  double xmax;


  /** - check whether any spectrum in harmonic space (i.e., any \f$C_l\f$'s) is actually requested */

  if (ppt->has_cls == _FALSE_) {
    ptr->has_cls = _FALSE_;
    if (ptr->transfer_verbose > 0)
      printf("No harmonic space transfer functions to compute. Transfer module skipped.\n");
    return _SUCCESS_;
  }
  else
    ptr->has_cls = _TRUE_;

  if (ptr->transfer_verbose > 0)
    fprintf(stdout,"Computing transfers\n");

  /** - check whether we will need the full Limber scheme */

  if ((ppt->has_cl_cmb_lensing_potential == _TRUE_) && (ppt->want_lcmb_full_limber == _TRUE_)) {
    ptr->do_lcmb_full_limber = _TRUE_;
  }
  else {
    ptr->do_lcmb_full_limber = _FALSE_;
  }

  /** - get number of modes (scalars, tensors...) */

  ptr->md_size = ppt->md_size;

  /** - get conformal age / recombination time
      from background / thermodynamics structures
      (only place where these structures are used in this module) */

  tau0 = pba->conformal_age;
  tau_rec = pth->tau_rec;

  /** - correspondence between k and l depend on angular diameter
      distance, i.e. on curvature. */

  ptr->angular_rescaling = pth->angular_rescaling;

  /** - order of magnitude of the oscillation period of transfer functions */

  q_period = 2.*_PI_/(tau0-tau_rec)*ptr->angular_rescaling;

  /** - initialize all indices in the transfer structure and
      allocate all its arrays using transfer_indices() */

  class_call(transfer_indices(ppr,ppt,ptr,q_period,pba->K,pba->sgnK),
             ptr->error_message,
             ptr->error_message);

  /** - copy sources to a local array sources (in fact, only the pointers are copied, not the data), and eventually apply non-linear corrections to the sources */

  class_alloc(sources,
              ptr->md_size*sizeof(double**),
              ptr->error_message);

  class_call(transfer_perturbation_copy_sources_and_nl_corrections(ppt,pfo,ptr,sources),
             ptr->error_message,
             ptr->error_message);

  /** - spline all the sources passed by the perturbation module with respect to k (in order to interpolate later at a given value of k) */

  class_alloc(sources_spline,
              ptr->md_size*sizeof(double**),
              ptr->error_message);

  class_call(transfer_perturbation_source_spline(ppt,ptr,sources,sources_spline),
             ptr->error_message,
             ptr->error_message);

  /** - allocate and fill array describing the correspondence between perturbation types and transfer types */

  class_alloc(tp_of_tt,
              ptr->md_size*sizeof(int*),
              ptr->error_message);

  class_call(transfer_get_source_correspondence(ppt,ptr,tp_of_tt),
             ptr->error_message,
             ptr->error_message);

  /** - evaluate maximum number of sampled times in the transfer
      sources: needs to be known here, in order to allocate a large
      enough workspace */

  class_call(transfer_source_tau_size_max(ppr,pba,ppt,ptr,tau_rec,tau0,&tau_size_max),
             ptr->error_message,
             ptr->error_message);

  /** - compute flat spherical bessel functions */

  xmax = ptr->q[ptr->q_size-1]*tau0;
  // If the use the flat approximation for K<0, we need to increase xmax artificially
  if (pba->sgnK == -1 && ptr->index_q_flat_approximation < ptr->q_size)
    xmax *= sqrt(pba->sgnK*pba->K)/ptr->q[ptr->q_size-1]*(ptr->l[ptr->l_size_max-1]+1)/asinh((ptr->l[ptr->l_size_max-1]+1)/ptr->q[ptr->q_size-1]*sqrt(pba->sgnK*pba->K))*1.01;

  class_call(hyperspherical_HIS_create(0,
                                       1.,
                                       ptr->l_size_max,
                                       ptr->l,
                                       ppr->hyper_x_min,
                                       xmax,
                                       ppr->hyper_sampling_flat,
                                       ptr->l[ptr->l_size_max-1]+1,
                                       ppr->hyper_phi_min_abs,
                                       &BIS,
                                       ptr->error_message),
             ptr->error_message,
             ptr->error_message);

  /** - eventually read the selection and evolution functions */

  class_call(transfer_global_selection_read(ptr),
             ptr->error_message,
             ptr->error_message);

  /** - precompute window function for integrated nCl/sCl quantities*/
  double* window = NULL;
  if ((ppt->has_cl_lensing_potential == _TRUE_) || (ppt->has_cl_number_count == _TRUE_)) {
    class_call(transfer_precompute_selection(ppr,
                                             pba,
                                             ppt,
                                             ptr,
                                             tau_rec,
                                             tau_size_max,
                                             &(window)),
               ptr->error_message,
               ptr->error_message);
  }

  class_setup_parallel();

  /** - loop over all wavenumbers (parallelized).*/
  /* For each wavenumber: */
  for (index_q = 0; index_q < MAX(ptr->q_size,ptr->q_size_limber); index_q++) {
 class_run_parallel(with_arguments(pba,pth,ppt,ptr,ppr,index_q,tau_rec,tp_of_tt,sources,sources_spline,tau_size_max,window,tau0,&BIS),

      /* compute the transfer functions in the normal case (not the
         full Limber one) */

      struct transfer_workspace tw;
      struct transfer_workspace * ptw = &tw;

      class_call(transfer_workspace_init(ptr,
                                         ppr,
                                         ptw,
                                         ppt->tau_size,
                                         tau_size_max,
                                         pba->K,
                                         pba->sgnK,
                                         tau0-pth->tau_cut,
                                         &BIS),
                 ptr->error_message,
                 ptr->error_message);

      if (index_q < ptr->q_size) {

        if (ptr->transfer_verbose > 2)
        printf("Compute transfer for wavenumber [%d/%zu]\n",index_q,ptr->q_size-1);

        /* Update interpolation structure: */
        class_call(transfer_update_HIS(ppr,
                                       ptr,
                                       ptw,
                                       index_q,
                                       tau0),
                   ptr->error_message,
                   ptr->error_message);

        class_call(transfer_compute_for_each_q(ppr,
                                               pba,
                                               ppt,
                                               ptr,
                                               tp_of_tt,
                                               index_q,
                                               tau_size_max,
                                               tau_rec,
                                               sources,
                                               sources_spline,
                                               window,
                                               ptw,
                                               _FALSE_),
                   ptr->error_message,
                   ptr->error_message);
      }

      /* compute the transfer functions in the full Limber case (if
       this case is not needed, ptr->q_size_limber=0 and the
       condition is never met) */

      if (index_q < ptr->q_size_limber) {

        class_call(transfer_compute_for_each_q(ppr,
                                               pba,
                                               ppt,
                                               ptr,
                                               tp_of_tt,
                                               index_q,
                                               tau_size_max,
                                               tau_rec,
                                               sources,
                                               sources_spline,
                                               window,
                                               ptw,
                                               _TRUE_),
                            ptr->error_message,
                            ptr->error_message);
      }

      class_call(transfer_workspace_free(ptr,ptw),
                 ptr->error_message,
                 ptr->error_message);
      return _SUCCESS_;
    );
  } /* end of loop over wavenumber */

  class_finish_parallel();

  /** - finally, free arrays allocated outside parallel zone */
  free(window);

  class_call(transfer_perturbation_sources_spline_free(ppt,ptr,sources_spline),
             ptr->error_message,
             ptr->error_message);

  class_call(transfer_perturbation_sources_free(ppt,pfo,ptr,sources),
             ptr->error_message,
             ptr->error_message);

  class_call(transfer_free_source_correspondence(ptr,tp_of_tt),
             ptr->error_message,
             ptr->error_message);

  class_call(hyperspherical_HIS_free(&BIS,ptr->error_message),
             ptr->error_message,
             ptr->error_message);

  ptr->is_allocated = _TRUE_;
  return _SUCCESS_;
}

// Assembly:
subq $0x7a78, %rsp           # imm = 0x7A78
movq %rdi, 0x7a68(%rsp)
movq %rsi, 0x7a60(%rsp)
movq %rdx, 0x7a58(%rsp)
movq %rcx, 0x7a50(%rsp)
movq %r8, 0x7a48(%rsp)
movq %r9, 0x7a40(%rsp)
movq 0x7a50(%rsp), %rax
movswl 0xc(%rax), %eax
cmpl $0x0, %eax
jne 0x12fdfb
movq 0x7a40(%rsp), %rax
movw $0x0, 0x8a0(%rax)
movq 0x7a40(%rsp), %rax
movswl 0x968(%rax), %eax
cmpl $0x0, %eax
jle 0x12fdeb
leaq 0xd2c55(%rip), %rdi     # 0x202a39
movb $0x0, %al
callq 0x8030
movl $0x0, 0x7a74(%rsp)
jmp 0x130e3f
movq 0x7a40(%rsp), %rax
movw $0x1, 0x8a0(%rax)
movq 0x7a40(%rsp), %rax
movswl 0x968(%rax), %eax
cmpl $0x0, %eax
jle 0x12fe38
movq 0x114169(%rip), %rax    # 0x243f90
movq (%rax), %rdi
leaq 0xd2c53(%rip), %rsi     # 0x202a84
movb $0x0, %al
callq 0x84e0
movq 0x7a50(%rsp), %rax
movswl 0x2c(%rax), %eax
cmpl $0x1, %eax
jne 0x12fe6d
movq 0x7a50(%rsp), %rax
movswl 0x60(%rax), %eax
cmpl $0x1, %eax
jne 0x12fe6d
movq 0x7a40(%rsp), %rax
movw $0x1, 0x93c(%rax)
jmp 0x12fe7e
movq 0x7a40(%rsp), %rax
movw $0x0, 0x93c(%rax)
movq 0x7a50(%rsp), %rax
movl 0x854(%rax), %ecx
movq 0x7a40(%rsp), %rax
movl %ecx, 0x8a4(%rax)
movq 0x7a60(%rsp), %rax
movsd 0x310(%rax), %xmm0
movsd %xmm0, 0x7a30(%rsp)
movq 0x7a58(%rsp), %rax
movsd 0xf38(%rax), %xmm0
movsd %xmm0, 0x7a28(%rsp)
movq 0x7a58(%rsp), %rax
movsd 0xfd0(%rax), %xmm0
movq 0x7a40(%rsp), %rax
movsd %xmm0, 0x918(%rax)
movsd 0x7a30(%rsp), %xmm1
subsd 0x7a28(%rsp), %xmm1
movsd 0xa5582(%rip), %xmm0    # 0x1d5488
divsd %xmm1, %xmm0
movq 0x7a40(%rsp), %rax
mulsd 0x918(%rax), %xmm0
movsd %xmm0, 0x7a20(%rsp)
movq 0x7a68(%rsp), %rdi
movq 0x7a50(%rsp), %rsi
movq 0x7a40(%rsp), %rdx
movsd 0x7a20(%rsp), %xmm0
movq 0x7a60(%rsp), %rax
movsd 0x318(%rax), %xmm1
movq 0x7a60(%rsp), %rax
movl 0x320(%rax), %ecx
callq 0x130e60
cmpl $0x1, %eax
jne 0x12ffd9
leaq 0x7190(%rsp), %rdi
movq 0x7a40(%rsp), %rcx
addq $0x96a, %rcx            # imm = 0x96A
leaq 0xa244e(%rip), %rsi     # 0x1d23d8
leaq 0xd2b08(%rip), %rdx     # 0x202a99
movb $0x0, %al
callq 0x5b9c0
movq 0x7a40(%rsp), %rdi
addq $0x96a, %rdi            # imm = 0x96A
leaq 0x7190(%rsp), %r8
leaq 0xa207e(%rip), %rsi     # 0x1d2034
leaq 0xd2b14(%rip), %rdx     # 0x202ad1
movl $0xd8, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x7a74(%rsp)
jmp 0x130e3f
movq 0x7a40(%rsp), %rax
movslq 0x8a4(%rax), %rdi
shlq $0x3, %rdi
callq 0x8460
movq %rax, 0x7a10(%rsp)
cmpq $0x0, 0x7a10(%rsp)
jne 0x130083
movq 0x7a40(%rsp), %rax
movslq 0x8a4(%rax), %rax
shlq $0x3, %rax
movl %eax, 0x718c(%rsp)
leaq 0x6980(%rsp), %rdi
movl 0x718c(%rsp), %ecx
leaq 0xa1fd0(%rip), %rsi     # 0x1d2004
leaq 0xc8366(%rip), %rdx     # 0x1f83a1
movb $0x0, %al
callq 0x5b9c0
movq 0x7a40(%rsp), %rdi
addq $0x96a, %rdi            # imm = 0x96A
leaq 0x6980(%rsp), %r8
leaq 0xa1fd4(%rip), %rsi     # 0x1d2034
leaq 0xd2a6a(%rip), %rdx     # 0x202ad1
movl $0xde, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x7a74(%rsp)
jmp 0x130e3f
movq 0x7a50(%rsp), %rdi
movq 0x7a48(%rsp), %rsi
movq 0x7a40(%rsp), %rdx
movq 0x7a10(%rsp), %rcx
callq 0x131ec0
cmpl $0x1, %eax
jne 0x13011a
leaq 0x6180(%rsp), %rdi
movq 0x7a40(%rsp), %rcx
addq $0x96a, %rcx            # imm = 0x96A
leaq 0xa230d(%rip), %rsi     # 0x1d23d8
leaq 0xd2a0d(%rip), %rdx     # 0x202adf
movb $0x0, %al
callq 0x5b9c0
movq 0x7a40(%rsp), %rdi
addq $0x96a, %rdi            # imm = 0x96A
leaq 0x6180(%rsp), %r8
leaq 0xa1f3d(%rip), %rsi     # 0x1d2034
leaq 0xd29d3(%rip), %rdx     # 0x202ad1
movl $0xe2, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x7a74(%rsp)
jmp 0x130e3f
movq 0x7a40(%rsp), %rax
movslq 0x8a4(%rax), %rdi
shlq $0x3, %rdi
callq 0x8460
movq %rax, 0x7a08(%rsp)
cmpq $0x0, 0x7a08(%rsp)
jne 0x1301c4
movq 0x7a40(%rsp), %rax
movslq 0x8a4(%rax), %rax
shlq $0x3, %rax
movl %eax, 0x617c(%rsp)
leaq 0x5970(%rsp), %rdi
movl 0x617c(%rsp), %ecx
leaq 0xa1e8f(%rip), %rsi     # 0x1d2004
leaq 0xd29ae(%rip), %rdx     # 0x202b2a
movb $0x0, %al
callq 0x5b9c0
movq 0x7a40(%rsp), %rdi
addq $0x96a, %rdi            # imm = 0x96A
leaq 0x5970(%rsp), %r8
leaq 0xa1e93(%rip), %rsi     # 0x1d2034
leaq 0xd2929(%rip), %rdx     # 0x202ad1
movl $0xe8, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x7a74(%rsp)
jmp 0x130e3f
movq 0x7a50(%rsp), %rdi
movq 0x7a40(%rsp), %rsi
movq 0x7a10(%rsp), %rdx
movq 0x7a08(%rsp), %rcx
callq 0x132800
cmpl $0x1, %eax
jne 0x13025b
leaq 0x5170(%rsp), %rdi
movq 0x7a40(%rsp), %rcx
addq $0x96a, %rcx            # imm = 0x96A
leaq 0xa21cc(%rip), %rsi     # 0x1d23d8
leaq 0xd2926(%rip), %rdx     # 0x202b39
movb $0x0, %al
callq 0x5b9c0
movq 0x7a40(%rsp), %rdi
addq $0x96a, %rdi            # imm = 0x96A
leaq 0x5170(%rsp), %r8
leaq 0xa1dfc(%rip), %rsi     # 0x1d2034
leaq 0xd2892(%rip), %rdx     # 0x202ad1
movl $0xec, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x7a74(%rsp)
jmp 0x130e3f
movq 0x7a40(%rsp), %rax
movslq 0x8a4(%rax), %rdi
shlq $0x3, %rdi
callq 0x8460
movq %rax, 0x7a00(%rsp)
cmpq $0x0, 0x7a00(%rsp)
jne 0x130305
movq 0x7a40(%rsp), %rax
movslq 0x8a4(%rax), %rax
shlq $0x3, %rax
movl %eax, 0x516c(%rsp)
leaq 0x4960(%rsp), %rdi
movl 0x516c(%rsp), %ecx
leaq 0xa1d4e(%rip), %rsi     # 0x1d2004
leaq 0xd28c0(%rip), %rdx     # 0x202b7d
movb $0x0, %al
callq 0x5b9c0
movq 0x7a40(%rsp), %rdi
addq $0x96a, %rdi            # imm = 0x96A
leaq 0x4960(%rsp), %r8
leaq 0xa1d52(%rip), %rsi     # 0x1d2034
leaq 0xd27e8(%rip), %rdx     # 0x202ad1
movl $0xf2, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x7a74(%rsp)
jmp 0x130e3f
movq 0x7a50(%rsp), %rdi
movq 0x7a40(%rsp), %rsi
movq 0x7a00(%rsp), %rdx
callq 0x132cf0
cmpl $0x1, %eax
jne 0x130394
leaq 0x4160(%rsp), %rdi
movq 0x7a40(%rsp), %rcx
addq $0x96a, %rcx            # imm = 0x96A
leaq 0xa2093(%rip), %rsi     # 0x1d23d8
leaq 0xd283a(%rip), %rdx     # 0x202b86
movb $0x0, %al
callq 0x5b9c0
movq 0x7a40(%rsp), %rdi
addq $0x96a, %rdi            # imm = 0x96A
leaq 0x4160(%rsp), %r8
leaq 0xa1cc3(%rip), %rsi     # 0x1d2034
leaq 0xd2759(%rip), %rdx     # 0x202ad1
movl $0xf6, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x7a74(%rsp)
jmp 0x130e3f
movq 0x7a68(%rsp), %rdi
movq 0x7a60(%rsp), %rsi
movq 0x7a50(%rsp), %rdx
movq 0x7a40(%rsp), %rcx
movsd 0x7a28(%rsp), %xmm0
movsd 0x7a30(%rsp), %xmm1
leaq 0x7a1c(%rsp), %r8
callq 0x133850
cmpl $0x1, %eax
jne 0x130445
leaq 0x3960(%rsp), %rdi
movq 0x7a40(%rsp), %rcx
addq $0x96a, %rcx            # imm = 0x96A
leaq 0xa1fe2(%rip), %rsi     # 0x1d23d8
leaq 0xd27be(%rip), %rdx     # 0x202bbb
movb $0x0, %al
callq 0x5b9c0
movq 0x7a40(%rsp), %rdi
addq $0x96a, %rdi            # imm = 0x96A
leaq 0x3960(%rsp), %r8
leaq 0xa1c12(%rip), %rsi     # 0x1d2034
leaq 0xd26a8(%rip), %rdx     # 0x202ad1
movl $0xfe, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x7a74(%rsp)
jmp 0x130e3f
movq 0x7a40(%rsp), %rax
movq 0x928(%rax), %rax
movq 0x7a40(%rsp), %rcx
movq 0x920(%rcx), %rcx
subq $0x1, %rcx
movsd (%rax,%rcx,8), %xmm0
mulsd 0x7a30(%rsp), %xmm0
movsd %xmm0, 0x7998(%rsp)
movq 0x7a60(%rsp), %rax
cmpl $-0x1, 0x320(%rax)
jne 0x1305f6
movq 0x7a40(%rsp), %rax
movslq 0x938(%rax), %rax
movq 0x7a40(%rsp), %rcx
cmpq 0x920(%rcx), %rax
jae 0x1305f6
movq 0x7a60(%rsp), %rax
cvtsi2sdl 0x320(%rax), %xmm0
movq 0x7a60(%rsp), %rax
mulsd 0x318(%rax), %xmm0
callq 0x82e0
movq 0x7a40(%rsp), %rax
movq 0x928(%rax), %rax
movq 0x7a40(%rsp), %rcx
movq 0x920(%rcx), %rcx
subq $0x1, %rcx
divsd (%rax,%rcx,8), %xmm0
movq 0x7a40(%rsp), %rax
movq 0x910(%rax), %rax
movq 0x7a40(%rsp), %rcx
movl 0x908(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
addl $0x1, %eax
cvtsi2sd %eax, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, 0x38(%rsp)
movq 0x7a40(%rsp), %rax
movq 0x910(%rax), %rax
movq 0x7a40(%rsp), %rcx
movl 0x908(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
addl $0x1, %eax
cvtsi2sd %eax, %xmm0
movq 0x7a40(%rsp), %rax
movq 0x928(%rax), %rax
movq 0x7a40(%rsp), %rcx
movq 0x920(%rcx), %rcx
subq $0x1, %rcx
divsd (%rax,%rcx,8), %xmm0
movsd %xmm0, 0x30(%rsp)
movq 0x7a60(%rsp), %rax
cvtsi2sdl 0x320(%rax), %xmm0
movq 0x7a60(%rsp), %rax
mulsd 0x318(%rax), %xmm0
callq 0x82e0
movaps %xmm0, %xmm1
movsd 0x30(%rsp), %xmm0
mulsd %xmm1, %xmm0
callq 0x8480
movaps %xmm0, %xmm1
movsd 0x38(%rsp), %xmm0
divsd %xmm1, %xmm0
movsd 0xd2040(%rip), %xmm1    # 0x202620
mulsd %xmm1, %xmm0
mulsd 0x7998(%rsp), %xmm0
movsd %xmm0, 0x7998(%rsp)
movq 0x7a40(%rsp), %rax
movl 0x908(%rax), %esi
movq 0x7a40(%rsp), %rax
movq 0x910(%rax), %rdx
movq 0x7a68(%rsp), %rax
movsd 0x718(%rax), %xmm1
movsd 0x7998(%rsp), %xmm2
movq 0x7a68(%rsp), %rax
movsd 0x720(%rax), %xmm3
movq 0x7a40(%rsp), %rax
movq 0x910(%rax), %rax
movq 0x7a40(%rsp), %rcx
movl 0x908(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %ecx
addl $0x1, %ecx
movq 0x7a68(%rsp), %rax
movsd 0x740(%rax), %xmm4
movq 0x7a40(%rsp), %r9
addq $0x96a, %r9             # imm = 0x96A
xorl %edi, %edi
movsd 0xa1bba(%rip), %xmm0    # 0x1d2248
leaq 0x79a0(%rsp), %r8
callq 0x3e8b0
cmpl $0x1, %eax
jne 0x13070d
leaq 0x3160(%rsp), %rdi
movq 0x7a40(%rsp), %rcx
addq $0x96a, %rcx            # imm = 0x96A
leaq 0xa1d1a(%rip), %rsi     # 0x1d23d8
leaq 0xd253f(%rip), %rdx     # 0x202c04
movb $0x0, %al
callq 0x5b9c0
movq 0x7a40(%rsp), %rdi
addq $0x96a, %rdi            # imm = 0x96A
leaq 0x3160(%rsp), %r8
leaq 0xa194a(%rip), %rsi     # 0x1d2034
leaq 0xd23e0(%rip), %rdx     # 0x202ad1
movl $0x113, %ecx            # imm = 0x113
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x7a74(%rsp)
jmp 0x130e3f
movq 0x7a40(%rsp), %rdi
callq 0x133a50
cmpl $0x1, %eax
jne 0x13078c
leaq 0x2960(%rsp), %rdi
movq 0x7a40(%rsp), %rcx
addq $0x96a, %rcx            # imm = 0x96A
leaq 0xa1c9b(%rip), %rsi     # 0x1d23d8
leaq 0xd257b(%rip), %rdx     # 0x202cbf
movb $0x0, %al
callq 0x5b9c0
movq 0x7a40(%rsp), %rdi
addq $0x96a, %rdi            # imm = 0x96A
leaq 0x2960(%rsp), %r8
leaq 0xa18cb(%rip), %rsi     # 0x1d2034
leaq 0xd2361(%rip), %rdx     # 0x202ad1
movl $0x119, %ecx            # imm = 0x119
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x7a74(%rsp)
jmp 0x130e3f
movq $0x0, 0x2958(%rsp)
movq 0x7a50(%rsp), %rax
movswl 0x2e(%rax), %eax
cmpl $0x1, %eax
je 0x1307be
movq 0x7a50(%rsp), %rax
movswl 0x30(%rax), %eax
cmpl $0x1, %eax
jne 0x130870
movq 0x7a68(%rsp), %rdi
movq 0x7a60(%rsp), %rsi
movq 0x7a50(%rsp), %rdx
movq 0x7a40(%rsp), %rcx
movsd 0x7a28(%rsp), %xmm0
movl 0x7a1c(%rsp), %r8d
leaq 0x2958(%rsp), %r9
callq 0x1347b0
cmpl $0x1, %eax
jne 0x13086e
leaq 0x2150(%rsp), %rdi
movq 0x7a40(%rsp), %rcx
addq $0x96a, %rcx            # imm = 0x96A
leaq 0xa1bb9(%rip), %rsi     # 0x1d23d8
leaq 0xd24bd(%rip), %rdx     # 0x202ce3
movb $0x0, %al
callq 0x5b9c0
movq 0x7a40(%rsp), %rdi
addq $0x96a, %rdi            # imm = 0x96A
leaq 0x2150(%rsp), %r8
leaq 0xa17e9(%rip), %rsi     # 0x1d2034
leaq 0xd227f(%rip), %rdx     # 0x202ad1
movl $0x126, %ecx            # imm = 0x126
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x7a74(%rsp)
jmp 0x130e3f
jmp 0x130870
callq 0x2edc0
movl %eax, %esi
leaq 0x2110(%rsp), %rdi
callq 0x2ef50
leaq 0x20f8(%rsp), %rdi
callq 0x2f070
movl $0x0, 0x7a3c(%rsp)
movslq 0x7a3c(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x7a40(%rsp), %rax
movq 0x920(%rax), %rax
movq 0x7a40(%rsp), %rcx
cmpq 0x940(%rcx), %rax
jae 0x1308df
movq 0x7a40(%rsp), %rax
movq 0x940(%rax), %rax
movq %rax, 0x20(%rsp)
jmp 0x1308f3
movq 0x7a40(%rsp), %rax
movq 0x920(%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x28(%rsp), %rax
movq 0x20(%rsp), %rcx
cmpq %rcx, %rax
jae 0x130a7e
movq 0x7a60(%rsp), %rax
movq %rax, 0x2078(%rsp)
movq 0x7a58(%rsp), %rax
movq %rax, 0x2080(%rsp)
movq 0x7a50(%rsp), %rax
movq %rax, 0x2088(%rsp)
movq 0x7a40(%rsp), %rax
movq %rax, 0x2090(%rsp)
movq 0x7a68(%rsp), %rax
movq %rax, 0x2098(%rsp)
movl 0x7a3c(%rsp), %eax
movl %eax, 0x20a0(%rsp)
movsd 0x7a28(%rsp), %xmm0
movsd %xmm0, 0x20a8(%rsp)
movq 0x7a00(%rsp), %rax
movq %rax, 0x20b0(%rsp)
movq 0x7a10(%rsp), %rax
movq %rax, 0x20b8(%rsp)
movq 0x7a08(%rsp), %rax
movq %rax, 0x20c0(%rsp)
movl 0x7a1c(%rsp), %eax
movl %eax, 0x20c8(%rsp)
movq 0x2958(%rsp), %rax
movq %rax, 0x20d0(%rsp)
movsd 0x7a30(%rsp), %xmm0
movsd %xmm0, 0x20d8(%rsp)
leaq 0x79a0(%rsp), %rax
movq %rax, 0x20e0(%rsp)
leaq 0x20e8(%rsp), %rdi
leaq 0x2110(%rsp), %rsi
leaq 0x2078(%rsp), %rdx
callq 0x137450
jmp 0x130a05
leaq 0x20f8(%rsp), %rdi
leaq 0x20e8(%rsp), %rsi
callq 0x2f080
jmp 0x130a1c
leaq 0x20e8(%rsp), %rdi
callq 0x2f0b0
movl 0x7a3c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x7a3c(%rsp)
jmp 0x13089c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2070(%rsp)
movl %eax, 0x206c(%rsp)
jmp 0x130e23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2070(%rsp)
movl %eax, 0x206c(%rsp)
leaq 0x20e8(%rsp), %rdi
callq 0x2f0b0
jmp 0x130e23
leaq 0x20f8(%rsp), %rax
movq %rax, 0x2060(%rsp)
movq 0x2060(%rsp), %rdi
callq 0x2f0c0
movq %rax, 0x2058(%rsp)
movq 0x2060(%rsp), %rdi
callq 0x2f0f0
movq %rax, 0x2050(%rsp)
leaq 0x2058(%rsp), %rdi
leaq 0x2050(%rsp), %rsi
callq 0x2f120
testb $0x1, %al
jne 0x130ad3
jmp 0x130b30
leaq 0x2058(%rsp), %rdi
callq 0x2f160
movq %rax, 0x2048(%rsp)
movq 0x2048(%rsp), %rdi
callq 0x2f170
movl %eax, 0x1c(%rsp)
jmp 0x130afb
movl 0x1c(%rsp), %eax
cmpl $0x0, %eax
je 0x130b1f
movl $0x1, 0x7a74(%rsp)
movl $0x1, 0x2044(%rsp)
jmp 0x130e07
jmp 0x130b21
leaq 0x2058(%rsp), %rdi
callq 0x2f1f0
jmp 0x130ab8
leaq 0x20f8(%rsp), %rdi
callq 0x2f210
movq 0x2958(%rsp), %rdi
callq 0x8420
movq 0x7a50(%rsp), %rdi
movq 0x7a40(%rsp), %rsi
movq 0x7a08(%rsp), %rdx
callq 0x137610
movl %eax, 0x18(%rsp)
jmp 0x130b6d
movl 0x18(%rsp), %eax
cmpl $0x1, %eax
jne 0x130bf2
movq 0x7a40(%rsp), %rcx
addq $0x96a, %rcx            # imm = 0x96A
leaq 0xa184c(%rip), %rsi     # 0x1d23d8
leaq 0xd21a4(%rip), %rdx     # 0x202d37
xorl %eax, %eax
leaq 0x1840(%rsp), %rdi
callq 0x5b9c0
jmp 0x130ba4
movq 0x7a40(%rsp), %rdi
addq $0x96a, %rdi            # imm = 0x96A
leaq 0xa147a(%rip), %rsi     # 0x1d2034
leaq 0xd1f10(%rip), %rdx     # 0x202ad1
xorl %eax, %eax
movl $0x186, %ecx            # imm = 0x186
leaq 0x1840(%rsp), %r8
callq 0x5b9c0
jmp 0x130bd7
movl $0x1, 0x7a74(%rsp)
movl $0x1, 0x2044(%rsp)
jmp 0x130e07
movq 0x7a50(%rsp), %rdi
movq 0x7a48(%rsp), %rsi
movq 0x7a40(%rsp), %rdx
movq 0x7a10(%rsp), %rcx
callq 0x137710
movl %eax, 0x14(%rsp)
jmp 0x130c1d
movl 0x14(%rsp), %eax
cmpl $0x1, %eax
jne 0x130ca2
movq 0x7a40(%rsp), %rcx
addq $0x96a, %rcx            # imm = 0x96A
leaq 0xa179c(%rip), %rsi     # 0x1d23d8
leaq 0xd2136(%rip), %rdx     # 0x202d79
xorl %eax, %eax
leaq 0x1040(%rsp), %rdi
callq 0x5b9c0
jmp 0x130c54
movq 0x7a40(%rsp), %rdi
addq $0x96a, %rdi            # imm = 0x96A
leaq 0xa13ca(%rip), %rsi     # 0x1d2034
leaq 0xd1e60(%rip), %rdx     # 0x202ad1
xorl %eax, %eax
movl $0x18a, %ecx            # imm = 0x18A
leaq 0x1040(%rsp), %r8
callq 0x5b9c0
jmp 0x130c87
movl $0x1, 0x7a74(%rsp)
movl $0x1, 0x2044(%rsp)
jmp 0x130e07
movq 0x7a40(%rsp), %rdi
movq 0x7a00(%rsp), %rsi
callq 0x137980
movl %eax, 0x10(%rsp)
jmp 0x130cbd
movl 0x10(%rsp), %eax
cmpl $0x1, %eax
jne 0x130d42
movq 0x7a40(%rsp), %rcx
addq $0x96a, %rcx            # imm = 0x96A
leaq 0xa16fc(%rip), %rsi     # 0x1d23d8
leaq 0xd20ce(%rip), %rdx     # 0x202db1
xorl %eax, %eax
leaq 0x840(%rsp), %rdi
callq 0x5b9c0
jmp 0x130cf4
movq 0x7a40(%rsp), %rdi
addq $0x96a, %rdi            # imm = 0x96A
leaq 0xa132a(%rip), %rsi     # 0x1d2034
leaq 0xd1dc0(%rip), %rdx     # 0x202ad1
xorl %eax, %eax
movl $0x18e, %ecx            # imm = 0x18E
leaq 0x840(%rsp), %r8
callq 0x5b9c0
jmp 0x130d27
movl $0x1, 0x7a74(%rsp)
movl $0x1, 0x2044(%rsp)
jmp 0x130e07
movq 0x7a40(%rsp), %rsi
addq $0x96a, %rsi            # imm = 0x96A
leaq 0x79a0(%rsp), %rdi
callq 0x402f0
movl %eax, 0xc(%rsp)
jmp 0x130d64
movl 0xc(%rsp), %eax
cmpl $0x1, %eax
jne 0x130de0
movq 0x7a40(%rsp), %rcx
addq $0x96a, %rcx            # imm = 0x96A
leaq 0xa1655(%rip), %rsi     # 0x1d23d8
leaq 0xd2059(%rip), %rdx     # 0x202de3
xorl %eax, %eax
leaq 0x40(%rsp), %rdi
callq 0x5b9c0
jmp 0x130d98
movq 0x7a40(%rsp), %rdi
addq $0x96a, %rdi            # imm = 0x96A
leaq 0xa1286(%rip), %rsi     # 0x1d2034
leaq 0xd1d1c(%rip), %rdx     # 0x202ad1
xorl %eax, %eax
movl $0x192, %ecx            # imm = 0x192
leaq 0x40(%rsp), %r8
callq 0x5b9c0
jmp 0x130dc8
movl $0x1, 0x7a74(%rsp)
movl $0x1, 0x2044(%rsp)
jmp 0x130e07
movq 0x7a40(%rsp), %rax
movw $0x1, 0x116a(%rax)
movl $0x0, 0x7a74(%rsp)
movl $0x1, 0x2044(%rsp)
leaq 0x20f8(%rsp), %rdi
callq 0x2f230
leaq 0x2110(%rsp), %rdi
callq 0x2f290
jmp 0x130e3f
leaq 0x20f8(%rsp), %rdi
callq 0x2f230
leaq 0x2110(%rsp), %rdi
callq 0x2f290
jmp 0x130e4e
movl 0x7a74(%rsp), %eax
addq $0x7a78, %rsp           # imm = 0x7A78
retq
movq 0x2070(%rsp), %rdi
callq 0x8640
nopl (%rax,%rax)