// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/match/sfx-run.c
// Function: gt_runsuffixerator
int gt_runsuffixerator(bool doesa,
                       Suffixeratoroptions *so,
                       GenomediffInfo *gd_info,
                       GtLogger *logger,
                       GtError *err)
{
  GtTimer *sfxprogress = NULL;
  Outfileinfo outfileinfo;
  bool haserr = false;
  unsigned int prefixlength;
  Sfxstrategy sfxstrategy;
  GtEncseq *encseq = NULL;
  GtReadmode readmode = gt_index_options_readmode_value(so->idxopts);

  gt_error_check(err);

  so->outlcptab
    = so->genomediff ? true
                     : gt_index_options_outlcptab_value(so->idxopts);
  if (gt_showtime_enabled())
  {
    sfxprogress = gt_timer_new_with_progress_description("determining sequence "
                                        "length and number of special symbols");
    gt_timer_start(sfxprogress);
  }

  if (gt_str_length(so->inputindex) > 0)
  {
    GtEncseqLoader *el;
    el = gt_encseq_loader_new_from_options(so->loadopts, err);
    if (!gt_encseq_options_ssp_value(so->loadopts))
    {
      GtEncseqMetadata* emd = gt_encseq_metadata_new(gt_str_get(so->inputindex),
                                                     err);
      if (emd == NULL)
      {
        haserr = true;
      } else
      {
        GtEncseqAccessType at = gt_encseq_metadata_accesstype(emd);
        if (!gt_encseq_access_type_isviautables(at))
        {
          gt_encseq_loader_do_not_require_ssp_tab(el);
        }
      }
      gt_encseq_metadata_delete(emd);
    }
    if (!haserr) {
      gt_encseq_loader_set_logger(el, logger);
      /* as we only construct the des, sds, and ssptable, but do not
         need it later during the construction of the enhanced suffix
         array, we do not load it again: we just load the information
         stored in the .esq file. It would be better to use the
         in memory constructed encseq rather than the one mapped into
         memory. This would require to free the des, sds, and ssptable. */
      gt_encseq_loader_disable_autosupport(el);
      gt_encseq_loader_do_not_require_des_tab(el);
      gt_encseq_loader_do_not_require_sds_tab(el);
      gt_encseq_loader_do_not_require_ssp_tab(el);
      encseq = gt_encseq_loader_load(el, gt_str_get(so->inputindex), err);
    }
    gt_encseq_loader_delete(el);
    if (encseq == NULL)
    {
      haserr = true;
    }
  } else
  {
    GtEncseqEncoder *ee = NULL;
    ee = gt_encseq_encoder_new_from_options(so->encopts, err);
    /* '-plain' implies no description support */
    if (gt_encseq_options_plain_value(so->loadopts)) {
        gt_encseq_encoder_do_not_create_des_tab(ee);
        gt_encseq_encoder_do_not_create_sds_tab(ee);
    }
    if (ee == NULL)
      haserr = true;
    if (!haserr) {
      int rval;
      gt_encseq_encoder_set_timer(ee, sfxprogress);
      gt_encseq_encoder_set_logger(ee, logger);
      rval = gt_encseq_encoder_encode(ee, so->db, gt_str_get(so->indexname),
                                      err);
      if (rval != 0)
        haserr = true;
      if (!haserr) {
        GtEncseqLoader *el = gt_encseq_loader_new_from_options(so->loadopts,
                                                               err);
        /* as we only construct the des, sds, and ssptable, but do not
           need it later during the construction of the enhanced suffix
           array, we do not load it again: we just load the information
           stored in the .esq file. It would be better to use the
           in memory constructed encseq rather than the one mapped into
           memory. This would require to free the des, sds, and ssptable. */
        gt_encseq_loader_disable_autosupport(el);
        gt_encseq_loader_do_not_require_des_tab(el);
        gt_encseq_loader_do_not_require_sds_tab(el);
        gt_encseq_loader_do_not_require_ssp_tab(el);
        encseq = gt_encseq_loader_load(el, gt_str_get(so->indexname), err);
        if (!encseq)
          haserr = true;
        gt_encseq_loader_delete(el);
      }
    }
    if (encseq == NULL)
    {
      haserr = true;
    }
    gt_encseq_encoder_delete(ee);
  }
  if (!haserr)
  {
    gt_encseq_show_features(encseq,logger,false);
    if (readmode == GT_READMODE_COMPL ||
        readmode == GT_READMODE_REVCOMPL)
    {
      if (!gt_alphabet_is_dna(gt_encseq_alphabet(encseq)))
      {
        gt_error_set(err,"option -%s only can be used for DNA alphabets",
                          readmode == GT_READMODE_COMPL ? "cpl" : "rcl");
        haserr = true;
      }
    }
  }
  if (!haserr && gt_index_options_outkystab_value(so->idxopts)
              && !gt_index_options_outkyssort_value(so->idxopts))
  {
    if (gt_extractkeysfromdesfile(gt_str_get(so->indexname),
                                  false, logger, err) != 0)
    {
      haserr = true;
    }
  }
  prefixlength = gt_index_options_prefixlength_value(so->idxopts);
  sfxstrategy = gt_index_options_sfxstrategy_value(so->idxopts);
  if (!haserr)
  {
    if (gt_index_options_outsuftab_value(so->idxopts)
        || gt_index_options_outbwttab_value(so->idxopts)
        || so->outlcptab
        || gt_index_options_outbcktab_value(so->idxopts)
        || !doesa)
    {
      unsigned int numofchars = gt_alphabet_num_of_chars(
                                          gt_encseq_alphabet(encseq));

      if (detpfxlen(&prefixlength,
                    so,
                    numofchars,
                    gt_encseq_total_length(encseq),
                    sfxstrategy.spmopt_minlength == 0 ? true : false,
                    logger,
                    err) != 0)
      {
        haserr = true;
      }
    } else
    {
      if (readmode != GT_READMODE_FORWARD)
      {
        gt_error_set(err,"option '-dir %s' only makes sense in combination "
                          "with at least one of the options -suf, -lcp, or "
                          "-bwt",
                          gt_readmode_show(readmode));
        haserr = true;
      }
    }
  }
  outfileinfo.outfpsuftab = NULL;
  outfileinfo.outfpbwttab = NULL;
  outfileinfo.outlcpinfo = NULL;
  outfileinfo.outfpbcktab = NULL;
  outfileinfo.numberofallsortedsuffixes = 0;
  outfileinfo.longest.defined = false;
  outfileinfo.longest.valueunsignedlong = 0;
  outfileinfo.bustate_shulen = NULL;
  outfileinfo.encseq = NULL;
  if (!haserr)
  {
    if (initoutfileinfo(&outfileinfo,prefixlength,encseq,so,
                        sfxstrategy.compressedoutput,gd_info,err) != 0)
    {
      haserr = true;
    }
  }
  if (!haserr)
  {
    if (gt_index_options_outsuftab_value(so->idxopts)
        || gt_index_options_outbwttab_value(so->idxopts)
        || so->outlcptab
        || !doesa)
    {
      if (doesa)
      {
        if (suffixeratorwithoutput(
                               &outfileinfo,
                               encseq,
                               readmode,
                               prefixlength,
                               gt_index_options_numofparts_value(so->idxopts),
                               gt_index_options_maximumspace_value(so->idxopts),
                               gt_index_options_swallow_tail_value(so->idxopts),
                               &sfxstrategy,
                               sfxprogress,
                               so->showprogress,
                               logger,
                               err) != 0)
        {
          haserr = true;
        }
      } else
      {
#ifndef S_SPLINT_S
        sfxstrategy.outsuftabonfile = false;
        if (run_packedindexconstruction(logger,
                                        sfxprogress,
                                        so->showprogress,
                                        so,
                                        prefixlength,
                                        encseq,
                                        &sfxstrategy,
                                        err) != 0)
        {
          haserr = true;
        }
#endif
      }
    }
  }
  if (!haserr && outfileinfo.bustate_shulen != NULL &&
      gt_sfx_multiesa2shulengthdist_last(outfileinfo.bustate_shulen,err) != 0)
  {
    haserr = true;
  }
  gt_fa_fclose(outfileinfo.outfpsuftab);
  gt_fa_fclose(outfileinfo.outfpbwttab);
  gt_fa_fclose(outfileinfo.outfpbcktab);
  if (!haserr)
  {
    GtUword numoflargelcpvalues, maxbranchdepth;
    double averagelcp;

    if (outfileinfo.outlcpinfo == NULL)
    {
      numoflargelcpvalues = maxbranchdepth = 0;
      averagelcp = 0.0;
    } else
    {
      numoflargelcpvalues
        = gt_Outlcpinfo_numoflargelcpvalues(outfileinfo.outlcpinfo);
      maxbranchdepth = gt_Outlcpinfo_maxbranchdepth(outfileinfo.outlcpinfo);
      averagelcp = gt_Outlcpinfo_lcptabsum(outfileinfo.outlcpinfo)/
                   outfileinfo.numberofallsortedsuffixes;
    }
    if (gt_outprjfile(gt_str_get(so->indexname),
                      readmode,
                      encseq,
                      outfileinfo.numberofallsortedsuffixes,
                      prefixlength,
                      numoflargelcpvalues,
                      averagelcp,
                      maxbranchdepth,
                      &outfileinfo.longest,
                      err) != 0)
    {
      haserr = true;
    }
  }
  gt_Outlcpinfo_delete(outfileinfo.outlcpinfo);
  gt_sfx_multiesashulengthdist_delete(outfileinfo.bustate_shulen,gd_info);
  gt_encseq_delete(encseq);
  encseq = NULL;
  if (!haserr
        && gt_index_options_outkystab_value(so->idxopts)
        && gt_index_options_outkyssort_value(so->idxopts))
  {
    if (gt_extractkeysfromdesfile(gt_str_get(so->indexname),
                                  true,
                                  logger, err) != 0)
    {
      haserr = true;
    }
  }
  if (sfxprogress != NULL)
  {
    gt_timer_show_progress_final(sfxprogress, stdout);
    gt_timer_delete(sfxprogress);
  }
  return haserr ? -1 : 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x158, %rsp            # imm = 0x158
movq %r8, %r12
movq %rcx, 0x28(%rsp)
movq %rdx, 0xa8(%rsp)
movq %rsi, %r13
movl %edi, 0x1c(%rsp)
movq 0x18(%rsi), %rdi
callq 0x16458e
movl %eax, 0x18(%rsp)
testq %r12, %r12
je 0x1a18aa
movq %r12, %rdi
callq 0x89eb7
testb %al, %al
jne 0x1a260a
movb $0x1, %al
cmpb $0x0, 0x2(%r13)
jne 0x1a18bc
movq 0x18(%r13), %rdi
callq 0x1642ac
movb %al, 0x3(%r13)
callq 0xaaf34
testb %al, %al
je 0x1a18e2
leaq 0x1b7967(%rip), %rdi    # 0x359237
callq 0xaf4a5
movq %rax, %rbp
movq %rax, %rdi
callq 0xaf4d6
jmp 0x1a18e4
xorl %ebp, %ebp
movq 0x28(%r13), %rdi
callq 0xad289
testq %rax, %rax
movq %r13, 0x20(%rsp)
movq %rbp, 0x98(%rsp)
je 0x1a1926
movq 0x10(%r13), %rdi
movq %r12, %rsi
callq 0x7cf66
movq %rax, %rbx
movq 0x10(%r13), %rdi
callq 0x896e2
testb %al, %al
je 0x1a1a04
xorl %ebp, %ebp
jmp 0x1a1a73
movq 0x8(%r13), %rdi
movq %r12, %rsi
callq 0x7a1c0
movq %rax, %rbx
movq 0x10(%r13), %rdi
callq 0x89438
testb %al, %al
je 0x1a1952
movq %rbx, %rdi
callq 0x7a94b
movq %rbx, %rdi
callq 0x7aa53
testq %rbx, %rbx
je 0x1a1a3f
sete %r15b
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x7a83d
movq %rbx, %rdi
movq 0x28(%rsp), %rsi
callq 0x7ad75
movq 0x20(%r13), %rdi
movq 0x30(%r13), %r14
callq 0xad1fa
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
movq %r12, %rcx
callq 0x7adb8
testl %eax, %eax
setne %bpl
orb %r15b, %bpl
jne 0x1a1a42
movq 0x10(%r13), %rdi
movq %r12, %rsi
callq 0x7cf66
movq %rax, %r14
movq %rax, %rdi
callq 0x7d046
movq %r14, %rdi
callq 0x7d0cd
movq %r14, %rdi
callq 0x7d25b
movq %r14, %rdi
callq 0x7d193
movq 0x20(%r13), %rdi
callq 0xad1fa
movq %r14, %rdi
movq %rax, %rsi
movq %r12, %rdx
callq 0x7921d
movq %rax, %r13
testq %rax, %rax
movzbl %bpl, %ebp
pushq $0x1
popq %rax
cmovel %eax, %ebp
movq %r14, %rdi
callq 0x79f01
jmp 0x1a1a45
movq 0x28(%r13), %rdi
callq 0xad1fa
movq %rax, %rdi
movq %r12, %rsi
callq 0x87eb0
movq %rax, %r14
testq %rax, %rax
je 0x1a1a5e
movq %r14, %rdi
callq 0x88828
movl %eax, %edi
callq 0x87b70
testb %al, %al
jne 0x1a1a3b
movq %rbx, %rdi
callq 0x7d193
xorl %ebp, %ebp
jmp 0x1a1a61
movb $0x1, %bpl
xorl %r13d, %r13d
testq %r13, %r13
movzbl %bpl, %ecx
pushq $0x1
popq %rax
cmovel %eax, %ecx
movq %rbx, %rdi
movl %ecx, %ebx
callq 0x7a80c
jmp 0x1a1ad4
movb $0x1, %bpl
movq %r14, %rdi
callq 0x888b5
testb %bpl, %bpl
je 0x1a1a73
xorl %r13d, %r13d
jmp 0x1a1abf
movq %rbx, %rdi
movq 0x28(%rsp), %rsi
callq 0x7d487
movq %rbx, %rdi
callq 0x7d046
movq %rbx, %rdi
callq 0x7d0cd
movq %rbx, %rdi
callq 0x7d25b
movq %rbx, %rdi
callq 0x7d193
movq 0x20(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0xad1fa
movq %rbx, %rdi
movq %rax, %rsi
movq %r12, %rdx
callq 0x7921d
movq %rax, %r13
movq %rbx, %rdi
callq 0x79f01
testq %r13, %r13
movzbl %bpl, %ebx
pushq $0x1
popq %rax
cmovel %eax, %ebx
testb %bl, %bl
movq 0x20(%rsp), %rbp
jne 0x1a1b50
movq %r13, %rdi
movq 0x28(%rsp), %rsi
xorl %edx, %edx
callq 0x77c45
movl 0x18(%rsp), %eax
andl $-0x2, %eax
cmpl $0x2, %eax
jne 0x1a1b10
movq %r13, %rdi
callq 0x754dd
movq %rax, %rdi
callq 0x5741b
testb %al, %al
je 0x1a1cdb
movq 0x18(%rbp), %rdi
callq 0x16454c
testb %al, %al
je 0x1a1b50
movq 0x18(%rbp), %rdi
callq 0x16450a
testb %al, %al
jne 0x1a1b50
movq 0x20(%rbp), %rdi
callq 0xad1fa
movq %rax, %rdi
xorl %esi, %esi
movq 0x28(%rsp), %rdx
movq %r12, %rcx
callq 0x15dda4
testl %eax, %eax
movzbl %bl, %ebx
pushq $0x1
popq %rax
cmovnel %eax, %ebx
movl %ebx, 0xc(%rsp)
movq 0x18(%rbp), %rdi
callq 0x1643bc
movl %eax, %r14d
movq 0x18(%rbp), %rsi
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
callq 0x1645d0
movq 0x30(%rbx), %rax
movq %rax, 0x110(%rsp)
movupd (%rbx), %xmm0
movupd 0x10(%rbx), %xmm1
movupd 0x20(%rbx), %xmm2
movapd %xmm2, 0x100(%rsp)
movapd %xmm1, 0xf0(%rsp)
movapd %xmm0, 0xe0(%rsp)
movl 0xc(%rsp), %ebx
testb %bl, %bl
movq %r12, 0x38(%rsp)
jne 0x1a1d2a
movq 0x18(%rbp), %rdi
callq 0x164334
testb %al, %al
jne 0x1a1bf2
movq 0x18(%rbp), %rdi
callq 0x164224
testb %al, %al
jne 0x1a1bf2
cmpb $0x0, 0x3(%rbp)
jne 0x1a1bf2
movq 0x18(%rbp), %rdi
callq 0x16419c
movl 0x1c(%rsp), %ecx
xorb $0x1, %cl
orb %al, %cl
cmpb $0x1, %cl
jne 0x1a25a6
movq %r13, %rdi
callq 0x754dd
movq %rax, %rdi
callq 0x56c8e
movl %eax, %ebx
movq %r13, %rdi
callq 0x7055e
movq %rax, %r14
movl 0x108(%rsp), %r12d
xorl %ebp, %ebp
testl %r12d, %r12d
sete %bpl
movq 0x20(%rsp), %rax
movq 0x18(%rax), %rsi
leaq 0x40(%rsp), %r15
movq %r15, %rdi
callq 0x1645d0
xorl %eax, %eax
cmpl $0x0, 0x28(%r15)
sete %al
leaq 0x1b75b9(%rip), %rcx    # 0x359200
movsd (%rcx,%rax,8), %xmm0
movl %ebx, %edi
movq %r14, %rsi
movl %ebp, %edx
movq 0x20(%rsp), %rbp
callq 0x191cf8
movl %eax, %r15d
movq 0x18(%rbp), %rdi
callq 0x1643bc
testl %eax, %eax
je 0x1a1cbc
movl %r15d, 0x14(%rsp)
xorl %r15d, %r15d
testl %r12d, %r12d
sete %r15b
movq 0x18(%rbp), %rdi
callq 0x1643bc
movl %eax, %ebp
movzbl 0x6d(%rsp), %edx
shll $0x2, %edx
movl %ebx, %edi
movq %r14, %rsi
movl %r15d, %ecx
callq 0x191dc4
movl %eax, %ebx
movl %eax, %edi
movl %ebp, %esi
movq 0x38(%rsp), %rdx
callq 0x191e4e
testl %eax, %eax
je 0x1a1d0e
movb $0x1, %bl
movl %ebp, %r14d
movq 0x20(%rsp), %rbp
jmp 0x1a1d2a
leaq 0x1b7677(%rip), %rsi    # 0x35933a
movq 0x28(%rsp), %rdi
movl %r15d, %edx
xorl %eax, %eax
callq 0x92e71
movl 0xc(%rsp), %ebx
movl %r15d, %r14d
jmp 0x1a1d2a
cmpl $0x2, 0x18(%rsp)
leaq 0x16df5a(%rip), %rax    # 0x30fc41
leaq 0x16df4f(%rip), %rdx    # 0x30fc3d
cmoveq %rax, %rdx
leaq 0x1b7578(%rip), %rsi    # 0x359271
movq %r12, %rdi
xorl %eax, %eax
callq 0x89dbb
movb $0x1, %al
movl %eax, 0xc(%rsp)
jmp 0x1a1b54
movq 0x28(%rsp), %rdi
movl %ebx, %esi
movl 0x14(%rsp), %edx
callq 0x191ec5
movl %ebp, %r14d
movq 0x20(%rsp), %rbp
movl 0xc(%rsp), %ebx
xorpd %xmm0, %xmm0
movupd %xmm0, 0x59(%rsp)
movapd %xmm0, 0x50(%rsp)
movapd %xmm0, 0x40(%rsp)
movapd %xmm0, 0x70(%rsp)
andq $0x0, 0x80(%rsp)
testb %bl, %bl
movq %r13, 0x30(%rsp)
movl %r14d, 0x14(%rsp)
je 0x1a1d65
xorl %r12d, %r12d
jmp 0x1a1f98
movb 0x116(%rsp), %r15b
cmpb $0x1, 0x3(%rbp)
movl %ebx, 0xc(%rsp)
jne 0x1a1d8f
movq 0x20(%rbp), %rdi
callq 0xad1fa
movb 0x2(%rbp), %cl
testq %rax, %rax
je 0x1a1d96
testb $0x1, %cl
jne 0x1a1d9f
jmp 0x1a1dba
xorl %ebx, %ebx
jmp 0x1a1e53
testb $0x1, %cl
je 0x1a2666
movq %r13, %rdi
movq 0xa8(%rsp), %rsi
callq 0x152d65
movq %rax, 0x80(%rsp)
movb 0x2(%rbp), %cl
testb $0x1, %cl
movb %r15b, 0xa0(%rsp)
je 0x1a1dcb
xorl %ebx, %ebx
jmp 0x1a1dd7
movq 0x20(%rbp), %rdi
callq 0xad1fa
movq %rax, %rbx
movq %rbp, %r13
movq 0x30(%rsp), %r15
movq %r15, %rdi
callq 0x75487
movl %eax, %ebp
movq 0x18(%r13), %rdi
callq 0x164444
movl %eax, %r14d
movq 0x18(%r13), %rdi
callq 0x164631
leaq 0x97d(%rip), %r9        # 0x1a2782
xorl %r12d, %r12d
cmpb $0x0, 0x2(%r13)
cmoveq %r12, %r9
movzbl %r14b, %ecx
movzbl %al, %r8d
movq %rbx, %rdi
movl %ebp, %esi
movl 0x14(%rsp), %edx
pushq 0x38(%rsp)
pushq 0x88(%rsp)
callq 0x19c8b1
popq %rcx
popq %rdx
movq %rax, %rbx
movq %rax, 0x78(%rsp)
testq %rax, %rax
movq %r13, %rbp
movq %r15, %r13
movb 0xa0(%rsp), %r15b
je 0x1a21fb
movq 0x18(%rbp), %rdi
callq 0x164334
testb %al, %al
movq 0x38(%rsp), %r12
je 0x1a1eb0
movq 0x20(%rbp), %rdi
callq 0xad1fa
leaq 0x157b96(%rip), %rcx    # 0x2f9a0b
leaq 0x1856f1(%rip), %rsi    # 0x32756d
testb %r15b, %r15b
cmovneq %rcx, %rsi
leaq 0x153c67(%rip), %rdx    # 0x2f5af1
leaq 0x1b7392(%rip), %rcx    # 0x359223
movq %rax, %rdi
movl $0x99, %r8d
movq %r12, %r9
callq 0x8a449
movq %rax, 0x40(%rsp)
testq %rax, %rax
je 0x1a1f43
movq 0x18(%rbp), %rdi
callq 0x164224
testb %al, %al
je 0x1a1ef6
movq 0x20(%rbp), %rdi
callq 0xad1fa
leaq 0x1a275a(%rip), %rsi    # 0x344627
leaq 0x153c1d(%rip), %rdx    # 0x2f5af1
leaq 0x1b7348(%rip), %rcx    # 0x359223
movq %rax, %rdi
movl $0x9c, %r8d
movq %r12, %r9
callq 0x8a449
movq %rax, 0x48(%rsp)
testq %rax, %rax
je 0x1a1f43
movq 0x18(%rbp), %rdi
callq 0x16419c
movb $0x1, %r14b
testb %al, %al
je 0x1a1f46
movq 0x20(%rbp), %rdi
callq 0xad1fa
leaq 0x19ccf4(%rip), %rsi    # 0x33ec0a
leaq 0x153bd4(%rip), %rdx    # 0x2f5af1
leaq 0x1b72ff(%rip), %rcx    # 0x359223
movq %rax, %rdi
movl $0x9f, %r8d
movq %r12, %r9
callq 0x8a449
movq %rax, 0x50(%rsp)
testq %rax, %rax
setne %r14b
jmp 0x1a1f46
xorl %r14d, %r14d
movq %rbx, %r12
movl 0xc(%rsp), %ebx
movq 0x18(%rbp), %rdi
callq 0x164334
movq %r13, %rcx
testb %al, %al
jne 0x1a1f87
movq 0x18(%rbp), %rdi
callq 0x164224
movq %r13, %rcx
testb %al, %al
jne 0x1a1f87
cmpb $0x0, 0x3(%rbp)
movq %r13, %rcx
jne 0x1a1f87
movq 0x18(%rbp), %rdi
callq 0x16419c
xorl %ecx, %ecx
testb %al, %al
cmovneq %r13, %rcx
movq %rcx, 0x60(%rsp)
movzbl %bl, %ebx
testb %r14b, %r14b
pushq $0x1
popq %rax
cmovel %eax, %ebx
testb %bl, %bl
je 0x1a1fa6
movq 0x38(%rsp), %r12
jmp 0x1a23e0
movq 0x18(%rbp), %rdi
callq 0x164334
testb %al, %al
jne 0x1a1fc4
movq 0x18(%rbp), %rdi
callq 0x164224
testb %al, %al
je 0x1a21e1
movl %ebx, 0xc(%rsp)
cmpb $0x0, 0x1c(%rsp)
je 0x1a2081
movq 0x18(%rbp), %rdi
callq 0x1644c9
movl %eax, %ebx
movq 0x18(%rbp), %rdi
callq 0x164486
movq %rax, %r14
movq 0x18(%rbp), %rdi
callq 0x164631
movb %al, 0x1c(%rsp)
movzbl 0x1(%rbp), %eax
leaq 0xe0(%rsp), %r10
movq %r13, %rdi
movl 0x18(%rsp), %esi
movl 0x14(%rsp), %edx
movl %ebx, %ecx
movq %r14, %r8
movq %r12, %r9
movq 0x38(%rsp), %r12
pushq %r12
pushq 0x30(%rsp)
pushq %rax
pushq 0xb0(%rsp)
pushq %r10
pushq 0x78(%rsp)
callq 0x1a9baf
addq $0x30, %rsp
movq %rax, %r14
testq %rax, %rax
je 0x1a2203
movb $0x0, 0x13(%rsp)
cmpb $0x1, 0x116(%rsp)
jne 0x1a2215
movq %r13, %rdi
callq 0x7055e
movq %rax, %rdi
callq 0x9580f
movq 0x40(%rsp), %rdi
movzwl %ax, %esi
callq 0x5d7e4
movq %rax, 0x90(%rsp)
jmp 0x1a2221
movb $0x0, 0x115(%rsp)
movb 0x1(%rbp), %r15b
movq 0x18(%rbp), %rsi
leaq 0x120(%rsp), %rbx
movq %rbx, %rdi
callq 0x164673
movq %r13, %rdi
callq 0x754dd
movq %rax, %rdi
callq 0x56c8e
movupd (%rbx), %xmm0
movupd 0x10(%rbx), %xmm1
movapd %xmm0, 0xb0(%rsp)
movapd %xmm1, 0xc0(%rsp)
movq 0x20(%rbx), %rcx
movq %rcx, 0xd0(%rsp)
cmpl $0xb, %eax
setae %al
movl 0xb8(%rsp), %edx
cmpl $0x4, %edx
setae %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x1a2100
movl $0x3, 0xb8(%rsp)
pushq $0x3
popq %rdx
movl 0xbc(%rsp), %ecx
movl 0xc4(%rsp), %r8d
leaq 0x1b72fc(%rip), %rsi    # 0x359412
movq 0x28(%rsp), %r13
movq %r13, %rdi
xorl %eax, %eax
callq 0x92e71
movq 0x18(%rbp), %rdi
callq 0x16458e
movl %eax, %ebx
movq 0x18(%rbp), %rdi
callq 0x1644c9
movq %rbp, %rcx
movl %eax, %ebp
movq 0x18(%rcx), %rdi
callq 0x164486
movq %rax, %r14
movq 0x30(%rsp), %r12
movq %r12, %rdi
callq 0x7055e
incq %rax
subq $0x8, %rsp
movzbl %r15b, %r10d
leaq 0xe8(%rsp), %r8
movl %ebx, %edi
movl 0x1c(%rsp), %esi
movl %ebp, %edx
movq %r14, %rcx
movq %r12, %r9
movq 0x40(%rsp), %r12
pushq %r12
pushq %r13
pushq %rax
pushq %r10
movq 0xc0(%rsp), %rax
pushq %rax
callq 0x14a678
addq $0x30, %rsp
testq %rax, %rax
je 0x1a23ae
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
movq %rax, %rsi
movq %r12, %rdx
callq 0x143771
testq %rax, %rax
je 0x1a23a6
movq %rax, %rdi
callq 0x146b99
movq %rbx, %rdi
callq 0x14ad8c
movq 0x20(%rsp), %rbp
movq 0x30(%rsp), %r13
movl 0xc(%rsp), %ebx
jmp 0x1a23e0
cmpb $0x0, 0x1c(%rsp)
je 0x1a1fc4
cmpb $0x0, 0x3(%rbp)
je 0x1a1f9c
jmp 0x1a1fc4
xorl %r14d, %r14d
jmp 0x1a1f49
movb $0x0, 0x68(%rsp)
andq $0x0, 0x70(%rsp)
xorl %ebx, %ebx
jmp 0x1a23be
movq $0x0, 0x90(%rsp)
pushq $0x1
popq %rbp
movq %r14, 0xa0(%rsp)
leaq 0x120(%rsp), %rdi
leaq 0x13(%rsp), %rsi
movq %r14, %rdx
callq 0x1ab5be
testq %rax, %rax
je 0x1a2342
movq %rax, %rbx
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x1a228d
movb 0x13(%rsp), %al
andb 0x1c(%rsp), %al
jne 0x1a228d
movq 0x120(%rsp), %rdx
cmpb $0x1, 0x116(%rsp)
jne 0x1a2285
movq %rbx, %rdi
movq 0x90(%rsp), %rsi
callq 0x1aff52
jmp 0x1a228d
movq %rbx, %rsi
callq 0x1afec4
movq 0x120(%rsp), %r13
testq %r12, %r12
je 0x1a22aa
movq %r12, %rdi
callq 0x89eb7
testb %al, %al
jne 0x1a25d2
movq 0x48(%rsp), %r15
testq %r15, %r15
je 0x1a232b
movb $0x0, 0xb0(%rsp)
movq %r15, %r14
xorl %r12d, %r12d
cmpq %r12, %r13
je 0x1a231e
movq %rbx, %rdi
movq %r12, %rsi
callq 0x1af5f2
testq %rax, %rax
je 0x1a22f2
testq %r14, %r14
je 0x1a2316
movq 0x60(%rsp), %rdi
decq %rax
movq %rax, %rsi
movl 0x18(%rsp), %edx
callq 0x705e4
jmp 0x1a22f4
movb $-0x2, %al
movb %al, 0xb0(%rsp)
leaq 0xb0(%rsp), %rdi
movq %rbp, %rsi
movq %rbp, %rdx
movq %r15, %rcx
callq 0xb302c
movq %r15, %r14
jmp 0x1a2319
xorl %r14d, %r14d
incq %r12
jmp 0x1a22c2
movq 0x38(%rsp), %r12
movq 0xa0(%rsp), %r14
movq 0x120(%rsp), %rax
addq %rax, 0x58(%rsp)
movq 0x30(%rsp), %r13
jmp 0x1a222c
cmpb $0x1, 0x116(%rsp)
jne 0x1a2359
movq 0x90(%rsp), %rdi
callq 0x5de42
movb $0x1, 0x68(%rsp)
movq %r14, %rdi
callq 0x1ac0f6
movq %rax, %rbx
movq %rax, 0x70(%rsp)
movq %r13, %rdi
callq 0x7055e
cmpq %rax, %rbx
movq 0x20(%rsp), %rbp
jae 0x1a2638
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x1a23bc
movq %r14, %rsi
movq %r12, %rdx
callq 0x1ac02b
testl %eax, %eax
sete %bl
andq $0x0, 0x50(%rsp)
jmp 0x1a23be
movq %rbx, %rdi
callq 0x14ad8c
movb $0x1, %bl
movq 0x20(%rsp), %rbp
movq 0x30(%rsp), %r13
jmp 0x1a2405
movb $0x1, %bl
movq %r14, %rdi
movq %r12, %rsi
callq 0x1a8f90
movl 0xc(%rsp), %ecx
movzbl %cl, %ecx
testb $0x1, %bl
movl %ecx, %ebx
pushq $0x1
popq %rcx
cmovel %ecx, %ebx
testl %eax, %eax
cmovnel %ecx, %ebx
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
sete %al
orb %bl, %al
jne 0x1a2405
movq %r12, %rsi
callq 0x153521
testl %eax, %eax
movzbl %bl, %ebx
pushq $0x1
popq %rax
cmovnel %eax, %ebx
movq 0x40(%rsp), %rdi
callq 0x8a4fd
movq 0x48(%rsp), %rdi
callq 0x8a4fd
movq 0x50(%rsp), %rdi
callq 0x8a4fd
movq 0x78(%rsp), %r15
testb %bl, %bl
jne 0x1a24f4
movl %ebx, 0xc(%rsp)
leaq 0x68(%rsp), %r12
testq %r15, %r15
je 0x1a248e
movq %r15, %rdi
callq 0x19cfa4
movq %rax, %rbx
movq %r15, %rdi
callq 0x19cffe
movq %rax, %r14
movq %r15, %rdi
callq 0x19cfb5
movq 0x58(%rsp), %r15
movq %r15, %xmm2
punpckldq 0x145472(%rip), %xmm2 # xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]
subpd 0x14547a(%rip), %xmm2   # 0x2e78f0
movapd %xmm2, %xmm1
unpckhpd %xmm2, %xmm1            # xmm1 = xmm1[1],xmm2[1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x30(%rsp)
jmp 0x1a24a2
xorpd %xmm0, %xmm0
movsd %xmm0, 0x30(%rsp)
movq 0x58(%rsp), %r15
xorl %ebx, %ebx
xorl %r14d, %r14d
movq 0x20(%rbp), %rdi
callq 0xad1fa
subq $0x8, %rsp
movq %rax, %rdi
movl 0x20(%rsp), %esi
movq %r13, %rdx
movq %r15, %rcx
movl 0x1c(%rsp), %r8d
movq %rbx, %r9
movsd 0x38(%rsp), %xmm0
movq 0x40(%rsp), %rax
pushq %rax
pushq %r12
movq %rax, %r12
pushq %r14
callq 0x2cb988
addq $0x20, %rsp
testl %eax, %eax
movl 0xc(%rsp), %ebx
movzbl %bl, %ebx
pushq $0x1
popq %rax
cmovnel %eax, %ebx
movq 0x78(%rsp), %r15
movq %r15, %rdi
callq 0x19cbc7
movq 0x80(%rsp), %rdi
movq 0xa8(%rsp), %rsi
callq 0x153541
movq %r13, %rdi
callq 0x735fd
testb %bl, %bl
jne 0x1a2564
movq 0x18(%rbp), %rdi
callq 0x16454c
testb %al, %al
je 0x1a2564
movl %ebx, %r14d
movq 0x18(%rbp), %rdi
callq 0x16450a
testb %al, %al
je 0x1a2567
movq 0x20(%rbp), %rdi
callq 0xad1fa
movq %rax, %rdi
pushq $0x1
popq %rbx
movl %ebx, %esi
movq 0x28(%rsp), %rdx
movq %r12, %rcx
callq 0x15dda4
testl %eax, %eax
movzbl %r14b, %r14d
cmovnel %ebx, %r14d
jmp 0x1a2567
movl %ebx, %r14d
movq 0x98(%rsp), %rbx
testq %rbx, %rbx
je 0x1a258e
movq 0x295935(%rip), %rax    # 0x437eb0
movq (%rax), %rsi
movq %rbx, %rdi
callq 0xafb49
movq %rbx, %rdi
callq 0xafc5b
movzbl %r14b, %eax
negl %eax
addq $0x158, %rsp            # imm = 0x158
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl 0x18(%rsp), %edi
testl %edi, %edi
je 0x1a1d2a
callq 0xa45c4
leaq 0x1b6ce1(%rip), %rsi    # 0x35929f
movq %r12, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x89dbb
movb $0x1, %bl
jmp 0x1a1d2a
movq 0x29598f(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x142a30(%rip), %rsi    # 0x2e5013
leaq 0x142bd5(%rip), %rdx    # 0x2e51bf
leaq 0x1b6e15(%rip), %rcx    # 0x359406
leaq 0x1b6c2b(%rip), %r8     # 0x359223
movl $0xb5, %r9d
xorl %eax, %eax
callq 0x17a50
callq 0x17390
movq 0x295957(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1429f8(%rip), %rsi    # 0x2e5013
leaq 0x142b9d(%rip), %rdx    # 0x2e51bf
leaq 0x1b6be7(%rip), %rcx    # 0x359210
leaq 0x1b6bf3(%rip), %r8     # 0x359223
movl $0x1ba, %r9d            # imm = 0x1BA
jmp 0x1a25fe
movq 0x295929(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1429ca(%rip), %rsi    # 0x2e5013
leaq 0x1b6d57(%rip), %rdx    # 0x3593a7
leaq 0x1b6d98(%rip), %rcx    # 0x3593ef
leaq 0x1b6bc5(%rip), %r8     # 0x359223
movl $0x12e, %r9d            # imm = 0x12E
jmp 0x1a25fe
movq 0x2958fb(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x14299c(%rip), %rsi    # 0x2e5013
leaq 0x1b6ce5(%rip), %rdx    # 0x359363
leaq 0x1b6d12(%rip), %rcx    # 0x359397
leaq 0x1b6b97(%rip), %r8     # 0x359223
pushq $0x7e
popq %r9
jmp 0x1a25fe