// File: /workspace/github_c_makefile_star2_O3/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, 0x48(%rsp)
movq %r8, %rbx
movl %ecx, %r15d
movq %rdx, %r12
movq %rsi, %r13
movl %edi, 0x44(%rsp)
movq 0xd8(%rsp), %r14
testq %r14, %r14
je 0x1f1436
movq 0xd0(%rsp), %rdi
callq 0x103eac
testb %al, %al
je 0x1f1436
movq 0x2c7ab4(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x1c7d62(%rip), %rsi    # 0x3b9190
movq %r14, %rdi
callq 0x11cc90
movl 0x50(%r13), %eax
cmpq $0x3, %rax
movq %r12, 0x10(%rsp)
movq %r13, 0x8(%rsp)
movq %rbx, 0x20(%rsp)
movq %r15, 0x70(%rsp)
ja 0x1f18f7
leaq 0x1c7ba9(%rip), %rcx    # 0x3b9008
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x38(%r13), %rbx
movq %r13, %r14
movq (%r13), %r13
movq 0x8(%r14), %rdx
movq 0x20(%r14), %rsi
movq %r12, %rdi
movq %rsi, 0x28(%rsp)
movq %r13, %rcx
movq 0xd0(%rsp), %r8
callq 0x1f3e49
movq %rax, %r12
movq 0x18(%r14), %rax
movq 0x20(%r14), %rcx
movl (%rax), %edx
movl %edx, (%rcx)
movq 0x8(%r14), %rsi
cmpq $0x2, %rsi
jb 0x1f14bf
movl $0x1, %edi
addl (%rax,%rdi,4), %edx
movl %edx, (%rcx,%rdi,4)
incq %rdi
cmpq %rdi, %rsi
jne 0x1f14b1
addq $0x100, %r13            # imm = 0x100
movq 0x8(%rsp), %rax
movl (%rax), %r15d
decl %r15d
addq %r15, %rbx
movb $0x1, %al
xorl %ebp, %ebp
movq %r13, %rsi
movzbl (%rbx), %r13d
cmpq %r13, %rsi
jbe 0x1f14e9
movb $0x1, %r14b
jmp 0x1f1531
sete %cl
movl %eax, %r14d
andb %cl, %r14b
notb %al
orb %cl, %al
testb $0x1, %al
jne 0x1f1531
incq %rbp
movq 0x8(%rsp), %rax
movq 0x28(%rax), %rax
incl (%rax,%rsi,4)
testq %r12, %r12
je 0x1f151b
movq %r12, %rdi
movl %r15d, %edx
callq 0x1f3f65
jmp 0x1f1531
movq 0x28(%rsp), %rcx
movl (%rcx,%rsi,4), %eax
decl %eax
movl %eax, (%rcx,%rsi,4)
movq 0x10(%rsp), %rcx
movl %r15d, (%rcx,%rax,4)
decq %rbx
movl %r14d, %eax
addl $-0x1, %r15d
jb 0x1f14d8
movq %r12, %rdi
callq 0x1f3fd2
movq %r12, %rdi
callq 0x1f404b
leaq (,%rbp,2), %rax
movq 0x8(%rsp), %r13
movq (%r13), %rcx
cmpq %rcx, %rax
movq 0x10(%rsp), %r12
movq 0xd8(%rsp), %r14
jbe 0x1f18fd
callq 0x7a169
movq 0x38(%r13), %r15
movq (%r13), %r14
movq 0x8(%r13), %rdx
movq 0x20(%r13), %rsi
movq %r12, %rdi
movq %rsi, 0x38(%rsp)
movq %r14, %rcx
movq 0xd0(%rsp), %r8
callq 0x1f3e49
movq %rax, 0x18(%rsp)
movq 0x18(%r13), %rax
movq 0x20(%r13), %rcx
movl (%rax), %edx
movl %edx, (%rcx)
movq 0x8(%r13), %rsi
cmpq $0x2, %rsi
jb 0x1f15cf
movl $0x1, %edi
addl (%rax,%rdi,4), %edx
movl %edx, (%rcx,%rdi,4)
incq %rdi
cmpq %rdi, %rsi
jne 0x1f15c1
addq $0x100, %r14            # imm = 0x100
movl 0x40(%r13), %eax
movl %eax, %ecx
orl $0x1, %ecx
movl %eax, %esi
decl %esi
testb $0x1, %al
cmovel %ecx, %esi
xorl %ebp, %ebp
movq %r15, %rdi
xorl %edx, %edx
callq 0xe91b2
movq %rax, 0x28(%rsp)
movl (%r13), %r15d
decl %r15d
movb $0x1, %bl
movq %r14, %r13
movq 0x28(%rsp), %rdi
callq 0xe8186
leal 0x100(%r15), %ecx
cmpb $-0x2, %al
movzbl %al, %r14d
cmovaeq %rcx, %r14
cmpq %r13, %r14
jae 0x1f162a
movb $0x1, %r12b
jmp 0x1f167b
sete %al
movl %ebx, %r12d
andb %al, %r12b
notb %bl
orb %al, %bl
testb $0x1, %bl
jne 0x1f167b
incq %rbp
movq 0x8(%rsp), %rax
movq 0x28(%rax), %rax
incl (%rax,%r13,4)
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1f1663
movq %r13, %rsi
movl %r15d, %edx
callq 0x1f3f65
jmp 0x1f167b
movq 0x38(%rsp), %rcx
movl (%rcx,%r13,4), %eax
decl %eax
movl %eax, (%rcx,%r13,4)
movq 0x10(%rsp), %rcx
movl %r15d, (%rcx,%rax,4)
movl %r12d, %ebx
addl $-0x1, %r15d
jb 0x1f1602
movq 0x28(%rsp), %rdi
callq 0xe9204
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0x1f3fd2
movq %rbx, %rdi
callq 0x1f404b
leaq (,%rbp,2), %rax
movq 0x8(%rsp), %r13
movq (%r13), %rcx
cmpq %rcx, %rax
movq 0x10(%rsp), %r12
movq 0xd8(%rsp), %r14
jbe 0x1f18fd
callq 0x7a130
movq 0x38(%r13), %rbx
movq %r13, %r14
movq (%r13), %r13
movq 0x8(%r14), %rdx
movq 0x20(%r14), %rsi
movq %r12, %rdi
movq %rsi, 0x28(%rsp)
movq %r13, %rcx
movq 0xd0(%rsp), %r8
callq 0x1f3e49
movq %rax, %r12
movq 0x18(%r14), %rax
movq 0x20(%r14), %rcx
movl (%rax), %edx
movl %edx, (%rcx)
movq 0x8(%r14), %rsi
cmpq $0x2, %rsi
jb 0x1f172a
movl $0x1, %edi
addl (%rax,%rdi,4), %edx
movl %edx, (%rcx,%rdi,4)
incq %rdi
cmpq %rdi, %rsi
jne 0x1f171c
addq $0x100, %r13            # imm = 0x100
movq 0x8(%rsp), %rax
movl (%rax), %r15d
decl %r15d
addq %r15, %rbx
movb $0x1, %al
xorl %ebp, %ebp
movq %r13, %rsi
movzbl (%rbx), %ecx
leal 0x100(%r15), %r13d
cmpq $0xfe, %rcx
cmovbq %rcx, %r13
cmpq %rsi, %r13
jae 0x1f1765
movb $0x1, %r14b
jmp 0x1f17ad
sete %cl
movl %eax, %r14d
andb %cl, %r14b
notb %al
orb %cl, %al
testb $0x1, %al
jne 0x1f17ad
incq %rbp
movq 0x8(%rsp), %rax
movq 0x28(%rax), %rax
incl (%rax,%rsi,4)
testq %r12, %r12
je 0x1f1797
movq %r12, %rdi
movl %r15d, %edx
callq 0x1f3f65
jmp 0x1f17ad
movq 0x28(%rsp), %rcx
movl (%rcx,%rsi,4), %eax
decl %eax
movl %eax, (%rcx,%rsi,4)
movq 0x10(%rsp), %rcx
movl %r15d, (%rcx,%rax,4)
decq %rbx
movl %r14d, %eax
addl $-0x1, %r15d
jb 0x1f1743
movq %r12, %rdi
callq 0x1f3fd2
movq %r12, %rdi
callq 0x1f404b
leaq (,%rbp,2), %rax
movq 0x8(%rsp), %r13
movq (%r13), %rcx
cmpq %rcx, %rax
movq 0x10(%rsp), %r12
movq 0xd8(%rsp), %r14
jbe 0x1f18fd
callq 0x7a0be
movq 0x38(%r13), %rbx
movq %r13, %r14
movq (%r13), %r13
movq 0x8(%r14), %rdx
movq 0x20(%r14), %rsi
movq %r12, %rdi
movq %rsi, 0x28(%rsp)
movq %r13, %rcx
movq 0xd0(%rsp), %r8
callq 0x1f3e49
movq %rax, %r12
movq 0x18(%r14), %rax
movq 0x20(%r14), %rcx
movl (%rax), %edx
movl %edx, (%rcx)
movq 0x8(%r14), %rsi
cmpq $0x2, %rsi
jb 0x1f184c
movl $0x1, %edi
addl (%rax,%rdi,4), %edx
movl %edx, (%rcx,%rdi,4)
incq %rdi
cmpq %rdi, %rsi
jne 0x1f183e
addq $0x100, %r13            # imm = 0x100
movq 0x8(%rsp), %rax
movl (%rax), %r15d
decl %r15d
leaq (%rbx,%r15,4), %rbx
movb $0x1, %al
xorl %ebp, %ebp
movq %r13, %rsi
movl (%rbx), %r13d
cmpq %r13, %rsi
jbe 0x1f1876
movb $0x1, %r14b
jmp 0x1f18b2
sete %cl
movl %eax, %r14d
andb %cl, %r14b
notb %al
orb %cl, %al
testb $0x1, %al
jne 0x1f18b2
incq %rbp
testq %r12, %r12
je 0x1f189c
movq %r12, %rdi
movl %r15d, %edx
callq 0x1f3f65
jmp 0x1f18b2
movq 0x28(%rsp), %rcx
movl (%rcx,%rsi,4), %eax
decl %eax
movl %eax, (%rcx,%rsi,4)
movq 0x10(%rsp), %rcx
movl %r15d, (%rcx,%rax,4)
addq $-0x4, %rbx
movl %r14d, %eax
addl $-0x1, %r15d
jb 0x1f1866
movq %r12, %rdi
callq 0x1f3fd2
movq %r12, %rdi
callq 0x1f404b
leaq (,%rbp,2), %rax
movq 0x8(%rsp), %r13
movq (%r13), %rcx
cmpq %rcx, %rax
movq 0x10(%rsp), %r12
movq 0xd8(%rsp), %r14
jbe 0x1f18fd
callq 0x7a0f7
movq (%r13), %rcx
xorl %ebp, %ebp
movq 0x8(%r13), %r8
movq %r8, %xmm1
movq 0x155fd2(%rip), %xmm2   # 0x3478e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x155fd6(%rip), %xmm3   # 0x3478f0
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 0x1c7858(%rip), %rsi    # 0x3b91a6
movq 0xd0(%rsp), %rbx
movq %rbx, %rdi
movl 0x44(%rsp), %edx
movb $0x1, %al
callq 0x103fe1
movq %rbp, %xmm1
movq 0x155f6f(%rip), %xmm2   # 0x3478e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x155f73(%rip), %xmm3   # 0x3478f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movq (%r13), %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 0x1c7832(%rip), %rsi    # 0x3b91e4
movq %rbx, %rdi
movq %rbp, %rdx
movb $0x1, %al
callq 0x103fe1
testq %rbp, %rbp
movq 0x20(%rsp), %rbx
je 0x1f290b
movq 0x8(%r13), %rax
movq 0x30(%r13), %rdx
testq %rdx, %rdx
je 0x1f1a29
testq %rax, %rax
je 0x1f1a55
movq 0x18(%r13), %rsi
movq 0x20(%r13), %rcx
leaq (%rdx,%rax,4), %rdi
xorl %r8d, %r8d
xorl %r9d, %r9d
xorl %r10d, %r10d
addl (%rsi,%r10,4), %r9d
movl (%rcx,%r10,4), %r11d
cmpl %r9d, %r11d
ja 0x1f311e
cmpl %r9d, %r11d
jae 0x1f1a17
movl (%r13), %ebx
addl %ebx, (%r12,%r11,4)
movq 0x20(%rsp), %rbx
movl %r8d, (%rdx,%r10,4)
movl %r8d, (%rdi,%r10,4)
incq %r10
cmpq %r10, %rax
jne 0x1f19f4
jmp 0x1f1a2d
movq 0x20(%r13), %rcx
movl $0x0, (%rcx)
cmpq $0x2, %rax
jb 0x1f1a5f
movq 0x18(%r13), %rdx
decq %rax
xorl %esi, %esi
xorl %edi, %edi
addl (%rdx,%rsi,4), %edi
movl %edi, 0x4(%rcx,%rsi,4)
incq %rsi
cmpq %rsi, %rax
jne 0x1f1a44
jmp 0x1f1a5f
movq 0x20(%r13), %rax
movl $0x0, (%rax)
testq %r14, %r14
je 0x1f1a9e
movq 0xd0(%rsp), %rdi
callq 0x103eac
testb %al, %al
je 0x1f1a9e
cmpq $0x0, 0x30(%r13)
leaq 0x1c789d(%rip), %rax    # 0x3b931e
leaq 0x1c7773(%rip), %rsi    # 0x3b91fb
cmoveq %rax, %rsi
movq 0x2c7445(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
movq %r14, %rdi
callq 0x11cc90
movl 0x50(%r13), %eax
cmpq $0x3, %rax
ja 0x1f1b08
leaq 0x1c7569(%rip), %rcx    # 0x3b9018
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpq $0x0, 0x30(%r13)
leaq 0x25d4(%rip), %rcx      # 0x1f4098
leaq 0x2674(%rip), %rax      # 0x1f413f
jmp 0x1f1af5
cmpq $0x0, 0x30(%r13)
leaq 0x29e6(%rip), %rcx      # 0x1f44bf
leaq 0x2a85(%rip), %rax      # 0x1f4565
jmp 0x1f1af5
cmpq $0x0, 0x30(%r13)
leaq 0x275b(%rip), %rcx      # 0x1f4249
leaq 0x286f(%rip), %rax      # 0x1f4364
cmoveq %rcx, %rax
movq 0x38(%r13), %rsi
movq %r13, %rdi
movq %r12, %rdx
movq %rbx, %rcx
callq *%rax
cmpq $0x0, 0x30(%r13)
je 0x1f1b65
leaq (%r12,%rbx,4), %rdx
addq $-0x4, %rdx
cmpq %r12, %rdx
jb 0x1f1b65
leaq (%r12,%rbx,4), %rcx
movl (%r13), %eax
movl -0x4(%rcx), %esi
testl %esi, %esi
setle %dil
cmpl %eax, %esi
setge %r8b
orb %dil, %r8b
jne 0x1f1b4f
addl %eax, %esi
movl %esi, (%rdx)
addq $-0x8, %rcx
cmpq %r12, %rcx
jb 0x1f1b54
cmpl %eax, (%rcx)
jge 0x1f1b54
addq $-0x4, %rcx
jmp 0x1f1b40
movq %rdx, %rcx
jmp 0x1f1b5c
movl (%rcx), %edx
subl %eax, %edx
jl 0x1f1b5c
movl %edx, (%rcx)
leaq -0x4(%rcx), %rdx
cmpq %r12, %rdx
jae 0x1f1b24
movq 0x18(%r13), %rax
movq 0x20(%r13), %rcx
movl (%rax), %edx
movl %edx, (%rcx)
movq 0x8(%r13), %rsi
cmpq $0x2, %rsi
jb 0x1f1b8e
movl $0x1, %edi
addl (%rax,%rdi,4), %edx
movl %edx, (%rcx,%rdi,4)
incq %rdi
cmpq %rdi, %rsi
jne 0x1f1b80
testq %r14, %r14
je 0x1f1bcd
movq 0xd0(%rsp), %rdi
callq 0x103eac
testb %al, %al
je 0x1f1bcd
cmpq $0x0, 0x30(%r13)
leaq 0x1c7786(%rip), %rax    # 0x3b9336
leaq 0x1c765b(%rip), %rsi    # 0x3b9212
cmoveq %rax, %rsi
movq 0x2c7316(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
movq %r14, %rdi
callq 0x11cc90
movl 0x50(%r13), %eax
cmpq $0x3, %rax
ja 0x1f1c37
leaq 0x1c744a(%rip), %rcx    # 0x3b9028
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpq $0x0, 0x30(%r13)
leaq 0x2a7a(%rip), %rcx      # 0x1f466d
leaq 0x2b4a(%rip), %rax      # 0x1f4744
jmp 0x1f1c24
cmpq $0x0, 0x30(%r13)
leaq 0x2f3e(%rip), %rcx      # 0x1f4b46
leaq 0x300d(%rip), %rax      # 0x1f4c1c
jmp 0x1f1c24
cmpq $0x0, 0x30(%r13)
leaq 0x2c55(%rip), %rcx      # 0x1f4872
leaq 0x2d98(%rip), %rax      # 0x1f49bc
cmoveq %rcx, %rax
movq 0x38(%r13), %rsi
movq %r13, %rdi
movq %r12, %rdx
movq %rbx, %rcx
callq *%rax
cmpq $0x0, 0x30(%r13)
je 0x1f1d06
testq %r14, %r14
je 0x1f1c71
movq 0xd0(%rsp), %rdi
callq 0x103eac
testb %al, %al
je 0x1f1c71
movq 0x2c7279(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x1c7609(%rip), %rsi    # 0x3b9272
movq %r14, %rdi
callq 0x11cc90
movl (%r13), %eax
cmpq $0x1, %rbx
movq %rbx, %rdx
adcq $0x0, %rdx
xorl %ecx, %ecx
xorl %r14d, %r14d
movl (%r12,%rcx,4), %esi
testl %esi, %esi
jns 0x1f1cab
notl %esi
xorl %edi, %edi
cmpl %eax, %esi
setge %dil
addq %rdi, %r14
movl %esi, (%r12,%rcx,4)
incq %rcx
cmpq %rcx, %rdx
jne 0x1f1c85
callq 0x7a2bf
cmpq %rbp, %rcx
jae 0x1f1db0
leaq 0x1(%rcx), %rdx
cmpq %rbx, %rdx
jae 0x1f3114
movl (%r12,%rdx,4), %esi
testl %esi, %esi
js 0x1f1cd3
movl $0x0, (%r12,%rdx,4)
jmp 0x1f1d01
cmpq %rdx, %rcx
jae 0x1f3128
notl %esi
xorl %edi, %edi
cmpl %eax, %esi
setge %dil
addq %rdi, %r14
movl %esi, (%r12,%rcx,4)
incq %rcx
movl $0x0, (%r12,%rdx,4)
cmpq %rbp, %rcx
je 0x1f1db6
incq %rdx
jmp 0x1f1cb8
testq %r14, %r14
je 0x1f1e8b
movq 0xd0(%rsp), %rdi
callq 0x103eac
testb %al, %al
je 0x1f1d39
movq 0x2c71b1(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x1c74f8(%rip), %rsi    # 0x3b9229
movq %r14, %rdi
callq 0x11cc90
movq %rbp, %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0x1f37c8
movq 0xd0(%rsp), %rdi
callq 0x103eac
testb %al, %al
je 0x1f1d71
movq 0x2c7179(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x1c74d8(%rip), %rsi    # 0x3b9241
movq %r14, %rdi
callq 0x11cc90
leaq (%r12,%rbp,4), %rsi
movq %r13, %rdi
callq 0x1f3846
movq 0xd0(%rsp), %rdi
callq 0x103eac
testb %al, %al
je 0x1f1ea5
movq 0x2c713f(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x1c74b7(%rip), %rsi    # 0x3b925a
movq %r14, %rdi
callq 0x11cc90
jmp 0x1f1ea5
jne 0x1f31b3
cmpb $0x0, 0x56(%r13)
jne 0x1f1dda
movq 0x30(%r13), %rdi
leaq 0x1c72d0(%rip), %rsi    # 0x3b9098
movl $0x5a0, %edx            # imm = 0x5A0
callq 0x1045eb
movq $0x0, 0x30(%r13)
cmpq $0x0, 0xd8(%rsp)
je 0x1f1e14
movq 0xd0(%rsp), %rdi
callq 0x103eac
testb %al, %al
je 0x1f1e14
movq 0x2c70db(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x1c7480(%rip), %rsi    # 0x3b9287
movq 0xd8(%rsp), %rdi
callq 0x11cc90
movq (%r13), %rax
leaq (%r12,%rbx,4), %rcx
cmpq %rbp, %r14
jae 0x1f1e69
addq $-0x4, %rcx
cmpq %r12, %rcx
jb 0x1f2262
leaq (%r12,%rbp,4), %rdx
leaq 0x1(%r14), %rsi
movl (%rcx), %r8d
movl %r8d, %edi
subl %eax, %edi
jae 0x1f1e45
movl %r8d, %edi
jmp 0x1f1e51
testq %rsi, %rsi
je 0x1f317c
decq %rsi
cmpq %r14, %rsi
ja 0x1f1e5b
shrl %edi
movl %esi, (%rdx,%rdi,4)
addq $-0x4, %rcx
cmpq %r12, %rcx
jae 0x1f1e36
jmp 0x1f2262
testq %rbx, %rbx
jle 0x1f2262
movq %r12, %rdx
movl (%rdx), %esi
subl %eax, %esi
jb 0x1f1e7d
movl %esi, (%rdx)
addq $0x4, %rdx
cmpq %rcx, %rdx
jb 0x1f1e75
jmp 0x1f2262
movq %rbp, %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0x1f37c8
leaq (%r12,%rbp,4), %rsi
movq %r13, %rdi
callq 0x1f3846
leaq (%r12,%rbp,4), %rcx
movl (%r12), %r8d
movl %r8d, %eax
shrl %eax
movl (%rcx,%rax,4), %edx
movl $0x1, (%rcx,%rax,4)
movl $0x1, %r14d
cmpq $0x2, %rbp
jl 0x1f2262
movq %rcx, %rax
leaq 0x4(%r12), %rsi
movq %rcx, 0x30(%rsp)
movl %r8d, %ecx
movq %rdx, %r11
movl (%rsi), %r8d
movl %r8d, %edx
shrl %edx
movq %rdx, 0x28(%rsp)
movl (%rax,%rdx,4), %edx
cmpq %rdx, %r11
jne 0x1f1fb7
movl 0x50(%r13), %eax
cmpq $0x3, %rax
ja 0x1f21f1
leaq 0x1c712b(%rip), %rdi    # 0x3b9038
movslq (%rdi,%rax,4), %rax
addq %rdi, %rax
movq %r8, 0x18(%rsp)
movq %rdx, 0x38(%rsp)
movq %rsi, 0x50(%rsp)
jmpq *%rax
cmpl %r8d, %ecx
je 0x1f3195
movq (%r13), %rax
movl %ecx, %ecx
cmpq %rcx, %rax
jb 0x1f3195
cmpq %r8, %rax
jb 0x1f3195
testl %edx, %edx
je 0x1f21f1
movq 0x38(%r13), %rdx
addq %rcx, %r11
movq %rcx, %rsi
subq %r8, %rsi
movq %rcx, %rdi
cmpq %rdi, %rax
je 0x1f3144
cmpq %r8, %rax
je 0x1f2207
movb (%rdx,%r8), %r9b
cmpb %r9b, (%rdx,%rdi)
jb 0x1f2226
ja 0x1f316d
incq %rdi
incq %r8
cmpq %r11, %rdi
movq 0x10(%rsp), %r12
movq 0x8(%rsp), %r13
movq 0x20(%rsp), %rbx
jb 0x1f1f5e
movq 0x18(%rsp), %r8
movq 0x30(%rsp), %rax
movq 0x38(%rsp), %rdx
movq 0x50(%rsp), %rsi
jmp 0x1f224c
incq %r14
jmp 0x1f224c
cmpl %r8d, %ecx
je 0x1f319a
movq (%r13), %rax
movl %ecx, %r15d
cmpq %r15, %rax
jb 0x1f319a
cmpq %r8, %rax
jb 0x1f319a
testl %edx, %edx
je 0x1f21f1
movq 0x38(%r13), %rax
movq %rax, 0x80(%rsp)
addq %r15, %r11
movq %r8, %r13
movq %r11, 0x58(%rsp)
movq %r14, 0x78(%rsp)
movq 0x8(%rsp), %rax
movq (%rax), %rax
cmpq %rax, %r15
je 0x1f3168
cmpq %rax, %r13
je 0x1f21f8
movq 0x8(%rsp), %rbx
movl 0x40(%rbx), %edx
movq 0x80(%rsp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0xe7bbc
movzbl %al, %eax
movl $0x100, %ecx            # imm = 0x100
leaq (%r15,%rcx), %r12
cmpb $-0x2, %al
cmovbq %rax, %r12
movl 0x40(%rbx), %edx
movq %r14, %rdi
movq %r13, %rsi
callq 0xe7bbc
cmpb $-0x2, %al
jae 0x1f2063
movzbl %al, %eax
jmp 0x1f206b
movl $0x100, %eax            # imm = 0x100
addq %r13, %rax
movq 0x58(%rsp), %r11
movq 0x78(%rsp), %r14
cmpq %rax, %r12
jb 0x1f2226
ja 0x1f316d
incq %r15
incq %r13
cmpq %r11, %r15
movq 0x10(%rsp), %r12
movq 0x18(%rsp), %r8
movq 0x38(%rsp), %rdx
movq 0x50(%rsp), %rsi
jb 0x1f2005
movq 0x8(%rsp), %r13
movq 0x30(%rsp), %rax
jmp 0x1f2247
cmpl %r8d, %ecx
je 0x1f3190
movq (%r13), %rax
movl %ecx, %ecx
cmpq %rcx, %rax
jb 0x1f3190
cmpq %r8, %rax
jb 0x1f3190
testl %edx, %edx
je 0x1f21f1
movq 0x38(%r13), %rdx
addq %rcx, %r11
movq %rcx, %rsi
subq %r8, %rsi
movq %rsi, 0x58(%rsp)
leaq (%rdx,%rcx), %rdi
movq %r8, %r9
movq %rcx, %r8
subq %rax, %r8
addq %r9, %rdx
subq %rax, %r9
xorl %r10d, %r10d
movq %r11, %rbx
movq %r8, %r11
addq %r10, %r11
je 0x1f3156
movq %r9, %r11
addq %r10, %r11
movl $0x100, %r13d           # imm = 0x100
je 0x1f2211
movzbl (%rdi,%r10), %r11d
leaq (%rcx,%r10), %r15
addq %r13, %r15
movl $0xfe, %esi
cmpq %rsi, %r11
cmovbq %r11, %r15
movzbl (%rdx,%r10), %r11d
movq 0x18(%rsp), %r12
addq %r10, %r12
addq %r13, %r12
cmpq %rsi, %r11
cmovbq %r11, %r12
cmpq %r12, %r15
jb 0x1f2226
ja 0x1f316d
leaq (%rcx,%r10), %r11
incq %r11
incq %r10
cmpq %rbx, %r11
movq %rbx, %r11
movq 0x10(%rsp), %r12
movq 0x8(%rsp), %r13
jb 0x1f2107
jmp 0x1f2233
cmpl %r8d, %ecx
je 0x1f319f
movq (%r13), %rax
movl %ecx, %ecx
cmpq %rcx, %rax
jb 0x1f319f
cmpq %r8, %rax
jb 0x1f319f
testl %edx, %edx
je 0x1f21f1
movq 0x38(%r13), %rdx
addq %rcx, %r11
movq %rcx, %rsi
subq %r8, %rsi
movq %rcx, %rdi
cmpq %rdi, %rax
je 0x1f3132
cmpq %r8, %rax
je 0x1f221d
movl (%rdx,%r8,4), %r9d
cmpl %r9d, (%rdx,%rdi,4)
jb 0x1f2226
ja 0x1f316d
incq %rdi
incq %r8
cmpq %r11, %rdi
movq 0x10(%rsp), %r12
movq 0x8(%rsp), %r13
jb 0x1f21bc
jmp 0x1f2233
movq 0x30(%rsp), %rax
jmp 0x1f224c
cmpq %r13, %r15
movq 0x78(%rsp), %r14
jb 0x1f2226
jmp 0x1f31e0
addq %rsi, %rax
jb 0x1f2226
jmp 0x1f31ea
addq 0x58(%rsp), %rax
jb 0x1f2226
jmp 0x1f31db
addq %rsi, %rax
jae 0x1f31e5
incq %r14
movq 0x10(%rsp), %r12
movq 0x8(%rsp), %r13
movq 0x18(%rsp), %r8
movq 0x30(%rsp), %rax
movq 0x38(%rsp), %rdx
movq 0x50(%rsp), %rsi
movq 0x20(%rsp), %rbx
movq 0x28(%rsp), %rcx
movl %r14d, (%rax,%rcx,4)
addq $0x4, %rsi
cmpq %rax, %rsi
jb 0x1f1ed9
cmpq %rbp, %r14
ja 0x1f3186
jae 0x1f23c8
cmpq $0x0, 0xd8(%rsp)
je 0x1f22ab
movq 0xd0(%rsp), %rdi
callq 0x103eac
testb %al, %al
je 0x1f22ab
movq 0x2c6c44(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x1c78c3(%rip), %rsi    # 0x3b9b61
movq 0xd8(%rsp), %rdi
callq 0x11cc90
movq %rbp, %rax
decq %rax
js 0x1f22e1
leaq 0x4(%r12), %rcx
leaq (%r12,%rax,4), %rax
incq %rax
cmpq %rax, %rcx
cmovaq %rcx, %rax
movq %r12, %rdx
notq %rdx
addq %rax, %rdx
andq $-0x4, %rdx
addq $0x4, %rdx
movq %r12, %rdi
xorl %esi, %esi
callq 0x173a0
movq (%r13), %rax
testq %rax, %rax
je 0x1f31a4
leaq (%r12,%rbp,4), %rsi
leaq -0x2(,%rax,2), %rax
andq $-0x4, %rax
addq %rsi, %rax
movq %rsi, %rcx
movq %rsi, %r13
movl (%rcx), %edx
testl %edx, %edx
je 0x1f2317
decl %edx
movl %edx, (%r13)
addq $0x4, %r13
addq $0x4, %rcx
cmpq %rax, %rcx
jbe 0x1f2307
movq %rsi, 0x18(%rsp)
leaq (%r12,%rbp,8), %rax
cmpq %rax, %r13
jne 0x1f31a9
leal (,%rbp,2), %eax
cmpl $0x0, 0x44(%rsp)
movq 0x70(%rsp), %rbx
cmovel %eax, %ebx
leaq 0x1c6d4b(%rip), %rsi    # 0x3b9098
movl $0x58, %edi
movl $0xcc, %edx
callq 0x104226
movq %rax, %r15
movl $0x1, 0x50(%rax)
movq 0x18(%rsp), %rax
movq %rax, 0x38(%r15)
movq %rbp, (%r15)
movq $0x0, 0x48(%r15)
movl $0x0, 0x40(%r15)
movq %r14, 0x8(%r15)
movq 0x48(%rsp), %rax
movq %rbx, 0x70(%rsp)
subq %rbx, %rax
jbe 0x1f31ae
movq %rax, %rbx
cmpq %r14, %rax
jae 0x1f2489
movb $0x0, 0x55(%r15)
leaq (,%r14,4), %rdi
leaq 0x1c6cdf(%rip), %rsi    # 0x3b9098
movl $0xe2, %edx
callq 0x104226
jmp 0x1f24a2
cmpl $0x1, 0x50(%r13)
movq 0xd8(%rsp), %r14
jne 0x1f28ed
movq 0x8(%rsp), %r8
cmpq $0x0, 0x28(%r8)
jne 0x1f31b8
movq 0x8(%r8), %rcx
movq 0x20(%r8), %rax
movq %rax, 0x28(%r8)
testq %rcx, %rcx
je 0x1f241d
movq 0x18(%r8), %rdx
xorl %esi, %esi
xorl %edi, %edi
movl %esi, (%rax,%rdi,4)
movl %esi, (%rdx,%rdi,4)
incq %rdi
cmpq %rdi, %rcx
jne 0x1f2404
cmpl $0x1, 0x50(%r8)
jne 0x1f31cc
movq (%r8), %rdx
movq 0x38(%r8), %rsi
leaq (%rsi,%rdx,4), %rcx
addq $-0x4, %rcx
cmpq %rsi, %rcx
jb 0x1f28ed
addq $0x100, %rdx            # imm = 0x100
movq 0x8(%rsp), %rsi
movq 0x18(%rsi), %rsi
movb $0x1, %dil
movq 0x8(%rsp), %r11
movq %rdx, %r9
movl (%rcx), %edx
movb $0x1, %r8b
cmpq %rdx, %r9
ja 0x1f2474
sete %r10b
movl %edi, %r8d
andb %r10b, %r8b
notb %dil
orb %r10b, %dil
testb $0x1, %dil
jne 0x1f2474
incl (%rax,%r9,4)
incl (%rsi,%rdx,4)
addq $-0x4, %rcx
movl %r8d, %edi
cmpq 0x38(%r11), %rcx
jae 0x1f244d
jmp 0x1f28ed
movq 0x48(%rsp), %rax
leaq (%r12,%rax,4), %rax
leaq (,%r14,4), %rcx
subq %rcx, %rax
movb $0x1, 0x55(%r15)
movq %rax, 0x18(%r15)
leaq (%r14,%r14), %r12
cmpq %r12, %rbx
jae 0x1f24cf
movb $0x0, 0x54(%r15)
leaq (,%r14,4), %rdi
leaq 0x1c6bd5(%rip), %rsi    # 0x3b9098
movl $0xf3, %edx
callq 0x104226
jmp 0x1f24ed
movq 0x10(%rsp), %rax
movq 0x48(%rsp), %rcx
leaq (%rax,%rcx,4), %rax
leaq (,%r12,4), %rcx
subq %rcx, %rax
movb $0x1, 0x54(%r15)
movq %rax, 0x20(%r15)
cmpq $0x401, %rbp            # imm = 0x401
jb 0x1f253d
leaq 0x1(%rbp), %rax
shrq $0x3e, %rax
cmpl $0x2, %eax
ja 0x1f253d
cmpq %rbp, %r12
ja 0x1f253d
leaq (,%r14,4), %rax
cmpq %rax, %rbx
jae 0x1f2551
movb $0x0, 0x56(%r15)
leaq (,%r14,8), %rdi
leaq 0x1c6b6b(%rip), %rsi    # 0x3b9098
movl $0x103, %edx            # imm = 0x103
callq 0x104226
movq %rax, 0x30(%r15)
jmp 0x1f254a
movb $0x0, 0x56(%r15)
movq $0x0, 0x30(%r15)
movq 0x10(%rsp), %r12
jmp 0x1f256f
movq 0x10(%rsp), %r12
movq 0x48(%rsp), %rcx
leaq (%r12,%rcx,4), %rcx
shlq $0x2, %rax
subq %rax, %rcx
movq %rcx, 0x30(%r15)
movb $0x1, 0x56(%r15)
movq 0x20(%rsp), %rbx
movq $0x0, 0x28(%r15)
movq 0x8(%r15), %rdx
testq %rdx, %rdx
je 0x1f2594
movq 0x18(%r15), %rdi
shlq $0x2, %rdx
xorl %esi, %esi
callq 0x173a0
movq (%r15), %rax
testq %rax, %rax
jle 0x1f25c0
movq 0x18(%rsp), %rcx
leaq (%rcx,%rax,4), %rax
movl (%rcx), %edx
cmpq %rdx, %r14
jbe 0x1f3123
movq 0x18(%r15), %rsi
incl (%rsi,%rdx,4)
addq $0x4, %rcx
cmpq %rax, %rcx
jb 0x1f25a5
movl 0x44(%rsp), %edi
incl %edi
movzbl 0xc8(%rsp), %eax
movzbl 0xc0(%rsp), %r10d
movq %r15, %rsi
movq %r12, %rdx
movq 0x70(%rsp), %rcx
movq %rbp, %r8
movq 0x48(%rsp), %r9
movq 0xd8(%rsp), %r14
pushq %r14
pushq 0xd8(%rsp)
pushq %rax
pushq %r10
callq 0x1f13d9
addq $0x20, %rsp
movq %r15, %rdi
callq 0x1f31f9
testq %r14, %r14
je 0x1f263e
movq 0xd0(%rsp), %rdi
callq 0x103eac
testb %al, %al
je 0x1f263e
movq 0x2c68ac(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x1c75d3(%rip), %rsi    # 0x3b9c09
movq %r14, %rdi
callq 0x11cc90
movq 0x8(%rsp), %rax
movl 0x50(%rax), %eax
cmpq $0x3, %rax
ja 0x1f28ed
leaq 0x1c69f1(%rip), %rcx    # 0x3b9048
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x8(%rsp), %rax
movq (%rax), %rcx
movq 0x38(%rax), %rax
leaq 0x100(%rcx), %rdx
movb $0x1, %sil
movl %ecx, %r8d
movq %rdx, %rdi
leal -0x1(%r8), %ecx
movzbl (%rax,%rcx), %edx
cmpq %rdx, %rdi
jbe 0x1f268e
movb $0x1, %dil
jmp 0x1f26ab
sete %r9b
movl %esi, %edi
andb %r9b, %dil
notb %sil
orb %r9b, %sil
testb $0x1, %sil
jne 0x1f26ab
movl %r8d, -0x4(%r13)
addq $-0x4, %r13
movl %edi, %esi
testl %ecx, %ecx
jne 0x1f2676
testq %rbp, %rbp
movq 0x18(%rsp), %rdx
jle 0x1f28ed
movq %r12, %rax
movl (%rax), %ecx
movl (%r13,%rcx,4), %ecx
movl %ecx, (%rax)
addq $0x4, %rax
cmpq %rdx, %rax
jb 0x1f26c2
jmp 0x1f28ed
movq 0x8(%rsp), %r14
movq 0x38(%r14), %rdi
movl $0x100, %ebx            # imm = 0x100
addq (%r14), %rbx
movl 0x40(%r14), %eax
movl %eax, %ecx
orl $0x1, %ecx
movl %eax, %esi
decl %esi
testb $0x1, %al
cmovel %ecx, %esi
xorl %edx, %edx
callq 0xe91b2
movq %rax, 0x28(%rsp)
movl (%r14), %r14d
movb $0x1, %r12b
movq %rbx, %r15
movq 0x28(%rsp), %rdi
callq 0xe8186
leal 0xff(%r14), %ecx
cmpb $-0x2, %al
movzbl %al, %ebx
cmovaeq %rcx, %rbx
cmpq %r15, %rbx
jae 0x1f2734
movb $0x1, %al
jmp 0x1f2750
sete %cl
movl %r12d, %eax
andb %cl, %al
notb %r12b
orb %cl, %r12b
testb $0x1, %r12b
jne 0x1f2750
movl %r14d, -0x4(%r13)
addq $-0x4, %r13
movl %eax, %r12d
decl %r14d
jne 0x1f270e
movq 0x28(%rsp), %rdi
callq 0xe9204
testq %rbp, %rbp
movq 0x10(%rsp), %r12
movq 0xd8(%rsp), %r14
movq 0x20(%rsp), %rbx
movq 0x18(%rsp), %rdx
jle 0x1f28ed
movq %r12, %rax
movl (%rax), %ecx
movl (%r13,%rcx,4), %ecx
movl %ecx, (%rax)
addq $0x4, %rax
cmpq %rdx, %rax
jb 0x1f2785
jmp 0x1f28ed
movq 0x8(%rsp), %rcx
movq (%rcx), %rax
movq 0x38(%rcx), %rcx
leaq 0x100(%rax), %rdx
decl %eax
movb $0x1, %sil
movq %rdx, %rdi
leal 0x1(%rax), %r8d
movl %eax, %edx
movzbl (%rcx,%rdx), %r9d
leal 0x100(%rax), %edx
cmpq $0xfe, %r9
cmovbq %r9, %rdx
cmpq %rdi, %rdx
jae 0x1f27dd
movb $0x1, %dil
jmp 0x1f27fa
sete %r9b
movl %esi, %edi
andb %r9b, %dil
notb %sil
orb %r9b, %sil
testb $0x1, %sil
jne 0x1f27fa
movl %r8d, -0x4(%r13)
addq $-0x4, %r13
movl %edi, %esi
addl $-0x1, %eax
jb 0x1f27b4
testq %rbp, %rbp
movq 0x18(%rsp), %rdx
jle 0x1f28ed
movq %r12, %rax
movl (%rax), %ecx
movl (%r13,%rcx,4), %ecx
movl %ecx, (%rax)
addq $0x4, %rax
cmpq %rdx, %rax
jb 0x1f2812
jmp 0x1f28ed
movq 0x8(%rsp), %rdx
cmpq $0x0, 0x28(%rdx)
jne 0x1f31ef
movq (%rdx), %rsi
movq 0x38(%rdx), %rax
movq 0x20(%rdx), %rcx
movq %rcx, 0x28(%rdx)
movq 0x8(%rdx), %rdi
movq 0x18(%rdx), %rdx
testq %rdi, %rdi
je 0x1f286b
xorl %r8d, %r8d
xorl %r9d, %r9d
movl %r8d, (%rcx,%r9,4)
movl %r8d, (%rdx,%r9,4)
incq %r9
cmpq %r9, %rdi
jne 0x1f285b
testq %rdx, %rdx
je 0x1f31f4
testq %rcx, %rcx
je 0x1f31f4
leaq 0x100(%rsi), %rdi
movb $0x1, %r8b
movl %esi, %r10d
movq %rdi, %r11
leal -0x1(%r10), %esi
movl (%rax,%rsi,4), %edi
cmpq %rdi, %r11
jbe 0x1f289e
movb $0x1, %r9b
jmp 0x1f28c4
sete %bl
movl %r8d, %r9d
andb %bl, %r9b
notb %r8b
orb %bl, %r8b
testb $0x1, %r8b
jne 0x1f28bf
incl (%rcx,%r11,4)
movl %r10d, -0x4(%r13)
addq $-0x4, %r13
movq 0x20(%rsp), %rbx
incl (%rdx,%rdi,4)
movl %r9d, %r8d
testl %esi, %esi
jne 0x1f2887
testq %rbp, %rbp
movq 0x18(%rsp), %rdx
jle 0x1f28ed
movq %r12, %rax
movl (%rax), %ecx
movl (%r13,%rcx,4), %ecx
movl %ecx, (%rax)
addq $0x4, %rax
cmpq %rdx, %rax
jb 0x1f28db
cmpb $0x0, 0xc0(%rsp)
movq 0x8(%rsp), %r13
je 0x1f290b
leaq -0x1(%rbp), %rdx
movq %r13, %rdi
movq %r12, %rsi
callq 0x1f3ae0
testq %r14, %r14
je 0x1f293a
movq 0xd0(%rsp), %rdi
callq 0x103eac
testb %al, %al
je 0x1f293a
movq 0x2c65b0(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x1c69c9(%rip), %rsi    # 0x3b92fb
movq %r14, %rdi
callq 0x11cc90
movq 0x8(%r13), %rax
testq %rbp, %rbp
je 0x1f29f7
decq %rbp
movq 0x28(%r13), %rcx
movq %rax, %rdx
movq %rbx, %rsi
movl -0x4(%rcx,%rdx,4), %edi
decq %rdx
movl $0x0, %r8d
testl %edi, %edi
je 0x1f299d
leaq -0x1(%rsi), %r8
cmpq %r8, %rbp
ja 0x1f3119
movl %edi, %r8d
jae 0x1f299d
movq %r12, %rdi
xorl %r9d, %r9d
movl (%rdi,%rbp,4), %r8d
movl %r8d, -0x4(%rdi,%rsi,4)
movl $0x0, (%rdi,%rbp,4)
incq %r9
movl (%rcx,%rdx,4), %r8d
addq $-0x4, %rdi
cmpq %r8, %r9
jb 0x1f297d
movq 0x18(%r13), %rdi
movl (%rdi,%rdx,4), %r9d
movq %rsi, %rdi
subq %r9, %rdi
jb 0x1f310a
cmpl %r8d, %r9d
jb 0x1f310f
cmpl %r8d, %r9d
jbe 0x1f29e4
movl %r8d, %r8d
notq %r8
addq %r8, %rsi
cmpq %rdi, %rsi
jl 0x1f29e4
leaq (%r12,%rdi,4), %r8
leaq (%r12,%rsi,4), %rsi
movl $0x0, (%rsi)
addq $-0x4, %rsi
cmpq %r8, %rsi
jae 0x1f29d5
testq %rdx, %rdx
je 0x1f29f7
movl (%rcx,%rdx,4), %esi
subq %rsi, %rbp
movq %rdi, %rsi
jmp 0x1f2954
movq 0x20(%r13), %rcx
movl $0x0, (%rcx)
cmpq $0x2, %rax
jb 0x1f2a21
movq 0x18(%r13), %rdx
decq %rax
xorl %esi, %esi
xorl %edi, %edi
addl (%rdx,%rsi,4), %edi
movl %edi, 0x4(%rcx,%rsi,4)
incq %rsi
cmpq %rsi, %rax
jne 0x1f2a12
testq %r14, %r14
je 0x1f2ab7
movq 0xd0(%rsp), %rdi
callq 0x103eac
testb %al, %al
je 0x1f2a54
movq 0x2c6496(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x1c68cc(%rip), %rsi    # 0x3b9318
movq %r14, %rdi
callq 0x11cc90
movq %r13, %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0x1f3ba0
movq 0x18(%r13), %rax
movq 0x20(%r13), %rcx
movl (%rax), %edx
movl %edx, (%rcx)
movq 0x8(%r13), %rsi
cmpq $0x2, %rsi
jb 0x1f2a8b
movl $0x1, %edi
addl (%rax,%rdi,4), %edx
movl %edx, (%rcx,%rdi,4)
incq %rdi
cmpq %rdi, %rsi
jne 0x1f2a7d
movq 0xd0(%rsp), %rdi
callq 0x103eac
testb %al, %al
je 0x1f2aee
movq 0x2c6435(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x1c6883(%rip), %rsi    # 0x3b9330
movq %r14, %rdi
callq 0x11cc90
jmp 0x1f2aee
movq %r13, %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0x1f3ba0
movq 0x18(%r13), %rax
movq 0x20(%r13), %rcx
movl (%rax), %edx
movl %edx, (%rcx)
movq 0x8(%r13), %rsi
cmpq $0x2, %rsi
jb 0x1f2aee
movl $0x1, %edi
addl (%rax,%rdi,4), %edx
movl %edx, (%rcx,%rdi,4)
incq %rdi
cmpq %rdi, %rsi
jne 0x1f2ae0
movl 0x50(%r13), %eax
cmpq $0x3, %rax
ja 0x1f2daf
leaq 0x1c6555(%rip), %rcx    # 0x3b9058
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x38(%r13), %rbx
movq 0x20(%r13), %r14
movl (%r13), %edx
movq %r13, %rdi
movq %r12, %rsi
movq 0x20(%rsp), %r15
movq %r15, %rcx
callq 0x1f4fb8
movl 0x50(%r13), %eax
andl $-0x2, %eax
cmpl $0x2, %eax
jne 0x1f2b45
movq %r13, %rdi
movq %r12, %rsi
movq %r15, %rdx
callq 0x1f5034
leaq (%r12,%r15,4), %rax
addq $-0x4, %rax
cmpq %r12, %rax
jb 0x1f2daf
xorl %ecx, %ecx
xorl %edx, %edx
movslq (%rax), %rsi
testq %rsi, %rsi
jle 0x1f2bbd
leal -0x1(%rsi), %edi
movzbl (%rbx,%rdi), %r8d
cmpq %r8, 0x8(%r13)
jbe 0x1f2bc1
testq %rdx, %rdx
je 0x1f2b85
cmpq %r8, %rcx
je 0x1f2b99
subq %r12, %rdx
shrq $0x2, %rdx
movl %edx, (%r14,%rcx,4)
testq %r12, %r12
je 0x1f312d
movl (%r14,%r8,4), %ecx
leaq (%r12,%rcx,4), %rdx
movq %r8, %rcx
leaq 0x4(%rax), %r9
cmpq %r9, %rdx
jae 0x1f312d
testl %edi, %edi
je 0x1f2bb1
cmpb %r8b, -0x2(%rbx,%rsi)
jbe 0x1f2bb5
negl %esi
movl %esi, %edi
addq $-0x4, %rdx
movl %edi, (%rdx)
jmp 0x1f2bc1
notl %esi
movl %esi, (%rax)
addq $-0x4, %rax
cmpq %r12, %rax
jae 0x1f2b5a
jmp 0x1f2daf
movq 0x38(%r13), %rbx
movq 0x20(%r13), %r14
movl (%r13), %edx
movq %r13, %rdi
movq %r12, %rsi
movq 0x20(%rsp), %r15
movq %r15, %rcx
callq 0x1f4fb8
movl 0x50(%r13), %eax
andl $-0x2, %eax
cmpl $0x2, %eax
jne 0x1f2c08
movq %r13, %rdi
movq %r12, %rsi
movq %r15, %rdx
callq 0x1f5034
leaq (%r12,%r15,4), %rax
addq $-0x4, %rax
cmpq %r12, %rax
jb 0x1f2daf
xorl %ecx, %ecx
xorl %edx, %edx
movslq (%rax), %rsi
testq %rsi, %rsi
jle 0x1f2c7f
leal -0x1(%rsi), %edi
movl (%rbx,%rdi,4), %r8d
cmpq %r8, 0x8(%r13)
jbe 0x1f2c83
testq %rdx, %rdx
je 0x1f2c47
cmpq %r8, %rcx
je 0x1f2c5b
subq %r12, %rdx
shrq $0x2, %rdx
movl %edx, (%r14,%rcx,4)
testq %r12, %r12
je 0x1f3172
movl (%r14,%r8,4), %ecx
leaq (%r12,%rcx,4), %rdx
movq %r8, %rcx
leaq 0x4(%rax), %r9
cmpq %r9, %rdx
jae 0x1f3172
testl %edi, %edi
je 0x1f2c73
cmpl %r8d, -0x8(%rbx,%rsi,4)
jbe 0x1f2c77
negl %esi
movl %esi, %edi
addq $-0x4, %rdx
movl %edi, (%rdx)
jmp 0x1f2c83
notl %esi
movl %esi, (%rax)
addq $-0x4, %rax
cmpq %r12, %rax
jae 0x1f2c1d
jmp 0x1f2daf
movq 0x38(%r13), %rax
movq %rax, 0x28(%rsp)
movq 0x20(%r13), %rax
movq %rax, 0x18(%rsp)
movl (%r13), %edx
movq %r13, %rdi
movq %r12, %rsi
movq 0x20(%rsp), %rbx
movq %rbx, %rcx
callq 0x1f4fb8
movl 0x50(%r13), %eax
andl $-0x2, %eax
cmpl $0x2, %eax
jne 0x1f2cd4
movq %r13, %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0x1f5034
leaq (%r12,%rbx,4), %r14
addq $-0x4, %r14
cmpq %r12, %r14
jb 0x1f2daf
xorl %r15d, %r15d
xorl %ebp, %ebp
movl (%r14), %r12d
testl %r12d, %r12d
jle 0x1f2d97
leal -0x1(%r12), %ebx
movl 0x40(%r13), %edx
movq 0x28(%rsp), %rdi
movq %rbx, %rsi
callq 0xe7bbc
movq %r13, %rcx
movzbl %al, %r13d
cmpq %r13, 0x8(%rcx)
jbe 0x1f2d90
testq %rbp, %rbp
je 0x1f2d35
cmpq %r13, %r15
je 0x1f2d56
subq 0x10(%rsp), %rbp
shrq $0x2, %rbp
movq 0x18(%rsp), %rax
movl %ebp, (%rax,%r15,4)
cmpq $0x0, 0x10(%rsp)
je 0x1f3177
movq 0x18(%rsp), %rax
movl (%rax,%r13,4), %eax
movq 0x10(%rsp), %rcx
leaq (%rcx,%rax,4), %rbp
movq %r13, %r15
leaq 0x4(%r14), %rax
cmpq %rax, %rbp
jae 0x1f3177
testl %ebx, %ebx
je 0x1f2d83
leal -0x2(%r12), %esi
movq 0x8(%rsp), %rax
movl 0x40(%rax), %edx
movq 0x28(%rsp), %rdi
callq 0xe7bbc
cmpb %r13b, %al
jbe 0x1f2d89
negl %r12d
movl %r12d, %ebx
addq $-0x4, %rbp
movl %ebx, (%rbp)
movq 0x8(%rsp), %r13
jmp 0x1f2d9d
notl %r12d
movl %r12d, (%r14)
addq $-0x4, %r14
movq 0x10(%rsp), %r12
cmpq %r12, %r14
jae 0x1f2cea
movq 0x20(%rsp), %rbx
testq %rbx, %rbx
sete %al
movb 0xc0(%rsp), %cl
xorb $0x1, %cl
orb %al, %cl
jne 0x1f2dd7
leaq -0x1(%rbx), %rdx
movq %r13, %rdi
movq %r12, %rsi
callq 0x1f3ae0
movl 0x50(%r13), %eax
leal -0x2(%rax), %ecx
cmpl $0x2, %ecx
movq 0xd8(%rsp), %r14
jae 0x1f2f01
testq %r14, %r14
je 0x1f2e1e
movq 0xd0(%rsp), %rdi
callq 0x103eac
testb %al, %al
je 0x1f2e1e
movq 0x2c60cc(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x1c6532(%rip), %rsi    # 0x3b9348
movq %r14, %rdi
callq 0x11cc90
leaq (%r12,%rbx,4), %rbx
movl 0x40(%r13), %ebp
movl 0x50(%r13), %eax
cmpl $0x3, %eax
je 0x1f2f17
cmpl $0x2, %eax
jne 0x1f318b
movq 0x38(%r13), %rdi
callq 0xec58b
movq %rax, %r12
movq 0x38(%r13), %rdi
callq 0xe7b9c
movq %r13, %r14
movq %rax, %r13
movq 0x38(%r14), %rdi
callq 0xeacd6
testb %al, %al
je 0x1f2fdf
movq 0x38(%r14), %rdi
andl $-0x3, %ebp
xorl %esi, %esi
movl %ebp, 0x20(%rsp)
cmpl $0x1, %ebp
setne %sil
callq 0xeae2c
movq %rax, %r15
leaq 0x60(%rsp), %rsi
movq %rax, %rdi
callq 0xeae9a
xorl %ebp, %ebp
movq 0xd8(%rsp), %r14
testb %al, %al
je 0x1f2fe9
cmpl $0x1, 0x20(%rsp)
jne 0x1f2eb7
movq %r13, %rdi
leaq 0x60(%rsp), %rsi
callq 0xf6579
movq 0x60(%rsp), %rax
movq 0x68(%rsp), %rcx
cmpq %rcx, %rax
jae 0x1f2ef2
movq %rbp, %rdx
subq %rax, %rdx
addq %rcx, %rdx
cmpq %r12, %rbp
jae 0x1f3105
cmpq %r13, %rax
jae 0x1f3105
movl %eax, (%rbx,%rbp,4)
incq %rbp
incq %rax
cmpq %rax, %rcx
jne 0x1f2ecf
movq %rdx, %rbp
movq %r15, %rdi
leaq 0x60(%rsp), %rsi
callq 0xeae9a
jmp 0x1f2e9b
cmpl $0x1, %eax
je 0x1f300d
movq (%r13), %rax
movl %eax, (%r12,%rax,4)
jmp 0x1f300d
movq 0x48(%r13), %rdi
testq %rdi, %rdi
je 0x1f318b
callq 0x18ac40
movq %rax, %r12
movq 0x48(%r13), %rdi
callq 0x18ac02
movq %r13, %rcx
movq %rax, %r13
testq %r12, %r12
je 0x1f2ffc
movq 0x48(%rcx), %rdi
movl %ebp, %eax
andl $-0x3, %eax
xorl %esi, %esi
movl %eax, %ebp
cmpl $0x1, %eax
setne %sil
callq 0x18ac50
testq %rax, %rax
je 0x1f31bd
movq %rax, %r15
leaq 0x60(%rsp), %rsi
movq %rax, %rdi
callq 0x18acce
xorl %r14d, %r14d
testb %al, %al
je 0x1f2fce
cmpl $0x1, %ebp
jne 0x1f2f8f
movq %r13, %rdi
leaq 0x60(%rsp), %rsi
callq 0xf6579
movq 0x60(%rsp), %rax
movq 0x68(%rsp), %rcx
cmpq %rcx, %rax
jae 0x1f2fbf
cmpq %r12, %r14
jae 0x1f3100
cmpq %r13, %rax
jae 0x1f3100
movl %eax, (%rbx,%r14,4)
incq %r14
incq %rax
cmpq %rax, %rcx
jne 0x1f2f9e
movq %r15, %rdi
leaq 0x60(%rsp), %rsi
callq 0x18acce
jmp 0x1f2f79
cmpq %r12, %r14
jne 0x1f31c2
movq %r15, %rdi
callq 0x18acb7
movq 0xd8(%rsp), %r14
jmp 0x1f2fff
cmpq %r12, %rbp
jne 0x1f31c7
movq %r15, %rdi
callq 0xeb455
jmp 0x1f2fff
xorl %r12d, %r12d
movl %r13d, (%rbx,%r12,4)
movq 0x10(%rsp), %r12
movq 0x8(%rsp), %r13
cmpb $0x0, 0xc8(%rsp)
je 0x1f30ee
movl 0x50(%r13), %eax
cmpl $0x1, %eax
je 0x1f30ee
testq %r14, %r14
je 0x1f305b
movq 0xd0(%rsp), %rdi
callq 0x103eac
testb %al, %al
je 0x1f3057
movq 0x2c5e93(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x1c630c(%rip), %rsi    # 0x3b935b
movq %r14, %rdi
callq 0x11cc90
movl 0x50(%r13), %eax
testl %eax, %eax
je 0x1f30b5
cmpl $0x2, %eax
je 0x1f3091
cmpl $0x3, %eax
jne 0x1f31d1
movq 0x48(%r13), %rdx
movl 0x40(%r13), %ecx
movq (%r13), %r8
movl 0x8(%r13), %r9d
subq $0x8, %rsp
leaq 0xda5(%rip), %rdi       # 0x1f3e2d
leaq -0x1e0b(%rip), %rsi     # 0x1f1284
jmp 0x1f30df
movq 0x38(%r13), %rdx
movl 0x40(%r13), %ecx
movq (%r13), %r8
movl 0x8(%r13), %r9d
subq $0x8, %rsp
leaq 0xd86(%rip), %rdi       # 0x1f3e32
leaq -0x1e2a(%rip), %rsi     # 0x1f1289
jmp 0x1f30df
cmpl $0x0, 0x40(%r13)
jne 0x1f31d6
movq (%r13), %r8
movl 0x8(%r13), %r9d
subq $0x8, %rsp
leaq 0xd64(%rip), %rdi       # 0x1f3e37
leaq 0xd65(%rip), %rsi       # 0x1f3e3f
movq %r13, %rdx
xorl %ecx, %ecx
pushq $0x0
pushq $0x4
pushq %r12
callq 0x1eddc8
addq $0x20, %rsp
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x7a934
callq 0x7a9df
callq 0x7a850
callq 0x7a817
callq 0x7a24d
callq 0x7a7de
callq 0x7a1a2
callq 0x7a6c1
callq 0x7a214
callq 0x7a8fb
movq 0x18(%rsp), %rdx
subq %rcx, %rdx
addq %rdx, %rax
jb 0x1f316d
callq 0x7a3dc
movq 0x18(%rsp), %rdx
subq %rcx, %rdx
addq %rdx, %rax
jb 0x1f316d
callq 0x7a532
movq 0x18(%rsp), %rdx
subq %rcx, %rdx
addq %rdx, %rax
jb 0x1f316d
callq 0x7a331
cmpq %r13, %r15
jbe 0x1f3181
callq 0x7a56b
callq 0x7a889
callq 0x7a8c2
callq 0x7a286
callq 0x7a487
callq 0x7a7a5
callq 0x7aa51
callq 0x7a36a
callq 0x7a5a4
callq 0x7a4c0
callq 0x7a415
callq 0x7a76c
callq 0x7a64f
callq 0x7a688
callq 0x7a1db
callq 0x7a5dd
callq 0x7a9a6
callq 0x7a96d
callq 0x7aa18
callq 0x7a616
callq 0x7aac3
callq 0x7aa8a
callq 0x7a2f8
callq 0x7a44e
callq 0x7a3a3
callq 0x7a4f9
callq 0x7a6fa
callq 0x7a733