// File: /workspace/github_c_makefile_star2_O1/PoulinV[P]AxiCLASS/build/../source/input.c
// Function: input_read_parameters_spectra
int input_read_parameters_spectra(struct file_content * pfc,
                                  struct precision * ppr,
                                  struct background * pba,
                                  struct primordial * ppm,
                                  struct perturbations * ppt,
                                  struct transfer * ptr,
                                  struct harmonic *phr,
                                  struct output * pop,
                                  ErrorMsg errmsg){

  /** Summary: */

  /** Define local variables */
  int flag1, flag2;
  double param1, param2;
  char string1[_ARGUMENT_LENGTH_MAX_];
  int int1;
  double * pointer1;
  int i;
  double z_max=0.;
  int bin;

  /** 1) Maximum l for CLs */
  /* Read */
  if (ppt->has_cls == _TRUE_) {
    if (ppt->has_scalars == _TRUE_) {
      if ((ppt->has_cl_cmb_temperature == _TRUE_) || (ppt->has_cl_cmb_polarization == _TRUE_) || (ppt->has_cl_cmb_lensing_potential == _TRUE_)){
        class_read_double("l_max_scalars",ppt->l_scalar_max);
      }
      if ((ppt->has_cl_lensing_potential == _TRUE_) || (ppt->has_cl_number_count == _TRUE_)){
        class_read_double("l_max_lss",ppt->l_lss_max);
      }
    }
    if (ppt->has_vectors == _TRUE_){
      class_read_double("l_max_vectors",ppt->l_vector_max);
    }
    if (ppt->has_tensors == _TRUE_) {
      class_read_double("l_max_tensors",ppt->l_tensor_max);
    }
  }


  /** 2) Parameters for the the matter density number count */
  if ((ppt->has_cl_number_count == _TRUE_) || (ppt->has_cl_lensing_potential == _TRUE_)) {

    /** 2.a) Selection functions W(z) of each redshift bin */
    /* Read */
    class_call(parser_read_string(pfc,"selection",&string1,&flag1,errmsg),
               errmsg,
               errmsg);
    /* Complete set of parameters */
    if (flag1 == _TRUE_) {
      if (strstr(string1,"gaussian") != NULL){
        ppt->selection=gaussian;
      }
      else if (strstr(string1,"tophat") != NULL){
        ppt->selection=tophat;
      }
      else if (strstr(string1,"dirac") != NULL){
        ppt->selection=dirac;
      }
      else {
        class_stop(errmsg,"You specified 'selection' as '%s'. It has to be one of {'gaussian','tophat','dirac'}.",string1);
      }
    }

    /* Read */
    class_call(parser_read_list_of_doubles(pfc,"selection_mean",&(int1),&(pointer1),&flag1,errmsg),
               errmsg,
               errmsg);
    if ((flag1 == _TRUE_) && (int1>0)) {
      /* Test */
      class_test(int1 > _SELECTION_NUM_MAX_,errmsg,
                 "you want to compute density Cl's for %d different bins, hence you should increase _SELECTION_NUM_MAX_ in include/perturbations.h to at least this number.",int1);
      /* Complete set of parameters */
      ppt->selection_num = int1;
      for (i=0; i<int1; i++) {
        /* Test */
        class_test((pointer1[i] < 0.) || (pointer1[i] > 1000.),errmsg,
                   "input of selection functions: you asked for a mean redshift equal to %e, is this a mistake?",pointer1[i]);
        /* Complete set of parameters */
        ppt->selection_mean[i] = pointer1[i];
      }
      free(pointer1);
      for (i=1; i<int1; i++) {       // first set all widths to default; correct eventually later
        /* Test */
        class_test(ppt->selection_mean[i]<=ppt->selection_mean[i-1],
                   errmsg,
                   "input of selection functions: the list of mean redshifts must be passed in growing order; you entered %e before %e.",ppt->selection_mean[i-1],ppt->selection_mean[i]);
        /* Complete set of parameters */
        ppt->selection_width[i] = ppt->selection_width[0];
        ptr->selection_bias[i] = ptr->selection_bias[0];
        ptr->selection_magnification_bias[i] = ptr->selection_magnification_bias[0];
      }

      /* Read */
      class_call(parser_read_list_of_doubles(pfc,"selection_width",&int1,&pointer1,&flag1,errmsg),
                 errmsg,
                 errmsg);
      /* Complete set of parameters */
      if ((flag1 == _TRUE_) && (int1>0)) {
        if (int1==1) {
          for (i=0; i<ppt->selection_num; i++) {
            ppt->selection_width[i] = pointer1[0];
          }
        }
        else if (int1==ppt->selection_num) {
          for (i=0; i<int1; i++) {
            ppt->selection_width[i] = pointer1[i];
          }
        }
        else {
          class_stop(errmsg,
                     "In input for selection function, you asked for %d bin centers and %d bin widths; number of bins unclear; you should pass either one bin width (common to all bins) or %d bin widths.",ppt->selection_num,int1,ppt->selection_num);
        }
        free(pointer1);
      }

      /* Read */
      class_call(parser_read_list_of_doubles(pfc,"selection_bias",&int1,&pointer1,&flag1,errmsg),
                 errmsg,
                 errmsg);
      /* Complete set of parameters */
      if ((flag1 == _TRUE_) && (int1>0)) {
        if (int1==1) {
          for (i=0; i<ppt->selection_num; i++) {
            ptr->selection_bias[i] = pointer1[0];
          }
        }
        else if (int1==ppt->selection_num) {
          for (i=0; i<int1; i++) {
            ptr->selection_bias[i] = pointer1[i];
          }
        }
        else {
          class_stop(errmsg,
                     "In input for selection function, you asked for %d bin centers and %d bin biases; number of bins unclear; you should pass either one bin bias (common to all bins) or %d bin biases.",
                     ppt->selection_num,int1,ppt->selection_num);
        }
        free(pointer1);
      }

      /* Read */
      class_call(parser_read_list_of_doubles(pfc,"selection_magnification_bias",&int1,&pointer1,&flag1,errmsg),
                 errmsg,
                 errmsg);
      /* Complete set of parameters */
      if ((flag1 == _TRUE_) && (int1>0)) {
        if (int1==1) {
          for (i=0; i<ppt->selection_num; i++) {
            ptr->selection_magnification_bias[i] = pointer1[0];
          }
        }
        else if (int1==ppt->selection_num) {
          for (i=0; i<int1; i++) {
            ptr->selection_magnification_bias[i] = pointer1[i];
          }
        }
        else {
          class_stop(errmsg,
                     "In input for selection function, you asked for %d bin centers and %d bin biases; number of bins unclear; you should pass either one bin bias (common to all bins) or %d bin biases.",
                     ppt->selection_num,int1,ppt->selection_num);
        }
        free(pointer1);
      }
    }

    /* Read */
    if (ppt->selection_num > 1) {
      class_read_int("non_diagonal",phr->non_diag);
      if ((phr->non_diag<0) || (phr->non_diag>=ppt->selection_num))
        class_stop(errmsg,"Input for non_diagonal is %d, while it is expected to be between 0 and %d\n",
                   phr->non_diag,ppt->selection_num-1);
    }

    /** 2.b) Selection function */
    /* Read */
    class_call(parser_read_string(pfc,"dNdz_selection",&string1,&flag1,errmsg),
               errmsg,
               errmsg);
    /* Complete set of parameters */
    if (flag1 == _TRUE_) {
      if ((strstr(string1,"analytic") != NULL)){
        ptr->has_nz_analytic = _TRUE_;
      }
      else{
        ptr->has_nz_file = _TRUE_;
        class_read_string("dNdz_selection",ptr->nz_file_name);
      }
    }

    /** 2.c) Source number counts evolution */
    class_call(parser_read_string(pfc,"dNdz_evolution",&string1,&flag1,errmsg),
               errmsg,
               errmsg);
    /* Complete set of parameters */
    if (flag1 == _TRUE_) {
      if ((strstr(string1,"analytic") != NULL)){
        ptr->has_nz_evo_analytic = _TRUE_;
      }
      else{
        ptr->has_nz_evo_file = _TRUE_;
        class_read_string("dNdz_evolution",ptr->nz_evo_file_name);
      }
    }

  }


  /** 3) Power spectrum P(k) */
  if ((ppt->has_pk_matter == _TRUE_) || (ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_)){

    /** 3.a) Maximum k in P(k) */
    /* Read */
    class_call(parser_read_double(pfc,"P_k_max_h/Mpc",&param1,&flag1,errmsg),
               errmsg,
               errmsg);
    class_call(parser_read_double(pfc,"P_k_max_1/Mpc",&param2,&flag2,errmsg),
               errmsg,
               errmsg);
    /* Test */
    class_test((flag1 == _TRUE_) && (flag2 == _TRUE_),
               errmsg,
               "You can only enter one of 'P_k_max_h/Mpc' or 'P_k_max_1/Mpc'.");
    /* Complete set of parameters */
    if (flag1 == _TRUE_){
      ppt->k_max_for_pk = param1*pba->h;
    }
    if (flag2 == _TRUE_){
      ppt->k_max_for_pk = param2;
    }

    /** 3.a.1) Maximum k in primordial P(k) */
    /* Read */
    class_call(parser_read_double(pfc,"primordial_P_k_max_h/Mpc",&param1,&flag1,errmsg),
               errmsg,
               errmsg);
    class_call(parser_read_double(pfc,"primordial_P_k_max_1/Mpc",&param2,&flag2,errmsg),
               errmsg,
               errmsg);
    /* Test */
    class_test((flag1 == _TRUE_) && (flag2 == _TRUE_),
               errmsg,
               "You can only enter one of 'primordial_P_k_max_h/Mpc' or 'primordial_P_k_max_1/Mpc'.");
    /* Complete set of parameters */
    if (flag1 == _TRUE_){
      ppm->k_max_for_primordial_pk=param1*pba->h;
      ppm->has_k_max_for_primordial_pk = _TRUE_;
    }
    if (flag2 == _TRUE_){
      ppm->k_max_for_primordial_pk=param2;
      ppm->has_k_max_for_primordial_pk = _TRUE_;
    }

    /** 3.b) Redshift values */
    /* Read */
    class_call(parser_read_list_of_doubles(pfc,"z_pk",&int1,&pointer1,&flag1,errmsg),
               errmsg,
               errmsg);
    /* Test */
    if (flag1 == _TRUE_) {
      class_test(int1 > _Z_PK_NUM_MAX_,
                 errmsg,
                 "you want to write some output for %d different values of z, hence you should increase _Z_PK_NUM_MAX_ in include/output.h to at least this number",
                 int1);
      /* Complete set of parameters */
      pop->z_pk_num = int1;
      for (i=0; i<int1; i++) {
        pop->z_pk[i] = pointer1[i];
      }
      free(pointer1);
    }

  }

  /** 3.c) Maximum redshift */
  if ((ppt->has_pk_matter == _TRUE_) || (ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_) || (ppt->has_cl_number_count == _TRUE_) || (ppt->has_cl_lensing_potential == _TRUE_)) {
    /* Read */
    class_call(parser_read_double(pfc,"z_max_pk",&param1,&flag1,errmsg),
               errmsg,
               errmsg);

    /* Complete set of parameters */
    if (flag1==_TRUE_) {
      ppt->z_max_pk = param1;
    }
    /* *
     * If we could not read a z_max, we need to define one.
     * The limit could come from any of the contributions.
     * We test here, which contribution requires the largest z_max
     * */
    else {
      ppt->z_max_pk = 0.;
      /* For the z_pk related quantities, test here the z_pk requirements */
      if ((ppt->has_pk_matter == _TRUE_) || (ppt->has_density_transfers == _TRUE_) || (ppt->has_velocity_transfers == _TRUE_)) {
        for (i=0; i<pop->z_pk_num; i++) {
          ppt->z_max_pk = MAX(ppt->z_max_pk,pop->z_pk[i]);
        }
      }
      /* For the number count / shear related quantities, test the selection function z_max */
      if ((ppt->has_cl_number_count == _TRUE_) || (ppt->has_cl_lensing_potential == _TRUE_)){
        for (bin=0; bin<ppt->selection_num; bin++) {
          /* the few lines below should be consistent with their counterpart in transfer.c, in transfer_selection_times */
          if (ppt->selection==gaussian) {
            z_max = ppt->selection_mean[bin]+ppt->selection_width[bin]*ppr->selection_cut_at_sigma;
          }
          if (ppt->selection==tophat) {
            z_max = ppt->selection_mean[bin]+(1.+ppr->selection_cut_at_sigma*ppr->selection_tophat_edge)*ppt->selection_width[bin];
          }
          if (ppt->selection==dirac) {
            z_max = ppt->selection_mean[bin];
          }
          ppt->z_max_pk = MAX(ppt->z_max_pk,z_max);
        }
      }
      /* Now we have checked all contributions that could change z_max_pk */
    }
  }


  class_call(parser_read_string(pfc,"get_lyman_alpha_tilt_and_amplitude",&string1,&flag1,errmsg),
             errmsg,
             errmsg);
             if ((flag1 == _TRUE_) && ((strstr(string1,"y") != NULL) || (strstr(string1,"Y") != NULL))) {
               class_read_double("zp_lya",param1);
               class_test(ppt->z_max_pk<param1, errmsg, "You requested get_lyman_alpha_tilt_and_amplitude but have ppt->z_max_pk < pnl->zp_lya. Please update.");
              }

  return _SUCCESS_;

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1458, %rsp           # imm = 0x1458
movq %r9, %r12
movq %r8, %r14
movq %rcx, 0x38(%rsp)
movq %rdx, 0x40(%rsp)
movq %rsi, 0x48(%rsp)
movq %rdi, %r15
movq 0x14a0(%rsp), %rbx
cmpw $0x1, 0xc(%r8)
jne 0x5a366
cmpw $0x1, 0xe(%r14)
jne 0x5a232
cmpw $0x1, 0x28(%r14)
je 0x5a102
cmpw $0x1, 0x2a(%r14)
je 0x5a102
cmpw $0x1, 0x2c(%r14)
jne 0x5a190
leaq 0xa158f(%rip), %rsi     # 0xfb698
leaq 0xc50(%rsp), %rdx
leaq 0x50(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1e87c
movl %eax, %ebp
cmpl $0x1, %eax
jne 0x5a16d
leaq 0x972c1(%rip), %rsi     # 0xf13f0
leaq 0xafdf3(%rip), %rdx     # 0x109f29
leaq 0x450(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x96ee2(%rip), %rsi     # 0xf1034
leaq 0xafe16(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1979, %ecx           # imm = 0x1979
movq %r13, %r8
xorl %eax, %eax
callq 0x30c2c
jmp 0x5a181
cmpl $0x1, 0x50(%rsp)
jne 0x5a181
cvttsd2si 0xc50(%rsp), %eax
movl %eax, 0x48(%r14)
movl $0x1, %r13d
cmpl $0x1, %ebp
je 0x5b3a3
cmpw $0x1, 0x2e(%r14)
je 0x5a1a4
cmpw $0x1, 0x30(%r14)
jne 0x5a232
leaq 0xafde2(%rip), %rsi     # 0x109f8d
leaq 0xc50(%rsp), %rdx
leaq 0x50(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1e87c
movl %eax, %ebp
cmpl $0x1, %eax
jne 0x5a20f
leaq 0x9721f(%rip), %rsi     # 0xf13f0
leaq 0xafdbf(%rip), %rdx     # 0x109f97
leaq 0x450(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x96e40(%rip), %rsi     # 0xf1034
leaq 0xafd74(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x197c, %ecx           # imm = 0x197C
movq %r13, %r8
xorl %eax, %eax
callq 0x30c2c
jmp 0x5a223
cmpl $0x1, 0x50(%rsp)
jne 0x5a223
cvttsd2si 0xc50(%rsp), %eax
movl %eax, 0x54(%r14)
movl $0x1, %r13d
cmpl $0x1, %ebp
je 0x5b3a3
cmpw $0x1, 0x10(%r14)
jne 0x5a2cc
leaq 0xafd94(%rip), %rsi     # 0x109fd9
leaq 0xc50(%rsp), %rdx
leaq 0x50(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1e87c
movl %eax, %ebp
cmpl $0x1, %eax
jne 0x5a2a9
leaq 0x97185(%rip), %rsi     # 0xf13f0
leaq 0xafd75(%rip), %rdx     # 0x109fe7
leaq 0x450(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x96da6(%rip), %rsi     # 0xf1034
leaq 0xafcda(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1980, %ecx           # imm = 0x1980
movq %r13, %r8
xorl %eax, %eax
callq 0x30c2c
jmp 0x5a2bd
cmpl $0x1, 0x50(%rsp)
jne 0x5a2bd
cvttsd2si 0xc50(%rsp), %eax
movl %eax, 0x4c(%r14)
movl $0x1, %r13d
cmpl $0x1, %ebp
je 0x5b3a3
cmpw $0x1, 0x12(%r14)
jne 0x5a366
leaq 0xafd4e(%rip), %rsi     # 0x10a02d
leaq 0xc50(%rsp), %rdx
leaq 0x50(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1e87c
movl %eax, %ebp
cmpl $0x1, %eax
jne 0x5a343
leaq 0x970eb(%rip), %rsi     # 0xf13f0
leaq 0xafd2f(%rip), %rdx     # 0x10a03b
leaq 0x450(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x96d0c(%rip), %rsi     # 0xf1034
leaq 0xafc40(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1983, %ecx           # imm = 0x1983
movq %r13, %r8
xorl %eax, %eax
callq 0x30c2c
jmp 0x5a357
cmpl $0x1, 0x50(%rsp)
jne 0x5a357
cvttsd2si 0xc50(%rsp), %eax
movl %eax, 0x50(%r14)
movl $0x1, %r13d
cmpl $0x1, %ebp
je 0x5b3a3
cmpw $0x1, 0x30(%r14)
je 0x5a37a
cmpw $0x1, 0x2e(%r14)
jne 0x5ad91
leaq 0xc9a6e(%rip), %rsi     # 0x123def
leaq 0x50(%rsp), %rdx
leaq 0x8(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1ec10
cmpl $0x1, %eax
jne 0x5a3d9
leaq 0x9704e(%rip), %rsi     # 0xf13f0
leaq 0xafcd8(%rip), %rdx     # 0x10a081
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x96c6f(%rip), %rsi     # 0xf1034
leaq 0xafba3(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x198f, %ecx           # imm = 0x198F
jmp 0x5b393
cmpl $0x1, 0x8(%rsp)
jne 0x5a436
leaq 0xafcd5(%rip), %rsi     # 0x10a0bc
leaq 0x50(%rsp), %rdi
callq 0x80c0
xorl %ecx, %ecx
testq %rax, %rax
jne 0x5a432
leaq 0xafcc6(%rip), %rsi     # 0x10a0c5
leaq 0x50(%rsp), %rdi
callq 0x80c0
movl $0x1, %ecx
testq %rax, %rax
jne 0x5a432
leaq 0xafcb2(%rip), %rsi     # 0x10a0cc
leaq 0x50(%rsp), %rdi
callq 0x80c0
movl $0x2, %ecx
testq %rax, %rax
je 0x5a686
movl %ecx, 0x68(%r14)
leaq 0xafceb(%rip), %rsi     # 0x10a128
leaq 0xc(%rsp), %rdx
leaq 0x10(%rsp), %rcx
leaq 0x8(%rsp), %r8
movq %r15, %rdi
movq %rbx, %r9
callq 0x1ed51
cmpl $0x1, %eax
jne 0x5a49a
leaq 0x96f8d(%rip), %rsi     # 0xf13f0
leaq 0xafccd(%rip), %rdx     # 0x10a137
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x96bae(%rip), %rsi     # 0xf1034
leaq 0xafae2(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x19a3, %ecx           # imm = 0x19A3
jmp 0x5b393
cmpl $0x1, 0x8(%rsp)
sete %al
movl 0xc(%rsp), %edx
testl %edx, %edx
setg %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x5aa14
cmpl $0x65, %edx
jl 0x5a512
leaq 0xafcc9(%rip), %rsi     # 0x10a18b
leaq 0x450(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0x96ba7(%rip), %rsi     # 0xf1082
leaq 0xafd43(%rip), %rdx     # 0x10a225
leaq 0xc50(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x96b36(%rip), %rsi     # 0xf1034
leaq 0xafa6a(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x19a7, %ecx           # imm = 0x19A7
jmp 0x5aedb
movl %edx, %eax
movl %edx, 0x64(%r14)
xorl %ecx, %ecx
movq 0x10(%rsp), %rdx
xorpd %xmm0, %xmm0
movsd 0x9b6bd(%rip), %xmm1    # 0xf5be8
movsd (%rdx,%rcx,8), %xmm2
ucomisd %xmm2, %xmm0
ja 0x5a62a
ucomisd %xmm1, %xmm2
ja 0x5a62a
movsd %xmm2, 0x70(%r14,%rcx,8)
incq %rcx
cmpq %rcx, %rax
jne 0x5a52b
movq 0x10(%rsp), %rdi
callq 0x8410
movslq 0xc(%rsp), %rax
cmpq $0x2, %rax
jl 0x5a5c2
decq %rax
xorl %ecx, %ecx
movsd 0x70(%r14,%rcx,8), %xmm0
movsd 0x78(%r14,%rcx,8), %xmm1
ucomisd %xmm1, %xmm0
jae 0x5a729
movsd 0x390(%r14), %xmm0
movsd %xmm0, 0x398(%r14,%rcx,8)
movsd 0x18(%r12), %xmm0
movsd %xmm0, 0x20(%r12,%rcx,8)
movsd 0x338(%r12), %xmm0
movsd %xmm0, 0x340(%r12,%rcx,8)
incq %rcx
cmpq %rcx, %rax
jne 0x5a56d
leaq 0xafda4(%rip), %rsi     # 0x10a36d
leaq 0xc(%rsp), %rdx
leaq 0x10(%rsp), %rcx
leaq 0x8(%rsp), %r8
movq %r15, %rdi
movq %rbx, %r9
callq 0x1ed51
cmpl $0x1, %eax
jne 0x5a6db
leaq 0x96dfd(%rip), %rsi     # 0xf13f0
leaq 0xafd83(%rip), %rdx     # 0x10a37d
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x96a1e(%rip), %rsi     # 0xf1034
leaq 0xaf952(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x19c0, %ecx           # imm = 0x19C0
jmp 0x5b393
movsd (%rdx,%rcx,8), %xmm0
leaq 0xafc0a(%rip), %rsi     # 0x10a240
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movb $0x1, %al
callq 0x30c2c
leaq 0x96a33(%rip), %rsi     # 0xf1082
leaq 0xafc46(%rip), %rdx     # 0x10a29c
leaq 0xc50(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x969c2(%rip), %rsi     # 0xf1034
leaq 0xaf8f6(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x19ad, %ecx           # imm = 0x19AD
jmp 0x5aedb
leaq 0xafa45(%rip), %rsi     # 0x10a0d2
leaq 0x450(%rsp), %r14
leaq 0x50(%rsp), %rdx
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0x96eda(%rip), %rsi     # 0xf1585
leaq 0xc50(%rsp), %r15
movq %r15, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x30c2c
leaq 0x9696d(%rip), %rsi     # 0xf1034
leaq 0xaf8a1(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x199c, %ecx           # imm = 0x199C
jmp 0x5aedb
cmpl $0x1, 0x8(%rsp)
sete %cl
movl 0xc(%rsp), %eax
testl %eax, %eax
setg %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x5a7b0
movl %eax, %ecx
movl 0x64(%r14), %edx
cmpl $0x1, %ecx
jne 0x5a780
testl %edx, %edx
jle 0x5a7a6
movq 0x10(%rsp), %rax
xorl %ecx, %ecx
movsd (%rax), %xmm0
movsd %xmm0, 0x390(%r14,%rcx,8)
incq %rcx
cmpq %rcx, %rdx
jne 0x5a711
jmp 0x5a7a6
leaq 0xafb98(%rip), %rsi     # 0x10a2c8
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movb $0x2, %al
callq 0x30c2c
leaq 0x96939(%rip), %rsi     # 0xf1082
leaq 0xafbec(%rip), %rdx     # 0x10a33c
leaq 0xc50(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x968c8(%rip), %rsi     # 0xf1034
leaq 0xaf7fc(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x19b6, %ecx           # imm = 0x19B6
jmp 0x5aedb
cmpl %edx, %ecx
jne 0x5a85f
movq 0x10(%rsp), %rax
xorl %edx, %edx
movsd (%rax,%rdx,8), %xmm0
movsd %xmm0, 0x390(%r14,%rdx,8)
incq %rdx
cmpq %rdx, %rcx
jne 0x5a78f
movq 0x10(%rsp), %rdi
callq 0x8410
leaq 0xafccc(%rip), %rsi     # 0x10a483
leaq 0xc(%rsp), %rdx
leaq 0x10(%rsp), %rcx
leaq 0x8(%rsp), %r8
movq %r15, %rdi
movq %rbx, %r9
callq 0x1ed51
cmpl $0x1, %eax
jne 0x5a814
leaq 0x96c13(%rip), %rsi     # 0xf13f0
leaq 0xafcae(%rip), %rdx     # 0x10a492
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x96834(%rip), %rsi     # 0xf1034
leaq 0xaf768(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x19d7, %ecx           # imm = 0x19D7
jmp 0x5b393
cmpl $0x1, 0x8(%rsp)
sete %cl
movl 0xc(%rsp), %eax
testl %eax, %eax
setg %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x5a8df
movl %eax, %ecx
movl 0x64(%r14), %edx
cmpl $0x1, %ecx
jne 0x5a8b2
testl %edx, %edx
jle 0x5a8d5
movq 0x10(%rsp), %rax
xorl %ecx, %ecx
movsd (%rax), %xmm0
movsd %xmm0, 0x18(%r12,%rcx,8)
incq %rcx
cmpq %rcx, %rdx
jne 0x5a84a
jmp 0x5a8d5
leaq 0xafb68(%rip), %rsi     # 0x10a3ce
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movl %edx, %r8d
xorl %eax, %eax
callq 0x30c2c
leaq 0x96d03(%rip), %rsi     # 0xf1585
leaq 0xc50(%rsp), %r15
movq %r15, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x30c2c
leaq 0x96796(%rip), %rsi     # 0xf1034
leaq 0xaf6ca(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x19cf, %ecx           # imm = 0x19CF
jmp 0x5aedb
cmpl %edx, %ecx
jne 0x5a991
movq 0x10(%rsp), %rax
xorl %edx, %edx
movsd (%rax,%rdx,8), %xmm0
movsd %xmm0, 0x18(%r12,%rdx,8)
incq %rdx
cmpq %rdx, %rcx
jne 0x5a8c1
movq 0x10(%rsp), %rdi
callq 0x8410
leaq 0xafcb0(%rip), %rsi     # 0x10a596
leaq 0xc(%rsp), %rdx
leaq 0x10(%rsp), %rcx
leaq 0x8(%rsp), %r8
movq %r15, %rdi
movq %rbx, %r9
callq 0x1ed51
cmpl $0x1, %eax
jne 0x5a943
leaq 0x96ae4(%rip), %rsi     # 0xf13f0
leaq 0xafca0(%rip), %rdx     # 0x10a5b3
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x96705(%rip), %rsi     # 0xf1034
leaq 0xaf639(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x19ef, %ecx           # imm = 0x19EF
jmp 0x5b393
cmpl $0x1, 0x8(%rsp)
sete %cl
movl 0xc(%rsp), %eax
testl %eax, %eax
setg %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x5aa14
movl %eax, %ecx
movl 0x64(%r14), %edx
cmpl $0x1, %ecx
jne 0x5a9e4
testl %edx, %edx
jle 0x5aa0a
movq 0x10(%rsp), %rax
xorl %ecx, %ecx
movsd (%rax), %xmm0
movsd %xmm0, 0x338(%r12,%rcx,8)
incq %rcx
cmpq %rcx, %rdx
jne 0x5a979
jmp 0x5aa0a
leaq 0xafb4a(%rip), %rsi     # 0x10a4e2
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movl %edx, %r8d
xorl %eax, %eax
callq 0x30c2c
leaq 0x96bd1(%rip), %rsi     # 0xf1585
leaq 0xc50(%rsp), %r15
movq %r15, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x30c2c
leaq 0x96664(%rip), %rsi     # 0xf1034
leaq 0xaf598(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x19e7, %ecx           # imm = 0x19E7
jmp 0x5aedb
cmpl %edx, %ecx
jne 0x5b4e0
movq 0x10(%rsp), %rax
xorl %edx, %edx
movsd (%rax,%rdx,8), %xmm0
movsd %xmm0, 0x338(%r12,%rdx,8)
incq %rdx
cmpq %rdx, %rcx
jne 0x5a9f3
movq 0x10(%rsp), %rdi
callq 0x8410
cmpl $0x2, 0x64(%r14)
jl 0x5aacd
leaq 0xafbeb(%rip), %rsi     # 0x10a611
leaq 0xc50(%rsp), %rdx
leaq 0x18(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1e6c0
movl %eax, %ebp
cmpl $0x1, %eax
jne 0x5aa8a
leaq 0x969a4(%rip), %rsi     # 0xf13f0
leaq 0xafbcb(%rip), %rdx     # 0x10a61e
leaq 0x450(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x965c5(%rip), %rsi     # 0xf1034
leaq 0xaf4f9(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1a07, %ecx           # imm = 0x1A07
movq %r13, %r8
xorl %eax, %eax
callq 0x30c2c
jmp 0x5aaa2
cmpl $0x1, 0x18(%rsp)
jne 0x5aaa2
movl 0xc50(%rsp), %eax
movq 0x1490(%rsp), %rcx
movl %eax, (%rcx)
movl $0x1, %r13d
cmpl $0x1, %ebp
je 0x5b3a3
movq 0x1490(%rsp), %rax
movl (%rax), %edx
testl %edx, %edx
js 0x5ab5d
cmpl 0x64(%r14), %edx
jge 0x5ab5d
leaq 0xafbd5(%rip), %rsi     # 0x10a6a9
leaq 0x50(%rsp), %rdx
leaq 0x8(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1ec10
cmpl $0x1, %eax
jne 0x5ab2c
leaq 0x968fb(%rip), %rsi     # 0xf13f0
leaq 0xafbbc(%rip), %rdx     # 0x10a6b8
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x9651c(%rip), %rsi     # 0xf1034
leaq 0xaf450(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1a11, %ecx           # imm = 0x1A11
jmp 0x5b393
cmpl $0x1, 0x8(%rsp)
jne 0x5ac5e
leaq 0xab359(%rip), %rsi     # 0x105e97
leaq 0x50(%rsp), %rdi
callq 0x80c0
testq %rax, %rax
je 0x5abbd
movw $0x1, 0x65a(%r12)
jmp 0x5ac5e
movl 0x64(%r14), %ecx
decl %ecx
leaq 0xafaf4(%rip), %rsi     # 0x10a65e
leaq 0x450(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0x96a02(%rip), %rsi     # 0xf1585
leaq 0xc50(%rsp), %r15
movq %r15, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x30c2c
leaq 0x96495(%rip), %rsi     # 0xf1034
leaq 0xaf3c9(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1a0a, %ecx           # imm = 0x1A0A
movq %r15, %r8
xorl %eax, %eax
callq 0x30c2c
jmp 0x5b3a3
movw $0x1, 0x658(%r12)
leaq 0xafada(%rip), %rsi     # 0x10a6a9
leaq 0xc50(%rsp), %rdx
leaq 0x18(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1ec10
movl %eax, %ebp
cmpl $0x1, %eax
jne 0x5ac33
leaq 0x967fb(%rip), %rsi     # 0xf13f0
leaq 0xafafc(%rip), %rdx     # 0x10a6f8
leaq 0x450(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x9641c(%rip), %rsi     # 0xf1034
leaq 0xaf350(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1a19, %ecx           # imm = 0x1A19
movq %r13, %r8
xorl %eax, %eax
callq 0x30c2c
jmp 0x5ac4f
cmpl $0x1, 0x18(%rsp)
jne 0x5ac4f
leaq 0x65c(%r12), %rdi
leaq 0xc50(%rsp), %rsi
callq 0x8350
movl $0x1, %r13d
cmpl $0x1, %ebp
je 0x5b3a3
leaq 0xafadb(%rip), %rsi     # 0x10a740
leaq 0x50(%rsp), %rdx
leaq 0x8(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1ec10
cmpl $0x1, %eax
jne 0x5acbd
leaq 0x9676a(%rip), %rsi     # 0xf13f0
leaq 0xafac2(%rip), %rdx     # 0x10a74f
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x9638b(%rip), %rsi     # 0xf1034
leaq 0xaf2bf(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1a20, %ecx           # imm = 0x1A20
jmp 0x5b393
cmpl $0x1, 0x8(%rsp)
jne 0x5ad91
leaq 0xab1c8(%rip), %rsi     # 0x105e97
leaq 0x50(%rsp), %rdi
callq 0x80c0
testq %rax, %rax
je 0x5acee
movw $0x1, 0x77a(%r12)
jmp 0x5ad91
movw $0x1, 0x778(%r12)
leaq 0xafa40(%rip), %rsi     # 0x10a740
leaq 0xc50(%rsp), %rdx
leaq 0x18(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1ec10
movl %eax, %ebp
cmpl $0x1, %eax
jne 0x5ad64
leaq 0x966ca(%rip), %rsi     # 0xf13f0
leaq 0xafa62(%rip), %rdx     # 0x10a78f
leaq 0x450(%rsp), %r12
movq %r12, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x962eb(%rip), %rsi     # 0xf1034
leaq 0xaf21f(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1a28, %ecx           # imm = 0x1A28
movq %r12, %r8
xorl %eax, %eax
callq 0x30c2c
jmp 0x5ad82
cmpl $0x1, 0x18(%rsp)
jne 0x5ad82
addq $0x77c, %r12            # imm = 0x77C
leaq 0xc50(%rsp), %rsi
movq %r12, %rdi
callq 0x8350
movl $0x1, %r13d
cmpl $0x1, %ebp
je 0x5b3a3
movq 0x1498(%rsp), %r12
cmpw $0x1, 0x32(%r14)
je 0x5adb5
cmpw $0x1, 0x34(%r14)
je 0x5adb5
cmpw $0x1, 0x36(%r14)
jne 0x5b181
leaq 0xafae0(%rip), %rsi     # 0x10a89c
leaq 0x18(%rsp), %rdx
leaq 0x8(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1e87c
cmpl $0x1, %eax
jne 0x5ae14
leaq 0x96613(%rip), %rsi     # 0xf13f0
leaq 0xaf9f3(%rip), %rdx     # 0x10a7d7
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x96234(%rip), %rsi     # 0xf1034
leaq 0xaf168(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1a36, %ecx           # imm = 0x1A36
jmp 0x5b393
leaq 0xafae3(%rip), %rsi     # 0x10a8fe
leaq 0x28(%rsp), %rdx
leaq 0x24(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1e87c
cmpl $0x1, %eax
jne 0x5ae73
leaq 0x965b4(%rip), %rsi     # 0xf13f0
leaq 0xaf9d2(%rip), %rdx     # 0x10a815
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x961d5(%rip), %rsi     # 0xf1034
leaq 0xaf109(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1a39, %ecx           # imm = 0x1A39
jmp 0x5b393
movl 0x8(%rsp), %ecx
movl %ecx, %edx
xorl $0x1, %edx
movl 0x24(%rsp), %eax
movl %eax, %esi
xorl $0x1, %esi
orl %edx, %esi
jne 0x5aee3
leaq 0xaf9c3(%rip), %rsi     # 0x10a853
leaq 0x450(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0x961d9(%rip), %rsi     # 0xf1082
leaq 0x9bd23(%rip), %rdx     # 0xf6bd3
leaq 0xc50(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x96168(%rip), %rsi     # 0xf1034
leaq 0xaf09c(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1a3d, %ecx           # imm = 0x1A3D
movq %r15, %r8
jmp 0x5b396
cmpl $0x1, %ecx
jne 0x5aefe
movsd 0x18(%rsp), %xmm0
movq 0x40(%rsp), %rcx
mulsd 0x8(%rcx), %xmm0
movsd %xmm0, 0x58(%r14)
cmpl $0x1, %eax
jne 0x5af0f
movsd 0x28(%rsp), %xmm0
movsd %xmm0, 0x58(%r14)
leaq 0xaf97b(%rip), %rsi     # 0x10a891
leaq 0x18(%rsp), %rdx
leaq 0x8(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1e87c
cmpl $0x1, %eax
jne 0x5af6e
leaq 0x964b9(%rip), %rsi     # 0xf13f0
leaq 0xaf96c(%rip), %rdx     # 0x10a8aa
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x960da(%rip), %rsi     # 0xf1034
leaq 0xaf00e(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1a4a, %ecx           # imm = 0x1A4A
jmp 0x5b393
leaq 0xaf97e(%rip), %rsi     # 0x10a8f3
leaq 0x28(%rsp), %rdx
leaq 0x24(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1e87c
cmpl $0x1, %eax
jne 0x5afcd
leaq 0x9645a(%rip), %rsi     # 0xf13f0
leaq 0xaf96f(%rip), %rdx     # 0x10a90c
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x9607b(%rip), %rsi     # 0xf1034
leaq 0xaefaf(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1a4d, %ecx           # imm = 0x1A4D
jmp 0x5b393
movl 0x8(%rsp), %ecx
movl %ecx, %edx
xorl $0x1, %edx
movl 0x24(%rsp), %eax
movl %eax, %esi
xorl $0x1, %esi
orl %edx, %esi
jne 0x5b03a
leaq 0xaf96b(%rip), %rsi     # 0x10a955
leaq 0x450(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0x9607f(%rip), %rsi     # 0xf1082
leaq 0x9bbc9(%rip), %rdx     # 0xf6bd3
leaq 0xc50(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x9600e(%rip), %rsi     # 0xf1034
leaq 0xaef42(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1a51, %ecx           # imm = 0x1A51
jmp 0x5aedb
cmpl $0x1, %ecx
jne 0x5b060
movsd 0x18(%rsp), %xmm0
movq 0x40(%rsp), %rcx
mulsd 0x8(%rcx), %xmm0
movq 0x38(%rsp), %rcx
movsd %xmm0, 0x10(%rcx)
movl $0x1, 0x8(%rcx)
cmpl $0x1, %eax
jne 0x5b07c
movsd 0x28(%rsp), %xmm0
movq 0x38(%rsp), %rax
movsd %xmm0, 0x10(%rax)
movl $0x1, 0x8(%rax)
leaq 0xaf926(%rip), %rsi     # 0x10a9a9
leaq 0xc(%rsp), %rdx
leaq 0x10(%rsp), %rcx
leaq 0x8(%rsp), %r8
movq %r15, %rdi
movq %rbx, %r9
callq 0x1ed51
cmpl $0x1, %eax
jne 0x5b0e0
leaq 0x96347(%rip), %rsi     # 0xf13f0
leaq 0xaf8fe(%rip), %rdx     # 0x10a9ae
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x95f68(%rip), %rsi     # 0xf1034
leaq 0xaee9c(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1a60, %ecx           # imm = 0x1A60
jmp 0x5b393
cmpl $0x1, 0x8(%rsp)
jne 0x5b181
movslq 0xc(%rsp), %rdx
cmpq $0x65, %rdx
jl 0x5b14d
leaq 0xaf8f7(%rip), %rsi     # 0x10a9f4
leaq 0x450(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0x95f6c(%rip), %rsi     # 0xf1082
leaq 0xaf968(%rip), %rdx     # 0x10aa85
leaq 0xc50(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x95efb(%rip), %rsi     # 0xf1034
leaq 0xaee2f(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1a66, %ecx           # imm = 0x1A66
jmp 0x5aedb
movl %edx, 0xe0(%r12)
testl %edx, %edx
jle 0x5b177
movq 0x10(%rsp), %rax
xorl %ecx, %ecx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, 0xe8(%r12,%rcx,8)
incq %rcx
cmpq %rcx, %rdx
jne 0x5b160
movq 0x10(%rsp), %rdi
callq 0x8410
cmpw $0x1, 0x32(%r14)
movq 0x48(%rsp), %r13
je 0x5b1b2
cmpw $0x1, 0x34(%r14)
je 0x5b1b2
cmpw $0x1, 0x36(%r14)
je 0x5b1b2
cmpw $0x1, 0x30(%r14)
je 0x5b1b2
cmpw $0x1, 0x2e(%r14)
jne 0x5b339
leaq 0xaf8e2(%rip), %rsi     # 0x10aa9b
leaq 0x18(%rsp), %rdx
leaq 0x8(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1e87c
cmpl $0x1, %eax
jne 0x5b211
leaq 0x96216(%rip), %rsi     # 0xf13f0
leaq 0xaf8c3(%rip), %rdx     # 0x10aaa4
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x95e37(%rip), %rsi     # 0xf1034
leaq 0xaed6b(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1a76, %ecx           # imm = 0x1A76
jmp 0x5b393
cmpl $0x1, 0x8(%rsp)
jne 0x5b22c
movsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x818(%r14)
jmp 0x5b339
movq $0x0, 0x818(%r14)
cmpw $0x1, 0x32(%r14)
je 0x5b24f
cmpw $0x1, 0x34(%r14)
je 0x5b24f
cmpw $0x1, 0x36(%r14)
jne 0x5b28a
movslq 0xe0(%r12), %rax
testq %rax, %rax
jle 0x5b28a
movsd 0x818(%r14), %xmm0
xorl %ecx, %ecx
movsd 0xe8(%r12,%rcx,8), %xmm1
maxsd %xmm0, %xmm1
movsd %xmm1, 0x818(%r14)
incq %rcx
movapd %xmm1, %xmm0
cmpq %rcx, %rax
jne 0x5b267
cmpw $0x1, 0x30(%r14)
je 0x5b29e
cmpw $0x1, 0x2e(%r14)
jne 0x5b339
movslq 0x64(%r14), %rax
testq %rax, %rax
jle 0x5b339
movl 0x68(%r14), %ecx
movsd 0x818(%r14), %xmm2
xorpd %xmm1, %xmm1
xorl %edx, %edx
movsd 0x95f9a(%rip), %xmm0    # 0xf1260
testl %ecx, %ecx
jne 0x5b2e4
movsd 0x390(%r14,%rdx,8), %xmm1
mulsd 0x808(%r13), %xmm1
addsd 0x70(%r14,%rdx,8), %xmm1
cmpl $0x1, %ecx
jne 0x5b310
movsd 0x808(%r13), %xmm1
mulsd 0x828(%r13), %xmm1
addsd %xmm0, %xmm1
mulsd 0x390(%r14,%rdx,8), %xmm1
addsd 0x70(%r14,%rdx,8), %xmm1
cmpl $0x2, %ecx
jne 0x5b31c
movsd 0x70(%r14,%rdx,8), %xmm1
movapd %xmm1, %xmm3
maxsd %xmm2, %xmm3
movsd %xmm3, 0x818(%r14)
incq %rdx
movapd %xmm3, %xmm2
cmpq %rdx, %rax
jne 0x5b2c6
leaq 0xab445(%rip), %rsi     # 0x106785
leaq 0x50(%rsp), %rdx
leaq 0x8(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1ec10
cmpl $0x1, %eax
jne 0x5b3b8
leaq 0x9608f(%rip), %rsi     # 0xf13f0
leaq 0xab440(%rip), %rdx     # 0x1067a8
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x95cb0(%rip), %rsi     # 0xf1034
leaq 0xaebe4(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1aa0, %ecx           # imm = 0x1AA0
movq %r14, %r8
xorl %eax, %eax
callq 0x30c2c
movl $0x1, %r13d
movl %r13d, %eax
addq $0x1458, %rsp           # imm = 0x1458
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r13d, %r13d
cmpl $0x1, 0x8(%rsp)
jne 0x5b3a3
leaq 0x50(%rsp), %rdi
movl $0x79, %esi
callq 0x8130
testq %rax, %rax
jne 0x5b3ea
leaq 0x50(%rsp), %rdi
movl $0x59, %esi
callq 0x8130
testq %rax, %rax
je 0x5b3a3
leaq 0xab45b(%rip), %rsi     # 0x10684c
leaq 0xc50(%rsp), %rdx
leaq 0x34(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1e87c
movl %eax, %ebp
cmpl $0x1, %eax
jne 0x5b455
leaq 0x95fd9(%rip), %rsi     # 0xf13f0
leaq 0xab435(%rip), %rdx     # 0x106853
leaq 0x450(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x95bfa(%rip), %rsi     # 0xf1034
leaq 0xaeb2e(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1aa2, %ecx           # imm = 0x1AA2
movq %r15, %r8
xorl %eax, %eax
callq 0x30c2c
jmp 0x5b46b
cmpl $0x1, 0x34(%rsp)
jne 0x5b46b
movsd 0xc50(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
cmpl $0x1, %ebp
je 0x5b39d
movsd 0x18(%rsp), %xmm0
ucomisd 0x818(%r14), %xmm0
jbe 0x5b3a3
leaq 0xaf64d(%rip), %rsi     # 0x10aadd
leaq 0x450(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0x95bd9(%rip), %rsi     # 0xf1082
leaq 0xaf693(%rip), %rdx     # 0x10ab43
leaq 0xc50(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0x95b68(%rip), %rsi     # 0xf1034
leaq 0xaea9c(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x1aa3, %ecx           # imm = 0x1AA3
jmp 0x5aedb
leaq 0xaeffb(%rip), %rsi     # 0x10a4e2
leaq 0x450(%rsp), %r14
movq %r14, %rdi
movl %edx, %r8d
xorl %eax, %eax
callq 0x30c2c
leaq 0x96082(%rip), %rsi     # 0xf1585
leaq 0xc50(%rsp), %r15
movq %r15, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x30c2c
leaq 0x95b15(%rip), %rsi     # 0xf1034
leaq 0xaea49(%rip), %rdx     # 0x109f6f
movq %rbx, %rdi
movl $0x19ff, %ecx           # imm = 0x19FF
jmp 0x5aedb