// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/sfx-suffixer.c
// Function: gt_sfxiterator_preparethispart
static void gt_sfxiterator_preparethispart(Sfxiterator *sfi)
{
  GtUword sumofwidthforpart;
  GtBucketspec2 *bucketspec2 = NULL;

  if (sfi->part == 0 && sfi->withprogressbar)
  {
    gt_assert(sfi->bcktab != NULL);
    gt_progressbar_start(&sfi->bucketiterstep,
                         (GtUint64)
                         gt_bcktab_numofallcodes(sfi->bcktab));
  }
  sfi->currentmincode = gt_suftabparts_minindex(sfi->part,sfi->suftabparts);
  sfi->currentmaxcode = gt_suftabparts_maxindex(sfi->part,sfi->suftabparts);
  sfi->widthofpart = gt_suftabparts_widthofpart(sfi->part,sfi->suftabparts);
  if (sfi->sfxprogress != NULL)
  {
    gt_timer_show_progress(sfi->sfxprogress, "inserting suffixes into buckets",
                           stdout);
  }
  if (gt_suftabparts_numofparts(sfi->suftabparts) > 1U)
  {
    gt_logger_log(sfi->logger,"compute part %u: "
                              ""GT_WU" suffixes,"GT_WU" buckets from "
                              ""GT_WU".."GT_WU"",
                  sfi->part,
                  gt_suftabparts_widthofpart(sfi->part,sfi->suftabparts),
                  sfi->currentmaxcode - sfi->currentmincode + 1,
                  sfi->currentmincode,
                  sfi->currentmaxcode);
    gt_bcktab_assignboundsforpart(sfi->bcktab,
                                  sfi->currentmincode,
                                  sfi->currentmaxcode);
    if (sfi->mappedmarkprefixbuckets != NULL)
    {
      sfi->markprefixbuckets
        = (GtBitsequence *)
          gt_Sfxmappedrange_map(sfi->mappedmarkprefixbuckets,
                                sfi->currentmincode,
                                sfi->currentmaxcode);
    }
  }
  SHOWACTUALSPACE;
  gt_suffixsortspace_partoffset_set(sfi->suffixsortspace,
                                    gt_suftabparts_offset(sfi->part,
                                                          sfi->suftabparts));
  if (sfi->sfxstrategy.spmopt_minlength == 0)
  {
    if (sfi->sfxstrategy.storespecialcodes)
    {
      sfx_derivespecialcodesfromtable(sfi,
                          gt_suftabparts_numofparts(sfi->suftabparts) == 1U
                            ? true
                            : false);
    } else
    {
      sfx_derivespecialcodesonthefly(sfi);
    }
  }
  SHOWACTUALSPACE;
  sfi->exportptr = gt_suffixsortspace_exportptr(sfi->suffixsortspace, 0);
  if (sfi->prefixlength > 1U
      && gt_encseq_has_twobitencoding(sfi->encseq)
      && !sfi->sfxstrategy.kmerswithencseqreader)
  {
    insertsuffix_getencseqkmers_twobitencoding(
                                     sfi->encseq,
                                     sfi->readmode,
                                     sfi->sfxstrategy.spmopt_minlength == 0
                                       ? sfi->prefixlength
                                       : sfi->spmopt_kmerscansize,
                                     sfi->sfxstrategy.spmopt_minlength == 0
                                       ? sfi->prefixlength
                                       : sfi->sfxstrategy.spmopt_minlength,
                                     sfi,
                                     NULL);
  } else
  {
    if (sfi->sfxstrategy.iteratorbasedkmerscanning)
    {
      getencseqkmersinsertkmerwithoutspecial(sfi->encseq,
                                             sfi->readmode,
                                             sfi->prefixlength,
                                             sfi);
    } else
    {
      getencseqkmers(sfi->encseq,sfi->readmode,sfi->prefixlength,
                     gt_insertkmerwithoutspecial,sfi);
    }
  }
  SHOWACTUALSPACE;
  gt_suffixsortspace_export_done(sfi->suffixsortspace);
  if (sfi->sfxprogress != NULL)
  {
    gt_timer_show_progress(sfi->sfxprogress, "sorting the buckets", stdout);
  }
  /* exit(0); just for testing */
  sumofwidthforpart = gt_suftabparts_sumofwidth(sfi->part,sfi->suftabparts);

  if (gt_suftabparts_numofparts(sfi->suftabparts) == 1U &&
      sfi->outlcpinfo == NULL &&
      sfi->prefixlength >= 2U &&
      sfi->sfxstrategy.spmopt_minlength == 0 &&
      GT_SFX_THREADS_JOBS == 1U)
  {
    bucketspec2 = gt_copysort_new(sfi->bcktab,sfi->encseq,sfi->readmode,
                                  sumofwidthforpart,sfi->numofchars);
  }
  SHOWACTUALSPACE;
  if (sfi->part == 0)
  {
    gt_logger_log(sfi->logger,"used workspace for sorting: %.2f MB",
                  GT_MEGABYTES(gt_size_of_sort_workspace (&sfi->sfxstrategy)));
  }
  if (!sfi->sfxstrategy.onlybucketinsertion)
  {
    unsigned int sortmaxdepth;
    GtProcessunsortedsuffixrange processunsortedsuffixrange;
    void *processunsortedsuffixrangeinfo;

    if (sfi->dcov == NULL)
    {
      if (sfi->sfxstrategy.userdefinedsortmaxdepth == 0)
      {
        sortmaxdepth = 0;
      } else
      {
        sortmaxdepth = sfi->sfxstrategy.userdefinedsortmaxdepth;
      }
      processunsortedsuffixrange = NULL;
      processunsortedsuffixrangeinfo = NULL;
    } else
    {
      gt_assert(sfi->sfxstrategy.userdefinedsortmaxdepth == 0);
      sortmaxdepth = sfi->sfxstrategy.differencecover;
      processunsortedsuffixrange = gt_suffixer_sort_with_dcov;
      processunsortedsuffixrangeinfo = sfi;
    }
    gt_assert(sortmaxdepth != 0 || processunsortedsuffixrange == NULL);
    gt_bcktab_determinemaxsize(sfi->bcktab, sfi->currentmincode,
                               sfi->currentmaxcode,sumofwidthforpart);
#ifdef GT_THREADS_ENABLED
    if (GT_SFX_THREADS_JOBS > 1U
#ifdef GT_THREADS_PARTITION
        &&
        sfi->partitions_for_threads != NULL &&
        gt_suftabparts_numofparts(sfi->partitions_for_threads[sfi->part]) > 1U
#endif
        )
    {
#ifdef GT_THREADS_PARTITION
      gt_threaded_partition_sortallbuckets
                                 (sfi->suffixsortspace,
                                 sfi->partitions_for_threads[sfi->part],
                                 sfi->encseq,
                                 sfi->readmode,
                                 sfi->bcktab,
                                 sfi->numofchars,
                                 sfi->prefixlength,
                                 sortmaxdepth,
                                 &sfi->sfxstrategy,
                                 processunsortedsuffixrange,
                                 processunsortedsuffixrangeinfo,
                                 sfi->logger);
#else
      gt_threaded_stream_sortallbuckets
                                 (sfi->suffixsortspace,
                                 sfi->encseq,
                                 sfi->readmode,
                                 sfi->bcktab,
                                 sfi->currentmincode,
                                 sfi->currentmaxcode,
                                 sumofwidthforpart,
                                 sfi->numofchars,
                                 sfi->prefixlength,
                                 sortmaxdepth,
                                 &sfi->sfxstrategy,
                                 processunsortedsuffixrange,
                                 processunsortedsuffixrangeinfo,
                                 sfi->logger);
#endif
    } else
    {
#endif
    gt_sortallbuckets(sfi->suffixsortspace,
                      sumofwidthforpart,
                      bucketspec2,
                      sfi->encseq,
                      sfi->readmode,
                      sfi->currentmincode,
                      sfi->currentmaxcode,
                      sfi->bcktab,
                      sfi->numofchars,
                      sfi->prefixlength,
                      sfi->outlcpinfo,
                      sortmaxdepth,
                      &sfi->sfxstrategy,
                      processunsortedsuffixrange,
                      processunsortedsuffixrangeinfo,
                      &sfi->bucketiterstep,
                      sfi->logger);
#ifdef GT_THREADS_ENABLED
    }
#endif
  }
  if (bucketspec2 != NULL)
  {
    gt_copysort_derivesorting(bucketspec2,sfi->suffixsortspace,sfi->logger);
    gt_copysort_delete(bucketspec2);
    bucketspec2 = NULL;
  }
  SHOWACTUALSPACE;
  sfi->part++;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xf8, %rsp
movq %rdi, 0xf0(%rsp)
movq $0x0, 0xe0(%rsp)
movq 0xf0(%rsp), %rax
cmpl $0x0, 0xb0(%rax)
jne 0x2e1dce
movq 0xf0(%rsp), %rax
testb $0x1, 0x60(%rax)
je 0x2e1dce
jmp 0x2e1d4e
movq 0xf0(%rsp), %rax
cmpq $0x0, 0x78(%rax)
jne 0x2e1d95
movq 0x35a23c(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2342a5(%rip), %rsi    # 0x516013
leaq 0x2ab9ae(%rip), %rdx    # 0x58d723
leaq 0x2abf29(%rip), %rcx    # 0x58dca5
leaq 0x2ab4b1(%rip), %r8     # 0x58d234
movl $0x7a2, %r9d            # imm = 0x7A2
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2e1d97
movq 0xf0(%rsp), %rax
addq $0xc8, %rax
movq %rax, 0xc0(%rsp)
movq 0xf0(%rsp), %rax
movq 0x78(%rax), %rdi
callq 0x206600
movq 0xc0(%rsp), %rdi
movq %rax, %rsi
callq 0xf9830
movq 0xf0(%rsp), %rax
movl 0xb0(%rax), %edi
movq 0xf0(%rsp), %rax
movq 0x68(%rax), %rsi
callq 0x2cd210
movq %rax, %rcx
movq 0xf0(%rsp), %rax
movq %rcx, 0x98(%rax)
movq 0xf0(%rsp), %rax
movl 0xb0(%rax), %edi
movq 0xf0(%rsp), %rax
movq 0x68(%rax), %rsi
callq 0x2cd2a0
movq %rax, %rcx
movq 0xf0(%rsp), %rax
movq %rcx, 0xa0(%rax)
movq 0xf0(%rsp), %rax
movl 0xb0(%rax), %edi
movq 0xf0(%rsp), %rax
movq 0x68(%rax), %rsi
callq 0x2ce300
movq %rax, %rcx
movq 0xf0(%rsp), %rax
movq %rcx, 0xa8(%rax)
movq 0xf0(%rsp), %rax
cmpq $0x0, 0xd8(%rax)
je 0x2e1e98
movq 0xf0(%rsp), %rax
movq 0xd8(%rax), %rdi
movq 0x35a0af(%rip), %rax    # 0x63bf38
movq (%rax), %rdx
leaq 0x2abe31(%rip), %rsi    # 0x58dcc4
callq 0x121930
movq 0xf0(%rsp), %rax
movq 0x68(%rax), %rdi
callq 0x2ce430
cmpl $0x1, %eax
jbe 0x2e1fe8
movq 0xf0(%rsp), %rax
movq 0xd0(%rax), %rax
movq %rax, 0xb0(%rsp)
movq 0xf0(%rsp), %rax
movl 0xb0(%rax), %eax
movl %eax, 0xbc(%rsp)
movq 0xf0(%rsp), %rax
movl 0xb0(%rax), %edi
movq 0xf0(%rsp), %rax
movq 0x68(%rax), %rsi
callq 0x2ce300
movq 0xb0(%rsp), %rdi
movl 0xbc(%rsp), %edx
movq %rax, %rcx
movq 0xf0(%rsp), %rax
movq 0xa0(%rax), %r8
movq 0xf0(%rsp), %rax
subq 0x98(%rax), %r8
addq $0x1, %r8
movq 0xf0(%rsp), %rax
movq 0x98(%rax), %r9
movq 0xf0(%rsp), %rax
movq 0xa0(%rax), %rax
leaq 0x2abd8e(%rip), %rsi    # 0x58dce4
movq %rax, (%rsp)
movb $0x0, %al
callq 0xe7cd0
movq 0xf0(%rsp), %rax
movq 0x78(%rax), %rdi
movq 0xf0(%rsp), %rax
movq 0x98(%rax), %rsi
movq 0xf0(%rsp), %rax
movq 0xa0(%rax), %rdx
callq 0x203ac0
movq 0xf0(%rsp), %rax
cmpq $0x0, 0x158(%rax)
je 0x2e1fe6
movq 0xf0(%rsp), %rax
movq 0x158(%rax), %rdi
movq 0xf0(%rsp), %rax
movq 0x98(%rax), %rsi
movq 0xf0(%rsp), %rax
movq 0xa0(%rax), %rdx
callq 0x2cc4d0
movq %rax, %rcx
movq 0xf0(%rsp), %rax
movq %rcx, 0x130(%rax)
jmp 0x2e1fe8
movq 0xf0(%rsp), %rax
movq 0x90(%rax), %rax
movq %rax, 0xa8(%rsp)
movq 0xf0(%rsp), %rax
movl 0xb0(%rax), %edi
movq 0xf0(%rsp), %rax
movq 0x68(%rax), %rsi
callq 0x2ce270
movq 0xa8(%rsp), %rdi
movq %rax, %rsi
callq 0x2ea4a0
movq 0xf0(%rsp), %rax
cmpl $0x0, 0x50(%rax)
jne 0x2e20a4
movq 0xf0(%rsp), %rax
testb $0x1, 0x55(%rax)
je 0x2e2095
movq 0xf0(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0xf0(%rsp), %rax
movq 0x68(%rax), %rdi
callq 0x2ce430
movq 0xa0(%rsp), %rdi
movl %eax, %edx
xorl %eax, %eax
movl $0x1, %ecx
cmpl $0x1, %edx
cmovel %ecx, %eax
cmpl $0x0, %eax
setne %al
movzbl %al, %esi
andl $0x1, %esi
callq 0x2e74d0
jmp 0x2e20a2
movq 0xf0(%rsp), %rdi
callq 0x2e7720
jmp 0x2e20a4
movq 0xf0(%rsp), %rax
movq 0x90(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x2e9cf0
movq %rax, %rcx
movq 0xf0(%rsp), %rax
movq %rcx, 0x118(%rax)
movq 0xf0(%rsp), %rax
cmpl $0x1, 0x24(%rax)
jbe 0x2e21da
movq 0xf0(%rsp), %rax
movq (%rax), %rdi
callq 0xac6d0
testb $0x1, %al
jne 0x2e20f9
jmp 0x2e21da
movq 0xf0(%rsp), %rax
testb $0x1, 0x59(%rax)
jne 0x2e21da
movq 0xf0(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x90(%rsp)
movq 0xf0(%rsp), %rax
movl 0x8(%rax), %eax
movl %eax, 0x9c(%rsp)
movq 0xf0(%rsp), %rax
cmpl $0x0, 0x50(%rax)
jne 0x2e2152
movq 0xf0(%rsp), %rax
movl 0x24(%rax), %eax
movl %eax, 0x8c(%rsp)
jmp 0x2e2167
movq 0xf0(%rsp), %rax
movl 0x120(%rax), %eax
movl %eax, 0x8c(%rsp)
movl 0x8c(%rsp), %eax
movl %eax, 0x88(%rsp)
movq 0xf0(%rsp), %rax
cmpl $0x0, 0x50(%rax)
jne 0x2e2197
movq 0xf0(%rsp), %rax
movl 0x24(%rax), %eax
movl %eax, 0x84(%rsp)
jmp 0x2e21a9
movq 0xf0(%rsp), %rax
movl 0x50(%rax), %eax
movl %eax, 0x84(%rsp)
movl 0x88(%rsp), %edx
movl 0x9c(%rsp), %esi
movq 0x90(%rsp), %rdi
movl 0x84(%rsp), %ecx
movq 0xf0(%rsp), %r8
xorl %eax, %eax
movl %eax, %r9d
callq 0x2e7900
jmp 0x2e224f
movq 0xf0(%rsp), %rax
testb $0x1, 0x56(%rax)
je 0x2e2218
movq 0xf0(%rsp), %rax
movq (%rax), %rdi
movq 0xf0(%rsp), %rax
movl 0x8(%rax), %esi
movq 0xf0(%rsp), %rax
movl 0x24(%rax), %edx
movq 0xf0(%rsp), %rcx
callq 0x2ddb70
jmp 0x2e224d
movq 0xf0(%rsp), %rax
movq (%rax), %rdi
movq 0xf0(%rsp), %rax
movl 0x8(%rax), %esi
movq 0xf0(%rsp), %rax
movl 0x24(%rax), %edx
movq 0xf0(%rsp), %r8
leaq -0x4648(%rip), %rcx     # 0x2ddc00
callq 0x2cb520
jmp 0x2e224f
movq 0xf0(%rsp), %rax
movq 0x90(%rax), %rdi
callq 0x2e9e50
movq 0xf0(%rsp), %rax
cmpq $0x0, 0xd8(%rax)
je 0x2e229a
movq 0xf0(%rsp), %rax
movq 0xd8(%rax), %rdi
movq 0x359cad(%rip), %rax    # 0x63bf38
movq (%rax), %rdx
leaq 0x2aba87(%rip), %rsi    # 0x58dd1c
callq 0x121930
movq 0xf0(%rsp), %rax
movl 0xb0(%rax), %edi
movq 0xf0(%rsp), %rax
movq 0x68(%rax), %rsi
callq 0x2cd180
movq %rax, 0xe8(%rsp)
movq 0xf0(%rsp), %rax
movq 0x68(%rax), %rdi
callq 0x2ce430
cmpl $0x1, %eax
jne 0x2e2354
movq 0xf0(%rsp), %rax
cmpq $0x0, 0xb8(%rax)
jne 0x2e2354
movq 0xf0(%rsp), %rax
cmpl $0x2, 0x24(%rax)
jb 0x2e2354
movq 0xf0(%rsp), %rax
cmpl $0x0, 0x50(%rax)
jne 0x2e2354
leaq 0x35b06c(%rip), %rax    # 0x63d378
cmpl $0x1, (%rax)
jne 0x2e2354
movq 0xf0(%rsp), %rax
movq 0x78(%rax), %rdi
movq 0xf0(%rsp), %rax
movq (%rax), %rsi
movq 0xf0(%rsp), %rax
movl 0x8(%rax), %edx
movq 0xe8(%rsp), %rcx
movq 0xf0(%rsp), %rax
movl 0x20(%rax), %r8d
callq 0x2bb410
movq %rax, 0xe0(%rsp)
movq 0xf0(%rsp), %rax
cmpl $0x0, 0xb0(%rax)
jne 0x2e23c8
movq 0xf0(%rsp), %rdi
movq 0xd0(%rdi), %rax
movq %rax, 0x78(%rsp)
addq $0x28, %rdi
callq 0x2b1680
movq 0x78(%rsp), %rdi
movq %rax, %xmm0
movaps 0x23659d(%rip), %xmm1   # 0x518930
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x2365a1(%rip), %xmm1   # 0x518940
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x23656a(%rip), %xmm1   # 0x518920
divsd %xmm1, %xmm0
leaq 0x2ab96f(%rip), %rsi    # 0x58dd30
movb $0x1, %al
callq 0xe7cd0
movq 0xf0(%rsp), %rax
testb $0x1, 0x58(%rax)
jne 0x2e2739
movq 0xf0(%rsp), %rax
cmpq $0x0, 0x88(%rax)
jne 0x2e2433
movq 0xf0(%rsp), %rax
cmpl $0x0, 0x4c(%rax)
jne 0x2e2407
movl $0x0, 0xdc(%rsp)
jmp 0x2e2419
movq 0xf0(%rsp), %rax
movl 0x4c(%rax), %eax
movl %eax, 0xdc(%rsp)
movq $0x0, 0xd0(%rsp)
movq $0x0, 0xc8(%rsp)
jmp 0x2e24ae
jmp 0x2e2435
movq 0xf0(%rsp), %rax
cmpl $0x0, 0x4c(%rax)
je 0x2e247b
movq 0x359b56(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x233bbf(%rip), %rsi    # 0x516013
leaq 0x2ab8f9(%rip), %rdx    # 0x58dd54
leaq 0x2ab843(%rip), %rcx    # 0x58dca5
leaq 0x2aadcb(%rip), %r8     # 0x58d234
movl $0x820, %r9d            # imm = 0x820
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2e247d
movq 0xf0(%rsp), %rax
movl 0x48(%rax), %eax
movl %eax, 0xdc(%rsp)
leaq 0x591a(%rip), %rax      # 0x2e7db0
movq %rax, 0xd0(%rsp)
movq 0xf0(%rsp), %rax
movq %rax, 0xc8(%rsp)
jmp 0x2e24b0
cmpl $0x0, 0xdc(%rsp)
jne 0x2e24fd
cmpq $0x0, 0xd0(%rsp)
je 0x2e24fd
movq 0x359ad4(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x233b3d(%rip), %rsi    # 0x516013
leaq 0x2ab8a5(%rip), %rdx    # 0x58dd82
leaq 0x2ab7c1(%rip), %rcx    # 0x58dca5
leaq 0x2aad49(%rip), %r8     # 0x58d234
movl $0x825, %r9d            # imm = 0x825
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2e24ff
movq 0xf0(%rsp), %rax
movq 0x78(%rax), %rdi
movq 0xf0(%rsp), %rax
movq 0x98(%rax), %rsi
movq 0xf0(%rsp), %rax
movq 0xa0(%rax), %rdx
movq 0xe8(%rsp), %rcx
callq 0x205d60
leaq 0x35ae3b(%rip), %rax    # 0x63d378
cmpl $0x1, (%rax)
jbe 0x2e2617
movq 0xf0(%rsp), %rax
movq 0x90(%rax), %rdi
movq 0xf0(%rsp), %rax
movq (%rax), %rsi
movq 0xf0(%rsp), %rax
movl 0x8(%rax), %edx
movq 0xf0(%rsp), %rax
movq 0x78(%rax), %rcx
movq 0xf0(%rsp), %rax
movq 0x98(%rax), %r8
movq 0xf0(%rsp), %rax
movq 0xa0(%rax), %r9
movq 0xe8(%rsp), %r12
movq 0xf0(%rsp), %rax
movl 0x20(%rax), %r15d
movq 0xf0(%rsp), %rax
movl 0x24(%rax), %r14d
movl 0xdc(%rsp), %ebp
movq 0xf0(%rsp), %rbx
addq $0x28, %rbx
movq 0xd0(%rsp), %r11
movq 0xc8(%rsp), %r10
movq 0xf0(%rsp), %rax
movq 0xd0(%rax), %rax
movq %r12, (%rsp)
movl %r15d, 0x8(%rsp)
movl %r14d, 0x10(%rsp)
movl %ebp, 0x18(%rsp)
movq %rbx, 0x20(%rsp)
movq %r11, 0x28(%rsp)
movq %r10, 0x30(%rsp)
movq %rax, 0x38(%rsp)
callq 0x2b3dc0
jmp 0x2e2737
movq 0xf0(%rsp), %rax
movq 0x90(%rax), %rdi
movq 0xe8(%rsp), %rsi
movq 0xe0(%rsp), %rdx
movq 0xf0(%rsp), %rax
movq (%rax), %rcx
movq 0xf0(%rsp), %rax
movl 0x8(%rax), %r8d
movq 0xf0(%rsp), %rax
movq 0x98(%rax), %r9
movq 0xf0(%rsp), %rax
movq 0xa0(%rax), %rax
movq %rax, 0x60(%rsp)
movq 0xf0(%rsp), %rax
movq 0x78(%rax), %rax
movq %rax, 0x68(%rsp)
movq 0xf0(%rsp), %rax
movl 0x20(%rax), %r13d
movq 0xf0(%rsp), %rax
movl 0x24(%rax), %r12d
movq 0xf0(%rsp), %rax
movq 0xb8(%rax), %r15
movl 0xdc(%rsp), %ebp
movq 0xf0(%rsp), %r14
addq $0x28, %r14
movq 0xd0(%rsp), %rbx
movq 0xc8(%rsp), %r11
movq 0xf0(%rsp), %r10
addq $0xc8, %r10
movq 0xf0(%rsp), %rax
movq 0xd0(%rax), %rax
movq %rax, 0x70(%rsp)
movq 0x60(%rsp), %rax
movq %rax, (%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x70(%rsp), %rax
movl %r13d, 0x10(%rsp)
movl %r12d, 0x18(%rsp)
movq %r15, 0x20(%rsp)
movl %ebp, 0x28(%rsp)
movq %r14, 0x30(%rsp)
movq %rbx, 0x38(%rsp)
movq %r11, 0x40(%rsp)
movq %r10, 0x48(%rsp)
movq %rax, 0x50(%rsp)
callq 0x2b1700
jmp 0x2e2739
cmpq $0x0, 0xe0(%rsp)
je 0x2e2788
movq 0xe0(%rsp), %rdi
movq 0xf0(%rsp), %rax
movq 0x90(%rax), %rsi
movq 0xf0(%rsp), %rax
movq 0xd0(%rax), %rdx
callq 0x2bbf20
movq 0xe0(%rsp), %rdi
callq 0x2bcc10
movq $0x0, 0xe0(%rsp)
movq 0xf0(%rsp), %rax
movl 0xb0(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xb0(%rax)
addq $0xf8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopw %cs:(%rax,%rax)