// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/sfx-bentsedg.c
// Function: gt_sort_bentleysedgewick
static void gt_sort_bentleysedgewick(GtBentsedgresources *bsr,
                                     GtUword bucketleftidx,
                                     GtUword width,
                                     GtUword depth)
{
  bsr->mkvauxstack.nextfreeGtMKVstack = 0;
  gt_suffixsortspace_bucketrange_set(bsr->sssp,bucketleftidx,width);
  subsort_bentleysedgewick(bsr, 0, width, depth);
  while (bsr->mkvauxstack.nextfreeGtMKVstack > 0)
  {
    GtUword leftplusw, pa, pb, pc, pd, pm, bucketright,
                  cptr, temp, pivotcmpcharbychar = 0, valcmpcharbychar,
                  wtmp, subbucketleft;
    unsigned int smallermaxlcp, greatermaxlcp, smallerminlcp, greaterminlcp;
    GtSfxcmp pivotcmpbits, val;
    int retvalpivotcmpbits;
    GtUchar tmpvar;
    GtCommonunits commonunits;
    const int commonunitsequal = bsr->sfxstrategy->cmpcharbychar
                                 ? 1
                                 : GT_UNITSIN2BITENC;

    /* pop */
    bsr->mkvauxstack.nextfreeGtMKVstack--;
    subbucketleft = STACKTOP.subbucketleft;
    width = STACKTOP.width;
    depth = STACKTOP.depth;
    bucketright = width - 1;

    if (bsr->sfxstrategy->cmpcharbychar)
    {
      pm = cmpcharbychardelivermedian(bsr, subbucketleft, width, depth);
      BS_SWAPARRAY(temp, subbucketleft, 0, pm);
      CMPCHARBYCHARPTR2INT(pivotcmpcharbychar, subbucketleft,tmpvar,0);
    } else
    {
      pm = blockcmpdelivermedian(bsr,
                                 subbucketleft,
                                 width,
                                 depth,
                                 bsr->sfxstrategy->maxwidthrealmedian);
      if (width <= bsr->sfxstrategy->maxcountingsort &&
          width >= MINMEDIANOF9WIDTH)
      {
        PTR2INT(pivotcmpbits,subbucketleft,pm);
        gt_assert(width >= bsr->sfxstrategy->maxbltriesort);
        sarrcountingsort(bsr,
                         subbucketleft,
                         width,
                         &pivotcmpbits,
                         pm,
                         depth);
        /* new values for subbucketleft, bucketright, depth */
        continue;
      }
      BS_SWAPARRAY(temp, subbucketleft, 0, pm);
      PTR2INT(pivotcmpbits,subbucketleft,0UL);
    }
    bsr->counttqsort++;
    /* now pivot element is at index subbucketleft */
    /* all elements to be compared are between pb and pc */
    /* pa is the position at which the next element smaller than the
       pivot element is inserted at */
    /* pd is the position at which the next element greater than the
       pivot element is inserted at */
    pa = pb = 1UL;
    pc = pd = bucketright;
    if (bsr->sfxstrategy->cmpcharbychar)
    {
      smallerminlcp = greaterminlcp = smallermaxlcp = greatermaxlcp = 0;
      for (;;)
      {
        while (pb <= pc)
        {
          CMPCHARBYCHARPTR2INT(valcmpcharbychar,subbucketleft,tmpvar,pb);
          if (valcmpcharbychar > pivotcmpcharbychar)
          {
            break;
          }
          if (valcmpcharbychar == pivotcmpcharbychar)
          {
            BS_SWAPARRAY(temp, subbucketleft, pa, pb);
            pa++;
          }
          pb++;
        }
        while (pb <= pc)
        {
          CMPCHARBYCHARPTR2INT(valcmpcharbychar,subbucketleft,tmpvar,pc);
          if (valcmpcharbychar < pivotcmpcharbychar)
          { /* stop for elements < pivot */
            break;
          }
          if (valcmpcharbychar == pivotcmpcharbychar)
          {
            /* exchange equal element and element at index pd */
            BS_SWAPARRAY(temp, subbucketleft, pc, pd);
            pd--;
          }
          pc--;
        }
        if (pb > pc)
        { /* no elements to compare to pivot */
          break;
        }
        BS_SWAPARRAY(temp, subbucketleft, pb, pc);
        pb++;
        pc--;
      }
    } else
    {
      smallermaxlcp = greatermaxlcp = 0;
      smallerminlcp = greaterminlcp = (unsigned int) GT_UNITSIN2BITENC;
      for (;;)
      {
        /* look for elements identical or smaller than pivot from left */
        while (pb <= pc)
        {
          PTR2INT(val,subbucketleft,pb);
          Sfxdocompare(&commonunits,val,pivotcmpbits);
          if (GtSfxcmpGREATER(val,pivotcmpbits))
          { /* stop for elements val > pivot */
            GT_BSR_UPDATELCP(greaterminlcp,greatermaxlcp,commonunits.common);
            break;
          }
          if (GtSfxcmpEQUAL(val,pivotcmpbits))
          {
            /* exchange equal element and element at index pa */
            BS_SWAPARRAY(temp, subbucketleft, pa, pb);
            pa++;
          } else /* smaller */
          {
            GT_BSR_UPDATELCP(smallerminlcp,smallermaxlcp,commonunits.common);
          }
          pb++;
        }
        /* look for elements identical or greater than pivot from right */
        while (pb <= pc)
        {
          PTR2INT(val,subbucketleft,pc);
          Sfxdocompare(&commonunits,val,pivotcmpbits);
          if (GtSfxcmpSMALLER(val,pivotcmpbits))
          { /* stop for elements val < pivot */
            GT_BSR_UPDATELCP(smallerminlcp,smallermaxlcp,commonunits.common);
            break;
          }
          if (GtSfxcmpEQUAL(val,pivotcmpbits))
          {
            /* exchange equal element and element at index pa */
            BS_SWAPARRAY(temp, subbucketleft, pc, pd);
            pd--;
          } else /* greater */
          {
            GT_BSR_UPDATELCP(greaterminlcp,greatermaxlcp,commonunits.common);
          }
          pc--;
        }
        if (pb > pc)
        { /* interval is empty */
          break;
        }
        BS_SWAPARRAY(temp, subbucketleft, pb, pc);
        pb++;
        pc--;
      }
    }
    gt_assert(pb >= pa);
    wtmp = GT_MIN(pa,pb-pa);
    /* move w elements at the left to the middle */
    gt_assert(pb >= wtmp && wtmp <= pb - wtmp);
    vectorswap(bsr->sssp, subbucketleft, subbucketleft+pb-wtmp, wtmp);
    gt_assert(pd >= pc);
    gt_assert(bucketright >= pd);
    wtmp = GT_MIN(pd-pc, bucketright-pd);
    /* move w elements at the right to the middle */
    gt_assert(bucketright + 1 >= wtmp && pb + wtmp <= bucketright+1-wtmp);
    vectorswap(bsr->sssp, subbucketleft+pb, subbucketleft+bucketright+1-wtmp,
               wtmp);

    /* all elements equal to the pivot are now in the middle namely in the
       range [subbucketleft + (pb-pa) and bucketright - (pd-pc)] */
    /* hence we have to sort the elements in the intervals
       [subbucketleft..subbucketleft+(pb-pa)-1] and
       [bucketright-(pd-pc)+1..bucketright] */

    gt_assert(pb >= pa);
    if ((wtmp = pb-pa) > 0)
    {
      leftplusw = wtmp;
      if (bsr->tableoflcpvalues != NULL)
      {
        /*
          left part has suffix with lcp up to length smallermaxlcp w.r.t.
          to the pivot. This lcp belongs to a suffix on the left
          which is at a minimum distance to the pivot and thus to an
          element in the final part of the left side.
        */
        gt_lcptab_update(bsr->tableoflcpvalues,subbucketleft,leftplusw,
                         depth + smallermaxlcp);
      }
      if (wtmp > 1UL)
      {
        subsort_bentleysedgewick(bsr,
                                 subbucketleft,
                                 wtmp,
                                 depth + smallerminlcp);
      }
    } else
    {
      leftplusw = 0;
    }

    cptr = gt_suffixsortspace_get(bsr->sssp,subbucketleft,leftplusw) + depth;
    if (ISNOTEND(cptr) && (wtmp = bucketright-(pd-pb)-leftplusw) > 1UL)
    {
      subsort_bentleysedgewick(bsr,
                               subbucketleft + leftplusw,
                               wtmp,
                               depth+commonunitsequal);
    }

    gt_assert(pd >= pc);
    if ((wtmp = (GtUword) (pd-pc)) > 0)
    {
      if (bsr->tableoflcpvalues != NULL)
      {
        /*
          right part has suffix with lcp up to length largermaxlcp w.r.t.
          to the pivot. This lcp belongs to a suffix on the right
          which is at a minimum distance to the pivot and thus to an
          element in the first part of the right side.
        */
        gt_lcptab_update(bsr->tableoflcpvalues,
                         subbucketleft,bucketright - wtmp + 1,
                         depth + greatermaxlcp);
      }
      if (wtmp > 1UL)
      {
        subsort_bentleysedgewick(bsr,
                                 subbucketleft + bucketright - wtmp + 1,
                                 wtmp,
                                 depth + greaterminlcp);
      }
    }
  }
  gt_suffixsortspace_bucketrange_reset(bsr->sssp);
}

// Assembly:
subq $0x1e8, %rsp            # imm = 0x1E8
movq %rdi, 0x1e0(%rsp)
movq %rsi, 0x1d8(%rsp)
movq %rdx, 0x1d0(%rsp)
movq %rcx, 0x1c8(%rsp)
movq 0x1e0(%rsp), %rax
movq $0x0, 0x30(%rax)
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x1d8(%rsp), %rsi
movq 0x1d0(%rsp), %rdx
callq 0x2ea3f0
movq 0x1e0(%rsp), %rdi
movq 0x1d0(%rsp), %rdx
movq 0x1c8(%rsp), %rcx
xorl %eax, %eax
movl %eax, %esi
callq 0x2b4530
movq 0x1e0(%rsp), %rax
cmpq $0x0, 0x30(%rax)
jbe 0x2b39cc
movq $0x0, 0x178(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x40(%rax), %rax
movb 0x2c(%rax), %dl
movl $0x20, %eax
movl $0x1, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
movl %eax, 0x104(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x30(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0x30(%rax)
movq 0x1e0(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x1e0(%rsp), %rcx
imulq $0x18, 0x30(%rcx), %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, 0x160(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x1e0(%rsp), %rcx
imulq $0x18, 0x30(%rcx), %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq %rax, 0x1d0(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x1e0(%rsp), %rcx
imulq $0x18, 0x30(%rcx), %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq %rax, 0x1c8(%rsp)
movq 0x1d0(%rsp), %rax
subq $0x1, %rax
movq %rax, 0x190(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x40(%rax), %rax
testb $0x1, 0x2c(%rax)
je 0x2b246e
movq 0x1e0(%rsp), %rdi
movq 0x160(%rsp), %rsi
movq 0x1d0(%rsp), %rdx
movq 0x1c8(%rsp), %rcx
callq 0x2b4980
movq %rax, 0x198(%rsp)
xorl %eax, %eax
cmpq 0x198(%rsp), %rax
je 0x2b23bf
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x2e9ec0
movq %rax, 0x180(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, 0xd0(%rsp)
movq 0x160(%rsp), %rax
movq %rax, 0xd8(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x198(%rsp), %rdx
callq 0x2e9ec0
movq 0xd0(%rsp), %rdi
movq 0xd8(%rsp), %rsi
movq %rax, %rcx
xorl %eax, %eax
movl %eax, %edx
callq 0x2ea0a0
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x198(%rsp), %rdx
movq 0x180(%rsp), %rcx
callq 0x2ea0a0
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x2e9ec0
addq 0x1c8(%rsp), %rax
movq %rax, 0x188(%rsp)
movq 0x1e0(%rsp), %rcx
cmpq 0xb0(%rcx), %rax
jae 0x2b2443
movq 0x1e0(%rsp), %rax
movq (%rax), %rdi
movq 0x188(%rsp), %rsi
movq 0x1e0(%rsp), %rax
movl 0x18(%rax), %edx
callq 0xa9da0
movb %al, 0x11b(%rsp)
movzbl %al, %eax
cmpl $0xfe, %eax
jge 0x2b2443
movzbl 0x11b(%rsp), %eax
movq %rax, 0xc8(%rsp)
jmp 0x2b2459
movq 0x188(%rsp), %rax
addq $0x100, %rax            # imm = 0x100
movq %rax, 0xc8(%rsp)
movq 0xc8(%rsp), %rax
movq %rax, 0x178(%rsp)
jmp 0x2b27a8
movq 0x1e0(%rsp), %rdi
movq 0x160(%rsp), %rsi
movq 0x1d0(%rsp), %rdx
movq 0x1c8(%rsp), %rcx
movq 0x1e0(%rsp), %rax
movq 0x40(%rax), %rax
movq (%rax), %r8
callq 0x2b4aa0
movq %rax, 0x198(%rsp)
movq 0x1d0(%rsp), %rax
movq 0x1e0(%rsp), %rcx
movq 0x40(%rcx), %rcx
cmpq 0x18(%rcx), %rax
ja 0x2b2629
cmpq $0x1f, 0x1d0(%rsp)
jb 0x2b2629
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x198(%rsp), %rdx
callq 0x2e9ec0
movq %rax, 0xf8(%rsp)
movq 0xf8(%rsp), %rax
movq %rax, 0x148(%rsp)
movq 0xf8(%rsp), %rax
addq 0x1c8(%rsp), %rax
movq 0x1e0(%rsp), %rcx
cmpq 0xb0(%rcx), %rax
jae 0x2b2582
movq 0x1c8(%rsp), %rax
addq 0xf8(%rsp), %rax
movq %rax, 0xf8(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x8(%rax), %rsi
movq 0x1e0(%rsp), %rax
movq (%rax), %rdx
movq 0x1e0(%rsp), %rax
movl 0x18(%rax), %ecx
movq 0xf8(%rsp), %r8
leaq 0x138(%rsp), %rdi
callq 0xb34d0
jmp 0x2b2599
movq $0x0, 0x138(%rsp)
movl $0x0, 0x140(%rsp)
jmp 0x2b259b
movq 0x1d0(%rsp), %rax
movq 0x1e0(%rsp), %rcx
movq 0x40(%rcx), %rcx
cmpq 0x10(%rcx), %rax
jae 0x2b25ed
movq 0x3899e4(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x263a4d(%rip), %rsi    # 0x516013
leaq 0x2d5ff3(%rip), %rdx    # 0x5885c0
leaq 0x2d6015(%rip), %rcx    # 0x5885e9
leaq 0x2d5f95(%rip), %r8     # 0x588570
movl $0x474, %r9d            # imm = 0x474
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2b25ef
movq 0x1e0(%rsp), %rdi
movq 0x160(%rsp), %rsi
movq 0x1d0(%rsp), %rdx
movq 0x198(%rsp), %r8
movq 0x1c8(%rsp), %r9
leaq 0x138(%rsp), %rcx
callq 0x2b4c30
jmp 0x2b21d9
xorl %eax, %eax
cmpq 0x198(%rsp), %rax
je 0x2b26e8
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x2e9ec0
movq %rax, 0x180(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, 0xb8(%rsp)
movq 0x160(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x198(%rsp), %rdx
callq 0x2e9ec0
movq 0xb8(%rsp), %rdi
movq 0xc0(%rsp), %rsi
movq %rax, %rcx
xorl %eax, %eax
movl %eax, %edx
callq 0x2ea0a0
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x198(%rsp), %rdx
movq 0x180(%rsp), %rcx
callq 0x2ea0a0
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x2e9ec0
movq %rax, 0xf0(%rsp)
movq 0xf0(%rsp), %rax
movq %rax, 0x148(%rsp)
movq 0xf0(%rsp), %rax
addq 0x1c8(%rsp), %rax
movq 0x1e0(%rsp), %rcx
cmpq 0xb0(%rcx), %rax
jae 0x2b278f
movq 0x1c8(%rsp), %rax
addq 0xf0(%rsp), %rax
movq %rax, 0xf0(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x8(%rax), %rsi
movq 0x1e0(%rsp), %rax
movq (%rax), %rdx
movq 0x1e0(%rsp), %rax
movl 0x18(%rax), %ecx
movq 0xf0(%rsp), %r8
leaq 0x138(%rsp), %rdi
callq 0xb34d0
jmp 0x2b27a6
movq $0x0, 0x138(%rsp)
movl $0x0, 0x140(%rsp)
jmp 0x2b27a8
movq 0x1e0(%rsp), %rax
movq 0x70(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x70(%rax)
movq $0x1, 0x1b0(%rsp)
movq $0x1, 0x1b8(%rsp)
movq 0x190(%rsp), %rax
movq %rax, 0x1a0(%rsp)
movq %rax, 0x1a8(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x40(%rax), %rax
testb $0x1, 0x2c(%rax)
je 0x2b2d36
movl $0x0, 0x158(%rsp)
movl $0x0, 0x15c(%rsp)
movl $0x0, 0x150(%rsp)
movl $0x0, 0x154(%rsp)
jmp 0x2b2830
movq 0x1b0(%rsp), %rax
cmpq 0x1a8(%rsp), %rax
ja 0x2b2a2b
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1b0(%rsp), %rdx
callq 0x2e9ec0
addq 0x1c8(%rsp), %rax
movq %rax, 0x188(%rsp)
movq 0x1e0(%rsp), %rcx
cmpq 0xb0(%rcx), %rax
jae 0x2b28ce
movq 0x1e0(%rsp), %rax
movq (%rax), %rdi
movq 0x188(%rsp), %rsi
movq 0x1e0(%rsp), %rax
movl 0x18(%rax), %edx
callq 0xa9da0
movb %al, 0x11b(%rsp)
movzbl %al, %eax
cmpl $0xfe, %eax
jge 0x2b28ce
movzbl 0x11b(%rsp), %eax
movq %rax, 0xb0(%rsp)
jmp 0x2b28e4
movq 0x188(%rsp), %rax
addq $0x100, %rax            # imm = 0x100
movq %rax, 0xb0(%rsp)
movq 0xb0(%rsp), %rax
movq %rax, 0x170(%rsp)
movq 0x170(%rsp), %rax
cmpq 0x178(%rsp), %rax
jbe 0x2b290b
jmp 0x2b2a2b
movq 0x170(%rsp), %rax
cmpq 0x178(%rsp), %rax
jne 0x2b2a12
movq 0x1b8(%rsp), %rax
cmpq 0x1b0(%rsp), %rax
je 0x2b29fe
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1b8(%rsp), %rdx
callq 0x2e9ec0
movq %rax, 0x180(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, 0x98(%rsp)
movq 0x160(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0x1b8(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1b0(%rsp), %rdx
callq 0x2e9ec0
movq 0x98(%rsp), %rdi
movq 0xa0(%rsp), %rsi
movq 0xa8(%rsp), %rdx
movq %rax, %rcx
callq 0x2ea0a0
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1b0(%rsp), %rdx
movq 0x180(%rsp), %rcx
callq 0x2ea0a0
movq 0x1b8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x1b8(%rsp)
movq 0x1b0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x1b0(%rsp)
jmp 0x2b2830
jmp 0x2b2a2d
movq 0x1b0(%rsp), %rax
cmpq 0x1a8(%rsp), %rax
ja 0x2b2c22
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1a8(%rsp), %rdx
callq 0x2e9ec0
addq 0x1c8(%rsp), %rax
movq %rax, 0x188(%rsp)
movq 0x1e0(%rsp), %rcx
cmpq 0xb0(%rcx), %rax
jae 0x2b2acb
movq 0x1e0(%rsp), %rax
movq (%rax), %rdi
movq 0x188(%rsp), %rsi
movq 0x1e0(%rsp), %rax
movl 0x18(%rax), %edx
callq 0xa9da0
movb %al, 0x11b(%rsp)
movzbl %al, %eax
cmpl $0xfe, %eax
jge 0x2b2acb
movzbl 0x11b(%rsp), %eax
movq %rax, 0x90(%rsp)
jmp 0x2b2ae1
movq 0x188(%rsp), %rax
addq $0x100, %rax            # imm = 0x100
movq %rax, 0x90(%rsp)
movq 0x90(%rsp), %rax
movq %rax, 0x170(%rsp)
movq 0x170(%rsp), %rax
cmpq 0x178(%rsp), %rax
jae 0x2b2b08
jmp 0x2b2c22
movq 0x170(%rsp), %rax
cmpq 0x178(%rsp), %rax
jne 0x2b2c09
movq 0x1a8(%rsp), %rax
cmpq 0x1a0(%rsp), %rax
je 0x2b2bf5
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1a8(%rsp), %rdx
callq 0x2e9ec0
movq %rax, 0x180(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, 0x78(%rsp)
movq 0x160(%rsp), %rax
movq %rax, 0x80(%rsp)
movq 0x1a8(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1a0(%rsp), %rdx
callq 0x2e9ec0
movq 0x78(%rsp), %rdi
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
movq %rax, %rcx
callq 0x2ea0a0
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1a0(%rsp), %rdx
movq 0x180(%rsp), %rcx
callq 0x2ea0a0
movq 0x1a0(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x1a0(%rsp)
movq 0x1a8(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x1a8(%rsp)
jmp 0x2b2a2d
movq 0x1b0(%rsp), %rax
cmpq 0x1a8(%rsp), %rax
jbe 0x2b2c39
jmp 0x2b2d31
movq 0x1b0(%rsp), %rax
cmpq 0x1a8(%rsp), %rax
je 0x2b2d04
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1b0(%rsp), %rdx
callq 0x2e9ec0
movq %rax, 0x180(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, 0x60(%rsp)
movq 0x160(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x1b0(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1a8(%rsp), %rdx
callq 0x2e9ec0
movq 0x60(%rsp), %rdi
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq %rax, %rcx
callq 0x2ea0a0
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1a8(%rsp), %rdx
movq 0x180(%rsp), %rcx
callq 0x2ea0a0
movq 0x1b0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x1b0(%rsp)
movq 0x1a8(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x1a8(%rsp)
jmp 0x2b282e
jmp 0x2b33d9
movl $0x0, 0x158(%rsp)
movl $0x0, 0x15c(%rsp)
movl $0x20, 0x150(%rsp)
movl $0x20, 0x154(%rsp)
jmp 0x2b2d64
movq 0x1b0(%rsp), %rax
cmpq 0x1a8(%rsp), %rax
ja 0x2b3015
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1b0(%rsp), %rdx
callq 0x2e9ec0
movq %rax, 0xe8(%rsp)
movq 0xe8(%rsp), %rax
movq %rax, 0x130(%rsp)
movq 0xe8(%rsp), %rax
addq 0x1c8(%rsp), %rax
movq 0x1e0(%rsp), %rcx
cmpq 0xb0(%rcx), %rax
jae 0x2b2e25
movq 0x1c8(%rsp), %rax
addq 0xe8(%rsp), %rax
movq %rax, 0xe8(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x8(%rax), %rsi
movq 0x1e0(%rsp), %rax
movq (%rax), %rdx
movq 0x1e0(%rsp), %rax
movl 0x18(%rax), %ecx
movq 0xe8(%rsp), %r8
leaq 0x120(%rsp), %rdi
callq 0xb34d0
jmp 0x2b2e3c
movq $0x0, 0x120(%rsp)
movl $0x0, 0x128(%rsp)
movq 0x1e0(%rsp), %rax
movb 0x1c(%rax), %sil
movq 0x1e0(%rsp), %rax
movb 0x1d(%rax), %al
leaq 0x108(%rsp), %rdx
leaq 0x120(%rsp), %rcx
leaq 0x138(%rsp), %r8
andb $0x1, %sil
andb $0x1, %al
movzbl %sil, %edi
movzbl %al, %esi
callq 0xb4420
movl %eax, 0x11c(%rsp)
cmpl $0x0, 0x11c(%rsp)
jle 0x2b2ecf
movl 0x150(%rsp), %eax
cmpl 0x108(%rsp), %eax
jbe 0x2b2eac
movl 0x108(%rsp), %eax
movl %eax, 0x150(%rsp)
movl 0x158(%rsp), %eax
cmpl 0x108(%rsp), %eax
jae 0x2b2eca
movl 0x108(%rsp), %eax
movl %eax, 0x158(%rsp)
jmp 0x2b3015
cmpl $0x0, 0x11c(%rsp)
jne 0x2b2fbe
movq 0x1b8(%rsp), %rax
cmpq 0x1b0(%rsp), %rax
je 0x2b2fa8
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1b8(%rsp), %rdx
callq 0x2e9ec0
movq %rax, 0x180(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, 0x48(%rsp)
movq 0x160(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x1b8(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1b0(%rsp), %rdx
callq 0x2e9ec0
movq 0x48(%rsp), %rdi
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
movq %rax, %rcx
callq 0x2ea0a0
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1b0(%rsp), %rdx
movq 0x180(%rsp), %rcx
callq 0x2ea0a0
movq 0x1b8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x1b8(%rsp)
jmp 0x2b2ffc
movl 0x154(%rsp), %eax
cmpl 0x108(%rsp), %eax
jbe 0x2b2fdc
movl 0x108(%rsp), %eax
movl %eax, 0x154(%rsp)
movl 0x15c(%rsp), %eax
cmpl 0x108(%rsp), %eax
jae 0x2b2ffa
movl 0x108(%rsp), %eax
movl %eax, 0x15c(%rsp)
jmp 0x2b2ffc
movq 0x1b0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x1b0(%rsp)
jmp 0x2b2d64
jmp 0x2b3017
movq 0x1b0(%rsp), %rax
cmpq 0x1a8(%rsp), %rax
ja 0x2b32c8
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1a8(%rsp), %rdx
callq 0x2e9ec0
movq %rax, 0xe0(%rsp)
movq 0xe0(%rsp), %rax
movq %rax, 0x130(%rsp)
movq 0xe0(%rsp), %rax
addq 0x1c8(%rsp), %rax
movq 0x1e0(%rsp), %rcx
cmpq 0xb0(%rcx), %rax
jae 0x2b30d8
movq 0x1c8(%rsp), %rax
addq 0xe0(%rsp), %rax
movq %rax, 0xe0(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x8(%rax), %rsi
movq 0x1e0(%rsp), %rax
movq (%rax), %rdx
movq 0x1e0(%rsp), %rax
movl 0x18(%rax), %ecx
movq 0xe0(%rsp), %r8
leaq 0x120(%rsp), %rdi
callq 0xb34d0
jmp 0x2b30ef
movq $0x0, 0x120(%rsp)
movl $0x0, 0x128(%rsp)
movq 0x1e0(%rsp), %rax
movb 0x1c(%rax), %sil
movq 0x1e0(%rsp), %rax
movb 0x1d(%rax), %al
leaq 0x108(%rsp), %rdx
leaq 0x120(%rsp), %rcx
leaq 0x138(%rsp), %r8
andb $0x1, %sil
andb $0x1, %al
movzbl %sil, %edi
movzbl %al, %esi
callq 0xb4420
movl %eax, 0x11c(%rsp)
cmpl $0x0, 0x11c(%rsp)
jge 0x2b3182
movl 0x154(%rsp), %eax
cmpl 0x108(%rsp), %eax
jbe 0x2b315f
movl 0x108(%rsp), %eax
movl %eax, 0x154(%rsp)
movl 0x15c(%rsp), %eax
cmpl 0x108(%rsp), %eax
jae 0x2b317d
movl 0x108(%rsp), %eax
movl %eax, 0x15c(%rsp)
jmp 0x2b32c8
cmpl $0x0, 0x11c(%rsp)
jne 0x2b3271
movq 0x1a8(%rsp), %rax
cmpq 0x1a0(%rsp), %rax
je 0x2b325b
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1a8(%rsp), %rdx
callq 0x2e9ec0
movq %rax, 0x180(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x160(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x1a8(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1a0(%rsp), %rdx
callq 0x2e9ec0
movq 0x30(%rsp), %rdi
movq 0x38(%rsp), %rsi
movq 0x40(%rsp), %rdx
movq %rax, %rcx
callq 0x2ea0a0
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1a0(%rsp), %rdx
movq 0x180(%rsp), %rcx
callq 0x2ea0a0
movq 0x1a0(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x1a0(%rsp)
jmp 0x2b32af
movl 0x150(%rsp), %eax
cmpl 0x108(%rsp), %eax
jbe 0x2b328f
movl 0x108(%rsp), %eax
movl %eax, 0x150(%rsp)
movl 0x158(%rsp), %eax
cmpl 0x108(%rsp), %eax
jae 0x2b32ad
movl 0x108(%rsp), %eax
movl %eax, 0x158(%rsp)
jmp 0x2b32af
movq 0x1a8(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x1a8(%rsp)
jmp 0x2b3017
movq 0x1b0(%rsp), %rax
cmpq 0x1a8(%rsp), %rax
jbe 0x2b32df
jmp 0x2b33d7
movq 0x1b0(%rsp), %rax
cmpq 0x1a8(%rsp), %rax
je 0x2b33aa
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1b0(%rsp), %rdx
callq 0x2e9ec0
movq %rax, 0x180(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x160(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x1b0(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1a8(%rsp), %rdx
callq 0x2e9ec0
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %rax, %rcx
callq 0x2ea0a0
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1a8(%rsp), %rdx
movq 0x180(%rsp), %rcx
callq 0x2ea0a0
movq 0x1b0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x1b0(%rsp)
movq 0x1a8(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x1a8(%rsp)
jmp 0x2b2d62
jmp 0x2b33d9
jmp 0x2b33db
movq 0x1b0(%rsp), %rax
cmpq 0x1b8(%rsp), %rax
jae 0x2b3425
movq 0x388bac(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x262c15(%rip), %rsi    # 0x516013
leaq 0x2d9d4d(%rip), %rdx    # 0x58d152
leaq 0x2d51dd(%rip), %rcx    # 0x5885e9
leaq 0x2d515d(%rip), %r8     # 0x588570
movl $0x4ed, %r9d            # imm = 0x4ED
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2b3427
movq 0x1b8(%rsp), %rax
movq 0x1b0(%rsp), %rcx
subq 0x1b8(%rsp), %rcx
cmpq %rcx, %rax
jae 0x2b3453
movq 0x1b8(%rsp), %rax
movq %rax, 0x10(%rsp)
jmp 0x2b3468
movq 0x1b0(%rsp), %rax
subq 0x1b8(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq %rax, 0x168(%rsp)
movq 0x1b0(%rsp), %rax
cmpq 0x168(%rsp), %rax
jb 0x2b34a4
movq 0x168(%rsp), %rax
movq 0x1b0(%rsp), %rcx
subq 0x168(%rsp), %rcx
cmpq %rcx, %rax
jbe 0x2b34dc
movq 0x388af5(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x262b5e(%rip), %rsi    # 0x516013
leaq 0x2d5146(%rip), %rdx    # 0x588602
leaq 0x2d5126(%rip), %rcx    # 0x5885e9
leaq 0x2d50a6(%rip), %r8     # 0x588570
movl $0x4f0, %r9d            # imm = 0x4F0
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2b34de
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x160(%rsp), %rdx
addq 0x1b0(%rsp), %rdx
subq 0x168(%rsp), %rdx
movq 0x168(%rsp), %rcx
callq 0x2b5630
movq 0x1a0(%rsp), %rax
cmpq 0x1a8(%rsp), %rax
jae 0x2b3561
movq 0x388a70(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x262ad9(%rip), %rsi    # 0x516013
leaq 0x27936d(%rip), %rdx    # 0x52c8ae
leaq 0x2d50a1(%rip), %rcx    # 0x5885e9
leaq 0x2d5021(%rip), %r8     # 0x588570
movl $0x4f2, %r9d            # imm = 0x4F2
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2b3563
jmp 0x2b3565
movq 0x190(%rsp), %rax
cmpq 0x1a0(%rsp), %rax
jae 0x2b35af
movq 0x388a22(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x262a8b(%rip), %rsi    # 0x516013
leaq 0x2d5093(%rip), %rdx    # 0x588622
leaq 0x2d5053(%rip), %rcx    # 0x5885e9
leaq 0x2d4fd3(%rip), %r8     # 0x588570
movl $0x4f3, %r9d            # imm = 0x4F3
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2b35b1
movq 0x1a0(%rsp), %rax
subq 0x1a8(%rsp), %rax
movq 0x190(%rsp), %rcx
subq 0x1a0(%rsp), %rcx
cmpq %rcx, %rax
jae 0x2b35ed
movq 0x1a0(%rsp), %rax
subq 0x1a8(%rsp), %rax
movq %rax, 0x8(%rsp)
jmp 0x2b3602
movq 0x190(%rsp), %rax
subq 0x1a0(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq %rax, 0x168(%rsp)
movq 0x190(%rsp), %rax
addq $0x1, %rax
cmpq 0x168(%rsp), %rax
jb 0x2b364e
movq 0x1b0(%rsp), %rax
addq 0x168(%rsp), %rax
movq 0x190(%rsp), %rcx
addq $0x1, %rcx
subq 0x168(%rsp), %rcx
cmpq %rcx, %rax
jbe 0x2b3686
movq 0x38894b(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2629b4(%rip), %rsi    # 0x516013
leaq 0x2d4fce(%rip), %rdx    # 0x588634
leaq 0x2d4f7c(%rip), %rcx    # 0x5885e9
leaq 0x2d4efc(%rip), %r8     # 0x588570
movl $0x4f6, %r9d            # imm = 0x4F6
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2b3688
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
addq 0x1b0(%rsp), %rsi
movq 0x160(%rsp), %rdx
addq 0x190(%rsp), %rdx
addq $0x1, %rdx
subq 0x168(%rsp), %rdx
movq 0x168(%rsp), %rcx
callq 0x2b5630
movq 0x1b0(%rsp), %rax
cmpq 0x1b8(%rsp), %rax
jae 0x2b3717
movq 0x3888ba(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x262923(%rip), %rsi    # 0x516013
leaq 0x2d9a5b(%rip), %rdx    # 0x58d152
leaq 0x2d4eeb(%rip), %rcx    # 0x5885e9
leaq 0x2d4e6b(%rip), %r8     # 0x588570
movl $0x500, %r9d            # imm = 0x500
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2b3719
movq 0x1b0(%rsp), %rax
subq 0x1b8(%rsp), %rax
movq %rax, 0x168(%rsp)
cmpq $0x0, %rax
jbe 0x2b37c9
movq 0x168(%rsp), %rax
movq %rax, 0x1c0(%rsp)
movq 0x1e0(%rsp), %rax
cmpq $0x0, 0x38(%rax)
je 0x2b378d
movq 0x1e0(%rsp), %rax
movq 0x38(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1c0(%rsp), %rdx
movq 0x1c8(%rsp), %rcx
movl 0x15c(%rsp), %eax
addq %rax, %rcx
callq 0x2b5700
cmpq $0x1, 0x168(%rsp)
jbe 0x2b37c7
movq 0x1e0(%rsp), %rdi
movq 0x160(%rsp), %rsi
movq 0x168(%rsp), %rdx
movq 0x1c8(%rsp), %rcx
movl 0x154(%rsp), %eax
addq %rax, %rcx
callq 0x2b4530
jmp 0x2b37d5
movq $0x0, 0x1c0(%rsp)
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x1c0(%rsp), %rdx
callq 0x2e9ec0
addq 0x1c8(%rsp), %rax
movq %rax, 0x188(%rsp)
movq 0x188(%rsp), %rax
movq 0x1e0(%rsp), %rcx
cmpq 0xb0(%rcx), %rax
jae 0x2b38b9
movq 0x1e0(%rsp), %rax
movq (%rax), %rdi
movq 0x188(%rsp), %rsi
movq 0x1e0(%rsp), %rax
movl 0x18(%rax), %edx
callq 0xa9da0
movzbl %al, %eax
cmpl $0xfe, %eax
jge 0x2b38b9
movq 0x190(%rsp), %rax
movq 0x1a0(%rsp), %rcx
subq 0x1b0(%rsp), %rcx
subq %rcx, %rax
subq 0x1c0(%rsp), %rax
movq %rax, 0x168(%rsp)
cmpq $0x1, %rax
jbe 0x2b38b9
movq 0x1e0(%rsp), %rdi
movq 0x160(%rsp), %rsi
addq 0x1c0(%rsp), %rsi
movq 0x168(%rsp), %rdx
movq 0x1c8(%rsp), %rcx
movslq 0x104(%rsp), %rax
addq %rax, %rcx
callq 0x2b4530
jmp 0x2b38bb
movq 0x1a0(%rsp), %rax
cmpq 0x1a8(%rsp), %rax
jae 0x2b3905
movq 0x3886cc(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x262735(%rip), %rsi    # 0x516013
leaq 0x278fc9(%rip), %rdx    # 0x52c8ae
leaq 0x2d4cfd(%rip), %rcx    # 0x5885e9
leaq 0x2d4c7d(%rip), %r8     # 0x588570
movl $0x524, %r9d            # imm = 0x524
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2b3907
movq 0x1a0(%rsp), %rax
subq 0x1a8(%rsp), %rax
movq %rax, 0x168(%rsp)
cmpq $0x0, %rax
jbe 0x2b39c7
movq 0x1e0(%rsp), %rax
cmpq $0x0, 0x38(%rax)
je 0x2b3977
movq 0x1e0(%rsp), %rax
movq 0x38(%rax), %rdi
movq 0x160(%rsp), %rsi
movq 0x190(%rsp), %rdx
subq 0x168(%rsp), %rdx
addq $0x1, %rdx
movq 0x1c8(%rsp), %rcx
movl 0x158(%rsp), %eax
addq %rax, %rcx
callq 0x2b5700
cmpq $0x1, 0x168(%rsp)
jbe 0x2b39c5
movq 0x1e0(%rsp), %rdi
movq 0x160(%rsp), %rsi
addq 0x190(%rsp), %rsi
subq 0x168(%rsp), %rsi
addq $0x1, %rsi
movq 0x168(%rsp), %rdx
movq 0x1c8(%rsp), %rcx
movl 0x150(%rsp), %eax
addq %rax, %rcx
callq 0x2b4530
jmp 0x2b39c7
jmp 0x2b21d9
movq 0x1e0(%rsp), %rax
movq 0x48(%rax), %rdi
callq 0x2ea480
addq $0x1e8, %rsp            # imm = 0x1E8
retq
nopw %cs:(%rax,%rax)