// File: /workspace/github_c_makefile_star2_O2/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 $0x1448, %rsp           # imm = 0x1448
movq %r9, %r12
movq %r8, %r14
movq %rcx, %r13
movq %rdx, %rbp
movq %rsi, 0x38(%rsp)
movq %rdi, %r15
movq 0x1490(%rsp), %rbx
cmpw $0x1, 0xc(%r8)
jne 0x5432a
cmpw $0x1, 0xe(%r14)
jne 0x5422e
cmpw $0x1, 0x28(%r14)
je 0x54132
cmpw $0x1, 0x2a(%r14)
je 0x54132
cmpw $0x1, 0x2c(%r14)
jne 0x541a8
leaq 0x9b44f(%rip), %rsi     # 0xef588
leaq 0xc40(%rsp), %rdx
leaq 0x40(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1c775
cmpl $0x1, %eax
jne 0x54194
leaq 0x91293(%rip), %rsi     # 0xe53f0
leaq 0xa9cb5(%rip), %rdx     # 0xfde19
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x90eb4(%rip), %rsi     # 0xe5034
leaq 0xa9cd8(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1979, %ecx           # imm = 0x1979
jmp 0x551d1
cmpl $0x1, 0x40(%rsp)
jne 0x541a8
cvttsd2si 0xc40(%rsp), %eax
movl %eax, 0x48(%r14)
cmpw $0x1, 0x2e(%r14)
je 0x541b8
cmpw $0x1, 0x30(%r14)
jne 0x5422e
leaq 0xa9cbe(%rip), %rsi     # 0xfde7d
leaq 0xc40(%rsp), %rdx
leaq 0x40(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1c775
cmpl $0x1, %eax
jne 0x5421a
leaq 0x9120d(%rip), %rsi     # 0xe53f0
leaq 0xa9c9d(%rip), %rdx     # 0xfde87
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x90e2e(%rip), %rsi     # 0xe5034
leaq 0xa9c52(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x197c, %ecx           # imm = 0x197C
jmp 0x551d1
cmpl $0x1, 0x40(%rsp)
jne 0x5422e
cvttsd2si 0xc40(%rsp), %eax
movl %eax, 0x54(%r14)
cmpw $0x1, 0x10(%r14)
jne 0x542ac
leaq 0xa9c8c(%rip), %rsi     # 0xfdec9
leaq 0xc40(%rsp), %rdx
leaq 0x40(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1c775
cmpl $0x1, %eax
jne 0x54298
leaq 0x9118f(%rip), %rsi     # 0xe53f0
leaq 0xa9c6f(%rip), %rdx     # 0xfded7
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x90db0(%rip), %rsi     # 0xe5034
leaq 0xa9bd4(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1980, %ecx           # imm = 0x1980
jmp 0x551d1
cmpl $0x1, 0x40(%rsp)
jne 0x542ac
cvttsd2si 0xc40(%rsp), %eax
movl %eax, 0x4c(%r14)
cmpw $0x1, 0x12(%r14)
jne 0x5432a
leaq 0xa9c62(%rip), %rsi     # 0xfdf1d
leaq 0xc40(%rsp), %rdx
leaq 0x40(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1c775
cmpl $0x1, %eax
jne 0x54316
leaq 0x91111(%rip), %rsi     # 0xe53f0
leaq 0xa9c45(%rip), %rdx     # 0xfdf2b
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x90d32(%rip), %rsi     # 0xe5034
leaq 0xa9b56(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1983, %ecx           # imm = 0x1983
jmp 0x551d1
cmpl $0x1, 0x40(%rsp)
jne 0x5432a
cvttsd2si 0xc40(%rsp), %eax
movl %eax, 0x50(%r14)
cmpw $0x1, 0x30(%r14)
je 0x5433e
cmpw $0x1, 0x2e(%r14)
jne 0x54b6f
leaq 0xc397a(%rip), %rsi     # 0x117cbf
leaq 0x40(%rsp), %rdx
leaq 0x8(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1caf9
cmpl $0x1, %eax
jne 0x5439d
leaq 0x9108a(%rip), %rsi     # 0xe53f0
leaq 0xa9c04(%rip), %rdx     # 0xfdf71
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x90cab(%rip), %rsi     # 0xe5034
leaq 0xa9acf(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x198f, %ecx           # imm = 0x198F
jmp 0x551d1
cmpl $0x1, 0x8(%rsp)
jne 0x543f7
leaq 0xa9c01(%rip), %rsi     # 0xfdfac
leaq 0x40(%rsp), %rdi
callq 0x80c0
xorl %ecx, %ecx
testq %rax, %rax
jne 0x543f3
leaq 0xa9bf2(%rip), %rsi     # 0xfdfb5
leaq 0x40(%rsp), %rdi
callq 0x80c0
testq %rax, %rax
je 0x543d6
pushq $0x1
jmp 0x543f2
leaq 0xa9bdf(%rip), %rsi     # 0xfdfbc
leaq 0x40(%rsp), %rdi
callq 0x80c0
testq %rax, %rax
je 0x5468f
pushq $0x2
popq %rcx
movl %ecx, 0x68(%r14)
leaq 0xa9c1a(%rip), %rsi     # 0xfe018
leaq 0xc(%rsp), %rdx
leaq 0x18(%rsp), %rcx
leaq 0x8(%rsp), %r8
movq %r15, %rdi
movq %rbx, %r9
callq 0x1cc47
cmpl $0x1, %eax
jne 0x5445b
leaq 0x90fcc(%rip), %rsi     # 0xe53f0
leaq 0xa9bfc(%rip), %rdx     # 0xfe027
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x90bed(%rip), %rsi     # 0xe5034
leaq 0xa9a11(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x19a3, %ecx           # imm = 0x19A3
jmp 0x551d1
cmpl $0x1, 0x8(%rsp)
sete %al
movl 0xc(%rsp), %edx
testl %edx, %edx
setg %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x549b8
cmpl $0x65, %edx
jb 0x544d3
leaq 0xa9bf8(%rip), %rsi     # 0xfe07b
leaq 0x440(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x90be6(%rip), %rsi     # 0xe5082
leaq 0xa9c72(%rip), %rdx     # 0xfe115
leaq 0xc40(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x90b75(%rip), %rsi     # 0xe5034
leaq 0xa9999(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x19a7, %ecx           # imm = 0x19A7
jmp 0x55405
movl %edx, %eax
movl %edx, 0x64(%r14)
xorl %ecx, %ecx
movq 0x18(%rsp), %rdi
xorpd %xmm1, %xmm1
movsd 0x955ec(%rip), %xmm2    # 0xe9ad8
cmpq %rcx, %rax
je 0x5450e
movsd (%rdi,%rcx,8), %xmm0
ucomisd %xmm0, %xmm1
ja 0x54579
ucomisd %xmm2, %xmm0
ja 0x54579
movsd %xmm0, 0x70(%r14,%rcx,8)
incq %rcx
jmp 0x544ec
callq 0x8430
movslq 0xc(%rsp), %rax
xorl %ecx, %ecx
leaq 0x1(%rcx), %rdx
cmpq %rax, %rdx
jge 0x545d0
movsd 0x70(%r14,%rcx,8), %xmm0
movsd 0x78(%r14,%rcx,8), %xmm1
ucomisd %xmm1, %xmm0
jae 0x54638
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)
movq %rdx, %rcx
jmp 0x5451a
leaq 0xa9bb0(%rip), %rsi     # 0xfe130
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movb $0x1, %al
callq 0x2e014
leaq 0x90ae9(%rip), %rsi     # 0xe5082
leaq 0xa9bec(%rip), %rdx     # 0xfe18c
leaq 0xc40(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x90a78(%rip), %rsi     # 0xe5034
leaq 0xa989c(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x19ad, %ecx           # imm = 0x19AD
jmp 0x55405
leaq 0xa9c86(%rip), %rsi     # 0xfe25d
leaq 0xc(%rsp), %rdx
leaq 0x18(%rsp), %rcx
leaq 0x8(%rsp), %r8
movq %r15, %rdi
movq %rbx, %r9
callq 0x1cc47
cmpl $0x1, %eax
jne 0x546e4
leaq 0x90def(%rip), %rsi     # 0xe53f0
leaq 0xa9c65(%rip), %rdx     # 0xfe26d
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x90a10(%rip), %rsi     # 0xe5034
leaq 0xa9834(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x19c0, %ecx           # imm = 0x19C0
jmp 0x551d1
leaq 0xa9b79(%rip), %rsi     # 0xfe1b8
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movb $0x2, %al
callq 0x2e014
leaq 0x90a2a(%rip), %rsi     # 0xe5082
leaq 0xa9bcd(%rip), %rdx     # 0xfe22c
leaq 0xc40(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x909b9(%rip), %rsi     # 0xe5034
leaq 0xa97dd(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x19b6, %ecx           # imm = 0x19B6
jmp 0x55405
leaq 0xa992c(%rip), %rsi     # 0xfdfc2
leaq 0x440(%rsp), %r14
leaq 0x40(%rsp), %rdx
movq %r14, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x90ed1(%rip), %rsi     # 0xe5585
leaq 0xc40(%rsp), %r15
movq %r15, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x2e014
leaq 0x90964(%rip), %rsi     # 0xe5034
leaq 0xa9788(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x199c, %ecx           # imm = 0x199C
jmp 0x55405
cmpl $0x1, 0x8(%rsp)
sete %cl
movl 0xc(%rsp), %eax
testl %eax, %eax
setg %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x54758
movl %eax, %ecx
movl 0x64(%r14), %edx
cmpl $0x1, %ecx
jne 0x5472b
movq 0x18(%rsp), %rdi
xorl %eax, %eax
testl %edx, %edx
cmovlel %eax, %edx
cmpq %rax, %rdx
je 0x54753
movsd (%rdi), %xmm0
movsd %xmm0, 0x390(%r14,%rax,8)
incq %rax
jmp 0x54713
cmpl %edx, %ecx
jne 0x54808
movq 0x18(%rsp), %rdi
xorl %eax, %eax
cmpq %rax, %rcx
je 0x54753
movsd (%rdi,%rax,8), %xmm0
movsd %xmm0, 0x390(%r14,%rax,8)
incq %rax
jmp 0x5473a
callq 0x8430
leaq 0xa9c14(%rip), %rsi     # 0xfe373
leaq 0xc(%rsp), %rdx
leaq 0x18(%rsp), %rcx
leaq 0x8(%rsp), %r8
movq %r15, %rdi
movq %rbx, %r9
callq 0x1cc47
cmpl $0x1, %eax
jne 0x547bc
leaq 0x90c6b(%rip), %rsi     # 0xe53f0
leaq 0xa9bf6(%rip), %rdx     # 0xfe382
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x9088c(%rip), %rsi     # 0xe5034
leaq 0xa96b0(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x19d7, %ecx           # imm = 0x19D7
jmp 0x551d1
cmpl $0x1, 0x8(%rsp)
sete %cl
movl 0xc(%rsp), %eax
testl %eax, %eax
setg %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x54885
movl %eax, %ecx
movl 0x64(%r14), %edx
cmpl $0x1, %ecx
jne 0x5485b
movq 0x18(%rsp), %rdi
xorl %eax, %eax
testl %edx, %edx
cmovlel %eax, %edx
cmpq %rax, %rdx
je 0x54880
movsd (%rdi), %xmm0
movsd %xmm0, 0x18(%r12,%rax,8)
incq %rax
jmp 0x547ef
leaq 0xa9aaf(%rip), %rsi     # 0xfe2be
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movl %edx, %r8d
xorl %eax, %eax
callq 0x2e014
leaq 0x90d5a(%rip), %rsi     # 0xe5585
leaq 0xc40(%rsp), %r15
movq %r15, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x2e014
leaq 0x907ed(%rip), %rsi     # 0xe5034
leaq 0xa9611(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x19cf, %ecx           # imm = 0x19CF
jmp 0x55405
cmpl %edx, %ecx
jne 0x54938
movq 0x18(%rsp), %rdi
xorl %eax, %eax
cmpq %rax, %rcx
je 0x54880
movsd (%rdi,%rax,8), %xmm0
movsd %xmm0, 0x18(%r12,%rax,8)
incq %rax
jmp 0x5486a
callq 0x8430
leaq 0xa9bfa(%rip), %rsi     # 0xfe486
leaq 0xc(%rsp), %rdx
leaq 0x18(%rsp), %rcx
leaq 0x8(%rsp), %r8
movq %r15, %rdi
movq %rbx, %r9
callq 0x1cc47
cmpl $0x1, %eax
jne 0x548e9
leaq 0x90b3e(%rip), %rsi     # 0xe53f0
leaq 0xa9bea(%rip), %rdx     # 0xfe4a3
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x9075f(%rip), %rsi     # 0xe5034
leaq 0xa9583(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x19ef, %ecx           # imm = 0x19EF
jmp 0x551d1
cmpl $0x1, 0x8(%rsp)
sete %cl
movl 0xc(%rsp), %eax
testl %eax, %eax
setg %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x549b8
movl %eax, %ecx
movl 0x64(%r14), %edx
cmpl $0x1, %ecx
jne 0x5498b
movq 0x18(%rsp), %rdi
xorl %eax, %eax
testl %edx, %edx
cmovlel %eax, %edx
cmpq %rax, %rdx
je 0x549b3
movsd (%rdi), %xmm0
movsd %xmm0, 0x338(%r12,%rax,8)
incq %rax
jmp 0x5491c
leaq 0xa9a93(%rip), %rsi     # 0xfe3d2
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movl %edx, %r8d
xorl %eax, %eax
callq 0x2e014
leaq 0x90c2a(%rip), %rsi     # 0xe5585
leaq 0xc40(%rsp), %r15
movq %r15, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x2e014
leaq 0x906bd(%rip), %rsi     # 0xe5034
leaq 0xa94e1(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x19e7, %ecx           # imm = 0x19E7
jmp 0x55405
cmpl %edx, %ecx
jne 0x5540d
movq 0x18(%rsp), %rdi
xorl %eax, %eax
cmpq %rax, %rcx
je 0x549b3
movsd (%rdi,%rax,8), %xmm0
movsd %xmm0, 0x338(%r12,%rax,8)
incq %rax
jmp 0x5499a
callq 0x8430
cmpl $0x2, 0x64(%r14)
jl 0x54a59
leaq 0xa9b37(%rip), %rsi     # 0xfe501
leaq 0xc40(%rsp), %rdx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1c5c4
cmpl $0x1, %eax
jne 0x54a25
leaq 0x90a02(%rip), %rsi     # 0xe53f0
leaq 0xa9b19(%rip), %rdx     # 0xfe50e
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x90623(%rip), %rsi     # 0xe5034
leaq 0xa9447(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1a07, %ecx           # imm = 0x1A07
jmp 0x551d1
movq 0x1480(%rsp), %rax
cmpl $0x1, 0x10(%rsp)
jne 0x54a3f
movl 0xc40(%rsp), %edx
movl %edx, (%rax)
jmp 0x54a41
movl (%rax), %edx
testl %edx, %edx
setns %al
movl 0x64(%r14), %ecx
cmpl %ecx, %edx
setl %sil
testb %sil, %al
je 0x54da7
leaq 0xa9b39(%rip), %rsi     # 0xfe599
leaq 0x40(%rsp), %rdx
leaq 0x8(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1caf9
cmpl $0x1, %eax
jne 0x54ab8
leaq 0x9096f(%rip), %rsi     # 0xe53f0
leaq 0xa9b20(%rip), %rdx     # 0xfe5a8
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x90590(%rip), %rsi     # 0xe5034
leaq 0xa93b4(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1a11, %ecx           # imm = 0x1A11
jmp 0x551d1
cmpl $0x1, 0x8(%rsp)
jne 0x54ae4
leaq 0xa52c1(%rip), %rsi     # 0xf9d87
leaq 0x40(%rsp), %rdi
callq 0x80c0
testq %rax, %rax
je 0x54e6a
movw $0x1, 0x65a(%r12)
leaq 0xa9b45(%rip), %rsi     # 0xfe630
leaq 0x40(%rsp), %rdx
leaq 0x8(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1caf9
cmpl $0x1, %eax
jne 0x54b43
leaq 0x908e4(%rip), %rsi     # 0xe53f0
leaq 0xa9b2c(%rip), %rdx     # 0xfe63f
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x90505(%rip), %rsi     # 0xe5034
leaq 0xa9329(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1a20, %ecx           # imm = 0x1A20
jmp 0x551d1
cmpl $0x1, 0x8(%rsp)
jne 0x54b6f
leaq 0xa5236(%rip), %rsi     # 0xf9d87
leaq 0x40(%rsp), %rdi
callq 0x80c0
testq %rax, %rax
je 0x54f9f
movw $0x1, 0x77a(%r12)
movq 0x1488(%rsp), %r12
cmpw $0x1, 0x32(%r14)
je 0x54b93
cmpw $0x1, 0x34(%r14)
je 0x54b93
cmpw $0x1, 0x36(%r14)
jne 0x550d4
leaq 0xa9bf2(%rip), %rsi     # 0xfe78c
leaq 0x10(%rsp), %rdx
leaq 0x8(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1c775
cmpl $0x1, %eax
jne 0x54bf2
leaq 0x90835(%rip), %rsi     # 0xe53f0
leaq 0xa9b05(%rip), %rdx     # 0xfe6c7
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x90456(%rip), %rsi     # 0xe5034
leaq 0xa927a(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1a36, %ecx           # imm = 0x1A36
jmp 0x551d1
leaq 0xa9bf5(%rip), %rsi     # 0xfe7ee
leaq 0x28(%rsp), %rdx
leaq 0x24(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1c775
cmpl $0x1, %eax
jne 0x54c51
leaq 0x907d6(%rip), %rsi     # 0xe53f0
leaq 0xa9ae4(%rip), %rdx     # 0xfe705
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x903f7(%rip), %rsi     # 0xe5034
leaq 0xa921b(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1a39, %ecx           # imm = 0x1A39
jmp 0x551d1
movl 0x8(%rsp), %ecx
movl %ecx, %edx
xorl $0x1, %edx
movl 0x24(%rsp), %eax
movl %eax, %esi
xorl $0x1, %esi
orl %edx, %esi
jne 0x54cbe
leaq 0xa9ad5(%rip), %rsi     # 0xfe743
leaq 0x440(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x903fb(%rip), %rsi     # 0xe5082
leaq 0x95e35(%rip), %rdx     # 0xeaac3
leaq 0xc40(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x9038a(%rip), %rsi     # 0xe5034
leaq 0xa91ae(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1a3d, %ecx           # imm = 0x1A3D
jmp 0x55405
cmpl $0x1, %ecx
jne 0x54cd4
movsd 0x10(%rsp), %xmm0
mulsd 0x8(%rbp), %xmm0
movsd %xmm0, 0x58(%r14)
cmpl $0x1, %eax
jne 0x54ce5
movsd 0x28(%rsp), %xmm0
movsd %xmm0, 0x58(%r14)
leaq 0xa9a95(%rip), %rsi     # 0xfe781
leaq 0x10(%rsp), %rdx
leaq 0x8(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1c775
cmpl $0x1, %eax
jne 0x54d44
leaq 0x906e3(%rip), %rsi     # 0xe53f0
leaq 0xa9a86(%rip), %rdx     # 0xfe79a
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x90304(%rip), %rsi     # 0xe5034
leaq 0xa9128(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1a4a, %ecx           # imm = 0x1A4A
jmp 0x551d1
leaq 0xa9a98(%rip), %rsi     # 0xfe7e3
leaq 0x28(%rsp), %rdx
leaq 0x24(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1c775
cmpl $0x1, %eax
jne 0x54df9
leaq 0x90680(%rip), %rsi     # 0xe53f0
leaq 0xa9a85(%rip), %rdx     # 0xfe7fc
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x902a1(%rip), %rsi     # 0xe5034
leaq 0xa90c5(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1a4d, %ecx           # imm = 0x1A4D
jmp 0x551d1
decl %ecx
leaq 0xa979e(%rip), %rsi     # 0xfe54e
leaq 0x440(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x907bc(%rip), %rsi     # 0xe5585
leaq 0xc40(%rsp), %r15
movq %r15, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x2e014
leaq 0x9024f(%rip), %rsi     # 0xe5034
leaq 0xa9073(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1a0a, %ecx           # imm = 0x1A0A
jmp 0x55405
movl 0x8(%rsp), %ecx
movl %ecx, %edx
xorl $0x1, %edx
movl 0x24(%rsp), %eax
movl %eax, %esi
xorl $0x1, %esi
orl %edx, %esi
jne 0x54edb
leaq 0xa9a2b(%rip), %rsi     # 0xfe845
leaq 0x440(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x9024f(%rip), %rsi     # 0xe5082
leaq 0x95c89(%rip), %rdx     # 0xeaac3
leaq 0xc40(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x901de(%rip), %rsi     # 0xe5034
leaq 0xa9002(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1a51, %ecx           # imm = 0x1A51
jmp 0x55405
movw $0x1, 0x658(%r12)
leaq 0xa971d(%rip), %rsi     # 0xfe599
leaq 0xc40(%rsp), %rdx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1caf9
cmpl $0x1, %eax
jne 0x54f7a
leaq 0x9054c(%rip), %rsi     # 0xe53f0
leaq 0xa973d(%rip), %rdx     # 0xfe5e8
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x9016d(%rip), %rsi     # 0xe5034
leaq 0xa8f91(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1a19, %ecx           # imm = 0x1A19
jmp 0x551d1
cmpl $0x1, %ecx
jne 0x54ef9
movsd 0x10(%rsp), %xmm0
mulsd 0x8(%rbp), %xmm0
movsd %xmm0, 0x10(%r13)
movl $0x1, 0x8(%r13)
cmpl $0x1, %eax
jne 0x54f12
movsd 0x28(%rsp), %xmm0
movsd %xmm0, 0x10(%r13)
movl $0x1, 0x8(%r13)
leaq 0xa9980(%rip), %rsi     # 0xfe899
leaq 0xc(%rsp), %rdx
leaq 0x18(%rsp), %rcx
leaq 0x8(%rsp), %r8
movq %r15, %rdi
movq %rbx, %r9
callq 0x1cc47
cmpl $0x1, %eax
jne 0x55010
leaq 0x904ad(%rip), %rsi     # 0xe53f0
leaq 0xa9954(%rip), %rdx     # 0xfe89e
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x900ce(%rip), %rsi     # 0xe5034
leaq 0xa8ef2(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1a60, %ecx           # imm = 0x1A60
jmp 0x551d1
cmpl $0x1, 0x10(%rsp)
jne 0x54ae4
leaq 0x65c(%r12), %rdi
leaq 0xc40(%rsp), %rsi
callq 0x8370
jmp 0x54ae4
movw $0x1, 0x778(%r12)
leaq 0xa967f(%rip), %rsi     # 0xfe630
leaq 0xc40(%rsp), %rdx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1caf9
cmpl $0x1, %eax
jne 0x5507b
leaq 0x90417(%rip), %rsi     # 0xe53f0
leaq 0xa969f(%rip), %rdx     # 0xfe67f
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x90038(%rip), %rsi     # 0xe5034
leaq 0xa8e5c(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1a28, %ecx           # imm = 0x1A28
jmp 0x551d1
cmpl $0x1, 0x8(%rsp)
jne 0x550d4
movl 0xc(%rsp), %edx
cmpl $0x65, %edx
jl 0x550a2
leaq 0xa98b9(%rip), %rsi     # 0xfe8e4
leaq 0x440(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x9003e(%rip), %rsi     # 0xe5082
leaq 0xa992a(%rip), %rdx     # 0xfe975
leaq 0xc40(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x8ffcd(%rip), %rsi     # 0xe5034
leaq 0xa8df1(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1a66, %ecx           # imm = 0x1A66
jmp 0x55405
cmpl $0x1, 0x10(%rsp)
jne 0x54b6f
addq $0x77c, %r12            # imm = 0x77C
leaq 0xc40(%rsp), %rsi
movq %r12, %rdi
callq 0x8370
jmp 0x54b6f
movl %edx, 0xe0(%r12)
movq 0x18(%rsp), %rdi
xorl %eax, %eax
testl %edx, %edx
cmovlel %eax, %edx
cmpq %rax, %rdx
je 0x550cf
movsd (%rdi,%rax,8), %xmm0
movsd %xmm0, 0xe8(%r12,%rax,8)
incq %rax
jmp 0x550b6
callq 0x8430
cmpw $0x1, 0x32(%r14)
movq 0x38(%rsp), %r13
je 0x55101
cmpw $0x1, 0x34(%r14)
je 0x55101
cmpw $0x1, 0x36(%r14)
je 0x55101
cmpw $0x1, 0x30(%r14)
je 0x55101
cmpw $0x1, 0x2e(%r14)
jne 0x55177
leaq 0xa9883(%rip), %rsi     # 0xfe98b
leaq 0x10(%rsp), %rdx
leaq 0x8(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1c775
cmpl $0x1, %eax
jne 0x5515d
leaq 0x902c7(%rip), %rsi     # 0xe53f0
leaq 0xa9864(%rip), %rdx     # 0xfe994
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x8fee8(%rip), %rsi     # 0xe5034
leaq 0xa8d0c(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1a76, %ecx           # imm = 0x1A76
jmp 0x551d1
cmpl $0x1, 0x8(%rsp)
jne 0x55285
movsd 0x10(%rsp), %xmm0
movsd %xmm0, 0x818(%r14)
leaq 0xa54f7(%rip), %rsi     # 0xfa675
leaq 0x40(%rsp), %rdx
leaq 0x8(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1caf9
cmpl $0x1, %eax
jne 0x551f2
leaq 0x90251(%rip), %rsi     # 0xe53f0
leaq 0xa54f2(%rip), %rdx     # 0xfa698
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x8fe72(%rip), %rsi     # 0xe5034
leaq 0xa8c96(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1aa0, %ecx           # imm = 0x1AA0
movq %r14, %r8
xorl %eax, %eax
callq 0x2e014
pushq $0x1
popq %rbp
movl %ebp, %eax
addq $0x1448, %rsp           # imm = 0x1448
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %ebp, %ebp
cmpl $0x1, 0x8(%rsp)
jne 0x551de
leaq 0x40(%rsp), %rdi
pushq $0x79
popq %rsi
callq 0x8140
testq %rax, %rax
jne 0x5521f
leaq 0x40(%rsp), %rdi
pushq $0x59
popq %rsi
callq 0x8140
testq %rax, %rax
je 0x551de
leaq 0xa5516(%rip), %rsi     # 0xfa73c
leaq 0xc40(%rsp), %rdx
leaq 0x34(%rsp), %rcx
movq %r15, %rdi
movq %rbx, %r8
callq 0x1c775
cmpl $0x1, %eax
jne 0x55386
leaq 0x901a2(%rip), %rsi     # 0xe53f0
leaq 0xa54ee(%rip), %rdx     # 0xfa743
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x8fdc3(%rip), %rsi     # 0xe5034
leaq 0xa8be7(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1aa2, %ecx           # imm = 0x1AA2
jmp 0x551d1
andq $0x0, 0x818(%r14)
cmpw $0x1, 0x32(%r14)
je 0x552a9
cmpw $0x1, 0x34(%r14)
je 0x552a9
xorpd %xmm0, %xmm0
cmpw $0x1, 0x36(%r14)
jne 0x552e1
movl 0xe0(%r12), %eax
xorl %ecx, %ecx
testl %eax, %eax
cmovlel %ecx, %eax
xorpd %xmm0, %xmm0
cmpq %rcx, %rax
je 0x552e1
movsd 0xe8(%r12,%rcx,8), %xmm1
maxsd %xmm0, %xmm1
movsd %xmm1, 0x818(%r14)
incq %rcx
movapd %xmm1, %xmm0
jmp 0x552bc
cmpw $0x1, 0x30(%r14)
je 0x552f5
cmpw $0x1, 0x2e(%r14)
jne 0x55177
movl 0x64(%r14), %eax
xorl %ecx, %ecx
testl %eax, %eax
cmovlel %ecx, %eax
xorpd %xmm2, %xmm2
movsd 0x8ff54(%rip), %xmm1    # 0xe5260
cmpq %rcx, %rax
je 0x55177
movl 0x68(%r14), %edx
cmpl $0x2, %edx
je 0x55365
cmpl $0x1, %edx
je 0x5533c
testl %edx, %edx
jne 0x5536c
movsd 0x390(%r14,%rcx,8), %xmm2
mulsd 0x808(%r13), %xmm2
jmp 0x5535c
movsd 0x808(%r13), %xmm2
mulsd 0x828(%r13), %xmm2
addsd %xmm1, %xmm2
mulsd 0x390(%r14,%rcx,8), %xmm2
addsd 0x70(%r14,%rcx,8), %xmm2
jmp 0x5536c
movsd 0x70(%r14,%rcx,8), %xmm2
movapd %xmm2, %xmm3
maxsd %xmm0, %xmm3
movsd %xmm3, 0x818(%r14)
incq %rcx
movapd %xmm3, %xmm0
jmp 0x5530c
cmpl $0x1, 0x34(%rsp)
jne 0x5539e
movsd 0xc40(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
jmp 0x553a4
movsd 0x10(%rsp), %xmm0
ucomisd 0x818(%r14), %xmm0
jbe 0x551de
leaq 0xa9613(%rip), %rsi     # 0xfe9cd
leaq 0x440(%rsp), %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x8fcaf(%rip), %rsi     # 0xe5082
leaq 0xa9659(%rip), %rdx     # 0xfea33
leaq 0xc40(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x8fc3e(%rip), %rsi     # 0xe5034
leaq 0xa8a62(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x1aa3, %ecx           # imm = 0x1AA3
movq %r15, %r8
jmp 0x551d4
leaq 0xa8fbe(%rip), %rsi     # 0xfe3d2
leaq 0x440(%rsp), %r14
movq %r14, %rdi
movl %edx, %r8d
xorl %eax, %eax
callq 0x2e014
leaq 0x90155(%rip), %rsi     # 0xe5585
leaq 0xc40(%rsp), %r15
movq %r15, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x2e014
leaq 0x8fbe8(%rip), %rsi     # 0xe5034
leaq 0xa8a0c(%rip), %rdx     # 0xfde5f
movq %rbx, %rdi
movl $0x19ff, %ecx           # imm = 0x19FF
jmp 0x55405