// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/randomcodes.c
// Function: storerandomcodes_getencseqkmers_twobitencoding
int storerandomcodes_getencseqkmers_twobitencoding(const GtEncseq *encseq,
    unsigned int bucketkeysize,
    unsigned int numofparts,
    GtUword maximumspace,
    unsigned int sortingdepth,
    unsigned int skipshorter,
    bool usefirstcodes,
    unsigned int sampling_factor,
    bool withsuftabcheck,
    bool onlyaccumulation,
    bool onlyallrandomcodes,
    GT_UNUSED
    unsigned int addbscache_depth,
    GtUword phase2extra,
    GT_UNUSED bool radixsmall,      /* set to true */
    GT_UNUSED unsigned int radixparts, /* set to 2U */
    GtRandomcodesintervalprocess
    itvprocess,
    GtRandomcodesintervalprocess_end
    itvprocess_end,
    void *itvprocessdatatab,
    GtLogger *logger,
    GtTimer *timer,
    GtError *err)
{
  GtRandomcodesinfo fci;
  size_t suftab_size = 0;
  unsigned int part, threadcount;
  GtUword maxbucketsize, suftabentries = 0, largest_width,
                totallength = gt_encseq_total_length(encseq),
                maxseqlength = gt_encseq_max_seq_length(encseq);
  GtSfxmappedrangelist *sfxmrlist = NULL;
  GtSuftabparts_rc *suftabparts_rc = NULL;
  GtShortreadsortworkinfo **srswtab = NULL;
  const GtReadmode readmode = GT_READMODE_FORWARD;
  bool haserr = false;
#ifdef GT_THREADS_ENABLED
  const unsigned int threads = gt_jobs;
#else
  const unsigned int threads = 1U;
#endif

  if (maxseqlength < (GtUword)skipshorter)
  {
    return 0;
  }
  if (gt_randomcodes_init(&fci,
                         encseq,
                         withsuftabcheck,
                         skipshorter,
                         err) != 0)
  {
    haserr = true;
  }
  if (!haserr)
  {
    sfxmrlist = gt_Sfxmappedrangelist_new();
    if (gt_randomcodes_collectcodes(&fci,
                               usefirstcodes,
                               sampling_factor,
                               encseq,
                               readmode,
                               bucketkeysize,
                               (size_t)maximumspace,
                               logger,
                               timer,
                               err) != 0)
    {
      haserr = true;
    }
  }
  if (!haserr)
  {
    if (fci.differentcodes > 0 && onlyallrandomcodes)
    {
      run_allcodes_distribution(fci.allrandomcodes, fci.differentcodes);
      gt_free(fci.allrandomcodes);
      fci.allrandomcodes = NULL;
      gt_randomcodes_countocc_delete(fci.fcsl, &fci.tab);
      gt_firstcodes_spacelog_delete(fci.fcsl);
      gt_seqnumrelpos_delete(fci.buf.snrp);
      gt_Sfxmappedrangelist_delete(sfxmrlist);
      return 0;
    }
    fci.flushcount = 0;
    fci.codebuffer_total = 0;
    gt_randomcodes_fillbinsearchcache(&fci, addbscache_depth);
    if (gt_randomcodes_allocspace(&fci,
                                 numofparts,
                                 maximumspace,
                                 phase2extra,
                                 err) != 0)
    {
      haserr = true;
    }
  }
  fci.buf.nextfree = 0;
  if (!haserr)
  {
    gt_randomcodes_accumulatecounts_run(&fci,
                                       encseq,
                                       bucketkeysize,
                                       skipshorter,
                                       logger,
                                       timer);
    maxbucketsize = gt_randomcodes_partialsums(fci.fcsl, &fci.tab,
        fci.total_count);
    gt_logger_log(logger, "maximum space after computing partial sums: %.2f MB",
                  GT_MEGABYTES(gt_firstcodes_spacelog_total(fci.fcsl)));
    gt_logger_log(logger, "maxbucketsize=" GT_WU "", maxbucketsize);
    gt_randomcodes_map_sections(&fci, sfxmrlist);
    if (numofparts == 0 || maximumspace > 0)
    {
      int retval = gt_randomcodes_auto_parts(&fci,
                                            sfxmrlist,
                                            numofparts,
                                            &maximumspace,
                                            maxbucketsize,
                                            sortingdepth,
                                            totallength,
                                            maxseqlength,
                                            fci.total_count,
                                            phase2extra,
                                            err);
      if (retval < 0)
      {
        haserr = true;
      } else
      {
        numofparts = (unsigned int) retval;
      }
    }
  }
  if (!haserr)
  {
    gt_assert(numofparts > 0);
    suftabparts_rc = gt_suftabparts_rc_new(numofparts,
                                     NULL,
                                     &fci.tab,
                                     sfxmrlist,
                                     fci.total_count,
                                     0,
                                     logger);
    gt_assert(suftabparts_rc != NULL);
    gt_suftabparts_rc_showallrecords(suftabparts_rc, true);
    gt_Sfxmappedrangelist_delete(sfxmrlist);
    sfxmrlist = NULL;
    gt_randomcodes_samples_delete(fci.fcsl, &fci.tab);
    gt_assert(fci.buf.nextfree == 0);
    gt_assert(fci.mappedleftborder != NULL);
    gt_Sfxmappedrange_usetmp(fci.mappedleftborder,
        gt_randomcodes_outfilenameleftborder(&fci.tab),
        (void **)
        gt_randomcodes_leftborder_address(&fci.tab),
        gt_randomcodes_leftborder_entries(&fci.tab),
        true);
    if (gt_suftabparts_rc_numofparts(suftabparts_rc) > 1U)
    {
      gt_assert(fci.allrandomcodes != NULL);
      gt_assert(fci.mappedallrandomcodes != NULL);
      gt_Sfxmappedrange_storetmp_ulong(fci.mappedallrandomcodes,
          &fci.allrandomcodes, false);
      GT_FCI_SUBTRACTSPLITSPACE(fci.fcsl, "allrandomcodes");
      gt_assert(fci.allrandomcodes == NULL);
    } else
    {
      gt_Sfxmappedrange_delete(fci.mappedallrandomcodes);
      fci.mappedallrandomcodes = NULL;
    }
    largest_width = gt_suftabparts_rc_largest_width(suftabparts_rc);
    fci.spmsuftab = gt_spmsuftab_new(largest_width,
                                     totallength,
                                     fci.bitsforposref,
                                     logger);
    suftab_size = gt_spmsuftab_requiredspace(largest_width, totallength,
                                             fci.bitsforposref);
    GT_FCI_ADDWORKSPACE(fci.fcsl, "suftab", suftab_size);
    fci.buf.flush_function = gt_randomcodes_insertsuffixes_flush;
    srswtab = gt_malloc(sizeof (*srswtab) * threads);
    for (threadcount = 0; threadcount < threads; threadcount++)
    {
      srswtab[threadcount]
        = gt_shortreadsort_new(maxbucketsize, maxseqlength - bucketkeysize,
                               readmode, true, false);
    }
    GT_FCI_ADDWORKSPACE(fci.fcsl, "shortreadsort",
                        threads * gt_shortreadsort_size(true, maxbucketsize,
                                                  maxseqlength-bucketkeysize));
    gt_randomcodes_allocsize_for_insertion(&fci,
                                          maximumspace,
                                          suftabparts_rc,
                                          phase2extra);
    if (!onlyaccumulation)
    {
      fci.radixsort_codepos = gt_radixsort_new_ulongpair(fci.buf.allocated);
      GT_FCI_ADDWORKSPACE(fci.fcsl, "radixsort_codepos",
                          gt_radixsort_size(fci.radixsort_codepos));
      fci.buf.spaceGtUwordPair
        = gt_radixsort_space_ulongpair(fci.radixsort_codepos);
    }
    fci.codebuffer_total = 0;
    fci.flushcount = 0;
    for (part = 0; !haserr && !onlyaccumulation &&
                   part < gt_suftabparts_rc_numofparts(suftabparts_rc); part++)
    {
      if (gt_randomcodes_process_part(&fci,
                                     encseq,
                                     readmode,
                                     bucketkeysize,
                                     sortingdepth,
                                     skipshorter,
                                     suftabparts_rc,
                                     part,
                                     maximumspace,
                                     threads,
                                     fci.total_count,
                                     withsuftabcheck,
                                     srswtab,
                                     itvprocess,
                                     itvprocess_end,
                                     itvprocessdatatab,
                                     logger,
                                     timer,
                                     err) != 0)
      {
        haserr = true;
      }
    }
  }
  gt_log_log("suftabentries=" GT_WU "", suftabentries);
  if (timer != NULL)
  {
    gt_timer_show_progress(timer, "cleaning up", stdout);
  }
  if (!haserr)
  {
    GT_FCI_SUBTRACTWORKSPACE(fci.fcsl, "shortreadsort");
  }
  if (!haserr && !onlyaccumulation && srswtab != NULL)
  {
    GtUword sumofstoredvalues = 0;

    for (threadcount=0; threadcount<threads; threadcount++)
    {
      sumofstoredvalues +=
        gt_shortreadsort_sumofstoredvalues(srswtab[threadcount]);
    }
    gt_logger_log(logger, "average short read depth is %.2f",
                      (double) sumofstoredvalues/fci.total_inserted);
  }
  if (!haserr)
  {
    if (!onlyaccumulation)
    {
      gt_assert(fci.flushcount > 0);
      gt_logger_log(logger,
                    "total inserted=" GT_WU " (%.3f%% of all suffixes), "
                    "%u rounds (avg length " GT_WU ")", fci.total_inserted,
                    100.0 * (double) fci.total_inserted/totallength,
                    fci.flushcount, fci.codebuffer_total/fci.flushcount);
      gt_assert(fci.total_inserted == fci.total_count);
    } else
    {
      gt_randomcodes_delete_before_end(&fci);
    }
  }
  if (srswtab != NULL)
  {
    for (threadcount=0; threadcount<threads; threadcount++)
    {
      gt_shortreadsort_delete(srswtab[threadcount]);
    }
    gt_free(srswtab);
  }
  if (haserr)
  {
    gt_randomcodes_delete_before_end(&fci);
    gt_free(fci.allrandomcodes);
    fci.allrandomcodes = NULL;
    gt_Sfxmappedrangelist_delete(sfxmrlist);
    fci.buf.spaceGtUword = NULL;
    gt_radixsort_delete(fci.radixsort_code);
  }
  gt_suftabparts_rc_delete(suftabparts_rc);
  gt_randomcodes_countocc_delete(fci.fcsl, &fci.tab);
  gt_randomcodes_tab_delete(fci.fcsl, &fci.tab);
  if (fci.spmsuftab != NULL)
  {
    gt_spmsuftab_delete(fci.spmsuftab);
    GT_FCI_SUBTRACTWORKSPACE(fci.fcsl, "suftab");
    fci.spmsuftab = NULL;
  }
  if (fci.mappedallrandomcodes == NULL && fci.allrandomcodes != NULL)
  {
    gt_free(fci.allrandomcodes);
    fci.allrandomcodes = NULL;
    GT_FCI_SUBTRACTSPLITSPACE(fci.fcsl, "allrandomcodes");
  }
  gt_Sfxmappedrange_delete(fci.mappedleftborder);
  gt_Sfxmappedrange_delete(fci.mappedallrandomcodes);
  gt_seqnumrelpos_delete(fci.buf.snrp);
  gt_firstcodes_spacelog_stop_diff(fci.fcsl);
  GT_FCI_SUBTRACTWORKSPACE(fci.fcsl, "encseq");
  gt_firstcodes_spacelog_delete(fci.fcsl);
  return haserr ? -1 : 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x318, %rsp            # imm = 0x318
movq %rcx, %r10
movl %edx, %r11d
movl %esi, %ebx
movq %rdi, %r14
movq 0x3c0(%rsp), %rax
movq 0x3b8(%rsp), %rax
movq 0x3b0(%rsp), %rax
movq 0x3a8(%rsp), %rax
movq 0x3a0(%rsp), %rax
movq 0x398(%rsp), %rax
movl 0x390(%rsp), %eax
movb 0x388(%rsp), %al
movq 0x380(%rsp), %rcx
movl 0x378(%rsp), %ecx
movb 0x370(%rsp), %cl
movb 0x368(%rsp), %dl
movb 0x360(%rsp), %sil
movl 0x358(%rsp), %edi
movb 0x350(%rsp), %dil
movq %r14, 0x308(%rsp)
movl %ebx, 0x304(%rsp)
movl %r11d, 0x300(%rsp)
movq %r10, 0x2f8(%rsp)
movl %r8d, 0x2f4(%rsp)
movl %r9d, 0x2f0(%rsp)
andb $0x1, %dil
movb %dil, 0x2ef(%rsp)
andb $0x1, %sil
movb %sil, 0x2ee(%rsp)
andb $0x1, %dl
movb %dl, 0x2ed(%rsp)
andb $0x1, %cl
movb %cl, 0x2ec(%rsp)
andb $0x1, %al
movb %al, 0x2eb(%rsp)
movq $0x0, 0x138(%rsp)
movq $0x0, 0x120(%rsp)
movq 0x308(%rsp), %rdi
callq 0xa9d00
movq %rax, 0x110(%rsp)
movq 0x308(%rsp), %rdi
callq 0xb10b0
movq %rax, 0x108(%rsp)
movq $0x0, 0x100(%rsp)
movq $0x0, 0xf8(%rsp)
movq $0x0, 0xf0(%rsp)
movl $0x0, 0xec(%rsp)
movb $0x0, 0xeb(%rsp)
leaq 0x3d0836(%rip), %rax    # 0x63d378
movl (%rax), %eax
movl %eax, 0xe4(%rsp)
movq 0x108(%rsp), %rax
movl 0x2f0(%rsp), %ecx
cmpq %rcx, %rax
jae 0x26cb6f
movl $0x0, 0x314(%rsp)
jmp 0x26dbea
movq 0x308(%rsp), %rsi
movb 0x2ee(%rsp), %al
movl 0x2f0(%rsp), %ecx
movq 0x3c0(%rsp), %r8
leaq 0x140(%rsp), %rdi
andb $0x1, %al
movzbl %al, %edx
callq 0x26dc10
cmpl $0x0, %eax
je 0x26cbac
movb $0x1, 0xeb(%rsp)
testb $0x1, 0xeb(%rsp)
jne 0x26cc40
callq 0x2ccb30
movq %rax, 0x100(%rsp)
movb 0x2ef(%rsp), %sil
movl 0x358(%rsp), %edx
movq 0x308(%rsp), %rcx
movl 0x304(%rsp), %r9d
movq 0x2f8(%rsp), %rbx
movq 0x3b0(%rsp), %r11
movq 0x3b8(%rsp), %r10
movq 0x3c0(%rsp), %rax
leaq 0x140(%rsp), %rdi
xorl %r8d, %r8d
andb $0x1, %sil
movzbl %sil, %esi
movq %rbx, (%rsp)
movq %r11, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movq %rax, 0x18(%rsp)
callq 0x26df00
cmpl $0x0, %eax
je 0x26cc3e
movb $0x1, 0xeb(%rsp)
jmp 0x26cc40
testb $0x1, 0xeb(%rsp)
jne 0x26cd5e
cmpq $0x0, 0x178(%rsp)
jbe 0x26ccf8
testb $0x1, 0x2ec(%rsp)
je 0x26ccf8
movq 0x1e0(%rsp), %rdi
movq 0x178(%rsp), %rsi
callq 0x26e5d0
movq 0x1e0(%rsp), %rdi
leaq 0x311e46(%rip), %rsi    # 0x57ead5
movl $0x619, %edx            # imm = 0x619
callq 0xe88c0
movq $0x0, 0x1e0(%rsp)
movq 0x1e8(%rsp), %rdi
leaq 0x140(%rsp), %rsi
addq $0x110, %rsi            # imm = 0x110
callq 0x4dbec0
movq 0x1e8(%rsp), %rdi
callq 0x4bea00
movq 0x238(%rsp), %rdi
callq 0x2b11b0
movq 0x100(%rsp), %rdi
callq 0x2ccdf0
movl $0x0, 0x314(%rsp)
jmp 0x26dbea
movl $0x0, 0x1b0(%rsp)
movq $0x0, 0x160(%rsp)
movl 0x378(%rsp), %esi
leaq 0x140(%rsp), %rdi
callq 0x26e800
movl 0x300(%rsp), %esi
movq 0x2f8(%rsp), %rdx
movq 0x380(%rsp), %rcx
movq 0x3c0(%rsp), %r8
leaq 0x140(%rsp), %rdi
callq 0x26ea80
cmpl $0x0, %eax
je 0x26cd5c
movb $0x1, 0xeb(%rsp)
jmp 0x26cd5e
movq $0x0, 0x200(%rsp)
testb $0x1, 0xeb(%rsp)
jne 0x26cf23
movq 0x308(%rsp), %rsi
movl 0x304(%rsp), %edx
movl 0x2f0(%rsp), %ecx
movq 0x3b0(%rsp), %r8
movq 0x3b8(%rsp), %r9
leaq 0x140(%rsp), %rdi
callq 0x26ec90
movq 0x140(%rsp), %rdx
movq 0x1e8(%rsp), %rdi
leaq 0x250(%rsp), %rsi
callq 0x4dae30
movq %rax, 0x128(%rsp)
movq 0x3b0(%rsp), %rax
movq %rax, 0xd0(%rsp)
movq 0x1e8(%rsp), %rdi
callq 0x4be8b0
movq 0xd0(%rsp), %rdi
movq %rax, %xmm0
movaps 0x2abb2f(%rip), %xmm1   # 0x518930
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x2abb33(%rip), %xmm1   # 0x518940
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x2abafc(%rip), %xmm1   # 0x518920
divsd %xmm1, %xmm0
leaq 0x30b3fc(%rip), %rsi    # 0x57822b
movb $0x1, %al
callq 0xe7cd0
movq 0x3b0(%rsp), %rdi
movq 0x128(%rsp), %rdx
leaq 0x30b412(%rip), %rsi    # 0x57825f
movb $0x0, %al
callq 0xe7cd0
movq 0x100(%rsp), %rsi
leaq 0x140(%rsp), %rdi
callq 0x26f170
cmpl $0x0, 0x300(%rsp)
je 0x26ce82
cmpq $0x0, 0x2f8(%rsp)
jbe 0x26cf21
movq 0x100(%rsp), %rsi
movl 0x300(%rsp), %edx
movq 0x128(%rsp), %r8
movl 0x2f4(%rsp), %r9d
movq 0x110(%rsp), %r14
movq 0x108(%rsp), %rbx
movq 0x140(%rsp), %r11
movq 0x380(%rsp), %r10
movq 0x3c0(%rsp), %rax
leaq 0x140(%rsp), %rdi
leaq 0x2f8(%rsp), %rcx
movq %r14, (%rsp)
movq %rbx, 0x8(%rsp)
movq %r11, 0x10(%rsp)
movq %r10, 0x18(%rsp)
movq %rax, 0x20(%rsp)
callq 0x26f230
movl %eax, 0xe0(%rsp)
cmpl $0x0, 0xe0(%rsp)
jge 0x26cf11
movb $0x1, 0xeb(%rsp)
jmp 0x26cf1f
movl 0xe0(%rsp), %eax
movl %eax, 0x300(%rsp)
jmp 0x26cf21
jmp 0x26cf23
testb $0x1, 0xeb(%rsp)
jne 0x26d6c7
jmp 0x26cf33
cmpl $0x0, 0x300(%rsp)
ja 0x26cf75
movq 0x3cf05c(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2a90c5(%rip), %rsi    # 0x516013
leaq 0x34d3da(%rip), %rdx    # 0x5ba32f
leaq 0x311bf5(%rip), %rcx    # 0x57eb51
leaq 0x311b72(%rip), %r8     # 0x57ead5
movl $0x654, %r9d            # imm = 0x654
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x26cf77
movl 0x300(%rsp), %edi
leaq 0x140(%rsp), %rdx
addq $0x110, %rdx            # imm = 0x110
movq 0x100(%rsp), %rcx
movq 0x140(%rsp), %r8
movq 0x3b0(%rsp), %rax
xorl %esi, %esi
movl %esi, %r9d
movq %r9, %rsi
movq %rax, (%rsp)
callq 0x4d9760
movq %rax, 0xf8(%rsp)
cmpq $0x0, 0xf8(%rsp)
jne 0x26d001
movq 0x3cefd0(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2a9039(%rip), %rsi    # 0x516013
leaq 0x311b9f(%rip), %rdx    # 0x57eb80
leaq 0x311b69(%rip), %rcx    # 0x57eb51
leaq 0x311ae6(%rip), %r8     # 0x57ead5
movl $0x65c, %r9d            # imm = 0x65C
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x26d003
movq 0xf8(%rsp), %rdi
movl $0x1, %esi
callq 0x4d92b0
movq 0x100(%rsp), %rdi
callq 0x2ccdf0
movq $0x0, 0x100(%rsp)
movq 0x1e8(%rsp), %rdi
leaq 0x140(%rsp), %rsi
addq $0x110, %rsi            # imm = 0x110
callq 0x4dbe40
cmpq $0x0, 0x200(%rsp)
je 0x26d08d
movq 0x3cef44(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2a8fad(%rip), %rsi    # 0x516013
leaq 0x30b2a7(%rip), %rdx    # 0x578314
leaq 0x311add(%rip), %rcx    # 0x57eb51
leaq 0x311a5a(%rip), %r8     # 0x57ead5
movl $0x661, %r9d            # imm = 0x661
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x26d08f
jmp 0x26d091
cmpq $0x0, 0x1d0(%rsp)
jne 0x26d0d4
movq 0x3ceefd(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2a8f66(%rip), %rsi    # 0x516013
leaq 0x311ae3(%rip), %rdx    # 0x57eb97
leaq 0x311a96(%rip), %rcx    # 0x57eb51
leaq 0x311a13(%rip), %r8     # 0x57ead5
movl $0x662, %r9d            # imm = 0x662
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x26d0d6
movq 0x1d0(%rsp), %rax
movq %rax, 0xb8(%rsp)
leaq 0x140(%rsp), %rdi
addq $0x110, %rdi            # imm = 0x110
callq 0x4dc100
movq %rax, 0xc0(%rsp)
leaq 0x140(%rsp), %rdi
addq $0x110, %rdi            # imm = 0x110
callq 0x4dc0d0
movq %rax, 0xc8(%rsp)
leaq 0x140(%rsp), %rdi
addq $0x110, %rdi            # imm = 0x110
callq 0x4dbb40
movq 0xb8(%rsp), %rdi
movq 0xc0(%rsp), %rsi
movq 0xc8(%rsp), %rdx
movq %rax, %rcx
movl $0x1, %r8d
callq 0x2cc190
movq 0xf8(%rsp), %rdi
callq 0x4da690
cmpl $0x1, %eax
jbe 0x26d291
jmp 0x26d170
cmpq $0x0, 0x1e0(%rsp)
jne 0x26d1b3
movq 0x3cee1e(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2a8e87(%rip), %rsi    # 0x516013
leaq 0x311a21(%rip), %rdx    # 0x57ebb4
leaq 0x3119b7(%rip), %rcx    # 0x57eb51
leaq 0x311934(%rip), %r8     # 0x57ead5
movl $0x66b, %r9d            # imm = 0x66B
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x26d1b5
jmp 0x26d1b7
cmpq $0x0, 0x1d8(%rsp)
jne 0x26d1fa
movq 0x3cedd7(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2a8e40(%rip), %rsi    # 0x516013
leaq 0x3119f5(%rip), %rdx    # 0x57ebcf
leaq 0x311970(%rip), %rcx    # 0x57eb51
leaq 0x3118ed(%rip), %r8     # 0x57ead5
movl $0x66c, %r9d            # imm = 0x66C
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x26d1fc
movq 0x1d8(%rsp), %rdi
leaq 0x140(%rsp), %rsi
addq $0xa0, %rsi
xorl %edx, %edx
callq 0x2cbd60
movq 0x1e8(%rsp), %rdi
movl $0x66f, %esi            # imm = 0x66F
leaq 0x3118a7(%rip), %rdx    # 0x57ead5
xorl %r9d, %r9d
leaq 0x2bbf4c(%rip), %r8     # 0x529184
xorl %eax, %eax
movl %r9d, %ecx
movq $0x0, (%rsp)
callq 0x4bea60
cmpq $0x0, 0x1e0(%rsp)
je 0x26d28d
movq 0x3ced44(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2a8dad(%rip), %rsi    # 0x516013
leaq 0x311983(%rip), %rdx    # 0x57ebf0
leaq 0x3118dd(%rip), %rcx    # 0x57eb51
leaq 0x31185a(%rip), %r8     # 0x57ead5
movl $0x670, %r9d            # imm = 0x670
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x26d28f
jmp 0x26d2aa
movq 0x1d8(%rsp), %rdi
callq 0x2cca80
movq $0x0, 0x1d8(%rsp)
movq 0xf8(%rsp), %rdi
callq 0x4da5f0
movq %rax, 0x118(%rsp)
movq 0x118(%rsp), %rdi
movq 0x110(%rsp), %rsi
movl 0x1b4(%rsp), %edx
movq 0x3b0(%rsp), %rcx
callq 0x2eeba0
movq %rax, 0x1c8(%rsp)
movq 0x118(%rsp), %rdi
movq 0x110(%rsp), %rsi
movl 0x1b4(%rsp), %edx
callq 0x2eece0
movq %rax, 0x138(%rsp)
movq 0x1e8(%rsp), %rdi
movq 0x138(%rsp), %rax
movl $0x67d, %esi            # imm = 0x67D
leaq 0x3117aa(%rip), %rdx    # 0x57ead5
movl $0x1, %r9d
leaq 0x34a27e(%rip), %r8     # 0x5b75b6
movl %r9d, %ecx
movq %rax, (%rsp)
callq 0x4bea60
leaq 0x2175(%rip), %rax      # 0x26f4c0
movq %rax, 0x220(%rsp)
movl 0xe4(%rsp), %eax
movl %eax, %edi
shlq $0x3, %rdi
leaq 0x31176e(%rip), %rsi    # 0x57ead5
movl $0x67f, %edx            # imm = 0x67F
callq 0xe80f0
movq %rax, 0xf0(%rsp)
movl $0x0, 0x130(%rsp)
movl 0x130(%rsp), %eax
cmpl 0xe4(%rsp), %eax
jae 0x26d3e7
movq 0x128(%rsp), %rdi
movq 0x108(%rsp), %rsi
movl 0x304(%rsp), %eax
subq %rax, %rsi
xorl %r8d, %r8d
movl $0x1, %ecx
movl %r8d, %edx
callq 0x2da6d0
movq %rax, %rdx
movq 0xf0(%rsp), %rax
movl 0x130(%rsp), %ecx
movq %rdx, (%rax,%rcx,8)
movl 0x130(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x130(%rsp)
jmp 0x26d384
movq 0x1e8(%rsp), %rax
movq %rax, 0xa8(%rsp)
movl 0xe4(%rsp), %eax
movq %rax, 0xb0(%rsp)
movq 0x128(%rsp), %rsi
movq 0x108(%rsp), %rdx
movl 0x304(%rsp), %eax
subq %rax, %rdx
movl $0x1, %edi
callq 0x2da5b0
movq 0xa8(%rsp), %rdi
movq %rax, %rcx
movq 0xb0(%rsp), %rax
imulq %rcx, %rax
movl $0x688, %esi            # imm = 0x688
leaq 0x311688(%rip), %rdx    # 0x57ead5
movl $0x1, %r9d
leaq 0x30dc8c(%rip), %r8     # 0x57b0e6
movl %r9d, %ecx
movq %rax, (%rsp)
callq 0x4bea60
movq 0x2f8(%rsp), %rsi
movq 0xf8(%rsp), %rdx
movq 0x380(%rsp), %rcx
leaq 0x140(%rsp), %rdi
callq 0x26f660
testb $0x1, 0x2ed(%rsp)
jne 0x26d509
movq 0x208(%rsp), %rdi
callq 0x100820
movq %rax, 0x1c0(%rsp)
movq 0x1e8(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0x1c0(%rsp), %rdi
callq 0x1008d0
movq 0xa0(%rsp), %rdi
movl $0x691, %esi            # imm = 0x691
leaq 0x3115fa(%rip), %rdx    # 0x57ead5
movl $0x1, %r9d
leaq 0x30ae42(%rip), %r8     # 0x57832a
movl %r9d, %ecx
movq %rax, (%rsp)
callq 0x4bea60
movq 0x1c0(%rsp), %rdi
callq 0x101900
movq %rax, 0x228(%rsp)
movq $0x0, 0x160(%rsp)
movl $0x0, 0x1b0(%rsp)
movl $0x0, 0x134(%rsp)
xorl %eax, %eax
testb $0x1, 0xeb(%rsp)
movb %al, 0x9f(%rsp)
jne 0x26d581
xorl %eax, %eax
testb $0x1, 0x2ed(%rsp)
movb %al, 0x9f(%rsp)
jne 0x26d581
movl 0x134(%rsp), %eax
movl %eax, 0x98(%rsp)
movq 0xf8(%rsp), %rdi
callq 0x4da690
movl %eax, %ecx
movl 0x98(%rsp), %eax
cmpl %ecx, %eax
setb %al
movb %al, 0x9f(%rsp)
movb 0x9f(%rsp), %al
testb $0x1, %al
jne 0x26d591
jmp 0x26d6c5
movq 0x308(%rsp), %rsi
movl 0x304(%rsp), %ecx
movl 0x2f4(%rsp), %r8d
movl 0x2f0(%rsp), %r9d
movq 0xf8(%rsp), %rax
movl 0x134(%rsp), %edx
movl %edx, 0x7c(%rsp)
movq 0x2f8(%rsp), %rdx
movq %rdx, 0x80(%rsp)
movl 0xe4(%rsp), %edx
movl %edx, 0x8c(%rsp)
movq 0x140(%rsp), %r13
movb 0x2ee(%rsp), %bpl
movq 0xf0(%rsp), %r12
movq 0x398(%rsp), %r15
movq 0x3a0(%rsp), %r14
movq 0x3a8(%rsp), %rbx
movq 0x3b0(%rsp), %r11
movq 0x3b8(%rsp), %r10
movq 0x3c0(%rsp), %rdx
movq %rdx, 0x90(%rsp)
leaq 0x140(%rsp), %rdi
xorl %edx, %edx
andb $0x1, %bpl
movq %rax, (%rsp)
movl 0x7c(%rsp), %eax
movl %eax, 0x8(%rsp)
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rsp)
movl 0x8c(%rsp), %eax
movl %eax, 0x18(%rsp)
movq 0x90(%rsp), %rax
movq %r13, 0x20(%rsp)
movzbl %bpl, %ebp
movl %ebp, 0x28(%rsp)
movq %r12, 0x30(%rsp)
movq %r15, 0x38(%rsp)
movq %r14, 0x40(%rsp)
movq %rbx, 0x48(%rsp)
movq %r11, 0x50(%rsp)
movq %r10, 0x58(%rsp)
movq %rax, 0x60(%rsp)
callq 0x26f780
cmpl $0x0, %eax
je 0x26d6ad
movb $0x1, 0xeb(%rsp)
jmp 0x26d6af
movl 0x134(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x134(%rsp)
jmp 0x26d52b
jmp 0x26d6c7
movq 0x120(%rsp), %rsi
leaq 0x311535(%rip), %rdi    # 0x57ec0b
movb $0x0, %al
callq 0xe7740
cmpq $0x0, 0x3b8(%rsp)
je 0x26d706
movq 0x3b8(%rsp), %rdi
movq 0x3ce841(%rip), %rax    # 0x63bf38
movq (%rax), %rdx
leaq 0x30ac3b(%rip), %rsi    # 0x57833c
callq 0x121930
testb $0x1, 0xeb(%rsp)
jne 0x26d742
movq 0x1e8(%rsp), %rdi
movl $0x6b9, %esi            # imm = 0x6B9
leaq 0x3113b1(%rip), %rdx    # 0x57ead5
xorl %ecx, %ecx
leaq 0x30d9b9(%rip), %r8     # 0x57b0e6
movl $0x1, %r9d
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x4bea60
testb $0x1, 0xeb(%rsp)
jne 0x26d830
testb $0x1, 0x2ed(%rsp)
jne 0x26d830
cmpq $0x0, 0xf0(%rsp)
je 0x26d830
movq $0x0, 0xd8(%rsp)
movl $0x0, 0x130(%rsp)
movl 0x130(%rsp), %eax
cmpl 0xe4(%rsp), %eax
jae 0x26d7cf
movq 0xf0(%rsp), %rax
movl 0x130(%rsp), %ecx
movq (%rax,%rcx,8), %rdi
callq 0x2daa50
addq 0xd8(%rsp), %rax
movq %rax, 0xd8(%rsp)
movl 0x130(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x130(%rsp)
jmp 0x26d784
movq 0x3b0(%rsp), %rdi
movq 0xd8(%rsp), %xmm0
movaps 0x2ab149(%rip), %xmm3   # 0x518930
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x2ab14d(%rip), %xmm2   # 0x518940
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq 0x148(%rsp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
leaq 0x30ab1f(%rip), %rsi    # 0x578348
movb $0x1, %al
callq 0xe7cd0
testb $0x1, 0xeb(%rsp)
jne 0x26d98a
testb $0x1, 0x2ed(%rsp)
jne 0x26d97b
jmp 0x26d84e
cmpl $0x0, 0x1b0(%rsp)
ja 0x26d890
movq 0x3ce741(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2a87aa(%rip), %rsi    # 0x516013
leaq 0x30aaf9(%rip), %rdx    # 0x578369
leaq 0x3112da(%rip), %rcx    # 0x57eb51
leaq 0x311257(%rip), %r8     # 0x57ead5
movl $0x6cb, %r9d            # imm = 0x6CB
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x26d892
movq 0x3b0(%rsp), %rdi
movq 0x148(%rsp), %rax
movq %rax, 0x70(%rsp)
movq %rax, %xmm0
movaps 0x2ab07d(%rip), %xmm3   # 0x518930
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x2ab081(%rip), %xmm2   # 0x518940
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x2acf62(%rip), %xmm1   # 0x51a838
mulsd %xmm1, %xmm0
movq 0x110(%rsp), %xmm1
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movl 0x1b0(%rsp), %ecx
movq 0x160(%rsp), %rax
movl 0x1b0(%rsp), %edx
movl %edx, %esi
xorl %edx, %edx
divq %rsi
movq 0x70(%rsp), %rdx
movq %rax, %r8
leaq 0x3112f7(%rip), %rsi    # 0x57ec1d
movb $0x1, %al
callq 0xe7cd0
movq 0x148(%rsp), %rax
cmpq 0x140(%rsp), %rax
je 0x26d977
movq 0x3ce65a(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2a86c3(%rip), %rsi    # 0x516013
leaq 0x31130e(%rip), %rdx    # 0x57ec65
leaq 0x3111f3(%rip), %rcx    # 0x57eb51
leaq 0x311170(%rip), %r8     # 0x57ead5
movl $0x6d1, %r9d            # imm = 0x6D1
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x26d979
jmp 0x26d988
leaq 0x140(%rsp), %rdi
callq 0x270280
jmp 0x26d98a
cmpq $0x0, 0xf0(%rsp)
je 0x26d9f4
movl $0x0, 0x130(%rsp)
movl 0x130(%rsp), %eax
cmpl 0xe4(%rsp), %eax
jae 0x26d9db
movq 0xf0(%rsp), %rax
movl 0x130(%rsp), %ecx
movq (%rax,%rcx,8), %rdi
callq 0x2daa60
movl 0x130(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x130(%rsp)
jmp 0x26d9a0
movq 0xf0(%rsp), %rdi
leaq 0x3110eb(%rip), %rsi    # 0x57ead5
movl $0x6dd, %edx            # imm = 0x6DD
callq 0xe88c0
testb $0x1, 0xeb(%rsp)
je 0x26da56
leaq 0x140(%rsp), %rdi
callq 0x270280
movq 0x1e0(%rsp), %rdi
leaq 0x3110bb(%rip), %rsi    # 0x57ead5
movl $0x6e2, %edx            # imm = 0x6E2
callq 0xe88c0
movq $0x0, 0x1e0(%rsp)
movq 0x100(%rsp), %rdi
callq 0x2ccdf0
movq $0x0, 0x230(%rsp)
movq 0x1b8(%rsp), %rdi
callq 0x1008f0
movq 0xf8(%rsp), %rdi
callq 0x4da3d0
movq 0x1e8(%rsp), %rdi
leaq 0x140(%rsp), %rsi
addq $0x110, %rsi            # imm = 0x110
callq 0x4dbec0
movq 0x1e8(%rsp), %rdi
leaq 0x140(%rsp), %rsi
addq $0x110, %rsi            # imm = 0x110
callq 0x4dbf50
cmpq $0x0, 0x1c8(%rsp)
je 0x26daf1
movq 0x1c8(%rsp), %rdi
callq 0x2eed40
movq 0x1e8(%rsp), %rdi
movl $0x6ee, %esi            # imm = 0x6EE
leaq 0x31100e(%rip), %rdx    # 0x57ead5
xorl %ecx, %ecx
leaq 0x349ae6(%rip), %r8     # 0x5b75b6
movl $0x1, %r9d
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x4bea60
movq $0x0, 0x1c8(%rsp)
cmpq $0x0, 0x1d8(%rsp)
jne 0x26db5c
cmpq $0x0, 0x1e0(%rsp)
je 0x26db5c
movq 0x1e0(%rsp), %rdi
leaq 0x310fbf(%rip), %rsi    # 0x57ead5
movl $0x6f3, %edx            # imm = 0x6F3
callq 0xe88c0
movq $0x0, 0x1e0(%rsp)
movq 0x1e8(%rsp), %rdi
movl $0x6f5, %esi            # imm = 0x6F5
leaq 0x310f95(%rip), %rdx    # 0x57ead5
xorl %r9d, %r9d
leaq 0x2bb63a(%rip), %r8     # 0x529184
xorl %eax, %eax
movl %r9d, %ecx
movq $0x0, (%rsp)
callq 0x4bea60
movq 0x1d0(%rsp), %rdi
callq 0x2cca80
movq 0x1d8(%rsp), %rdi
callq 0x2cca80
movq 0x238(%rsp), %rdi
callq 0x2b11b0
movq 0x1e8(%rsp), %rdi
callq 0x4be8a0
movq 0x1e8(%rsp), %rdi
movl $0x6fb, %esi            # imm = 0x6FB
leaq 0x310f31(%rip), %rdx    # 0x57ead5
xorl %ecx, %ecx
leaq 0x2ebdc9(%rip), %r8     # 0x559976
movl $0x1, %r9d
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x4bea60
movq 0x1e8(%rsp), %rdi
callq 0x4bea00
movb 0xeb(%rsp), %dl
xorl %eax, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
testb $0x1, %dl
cmovnel %ecx, %eax
movl %eax, 0x314(%rsp)
movl 0x314(%rsp), %eax
addq $0x318, %rsp            # imm = 0x318
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopw %cs:(%rax,%rax)