// File: /workspace/github_c_makefile_star2_O2/fukunagatsu[P]RIblast/sais.c
// Function: sais_main
static
sais_index_type
sais_main(const void *T, sais_index_type *SA,
          sais_index_type fs, sais_index_type n, sais_index_type k, int cs,
          sais_bool_type isbwt) {
  sais_index_type *C, *B, *D, *RA, *b;
  sais_index_type i, j, m, p, q, t, name, pidx = 0, newfs;
  sais_index_type c0, c1;
  unsigned int flags;

  assert((T != NULL) && (SA != NULL));
  assert((0 <= fs) && (0 < n) && (1 <= k));

  if(k <= MINBUCKETSIZE) {
    if((C = SAIS_MYMALLOC(k, sais_index_type)) == NULL) { return -2; }
    if(k <= fs) {
      B = SA + (n + fs - k);
      flags = 1;
    } else {
      if((B = SAIS_MYMALLOC(k, sais_index_type)) == NULL) { SAIS_MYFREE(C, k, sais_index_type); return -2; }
      flags = 3;
    }
  } else if(k <= fs) {
    C = SA + (n + fs - k);
    if(k <= (fs - k)) {
      B = C - k;
      flags = 0;
    } else if(k <= (MINBUCKETSIZE * 4)) {
      if((B = SAIS_MYMALLOC(k, sais_index_type)) == NULL) { return -2; }
      flags = 2;
    } else {
      B = C;
      flags = 8;
    }
  } else {
    if((C = B = SAIS_MYMALLOC(k, sais_index_type)) == NULL) { return -2; }
    flags = 4 | 8;
  }
  if((n <= SAIS_LMSSORT2_LIMIT) && (2 <= (n / k))) {
    if(flags & 1) { flags |= ((k * 2) <= (fs - k)) ? 32 : 16; }
    else if((flags == 0) && ((k * 2) <= (fs - k * 2))) { flags |= 32; }
  }

  /* stage 1: reduce the problem by at least 1/2
     sort all the LMS-substrings */
  getCounts(T, C, n, k, cs); getBuckets(C, B, k, 1); /* find ends of buckets */
  for(i = 0; i < n; ++i) { SA[i] = 0; }
  b = &t; i = n - 1; j = n; m = 0; c0 = chr(n - 1);
  do { c1 = c0; } while((0 <= --i) && ((c0 = chr(i)) >= c1));
  for(; 0 <= i;) {
    do { c1 = c0; } while((0 <= --i) && ((c0 = chr(i)) <= c1));
    if(0 <= i) {
      *b = j; b = SA + --B[c1]; j = i; ++m;
      do { c1 = c0; } while((0 <= --i) && ((c0 = chr(i)) >= c1));
    }
  }

  if(1 < m) {
    if(flags & (16 | 32)) {
      if(flags & 16) {
        if((D = SAIS_MYMALLOC(k * 2, sais_index_type)) == NULL) {
          if(flags & (1 | 4)) { SAIS_MYFREE(C, k, sais_index_type); }
          if(flags & 2) { SAIS_MYFREE(B, k, sais_index_type); }
          return -2;
        }
      } else {
        D = B - k * 2;
      }
      assert((j + 1) < n);
      ++B[chr(j + 1)];
      for(i = 0, j = 0; i < k; ++i) {
        j += C[i];
        if(B[i] != j) { assert(SA[B[i]] != 0); SA[B[i]] += n; }
        D[i] = D[i + k] = 0;
      }
      LMSsort2(T, SA, C, B, D, n, k, cs);
      name = LMSpostproc2(SA, n, m);
      if(flags & 16) { SAIS_MYFREE(D, k * 2, sais_index_type); }
    } else {
      LMSsort1(T, SA, C, B, n, k, cs);
      name = LMSpostproc1(T, SA, n, m, cs);
    }
  } else if(m == 1) {
    *b = j + 1;
    name = 1;
  } else {
    name = 0;
  }

  /* stage 2: solve the reduced problem
     recurse if names are not yet unique */
  if(name < m) {
    if(flags & 4) { SAIS_MYFREE(C, k, sais_index_type); }
    if(flags & 2) { SAIS_MYFREE(B, k, sais_index_type); }
    newfs = (n + fs) - (m * 2);
    if((flags & (1 | 4 | 8)) == 0) {
      if((k + name) <= newfs) { newfs -= k; }
      else { flags |= 8; }
    }
    assert((n >> 1) <= (newfs + m));
    RA = SA + m + newfs;
    for(i = m + (n >> 1) - 1, j = m - 1; m <= i; --i) {
      if(SA[i] != 0) {
        RA[j--] = SA[i] - 1;
      }
    }
    if(sais_main(RA, SA, newfs, m, name, sizeof(sais_index_type), 0) != 0) {
      if(flags & 1) { SAIS_MYFREE(C, k, sais_index_type); }
      return -2;
    }

    i = n - 1; j = m - 1; c0 = chr(n - 1);
    do { c1 = c0; } while((0 <= --i) && ((c0 = chr(i)) >= c1));
    for(; 0 <= i;) {
      do { c1 = c0; } while((0 <= --i) && ((c0 = chr(i)) <= c1));
      if(0 <= i) {
        RA[j--] = i + 1;
        do { c1 = c0; } while((0 <= --i) && ((c0 = chr(i)) >= c1));
      }
    }
    for(i = 0; i < m; ++i) { SA[i] = RA[SA[i]]; }
    if(flags & 4) {
      if((C = B = SAIS_MYMALLOC(k, int)) == NULL) { return -2; }
    }
    if(flags & 2) {
      if((B = SAIS_MYMALLOC(k, int)) == NULL) {
        if(flags & 1) { SAIS_MYFREE(C, k, sais_index_type); }
        return -2;
      }
    }
  }

  /* stage 3: induce the result for the original problem */
  if(flags & 8) { getCounts(T, C, n, k, cs); }
  /* put all left-most S characters into their buckets */
  if(1 < m) {
    getBuckets(C, B, k, 1); /* find ends of buckets */
    i = m - 1, j = n, p = SA[m - 1], c1 = chr(p);
    do {
      q = B[c0 = c1];
      while(q < j) { SA[--j] = 0; }
      do {
        SA[--j] = p;
        if(--i < 0) { break; }
        p = SA[i];
      } while((c1 = chr(p)) == c0);
    } while(0 <= i);
    while(0 < j) { SA[--j] = 0; }
  }
  if(isbwt == 0) { induceSA(T, SA, C, B, n, k, cs); }
  else { pidx = computeBWT(T, SA, C, B, n, k, cs); }
  if(flags & (1 | 4)) { SAIS_MYFREE(C, k, sais_index_type); }
  if(flags & 2) { SAIS_MYFREE(B, k, sais_index_type); }

  return pidx;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
testq %rdi, %rdi
je 0x156db
movl %r8d, %ebp
movl %edx, %r8d
testl %edx, %edx
js 0x156fa
testl %ecx, %ecx
jle 0x156fa
testl %ebp, %ebp
jle 0x156fa
movl %r9d, %ebx
movq %rsi, %r14
movq %rdi, %r15
pushq $-0x2
popq %r12
movl %ebp, %esi
cmpl $0x100, %ebp            # imm = 0x100
movq %rcx, 0x10(%rsp)
movq %rsi, 0x60(%rsp)
movq %r8, 0x50(%rsp)
ja 0x140cf
leal (,%rbp,4), %r12d
movq %r12, %rdi
callq 0x32c0
testq %rax, %rax
je 0x15477
movq %rax, %r13
movq 0x50(%rsp), %r8
cmpl %ebp, %r8d
jae 0x14148
movq %r12, %rdi
callq 0x32c0
testq %rax, %rax
je 0x1546f
movq %rax, %rdx
pushq $0x3
popq %rax
movq %rax, 0x18(%rsp)
xorl %edi, %edi
movq %r13, %r12
movq %rdx, %r13
jmp 0x140fc
movl %r8d, %eax
subl %ebp, %eax
jae 0x1410b
leaq (,%rsi,4), %rdi
callq 0x32c0
testq %rax, %rax
je 0x1547b
movq %rax, %r13
pushq $0xc
popq %rax
movq %rax, 0x18(%rsp)
xorl %edi, %edi
movq %r13, %r12
movq 0x10(%rsp), %rcx
movq 0x50(%rsp), %r8
jmp 0x14194
leal (%rcx,%r8), %edx
subl %ebp, %edx
movslq %edx, %rdx
leaq (%r14,%rdx,4), %r12
cmpl %ebp, %eax
jge 0x1416b
cmpl $0x400, %ebp            # imm = 0x400
ja 0x14187
leal (,%rbp,4), %edi
callq 0x32c0
testq %rax, %rax
je 0x15477
movq %rax, %r13
pushq $0x2
popq %rax
movq %rax, 0x18(%rsp)
xorl %edi, %edi
jmp 0x140fc
pushq $0x1
popq %rax
movq %rax, 0x18(%rsp)
movq 0x10(%rsp), %rcx
leal (%rcx,%r8), %eax
subl %ebp, %eax
cltq
leaq (%r14,%rax,4), %rax
xorl %edi, %edi
movq %r13, %r12
movq %rax, %r13
jmp 0x14194
leaq (,%rsi,4), %rax
movq %r12, %r13
subq %rax, %r13
movq $0x0, 0x18(%rsp)
movb $0x1, %dil
jmp 0x14194
pushq $0x8
popq %rax
movq %rax, 0x18(%rsp)
xorl %edi, %edi
movq %r12, %r13
cmpl $0x3fffffff, %ecx       # imm = 0x3FFFFFFF
ja 0x141f4
movl %ecx, %eax
xorl %edx, %edx
divl %ebp
cmpl $0x2, %eax
jb 0x141f4
movq 0x18(%rsp), %rsi
testb $0x1, %sil
jne 0x141d4
testb %dil, %dil
je 0x141f4
leal (,%rbp,2), %eax
movl %r8d, %esi
subl %eax, %esi
xorl %edx, %edx
cmpl %esi, %eax
setle %dl
shll $0x5, %edx
movq %rdx, 0x18(%rsp)
jmp 0x141f4
leal (,%rbp,2), %eax
movl %r8d, %edi
subl %ebp, %edi
xorl %edx, %edx
cmpl %edi, %eax
setle %dl
shll $0x4, %edx
addl %edx, %esi
addl $0x10, %esi
movq %rsi, 0x18(%rsp)
movq %r15, %rdi
movq %r12, %rsi
movl %ecx, %edx
movl %ebp, %ecx
movl %ebx, %r8d
callq 0x1591b
pushq $0x1
popq %rcx
movq %r12, %rdi
movq %r13, %rsi
movl %ebp, %edx
callq 0x15957
movq 0x10(%rsp), %r11
movl %r11d, %r9d
xorl %eax, %eax
cmpq %rax, %r9
je 0x1422f
andl $0x0, (%r14,%rax,4)
incq %rax
jmp 0x14220
leal -0x1(%r11), %r8d
cmpl $0x4, %ebx
jne 0x1423e
movl (%r15,%r8,4), %edx
jmp 0x14243
movzbl (%r15,%r8), %edx
leaq -0x1(%r8), %rdi
pushq $-0x1
popq %rax
movl %r8d, %ecx
testl %ecx, %ecx
jle 0x14270
movl %edi, %esi
cmpl $0x4, %ebx
jne 0x1425e
movl (%r15,%rsi,4), %esi
jmp 0x14263
movzbl (%r15,%rsi), %esi
decl %ecx
decq %rdi
cmpl %edx, %esi
movl %esi, %edx
jge 0x1424d
jmp 0x14274
movl %eax, %ecx
movl %edx, %esi
movq %r9, 0x28(%rsp)
movq %rbp, 0x20(%rsp)
movq %r8, 0x58(%rsp)
leaq 0x84(%rsp), %rdx
movq $0x0, 0x30(%rsp)
movl %r11d, %ebp
movl %ecx, %r9d
testl %r9d, %r9d
js 0x14344
movl %r9d, %r10d
decl %r9d
movq %r10, %rdi
movl %esi, %r8d
subq $0x1, %rdi
jb 0x142d7
movl %r9d, %ecx
cmpl $0x4, %ebx
jne 0x142c3
movl (%r15,%rdi,4), %esi
jmp 0x142c9
movzbl -0x1(%r15,%r10), %esi
leal -0x1(%rcx), %r9d
movq %rdi, %r10
cmpl %r8d, %esi
jle 0x142ac
jmp 0x142df
movl %eax, %r9d
movl %r8d, %esi
jmp 0x1429a
movl %ebp, (%rdx)
movslq %r8d, %rdx
movslq (%r13,%rdx,4), %r8
leaq -0x1(%r8), %r9
movl %r9d, (%r13,%rdx,4)
leaq (%r14,%r8,4), %rdx
addq $-0x4, %rdx
movq 0x30(%rsp), %r10
incq %r10
movl %ecx, %r8d
decq %r8
movq %r10, 0x30(%rsp)
testl %ecx, %ecx
jle 0x1433b
movl %r8d, %r9d
cmpl $0x4, %ebx
jne 0x1431f
movl (%r15,%r9,4), %r9d
jmp 0x14324
movzbl (%r15,%r9), %r9d
decl %ecx
decq %r8
cmpl %esi, %r9d
movl %r9d, %esi
jge 0x1430d
movl %edi, %ebp
movl %r9d, %esi
jmp 0x14297
movl %eax, %ecx
movl %edi, %ebp
jmp 0x14297
movq 0x30(%rsp), %rax
movl %eax, %r9d
cmpl $0x2, %eax
movq %r9, 0x48(%rsp)
movq %r12, 0x38(%rsp)
jb 0x14384
movq 0x18(%rsp), %rax
testb $0x30, %al
movq %r13, 0x68(%rsp)
je 0x1439f
movq 0x20(%rsp), %rcx
leal (%rcx,%rcx), %edi
shlq $0x2, %rdi
testb $0x10, %al
jne 0x143f8
movq %r13, %rax
subq %rdi, %rax
jmp 0x1440b
xorl %r12d, %r12d
cmpl $0x1, %eax
jne 0x1486e
incl %ebp
movl %ebp, (%rdx)
pushq $0x1
popq %rax
movl %eax, %r12d
jmp 0x1486e
cmpq %r13, %r12
movq 0x20(%rsp), %rbp
jne 0x143be
movq %r15, %rdi
movq %r12, %rsi
movq 0x10(%rsp), %rdx
movl %ebp, %ecx
movl %ebx, %r8d
callq 0x1591b
movq %r12, %rdi
movq %r13, %rsi
movl %ebp, %edx
xorl %ecx, %ecx
callq 0x15957
movq 0x10(%rsp), %r8
movslq %r8d, %rdi
cmpl $0x4, %ebx
movq 0x58(%rsp), %rbp
jne 0x14eaa
movl (%r15,%rbp,4), %edx
movslq %edx, %rax
leal -0x2(%r8), %esi
movl -0x8(%r15,%rdi,4), %ecx
jmp 0x14ebd
callq 0x32c0
movq 0x10(%rsp), %r11
testq %rax, %rax
je 0x15458
movl %ebp, %edx
leaq 0x1(%rdx), %rcx
cmpl %r11d, %ecx
jge 0x15738
cmpl $0x4, %ebx
movq 0x58(%rsp), %rbp
jne 0x1442b
movl 0x4(%r15,%rdx,4), %ecx
jmp 0x14430
movzbl (%r15,%rcx), %ecx
movslq %ecx, %rcx
incl (%r13,%rcx,4)
movq 0x60(%rsp), %rcx
leaq (%rax,%rcx,4), %r9
leaq (,%rcx,4), %rcx
xorl %edx, %edx
xorl %esi, %esi
cmpq %rdx, %rcx
je 0x14482
addl (%r12,%rdx), %esi
movslq (%r13,%rdx), %rdi
cmpl %esi, %edi
je 0x14473
movl (%r14,%rdi,4), %r8d
testl %r8d, %r8d
je 0x1564c
addl %r11d, %r8d
movl %r8d, (%r14,%rdi,4)
andl $0x0, (%r9,%rdx)
andl $0x0, (%rax,%rdx)
addq $0x4, %rdx
jmp 0x1444d
movq %rax, 0x40(%rsp)
cmpq %r13, %r12
je 0x15757
movq %r12, %rdi
movq %r13, %rsi
movq 0x20(%rsp), %rdx
xorl %ecx, %ecx
callq 0x15957
cmpl $0x4, %ebx
jne 0x144bd
movl (%r15,%rbp,4), %eax
movslq %eax, %rdx
movq 0x10(%rsp), %r11
leal -0x2(%r11), %ecx
movl (%r15,%rcx,4), %esi
jmp 0x144d2
movzbl (%r15,%rbp), %edx
movq 0x10(%rsp), %r11
leal -0x2(%r11), %ecx
movzbl (%r15,%rcx), %esi
movl %edx, %eax
movq 0x28(%rsp), %r8
movslq (%r13,%rdx,4), %rdx
xorl %edi, %edi
cmpl %eax, %esi
setl %dil
addl %r11d, %ecx
negl %edi
xorl %ecx, %edi
leaq (%r14,%rdx,4), %rdx
addq $0x4, %rdx
movl %edi, -0x4(%rdx)
xorl %ecx, %ecx
xorl %r12d, %r12d
cmpq %rcx, %r8
je 0x145ee
movl (%r14,%rcx,4), %edi
testl %edi, %edi
jle 0x1453a
xorl %esi, %esi
cmpl %r11d, %edi
movl $0x0, %r9d
cmovgel %r11d, %r9d
setge %r8b
subl %r9d, %edi
movslq %edi, %r9
cmpl $0x4, %ebx
jne 0x14547
movl (%r15,%r9,4), %edi
cmpl 0x4(%r15,%r9,4), %edi
jge 0x14557
jmp 0x15573
jns 0x145e6
notl %edi
jmp 0x145e2
movzbl (%r15,%r9), %edi
cmpb 0x1(%r15,%r9), %dil
jb 0x15573
cmpl %eax, %edi
je 0x14577
subq %r14, %rdx
shrq $0x2, %rdx
cltq
movl %edx, (%r13,%rax,4)
movslq %edi, %rax
movslq (%r13,%rax,4), %rax
leaq (%r14,%rax,4), %rdx
movl %edi, %eax
movq %rdx, %r10
subq %r14, %r10
sarq $0x2, %r10
cmpq %rcx, %r10
jle 0x15554
leaq -0x1(%r9), %r10
cmpl $0x4, %ebx
jne 0x1459a
movl -0x4(%r15,%r9,4), %r9d
jmp 0x1459f
movzbl (%r15,%r10), %r9d
movb %r8b, %sil
addl %esi, %r12d
addl %edi, %edi
xorl %esi, %esi
cmpl %eax, %r9d
setl %sil
orl %edi, %esi
movslq %esi, %rsi
movq 0x40(%rsp), %rdi
cmpl %r12d, (%rdi,%rsi,4)
je 0x145c7
addl %r11d, %r10d
movl %r12d, (%rdi,%rsi,4)
xorl %esi, %esi
cmpl %eax, %r9d
setl %sil
negl %esi
xorl %r10d, %esi
movl %esi, (%rdx)
addq $0x4, %rdx
xorl %edi, %edi
movq 0x28(%rsp), %r8
movl %edi, (%r14,%rcx,4)
incq %rcx
jmp 0x144fb
movl %ebp, %eax
testl %eax, %eax
js 0x14629
movl %eax, %ecx
movl (%r14,%rcx,4), %edx
testl %edx, %edx
setle %sil
cmpl %r11d, %edx
setge %dil
orb %sil, %dil
jne 0x14625
addl %r11d, %edx
leaq (%r14,%rcx,4), %rcx
movl %edx, (%rcx)
movl -0x4(%rcx), %edx
addq $-0x4, %rcx
decl %eax
subl %r11d, %edx
jl 0x14615
movl %edx, (%rcx)
decl %eax
jmp 0x145f0
pushq $0x1
popq %rcx
movq 0x38(%rsp), %rdi
movq %r13, %rsi
movq 0x20(%rsp), %rdx
callq 0x15957
movq 0x28(%rsp), %r9
movq 0x10(%rsp), %r11
incl %r12d
movslq (%r13), %rax
leaq (%r14,%rax,4), %rcx
xorl %esi, %esi
pushq $-0x2
popq %rax
movl %ebp, %edx
movq 0x30(%rsp), %r8
testl %edx, %edx
js 0x1476a
movl %edx, %edi
movl (%r14,%rdi,4), %r9d
testl %r9d, %r9d
jle 0x146a4
xorl %r8d, %r8d
cmpl %r11d, %r9d
movq %r11, %r10
movl $0x0, %r11d
cmovgel %r10d, %r11d
setge %r10b
subl %r11d, %r9d
movslq %r9d, %r11
cmpl $0x4, %ebx
jne 0x146ae
movl (%r15,%r11,4), %r9d
cmpl 0x4(%r15,%r11,4), %r9d
jle 0x146be
jmp 0x15592
movq 0x28(%rsp), %r9
jmp 0x14763
movzbl (%r15,%r11), %r9d
cmpb 0x1(%r15,%r11), %r9b
ja 0x15592
cmpl %esi, %r9d
je 0x146e1
subq %r14, %rcx
shrq $0x2, %rcx
movslq %esi, %rsi
movl %ecx, (%r13,%rsi,4)
movslq %r9d, %rcx
movslq (%r13,%rcx,4), %rcx
leaq (%r14,%rcx,4), %rcx
movl %r9d, %esi
movq %rcx, %r13
subq %r14, %r13
sarq $0x2, %r13
cmpq %rdi, %r13
jg 0x155b1
leaq -0x1(%r11), %rbp
cmpl $0x4, %ebx
jne 0x14704
movl -0x4(%r15,%r11,4), %r11d
jmp 0x14709
movzbl (%r15,%rbp), %r11d
movq 0x68(%rsp), %r13
movb %r10b, %r8b
addl %r8d, %r12d
addl %r9d, %r9d
xorl %r8d, %r8d
cmpl %esi, %r11d
setg %r8b
orl %r9d, %r8d
movslq %r8d, %r8
movq 0x40(%rsp), %r9
cmpl %r12d, (%r9,%r8,4)
je 0x1473a
addl 0x10(%rsp), %ebp
movl %r12d, (%r9,%r8,4)
movq 0x28(%rsp), %r9
movl %eax, %r8d
subl %ebp, %r8d
cmpl %esi, %r11d
cmovlel %ebp, %r8d
movl %r8d, -0x4(%rcx)
addq $-0x4, %rcx
andl $0x0, (%r14,%rdi,4)
movq 0x10(%rsp), %r11
movq 0x30(%rsp), %r8
decl %edx
jmp 0x1465f
xorl %eax, %eax
xorl %r12d, %r12d
movl (%r14,%rax,4), %ecx
testl %ecx, %ecx
jns 0x147af
notl %ecx
xorl %edx, %edx
cmpl %r11d, %ecx
setge %dl
addl %edx, %r12d
movl %ecx, (%r14,%rax,4)
incq %rax
cmpq %r9, %rax
jb 0x1476f
leaq 0xc628c(%rip), %rdi     # 0xdaa23
leaq 0xc613a(%rip), %rsi     # 0xda8d8
leaq 0xc625c(%rip), %rcx     # 0xdaa01
movl $0xdc, %edx
callq 0x3160
cmpl %eax, %r8d
jle 0x147f3
movl %eax, %ecx
movq %rax, %rsi
leaq 0x1(%rsi), %rax
cmpq %r9, %rax
jae 0x1549c
movl 0x4(%r14,%rsi,4), %edx
movq %rax, %rsi
testl %edx, %edx
jns 0x147b9
notl %edx
xorl %esi, %esi
cmpl %r11d, %edx
setge %sil
addl %esi, %r12d
movslq %ecx, %rsi
incl %ecx
movl %edx, (%r14,%rsi,4)
andl $0x0, (%r14,%rax,4)
cmpl %r8d, %ecx
jne 0x147b6
cmpl %r8d, %r12d
jge 0x14835
leal 0x1(%r12), %eax
movq 0x48(%rsp), %r9
movq %r9, %rcx
testl %ecx, %ecx
jle 0x14853
movl -0x4(%r14,%rcx,4), %edx
decq %rcx
xorl %esi, %esi
cmpl %r11d, %edx
setge %sil
movl $0x0, %edi
cmovgel %r11d, %edi
subl %edi, %edx
subl %esi, %eax
sarl %edx
addl %r8d, %edx
movslq %edx, %rdx
movl %eax, (%r14,%rdx,4)
jmp 0x14805
xorl %eax, %eax
movq 0x48(%rsp), %r9
cmpq %rax, %r8
je 0x14853
movl (%r14,%rax,4), %ecx
subl %r11d, %ecx
jl 0x1484e
movl %ecx, (%r14,%rax,4)
incq %rax
jmp 0x1483c
testb $0x10, 0x18(%rsp)
je 0x1486e
movq 0x40(%rsp), %rdi
callq 0x3240
movq 0x48(%rsp), %r9
movq 0x10(%rsp), %r11
cmpl 0x30(%rsp), %r12d
jge 0x148e7
testb $0x4, 0x18(%rsp)
je 0x1488b
movq 0x38(%rsp), %rdi
callq 0x3240
movq 0x48(%rsp), %r9
testb $0x2, 0x18(%rsp)
movq 0x58(%rsp), %rbp
je 0x148a4
movq %r13, %rdi
callq 0x3240
movq 0x48(%rsp), %r9
movq 0x10(%rsp), %rsi
movq 0x50(%rsp), %rdx
addl %esi, %edx
movq 0x30(%rsp), %rax
addl %eax, %eax
subl %eax, %edx
testb $0xd, 0x18(%rsp)
jne 0x152a3
movq 0x20(%rsp), %rcx
leal (%r12,%rcx), %eax
cmpl %edx, %eax
jle 0x152a1
movq 0x18(%rsp), %rax
orl $0x8, %eax
movq %rax, 0x18(%rsp)
jmp 0x152a3
movq 0x38(%rsp), %r12
movq 0x58(%rsp), %rbp
testb $0x8, 0x18(%rsp)
je 0x1490e
movq %r15, %rdi
movq %r12, %rsi
movl %r11d, %edx
movq 0x20(%rsp), %rcx
movl %ebx, %r8d
callq 0x1591b
movq %r12, 0x38(%rsp)
movq 0x30(%rsp), %r12
cmpl $0x2, %r12d
jb 0x149df
pushq $0x1
popq %rcx
movq 0x38(%rsp), %rdi
movq %r13, %rsi
movq 0x20(%rsp), %rdx
callq 0x15957
leal -0x1(%r12), %eax
movl (%r14,%rax,4), %ecx
movslq %ecx, %rdx
cmpl $0x4, %ebx
jne 0x1494e
movl (%r15,%rdx,4), %r11d
jmp 0x14953
movzbl (%r15,%rdx), %r11d
leaq -0x4(%r14), %rdx
movq 0x10(%rsp), %rsi
movl %r11d, %edi
movslq %r11d, %r8
movslq (%r13,%r8,4), %r10
movslq %esi, %r11
cmpq %r10, %r11
movq %r10, %r8
cmovlq %r11, %r8
decl %r8d
leaq (%rdx,%r11,4), %r9
cmpq %r10, %r11
jle 0x14991
andl $0x0, -0x4(%r14,%r11,4)
decq %r11
decl %esi
addq $-0x4, %r9
jmp 0x1497b
movl %eax, %r10d
decq %r10
movl %ecx, (%r9)
testl %eax, %eax
jle 0x149cd
movl %r10d, %ecx
movl (%r14,%rcx,4), %ecx
movslq %ecx, %r11
cmpl $0x4, %ebx
jne 0x149b3
movl (%r15,%r11,4), %r11d
jmp 0x149b8
movzbl (%r15,%r11), %r11d
decl %r8d
decl %esi
addq $-0x4, %r9
decl %eax
decq %r10
cmpl %edi, %r11d
je 0x14997
jmp 0x1495c
movl %r8d, %eax
testl %eax, %eax
jle 0x149df
andl $0x0, -0x4(%r14,%rax,4)
decq %rax
jmp 0x149d0
cmpl $0x0, 0xc0(%rsp)
je 0x14a50
movq 0x38(%rsp), %r12
cmpq %r13, %r12
jne 0x14a0b
movq %r15, %rdi
movq %r12, %rsi
movq 0x10(%rsp), %rdx
movq 0x20(%rsp), %rcx
movl %ebx, %r8d
callq 0x1591b
movq %r12, %rdi
movq %r13, %rsi
movq 0x20(%rsp), %rdx
xorl %ecx, %ecx
callq 0x15957
cmpl $0x4, %ebx
jne 0x14ab7
movslq (%r15,%rbp,4), %r10
movslq (%r13,%r10,4), %rax
leaq (%r14,%rax,4), %rax
movq 0x10(%rsp), %rdx
cmpl $0x1, %edx
movq 0x28(%rsp), %r8
jle 0x14ae6
movl -0x8(%r15,%r8,4), %esi
jmp 0x14ada
movq 0x38(%rsp), %r12
cmpq %r13, %r12
jne 0x14a72
movq %r15, %rdi
movq %r12, %rsi
movq 0x10(%rsp), %rdx
movq 0x20(%rsp), %rcx
movl %ebx, %r8d
callq 0x1591b
movq %r12, %rdi
movq %r13, %rsi
movq 0x20(%rsp), %rdx
xorl %ecx, %ecx
callq 0x15957
cmpl $0x4, %ebx
jne 0x14cb7
movslq (%r15,%rbp,4), %rcx
movslq (%r13,%rcx,4), %rax
leaq (%r14,%rax,4), %rax
movq 0x10(%rsp), %rdx
cmpl $0x1, %edx
movq 0x28(%rsp), %rsi
jle 0x14ce5
movl -0x8(%r15,%rsi,4), %esi
jmp 0x14cda
movzbl (%r15,%rbp), %r10d
movslq (%r13,%r10,4), %rax
leaq (%r14,%rax,4), %rax
movq 0x10(%rsp), %rdx
cmpl $0x1, %edx
movq 0x28(%rsp), %r8
jle 0x14ae6
movzbl -0x2(%r15,%r8), %esi
movl %edx, %ecx
negl %ecx
cmpl %r10d, %esi
cmovgel %ebp, %ecx
jmp 0x14ae8
movl %ebp, %ecx
movl %ecx, (%rax)
addq $0x4, %rax
xorl %ecx, %ecx
cmpq %rcx, %r8
je 0x14bba
movslq (%r14,%rcx,4), %rsi
testq %rsi, %rsi
jle 0x14b1a
leal -0x1(%rsi), %r8d
cmpl $0x4, %ebx
jne 0x14b2c
movl (%r15,%r8,4), %edi
cmpl (%r15,%rsi,4), %edi
jge 0x14b3b
jmp 0x154f7
testl %esi, %esi
je 0x14b24
notl %esi
movl %esi, (%r14,%rcx,4)
movl %r10d, %edi
jmp 0x14baf
movzbl (%r15,%r8), %edi
cmpb (%r15,%rsi), %dil
jb 0x154f7
movl %edi, %r9d
notl %r9d
movl %r9d, (%r14,%rcx,4)
cmpl %r10d, %edi
jne 0x14b4f
movl %r10d, %edi
jmp 0x14b6a
subq %r14, %rax
shrq $0x2, %rax
movslq %r10d, %r9
movl %eax, (%r13,%r9,4)
movslq %edi, %rax
movslq (%r13,%rax,4), %rax
leaq (%r14,%rax,4), %rax
movq %rax, %r9
subq %r14, %r9
sarq $0x2, %r9
cmpq %rcx, %r9
jle 0x154d8
xorl %r9d, %r9d
cmpl $0x1, %esi
je 0x14ba3
cmpl $0x4, %ebx
jne 0x14b91
movl -0x8(%r15,%rsi,4), %r9d
jmp 0x14b97
movzbl -0x2(%r15,%rsi), %r9d
negl %esi
cmpl %edi, %r9d
cmovgel %r8d, %esi
movl %esi, %r9d
movl %r9d, (%rax)
addq $0x4, %rax
movq 0x28(%rsp), %r8
incq %rcx
movl %edi, %r10d
jmp 0x14af0
cmpq %r13, %r12
jne 0x14bd2
movq %r15, %rdi
movq %r12, %rsi
movq 0x20(%rsp), %rcx
movl %ebx, %r8d
callq 0x1591b
pushq $0x1
popq %rcx
movq %r12, %rdi
movq %r13, %rsi
movq 0x20(%rsp), %rdx
callq 0x15957
movslq (%r13), %rax
leaq (%r14,%rax,4), %rax
xorl %esi, %esi
pushq $-0x1
popq %r12
testl %ebp, %ebp
js 0x14e80
movl %ebp, %r8d
movslq (%r14,%r8,4), %rdx
testq %rdx, %rdx
jle 0x14c1e
leal -0x1(%rdx), %edi
cmpl $0x4, %ebx
jne 0x14c2e
movl (%r15,%rdi,4), %ecx
cmpl (%r15,%rdx,4), %ecx
jle 0x14c3d
jmp 0x15535
testl %edx, %edx
je 0x14ca9
notl %edx
movl %edx, (%r14,%r8,4)
jmp 0x14cac
movzbl (%r15,%rdi), %ecx
cmpb (%r15,%rdx), %cl
ja 0x15535
movl %ecx, (%r14,%r8,4)
cmpl %esi, %ecx
jne 0x14c49
movl %esi, %ecx
jmp 0x14c64
subq %r14, %rax
shrq $0x2, %rax
movslq %esi, %rsi
movl %eax, (%r13,%rsi,4)
movslq %ecx, %rax
movslq (%r13,%rax,4), %rax
leaq (%r14,%rax,4), %rax
movq %rax, %rsi
subq %r14, %rsi
sarq $0x2, %rsi
cmpq %r8, %rsi
jg 0x15516
xorl %esi, %esi
cmpl $0x1, %edx
je 0x14ca0
cmpl $0x4, %ebx
jne 0x14c90
movl -0x8(%r15,%rdx,4), %edx
movl %edi, %esi
cmpl %ecx, %edx
jg 0x14c9c
jmp 0x14ca0
movzbl -0x2(%r15,%rdx), %edx
movl %edi, %esi
cmpl %edx, %ecx
jge 0x14ca0
notl %edx
movl %edx, %esi
movl %esi, -0x4(%rax)
addq $-0x4, %rax
jmp 0x14cae
movl %ebp, %r12d
movl %esi, %ecx
decl %ebp
movl %ecx, %esi
jmp 0x14bf3
movzbl (%r15,%rbp), %ecx
movslq (%r13,%rcx,4), %rax
leaq (%r14,%rax,4), %rax
movq 0x10(%rsp), %rdx
cmpl $0x1, %edx
movq 0x28(%rsp), %rsi
jle 0x14ce5
movzbl -0x2(%r15,%rsi), %esi
movl %edx, %edi
negl %edi
cmpl %ecx, %esi
cmovgel %ebp, %edi
jmp 0x14ce7
movl %ebp, %edi
movl %edi, (%rax)
addq $0x4, %rax
xorl %r9d, %r9d
cmpq %r9, 0x28(%rsp)
je 0x14da2
movslq (%r14,%r9,4), %rsi
movl %esi, %edi
notl %edi
movl %edi, (%r14,%r9,4)
testq %rsi, %rsi
jle 0x14d9a
leal -0x1(%rsi), %edi
cmpl $0x4, %ebx
jne 0x14d27
movl (%r15,%rdi,4), %r8d
cmpl (%r15,%rsi,4), %r8d
jge 0x14d36
jmp 0x155ef
movzbl (%r15,%rdi), %r8d
cmpb (%r15,%rsi), %r8b
jb 0x155ef
cmpl %ecx, %r8d
jne 0x14d40
movl %ecx, %r8d
jmp 0x14d5b
subq %r14, %rax
shrq $0x2, %rax
movslq %ecx, %rcx
movl %eax, (%r13,%rcx,4)
movslq %r8d, %rax
movslq (%r13,%rax,4), %rax
leaq (%r14,%rax,4), %rax
movq %rax, %rcx
subq %r14, %rcx
sarq $0x2, %rcx
cmpq %r9, %rcx
jle 0x155d0
xorl %ecx, %ecx
cmpl $0x1, %esi
je 0x14d91
cmpl $0x4, %ebx
jne 0x14d81
movl -0x8(%r15,%rsi,4), %ecx
jmp 0x14d87
movzbl -0x2(%r15,%rsi), %ecx
negl %esi
cmpl %r8d, %ecx
cmovgel %edi, %esi
movl %esi, %ecx
movl %ecx, (%rax)
addq $0x4, %rax
movl %r8d, %ecx
incq %r9
jmp 0x14cf0
cmpq %r13, %r12
jne 0x14dba
movq %r15, %rdi
movq %r12, %rsi
movq 0x20(%rsp), %rcx
movl %ebx, %r8d
callq 0x1591b
pushq $0x1
popq %rcx
movq %r12, %rdi
movq %r13, %rsi
movq 0x20(%rsp), %rdx
callq 0x15957
movslq (%r13), %rax
leaq (%r14,%rax,4), %rax
xorl %r12d, %r12d
xorl %edi, %edi
testl %ebp, %ebp
js 0x14e80
movl %ebp, %r8d
movslq (%r14,%r8,4), %rcx
testq %rcx, %rcx
jle 0x14e05
leal -0x1(%rcx), %edx
cmpl $0x4, %ebx
jne 0x14e0d
movl (%r15,%rdx,4), %esi
cmpl (%r15,%rcx,4), %esi
jle 0x14e1c
jmp 0x1560e
notl %ecx
movl %ecx, (%r14,%r8,4)
jmp 0x14e79
movzbl (%r15,%rdx), %esi
cmpb (%r15,%rcx), %sil
ja 0x1560e
cmpl %edi, %esi
jne 0x14e24
movl %edi, %esi
jmp 0x14e3f
subq %r14, %rax
shrq $0x2, %rax
movslq %edi, %rdi
movl %eax, (%r13,%rdi,4)
movslq %esi, %rax
movslq (%r13,%rax,4), %rax
leaq (%r14,%rax,4), %rax
movq %rax, %rdi
subq %r14, %rdi
sarq $0x2, %rdi
cmpq %r8, %rdi
jg 0x1562d
testl %edx, %edx
je 0x14e6c
cmpl $0x4, %ebx
jne 0x14e62
movl -0x8(%r15,%rcx,4), %edi
jmp 0x14e68
movzbl -0x2(%r15,%rcx), %edi
cmpl %esi, %edi
jle 0x14e70
negl %ecx
movl %ecx, %edx
movl %edx, -0x4(%rax)
addq $-0x4, %rax
movl %esi, %edi
decl %ebp
jmp 0x14dda
movq 0x18(%rsp), %rbx
testb $0x5, %bl
je 0x14e94
movq 0x38(%rsp), %rdi
callq 0x3240
testb $0x2, %bl
je 0x1547b
movq %r13, %rdi
callq 0x3240
jmp 0x1547b
movzbl (%r15,%rbp), %eax
movzbl -0x2(%r15,%rdi), %ecx
addq $-0x2, %rdi
movl %edi, %esi
movl %eax, %edx
movq 0x28(%rsp), %r9
pushq $0x1
popq %rdi
subl %r8d, %edi
cmpl %edx, %ecx
cmovgel %esi, %edi
movslq (%r13,%rax,4), %rax
leaq (%r14,%rax,4), %rcx
addq $0x4, %rcx
movl %edi, -0x4(%rcx)
xorl %eax, %eax
cmpq %rax, %r9
je 0x14f85
movslq (%r14,%rax,4), %rsi
testq %rsi, %rsi
jle 0x14f06
cmpl $0x4, %ebx
jne 0x14f0e
movl (%r15,%rsi,4), %edi
cmpl 0x4(%r15,%rsi,4), %edi
jge 0x14f1e
jmp 0x15687
testl %esi, %esi
jns 0x14f7d
notl %esi
jmp 0x14f79
movzbl (%r15,%rsi), %edi
cmpb 0x1(%r15,%rsi), %dil
jb 0x15687
cmpl %edx, %edi
jne 0x14f26
movl %edx, %edi
jmp 0x14f41
subq %r14, %rcx
shrq $0x2, %rcx
movslq %edx, %rdx
movl %ecx, (%r13,%rdx,4)
movslq %edi, %rcx
movslq (%r13,%rcx,4), %rcx
leaq (%r14,%rcx,4), %rcx
movq %rcx, %rdx
subq %r14, %rdx
sarq $0x2, %rdx
cmpq %rax, %rdx
jle 0x1566b
leal -0x1(%rsi), %edx
cmpl $0x4, %ebx
jne 0x14f62
movl (%r15,%rdx,4), %r8d
jmp 0x14f67
movzbl (%r15,%rdx), %r8d
negl %esi
cmpl %edi, %r8d
cmovgel %edx, %esi
movl %esi, (%rcx)
addq $0x4, %rcx
xorl %esi, %esi
movl %edi, %edx
movl %esi, (%r14,%rax,4)
incq %rax
jmp 0x14edf
cmpq %r13, %r12
jne 0x14fa2
movq %r15, %rdi
movq %r12, %rsi
movq 0x10(%rsp), %rdx
movq 0x20(%rsp), %rcx
movl %ebx, %r8d
callq 0x1591b
pushq $0x1
popq %rcx
movq %r12, %rdi
movq %r13, %rsi
movq 0x20(%rsp), %rdx
callq 0x15957
movslq (%r13), %rax
leaq (%r14,%rax,4), %rax
xorl %r8d, %r8d
movl %ebp, %ecx
movq 0x28(%rsp), %rdi
testl %ecx, %ecx
js 0x15073
movl %ecx, %edx
movslq (%r14,%rdx,4), %rsi
testq %rsi, %rsi
jle 0x1506c
cmpl $0x4, %ebx
jne 0x14ff3
movl (%r15,%rsi,4), %edi
cmpl 0x4(%r15,%rsi,4), %edi
jle 0x15003
jmp 0x156a3
movzbl (%r15,%rsi), %edi
cmpb 0x1(%r15,%rsi), %dil
ja 0x156a3
cmpl %r8d, %edi
jne 0x1500d
movl %r8d, %edi
jmp 0x15028
subq %r14, %rax
shrq $0x2, %rax
movslq %r8d, %r8
movl %eax, (%r13,%r8,4)
movslq %edi, %rax
movslq (%r13,%rax,4), %rax
leaq (%r14,%rax,4), %rax
movq %rax, %r8
subq %r14, %r8
sarq $0x2, %r8
cmpq %rdx, %r8
jg 0x156bf
leal -0x1(%rsi), %r8d
cmpl $0x4, %ebx
jne 0x1504a
movl (%r15,%r8,4), %r9d
jmp 0x1504f
movzbl (%r15,%r8), %r9d
cmpl %edi, %r9d
notl %esi
cmovlel %r8d, %esi
movl %esi, -0x4(%rax)
addq $-0x4, %rax
andl $0x0, (%r14,%rdx,4)
movl %edi, %r8d
movq 0x28(%rsp), %rdi
decl %ecx
jmp 0x14fc7
xorl %eax, %eax
movq 0x10(%rsp), %r11
movl (%r14,%rax,4), %ecx
testl %ecx, %ecx
jns 0x150ac
notl %ecx
movl %ecx, (%r14,%rax,4)
incq %rax
cmpq %rdi, %rax
jb 0x1507a
leaq 0xc598c(%rip), %rdi     # 0xdaa23
leaq 0xc583a(%rip), %rsi     # 0xda8d8
leaq 0xc59d0(%rip), %rcx     # 0xdaa75
pushq $0x73
jmp 0x154d2
cmpl %eax, 0x30(%rsp)
jle 0x150e6
movl %eax, %ecx
movq %rax, %rsi
leaq 0x1(%rsi), %rax
cmpq %rdi, %rax
jae 0x154bb
movl 0x4(%r14,%rsi,4), %edx
movq %rax, %rsi
testl %edx, %edx
jns 0x150b7
notl %edx
movslq %ecx, %rsi
incl %ecx
movl %edx, (%r14,%rsi,4)
andl $0x0, (%r14,%rax,4)
cmpl 0x30(%rsp), %ecx
jne 0x150b4
cmpl $0x4, %ebx
jne 0x150f1
movl (%r15,%rbp,4), %edx
jmp 0x150f6
movzbl (%r15,%rbp), %edx
leaq -0x1(%rbp), %rdi
pushq $-0x1
popq %rax
movl %ebp, %ecx
testl %ecx, %ecx
jle 0x15122
movl %edi, %esi
cmpl $0x4, %ebx
jne 0x15110
movl (%r15,%rsi,4), %esi
jmp 0x15115
movzbl (%r15,%rsi), %esi
decl %ecx
decq %rdi
cmpl %edx, %esi
movl %esi, %edx
jge 0x150ff
jmp 0x15126
movl %eax, %ecx
movl %edx, %esi
movl %ebp, %edx
movq 0x30(%rsp), %rbp
movl %ecx, %r9d
movl %esi, %edi
testl %r9d, %r9d
js 0x151c1
movl %r9d, %r10d
decl %r9d
movq %r10, %r8
subq $0x1, %r8
jb 0x1516d
movl %r9d, %ecx
cmpl $0x4, %ebx
jne 0x15158
movl (%r15,%r8,4), %esi
jmp 0x1515e
movzbl -0x1(%r15,%r10), %esi
leal -0x1(%rcx), %r9d
movq %r8, %r10
cmpl %edi, %esi
movl %esi, %edi
jle 0x15144
jmp 0x15172
movl %eax, %r9d
jmp 0x15132
movl %edx, %edi
subl %r8d, %edi
movl %r8d, %edx
incl %edx
movl %edx, %r8d
shrl %r8d
addl %ebp, %r8d
movl %edi, (%r14,%r8,4)
movl %ecx, %edi
decq %rdi
testl %ecx, %ecx
jle 0x151ba
movl %edi, %r8d
cmpl $0x4, %ebx
jne 0x151a0
movl (%r15,%r8,4), %r8d
jmp 0x151a5
movzbl (%r15,%r8), %r8d
decl %ecx
decq %rdi
cmpl %esi, %r8d
movl %r8d, %esi
jge 0x1518e
movl %r8d, %esi
jmp 0x1512d
movl %eax, %ecx
jmp 0x1512d
xorl %edx, %edx
movl %r11d, %r8d
xorl %esi, %esi
xorl %r12d, %r12d
movq 0x48(%rsp), %r9
cmpq %r9, %rdx
je 0x1486e
movl (%r14,%rdx,4), %ecx
movl %ecx, %eax
sarl %eax
addl %ebp, %eax
movslq %eax, %r10
movl (%r14,%r10,4), %edi
cmpl %esi, %edi
jne 0x1528d
leal (%rdi,%r8), %eax
cmpl %r11d, %eax
jge 0x1528d
movq %r10, 0x70(%rsp)
movq %rdx, 0x40(%rsp)
movslq %ecx, %rax
movq %r8, 0x78(%rsp)
movslq %r8d, %rdx
testl %esi, %esi
movl $0x0, %r13d
cmovgl %esi, %r13d
leaq (%r15,%rax), %r10
leaq (%r15,%rdx), %r11
leaq (%r15,%rax,4), %rbp
leaq (%r15,%rdx,4), %rdx
xorl %r9d, %r9d
cmpq %r9, %r13
je 0x1525f
cmpl $0x4, %ebx
jne 0x15248
movl (%rbp,%r9,4), %r8d
movl (%rdx,%r9,4), %eax
jmp 0x15252
movzbl (%r10,%r9), %r8d
movzbl (%r11,%r9), %eax
cmpl %eax, %r8d
jne 0x1525c
incq %r9
jmp 0x15233
movl %r9d, %r13d
cmpl %esi, %r13d
movq 0x68(%rsp), %r13
movq 0x10(%rsp), %r11
movq 0x30(%rsp), %rbp
movq 0x48(%rsp), %r9
movq 0x40(%rsp), %rdx
movq 0x78(%rsp), %rax
movq 0x70(%rsp), %r10
jne 0x1528d
movl %eax, %ecx
movl %esi, %edi
jmp 0x15290
incl %r12d
movl %r12d, (%r14,%r10,4)
incq %rdx
movl %ecx, %r8d
movl %edi, %esi
jmp 0x151d0
subl %ecx, %edx
movl %esi, %eax
shrl %eax
movq 0x30(%rsp), %r8
leal (%rdx,%r8), %ecx
cmpl %ecx, %eax
jg 0x15719
leaq (%r14,%r9,4), %rcx
movslq %edx, %rsi
leaq (%rcx,%rsi,4), %rdi
addl %r8d, %eax
leal -0x1(%r8), %r10d
cltq
movl %r10d, %ecx
cmpq %r9, %rax
jle 0x152ef
movl -0x4(%r14,%rax,4), %r8d
decq %rax
testl %r8d, %r8d
je 0x152cf
decl %r8d
movslq %ecx, %rsi
decl %ecx
movl %r8d, (%rdi,%rsi,4)
jmp 0x152cf
movl %r10d, 0x40(%rsp)
andl $0x0, (%rsp)
pushq $0x4
popq %r9
movq %r14, %rsi
movq 0x30(%rsp), %rcx
movl %r12d, %r8d
movq %rdi, %r12
callq 0x14021
testl %eax, %eax
je 0x15328
testb $0x1, 0x18(%rsp)
movq 0x38(%rsp), %rdi
jne 0x15472
jmp 0x15477
movq %r12, %r10
cmpl $0x4, %ebx
movq 0x38(%rsp), %r12
jne 0x1533b
movl (%r15,%rbp,4), %esi
jmp 0x15340
movzbl (%r15,%rbp), %esi
movl 0x40(%rsp), %r11d
leaq -0x1(%rbp), %rdi
pushq $-0x1
popq %rax
movl %ebp, %ecx
testl %ecx, %ecx
jle 0x15371
movl %edi, %edx
cmpl $0x4, %ebx
jne 0x1535f
movl (%r15,%rdx,4), %edx
jmp 0x15364
movzbl (%r15,%rdx), %edx
decl %ecx
decq %rdi
cmpl %esi, %edx
movl %edx, %esi
jge 0x1534e
jmp 0x15375
movl %eax, %ecx
movl %esi, %edx
movl %ecx, %r8d
movl %edx, %esi
testl %r8d, %r8d
js 0x153f0
movl %r8d, %r9d
decl %r8d
movq %r9, %rdi
subq $0x1, %rdi
jb 0x153b1
movl %r8d, %ecx
cmpl $0x4, %ebx
jne 0x1539c
movl (%r15,%rdi,4), %edx
jmp 0x153a2
movzbl -0x1(%r15,%r9), %edx
leal -0x1(%rcx), %r8d
movq %rdi, %r9
cmpl %esi, %edx
movl %edx, %esi
jle 0x15388
jmp 0x153b6
movl %eax, %r8d
jmp 0x1537a
incl %edi
movslq %r11d, %rsi
decl %r11d
movl %edi, (%r10,%rsi,4)
movl %ecx, %esi
decq %rsi
testl %ecx, %ecx
jle 0x153ec
movl %esi, %edi
cmpl $0x4, %ebx
jne 0x153d8
movl (%r15,%rdi,4), %edi
jmp 0x153dd
movzbl (%r15,%rdi), %edi
decl %ecx
decq %rsi
cmpl %edx, %edi
movl %edi, %edx
jge 0x153c7
movl %edi, %edx
jmp 0x15375
movl %eax, %ecx
jmp 0x15375
movq %r14, %rax
movq 0x30(%rsp), %rcx
subq $0x1, %rcx
jb 0x1540d
movslq (%rax), %rdx
movl (%r10,%rdx,4), %edx
movl %edx, (%rax)
addq $0x4, %rax
jmp 0x153f8
testb $0x4, 0x18(%rsp)
je 0x15431
movq 0x60(%rsp), %rax
leaq (,%rax,4), %rdi
callq 0x32c0
movq %rax, %r13
movq %rax, %r12
testq %rax, %rax
je 0x15477
testb $0x2, 0x18(%rsp)
je 0x1544e
movq 0x60(%rsp), %rdi
shlq $0x2, %rdi
callq 0x32c0
testq %rax, %rax
je 0x15490
movq %rax, %r13
movq 0x10(%rsp), %r11
jmp 0x148f1
movq 0x18(%rsp), %rbx
testb $0x5, %bl
je 0x1546a
movq %r12, %rdi
callq 0x3240
testb $0x2, %bl
je 0x15477
movq %r13, %rdi
callq 0x3240
pushq $-0x2
popq %r12
movl %r12d, %eax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
testb $0x1, 0x18(%rsp)
je 0x15477
movq %r12, %rdi
jmp 0x15472
leaq 0xc558c(%rip), %rdi     # 0xdaa2f
leaq 0xc542e(%rip), %rsi     # 0xda8d8
leaq 0xc5550(%rip), %rcx     # 0xdaa01
movl $0xe0, %edx
callq 0x3160
leaq 0xc556d(%rip), %rdi     # 0xdaa2f
leaq 0xc540f(%rip), %rsi     # 0xda8d8
leaq 0xc55a5(%rip), %rcx     # 0xdaa75
pushq $0x76
popq %rdx
callq 0x3160
leaq 0xc54f2(%rip), %rdi     # 0xda9d1
leaq 0xc53f2(%rip), %rsi     # 0xda8d8
leaq 0xc55fd(%rip), %rcx     # 0xdaaea
movl $0x133, %edx            # imm = 0x133
callq 0x3160
leaq 0xc54be(%rip), %rdi     # 0xda9bc
leaq 0xc53d3(%rip), %rsi     # 0xda8d8
leaq 0xc55de(%rip), %rcx     # 0xdaaea
movl $0x130, %edx            # imm = 0x130
callq 0x3160
leaq 0xc54d6(%rip), %rdi     # 0xda9f3
leaq 0xc53b4(%rip), %rsi     # 0xda8d8
leaq 0xc55bf(%rip), %rcx     # 0xdaaea
movl $0x142, %edx            # imm = 0x142
callq 0x3160
leaq 0xc54a2(%rip), %rdi     # 0xda9de
leaq 0xc5395(%rip), %rsi     # 0xda8d8
leaq 0xc55a0(%rip), %rcx     # 0xdaaea
movl $0x13f, %edx            # imm = 0x13F
callq 0x3160
leaq 0xc5476(%rip), %rdi     # 0xda9d1
leaq 0xc5376(%rip), %rsi     # 0xda8d8
leaq 0xc540c(%rip), %rcx     # 0xda975
movl $0xac, %edx
callq 0x3160
leaq 0xc5442(%rip), %rdi     # 0xda9bc
leaq 0xc5357(%rip), %rsi     # 0xda8d8
leaq 0xc53ed(%rip), %rcx     # 0xda975
movl $0xaa, %edx
callq 0x3160
leaq 0xc5445(%rip), %rdi     # 0xda9de
leaq 0xc5338(%rip), %rsi     # 0xda8d8
leaq 0xc53ce(%rip), %rcx     # 0xda975
movl $0xc6, %edx
callq 0x3160
leaq 0xc543b(%rip), %rdi     # 0xda9f3
leaq 0xc5319(%rip), %rsi     # 0xda8d8
leaq 0xc53af(%rip), %rcx     # 0xda975
movl $0xc8, %edx
callq 0x3160
leaq 0xc53fa(%rip), %rdi     # 0xda9d1
leaq 0xc52fa(%rip), %rsi     # 0xda8d8
leaq 0xc54c5(%rip), %rcx     # 0xdaaaa
movl $0x10d, %edx            # imm = 0x10D
callq 0x3160
leaq 0xc53c6(%rip), %rdi     # 0xda9bc
leaq 0xc52db(%rip), %rsi     # 0xda8d8
leaq 0xc54a6(%rip), %rcx     # 0xdaaaa
movl $0x10b, %edx            # imm = 0x10B
callq 0x3160
leaq 0xc53c9(%rip), %rdi     # 0xda9de
leaq 0xc52bc(%rip), %rsi     # 0xda8d8
leaq 0xc5487(%rip), %rcx     # 0xdaaaa
movl $0x117, %edx            # imm = 0x117
callq 0x3160
leaq 0xc53bf(%rip), %rdi     # 0xda9f3
leaq 0xc529d(%rip), %rsi     # 0xda8d8
leaq 0xc5468(%rip), %rcx     # 0xdaaaa
movl $0x119, %edx            # imm = 0x119
callq 0x3160
leaq 0xc52f5(%rip), %rdi     # 0xda948
leaq 0xc527e(%rip), %rsi     # 0xda8d8
leaq 0xc527e(%rip), %rcx     # 0xda8df
movl $0x196, %edx            # imm = 0x196
callq 0x3160
leaq 0xc535f(%rip), %rdi     # 0xda9d1
leaq 0xc525f(%rip), %rsi     # 0xda8d8
leaq 0xc53b5(%rip), %rcx     # 0xdaa35
pushq $0x52
jmp 0x154d2
leaq 0xc532e(%rip), %rdi     # 0xda9bc
leaq 0xc5243(%rip), %rsi     # 0xda8d8
leaq 0xc5399(%rip), %rcx     # 0xdaa35
pushq $0x50
jmp 0x154d2
leaq 0xc5334(%rip), %rdi     # 0xda9de
leaq 0xc5227(%rip), %rsi     # 0xda8d8
leaq 0xc537d(%rip), %rcx     # 0xdaa35
pushq $0x5f
jmp 0x154d2
leaq 0xc532d(%rip), %rdi     # 0xda9f3
leaq 0xc520b(%rip), %rsi     # 0xda8d8
leaq 0xc5361(%rip), %rcx     # 0xdaa35
pushq $0x61
jmp 0x154d2
leaq 0xc51da(%rip), %rdi     # 0xda8bc
leaq 0xc51ef(%rip), %rsi     # 0xda8d8
leaq 0xc51ef(%rip), %rcx     # 0xda8df
movl $0x158, %edx            # imm = 0x158
callq 0x3160
leaq 0xc521a(%rip), %rdi     # 0xda91b
leaq 0xc51d0(%rip), %rsi     # 0xda8d8
leaq 0xc51d0(%rip), %rcx     # 0xda8df
movl $0x159, %edx            # imm = 0x159
callq 0x3160
leaq 0xc5236(%rip), %rdi     # 0xda956
leaq 0xc51b1(%rip), %rsi     # 0xda8d8
leaq 0xc51b1(%rip), %rcx     # 0xda8df
movl $0x1b1, %edx            # imm = 0x1B1
callq 0x3160
leaq 0xc51fd(%rip), %rdi     # 0xda93c
leaq 0xc5192(%rip), %rsi     # 0xda8d8
leaq 0xc5192(%rip), %rcx     # 0xda8df
movl $0x192, %edx            # imm = 0x192
callq 0x3160
leaq 0xc5210(%rip), %rdi     # 0xda96e
leaq 0xc5173(%rip), %rsi     # 0xda8d8
leaq 0xc5209(%rip), %rcx     # 0xda975
movl $0x9d, %edx
callq 0x3160