// File: /workspace/github_c_makefile_star2_O2/lesgourg[P]class_public/build/../source/input.c
// Function: input_try_unknown_parameters
int input_try_unknown_parameters(double * unknown_parameter,
                                 int unknown_parameters_size,
                                 void * voidpfzw,
                                 double * output,
                                 ErrorMsg errmsg){
  /** Summary */

  /** Define local variables */
  struct precision pr;        /* for precision parameters */
  struct background ba;       /* for cosmological background */
  struct thermodynamics th;           /* for thermodynamics */
  struct perturbations pt;         /* for source functions */
  struct transfer tr;        /* for transfer functions */
  struct primordial pm;       /* for primordial spectra */
  struct harmonic hr;          /* for output spectra */
  struct fourier fo;        /* for non-linear spectra */
  struct lensing le;          /* for lensed spectra */
  struct distortions sd;      /* for spectral distortions */
  struct output op;           /* for output files */

  int i;
  double rho_dcdm_today, rho_dr_today;
  struct fzerofun_workspace * pfzw;
  int input_verbose;
  int flag;
  int param;
  short compute_sigma8 = _FALSE_;

  /* Assume for now shooting did not fail */
  ba.shooting_failed = _FALSE_;

  pfzw = (struct fzerofun_workspace *) voidpfzw;
  /** Read input parameters */
  // This needs to be done with enough accuracy. A standard double has a relative
  // precision of around 1e-16, so 1e-20 should be good enough for the shooting
  for (i=0; i < unknown_parameters_size; i++) {
    class_sprintf(pfzw->fc.value[pfzw->unknown_parameters_index[i]],"%.20e",unknown_parameter[i]);
  }

  class_call(input_read_precisions(&(pfzw->fc),&pr,&ba,&th,&pt,&tr,&pm,&hr,&fo,&le,&sd,&op,
                                   errmsg),
             errmsg,
             errmsg);

  class_call(input_read_parameters(&(pfzw->fc),&pr,&ba,&th,&pt,&tr,&pm,&hr,&fo,&le,&sd,&op,
                                   errmsg),
             errmsg,
             errmsg);

  class_call(parser_read_int(&(pfzw->fc),"input_verbose",&param,&flag,errmsg),
             errmsg,
             errmsg);

  if (flag == _TRUE_)
    input_verbose = param;
  else
    input_verbose = 0;

  /** Optimise flags for sigma8 calculation.*/
  for (i=0; i < unknown_parameters_size; i++) {
    if (pfzw->target_name[i] == sigma8) {
      compute_sigma8 = _TRUE_;
    }
    if (pfzw->target_name[i] == S8) {
      compute_sigma8 = _TRUE_;
    }
  }

  /* Sigma8 depends on linear P(k), so no need to run anything except linear P(k) during shooting */
  if (compute_sigma8 == _TRUE_) {
    /* In June 2020 the k_max_for_pk was increased for higher precision,
       and in February 2022 the value was converted into a set of two precision parameters */
    pt.k_max_for_pk=
      MIN(MAX(pr.k_max_for_pk_sigma8_min, pt.k_max_for_pk),
          pr.k_max_for_pk_sigma8_max);
    pt.has_pk_matter=_TRUE_;
    pt.has_perturbations = _TRUE_;
    pt.has_cl_cmb_temperature = _FALSE_;
    pt.has_cls = _FALSE_;
    pt.has_cl_cmb_polarization = _FALSE_;
    pt.has_cl_cmb_lensing_potential = _FALSE_;
    pt.has_cl_number_count = _FALSE_;
    pt.has_cl_lensing_potential=_FALSE_;
    pt.has_density_transfers=_FALSE_;
    pt.has_velocity_transfers=_FALSE_;
    fo.has_pk_eq=_FALSE_;
    fo.method=nl_none;
  }

  /** Shoot forward into class up to required stage */
  if (pfzw->required_computation_stage >= cs_background){
    if (input_verbose>2)
      printf("Stage 1: background\n");
    ba.background_verbose = 0;
    class_call_except(background_init(&pr,&ba), ba.error_message, errmsg, background_free_input(&ba);thermodynamics_free_input(&th);perturbations_free_input(&pt););
  }

  if (pfzw->required_computation_stage >= cs_thermodynamics){
    if (input_verbose>2)
      printf("Stage 2: thermodynamics\n");
    pr.thermo_Nz_lin = 10000;
    pr.thermo_Nz_log = 500;
    th.thermodynamics_verbose = 0;
    th.hyrec_verbose = 0;
    class_call_except(thermodynamics_init(&pr,&ba,&th), th.error_message, errmsg, background_free(&ba);thermodynamics_free_input(&th);perturbations_free_input(&pt););
  }

  if (pfzw->required_computation_stage >= cs_perturbations){
    if (input_verbose>2)
      printf("Stage 3: perturbations\n");
    pt.perturbations_verbose = 0;
    class_call_except(perturbations_init(&pr,&ba,&th,&pt), pt.error_message, errmsg, thermodynamics_free(&th);background_free(&ba);perturbations_free_input(&pt););
  }

  if (pfzw->required_computation_stage >= cs_primordial){
    if (input_verbose>2)
      printf("Stage 4: primordial\n");
    pm.primordial_verbose = 0;
    class_call_except(primordial_init(&pr,&pt,&pm), pm.error_message, errmsg, perturbations_free(&pt);thermodynamics_free(&th);background_free(&ba));
  }

  if (pfzw->required_computation_stage >= cs_nonlinear){
    if (input_verbose>2)
      printf("Stage 5: nonlinear\n");
    fo.fourier_verbose = 0;
    class_call_except(fourier_init(&pr,&ba,&th,&pt,&pm,&fo), fo.error_message, errmsg, primordial_free(&pm);perturbations_free(&pt);thermodynamics_free(&th);background_free(&ba));
  }

  if (pfzw->required_computation_stage >= cs_transfer){
    if (input_verbose>2)
      printf("Stage 6: transfer\n");
    tr.transfer_verbose = 0;
    class_call_except(transfer_init(&pr,&ba,&th,&pt,&fo,&tr), tr.error_message, errmsg, fourier_free(&fo);primordial_free(&pm);perturbations_free(&pt);thermodynamics_free(&th);background_free(&ba));
  }

  if (pfzw->required_computation_stage >= cs_spectra){
    if (input_verbose>2)
      printf("Stage 7: spectra\n");
    hr.harmonic_verbose = 0;
    class_call_except(harmonic_init(&pr,&ba,&pt,&pm,&fo,&tr,&hr),hr.error_message, errmsg, transfer_free(&tr);fourier_free(&fo);primordial_free(&pm);perturbations_free(&pt);thermodynamics_free(&th);background_free(&ba));
  }

  /** Get the corresponding shoot variable and put into output */
  for (i=0; i < pfzw->target_size; i++) {
    switch (pfzw->target_name[i]) {
    case theta_s:
    case theta_s_100:
      output[i] = 100.*th.rs_rec/th.ra_rec-pfzw->target_value[i];
      break;
    case Neff:
      output[i] = ba.Neff-pfzw->target_value[i];
      break;
    case Omega_dcdmdr:
      rho_dcdm_today = ba.background_table[(ba.bt_size-1)*ba.bg_size+ba.index_bg_rho_dcdm];
      if (ba.has_dr == _TRUE_)
        rho_dr_today = ba.background_table[(ba.bt_size-1)*ba.bg_size+ba.index_bg_rho_dr];
      else
        rho_dr_today = 0.;
      output[i] = (rho_dcdm_today+rho_dr_today)/(ba.H0*ba.H0)-pfzw->target_value[i];
      break;
    case omega_dcdmdr:
      rho_dcdm_today = ba.background_table[(ba.bt_size-1)*ba.bg_size+ba.index_bg_rho_dcdm];
      if (ba.has_dr == _TRUE_)
        rho_dr_today = ba.background_table[(ba.bt_size-1)*ba.bg_size+ba.index_bg_rho_dr];
      else
        rho_dr_today = 0.;
      output[i] = (rho_dcdm_today+rho_dr_today)/(ba.H0*ba.H0)-pfzw->target_value[i]/ba.h/ba.h;
      break;
    case Omega_scf:
      /** In case scalar field is used to fill, pba->Omega0_scf is not equal to pfzw->target_value[i].*/
      output[i] = ba.background_table[(ba.bt_size-1)*ba.bg_size+ba.index_bg_rho_scf]/(ba.H0*ba.H0)-ba.Omega0_scf;
      break;
    case Omega_ini_dcdm:
    case omega_ini_dcdm:
      rho_dcdm_today = ba.background_table[(ba.bt_size-1)*ba.bg_size+ba.index_bg_rho_dcdm];
      if (ba.has_dr == _TRUE_)
        rho_dr_today = ba.background_table[(ba.bt_size-1)*ba.bg_size+ba.index_bg_rho_dr];
      else
        rho_dr_today = 0.;
      output[i] = -(rho_dcdm_today+rho_dr_today)/(ba.H0*ba.H0)+ba.Omega0_dcdmdr;
      break;
    case sigma8:
      output[i] = fo.sigma8[fo.index_pk_m];
      break;
    case S8:
      output[i] = fo.sigma8[fo.index_pk_m]*sqrt(ba.Omega0_m/0.3);
      break;
    }
  }

  /** Free structures */
  if (pfzw->required_computation_stage >= cs_spectra){
    class_call(harmonic_free(&hr), hr.error_message, errmsg);
  }
  if (pfzw->required_computation_stage >= cs_transfer){
    class_call(transfer_free(&tr), tr.error_message, errmsg);
  }
  if (pfzw->required_computation_stage >= cs_nonlinear){
    class_call(fourier_free(&fo), fo.error_message, errmsg);
  }
  if (pfzw->required_computation_stage >= cs_primordial){
    class_call(primordial_free(&pm), pm.error_message, errmsg);
  }
  if (pfzw->required_computation_stage >= cs_perturbations){
    class_call(perturbations_free(&pt), pt.error_message, errmsg);
  }
  if (pfzw->required_computation_stage >= cs_thermodynamics){
    class_call(thermodynamics_free(&th), th.error_message, errmsg);
  }
  if (pfzw->required_computation_stage >= cs_background){
    class_call(background_free(&ba), ba.error_message, errmsg);
  }

  /** Set filecontent to unread */
  for (i=0; i<pfzw->fc.size; i++) {
    pfzw->fc.read[i] = _FALSE_;
  }

  /** Free pointers allocated on input if neccessary */
  if (pfzw->required_computation_stage < cs_perturbations) {
    /** Some pointers in ppt may not be allocated if has_perturbations is _FALSE_, but this is handled in perturbations_free_input as neccessary. */
    perturbations_free_input(&pt);
  }
  if (pfzw->required_computation_stage < cs_thermodynamics) {
    thermodynamics_free_input(&th);
  }
  if (pfzw->required_computation_stage < cs_background) {
    background_free_input(&ba);
  }
  return _SUCCESS_;

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x11be8, %rsp          # imm = 0x11BE8
movq %r8, %r14
movq %rcx, 0x10(%rsp)
movq %rdx, %r15
movl %esi, %r13d
movq %rdi, %rbx
andw $0x0, 0x398(%rsp)
xorl %r12d, %r12d
testl %esi, %esi
cmovlel %r12d, %r13d
leaq 0x9f5fc(%rip), %rbp     # 0xd8374
cmpq %r12, %r13
je 0x38dba
movsd (%rbx,%r12,8), %xmm0
xorl %edi, %edi
xorl %esi, %esi
movq %rbp, %rdx
movb $0x1, %al
callq 0x8580
movq (%r15), %rcx
movslq (%rcx,%r12,4), %rdi
shlq $0xa, %rdi
addq 0x20(%r15), %rdi
incl %eax
movslq %eax, %rsi
movsd (%rbx,%r12,8), %xmm0
movq %rbp, %rdx
movb $0x1, %al
callq 0x8580
incq %r12
jmp 0x38d78
leaq 0x8(%r15), %rbp
subq $0x40, %rsp
movq %r14, 0x30(%rsp)
leaq 0x48e8(%rsp), %rsi
movq %rbp, %rdi
callq 0x2f8db
addq $0x40, %rsp
pushq $0x1
popq %rbx
cmpl $0x1, %eax
jne 0x38e2b
leaq 0x9d606(%rip), %rsi     # 0xd63f0
leaq 0xa2ae5(%rip), %rdx     # 0xdb8d6
leaq 0x7530(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x9d227(%rip), %rsi     # 0xd6034
leaq 0xa2b80(%rip), %rdx     # 0xdb994
movq %r14, %rdi
movl $0x543, %ecx            # imm = 0x543
movq %r15, %r8
xorl %eax, %eax
callq 0x2e014
jmp 0x38f3f
subq $0x8, %rsp
leaq 0xf1c8(%rsp), %rax
leaq 0xfde8(%rsp), %r10
leaq 0xe938(%rsp), %r11
leaq 0x1bb0(%rsp), %rbx
leaq 0x5ae0(%rsp), %r12
leaq 0x48b0(%rsp), %rsi
leaq 0x20(%rsp), %rdx
leaq 0x3048(%rsp), %rcx
leaq 0x7538(%rsp), %r8
leaq 0x63c8(%rsp), %r9
movq %rbp, %rdi
pushq %r14
pushq %rax
pushq %r10
pushq %r11
pushq %rbx
pushq %r12
leaq 0x2548(%rsp), %rax
pushq %rax
callq 0x36f7a
addq $0x40, %rsp
testl %eax, %eax
je 0x38eda
leaq 0x9d54a(%rip), %rsi     # 0xd63f0
leaq 0xa2a90(%rip), %rdx     # 0xdb93d
leaq 0x13a0(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x9d16b(%rip), %rsi     # 0xd6034
leaq 0xa2ac4(%rip), %rdx     # 0xdb994
movq %r14, %rdi
movl $0x548, %ecx            # imm = 0x548
jmp 0x38f32
leaq 0xa218b(%rip), %rsi     # 0xdb06c
movq %rsp, %rdx
leaq 0x4(%rsp), %rcx
movq %rbp, %rdi
movq %r14, %r8
callq 0x1c5c4
cmpl $0x1, %eax
jne 0x38f53
leaq 0x9d4f0(%rip), %rsi     # 0xd63f0
leaq 0xa2aaa(%rip), %rdx     # 0xdb9b1
leaq 0x13a0(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0x9d111(%rip), %rsi     # 0xd6034
leaq 0xa2a6a(%rip), %rdx     # 0xdb994
movq %r14, %rdi
movl $0x54c, %ecx            # imm = 0x54C
movq %r15, %r8
xorl %eax, %eax
callq 0x2e014
pushq $0x1
popq %rbx
movl %ebx, %eax
addq $0x11be8, %rsp          # imm = 0x11BE8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl 0x4(%rsp), %eax
movl (%rsp), %ecx
xorl %esi, %esi
pushq $0x1
popq %rbx
xorl %edx, %edx
cmpq %rsi, %r13
je 0x38f7b
movq 0x30(%r15), %rdi
movl (%rdi,%rsi,4), %edi
andl $-0x2, %edi
cmpl $0x8, %edi
cmovel %ebx, %edx
incq %rsi
jmp 0x38f61
cmpl $0x3, %ecx
setge %cl
cmpl $0x1, %eax
sete %bpl
andb %cl, %bpl
cmpw $0x1, %dx
jne 0x38fe6
movsd 0x7580(%rsp), %xmm0
maxsd 0x50e8(%rsp), %xmm0
minsd 0x50f0(%rsp), %xmm0
movsd %xmm0, 0x7580(%rsp)
movl $0x1, 0x7530(%rsp)
andq $0x0, 0x7550(%rsp)
andw $0x0, 0x1bd0(%rsp)
movq $0x10000, 0x7558(%rsp) # imm = 0x10000
andl $0x0, 0x1ba8(%rsp)
testb %bpl, %bpl
je 0x38ff7
leaq 0xb612b(%rip), %rdi     # 0xef11d
callq 0x8540
leaq 0x18(%rsp), %rsi
andw $0x0, 0xb82(%rsi)
leaq 0x48a8(%rsp), %rdi
callq 0x5286f
cmpl $0x1, %eax
jne 0x3906d
leaq 0xb9c(%rsp), %rcx
leaq 0x9d3cb(%rip), %rsi     # 0xd63f0
leaq 0xa29c6(%rip), %rdx     # 0xdb9f2
leaq 0x13a0(%rsp), %r15
movq %r15, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x9cfef(%rip), %rsi     # 0xd6034
leaq 0xa2948(%rip), %rdx     # 0xdb994
movq %r14, %rdi
movl $0x577, %ecx            # imm = 0x577
movq %r15, %r8
xorl %eax, %eax
callq 0x2e014
leaq 0x18(%rsp), %rdi
callq 0x5491b
jmp 0x39115
cmpl $0x0, 0x44(%r15)
je 0x39515
movq %r12, %r13
testb %bpl, %bpl
je 0x3908c
leaq 0xb60aa(%rip), %rdi     # 0xef131
callq 0x8540
movabsq $0x1f400002710, %rax    # imm = 0x1F400002710
leaq 0x48a8(%rsp), %rdi
movq %rax, 0x1a8(%rdi)
leaq 0x3040(%rsp), %rdx
andl $0x0, 0x1060(%rdx)
leaq 0x18(%rsp), %rsi
callq 0x58bf7
cmpl $0x1, %eax
jne 0x39134
leaq 0x40a4(%rsp), %rcx
leaq 0x9d31e(%rip), %rsi     # 0xd63f0
leaq 0xa2932(%rip), %rdx     # 0xdba0b
leaq 0x13a0(%rsp), %r15
movq %r15, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x9cf42(%rip), %rsi     # 0xd6034
leaq 0xa289b(%rip), %rdx     # 0xdb994
movq %r14, %rdi
movl $0x581, %ecx            # imm = 0x581
movq %r15, %r8
xorl %eax, %eax
callq 0x2e014
leaq 0x18(%rsp), %rdi
callq 0x548a2
leaq 0x3040(%rsp), %rdi
callq 0x5ccfd
leaq 0x7530(%rsp), %rdi
callq 0x689cd
jmp 0x38f3f
cmpl $0x2, 0x44(%r15)
jb 0x39515
testb %bpl, %bpl
je 0x39150
leaq 0xb5ffe(%rip), %rdi     # 0xef149
callq 0x8540
leaq 0x7530(%rsp), %rcx
andw $0x0, 0x6bf0(%rcx)
leaq 0x48a8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
leaq 0x3040(%rsp), %rdx
callq 0x64aae
cmpl $0x1, %eax
jne 0x391e3
leaq 0xe122(%rsp), %rcx
leaq 0x9d262(%rip), %rsi     # 0xd63f0
leaq 0xa2897(%rip), %rdx     # 0xdba2c
leaq 0x13a0(%rsp), %r15
movq %r15, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x9ce86(%rip), %rsi     # 0xd6034
leaq 0xa27df(%rip), %rdx     # 0xdb994
movq %r14, %rdi
movl $0x588, %ecx            # imm = 0x588
movq %r15, %r8
xorl %eax, %eax
callq 0x2e014
leaq 0x3040(%rsp), %rdi
callq 0x5cc3e
leaq 0x18(%rsp), %rdi
callq 0x548a2
jmp 0x39122
cmpl $0x3, 0x44(%r15)
jb 0x39515
testb %bpl, %bpl
je 0x391ff
leaq 0xb5f66(%rip), %rdi     # 0xef160
callq 0x8540
leaq 0x2510(%rsp), %rdx
andw $0x0, 0x328(%rdx)
leaq 0x48a8(%rsp), %rdi
leaq 0x7530(%rsp), %rsi
callq 0x8072f
cmpl $0x1, %eax
jne 0x39276
leaq 0x283a(%rsp), %rcx
leaq 0x9d1b8(%rip), %rsi     # 0xd63f0
leaq 0xa2811(%rip), %rdx     # 0xdba50
leaq 0x13a0(%rsp), %r15
movq %r15, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x9cddc(%rip), %rsi     # 0xd6034
leaq 0xa2735(%rip), %rdx     # 0xdb994
movq %r14, %rdi
movl $0x58f, %ecx            # imm = 0x58F
movq %r15, %r8
xorl %eax, %eax
callq 0x2e014
jmp 0x39327
cmpl $0x4, 0x44(%r15)
jb 0x39515
testb %bpl, %bpl
je 0x39292
leaq 0xb5ee7(%rip), %rdi     # 0xef174
callq 0x8540
leaq 0x1ba8(%rsp), %r9
andw $0x0, 0x160(%r9)
leaq 0x48a8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
leaq 0x3040(%rsp), %rdx
leaq 0x7530(%rsp), %rcx
leaq 0x2510(%rsp), %r8
callq 0x8b692
cmpl $0x1, %eax
jne 0x39350
leaq 0x1d0a(%rsp), %rcx
leaq 0x9d10f(%rip), %rsi     # 0xd63f0
leaq 0xa2785(%rip), %rdx     # 0xdba6d
leaq 0x13a0(%rsp), %r15
movq %r15, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x9cd33(%rip), %rsi     # 0xd6034
leaq 0xa268c(%rip), %rdx     # 0xdb994
movq %r14, %rdi
movl $0x596, %ecx            # imm = 0x596
movq %r15, %r8
xorl %eax, %eax
callq 0x2e014
leaq 0x2510(%rsp), %rdi
callq 0x8260b
leaq 0x7530(%rsp), %rdi
callq 0x689ed
leaq 0x3040(%rsp), %rdi
callq 0x5cc3e
leaq 0x18(%rsp), %rdi
callq 0x548a2
jmp 0x38f3f
cmpl $0x5, 0x44(%r15)
jb 0x39515
movq %r14, %r12
testb %bpl, %bpl
je 0x3936f
leaq 0xb5e1d(%rip), %rdi     # 0xef187
callq 0x8540
leaq 0x63c0(%rsp), %r9
andw $0x0, 0x968(%r9)
leaq 0x48a8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
leaq 0x3040(%rsp), %rdx
leaq 0x7530(%rsp), %rcx
leaq 0x1ba8(%rsp), %r8
callq 0x8f01d
cmpl $0x1, %eax
jne 0x3943e
leaq 0x6d2a(%rsp), %rcx
leaq 0x9d02e(%rip), %rsi     # 0xd63f0
leaq 0xa26ca(%rip), %rdx     # 0xdba93
leaq 0x13a0(%rsp), %r15
movq %r15, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x9cc52(%rip), %rsi     # 0xd6034
leaq 0xa25ab(%rip), %rdx     # 0xdb994
movq %r12, %rdi
movl $0x59d, %ecx            # imm = 0x59D
movq %r15, %r8
xorl %eax, %eax
callq 0x2e014
leaq 0x1ba8(%rsp), %rdi
callq 0x8e2c1
leaq 0x2510(%rsp), %rdi
callq 0x8260b
leaq 0x7530(%rsp), %rdi
callq 0x689ed
leaq 0x3040(%rsp), %rdi
callq 0x5cc3e
leaq 0x18(%rsp), %rdi
callq 0x548a2
jmp 0x38f3c
cmpl $0x6, 0x44(%r15)
pushq $0x1
popq %rbx
movq %r12, %r14
jb 0x39515
testb %bpl, %bpl
je 0x39460
leaq 0xb5d3e(%rip), %rdi     # 0xef199
callq 0x8540
andw $0x0, 0x5bb8(%rsp)
subq $0x8, %rsp
leaq 0x48b0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x7538(%rsp), %rdx
leaq 0x2518(%rsp), %rcx
leaq 0x1bb0(%rsp), %r8
leaq 0x63c8(%rsp), %r9
pushq %r13
callq 0x9d2a3
popq %rcx
popq %rdx
cmpl $0x1, %eax
pushq $0x1
popq %rbx
movq %r12, %r14
jne 0x39515
leaq 0x5bba(%rsp), %rcx
leaq 0x9cf33(%rip), %rsi     # 0xd63f0
leaq 0xa25f6(%rip), %rdx     # 0xdbaba
leaq 0x13a0(%rsp), %r15
movq %r15, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x9cb57(%rip), %rsi     # 0xd6034
leaq 0xa24b0(%rip), %rdx     # 0xdb994
movq %r14, %rdi
movl $0x5a4, %ecx            # imm = 0x5A4
movq %r15, %r8
xorl %eax, %eax
callq 0x2e014
leaq 0x63c0(%rsp), %rdi
callq 0x933a8
leaq 0x1ba8(%rsp), %rdi
callq 0x8e2c1
jmp 0x3931a
xorl %r13d, %r13d
leaq 0xa15d9(%rip), %rbp     # 0xdaaf8
movsd 0x9d7d9(%rip), %xmm2    # 0xd6d00
movsd 0x9cd81(%rip), %xmm3    # 0xd62b0
xorpd %xmm4, %xmm4
movq 0x10(%rsp), %r12
movslq 0x40(%r15), %rax
cmpq %rax, %r13
jge 0x397a3
movq 0x30(%r15), %rax
movl (%rax,%r13,4), %eax
cmpq $0x9, %rax
ja 0x3970e
movslq (%rbp,%rax,4), %rax
addq %rbp, %rax
jmpq *%rax
movsd 0x3f80(%rsp), %xmm5
mulsd %xmm2, %xmm5
divsd 0x3f90(%rsp), %xmm5
jmp 0x396fe
movq 0x2e8(%rsp), %rax
movslq 0x2cc(%rsp), %rdx
decq %rdx
movslq 0x2c8(%rsp), %rcx
imulq %rdx, %rcx
xorpd %xmm0, %xmm0
cmpw $0x1, 0x33e(%rsp)
jne 0x395bd
movslq 0x254(%rsp), %rdx
movslq %ecx, %rsi
addq %rdx, %rsi
movsd (%rax,%rsi,8), %xmm0
movslq 0x250(%rsp), %rdx
addq %rdx, %rcx
addsd (%rax,%rcx,8), %xmm0
movsd 0x18(%rsp), %xmm1
movsd 0x68(%rsp), %xmm5
mulsd %xmm1, %xmm1
jmp 0x39652
movq 0x2e8(%rsp), %rax
movslq 0x2cc(%rsp), %rdx
decq %rdx
movslq 0x2c8(%rsp), %rcx
imulq %rdx, %rcx
xorpd %xmm5, %xmm5
cmpw $0x1, 0x33e(%rsp)
jne 0x39620
movslq 0x254(%rsp), %rdx
movslq %ecx, %rsi
addq %rdx, %rsi
movsd (%rax,%rsi,8), %xmm5
movslq 0x250(%rsp), %rdx
addq %rdx, %rcx
addsd (%rax,%rcx,8), %xmm5
movsd 0x18(%rsp), %xmm0
movsd 0x20(%rsp), %xmm1
mulsd %xmm0, %xmm0
divsd %xmm0, %xmm5
movq 0x38(%r15), %rax
movsd (%rax,%r13,8), %xmm0
divsd %xmm1, %xmm0
divsd %xmm1, %xmm0
subsd %xmm0, %xmm5
jmp 0x39708
movq 0x1c70(%rsp), %rax
movslq 0x1bfc(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm5
movsd 0x1e0(%rsp), %xmm0
divsd %xmm3, %xmm0
ucomisd %xmm4, %xmm0
jb 0x39775
sqrtsd %xmm0, %xmm0
jmp 0x3979a
movsd 0x1c8(%rsp), %xmm5
jmp 0x396fe
movq 0x2e8(%rsp), %rax
movslq 0x2cc(%rsp), %rdx
decq %rdx
movslq 0x2c8(%rsp), %rcx
imulq %rdx, %rcx
xorpd %xmm5, %xmm5
cmpw $0x1, 0x33e(%rsp)
jne 0x396e0
movslq 0x254(%rsp), %rdx
movslq %ecx, %rsi
addq %rdx, %rsi
movsd (%rax,%rsi,8), %xmm5
movslq 0x250(%rsp), %rdx
addq %rdx, %rcx
addsd (%rax,%rcx,8), %xmm5
movsd 0x18(%rsp), %xmm0
mulsd %xmm0, %xmm0
divsd %xmm0, %xmm5
movq 0x38(%r15), %rax
subsd (%rax,%r13,8), %xmm5
movsd %xmm5, (%r12,%r13,8)
incq %r13
jmp 0x39538
movq 0x2e8(%rsp), %rax
movslq 0x2cc(%rsp), %rcx
decq %rcx
movslq 0x2c8(%rsp), %rdx
imulq %rcx, %rdx
movslq 0x26c(%rsp), %rcx
addq %rdx, %rcx
movsd (%rax,%rcx,8), %xmm5
movsd 0x18(%rsp), %xmm0
mulsd %xmm0, %xmm0
divsd %xmm0, %xmm5
subsd 0x120(%rsp), %xmm5
jmp 0x39708
movq 0x1c70(%rsp), %rax
movslq 0x1bfc(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm5
jmp 0x39708
movsd %xmm5, 0x8(%rsp)
callq 0x82d0
movsd 0x8(%rsp), %xmm5
xorpd %xmm4, %xmm4
movsd 0x9cb1e(%rip), %xmm3    # 0xd62b0
movsd 0x9d566(%rip), %xmm2    # 0xd6d00
mulsd %xmm0, %xmm5
jmp 0x39708
movl 0x44(%r15), %eax
cmpl $0x6, %eax
jb 0x39805
leaq 0x5ad8(%rsp), %rdi
callq 0x9e76c
cmpl $0x1, %eax
jne 0x39801
leaq 0x5bba(%rsp), %rcx
leaq 0x9cc23(%rip), %rsi     # 0xd63f0
leaq 0xa2311(%rip), %rdx     # 0xdbae5
leaq 0x13a0(%rsp), %r15
movq %r15, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x9c847(%rip), %rsi     # 0xd6034
leaq 0xa21a0(%rip), %rdx     # 0xdb994
movq %r14, %rdi
movl $0x5d9, %ecx            # imm = 0x5D9
jmp 0x38e1c
movl 0x44(%r15), %eax
cmpl $0x5, %eax
jb 0x39863
leaq 0x63c0(%rsp), %rdi
callq 0x933a8
cmpl $0x1, %eax
jne 0x3985f
leaq 0x6d2a(%rsp), %rcx
leaq 0x9cbc5(%rip), %rsi     # 0xd63f0
leaq 0xa22c6(%rip), %rdx     # 0xdbaf8
leaq 0x13a0(%rsp), %r15
movq %r15, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x9c7e9(%rip), %rsi     # 0xd6034
leaq 0xa2142(%rip), %rdx     # 0xdb994
movq %r14, %rdi
movl $0x5dc, %ecx            # imm = 0x5DC
jmp 0x38e1c
movl 0x44(%r15), %eax
cmpl $0x4, %eax
jb 0x398c1
leaq 0x1ba8(%rsp), %rdi
callq 0x8e2c1
cmpl $0x1, %eax
jne 0x398bd
leaq 0x1d0a(%rsp), %rcx
leaq 0x9cb67(%rip), %rsi     # 0xd63f0
leaq 0xa227b(%rip), %rdx     # 0xdbb0b
leaq 0x13a0(%rsp), %r15
movq %r15, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x9c78b(%rip), %rsi     # 0xd6034
leaq 0xa20e4(%rip), %rdx     # 0xdb994
movq %r14, %rdi
movl $0x5df, %ecx            # imm = 0x5DF
jmp 0x38e1c
movl 0x44(%r15), %eax
cmpl $0x3, %eax
jb 0x3991f
leaq 0x2510(%rsp), %rdi
callq 0x8260b
cmpl $0x1, %eax
jne 0x3991b
leaq 0x283a(%rsp), %rcx
leaq 0x9cb09(%rip), %rsi     # 0xd63f0
leaq 0xa222f(%rip), %rdx     # 0xdbb1d
leaq 0x13a0(%rsp), %r15
movq %r15, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x9c72d(%rip), %rsi     # 0xd6034
leaq 0xa2086(%rip), %rdx     # 0xdb994
movq %r14, %rdi
movl $0x5e2, %ecx            # imm = 0x5E2
jmp 0x38e1c
movl 0x44(%r15), %eax
cmpl $0x2, %eax
jb 0x3997d
leaq 0x7530(%rsp), %rdi
callq 0x689ed
cmpl $0x1, %eax
jne 0x39979
leaq 0xe122(%rsp), %rcx
leaq 0x9caab(%rip), %rsi     # 0xd63f0
leaq 0xa21e6(%rip), %rdx     # 0xdbb32
leaq 0x13a0(%rsp), %r15
movq %r15, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x9c6cf(%rip), %rsi     # 0xd6034
leaq 0xa2028(%rip), %rdx     # 0xdb994
movq %r14, %rdi
movl $0x5e5, %ecx            # imm = 0x5E5
jmp 0x38e1c
movl 0x44(%r15), %eax
testl %eax, %eax
je 0x399d6
leaq 0x3040(%rsp), %rdi
callq 0x5cc3e
cmpl $0x1, %eax
jne 0x399d6
leaq 0x40a4(%rsp), %rcx
leaq 0x9ca4e(%rip), %rsi     # 0xd63f0
leaq 0xa21a1(%rip), %rdx     # 0xdbb4a
leaq 0x13a0(%rsp), %r15
movq %r15, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x9c672(%rip), %rsi     # 0xd6034
leaq 0xa1fcb(%rip), %rdx     # 0xdb994
movq %r14, %rdi
movl $0x5e8, %ecx            # imm = 0x5E8
jmp 0x38e1c
leaq 0x18(%rsp), %rdi
callq 0x548a2
cmpl $0x1, %eax
jne 0x39a28
leaq 0xb9c(%rsp), %rcx
leaq 0x9c9fc(%rip), %rsi     # 0xd63f0
leaq 0xa2168(%rip), %rdx     # 0xdbb63
leaq 0x13a0(%rsp), %r15
movq %r15, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0x9c620(%rip), %rsi     # 0xd6034
leaq 0xa1f79(%rip), %rdx     # 0xdb994
movq %r14, %rdi
movl $0x5eb, %ecx            # imm = 0x5EB
jmp 0x38e1c
movl 0x10(%r15), %eax
xorl %ecx, %ecx
testl %eax, %eax
cmovlel %ecx, %eax
cmpq %rcx, %rax
je 0x39a46
movq 0x28(%r15), %rdx
andw $0x0, (%rdx,%rcx,2)
incq %rcx
jmp 0x39a33
xorl %ebx, %ebx
cmpl $0x1, 0x44(%r15)
ja 0x38f3f
leaq 0x7530(%rsp), %rdi
callq 0x689cd
cmpl $0x0, 0x44(%r15)
jne 0x38f3f
leaq 0x3040(%rsp), %rdi
callq 0x5ccfd
jmp 0x38f3f