// File: /workspace/github_c_makefile_star2_O0/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 %r14
pushq %rbx
subq $0x1e8, %rsp            # imm = 0x1E8
movb %dil, %al
andb $0x1, %al
movb %al, 0x1e7(%rsp)
movq %rsi, 0x1d8(%rsp)
movq %rdx, 0x1d0(%rsp)
movq %rcx, 0x1c8(%rsp)
movq %r8, 0x1c0(%rsp)
movq $0x0, 0x1b8(%rsp)
movb $0x0, 0x16f(%rsp)
movq $0x0, 0x128(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x25ce80
movl %eax, 0x124(%rsp)
cmpq $0x0, 0x1c0(%rsp)
je 0x2ceb94
movq 0x1c0(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x2ceb5c
jmp 0x2ceb94
movq 0x36d43d(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2474a6(%rip), %rsi    # 0x516013
leaq 0x24764b(%rip), %rdx    # 0x5161bf
leaq 0x2bd205(%rip), %rcx    # 0x58bd80
leaq 0x2bd211(%rip), %r8     # 0x58bd93
movl $0x1ba, %r9d            # imm = 0x1BA
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2ceb96
movq 0x1d8(%rsp), %rax
testb $0x1, 0x2(%rax)
je 0x2cebb2
movl $0x1, %eax
movl %eax, 0x94(%rsp)
jmp 0x2cebcf
movq 0x1d8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x25ca90
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x94(%rsp)
movl 0x94(%rsp), %eax
cmpl $0x0, %eax
setne %cl
movq 0x1d8(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x3(%rax)
callq 0x11aa90
testb $0x1, %al
jne 0x2cebf5
jmp 0x2cec16
leaq 0x2bd1ab(%rip), %rdi    # 0x58bda7
callq 0x1213a0
movq %rax, 0x1b8(%rsp)
movq 0x1b8(%rsp), %rdi
callq 0x1213f0
movq 0x1d8(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x11dfa0
cmpq $0x0, %rax
jbe 0x2ceda2
movq 0x1d8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x1c0(%rsp), %rsi
callq 0xba630
movq %rax, 0x118(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xd7ce0
testb $0x1, %al
jne 0x2cece5
movq 0x1d8(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
movq 0x1c0(%rsp), %rsi
callq 0xd4e10
movq %rax, 0x110(%rsp)
cmpq $0x0, 0x110(%rsp)
jne 0x2ceca5
movb $0x1, 0x16f(%rsp)
jmp 0x2cecd8
movq 0x110(%rsp), %rdi
callq 0xd6a10
movl %eax, 0x10c(%rsp)
movl 0x10c(%rsp), %edi
callq 0xd4750
testb $0x1, %al
jne 0x2cecd6
movq 0x118(%rsp), %rdi
callq 0xba910
jmp 0x2cecd8
movq 0x110(%rsp), %rdi
callq 0xd6ae0
testb $0x1, 0x16f(%rsp)
jne 0x2ced7d
movq 0x118(%rsp), %rdi
movq 0x1c8(%rsp), %rsi
callq 0xbacf0
movq 0x118(%rsp), %rdi
callq 0xba760
movq 0x118(%rsp), %rdi
callq 0xba820
movq 0x118(%rsp), %rdi
callq 0xbaa10
movq 0x118(%rsp), %rdi
callq 0xba910
movq 0x118(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x11dee0
movq 0x88(%rsp), %rdi
movq %rax, %rsi
movq 0x1c0(%rsp), %rdx
callq 0xb7aa0
movq %rax, 0x128(%rsp)
movq 0x118(%rsp), %rdi
callq 0xb7e50
cmpq $0x0, 0x128(%rsp)
jne 0x2ced9d
movb $0x1, 0x16f(%rsp)
jmp 0x2cef93
movq $0x0, 0x100(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x1c0(%rsp), %rsi
callq 0xb82a0
movq %rax, 0x100(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xd7970
testb $0x1, %al
jne 0x2cede6
jmp 0x2cee00
movq 0x100(%rsp), %rdi
callq 0xb8d30
movq 0x100(%rsp), %rdi
callq 0xb8e80
cmpq $0x0, 0x100(%rsp)
jne 0x2cee13
movb $0x1, 0x16f(%rsp)
testb $0x1, 0x16f(%rsp)
jne 0x2cef73
movq 0x100(%rsp), %rdi
movq 0x1b8(%rsp), %rsi
callq 0xb8bb0
movq 0x100(%rsp), %rdi
movq 0x1c8(%rsp), %rsi
callq 0xb92b0
movq 0x100(%rsp), %rax
movq %rax, 0x78(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, 0x80(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x11dee0
movq 0x78(%rsp), %rdi
movq 0x80(%rsp), %rsi
movq %rax, %rdx
movq 0x1c0(%rsp), %rcx
callq 0xb9320
movl %eax, 0xfc(%rsp)
cmpl $0x0, 0xfc(%rsp)
je 0x2ceeb3
movb $0x1, 0x16f(%rsp)
testb $0x1, 0x16f(%rsp)
jne 0x2cef71
movq 0x1d8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x1c0(%rsp), %rsi
callq 0xba630
movq %rax, 0xf0(%rsp)
movq 0xf0(%rsp), %rdi
callq 0xba760
movq 0xf0(%rsp), %rdi
callq 0xba820
movq 0xf0(%rsp), %rdi
callq 0xbaa10
movq 0xf0(%rsp), %rdi
callq 0xba910
movq 0xf0(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x11dee0
movq 0x70(%rsp), %rdi
movq %rax, %rsi
movq 0x1c0(%rsp), %rdx
callq 0xb7aa0
movq %rax, 0x128(%rsp)
cmpq $0x0, 0x128(%rsp)
jne 0x2cef64
movb $0x1, 0x16f(%rsp)
movq 0xf0(%rsp), %rdi
callq 0xb7e50
jmp 0x2cef73
cmpq $0x0, 0x128(%rsp)
jne 0x2cef86
movb $0x1, 0x16f(%rsp)
movq 0x100(%rsp), %rdi
callq 0xb8b70
testb $0x1, 0x16f(%rsp)
jne 0x2cf023
movq 0x128(%rsp), %rdi
movq 0x1c8(%rsp), %rsi
xorl %edx, %edx
callq 0xb5bb0
cmpl $0x2, 0x124(%rsp)
je 0x2cefcc
cmpl $0x3, 0x124(%rsp)
jne 0x2cf021
movq 0x128(%rsp), %rdi
callq 0xb0f00
movq %rax, %rdi
callq 0x7f400
testb $0x1, %al
jne 0x2cf01f
movq 0x1c0(%rsp), %rdi
movl 0x124(%rsp), %ecx
leaq 0x272572(%rip), %rdx    # 0x54156d
leaq 0x27256f(%rip), %rax    # 0x541571
cmpl $0x2, %ecx
cmoveq %rax, %rdx
leaq 0x2bcdd1(%rip), %rsi    # 0x58bde1
movb $0x0, %al
callq 0xd88c0
movb $0x1, 0x16f(%rsp)
jmp 0x2cf021
jmp 0x2cf023
testb $0x1, 0x16f(%rsp)
jne 0x2cf093
movq 0x1d8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x25ce20
testb $0x1, %al
jne 0x2cf044
jmp 0x2cf093
movq 0x1d8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x25cdc0
testb $0x1, %al
jne 0x2cf093
movq 0x1d8(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
movq 0x1c8(%rsp), %rdx
movq 0x1c0(%rsp), %rcx
xorl %esi, %esi
callq 0x251340
cmpl $0x0, %eax
je 0x2cf091
movb $0x1, 0x16f(%rsp)
jmp 0x2cf093
movq 0x1d8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x25cc10
movl %eax, 0x168(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x18(%rax), %rsi
leaq 0xb8(%rsp), %rdi
callq 0x25ced0
leaq 0x130(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
movl $0x38, %edx
callq 0x19610
testb $0x1, 0x16f(%rsp)
jne 0x2cf22f
movq 0x1d8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x25cb50
testb $0x1, %al
jne 0x2cf147
movq 0x1d8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x25c9d0
testb $0x1, %al
jne 0x2cf147
movq 0x1d8(%rsp), %rax
testb $0x1, 0x3(%rax)
jne 0x2cf147
movq 0x1d8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x25c910
testb $0x1, %al
jne 0x2cf147
testb $0x1, 0x1e7(%rsp)
jne 0x2cf1ea
movq 0x128(%rsp), %rdi
callq 0xb0f00
movq %rax, %rdi
callq 0x7e8c0
movl %eax, 0xb4(%rsp)
movq 0x1d8(%rsp), %rax
movq %rax, 0x60(%rsp)
movl 0xb4(%rsp), %eax
movl %eax, 0x6c(%rsp)
movq 0x128(%rsp), %rdi
callq 0xa9d00
movq 0x60(%rsp), %rsi
movl 0x6c(%rsp), %edx
movq %rax, %rcx
movl 0x158(%rsp), %r8d
xorl %eax, %eax
movl $0x1, %edi
cmpl $0x0, %r8d
cmovel %edi, %eax
cmpl $0x0, %eax
setne %al
movq 0x1c8(%rsp), %r9
movq 0x1c0(%rsp), %r8
movq %rsp, %rdi
movq %r8, (%rdi)
movzbl %al, %r8d
andl $0x1, %r8d
leaq 0x168(%rsp), %rdi
callq 0x2cf750
cmpl $0x0, %eax
je 0x2cf1e8
movb $0x1, 0x16f(%rsp)
jmp 0x2cf22d
cmpl $0x0, 0x124(%rsp)
je 0x2cf22b
movq 0x1c0(%rsp), %rax
movq %rax, 0x58(%rsp)
movl 0x124(%rsp), %edi
callq 0x109990
movq 0x58(%rsp), %rdi
movq %rax, %rdx
leaq 0x2bcbf3(%rip), %rsi    # 0x58be0f
movb $0x0, %al
callq 0xd88c0
movb $0x1, 0x16f(%rsp)
jmp 0x2cf22d
jmp 0x2cf22f
movq $0x0, 0x170(%rsp)
movq $0x0, 0x178(%rsp)
movq $0x0, 0x1a8(%rsp)
movq $0x0, 0x180(%rsp)
movq $0x0, 0x188(%rsp)
movb $0x0, 0x198(%rsp)
movq $0x0, 0x1a0(%rsp)
movq $0x0, 0x1b0(%rsp)
movq $0x0, 0x190(%rsp)
testb $0x1, 0x16f(%rsp)
jne 0x2cf2f8
movl 0x168(%rsp), %esi
movq 0x128(%rsp), %rdx
movq 0x1d8(%rsp), %rcx
movb 0x166(%rsp), %r8b
movq 0x1d0(%rsp), %r9
movq 0x1c0(%rsp), %rax
leaq 0x170(%rsp), %rdi
andb $0x1, %r8b
movzbl %r8b, %r8d
movq %rax, (%rsp)
callq 0x2cf900
cmpl $0x0, %eax
je 0x2cf2f6
movb $0x1, 0x16f(%rsp)
jmp 0x2cf2f8
testb $0x1, 0x16f(%rsp)
jne 0x2cf4b5
movq 0x1d8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x25cb50
testb $0x1, %al
jne 0x2cf34c
movq 0x1d8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x25c9d0
testb $0x1, %al
jne 0x2cf34c
movq 0x1d8(%rsp), %rax
testb $0x1, 0x3(%rax)
jne 0x2cf34c
testb $0x1, 0x1e7(%rsp)
jne 0x2cf4b3
testb $0x1, 0x1e7(%rsp)
je 0x2cf443
movq 0x128(%rsp), %rax
movq %rax, 0x38(%rsp)
movl 0x124(%rsp), %eax
movl %eax, 0x44(%rsp)
movl 0x168(%rsp), %eax
movl %eax, 0x48(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x25cd70
movl %eax, 0x4c(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x25cd20
movq %rax, 0x50(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x25cf50
movq 0x38(%rsp), %rsi
movl 0x44(%rsp), %edx
movl 0x48(%rsp), %ecx
movl 0x4c(%rsp), %r8d
movq 0x50(%rsp), %r9
movb %al, %dil
movq 0x1b8(%rsp), %r11
movq 0x1d8(%rsp), %rax
movb 0x1(%rax), %r10b
movq 0x1c8(%rsp), %rbx
movq 0x1c0(%rsp), %r14
movq %rsp, %rax
movq %r14, 0x28(%rax)
movq %rbx, 0x20(%rax)
movq %r11, 0x10(%rax)
leaq 0x130(%rsp), %r11
movq %r11, 0x8(%rax)
movzbl %r10b, %r10d
andl $0x1, %r10d
movl %r10d, 0x18(%rax)
movzbl %dil, %edi
andl $0x1, %edi
movl %edi, (%rax)
leaq 0x170(%rsp), %rdi
callq 0x2cfc90
cmpl $0x0, %eax
je 0x2cf441
movb $0x1, 0x16f(%rsp)
jmp 0x2cf4b1
movb $0x0, 0x165(%rsp)
movq 0x1c8(%rsp), %rdi
movq 0x1b8(%rsp), %rsi
movq 0x1d8(%rsp), %rax
movb 0x1(%rax), %dl
movq 0x1d8(%rsp), %rcx
movl 0x168(%rsp), %r8d
movq 0x128(%rsp), %r9
movq 0x1c0(%rsp), %rax
leaq 0x130(%rsp), %r10
andb $0x1, %dl
movzbl %dl, %edx
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x2d0070
cmpl $0x0, %eax
je 0x2cf4af
movb $0x1, 0x16f(%rsp)
jmp 0x2cf4b1
jmp 0x2cf4b3
jmp 0x2cf4b5
testb $0x1, 0x16f(%rsp)
jne 0x2cf4ec
cmpq $0x0, 0x1b0(%rsp)
je 0x2cf4ec
movq 0x1b0(%rsp), %rdi
movq 0x1c0(%rsp), %rsi
callq 0x23ed70
cmpl $0x0, %eax
je 0x2cf4ec
movb $0x1, 0x16f(%rsp)
movq 0x170(%rsp), %rdi
callq 0xd9390
movq 0x178(%rsp), %rdi
callq 0xd9390
movq 0x180(%rsp), %rdi
callq 0xd9390
testb $0x1, 0x16f(%rsp)
jne 0x2cf643
cmpq $0x0, 0x1a8(%rsp)
jne 0x2cf552
movq $0x0, 0xa0(%rsp)
movq $0x0, 0xa8(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x98(%rsp)
jmp 0x2cf5c1
movq 0x1a8(%rsp), %rdi
callq 0x2c6af0
movq %rax, 0xa8(%rsp)
movq 0x1a8(%rsp), %rdi
callq 0x2c6bb0
movq %rax, 0xa0(%rsp)
movq 0x1a8(%rsp), %rdi
callq 0x2c6b30
movaps 0x2493a0(%rip), %xmm2   # 0x518930
movq 0x188(%rsp), %xmm1
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x24939b(%rip), %xmm2   # 0x518940
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x98(%rsp)
movq 0x1d8(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
movl 0x124(%rsp), %esi
movq 0x128(%rsp), %rdx
movq 0x188(%rsp), %rcx
movl 0x168(%rsp), %r8d
movq 0xa8(%rsp), %r9
movsd 0x98(%rsp), %xmm0
movq 0xa0(%rsp), %r11
leaq 0x170(%rsp), %r10
addq $0x28, %r10
movq 0x1c0(%rsp), %rax
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x4e4b60
cmpl $0x0, %eax
je 0x2cf641
movb $0x1, 0x16f(%rsp)
jmp 0x2cf643
movq 0x1a8(%rsp), %rdi
callq 0x2c64d0
movq 0x1b0(%rsp), %rdi
movq 0x1d0(%rsp), %rsi
callq 0x23edd0
movq 0x128(%rsp), %rdi
callq 0xae070
movq $0x0, 0x128(%rsp)
testb $0x1, 0x16f(%rsp)
jne 0x2cf6f3
movq 0x1d8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x25ce20
testb $0x1, %al
jne 0x2cf69f
jmp 0x2cf6f3
movq 0x1d8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x25cdc0
testb $0x1, %al
jne 0x2cf6b6
jmp 0x2cf6f3
movq 0x1d8(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
movq 0x1c8(%rsp), %rdx
movq 0x1c0(%rsp), %rcx
movl $0x1, %esi
callq 0x251340
cmpl $0x0, %eax
je 0x2cf6f1
movb $0x1, 0x16f(%rsp)
jmp 0x2cf6f3
cmpq $0x0, 0x1b8(%rsp)
je 0x2cf722
movq 0x1b8(%rsp), %rdi
movq 0x36c82b(%rip), %rax    # 0x63bf38
movq (%rax), %rsi
callq 0x121d70
movq 0x1b8(%rsp), %rdi
callq 0x121f00
movb 0x16f(%rsp), %dl
xorl %eax, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
testb $0x1, %dl
cmovnel %ecx, %eax
addq $0x1e8, %rsp            # imm = 0x1E8
popq %rbx
popq %r14
retq
nopw %cs:(%rax,%rax)