// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/match/sfx-sain.c
// Function: gt_sain_rec_sortsuffixes
static void gt_sain_rec_sortsuffixes(unsigned int level,
                                     GtSainseq *sainseq,
                                     GtUsainindextype *suftab,
                                     GtUsainindextype firstusable,
                                     GtUword nonspecialentries,
                                     GtUword suftabentries,
                                     bool intermediatecheck,
                                     bool finalcheck,
                                     GtLogger *logger,
                                     GtTimer *timer)
{
  GtUword countSstartype;

  GT_SAIN_SHOWTIMER("insert Sstar suffixes");
  countSstartype = gt_sain_insertSstarsuffixes(sainseq,suftab,logger);
  gt_logger_log(logger,"level %u: sort sequence of length "GT_WU" over "
                       ""GT_WU" symbols (%.2f)",
          level,sainseq->totallength,sainseq->numofchars,
          (double) sainseq->numofchars/sainseq->totallength);
  gt_logger_log(logger,"Sstar-type: "GT_WU" (%.2f)",countSstartype,
                 (double) countSstartype/sainseq->totallength);
  if (countSstartype > 0)
  {
    GtUword numberofnames;

    if (sainseq->roundtable != NULL)
    {
      gt_sain_incrementfirstSstar(sainseq,suftab);
    }
    gt_sain_startbuckets(sainseq);
    GT_SAIN_SHOWTIMER(sainseq->roundtable == NULL
                      ? "induce L suffixes" : "fast induce L suffixes");
    gt_sain_induceLtypesuffixes1(sainseq,(GtSsainindextype *) suftab,
                                 nonspecialentries);
    if (sainseq->roundtable != NULL)
    {
      gt_sain_adjustsuftab(sainseq->totallength,(GtSsainindextype *) suftab,
                           nonspecialentries);
    }
    gt_sain_endbuckets(sainseq);
    GT_SAIN_SHOWTIMER(sainseq->roundtable == NULL
                      ? "induce S suffixes" : "fast induce S suffixes");
    gt_sain_induceStypesuffixes1(sainseq,(GtSsainindextype *) suftab,
                                 nonspecialentries);
    if (sainseq->roundtable == NULL)
    {
      GT_SAIN_SHOWTIMER("simple moverSstar2front");
      gt_sain_moveSstar2front(countSstartype,(GtSsainindextype *) suftab,
                              nonspecialentries);
      GT_SAIN_SHOWTIMER("simple assignSstarlength");
      gt_sain_assignSstarlength(sainseq,suftab + countSstartype);
      GT_SAIN_SHOWTIMER("simple assignSstarnames");
      numberofnames = gt_sain_assignSstarnames(sainseq,countSstartype,suftab);
    } else
    {
      GT_SAIN_SHOWTIMER("fast moveSstar2front");
      numberofnames = gt_sain_fast_moveSstar2front(sainseq->totallength,
                                                   countSstartype,
                                                   (GtSsainindextype *) suftab,
                                                   nonspecialentries);
      if (!sainseq->roundtablepoints2suftab)
      {
        gt_free(sainseq->roundtable);
        sainseq->roundtable = NULL;
      }
      GT_SAIN_SHOWTIMER("fast assignSstarnames");
      gt_sain_fast_assignSstarnames(sainseq->totallength,countSstartype,
                                    suftab,numberofnames,nonspecialentries);
    }
    gt_assert(numberofnames <= countSstartype);
    if (numberofnames < countSstartype)
    {
    /* Now the name sequence is in the range from
       countSstartype .. 2 * countSstartype - 1 */
      GtUsainindextype *subseq = suftab + countSstartype;
      GtSainseq *sainseq_rec;

      GT_SAIN_SHOWTIMER("movenames2front");
      gt_sain_setundefined(true,suftab,0,countSstartype-1);
      gt_sain_movenames2front(suftab,countSstartype,sainseq->totallength);
      if (level == 0)
      {
        firstusable = (GtUsainindextype) GT_MULT2(countSstartype);
      }
      sainseq_rec = gt_sainseq_new_from_array(subseq,countSstartype,
                                              numberofnames,
                                              suftab,
                                              firstusable,
                                              suftabentries);
      gt_sain_rec_sortsuffixes(level+1,
                               sainseq_rec,
                               suftab,
                               firstusable,
                               countSstartype,
                               suftabentries,
                               intermediatecheck,
                               finalcheck,
                               logger,
                               timer);
      gt_sainseq_delete(sainseq_rec);
      GT_SAIN_SHOWTIMER("expandorder2original");
      gt_sain_expandorder2original(sainseq,countSstartype,suftab);
    } else
    {
      if (sainseq->seqtype == GT_SAIN_INTSEQ)
      {
        GtUword charidx;
        gt_assert(sainseq->sstarfirstcharcount == NULL);
        sainseq->sstarfirstcharcount = sainseq->bucketfillptr;
        for (charidx = 0; charidx < sainseq->numofchars; charidx++)
        {
          sainseq->sstarfirstcharcount[charidx] = 0;
          sainseq->bucketsize[charidx] = 0;
        }
        gt_sain_determineSstarfirstchardist(sainseq);
      }
    }
  }
  if (intermediatecheck && countSstartype > 0)
  {
    gt_sain_checkorder(sainseq,suftab,0,countSstartype-1);
  }
  GT_SAIN_SHOWTIMER("insert sorted Sstar suffixes");
  if (countSstartype > 0)
  {
    gt_sain_insertsortedSstarsuffixes (sainseq, suftab, countSstartype - 1,
                                       nonspecialentries);
  }
  gt_sain_startbuckets(sainseq);
  GT_SAIN_SHOWTIMER("final induce L suffixes");
  gt_sain_induceLtypesuffixes2(sainseq,(GtSsainindextype *) suftab,
                               nonspecialentries);
  gt_sain_endbuckets(sainseq);
  GT_SAIN_SHOWTIMER("final induce S suffixes");
  gt_sain_induceStypesuffixes2(sainseq,(GtSsainindextype *) suftab,
                               nonspecialentries);
  if (intermediatecheck && nonspecialentries > 0)
  {
    gt_sain_checkorder(sainseq,suftab,0,nonspecialentries-1);
  }
  if (sainseq->seqtype != GT_SAIN_INTSEQ)
  {
    if (sainseq->seqtype == GT_SAIN_BARE_ENCSEQ ||
        sainseq->seqtype == GT_SAIN_ENCSEQ)
    {
      GT_SAIN_SHOWTIMER("fill tail suffixes");
      gt_sain_filltailsuffixes(suftab + nonspecialentries,
                               sainseq,
                               sainseq->readmode);
    } else
    {
      suftab[sainseq->totallength] = (GtUsainindextype) sainseq->totallength;
    }
  }
  if (finalcheck && sainseq->seqtype != GT_SAIN_INTSEQ)
  {
    GT_SAIN_SHOWTIMER("check suffix order");
    switch (sainseq->seqtype)
    {
      case GT_SAIN_BARE_ENCSEQ:
        gt_suftab_lightweightcheck(sain_accesschar_bare_encseq,
                                   sain_charcount_bare_encseq,
                                   (void *) sainseq->bare_encseq,
                                   sainseq->readmode,
                                   sainseq->totallength,
                                   (unsigned int) sainseq->numofchars,
                                   suftab,
                                   sizeof *suftab,
                                   NULL);
        break;
      case GT_SAIN_ENCSEQ:
        gt_suftab_lightweightcheck(sain_accesschar_encseq,
                                   sain_charcount_encseq,
                                   (void *) sainseq->seq.encseq,
                                   sainseq->readmode,
                                   sainseq->totallength,
                                   (unsigned int) sainseq->numofchars,
                                   suftab,
                                   sizeof *suftab,
                                   NULL);
        break;
      case GT_SAIN_PLAINSEQ:
        gt_assert(sainseq->readmode == GT_READMODE_FORWARD);
        gt_suftab_lightweightcheck(sain_accesschar_plainseq,
                                   sain_charcount_plainseq,
                                   (void *) sainseq,
                                   sainseq->readmode,
                                   sainseq->totallength,
                                   (unsigned int) sainseq->numofchars,
                                   suftab,
                                   sizeof *suftab,
                                   NULL);
        break;
      default:
        gt_assert(false);
    }
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %r9, 0x38(%rsp)
movq %r8, 0x20(%rsp)
movl %ecx, %ebx
movq %rdx, %r12
movq %rsi, %r15
movl %edi, 0x2c(%rsp)
cmpq $0x0, 0xd8(%rsp)
je 0x1fabea
movq 0xd0(%rsp), %rdi
callq 0x108f3c
testb %al, %al
je 0x1fabea
movq 0x2c9315(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x1c7c23(%rip), %rsi    # 0x3c2800
movq 0xd8(%rsp), %rdi
callq 0x1229c8
movl 0x50(%r15), %eax
cmpq $0x3, %rax
movq %r12, 0x8(%rsp)
movq %r15, (%rsp)
movq %rbx, 0x58(%rsp)
ja 0x1fb037
leaq 0x1c7a6b(%rip), %rcx    # 0x3c2678
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x38(%r15), %rbx
movq (%r15), %r13
movq 0x8(%r15), %rdx
movq 0x20(%r15), %rsi
movq %r12, %rdi
movq %rsi, 0x18(%rsp)
movq %r13, %rcx
movq 0xd0(%rsp), %r8
callq 0x1fd5b9
movq %rax, %r12
movq 0x18(%r15), %rax
movq 0x20(%r15), %rcx
movl (%rax), %edx
movl %edx, (%rcx)
movq 0x8(%r15), %rsi
cmpq $0x2, %rsi
jb 0x1fac69
movl $0x1, %edi
addl (%rax,%rdi,4), %edx
movl %edx, (%rcx,%rdi,4)
incq %rdi
cmpq %rdi, %rsi
jne 0x1fac5b
addq $0x100, %r13            # imm = 0x100
movl (%r15), %r14d
decl %r14d
addq %r14, %rbx
movb $0x1, %r15b
xorl %ebp, %ebp
movq %r13, %rsi
movl %r15d, %eax
movzbl (%rbx), %r13d
movb $0x1, %r15b
cmpq %r13, %rsi
ja 0x1fac97
sete %r15b
andb %al, %r15b
notb %al
orb %r15b, %al
testb $0x1, %al
jne 0x1facd6
incq %rbp
movq (%rsp), %rax
movq 0x28(%rax), %rax
incl (%rax,%rsi,4)
testq %r12, %r12
je 0x1facc0
movq %r12, %rdi
movl %r14d, %edx
callq 0x1fd6d5
jmp 0x1facd6
movq 0x18(%rsp), %rcx
movl (%rcx,%rsi,4), %eax
decl %eax
movl %eax, (%rcx,%rsi,4)
movq 0x8(%rsp), %rcx
movl %r14d, (%rcx,%rax,4)
decq %rbx
addl $-0x1, %r14d
jb 0x1fac7e
movq %r12, %rdi
callq 0x1fd742
movq %r12, %rdi
callq 0x1fd7b4
leaq (,%rbp,2), %rax
movq (%rsp), %r15
cmpq (%r15), %rax
jbe 0x1fb039
callq 0x7bec8
movq 0x38(%r15), %r14
movq %r15, %rbx
movq (%r15), %r15
movq 0x8(%rbx), %rdx
movq 0x20(%rbx), %rsi
movq %r12, %rdi
movq %rsi, 0x30(%rsp)
movq %r15, %rcx
movq 0xd0(%rsp), %r8
callq 0x1fd5b9
movq %rax, 0x10(%rsp)
movq 0x18(%rbx), %rax
movq 0x20(%rbx), %rcx
movl (%rax), %edx
movl %edx, (%rcx)
movq 0x8(%rbx), %rsi
cmpq $0x2, %rsi
jb 0x1fad61
movl $0x1, %edi
addl (%rax,%rdi,4), %edx
movl %edx, (%rcx,%rdi,4)
incq %rdi
cmpq %rdi, %rsi
jne 0x1fad53
addq $0x100, %r15            # imm = 0x100
movq (%rsp), %rbx
movl 0x40(%rbx), %eax
movl %eax, %ecx
orl $0x1, %ecx
movl %eax, %esi
decl %esi
testb $0x1, %al
cmovel %ecx, %esi
xorl %ebp, %ebp
movq %r14, %rdi
xorl %edx, %edx
callq 0xed76d
movq %rax, 0x18(%rsp)
movl (%rbx), %r14d
decl %r14d
movb $0x1, %r12b
movq %r15, %r13
movl %r12d, %ebx
movq 0x18(%rsp), %rdi
callq 0xec7be
leal 0x100(%r14), %ecx
cmpb $-0x2, %al
movzbl %al, %r15d
cmovaeq %rcx, %r15
movb $0x1, %r12b
cmpq %r13, %r15
jb 0x1fadc7
sete %r12b
andb %bl, %r12b
notb %bl
orb %r12b, %bl
testb $0x1, %bl
jne 0x1fae0f
incq %rbp
movq (%rsp), %rax
movq 0x28(%rax), %rax
incl (%rax,%r13,4)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1fadf7
movq %r13, %rsi
movl %r14d, %edx
callq 0x1fd6d5
jmp 0x1fae0f
movq 0x30(%rsp), %rcx
movl (%rcx,%r13,4), %eax
decl %eax
movl %eax, (%rcx,%r13,4)
movq 0x8(%rsp), %rcx
movl %r14d, (%rcx,%rax,4)
addl $-0x1, %r14d
jb 0x1fad97
movq 0x18(%rsp), %rdi
callq 0xed7bf
movq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x1fd742
movq %rbx, %rdi
callq 0x1fd7b4
leaq (,%rbp,2), %rax
movq (%rsp), %r15
cmpq (%r15), %rax
jbe 0x1fb039
callq 0x7be8f
movq 0x38(%r15), %rbx
movq (%r15), %r13
movq 0x8(%r15), %rdx
movq 0x20(%r15), %rsi
movq %r12, %rdi
movq %rsi, 0x18(%rsp)
movq %r13, %rcx
movq 0xd0(%rsp), %r8
callq 0x1fd5b9
movq %rax, %r12
movq 0x18(%r15), %rax
movq 0x20(%r15), %rcx
movl (%rax), %edx
movl %edx, (%rcx)
movq 0x8(%r15), %rsi
cmpq $0x2, %rsi
jb 0x1faea1
movl $0x1, %edi
addl (%rax,%rdi,4), %edx
movl %edx, (%rcx,%rdi,4)
incq %rdi
cmpq %rdi, %rsi
jne 0x1fae93
addq $0x100, %r13            # imm = 0x100
movl (%r15), %r15d
decl %r15d
addq %r15, %rbx
movb $0x1, %r14b
xorl %ebp, %ebp
movq %r13, %rsi
movl %r14d, %eax
movzbl (%rbx), %ecx
leal 0x100(%r15), %r13d
cmpq $0xfe, %rcx
cmovbq %rcx, %r13
movb $0x1, %r14b
cmpq %rsi, %r13
jb 0x1faee0
sete %r14b
andb %al, %r14b
notb %al
orb %r14b, %al
testb $0x1, %al
jne 0x1faf1f
incq %rbp
movq (%rsp), %rax
movq 0x28(%rax), %rax
incl (%rax,%rsi,4)
testq %r12, %r12
je 0x1faf09
movq %r12, %rdi
movl %r15d, %edx
callq 0x1fd6d5
jmp 0x1faf1f
movq 0x18(%rsp), %rcx
movl (%rcx,%rsi,4), %eax
decl %eax
movl %eax, (%rcx,%rsi,4)
movq 0x8(%rsp), %rcx
movl %r15d, (%rcx,%rax,4)
decq %rbx
addl $-0x1, %r15d
jb 0x1faeb6
movq %r12, %rdi
callq 0x1fd742
movq %r12, %rdi
callq 0x1fd7b4
leaq (,%rbp,2), %rax
movq (%rsp), %r15
cmpq (%r15), %rax
jbe 0x1fb039
callq 0x7be1d
movq 0x38(%r15), %rbx
movq (%r15), %r13
movq 0x8(%r15), %rdx
movq 0x20(%r15), %rsi
movq %r12, %rdi
movq %rsi, 0x18(%rsp)
movq %r13, %rcx
movq 0xd0(%rsp), %r8
callq 0x1fd5b9
movq %rax, %r12
movq 0x18(%r15), %rax
movq 0x20(%r15), %rcx
movl (%rax), %edx
movl %edx, (%rcx)
movq 0x8(%r15), %rsi
cmpq $0x2, %rsi
jb 0x1fafa5
movl $0x1, %edi
addl (%rax,%rdi,4), %edx
movl %edx, (%rcx,%rdi,4)
incq %rdi
cmpq %rdi, %rsi
jne 0x1faf97
addq $0x100, %r13            # imm = 0x100
movl (%r15), %r14d
decl %r14d
leaq (%rbx,%r14,4), %rbx
movb $0x1, %r15b
xorl %ebp, %ebp
movq %r13, %rsi
movl %r15d, %eax
movl (%rbx), %r13d
movb $0x1, %r15b
cmpq %r13, %rsi
ja 0x1fafd3
sete %r15b
andb %al, %r15b
notb %al
orb %r15b, %al
testb $0x1, %al
jne 0x1fb007
incq %rbp
testq %r12, %r12
je 0x1faff1
movq %r12, %rdi
movl %r14d, %edx
callq 0x1fd6d5
jmp 0x1fb007
movq 0x18(%rsp), %rcx
movl (%rcx,%rsi,4), %eax
decl %eax
movl %eax, (%rcx,%rsi,4)
movq 0x8(%rsp), %rcx
movl %r14d, (%rcx,%rax,4)
addq $-0x4, %rbx
addl $-0x1, %r14d
jb 0x1fafbb
movq %r12, %rdi
callq 0x1fd742
movq %r12, %rdi
callq 0x1fd7b4
leaq (,%rbp,2), %rax
movq (%rsp), %r15
cmpq (%r15), %rax
jbe 0x1fb039
callq 0x7be56
xorl %ebp, %ebp
movq (%r15), %rcx
movq 0x8(%r15), %r8
movq %r8, %xmm1
movq 0x155893(%rip), %xmm2   # 0x3508e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x155897(%rip), %xmm3   # 0x3508f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movq %rcx, %xmm1
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
subpd %xmm3, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
leaq 0x1c7789(%rip), %rsi    # 0x3c2816
movq 0xd0(%rsp), %rbx
movq %rbx, %rdi
movl 0x2c(%rsp), %edx
movb $0x1, %al
callq 0x10906e
movq %rbp, %xmm1
movq 0x155830(%rip), %xmm2   # 0x3508e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x155834(%rip), %xmm3   # 0x3508f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movq (%r15), %xmm1
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
subpd %xmm3, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
leaq 0x1c7764(%rip), %rsi    # 0x3c2854
movq %rbx, %rdi
movq %rbp, %rdx
movb $0x1, %al
callq 0x10906e
testq %rbp, %rbp
movq 0x20(%rsp), %r12
je 0x1fc01d
movq 0x30(%r15), %rax
testq %rax, %rax
movq 0x8(%rsp), %r13
je 0x1fb165
movq 0x8(%r15), %rcx
testq %rcx, %rcx
je 0x1fb165
movq 0x18(%r15), %rdx
movq 0x20(%r15), %rsi
leaq (%rax,%rcx,4), %rdi
xorl %r8d, %r8d
xorl %r9d, %r9d
xorl %r10d, %r10d
addl (%rdx,%r10,4), %r9d
movl (%rsi,%r10,4), %r11d
cmpl %r9d, %r11d
ja 0x1fc89f
cmpl %r9d, %r11d
jae 0x1fb155
movl (%r15), %ebx
addl %ebx, (%r13,%r11,4)
movl %r8d, (%rax,%r10,4)
movl %r8d, (%rdi,%r10,4)
incq %r10
cmpq %r10, %rcx
jne 0x1fb137
movq 0x20(%r15), %rax
movl $0x0, (%rax)
movq 0x8(%r15), %rcx
cmpq $0x2, %rcx
jb 0x1fb193
movq 0x18(%r15), %rdx
decq %rcx
xorl %esi, %esi
xorl %edi, %edi
addl (%rdx,%rsi,4), %edi
movl %edi, 0x4(%rax,%rsi,4)
incq %rsi
cmpq %rsi, %rcx
jne 0x1fb184
cmpq $0x0, 0xd8(%rsp)
je 0x1fb1dd
movq 0xd0(%rsp), %rdi
callq 0x108f3c
testb %al, %al
je 0x1fb1dd
cmpq $0x0, 0x30(%r15)
leaq 0x1c77d3(%rip), %rax    # 0x3c298e
leaq 0x1c76a9(%rip), %rsi    # 0x3c286b
cmoveq %rax, %rsi
movq 0x2c8d1b(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
movq 0xd8(%rsp), %rdi
callq 0x1229c8
movl 0x50(%r15), %eax
cmpq $0x3, %rax
ja 0x1fb247
leaq 0x1c749a(%rip), %rcx    # 0x3c2688
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpq $0x0, 0x30(%r15)
leaq 0x25fe(%rip), %rcx      # 0x1fd801
leaq 0x269e(%rip), %rax      # 0x1fd8a8
jmp 0x1fb234
cmpq $0x0, 0x30(%r15)
leaq 0x2a10(%rip), %rcx      # 0x1fdc28
leaq 0x2aaf(%rip), %rax      # 0x1fdcce
jmp 0x1fb234
cmpq $0x0, 0x30(%r15)
leaq 0x2785(%rip), %rcx      # 0x1fd9b2
leaq 0x2899(%rip), %rax      # 0x1fdacd
cmoveq %rcx, %rax
movq 0x38(%r15), %rsi
movq %r15, %rdi
movq %r13, %rdx
movq %r12, %rcx
callq *%rax
cmpq $0x0, 0x30(%r15)
je 0x1fb2ad
leaq -0x4(,%r12,4), %rdx
addq %r13, %rdx
cmpq %r13, %rdx
jb 0x1fb2ad
leaq (,%r12,4), %rcx
addq %r13, %rcx
movl (%r15), %eax
movl -0x4(%rcx), %esi
testl %esi, %esi
setle %dil
cmpl %eax, %esi
setge %r8b
orb %dil, %r8b
jne 0x1fb297
addl %eax, %esi
movl %esi, (%rdx)
addq $-0x8, %rcx
cmpq %r13, %rcx
jb 0x1fb29c
cmpl %eax, (%rcx)
jge 0x1fb29c
addq $-0x4, %rcx
jmp 0x1fb288
movq %rdx, %rcx
jmp 0x1fb2a4
movl (%rcx), %edx
subl %eax, %edx
jl 0x1fb2a4
movl %edx, (%rcx)
leaq -0x4(%rcx), %rdx
cmpq %r13, %rdx
jae 0x1fb26c
movq 0x18(%r15), %rax
movq 0x20(%r15), %rcx
movl (%rax), %edx
movl %edx, (%rcx)
movq 0x8(%r15), %rsi
cmpq $0x2, %rsi
jb 0x1fb2d6
movl $0x1, %edi
addl (%rax,%rdi,4), %edx
movl %edx, (%rcx,%rdi,4)
incq %rdi
cmpq %rdi, %rsi
jne 0x1fb2c8
cmpq $0x0, 0xd8(%rsp)
je 0x1fb320
movq 0xd0(%rsp), %rdi
callq 0x108f3c
testb %al, %al
je 0x1fb320
cmpq $0x0, 0x30(%r15)
leaq 0x1c76a8(%rip), %rax    # 0x3c29a6
leaq 0x1c757d(%rip), %rsi    # 0x3c2882
cmoveq %rax, %rsi
movq 0x2c8bd8(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
movq 0xd8(%rsp), %rdi
callq 0x1229c8
movl 0x50(%r15), %eax
cmpq $0x3, %rax
ja 0x1fb38a
leaq 0x1c7367(%rip), %rcx    # 0x3c2698
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpq $0x0, 0x30(%r15)
leaq 0x2a90(%rip), %rcx      # 0x1fddd6
leaq 0x2b60(%rip), %rax      # 0x1fdead
jmp 0x1fb377
cmpq $0x0, 0x30(%r15)
leaq 0x2f5a(%rip), %rcx      # 0x1fe2b5
leaq 0x3029(%rip), %rax      # 0x1fe38b
jmp 0x1fb377
cmpq $0x0, 0x30(%r15)
leaq 0x2c6e(%rip), %rcx      # 0x1fdfde
leaq 0x2db1(%rip), %rax      # 0x1fe128
cmoveq %rcx, %rax
movq 0x38(%r15), %rsi
movq %r15, %rdi
movq %r13, %rdx
movq %r12, %rcx
callq *%rax
cmpq $0x0, 0x30(%r15)
je 0x1fb52e
cmpq $0x0, 0xd8(%rsp)
je 0x1fb3cf
movq 0xd0(%rsp), %rdi
callq 0x108f3c
testb %al, %al
je 0x1fb3cf
movq 0x2c8b30(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x1c7520(%rip), %rsi    # 0x3c28e2
movq 0xd8(%rsp), %rdi
callq 0x1229c8
movl (%r15), %ecx
cmpq $0x1, %r12
movq %r12, %rdx
adcq $0x0, %rdx
xorl %eax, %eax
xorl %r14d, %r14d
movl (%r13,%rax,4), %esi
testl %esi, %esi
jns 0x1fb40a
notl %esi
xorl %edi, %edi
cmpl %ecx, %esi
setge %dil
addq %rdi, %r14
movl %esi, (%r13,%rax,4)
incq %rax
cmpq %rax, %rdx
jne 0x1fb3e2
callq 0x7c01e
cmpq %rbp, %rax
jae 0x1fb461
leaq 0x1(%rax), %rdx
cmpq %r12, %rdx
jae 0x1fc895
movl (%r13,%rdx,4), %esi
testl %esi, %esi
js 0x1fb430
movl $0x0, (%r13,%rdx,4)
jmp 0x1fb45c
cmpq %rdx, %rax
jae 0x1fc8a9
notl %esi
xorl %edi, %edi
cmpl %ecx, %esi
setge %dil
addq %rdi, %r14
movl %esi, (%r13,%rax,4)
incq %rax
movl $0x0, (%r13,%rdx,4)
cmpq %rbp, %rax
je 0x1fb461
incq %rdx
jmp 0x1fb413
cmpq %rbp, %rax
jne 0x1fc8f9
cmpb $0x0, 0x56(%r15)
jne 0x1fb48e
movq 0x30(%r15), %rdi
leaq 0x1c728c(%rip), %rsi    # 0x3c2708
movl $0x5a0, %edx            # imm = 0x5A0
callq 0x109670
movq $0x0, 0x30(%r15)
cmpq $0x0, 0xd8(%rsp)
je 0x1fb4c8
movq 0xd0(%rsp), %rdi
callq 0x108f3c
testb %al, %al
je 0x1fb4c8
movq 0x2c8a37(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x1c743c(%rip), %rsi    # 0x3c28f7
movq 0xd8(%rsp), %rdi
callq 0x1229c8
movq (%r15), %rax
leaq (,%r12,4), %rcx
addq %r13, %rcx
cmpq %rbp, %r14
jae 0x1fb5ab
addq $-0x4, %rcx
cmpq %r13, %rcx
jb 0x1fb9cf
leaq (,%rbp,4), %rdx
addq %r13, %rdx
leaq 0x1(%r14), %rsi
movl (%rcx), %r8d
movl %r8d, %edi
subl %eax, %edi
jae 0x1fb50a
movl %r8d, %edi
jmp 0x1fb516
testq %rsi, %rsi
je 0x1fc8d6
decq %rsi
cmpq %r14, %rsi
ja 0x1fb520
shrl %edi
movl %esi, (%rdx,%rdi,4)
addq $-0x4, %rcx
cmpq %r13, %rcx
jae 0x1fb4fb
jmp 0x1fb9cf
cmpq $0x0, 0xd8(%rsp)
je 0x1fb5cd
movq 0xd0(%rsp), %rdi
callq 0x108f3c
testb %al, %al
je 0x1fb56c
movq 0x2c8993(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x1c733a(%rip), %rsi    # 0x3c2899
movq 0xd8(%rsp), %rdi
callq 0x1229c8
movq %rbp, %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0x1fcf1b
movq 0xd0(%rsp), %rdi
callq 0x108f3c
testb %al, %al
je 0x1fb5db
movq 0x2c8956(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x1c7315(%rip), %rsi    # 0x3c28b1
movq 0xd8(%rsp), %rdi
callq 0x1229c8
jmp 0x1fb5db
testq %r12, %r12
jle 0x1fb9cf
movq %r13, %rdx
movl (%rdx), %esi
subl %eax, %esi
jb 0x1fb5bf
movl %esi, (%rdx)
addq $0x4, %rdx
cmpq %rcx, %rdx
jb 0x1fb5b7
jmp 0x1fb9cf
movq %rbp, %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0x1fcf1b
leaq (,%rbp,4), %rsi
addq %r13, %rsi
movq %r15, %rdi
movq %rsi, 0x60(%rsp)
callq 0x1fcf9c
cmpq $0x0, 0xd8(%rsp)
je 0x1fb62d
movq 0xd0(%rsp), %rdi
callq 0x108f3c
testb %al, %al
je 0x1fb62d
movq 0x2c88d2(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x1c72aa(%rip), %rsi    # 0x3c28ca
movq 0xd8(%rsp), %rdi
callq 0x1229c8
movl (%r13), %ecx
movl %ecx, %eax
shrl %eax
movq 0x60(%rsp), %r11
movl (%r11,%rax,4), %esi
movl $0x1, (%r11,%rax,4)
movl $0x1, %r14d
cmpq $0x2, %rbp
jl 0x1fb9cf
leaq 0x4(%r13), %rdx
movl $0x100, %r10d           # imm = 0x100
movq %rsi, %rax
movl (%rdx), %edi
movl %edi, %esi
shrl %esi
movq %rsi, 0x18(%rsp)
movl (%r11,%rsi,4), %esi
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
cmpq %rsi, %rax
jne 0x1fb9ac
movq %rdi, 0x10(%rsp)
movl 0x50(%r15), %eax
cmpq $0x3, %rax
movq %rsi, 0x30(%rsp)
movq %rdx, 0x80(%rsp)
ja 0x1fb986
leaq 0x1c7001(%rip), %rdi    # 0x3c26a8
movslq (%rdi,%rax,4), %rax
addq %rdi, %rax
jmpq *%rax
movq 0x10(%rsp), %rdi
cmpl %edi, %ecx
je 0x1fc903
movq (%r15), %rax
movl %ecx, %ecx
cmpq %rcx, %rax
jb 0x1fc903
cmpq %rdi, %rax
jb 0x1fc903
movq 0x38(%r15), %rdx
addq %rcx, %rsi
cmpq %rsi, %rcx
jae 0x1fb986
cmpq %rax, %rcx
jne 0x1fb6f9
cmpq %rdi, %rcx
jbe 0x1fc8c2
movl $0x1, %ebx
jmp 0x1fb71a
cmpq %rax, %rdi
jne 0x1fb708
cmpq %rdi, %rcx
jb 0x1fb715
jmp 0x1fc8ea
movb (%rdx,%rcx), %r8b
movb (%rdx,%rdi), %r9b
cmpb %r9b, %r8b
jae 0x1fb727
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
xorl %r8d, %r8d
testb %r8b, %r8b
jne 0x1fb6db
jmp 0x1fb988
ja 0x1fb6f2
incq %rcx
incq %rdi
movb $0x1, %r8b
jmp 0x1fb71d
movq 0x10(%rsp), %rdx
cmpl %edx, %ecx
je 0x1fc90d
movq (%r15), %rax
movl %ecx, %r12d
cmpq %r12, %rax
jb 0x1fc90d
cmpq %rdx, %rax
jb 0x1fc90d
movq 0x38(%r15), %rax
movq %rax, 0x70(%rsp)
leaq (%rsi,%r12), %rcx
movq %rdx, %r15
movq %rcx, 0x68(%rsp)
cmpq %rcx, %r12
jae 0x1fb986
movq (%rsp), %rax
movq (%rax), %rax
cmpq %rax, %r12
jne 0x1fb793
cmpq %r15, %r12
jbe 0x1fc8b8
movl $0x1, %ebx
jmp 0x1fb7a6
cmpq %rax, %r15
jne 0x1fb7b1
cmpq %r15, %r12
jae 0x1fc8e0
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
xorl %eax, %eax
testb %al, %al
jne 0x1fb76e
jmp 0x1fb988
movl %ebx, 0x44(%rsp)
movq %r15, 0x78(%rsp)
movq (%rsp), %r15
movl 0x40(%r15), %edx
movq 0x70(%rsp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
movl $0x100, %r13d           # imm = 0x100
callq 0xec1f8
movzbl %al, %eax
addq %r12, %r13
cmpb $-0x2, %al
cmovbq %rax, %r13
movl 0x40(%r15), %edx
movq 0x78(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0xec1f8
cmpb $-0x2, %al
jae 0x1fb801
movzbl %al, %eax
jmp 0x1fb809
movl $0x100, %eax            # imm = 0x100
addq %r15, %rax
movq 0x60(%rsp), %r11
movl $0x100, %r10d           # imm = 0x100
movl 0x44(%rsp), %ebx
cmpq %rax, %r13
movq 0x68(%rsp), %rcx
jae 0x1fb833
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
xorl %eax, %eax
movq 0x8(%rsp), %r13
jmp 0x1fb7a8
movq 0x8(%rsp), %r13
ja 0x1fb78c
incq %r12
incq %r15
movb $0x1, %al
jmp 0x1fb7a8
movq 0x10(%rsp), %rdi
cmpl %edi, %ecx
je 0x1fc908
movq (%r15), %rax
movl %ecx, %ecx
cmpq %rcx, %rax
jb 0x1fc908
cmpq %rdi, %rax
jb 0x1fc908
movq 0x38(%r15), %rdx
addq %rcx, %rsi
cmpq %rsi, %rcx
jae 0x1fb986
cmpq %rax, %rcx
jne 0x1fb894
cmpq %rdi, %rcx
jbe 0x1fc8b3
movl $0x1, %ebx
jmp 0x1fb8a7
cmpq %rax, %rdi
jne 0x1fb8ac
cmpq %rdi, %rcx
jae 0x1fc8db
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
xorl %r8d, %r8d
jmp 0x1fb8fe
movzbl (%rdx,%rcx), %r8d
leaq (%rcx,%r10), %r9
movl $0xfe, %r15d
cmpq %r15, %r8
cmovbq %r8, %r9
movzbl (%rdx,%rdi), %r8d
movl $0x100, %r10d           # imm = 0x100
addq %rdi, %r10
cmpq %r15, %r8
cmovbq %r8, %r10
cmpq %r10, %r9
jae 0x1fb8e3
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
jmp 0x1fb8ea
jbe 0x1fb8ef
movl $0x1, %ebx
xorl %r8d, %r8d
jmp 0x1fb8f8
incq %rcx
incq %rdi
movb $0x1, %r8b
movl $0x100, %r10d           # imm = 0x100
testb %r8b, %r8b
jne 0x1fb876
jmp 0x1fb988
movq 0x10(%rsp), %rdi
cmpl %edi, %ecx
je 0x1fc8fe
movq (%r15), %rax
movl %ecx, %ecx
cmpq %rcx, %rax
jb 0x1fc8fe
cmpq %rdi, %rax
jb 0x1fc8fe
movq 0x38(%r15), %rdx
addq %rcx, %rsi
cmpq %rsi, %rcx
jae 0x1fb986
cmpq %rax, %rcx
jne 0x1fb94e
cmpq %rdi, %rcx
jbe 0x1fc8bd
movl $0x1, %ebx
jmp 0x1fb96f
cmpq %rax, %rdi
jne 0x1fb95d
cmpq %rdi, %rcx
jb 0x1fb96a
jmp 0x1fc8e5
movl (%rdx,%rcx,4), %r8d
movl (%rdx,%rdi,4), %r9d
cmpl %r9d, %r8d
jae 0x1fb979
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
xorl %r8d, %r8d
testb %r8b, %r8b
jne 0x1fb934
jmp 0x1fb988
ja 0x1fb947
incq %rcx
incq %rdi
movb $0x1, %r8b
jmp 0x1fb972
xorl %ebx, %ebx
cmpl $0x1, %ebx
movq (%rsp), %r15
movq 0x20(%rsp), %r12
movq 0x30(%rsp), %rsi
movq 0x80(%rsp), %rdx
movq 0x10(%rsp), %rdi
je 0x1fc8d1
xorl %eax, %eax
cmpl $-0x1, %ebx
sete %al
addq %rax, %r14
movq 0x18(%rsp), %rax
movl %r14d, (%r11,%rax,4)
addq $0x4, %rdx
movl %edi, %ecx
cmpq %r11, %rdx
jb 0x1fb660
cmpq %rbp, %r14
ja 0x1fc8ef
jae 0x1fbb39
cmpq $0x0, 0xd8(%rsp)
je 0x1fba18
movq 0xd0(%rsp), %rdi
callq 0x108f3c
testb %al, %al
je 0x1fba18
movq 0x2c84e7(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x1c77ba(%rip), %rsi    # 0x3c31c5
movq 0xd8(%rsp), %rdi
callq 0x1229c8
movq %rbp, %rax
decq %rax
js 0x1fba51
leaq 0x4(%r13), %rcx
leaq 0x1(,%rax,4), %rax
addq %r13, %rax
cmpq %rax, %rcx
cmovaq %rcx, %rax
movq %r13, %rdx
notq %rdx
addq %rax, %rdx
andq $-0x4, %rdx
addq $0x4, %rdx
movq %r13, %rdi
xorl %esi, %esi
callq 0x173a0
movq (%r15), %rax
testq %rax, %rax
je 0x1fc912
leaq (,%rbp,4), %rbx
addq %r13, %rbx
leaq -0x2(,%rax,2), %rax
andq $-0x4, %rax
addq %rbx, %rax
movq %rbx, %rdx
movq %rbx, %rcx
movl (%rdx), %esi
testl %esi, %esi
je 0x1fba8b
decl %esi
movl %esi, (%rcx)
addq $0x4, %rcx
addq $0x4, %rdx
cmpq %rax, %rdx
jbe 0x1fba7d
leaq (%r13,%rbp,8), %r13
cmpq %r13, %rcx
jne 0x1fc917
leal (,%rbp,2), %eax
cmpl $0x0, 0x2c(%rsp)
movq 0x58(%rsp), %r12
cmovel %eax, %r12d
leaq 0x1c6c4a(%rip), %rsi    # 0x3c2708
movl $0x58, %edi
movl $0xcc, %edx
callq 0x1092b2
movl $0x1, 0x50(%rax)
movq %rbx, 0x10(%rsp)
movq %rbx, 0x38(%rax)
movq %rbp, (%rax)
movq $0x0, 0x48(%rax)
movl $0x0, 0x40(%rax)
movq %r14, 0x8(%rax)
movq 0x38(%rsp), %rbx
movq %r12, 0x58(%rsp)
subq %r12, %rbx
jbe 0x1fc91c
movq %rax, %r15
cmpq %r14, %rbx
jae 0x1fbbe1
movb $0x0, 0x55(%r15)
leaq (,%r14,4), %rdi
leaq 0x1c6be2(%rip), %rsi    # 0x3c2708
movl $0xe2, %edx
callq 0x1092b2
movq %rax, 0x18(%r15)
jmp 0x1fbc03
cmpl $0x1, 0x50(%r15)
jne 0x1fc01d
cmpq $0x0, 0x28(%r15)
jne 0x1fc921
movq 0x8(%r15), %rcx
movq 0x20(%r15), %rax
movq %rax, 0x28(%r15)
testq %rcx, %rcx
je 0x1fbb76
movq 0x18(%r15), %rdx
xorl %esi, %esi
xorl %edi, %edi
movl %esi, (%rax,%rdi,4)
movl %esi, (%rdx,%rdi,4)
incq %rdi
cmpq %rdi, %rcx
jne 0x1fbb68
cmpl $0x1, 0x50(%r15)
jne 0x1fc926
movq (%r15), %rdx
movq 0x38(%r15), %rsi
leaq (%rsi,%rdx,4), %rcx
addq $-0x4, %rcx
cmpq %rsi, %rcx
jb 0x1fc01d
addq $0x100, %rdx            # imm = 0x100
movq 0x18(%r15), %rsi
movb $0x1, %dil
movl (%rcx), %r8d
movb $0x1, %r9b
cmpq %r8, %rdx
ja 0x1fbbb9
sete %r9b
andb %dil, %r9b
notb %dil
orb %r9b, %dil
testb $0x1, %dil
jne 0x1fbbc8
incl (%rax,%rdx,4)
incl (%rsi,%r8,4)
addq $-0x4, %rcx
movq %r8, %rdx
movl %r9d, %edi
cmpq 0x38(%r15), %rcx
jae 0x1fbba7
jmp 0x1fc01d
movq 0x8(%rsp), %rax
movq 0x38(%rsp), %rcx
leaq (%rax,%rcx,4), %rax
leaq (,%r14,4), %rcx
subq %rcx, %rax
movq %rax, 0x18(%r15)
movb $0x1, 0x55(%r15)
leaq (%r14,%r14), %r12
cmpq %r12, %rbx
jae 0x1fbc30
movb $0x0, 0x54(%r15)
leaq (,%r14,4), %rdi
leaq 0x1c6ae8(%rip), %rsi    # 0x3c2708
movl $0xf3, %edx
callq 0x1092b2
movq %rax, 0x20(%r15)
jmp 0x1fbc52
movq 0x8(%rsp), %rax
movq 0x38(%rsp), %rcx
leaq (%rax,%rcx,4), %rax
leaq (,%r12,4), %rcx
subq %rcx, %rax
movq %rax, 0x20(%r15)
movb $0x1, 0x54(%r15)
cmpq $0x401, %rbp            # imm = 0x401
jb 0x1fbc9e
leaq 0x1(%rbp), %rax
shrq $0x3e, %rax
cmpl $0x2, %eax
ja 0x1fbc9e
cmpq %rbp, %r12
ja 0x1fbc9e
leaq (,%r14,4), %rax
cmpq %rax, %rbx
jae 0x1fbcad
movb $0x0, 0x56(%r15)
leaq (,%r14,8), %rdi
leaq 0x1c6a7a(%rip), %rsi    # 0x3c2708
movl $0x103, %edx            # imm = 0x103
callq 0x1092b2
movq %rax, 0x30(%r15)
jmp 0x1fbccb
movb $0x0, 0x56(%r15)
movq $0x0, 0x30(%r15)
jmp 0x1fbccb
movq 0x8(%rsp), %rcx
movq 0x38(%rsp), %rdx
leaq (%rcx,%rdx,4), %rcx
shlq $0x2, %rax
subq %rax, %rcx
movq %rcx, 0x30(%r15)
movb $0x1, 0x56(%r15)
movq 0x20(%rsp), %r12
movq 0x10(%rsp), %rbx
movq $0x0, 0x28(%r15)
movq 0x8(%r15), %rdx
testq %rdx, %rdx
je 0x1fbcf5
movq 0x18(%r15), %rdi
shlq $0x2, %rdx
xorl %esi, %esi
callq 0x173a0
movq (%r15), %rax
testq %rax, %rax
jle 0x1fbd1f
leaq (%rbx,%rax,4), %rax
movq %rbx, %rcx
movl (%rcx), %edx
cmpq %rdx, %r14
jbe 0x1fc8a4
movq 0x18(%r15), %rsi
incl (%rsi,%rdx,4)
addq $0x4, %rcx
cmpq %rax, %rcx
jb 0x1fbd04
movl 0x2c(%rsp), %edi
incl %edi
movzbl 0xc8(%rsp), %eax
movzbl 0xc0(%rsp), %r10d
movq %r15, %rsi
movq 0x8(%rsp), %rdx
movq 0x58(%rsp), %rcx
movq %rbp, %r8
movq 0x38(%rsp), %r9
movq 0xd8(%rsp), %rbx
pushq %rbx
pushq 0xd8(%rsp)
pushq %rax
pushq %r10
callq 0x1fab89
addq $0x20, %rsp
movq %r15, %rdi
callq 0x1fc94e
testq %rbx, %rbx
je 0x1fbda3
movq 0xd0(%rsp), %rdi
callq 0x108f3c
testb %al, %al
je 0x1fbda3
movq 0x2c815c(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x1c74d7(%rip), %rsi    # 0x3c326d
movq 0xd8(%rsp), %rdi
callq 0x1229c8
movq (%rsp), %r15
movl 0x50(%r15), %eax
cmpq $0x3, %rax
movq 0x10(%rsp), %rbx
ja 0x1fc01d
leaq 0x1c68f7(%rip), %rcx    # 0x3c26b8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq (%r15), %rdx
movq 0x38(%r15), %rax
leaq 0x100(%rdx), %rcx
movb $0x1, %dil
movq %rcx, %r9
leal -0x1(%rdx), %esi
movzbl (%rax,%rsi), %ecx
movb $0x1, %r8b
cmpq %rcx, %r9
ja 0x1fbdf4
sete %r8b
andb %dil, %r8b
notb %dil
orb %r8b, %dil
testb $0x1, %dil
jne 0x1fbe08
movl %edx, -0x4(%r13)
addq $-0x4, %r13
movl %r8d, %edi
movl %esi, %edx
testl %esi, %esi
jne 0x1fbddb
testq %rbp, %rbp
jle 0x1fc01d
movq 0x8(%rsp), %rax
movl (%rax), %ecx
movl (%r13,%rcx,4), %ecx
movl %ecx, (%rax)
addq $0x4, %rax
cmpq %rbx, %rax
jb 0x1fbe1f
jmp 0x1fc01d
movq 0x38(%r15), %rdi
movl $0x100, %ebx            # imm = 0x100
addq (%r15), %rbx
movl 0x40(%r15), %eax
movl %eax, %ecx
orl $0x1, %ecx
movl %eax, %esi
decl %esi
testb $0x1, %al
cmovel %ecx, %esi
xorl %edx, %edx
callq 0xed76d
movq %rax, 0x18(%rsp)
movl (%r15), %r15d
movb $0x1, %r12b
movq %rbx, %r14
movq 0x18(%rsp), %rdi
callq 0xec7be
leal 0xff(%r15), %ecx
cmpb $-0x2, %al
movzbl %al, %ebx
cmovaeq %rcx, %rbx
movb $0x1, %al
cmpq %r14, %rbx
jb 0x1fbe90
sete %al
andb %r12b, %al
notb %r12b
orb %al, %r12b
testb $0x1, %r12b
jne 0x1fbea4
movl %r15d, -0x4(%r13)
addq $-0x4, %r13
movl %eax, %r12d
decl %r15d
jne 0x1fbe66
movq 0x18(%rsp), %rdi
callq 0xed7bf
testq %rbp, %rbp
movq (%rsp), %r15
movq 0x20(%rsp), %r12
movq 0x10(%rsp), %rdx
jle 0x1fc01d
movq 0x8(%rsp), %rax
movl (%rax), %ecx
movl (%r13,%rcx,4), %ecx
movl %ecx, (%rax)
addq $0x4, %rax
cmpq %rdx, %rax
jb 0x1fbed2
jmp 0x1fc01d
movq (%r15), %rax
movq 0x38(%r15), %rcx
leaq 0x100(%rax), %rdx
decl %eax
movb $0x1, %sil
movq %rdx, %r8
movl %eax, %edx
movzbl (%rcx,%rdx), %edi
leal 0x100(%rax), %edx
cmpq $0xfe, %rdi
cmovbq %rdi, %rdx
movb $0x1, %dil
cmpq %r8, %rdx
jb 0x1fbf25
sete %dil
andb %sil, %dil
notb %sil
orb %dil, %sil
testb $0x1, %sil
jne 0x1fbf3c
leal 0x1(%rax), %esi
movl %esi, -0x4(%r13)
addq $-0x4, %r13
movl %edi, %esi
addl $-0x1, %eax
jb 0x1fbefc
testq %rbp, %rbp
jle 0x1fc01d
movq 0x8(%rsp), %rax
movl (%rax), %ecx
movl (%r13,%rcx,4), %ecx
movl %ecx, (%rax)
addq $0x4, %rax
cmpq %rbx, %rax
jb 0x1fbf51
jmp 0x1fc01d
cmpq $0x0, 0x28(%r15)
jne 0x1fc944
movq (%r15), %rsi
movq 0x38(%r15), %rax
movq 0x20(%r15), %rcx
movq %rcx, 0x28(%r15)
movq 0x8(%r15), %rdi
movq 0x18(%r15), %rdx
testq %rdi, %rdi
je 0x1fbfa5
xorl %r8d, %r8d
xorl %r9d, %r9d
movl %r8d, (%rcx,%r9,4)
movl %r8d, (%rdx,%r9,4)
incq %r9
cmpq %r9, %rdi
jne 0x1fbf95
testq %rdx, %rdx
je 0x1fc949
testq %rcx, %rcx
je 0x1fc949
leaq 0x100(%rsi), %rdi
movb $0x1, %r9b
leal -0x1(%rsi), %r8d
movl (%rax,%r8,4), %r10d
movb $0x1, %r11b
cmpq %r10, %rdi
ja 0x1fbfd8
sete %r11b
andb %r9b, %r11b
notb %r9b
orb %r11b, %r9b
testb $0x1, %r9b
jne 0x1fbfef
incl (%rcx,%rdi,4)
movl %esi, -0x4(%r13)
addq $-0x4, %r13
incl (%rdx,%r10,4)
movq %r10, %rdi
movl %r11d, %r9d
movl %r8d, %esi
testl %r8d, %r8d
jne 0x1fbfc1
testq %rbp, %rbp
jle 0x1fc01d
movq 0x8(%rsp), %rax
movl (%rax), %ecx
movl (%r13,%rcx,4), %ecx
movl %ecx, (%rax)
addq $0x4, %rax
cmpq %rbx, %rax
jb 0x1fc00b
testq %rbp, %rbp
sete %al
movb 0xc0(%rsp), %cl
xorb $0x1, %cl
movb %cl, 0x10(%rsp)
orb %cl, %al
movq 0x8(%rsp), %r13
jne 0x1fc049
leaq -0x1(%rbp), %rdx
movq %r15, %rdi
movq %r13, %rsi
callq 0x1fd221
cmpq $0x0, 0xd8(%rsp)
je 0x1fc083
movq 0xd0(%rsp), %rdi
callq 0x108f3c
testb %al, %al
je 0x1fc083
movq 0x2c7e7c(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x1c68f5(%rip), %rsi    # 0x3c296b
movq 0xd8(%rsp), %rdi
callq 0x1229c8
testq %rbp, %rbp
je 0x1fc141
decq %rbp
movq 0x8(%r15), %rcx
movq 0x28(%r15), %rax
movq %r12, %rdx
cmpl $0x0, -0x4(%rax,%rcx,4)
leaq -0x1(%rcx), %rcx
je 0x1fc0d9
leaq -0x1(%rdx), %rsi
cmpq %rsi, %rbp
ja 0x1fc89a
jae 0x1fc0d9
movq %r13, %rsi
xorl %edi, %edi
movl (%rsi,%rbp,4), %r8d
movl %r8d, -0x4(%rsi,%rdx,4)
movl $0x0, (%rsi,%rbp,4)
incq %rdi
movl (%rax,%rcx,4), %r8d
addq $-0x4, %rsi
cmpq %r8, %rdi
jb 0x1fc0b9
movq 0x18(%r15), %rsi
movl (%rsi,%rcx,4), %edi
movq %rdx, %rsi
subq %rdi, %rsi
jb 0x1fc88b
movl (%rax,%rcx,4), %r8d
cmpl %r8d, %edi
jb 0x1fc890
cmpl %r8d, %edi
jbe 0x1fc12e
notq %r8
addq %r8, %rdx
cmpq %rsi, %rdx
jl 0x1fc12e
leaq (,%rsi,4), %rdi
addq %r13, %rdi
leaq (,%rdx,4), %rdx
addq %r13, %rdx
movl $0x0, (%rdx)
addq $-0x4, %rdx
cmpq %rdi, %rdx
jae 0x1fc11f
testq %rcx, %rcx
je 0x1fc141
movl (%rax,%rcx,4), %edx
subq %rdx, %rbp
movq %rsi, %rdx
jmp 0x1fc09a
movq 0x20(%r15), %rax
movl $0x0, (%rax)
movq 0x8(%r15), %rcx
cmpq $0x2, %rcx
jb 0x1fc16f
movq 0x18(%r15), %rdx
decq %rcx
xorl %esi, %esi
xorl %edi, %edi
addl (%rdx,%rsi,4), %edi
movl %edi, 0x4(%rax,%rsi,4)
incq %rsi
cmpq %rsi, %rcx
jne 0x1fc160
cmpq $0x0, 0xd8(%rsp)
je 0x1fc215
movq 0xd0(%rsp), %rdi
callq 0x108f3c
testb %al, %al
je 0x1fc1ad
movq 0x2c7d52(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x1c67e8(%rip), %rsi    # 0x3c2988
movq 0xd8(%rsp), %rdi
callq 0x1229c8
movq %r15, %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0x1fd31f
movq 0x18(%r15), %rax
movq 0x20(%r15), %rcx
movl (%rax), %edx
movl %edx, (%rcx)
movq 0x8(%r15), %rsi
cmpq $0x2, %rsi
jb 0x1fc1e4
movl $0x1, %edi
addl (%rax,%rdi,4), %edx
movl %edx, (%rcx,%rdi,4)
incq %rdi
cmpq %rdi, %rsi
jne 0x1fc1d6
movq 0xd0(%rsp), %rdi
callq 0x108f3c
testb %al, %al
je 0x1fc24c
movq 0x2c7cec(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x1c679a(%rip), %rsi    # 0x3c29a0
movq 0xd8(%rsp), %rdi
callq 0x1229c8
jmp 0x1fc24c
movq %r15, %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0x1fd31f
movq 0x18(%r15), %rax
movq 0x20(%r15), %rcx
movl (%rax), %edx
movl %edx, (%rcx)
movq 0x8(%r15), %rsi
cmpq $0x2, %rsi
jb 0x1fc24c
movl $0x1, %edi
addl (%rax,%rdi,4), %edx
movl %edx, (%rcx,%rdi,4)
incq %rdi
cmpq %rdi, %rsi
jne 0x1fc23e
movl 0x50(%r15), %eax
cmpq $0x3, %rax
ja 0x1fc544
leaq 0x1c6467(%rip), %rcx    # 0x3c26c8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq (%rsp), %r15
movq 0x38(%r15), %rbx
movq 0x20(%r15), %r14
movl (%r15), %edx
movq %r15, %rdi
movq %r13, %rsi
movq 0x20(%rsp), %r12
movq %r12, %rcx
callq 0x1fe72a
movl 0x50(%r15), %eax
andl $-0x2, %eax
cmpl $0x2, %eax
jne 0x1fc2a6
movq %r15, %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0x1fe7a6
leaq -0x4(,%r12,4), %rax
addq %r13, %rax
cmpq %r13, %rax
jb 0x1fc544
xorl %ecx, %ecx
xorl %edx, %edx
movslq (%rax), %rsi
testq %rsi, %rsi
jle 0x1fc32c
leal -0x1(%rsi), %edi
movzbl (%rbx,%rdi), %r8d
movq (%rsp), %r9
cmpq %r8, 0x8(%r9)
jbe 0x1fc330
testq %rdx, %rdx
je 0x1fc2ed
cmpq %r8, %rcx
je 0x1fc2ff
subq %r13, %rdx
shrq $0x2, %rdx
movl %edx, (%r14,%rcx,4)
movl (%r14,%r8,4), %ecx
leaq (,%rcx,4), %rdx
addq %r13, %rdx
movq %r8, %rcx
testq %rdx, %rdx
je 0x1fc8ae
leaq 0x4(%rax), %r9
cmpq %r9, %rdx
jae 0x1fc8ae
testl %edi, %edi
je 0x1fc320
cmpb %r8b, -0x2(%rbx,%rsi)
jbe 0x1fc324
negl %esi
movl %esi, %edi
addq $-0x4, %rdx
movl %edi, (%rdx)
jmp 0x1fc330
notl %esi
movl %esi, (%rax)
addq $-0x4, %rax
cmpq %r13, %rax
jae 0x1fc2be
jmp 0x1fc544
movq (%rsp), %r15
movq 0x38(%r15), %rbx
movq 0x20(%r15), %r14
movl (%r15), %edx
movq %r15, %rdi
movq %r13, %rsi
movq 0x20(%rsp), %r12
movq %r12, %rcx
callq 0x1fe72a
movl 0x50(%r15), %eax
andl $-0x2, %eax
cmpl $0x2, %eax
jne 0x1fc37a
movq %r15, %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0x1fe7a6
leaq -0x4(,%r12,4), %rax
addq %r13, %rax
cmpq %r13, %rax
jb 0x1fc544
xorl %ecx, %ecx
xorl %edx, %edx
movslq (%rax), %rsi
testq %rsi, %rsi
jle 0x1fc3ff
leal -0x1(%rsi), %edi
movl (%rbx,%rdi,4), %r8d
movq (%rsp), %r9
cmpq %r8, 0x8(%r9)
jbe 0x1fc403
testq %rdx, %rdx
je 0x1fc3c0
cmpq %r8, %rcx
je 0x1fc3d2
subq %r13, %rdx
shrq $0x2, %rdx
movl %edx, (%r14,%rcx,4)
movl (%r14,%r8,4), %ecx
leaq (,%rcx,4), %rdx
addq %r13, %rdx
movq %r8, %rcx
testq %rdx, %rdx
je 0x1fc8c7
leaq 0x4(%rax), %r9
cmpq %r9, %rdx
jae 0x1fc8c7
testl %edi, %edi
je 0x1fc3f3
cmpl %r8d, -0x8(%rbx,%rsi,4)
jbe 0x1fc3f7
negl %esi
movl %esi, %edi
addq $-0x4, %rdx
movl %edi, (%rdx)
jmp 0x1fc403
notl %esi
movl %esi, (%rax)
addq $-0x4, %rax
cmpq %r13, %rax
jae 0x1fc392
jmp 0x1fc544
movq (%rsp), %rbx
movq 0x38(%rbx), %rax
movq %rax, 0x18(%rsp)
movq 0x20(%rbx), %rax
movq %rax, 0x30(%rsp)
movl (%rbx), %edx
movq %rbx, %rdi
movq %r13, %rsi
movq 0x20(%rsp), %r14
movq %r14, %rcx
callq 0x1fe72a
movl 0x50(%rbx), %eax
andl $-0x2, %eax
cmpl $0x2, %eax
jne 0x1fc456
movq (%rsp), %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0x1fe7a6
leaq -0x4(,%r14,4), %r12
addq %r13, %r12
cmpq %r13, %r12
jb 0x1fc544
xorl %r15d, %r15d
xorl %ebx, %ebx
movl (%r12), %r14d
testl %r14d, %r14d
jle 0x1fc526
movq %r15, %rbp
leal -0x1(%r14), %esi
movq (%rsp), %r15
movl 0x40(%r15), %edx
movq 0x18(%rsp), %rdi
movq %rsi, %r13
callq 0xec1f8
movzbl %al, %edx
cmpq %rdx, 0x8(%r15)
jbe 0x1fc52f
testq %rbx, %rbx
movq %rbp, %r15
movq %r13, %rbp
je 0x1fc4c7
cmpq %rdx, %r15
je 0x1fc4db
subq 0x8(%rsp), %rbx
shrq $0x2, %rbx
movq 0x30(%rsp), %rax
movl %ebx, (%rax,%r15,4)
movq 0x30(%rsp), %rax
movl (%rax,%rdx,4), %eax
movq 0x8(%rsp), %rcx
leaq (%rcx,%rax,4), %rbx
movq %rdx, %r15
testq %rbx, %rbx
je 0x1fc8cc
leaq 0x4(%r12), %rax
cmpq %rax, %rbx
jae 0x1fc8cc
testl %ebp, %ebp
je 0x1fc513
leal -0x2(%r14), %esi
movq (%rsp), %rax
movq %rdx, %r13
movl 0x40(%rax), %edx
movq 0x18(%rsp), %rdi
callq 0xec1f8
cmpb %r13b, %al
jbe 0x1fc519
negl %r14d
movl %r14d, %ebp
addq $-0x4, %rbx
movl %ebp, (%rbx)
movq 0x8(%rsp), %r13
jmp 0x1fc537
notl %r14d
movl %r14d, (%r12)
jmp 0x1fc537
movq 0x8(%rsp), %r13
movq %rbp, %r15
addq $-0x4, %r12
cmpq %r13, %r12
jae 0x1fc46f
movq 0x20(%rsp), %rbx
testq %rbx, %rbx
sete %al
orb 0x10(%rsp), %al
movq (%rsp), %r14
jne 0x1fc568
leaq -0x1(%rbx), %rdx
movq %r14, %rdi
movq %r13, %rsi
callq 0x1fd221
movl 0x50(%r14), %eax
leal -0x2(%rax), %ecx
cmpl $0x2, %ecx
jae 0x1fc685
cmpq $0x0, 0xd8(%rsp)
je 0x1fc5b2
movq 0xd0(%rsp), %rdi
callq 0x108f3c
testb %al, %al
je 0x1fc5b2
movq 0x2c794d(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x1c6413(%rip), %rsi    # 0x3c29b8
movq 0xd8(%rsp), %rdi
callq 0x1229c8
leaq (,%rbx,4), %rbx
addq %r13, %rbx
movl 0x40(%r14), %ebp
movl 0x50(%r14), %eax
cmpl $0x3, %eax
je 0x1fc69b
cmpl $0x2, %eax
jne 0x1fc8f4
movq 0x38(%r14), %rdi
callq 0xf0b87
movq %rax, %r15
movq 0x38(%r14), %rdi
callq 0xec1d8
movq %rax, %r12
movq 0x38(%r14), %rdi
callq 0xef27f
testb %al, %al
je 0x1fc780
movq (%rsp), %rax
movq 0x38(%rax), %rdi
andl $-0x3, %ebp
xorl %esi, %esi
cmpl $0x1, %ebp
setne %sil
callq 0xef3d9
movq %rax, %r13
leaq 0x48(%rsp), %rsi
movq %rax, %rdi
callq 0xef451
xorl %r14d, %r14d
testb %al, %al
je 0x1fc755
cmpl $0x1, %ebp
jne 0x1fc646
movq %r12, %rdi
leaq 0x48(%rsp), %rsi
callq 0xfac92
movq 0x48(%rsp), %rax
movq 0x50(%rsp), %rcx
cmpq %rcx, %rax
jae 0x1fc676
cmpq %r15, %r14
jae 0x1fc886
cmpq %r12, %rax
jae 0x1fc886
movl %eax, (%rbx,%r14,4)
incq %r14
incq %rax
cmpq %rax, %rcx
jne 0x1fc655
movq %r13, %rdi
leaq 0x48(%rsp), %rsi
callq 0xef451
jmp 0x1fc62c
cmpl $0x1, %eax
je 0x1fc788
movq (%r14), %rax
movl %eax, (%r13,%rax,4)
jmp 0x1fc788
movq 0x48(%r14), %rdi
testq %rdi, %rdi
je 0x1fc8f4
callq 0x1932a9
movq %rax, %r15
movq 0x48(%r14), %rdi
callq 0x19326b
movq %rax, %r12
testq %r15, %r15
je 0x1fc780
movq (%rsp), %rax
movq 0x48(%rax), %rdi
andl $-0x3, %ebp
xorl %esi, %esi
cmpl $0x1, %ebp
setne %sil
callq 0x1932b9
testq %rax, %rax
je 0x1fc92b
movq %rax, %r13
leaq 0x48(%rsp), %rsi
movq %rax, %rdi
callq 0x193337
testb %al, %al
je 0x1fc768
movl %ebp, %r14d
xorl %ebp, %ebp
cmpl $0x1, %r14d
jne 0x1fc713
movq %r12, %rdi
leaq 0x48(%rsp), %rsi
callq 0xfac92
movq 0x48(%rsp), %rax
movq 0x50(%rsp), %rcx
cmpq %rcx, %rax
jae 0x1fc742
cmpq %r15, %rbp
jae 0x1fc881
cmpq %r12, %rax
jae 0x1fc881
movl %eax, (%rbx,%rbp,4)
incq %rbp
incq %rax
cmpq %rax, %rcx
jne 0x1fc722
movq %r13, %rdi
leaq 0x48(%rsp), %rsi
callq 0x193337
testb %al, %al
jne 0x1fc700
jmp 0x1fc76a
cmpq %r15, %r14
jne 0x1fc935
movq %r13, %rdi
callq 0xefa48
jmp 0x1fc77b
xorl %ebp, %ebp
cmpq %r15, %rbp
jne 0x1fc930
movq %r13, %rdi
callq 0x193320
movq 0x8(%rsp), %r13
movl %r12d, (%rbx,%r15,4)
movq (%rsp), %r14
cmpb $0x0, 0xc8(%rsp)
je 0x1fc86f
cmpl $0x1, 0x50(%r14)
je 0x1fc86f
cmpq $0x0, 0xd8(%rsp)
je 0x1fc7db
movq 0xd0(%rsp), %rdi
callq 0x108f3c
testb %al, %al
je 0x1fc7db
movq 0x2c7724(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x1c61fd(%rip), %rsi    # 0x3c29cb
movq 0xd8(%rsp), %rdi
callq 0x1229c8
movl 0x50(%r14), %eax
testl %eax, %eax
je 0x1fc837
cmpl $0x2, %eax
je 0x1fc814
cmpl $0x3, %eax
jne 0x1fc93a
movq 0x48(%r14), %rdx
movl 0x40(%r14), %ecx
movq (%r14), %r8
movl 0x8(%r14), %r9d
subq $0x8, %rsp
leaq 0xd92(%rip), %rdi       # 0x1fd59d
leaq -0x1dde(%rip), %rsi     # 0x1faa34
jmp 0x1fc860
movq 0x38(%r14), %rdx
movl 0x40(%r14), %ecx
movq (%r14), %r8
movl 0x8(%r14), %r9d
subq $0x8, %rsp
leaq 0xd74(%rip), %rdi       # 0x1fd5a2
leaq -0x1dfc(%rip), %rsi     # 0x1faa39
jmp 0x1fc860
cmpl $0x0, 0x40(%r14)
jne 0x1fc93f
movq (%r14), %r8
movl 0x8(%r14), %r9d
subq $0x8, %rsp
leaq 0xd53(%rip), %rdi       # 0x1fd5a7
leaq 0xd54(%rip), %rsi       # 0x1fd5af
movq %r14, %rdx
xorl %ecx, %ecx
pushq $0x0
pushq $0x4
pushq %r13
callq 0x1f757c
addq $0x20, %rsp
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x7c576
callq 0x7c621
callq 0x7c777
callq 0x7c73e
callq 0x7bf73
callq 0x7c492
callq 0x7bf01
callq 0x7c3e7
callq 0x7bf3a
callq 0x7c53d
callq 0x7c090
callq 0x7c1e6
callq 0x7c13b
callq 0x7c291
callq 0x7c4cb
callq 0x7c504
callq 0x7c822
callq 0x7bfe5
callq 0x7c057
callq 0x7c1ad
callq 0x7c102
callq 0x7c258
callq 0x7c7e9
callq 0x7c693
callq 0x7bfac
callq 0x7c174
callq 0x7c2ca
callq 0x7c0c9
callq 0x7c21f
callq 0x7c7b0
callq 0x7c375
callq 0x7c3ae
callq 0x7c303
callq 0x7c33c
callq 0x7c5e8
callq 0x7c5af
callq 0x7c65a
callq 0x7c705
callq 0x7c6cc
callq 0x7c420
callq 0x7c459