// File: /workspace/github_c_makefile_star2_O1/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 $0x98, %rsp
testq %rdi, %rdi
je 0x19f06
movl %r9d, %ebx
movl %edx, %r9d
testl %edx, %edx
js 0x19f25
movl %r8d, %r13d
movl %ecx, %r8d
testl %ecx, %ecx
jle 0x19f25
testl %r13d, %r13d
jle 0x19f25
movq %rdi, %r15
cmpl $0x100, %r13d           # imm = 0x100
movq %rsi, 0x18(%rsp)
movq %r8, 0x10(%rsp)
movq %r9, 0x58(%rsp)
jg 0x184a0
movl %r13d, %r12d
shlq $0x2, %r12
movq %r12, %rdi
callq 0x3300
testq %rax, %rax
je 0x19a88
movq %rax, %r14
movq 0x58(%rsp), %r9
cmpl %r13d, %r9d
jge 0x18513
movq %r12, %rdi
callq 0x3300
testq %rax, %rax
je 0x195ff
movq %rax, %rbp
movl $0x3, %eax
jmp 0x18505
movl %r9d, %eax
subl %r13d, %eax
jge 0x184cc
movl %r13d, %edi
shlq $0x2, %rdi
callq 0x3300
testq %rax, %rax
je 0x19a88
movq %rax, %rbp
movl $0xc, %eax
xorl %ecx, %ecx
movq %rbp, %r14
jmp 0x18507
leal (%r8,%r9), %ecx
subl %r13d, %ecx
movslq %ecx, %rcx
leaq (%rsi,%rcx,4), %r14
cmpl %r13d, %eax
jge 0x18533
cmpl $0x400, %r13d           # imm = 0x400
jg 0x18546
movl %r13d, %edi
shlq $0x2, %rdi
callq 0x3300
testq %rax, %rax
je 0x19a88
movq %rax, %rbp
movl $0x2, %eax
xorl %ecx, %ecx
movq 0x10(%rsp), %r8
movq 0x58(%rsp), %r9
jmp 0x18550
movq 0x10(%rsp), %r8
leal (%r8,%r9), %eax
subl %r13d, %eax
cltq
movq 0x18(%rsp), %rcx
leaq (%rcx,%rax,4), %rbp
movl $0x1, %eax
xorl %ecx, %ecx
jmp 0x18550
movl %r13d, %eax
shlq $0x2, %rax
movq %r14, %rbp
subq %rax, %rbp
xorl %eax, %eax
movb $0x1, %cl
jmp 0x18550
movl $0x8, %eax
xorl %ecx, %ecx
movq %r14, %rbp
movq %rax, 0x30(%rsp)
cmpl $0x3fffffff, %r8d       # imm = 0x3FFFFFFF
jg 0x185ba
movl %r8d, %eax
xorl %edx, %edx
divl %r13d
cmpl $0x2, %eax
jl 0x185ba
movq 0x30(%rsp), %rsi
testb $0x1, %sil
jne 0x18598
testb %cl, %cl
je 0x185ba
leal (,%r13,2), %eax
movl %r9d, %ecx
subl %eax, %ecx
xorl %edx, %edx
cmpl %ecx, %eax
setle %dl
shll $0x5, %edx
movq %rdx, 0x30(%rsp)
jmp 0x185ba
leal (,%r13,2), %eax
movl %r9d, %ecx
subl %r13d, %ecx
xorl %edx, %edx
cmpl %ecx, %eax
setle %dl
shll $0x4, %edx
addl %edx, %esi
addl $0x10, %esi
movq %rsi, 0x30(%rsp)
movl %r13d, %eax
movq %rax, 0x28(%rsp)
leaq (,%rax,4), %rdx
xorl %r12d, %r12d
movq %r14, %rdi
xorl %esi, %esi
callq 0x3140
movq 0x10(%rsp), %rdi
movl %edi, %edx
cmpl $0x4, %ebx
jne 0x185e9
movl (%r15,%r12,4), %eax
jmp 0x185ee
movzbl (%r15,%r12), %eax
cltq
incl (%r14,%rax,4)
incq %r12
cmpq %r12, %rdx
jne 0x185de
xorl %eax, %eax
xorl %ecx, %ecx
movq 0x28(%rsp), %r10
addl (%r14,%rax,4), %ecx
movl %ecx, (%rbp,%rax,4)
incq %rax
cmpq %rax, %r10
jne 0x18605
testl %edi, %edi
movq 0x18(%rsp), %r11
movq %rdx, 0x38(%rsp)
jle 0x18644
leaq (,%rdx,4), %rdx
movq %r11, %rdi
xorl %esi, %esi
callq 0x3140
movq 0x10(%rsp), %rdi
movq 0x28(%rsp), %r10
movq 0x18(%rsp), %r11
leal -0x1(%rdi), %r8d
cmpl $0x4, %ebx
jne 0x18653
movl (%r15,%r8,4), %eax
jmp 0x18658
movzbl (%r15,%r8), %eax
movl %r8d, %edx
movl %r8d, %r12d
sarl $0x1f, %r12d
movl %r12d, %ecx
andl %r8d, %ecx
movq %rcx, 0x88(%rsp)
leal -0x1(%rcx), %r9d
movq %rdx, 0x48(%rsp)
decq %rdx
movl %edi, %esi
decl %esi
testl %esi, %esi
jle 0x186a4
movl %edx, %ecx
cmpl $0x4, %ebx
jne 0x18691
movl (%r15,%rcx,4), %ecx
jmp 0x18696
movzbl (%r15,%rcx), %ecx
decq %rdx
cmpl %eax, %ecx
movl %ecx, %eax
jge 0x1867e
leal -0x1(%rsi), %edx
jmp 0x186b1
movq 0x88(%rsp), %rsi
movl %r9d, %edx
movl %eax, %ecx
movl %r9d, 0x6c(%rsp)
movq %r13, 0x78(%rsp)
movq %r8, 0x60(%rsp)
movq %r14, 0x50(%rsp)
testl %esi, %esi
jle 0x187a9
leaq 0x84(%rsp), %rax
movq $0x0, 0x20(%rsp)
movl %edi, %r13d
movl %edx, %edi
movl %edx, %r8d
sarl $0x1f, %r8d
andl %edx, %r8d
decl %r8d
decq %rdi
movl %edx, %esi
movl %ecx, %r9d
movl %esi, %r10d
testl %esi, %esi
jle 0x1871f
movl %edi, %ecx
cmpl $0x4, %ebx
jne 0x1870c
movl (%r15,%rcx,4), %ecx
jmp 0x18711
movzbl (%r15,%rcx), %ecx
leal -0x1(%r10), %esi
decq %rdi
cmpl %r9d, %ecx
jle 0x186f5
jmp 0x18725
movl %r8d, %esi
movl %r9d, %ecx
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
testl %r10d, %r10d
jle 0x18795
movl %r13d, (%rax)
movslq %r9d, %rax
movslq (%rbp,%rax,4), %rdi
leaq -0x1(%rdi), %r8
movl %r8d, (%rbp,%rax,4)
leaq (%r11,%rdi,4), %rax
addq $-0x4, %rax
movq 0x20(%rsp), %rdi
incl %edi
movq %rdi, 0x20(%rsp)
movl %esi, %edi
decq %rdi
movl %esi, %r8d
movq 0x28(%rsp), %r10
testl %r8d, %r8d
jle 0x1879c
movl %edi, %r9d
cmpl $0x4, %ebx
jne 0x18777
movl (%r15,%r9,4), %r9d
jmp 0x1877c
movzbl (%r15,%r9), %r9d
decl %r8d
decq %rdi
cmpl %ecx, %r9d
movl %r9d, %ecx
jge 0x18764
movl %r8d, %edx
movl %esi, %r13d
movl %r9d, %ecx
jmp 0x1879f
movq 0x28(%rsp), %r10
jmp 0x1879f
movl %esi, %r13d
testl %edx, %edx
jns 0x186e1
jmp 0x187bd
movq $0x0, 0x20(%rsp)
leaq 0x84(%rsp), %rax
movl %edi, %r13d
movq 0x20(%rsp), %rcx
cmpl $0x2, %ecx
jl 0x187f9
movq 0x30(%rsp), %rax
testb $0x30, %al
movq %rbp, 0x40(%rsp)
je 0x18816
movq 0x78(%rsp), %rcx
leal (%rcx,%rcx), %edi
shlq $0x2, %rdi
testb $0x10, %al
jne 0x18898
movq %rbp, %rax
subq %rdi, %rax
movq 0x48(%rsp), %r14
jmp 0x188b5
xorl %r12d, %r12d
cmpl $0x1, %ecx
jne 0x1927d
incl %r13d
movl %r13d, (%rax)
movl $0x1, %r12d
jmp 0x1927d
movq 0x50(%rsp), %r13
cmpq %rbp, %r13
movq 0x38(%rsp), %r9
jne 0x18868
leaq (,%r10,4), %rdx
xorl %r14d, %r14d
movq %r13, %rdi
xorl %esi, %esi
callq 0x3140
movq 0x38(%rsp), %r9
movq 0x28(%rsp), %r10
movq 0x18(%rsp), %r11
cmpl $0x4, %ebx
jne 0x18854
movl (%r15,%r14,4), %eax
jmp 0x18859
movzbl (%r15,%r14), %eax
cltq
incl (%r13,%rax,4)
incq %r14
cmpq %r14, %r9
jne 0x18849
xorl %eax, %eax
xorl %ecx, %ecx
movl (%r13,%rax,4), %edx
addl %ecx, %edx
movl %ecx, (%rbp,%rax,4)
incq %rax
movl %edx, %ecx
cmpq %rax, %r10
jne 0x1886c
cmpl $0x4, %ebx
jne 0x18dc3
movq 0x48(%rsp), %rax
movl (%r15,%rax,4), %edx
jmp 0x18dcd
callq 0x3300
movq 0x28(%rsp), %r10
movq 0x18(%rsp), %r11
testq %rax, %rax
movq 0x48(%rsp), %r14
je 0x19a92
movl %r13d, %ecx
leaq 0x1(%rcx), %rdx
cmpl 0x10(%rsp), %edx
jge 0x19f63
cmpl $0x4, %ebx
movq 0x38(%rsp), %r9
jne 0x188d7
movl 0x4(%r15,%rcx,4), %ecx
jmp 0x188dc
movzbl (%r15,%rdx), %ecx
movq 0x50(%rsp), %r13
movslq %ecx, %rcx
incl (%rbp,%rcx,4)
cmpl $0x0, 0x78(%rsp)
jle 0x18931
leaq (%rax,%r10,4), %rcx
xorl %edx, %edx
xorl %esi, %esi
xorl %edi, %edi
addl (%r13,%rsi,4), %edi
movslq (%rbp,%rsi,4), %r8
cmpl %edi, %r8d
je 0x18923
movl (%r11,%r8,4), %r9d
testl %r9d, %r9d
je 0x19ee7
addl 0x10(%rsp), %r9d
movl %r9d, (%r11,%r8,4)
movq 0x38(%rsp), %r9
movl %edx, (%rcx,%rsi,4)
movl %edx, (%rax,%rsi,4)
incq %rsi
cmpq %rsi, %r10
jne 0x188f9
cmpq %rbp, %r13
je 0x19f82
xorl %ecx, %ecx
xorl %edx, %edx
movl (%r13,%rcx,4), %esi
addl %edx, %esi
movl %edx, (%rbp,%rcx,4)
incq %rcx
movl %esi, %edx
cmpq %rcx, %r10
jne 0x1893e
cmpl $0x4, %ebx
jne 0x1895e
movl (%r15,%r14,4), %edx
jmp 0x18963
movzbl (%r15,%r14), %edx
movq 0x10(%rsp), %rcx
addl $-0x2, %ecx
movslq %edx, %rsi
movslq (%rbp,%rsi,4), %rsi
leaq (%r11,%rsi,4), %rsi
cmpl $0x4, %ebx
jne 0x18982
movl (%r15,%rcx,4), %edi
jmp 0x18987
movzbl (%r15,%rcx), %edi
xorl %r8d, %r8d
cmpl %edx, %edi
setl %r8b
addl 0x10(%rsp), %ecx
negl %r8d
xorl %ecx, %r8d
movl %r8d, (%rsi)
addq $0x4, %rsi
xorl %edi, %edi
xorl %ecx, %ecx
movl (%r11,%rdi,4), %r10d
testl %r10d, %r10d
jle 0x189d8
xorl %r8d, %r8d
movq 0x10(%rsp), %r9
cmpl %r9d, %r10d
movl $0x0, %r11d
cmovgel %r9d, %r11d
setge %r9b
subl %r11d, %r10d
movslq %r10d, %r10
cmpl $0x4, %ebx
jne 0x189e6
movl (%r15,%r10,4), %r11d
jmp 0x189eb
jns 0x18ac6
notl %r10d
jmp 0x18ac2
movzbl (%r15,%r10), %r11d
cmpl $0x4, %ebx
jne 0x189f7
movl 0x4(%r15,%r10,4), %ebp
jmp 0x189fd
movzbl 0x1(%r15,%r10), %ebp
cmpl %ebp, %r11d
jl 0x19d73
cmpl $0x4, %ebx
movq 0x40(%rsp), %rbp
jne 0x18a16
movl (%r15,%r10,4), %r11d
jmp 0x18a1b
movzbl (%r15,%r10), %r11d
cmpl %edx, %r11d
jne 0x18a27
movq 0x18(%rsp), %r12
jmp 0x18a49
movq 0x18(%rsp), %r12
subq %r12, %rsi
shrq $0x2, %rsi
movslq %edx, %rdx
movl %esi, (%rbp,%rdx,4)
movslq %r11d, %rdx
movslq (%rbp,%rdx,4), %rdx
leaq (%r12,%rdx,4), %rsi
movl %r11d, %edx
movq %rsi, %r14
subq %r12, %r14
sarq $0x2, %r14
cmpq %rdi, %r14
jle 0x19d92
leaq -0x1(%r10), %r12
cmpl $0x4, %ebx
jne 0x18a6c
movl -0x4(%r15,%r10,4), %r10d
jmp 0x18a71
movzbl (%r15,%r12), %r10d
movb %r9b, %r8b
addl %r8d, %ecx
addl %r11d, %r11d
xorl %r8d, %r8d
cmpl %edx, %r10d
setl %r8b
orl %r11d, %r8d
movslq %r8d, %r8
cmpl %ecx, (%rax,%r8,4)
je 0x18a99
addl 0x10(%rsp), %r12d
movl %ecx, (%rax,%r8,4)
movq 0x18(%rsp), %r11
movq 0x38(%rsp), %r9
xorl %r8d, %r8d
cmpl %edx, %r10d
setl %r8b
negl %r8d
xorl %r12d, %r8d
movl %r8d, (%rsi)
addq $0x4, %rsi
xorl %r10d, %r10d
movq 0x48(%rsp), %r14
movl %r10d, (%r11,%rdi,4)
incq %rdi
cmpq %rdi, %r9
jne 0x189a5
movq 0x60(%rsp), %rdx
movq 0x28(%rsp), %r10
movq 0x10(%rsp), %r9
movl %edx, %esi
movl (%r11,%rsi,4), %edi
testl %edi, %edi
setle %r8b
cmpl %r9d, %edi
movq %r9, %r12
setge %r9b
orb %r8b, %r9b
jne 0x18b1f
addl %r12d, %edi
movl %edi, (%r11,%rsi,4)
movslq %edx, %rsi
leaq (%r11,%rsi,4), %rsi
movq %r12, %r9
movl -0x4(%rsi), %edi
addq $-0x4, %rsi
decl %edx
subl %r9d, %edi
jl 0x18b0d
movl %edi, (%rsi)
jmp 0x18b22
movq %r12, %r9
leal -0x1(%rdx), %esi
testl %edx, %edx
movl %esi, %edx
jg 0x18ae1
xorl %edx, %edx
xorl %esi, %esi
addl (%r13,%rdx,4), %esi
movl %esi, (%rbp,%rdx,4)
incq %rdx
cmpq %rdx, %r10
jne 0x18b2f
incl %ecx
movslq (%rbp), %rdx
leaq (%r11,%rdx,4), %rdx
xorl %edi, %edi
movq %r14, %rsi
movl (%r11,%rsi,4), %r10d
testl %r10d, %r10d
jle 0x18c68
xorl %r8d, %r8d
cmpl %r9d, %r10d
movl $0x0, %r11d
cmovgel %r9d, %r11d
setge %r9b
subl %r11d, %r10d
movslq %r10d, %r10
cmpl $0x4, %ebx
jne 0x18b81
movl (%r15,%r10,4), %r11d
jmp 0x18b86
movzbl (%r15,%r10), %r11d
cmpl $0x4, %ebx
jne 0x18b92
movl 0x4(%r15,%r10,4), %ebp
jmp 0x18b98
movzbl 0x1(%r15,%r10), %ebp
cmpl %ebp, %r11d
jg 0x19db1
cmpl $0x4, %ebx
movq 0x40(%rsp), %rbp
jne 0x18bb1
movl (%r15,%r10,4), %r11d
jmp 0x18bb6
movzbl (%r15,%r10), %r11d
cmpl %edi, %r11d
jne 0x18bc2
movq 0x18(%rsp), %r12
jmp 0x18be4
movq 0x18(%rsp), %r12
subq %r12, %rdx
shrq $0x2, %rdx
movslq %edi, %rdi
movl %edx, (%rbp,%rdi,4)
movslq %r11d, %rdx
movslq (%rbp,%rdx,4), %rdx
leaq (%r12,%rdx,4), %rdx
movl %r11d, %edi
movq %rdx, %r14
subq %r12, %r14
sarq $0x2, %r14
cmpq %rsi, %r14
jg 0x19dd0
leaq -0x1(%r10), %r12
cmpl $0x4, %ebx
jne 0x18c07
movl -0x4(%r15,%r10,4), %r10d
jmp 0x18c0c
movzbl (%r15,%r12), %r10d
movb %r9b, %r8b
addl %r8d, %ecx
addl %r11d, %r11d
xorl %r8d, %r8d
cmpl %edi, %r10d
setg %r8b
orl %r11d, %r8d
movslq %r8d, %r8
cmpl %ecx, (%rax,%r8,4)
jne 0x18c37
movq 0x18(%rsp), %r11
movq 0x10(%rsp), %r9
jmp 0x18c48
movq 0x10(%rsp), %r9
addl %r9d, %r12d
movl %ecx, (%rax,%r8,4)
movq 0x18(%rsp), %r11
movl $0xfffffffe, %r8d       # imm = 0xFFFFFFFE
subl %r12d, %r8d
cmpl %edi, %r10d
cmovlel %r12d, %r8d
movl %r8d, -0x4(%rdx)
addq $-0x4, %rdx
movl $0x0, (%r11,%rsi,4)
leaq -0x1(%rsi), %r8
testq %rsi, %rsi
movq %r8, %rsi
jg 0x18b4f
cmpl $0x2, %r9d
movl $0x1, %edx
cmovgel %r9d, %edx
negq %rdx
xorl %r12d, %r12d
movl $0x1, %ecx
movq 0x38(%rsp), %r8
movl -0x4(%r11,%rcx,4), %esi
testl %esi, %esi
jns 0x18ce0
notl %esi
xorl %edi, %edi
cmpl %r9d, %esi
setge %dil
addl %edi, %r12d
movl %esi, -0x4(%r11,%rcx,4)
leaq (%rdx,%rcx), %rsi
incq %rsi
incq %rcx
cmpq $0x1, %rsi
jne 0x18c95
leaq 0xc6d4b(%rip), %rdi     # 0xdfa13
leaq 0xc6bf9(%rip), %rsi     # 0xdf8c8
leaq 0xc6d1b(%rip), %rcx     # 0xdf9f1
movl $0xdc, %edx
callq 0x3170
leaq -0x1(%rcx), %rdx
cmpl %edx, 0x20(%rsp)
jle 0x18d43
cmpl %r9d, %ecx
jge 0x18d24
movl (%r11,%rcx,4), %esi
testl %esi, %esi
jns 0x18d1c
notl %esi
xorl %edi, %edi
cmpl %r9d, %esi
setge %dil
addl %edi, %r12d
movslq %edx, %rdi
incl %edx
movl %esi, (%r11,%rdi,4)
movl $0x0, (%r11,%rcx,4)
cmpl 0x20(%rsp), %edx
je 0x18d43
incq %rcx
cmpq %rcx, %r8
jne 0x18cef
leaq 0xc6cf4(%rip), %rdi     # 0xdfa1f
leaq 0xc6b96(%rip), %rsi     # 0xdf8c8
leaq 0xc6cb8(%rip), %rcx     # 0xdf9f1
movl $0xe0, %edx
callq 0x3170
movq 0x20(%rsp), %rdx
cmpl %edx, %r12d
jge 0x18d8c
leal 0x1(%r12), %ecx
movl %edx, %edx
incq %rdx
movl -0x8(%r11,%rdx,4), %esi
xorl %edi, %edi
cmpl %r9d, %esi
setge %dil
movl $0x0, %r8d
cmovgel %r9d, %r8d
subl %r8d, %esi
subl %edi, %ecx
sarl %esi
addl 0x20(%rsp), %esi
movslq %esi, %rsi
movl %ecx, (%r11,%rsi,4)
decq %rdx
cmpq $0x1, %rdx
jg 0x18d57
jmp 0x18da5
movl %edx, %ecx
xorl %edx, %edx
movl (%r11,%rdx,4), %esi
subl %r9d, %esi
jl 0x18d9d
movl %esi, (%r11,%rdx,4)
incq %rdx
cmpq %rdx, %rcx
jne 0x18d90
testb $0x10, 0x30(%rsp)
je 0x18db9
movq %rax, %rdi
callq 0x3290
movq 0x18(%rsp), %r11
movq 0x28(%rsp), %r10
jmp 0x1927d
movq 0x48(%rsp), %rax
movzbl (%r15,%rax), %edx
movslq 0x10(%rsp), %rsi
leaq -0x2(%rsi), %rcx
movslq %edx, %rax
movslq (%rbp,%rax,4), %rax
leaq (%r11,%rax,4), %rax
cmpl $0x4, %ebx
jne 0x18dee
movl -0x8(%r15,%rsi,4), %esi
jmp 0x18df3
movzbl (%r15,%rcx), %esi
movl $0x1, %edi
subl 0x10(%rsp), %edi
cmpl %edx, %esi
cmovgel %ecx, %edi
movl %edi, (%rax)
addq $0x4, %rax
xorl %ecx, %ecx
movslq (%r11,%rcx,4), %rsi
testq %rsi, %rsi
jle 0x18e1d
cmpl $0x4, %ebx
jne 0x18e2c
movl (%r15,%rsi,4), %edi
jmp 0x18e31
testl %esi, %esi
jns 0x18eba
notl %esi
jmp 0x18eb6
movzbl (%r15,%rsi), %edi
cmpl $0x4, %ebx
jne 0x18e3d
movl 0x4(%r15,%rsi,4), %r8d
jmp 0x18e43
movzbl 0x1(%r15,%rsi), %r8d
cmpl %r8d, %edi
jl 0x19e6b
cmpl $0x4, %ebx
jne 0x18e57
movl (%r15,%rsi,4), %edi
jmp 0x18e5c
movzbl (%r15,%rsi), %edi
cmpl %edx, %edi
jne 0x18e64
movl %edx, %edi
jmp 0x18e7e
subq %r11, %rax
shrq $0x2, %rax
movslq %edx, %rdx
movl %eax, (%rbp,%rdx,4)
movslq %edi, %rax
movslq (%rbp,%rax,4), %rax
leaq (%r11,%rax,4), %rax
movq %rax, %rdx
subq %r11, %rdx
sarq $0x2, %rdx
cmpq %rcx, %rdx
jle 0x19e8a
leal -0x1(%rsi), %edx
cmpl $0x4, %ebx
jne 0x18e9f
movl (%r15,%rdx,4), %r8d
jmp 0x18ea4
movzbl (%r15,%rdx), %r8d
negl %esi
cmpl %edi, %r8d
cmovgel %edx, %esi
movl %esi, (%rax)
addq $0x4, %rax
xorl %esi, %esi
movl %edi, %edx
movl %esi, (%r11,%rcx,4)
incq %rcx
cmpq %rcx, %r9
jne 0x18e09
cmpq %rbp, %r13
jne 0x18f0e
leaq (,%r10,4), %rdx
xorl %r14d, %r14d
movq %r13, %rdi
xorl %esi, %esi
callq 0x3140
movq 0x38(%rsp), %r9
movq 0x28(%rsp), %r10
movq 0x18(%rsp), %r11
cmpl $0x4, %ebx
jne 0x18efa
movl (%r15,%r14,4), %eax
jmp 0x18eff
movzbl (%r15,%r14), %eax
cltq
incl (%r13,%rax,4)
incq %r14
cmpq %r14, %r9
jne 0x18eef
xorl %eax, %eax
xorl %ecx, %ecx
addl (%r13,%rax,4), %ecx
movl %ecx, (%rbp,%rax,4)
incq %rax
cmpq %rax, %r10
jne 0x18f12
movslq (%rbp), %rax
leaq (%r11,%rax,4), %rax
xorl %esi, %esi
movq 0x48(%rsp), %rcx
movq 0x60(%rsp), %r14
movslq (%r11,%rcx,4), %rdx
testq %rdx, %rdx
jle 0x18fe0
cmpl $0x4, %ebx
jne 0x18f4f
movl (%r15,%rdx,4), %edi
jmp 0x18f54
movzbl (%r15,%rdx), %edi
cmpl $0x4, %ebx
jne 0x18f60
movl 0x4(%r15,%rdx,4), %r8d
jmp 0x18f66
movzbl 0x1(%r15,%rdx), %r8d
cmpl %r8d, %edi
jg 0x19ea9
cmpl $0x4, %ebx
jne 0x18f7a
movl (%r15,%rdx,4), %edi
jmp 0x18f7f
movzbl (%r15,%rdx), %edi
cmpl %esi, %edi
jne 0x18f87
movl %esi, %edi
jmp 0x18fa1
subq %r11, %rax
shrq $0x2, %rax
movslq %esi, %rsi
movl %eax, (%rbp,%rsi,4)
movslq %edi, %rax
movslq (%rbp,%rax,4), %rax
leaq (%r11,%rax,4), %rax
movq %rax, %rsi
subq %r11, %rsi
sarq $0x2, %rsi
cmpq %rcx, %rsi
jg 0x19ec8
leal -0x1(%rdx), %esi
cmpl $0x4, %ebx
jne 0x18fc2
movl (%r15,%rsi,4), %r8d
jmp 0x18fc7
movzbl (%r15,%rsi), %r8d
cmpl %edi, %r8d
notl %edx
cmovlel %esi, %edx
movl %edx, -0x4(%rax)
addq $-0x4, %rax
movl $0x0, (%r11,%rcx,4)
movl %edi, %esi
leaq -0x1(%rcx), %rdx
testq %rcx, %rcx
movq %rdx, %rcx
jg 0x18f37
movq 0x10(%rsp), %rax
cmpl $0x2, %eax
movl $0x1, %ecx
cmovgel %eax, %ecx
negq %rcx
movl $0x1, %eax
movq 0x20(%rsp), %rsi
movl -0x4(%r11,%rax,4), %edx
testl %edx, %edx
jns 0x1904c
notl %edx
movl %edx, -0x4(%r11,%rax,4)
leaq (%rcx,%rax), %rdx
incq %rdx
incq %rax
cmpq $0x1, %rdx
jne 0x1900d
leaq 0xc69df(%rip), %rdi     # 0xdfa13
leaq 0xc688d(%rip), %rsi     # 0xdf8c8
leaq 0xc6a23(%rip), %rcx     # 0xdfa65
movl $0x73, %edx
callq 0x3170
leaq -0x1(%rax), %rcx
cmpl %ecx, %esi
jle 0x190a2
cmpl 0x10(%rsp), %eax
jge 0x19083
movl (%r11,%rax,4), %edx
testl %edx, %edx
jns 0x1907b
notl %edx
movslq %ecx, %rsi
incl %ecx
movl %edx, (%r11,%rsi,4)
movl $0x0, (%r11,%rax,4)
cmpl 0x20(%rsp), %ecx
je 0x190a2
incq %rax
cmpq %rax, %r9
jne 0x1905a
leaq 0xc6995(%rip), %rdi     # 0xdfa1f
leaq 0xc6837(%rip), %rsi     # 0xdf8c8
leaq 0xc69cd(%rip), %rcx     # 0xdfa65
movl $0x76, %edx
callq 0x3170
cmpl $0x4, %ebx
jne 0x190b2
movq 0x48(%rsp), %rax
movl (%r15,%rax,4), %edx
jmp 0x190bc
movq 0x48(%rsp), %rax
movzbl (%r15,%rax), %edx
movq 0x10(%rsp), %r9
andl %r14d, %r12d
decl %r12d
leaq -0x1(%rax), %rdi
movl %r14d, %ecx
movl %ecx, %esi
testl %ecx, %ecx
jle 0x190f4
movl %edi, %eax
cmpl $0x4, %ebx
jne 0x190e1
movl (%r15,%rax,4), %eax
jmp 0x190e6
movzbl (%r15,%rax), %eax
leal -0x1(%rsi), %ecx
decq %rdi
cmpl %edx, %eax
movl %eax, %edx
jge 0x190ce
jmp 0x190f9
movl %r12d, %ecx
movl %edx, %eax
testl %esi, %esi
jle 0x191ab
movl %r14d, %esi
movl %ecx, %r9d
movl %ecx, %edx
sarl $0x1f, %edx
andl %ecx, %edx
leal -0x1(%rdx), %r10d
decq %r9
movl %ecx, %edi
movl %eax, %ecx
movl %edi, %r8d
testl %edi, %edi
jle 0x19145
movl %r9d, %eax
cmpl $0x4, %ebx
jne 0x1912e
movl (%r15,%rax,4), %eax
jmp 0x19133
movzbl (%r15,%rax), %eax
leal -0x1(%r8), %edi
decq %r9
cmpl %ecx, %eax
movl %eax, %ecx
jle 0x19119
leal 0x1(%rdi), %edx
jmp 0x1914a
movl %r10d, %edi
movl %ecx, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
testl %r8d, %r8d
movq 0x28(%rsp), %r10
movq 0x10(%rsp), %r9
jle 0x191a3
subl %edi, %esi
movl %edx, %r8d
shrl %r8d
addl 0x20(%rsp), %r8d
movl %esi, (%r11,%r8,4)
movl %edi, %esi
decq %rsi
testl %edi, %edi
jle 0x191a1
movl %esi, %r8d
cmpl $0x4, %ebx
jne 0x19186
movl (%r15,%r8,4), %r8d
jmp 0x1918b
movzbl (%r15,%r8), %r8d
decl %edi
decq %rsi
cmpl %eax, %r8d
movl %r8d, %eax
jge 0x19174
movl %edx, %esi
movl %edi, %ecx
movl %r8d, %eax
jmp 0x191a3
movl %edx, %esi
testl %ecx, %ecx
jns 0x19104
movl 0x20(%rsp), %edx
xorl %ecx, %ecx
xorl %r12d, %r12d
xorl %esi, %esi
movl %r9d, %r14d
movq %rdx, 0x90(%rsp)
movl (%r11,%rcx,4), %r9d
movl %r9d, %eax
sarl %eax
addl 0x20(%rsp), %eax
movslq %eax, %r8
movl (%r11,%r8,4), %edi
cmpl %esi, %edi
jne 0x19265
leal (%rdi,%r14), %eax
cmpl 0x10(%rsp), %eax
jge 0x19265
testl %edi, %edi
jle 0x19254
movslq %r9d, %rax
movq %r14, 0x70(%rsp)
movslq %r14d, %rdx
leaq (%r15,%rax), %r11
leaq (%r15,%rax,4), %r13
leaq (%r15,%rdx), %rbp
leaq (%r15,%rdx,4), %rax
xorl %r10d, %r10d
cmpl $0x4, %ebx
jne 0x19215
movl (%r13,%r10,4), %r14d
jmp 0x1921a
movzbl (%r11,%r10), %r14d
cmpl $0x4, %ebx
jne 0x19225
movl (%rax,%r10,4), %edx
jmp 0x1922b
movzbl (%rbp,%r10), %edx
cmpl %edx, %r14d
jne 0x1923b
incq %r10
cmpq %r10, %rdi
jne 0x19209
movl %edi, %r10d
movq 0x18(%rsp), %r11
movq 0x40(%rsp), %rbp
movq 0x90(%rsp), %rdx
movq 0x70(%rsp), %r14
jmp 0x19257
xorl %r10d, %r10d
cmpl %edi, %r10d
movq 0x28(%rsp), %r10
jne 0x19265
movl %esi, %edi
jmp 0x1926b
incl %r12d
movl %r9d, %r14d
movl %r12d, (%r11,%r8,4)
incq %rcx
movl %edi, %esi
cmpq %rdx, %rcx
jne 0x191c1
movq 0x20(%rsp), %rsi
cmpl %esi, %r12d
jge 0x19300
movq 0x30(%rsp), %rax
testb $0x4, %al
movq 0x50(%rsp), %r13
je 0x192ac
movq %r13, %rdi
callq 0x3290
movq 0x20(%rsp), %rsi
movq 0x30(%rsp), %rax
movq 0x18(%rsp), %r11
testb $0x2, %al
je 0x192c2
movq %rbp, %rdi
callq 0x3290
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %r11
movq 0x10(%rsp), %rdi
movq 0x58(%rsp), %rdx
addl %edi, %edx
subl %esi, %edx
subl %esi, %edx
testb $0xd, 0x30(%rsp)
jne 0x1985b
movq 0x78(%rsp), %rcx
leal (%r12,%rcx), %eax
cmpl %edx, %eax
jle 0x19859
movq 0x30(%rsp), %rax
orl $0x8, %eax
movq %rax, 0x30(%rsp)
jmp 0x1985b
movq 0x50(%rsp), %r13
movq 0x30(%rsp), %rax
movq 0x48(%rsp), %r12
movq 0x38(%rsp), %r9
movq %rax, 0x30(%rsp)
testb $0x8, %al
je 0x19365
leaq (,%r10,4), %rdx
xorl %r14d, %r14d
movq %r13, %rdi
xorl %esi, %esi
callq 0x3140
movq 0x20(%rsp), %rsi
movq 0x38(%rsp), %r9
movq 0x28(%rsp), %r10
movq 0x18(%rsp), %r11
cmpl $0x4, %ebx
jne 0x19351
movl (%r15,%r14,4), %eax
jmp 0x19356
movzbl (%r15,%r14), %eax
cltq
incl (%r13,%rax,4)
incq %r14
cmpq %r14, %r9
jne 0x19346
cmpl $0x2, %esi
movq %rbp, 0x40(%rsp)
jl 0x194bd
xorl %eax, %eax
xorl %ecx, %ecx
addl (%r13,%rax,4), %ecx
movl %ecx, (%rbp,%rax,4)
incq %rax
cmpq %rax, %r10
jne 0x19377
movq %r13, 0x50(%rsp)
decl %esi
movl (%r11,%rsi,4), %r12d
movslq %r12d, %rax
cmpl $0x4, %ebx
jne 0x193a1
movl (%r15,%rax,4), %r13d
jmp 0x193a6
movzbl (%r15,%rax), %r13d
leaq -0x4(%r11), %rax
movq %rax, 0x58(%rsp)
leaq -0x8(%r11), %rax
movq %rax, 0x70(%rsp)
movq 0x10(%rsp), %rax
movslq %r13d, %rcx
movslq (%rbp,%rcx,4), %r14
cmpl %eax, %r14d
jge 0x19415
movq %rsi, 0x20(%rsp)
movslq %eax, %rbp
movl %r14d, %ecx
notl %ecx
addl %eax, %ecx
movq %rbp, %rax
subq %rcx, %rax
movq 0x58(%rsp), %rdx
leaq (%rdx,%rax,4), %rdi
leaq 0x4(,%rcx,4), %rdx
xorl %esi, %esi
callq 0x3140
decq %rbp
cmpq %r14, %rbp
jg 0x193f7
movq 0x18(%rsp), %r11
movq 0x28(%rsp), %r10
movq 0x38(%rsp), %r9
movq 0x20(%rsp), %rsi
jmp 0x19417
movl %eax, %ebp
movslq %ebp, %rdx
movl %r12d, -0x4(%r11,%rdx,4)
leal -0x1(%rsi), %ecx
testl %esi, %esi
jle 0x19474
movl %ecx, %ecx
notl %esi
movl %esi, %eax
addl %ebp, %eax
decl %ebp
movq 0x70(%rsp), %rsi
leaq (%rsi,%rdx,4), %rsi
movl (%r11,%rcx,4), %r12d
movslq %r12d, %rdx
cmpl $0x4, %ebx
jne 0x1944b
movl (%r15,%rdx,4), %edi
jmp 0x19450
movzbl (%r15,%rdx), %edi
cmpl %r13d, %edi
setne %dl
jne 0x1947c
movl %r12d, (%rsi)
leaq -0x1(%rcx), %r8
decl %ebp
addq $-0x4, %rsi
testq %rcx, %rcx
movq %r8, %rcx
jg 0x19439
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
jmp 0x1947e
decl %ebp
xorl %edx, %edx
movl %ebp, %eax
jmp 0x19481
movl %ebp, %eax
movl %edi, %r13d
movl %ecx, %esi
testb %dl, %dl
movq 0x40(%rsp), %rbp
jne 0x193bd
testl %eax, %eax
movq 0x50(%rsp), %r13
movq 0x48(%rsp), %r12
jle 0x194bd
movl %eax, %edx
shlq $0x2, %rdx
movq %r11, %rdi
xorl %esi, %esi
callq 0x3140
movq 0x38(%rsp), %r9
movq 0x28(%rsp), %r10
movq 0x18(%rsp), %r11
cmpl $0x0, 0xd0(%rsp)
je 0x19533
cmpq %rbp, %r13
jne 0x1950f
leaq (,%r10,4), %rdx
xorl %r14d, %r14d
movq %r13, %rdi
xorl %esi, %esi
callq 0x3140
movq 0x38(%rsp), %r9
movq 0x28(%rsp), %r10
movq 0x18(%rsp), %r11
cmpl $0x4, %ebx
jne 0x194fb
movl (%r15,%r14,4), %eax
jmp 0x19500
movzbl (%r15,%r14), %eax
cltq
incl (%r13,%rax,4)
incq %r14
cmpq %r14, %r9
jne 0x194f0
xorl %eax, %eax
xorl %ecx, %ecx
movl (%r13,%rax,4), %edx
addl %ecx, %edx
movl %ecx, (%rbp,%rax,4)
incq %rax
movl %edx, %ecx
cmpq %rax, %r10
jne 0x19513
cmpl $0x4, %ebx
jne 0x1959f
movl (%r15,%r12,4), %edx
jmp 0x195a4
cmpq %rbp, %r13
jne 0x1957b
leaq (,%r10,4), %rdx
xorl %r14d, %r14d
movq %r13, %rdi
xorl %esi, %esi
callq 0x3140
movq 0x38(%rsp), %r9
movq 0x28(%rsp), %r10
movq 0x18(%rsp), %r11
cmpl $0x4, %ebx
jne 0x19567
movl (%r15,%r14,4), %eax
jmp 0x1956c
movzbl (%r15,%r14), %eax
cltq
incl (%r13,%rax,4)
incq %r14
cmpq %r14, %r9
jne 0x1955c
xorl %eax, %eax
xorl %ecx, %ecx
movl (%r13,%rax,4), %edx
addl %ecx, %edx
movl %ecx, (%rbp,%rax,4)
incq %rax
movl %edx, %ecx
cmpq %rax, %r10
jne 0x1957f
cmpl $0x4, %ebx
jne 0x195ca
movl (%r15,%r12,4), %edx
jmp 0x195cf
movzbl (%r15,%r12), %edx
movslq %edx, %rax
movslq (%rbp,%rax,4), %rax
leaq (%r11,%rax,4), %rax
cmpl $0x2, 0x10(%rsp)
jl 0x195c3
cmpl $0x4, %ebx
jne 0x1960e
movl -0x8(%r15,%r9,4), %ecx
jmp 0x19614
movq 0x60(%rsp), %rcx
jmp 0x19625
movzbl (%r15,%r12), %edx
movslq %edx, %rax
movslq (%rbp,%rax,4), %rax
leaq (%r11,%rax,4), %rax
cmpl $0x2, 0x10(%rsp)
jl 0x195f5
cmpl $0x4, %ebx
jne 0x19ab4
movl -0x8(%r15,%r9,4), %ecx
jmp 0x19aba
movq 0x60(%rsp), %rcx
jmp 0x19acb
movl $0xfffffffe, %ebp       # imm = 0xFFFFFFFE
movq %r14, 0x40(%rsp)
jmp 0x19cd9
movzbl -0x2(%r15,%r9), %ecx
movq 0x10(%rsp), %rsi
negl %esi
cmpl %edx, %ecx
movq 0x60(%rsp), %rcx
cmovll %esi, %ecx
movl %ecx, (%rax)
addq $0x4, %rax
xorl %ecx, %ecx
movslq (%r11,%rcx,4), %rsi
testq %rsi, %rsi
jle 0x19644
leal -0x1(%rsi), %edi
cmpl $0x4, %ebx
jne 0x19656
movl (%r15,%rdi,4), %r8d
jmp 0x1965b
testl %esi, %esi
je 0x1964e
notl %esi
movl %esi, (%r11,%rcx,4)
movl %edx, %r8d
jmp 0x196f2
movzbl (%r15,%rdi), %r8d
cmpl $0x4, %ebx
jne 0x19666
movl (%r15,%rsi,4), %r9d
jmp 0x1966b
movzbl (%r15,%rsi), %r9d
cmpl %r9d, %r8d
jl 0x19cf7
movl %edi, %r8d
cmpl $0x4, %ebx
jne 0x19682
movl (%r15,%r8,4), %r8d
jmp 0x19687
movzbl (%r15,%r8), %r8d
movl %r8d, %r9d
notl %r9d
movl %r9d, (%r11,%rcx,4)
cmpl %edx, %r8d
jne 0x1969b
movl %edx, %r8d
jmp 0x196b5
subq %r11, %rax
shrq $0x2, %rax
movslq %edx, %rdx
movl %eax, (%rbp,%rdx,4)
movslq %r8d, %rax
movslq (%rbp,%rax,4), %rax
leaq (%r11,%rax,4), %rax
movq 0x38(%rsp), %r9
movq %rax, %rdx
subq %r11, %rdx
sarq $0x2, %rdx
cmpq %rcx, %rdx
jle 0x19d16
cmpl $0x1, %esi
je 0x196ec
cmpl $0x4, %ebx
jne 0x196de
movl -0x8(%r15,%rsi,4), %edx
jmp 0x196e4
movzbl -0x2(%r15,%rsi), %edx
negl %esi
cmpl %r8d, %edx
cmovll %esi, %edi
movl %edi, (%rax)
addq $0x4, %rax
incq %rcx
movl %r8d, %edx
cmpq %rcx, %r9
jne 0x1962d
cmpq %rbp, %r13
jne 0x19749
leaq (,%r10,4), %rdx
xorl %r14d, %r14d
movq %r13, %rdi
xorl %esi, %esi
callq 0x3140
movq 0x38(%rsp), %rcx
movq 0x28(%rsp), %r10
movq 0x18(%rsp), %r11
cmpl $0x4, %ebx
jne 0x19735
movl (%r15,%r14,4), %eax
jmp 0x1973a
movzbl (%r15,%r14), %eax
cltq
incl (%r13,%rax,4)
incq %r14
cmpq %r14, %rcx
jne 0x1972a
xorl %eax, %eax
xorl %ecx, %ecx
addl (%r13,%rax,4), %ecx
movl %ecx, (%rbp,%rax,4)
incq %rax
cmpq %rax, %r10
jne 0x1974d
movslq (%rbp), %rax
leaq (%r11,%rax,4), %rax
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
xorl %esi, %esi
movslq (%r11,%r12,4), %rcx
testq %rcx, %rcx
jle 0x19784
leal -0x1(%rcx), %edx
cmpl $0x4, %ebx
jne 0x19797
movl (%r15,%rdx,4), %edi
jmp 0x1979c
testl %ecx, %ecx
je 0x1982b
notl %ecx
movl %ecx, (%r11,%r12,4)
jmp 0x1982e
movzbl (%r15,%rdx), %edi
cmpl $0x4, %ebx
jne 0x197a7
movl (%r15,%rcx,4), %r8d
jmp 0x197ac
movzbl (%r15,%rcx), %r8d
cmpl %r8d, %edi
jg 0x19d35
movl %edx, %edi
cmpl $0x4, %ebx
jne 0x197c2
movl (%r15,%rdi,4), %edi
jmp 0x197c7
movzbl (%r15,%rdi), %edi
movl %edi, (%r11,%r12,4)
cmpl %esi, %edi
jne 0x197d3
movl %esi, %edi
jmp 0x197f1
subq %r11, %rax
shrq $0x2, %rax
movslq %esi, %rsi
movq 0x40(%rsp), %r8
movl %eax, (%r8,%rsi,4)
movslq %edi, %rax
movslq (%r8,%rax,4), %rax
leaq (%r11,%rax,4), %rax
movq %rax, %rsi
subq %r11, %rsi
sarq $0x2, %rsi
cmpq %r12, %rsi
jg 0x19d54
cmpl $0x1, %ecx
je 0x1983a
cmpl $0x4, %ebx
jne 0x19815
movl -0x8(%r15,%rcx,4), %esi
jmp 0x1981b
movzbl -0x2(%r15,%rcx), %esi
cmpl %edi, %esi
jle 0x1983a
cmpl $0x4, %ebx
jne 0x19832
movl -0x8(%r15,%rcx,4), %edx
jmp 0x19838
movl %r12d, %ebp
movl %esi, %edi
jmp 0x19841
movzbl -0x2(%r15,%rcx), %edx
notl %edx
movl %edx, -0x4(%rax)
addq $-0x4, %rax
leaq -0x1(%r12), %rcx
movl %edi, %esi
testq %r12, %r12
movq %rcx, %r12
jg 0x1976d
jmp 0x19cbf
subl %ecx, %edx
movl %edi, %ecx
shrl %ecx
leal (%rdx,%rsi), %eax
cmpl %eax, %ecx
jg 0x19f44
movslq %esi, %rax
leaq (%r11,%rax,4), %r9
movq %rsi, %r8
movslq %edx, %rsi
leaq (%r9,%rsi,4), %r14
leal -0x1(%r8), %r9d
cmpl $0x2, %edi
jb 0x198ab
addl 0x20(%rsp), %ecx
movslq %ecx, %rcx
movl %r9d, %r8d
movl -0x4(%r11,%rcx,4), %esi
testl %esi, %esi
je 0x198a3
decl %esi
movslq %r8d, %rdi
decl %r8d
movl %esi, (%r14,%rdi,4)
decq %rcx
cmpq %rax, %rcx
jg 0x1988e
movl %r9d, 0x40(%rsp)
movl $0x0, (%rsp)
movq %r14, %rdi
movq %r11, %rsi
movq 0x20(%rsp), %rcx
movl %r12d, %r8d
movl $0x4, %r9d
callq 0x18402
testl %eax, %eax
je 0x198ee
movl $0xfffffffe, %ebp       # imm = 0xFFFFFFFE
movq %r13, 0x40(%rsp)
testb $0x1, 0x30(%rsp)
jne 0x19cd9
jmp 0x19ce3
cmpl $0x4, %ebx
jne 0x198fe
movq 0x48(%rsp), %r12
movl (%r15,%r12,4), %edx
jmp 0x19908
movq 0x48(%rsp), %r12
movzbl (%r15,%r12), %edx
movq 0x18(%rsp), %r11
movq 0x28(%rsp), %r10
movq 0x10(%rsp), %rcx
movl 0x6c(%rsp), %r9d
leaq -0x1(%r12), %rsi
decl %ecx
testl %ecx, %ecx
jle 0x19948
movl %esi, %eax
cmpl $0x4, %ebx
jne 0x19934
movl (%r15,%rax,4), %eax
jmp 0x19939
movzbl (%r15,%rax), %eax
decq %rsi
cmpl %edx, %eax
movl %eax, %edx
jge 0x19921
leal -0x1(%rcx), %r9d
jmp 0x19952
movq 0x88(%rsp), %rcx
movl %edx, %eax
testl %ecx, %ecx
jle 0x199f3
movl %r9d, %edi
movl %r9d, %edx
sarl $0x1f, %edx
andl %r9d, %edx
leal -0x1(%rdx), %r8d
decq %rdi
movl %r9d, %ecx
movl %eax, %r9d
movl %ecx, %esi
testl %ecx, %ecx
jle 0x1999e
movl %edi, %eax
cmpl $0x4, %ebx
jne 0x19986
movl (%r15,%rax,4), %eax
jmp 0x1998b
movzbl (%r15,%rax), %eax
leal -0x1(%rsi), %ecx
decq %rdi
cmpl %r9d, %eax
movl %eax, %r9d
jle 0x19973
leal 0x1(%rcx), %edx
jmp 0x199a4
movl %r8d, %ecx
movl %r9d, %eax
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
testl %esi, %esi
jle 0x199ea
movl 0x40(%rsp), %edi
movslq %edi, %rsi
decl %edi
movl %edi, 0x40(%rsp)
movl %edx, (%r14,%rsi,4)
movl %ecx, %edx
decq %rdx
testl %ecx, %ecx
jle 0x199ea
movl %edx, %esi
cmpl $0x4, %ebx
jne 0x199d5
movl (%r15,%rsi,4), %esi
jmp 0x199da
movzbl (%r15,%rsi), %esi
decl %ecx
decq %rdx
cmpl %eax, %esi
movl %esi, %eax
jge 0x199c4
movl %ecx, %r9d
movl %esi, %eax
testl %r9d, %r9d
jns 0x1995a
movq 0x20(%rsp), %rsi
testl %esi, %esi
jle 0x19a14
movl %esi, %eax
xorl %ecx, %ecx
movslq (%r11,%rcx,4), %rdx
movl (%r14,%rdx,4), %edx
movl %edx, (%r11,%rcx,4)
incq %rcx
cmpq %rcx, %rax
jne 0x19a00
movq 0x30(%rsp), %rax
testb $0x4, %al
je 0x19a49
leaq (,%r10,4), %rdi
callq 0x3300
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %r10
movq 0x18(%rsp), %r11
movq %rax, %rbp
movq 0x30(%rsp), %rax
movq %rbp, %r13
testq %rbp, %rbp
je 0x19a88
testb $0x2, %al
je 0x1930f
leaq (,%r10,4), %rdi
callq 0x3300
testq %rax, %rax
je 0x198d4
movq %rax, %rbp
movq 0x18(%rsp), %r11
movq 0x30(%rsp), %rax
movq 0x28(%rsp), %r10
movq 0x38(%rsp), %r9
movq 0x20(%rsp), %rsi
jmp 0x19314
movl $0xfffffffe, %ebp       # imm = 0xFFFFFFFE
jmp 0x19ce3
movq 0x30(%rsp), %rax
testb $0x5, %al
je 0x19aaa
movq 0x50(%rsp), %rdi
callq 0x3290
movq 0x30(%rsp), %rax
movl $0xfffffffe, %ebp       # imm = 0xFFFFFFFE
jmp 0x19cd5
movzbl -0x2(%r15,%r9), %ecx
movq 0x10(%rsp), %rsi
negl %esi
cmpl %edx, %ecx
movq 0x60(%rsp), %rcx
cmovll %esi, %ecx
movl %ecx, (%rax)
addq $0x4, %rax
xorl %ecx, %ecx
movslq (%r11,%rcx,4), %rsi
movl %esi, %edi
notl %edi
movl %edi, (%r11,%rcx,4)
testq %rsi, %rsi
jle 0x19b8b
leal -0x1(%rsi), %edi
cmpl $0x4, %ebx
jne 0x19af6
movl (%r15,%rdi,4), %r8d
jmp 0x19afb
movzbl (%r15,%rdi), %r8d
cmpl $0x4, %ebx
jne 0x19b06
movl (%r15,%rsi,4), %r9d
jmp 0x19b0b
movzbl (%r15,%rsi), %r9d
cmpl %r9d, %r8d
jl 0x19def
movl %edi, %r8d
cmpl $0x4, %ebx
movq 0x38(%rsp), %r9
jne 0x19b27
movl (%r15,%r8,4), %r8d
jmp 0x19b2c
movzbl (%r15,%r8), %r8d
cmpl %edx, %r8d
jne 0x19b36
movl %edx, %r8d
jmp 0x19b50
subq %r11, %rax
shrq $0x2, %rax
movslq %edx, %rdx
movl %eax, (%rbp,%rdx,4)
movslq %r8d, %rax
movslq (%rbp,%rax,4), %rax
leaq (%r11,%rax,4), %rax
movq %rax, %rdx
subq %r11, %rdx
sarq $0x2, %rdx
cmpq %rcx, %rdx
jle 0x19e0e
cmpl $0x1, %esi
je 0x19b82
cmpl $0x4, %ebx
jne 0x19b74
movl -0x8(%r15,%rsi,4), %edx
jmp 0x19b7a
movzbl -0x2(%r15,%rsi), %edx
negl %esi
cmpl %r8d, %edx
cmovll %esi, %edi
movl %edi, (%rax)
addq $0x4, %rax
movl %r8d, %edx
incq %rcx
cmpq %rcx, %r9
jne 0x19ad3
cmpq %rbp, %r13
jne 0x19bdf
leaq (,%r10,4), %rdx
xorl %r14d, %r14d
movq %r13, %rdi
xorl %esi, %esi
callq 0x3140
movq 0x38(%rsp), %rcx
movq 0x28(%rsp), %r10
movq 0x18(%rsp), %r11
cmpl $0x4, %ebx
jne 0x19bcb
movl (%r15,%r14,4), %eax
jmp 0x19bd0
movzbl (%r15,%r14), %eax
cltq
incl (%r13,%rax,4)
incq %r14
cmpq %r14, %rcx
jne 0x19bc0
xorl %eax, %eax
xorl %ecx, %ecx
addl (%r13,%rax,4), %ecx
movl %ecx, (%rbp,%rax,4)
incq %rax
cmpq %rax, %r10
jne 0x19be3
movslq (%rbp), %rax
leaq (%r11,%rax,4), %rax
xorl %esi, %esi
movslq (%r11,%r12,4), %rcx
testq %rcx, %rcx
jle 0x19c15
leal -0x1(%rcx), %edx
cmpl $0x4, %ebx
jne 0x19c20
movl (%r15,%rdx,4), %edi
jmp 0x19c25
notl %ecx
movl %ecx, (%r11,%r12,4)
jmp 0x19cac
movzbl (%r15,%rdx), %edi
cmpl $0x4, %ebx
jne 0x19c30
movl (%r15,%rcx,4), %r8d
jmp 0x19c35
movzbl (%r15,%rcx), %r8d
cmpl %r8d, %edi
jg 0x19e2d
movl %edx, %edi
cmpl $0x4, %ebx
jne 0x19c4b
movl (%r15,%rdi,4), %edi
jmp 0x19c50
movzbl (%r15,%rdi), %edi
cmpl %esi, %edi
jne 0x19c58
movl %esi, %edi
jmp 0x19c72
subq %r11, %rax
shrq $0x2, %rax
movslq %esi, %rsi
movl %eax, (%rbp,%rsi,4)
movslq %edi, %rax
movslq (%rbp,%rax,4), %rax
leaq (%r11,%rax,4), %rax
movq %rax, %rsi
subq %r11, %rsi
sarq $0x2, %rsi
cmpq %r12, %rsi
jg 0x19e4c
testl %edx, %edx
je 0x19c9f
cmpl $0x4, %ebx
jne 0x19c95
movl -0x8(%r15,%rcx,4), %esi
jmp 0x19c9b
movzbl -0x2(%r15,%rcx), %esi
cmpl %edi, %esi
jle 0x19ca3
negl %ecx
movl %ecx, %edx
movl %edx, -0x4(%rax)
addq $-0x4, %rax
movl %edi, %esi
leaq -0x1(%r12), %rcx
testq %r12, %r12
movq %rcx, %r12
jg 0x19bfe
xorl %ebp, %ebp
movq 0x30(%rsp), %rax
testb $0x5, %al
je 0x19cd5
movq %r13, %rdi
callq 0x3290
movq 0x30(%rsp), %rax
testb $0x2, %al
je 0x19ce3
movq 0x40(%rsp), %rdi
callq 0x3290
movl %ebp, %eax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xc5cae(%rip), %rdi     # 0xdf9ac
leaq 0xc5bc3(%rip), %rsi     # 0xdf8c8
leaq 0xc5dce(%rip), %rcx     # 0xdfada
movl $0x130, %edx            # imm = 0x130
callq 0x3170
leaq 0xc5ca4(%rip), %rdi     # 0xdf9c1
leaq 0xc5ba4(%rip), %rsi     # 0xdf8c8
leaq 0xc5daf(%rip), %rcx     # 0xdfada
movl $0x133, %edx            # imm = 0x133
callq 0x3170
leaq 0xc5c92(%rip), %rdi     # 0xdf9ce
leaq 0xc5b85(%rip), %rsi     # 0xdf8c8
leaq 0xc5d90(%rip), %rcx     # 0xdfada
movl $0x13f, %edx            # imm = 0x13F
callq 0x3170
leaq 0xc5c88(%rip), %rdi     # 0xdf9e3
leaq 0xc5b66(%rip), %rsi     # 0xdf8c8
leaq 0xc5d71(%rip), %rcx     # 0xdfada
movl $0x142, %edx            # imm = 0x142
callq 0x3170
leaq 0xc5c32(%rip), %rdi     # 0xdf9ac
leaq 0xc5b47(%rip), %rsi     # 0xdf8c8
leaq 0xc5bdd(%rip), %rcx     # 0xdf965
movl $0xaa, %edx
callq 0x3170
leaq 0xc5c28(%rip), %rdi     # 0xdf9c1
leaq 0xc5b28(%rip), %rsi     # 0xdf8c8
leaq 0xc5bbe(%rip), %rcx     # 0xdf965
movl $0xac, %edx
callq 0x3170
leaq 0xc5c16(%rip), %rdi     # 0xdf9ce
leaq 0xc5b09(%rip), %rsi     # 0xdf8c8
leaq 0xc5b9f(%rip), %rcx     # 0xdf965
movl $0xc6, %edx
callq 0x3170
leaq 0xc5c0c(%rip), %rdi     # 0xdf9e3
leaq 0xc5aea(%rip), %rsi     # 0xdf8c8
leaq 0xc5b80(%rip), %rcx     # 0xdf965
movl $0xc8, %edx
callq 0x3170
leaq 0xc5bb6(%rip), %rdi     # 0xdf9ac
leaq 0xc5acb(%rip), %rsi     # 0xdf8c8
leaq 0xc5c96(%rip), %rcx     # 0xdfa9a
movl $0x10b, %edx            # imm = 0x10B
callq 0x3170
leaq 0xc5bac(%rip), %rdi     # 0xdf9c1
leaq 0xc5aac(%rip), %rsi     # 0xdf8c8
leaq 0xc5c77(%rip), %rcx     # 0xdfa9a
movl $0x10d, %edx            # imm = 0x10D
callq 0x3170
leaq 0xc5b9a(%rip), %rdi     # 0xdf9ce
leaq 0xc5a8d(%rip), %rsi     # 0xdf8c8
leaq 0xc5c58(%rip), %rcx     # 0xdfa9a
movl $0x117, %edx            # imm = 0x117
callq 0x3170
leaq 0xc5b90(%rip), %rdi     # 0xdf9e3
leaq 0xc5a6e(%rip), %rsi     # 0xdf8c8
leaq 0xc5c39(%rip), %rcx     # 0xdfa9a
movl $0x119, %edx            # imm = 0x119
callq 0x3170
leaq 0xc5b3a(%rip), %rdi     # 0xdf9ac
leaq 0xc5a4f(%rip), %rsi     # 0xdf8c8
leaq 0xc5ba5(%rip), %rcx     # 0xdfa25
movl $0x50, %edx
callq 0x3170
leaq 0xc5b30(%rip), %rdi     # 0xdf9c1
leaq 0xc5a30(%rip), %rsi     # 0xdf8c8
leaq 0xc5b86(%rip), %rcx     # 0xdfa25
movl $0x52, %edx
callq 0x3170
leaq 0xc5b1e(%rip), %rdi     # 0xdf9ce
leaq 0xc5a11(%rip), %rsi     # 0xdf8c8
leaq 0xc5b67(%rip), %rcx     # 0xdfa25
movl $0x5f, %edx
callq 0x3170
leaq 0xc5b14(%rip), %rdi     # 0xdf9e3
leaq 0xc59f2(%rip), %rsi     # 0xdf8c8
leaq 0xc5b48(%rip), %rcx     # 0xdfa25
movl $0x61, %edx
callq 0x3170
leaq 0xc5a4a(%rip), %rdi     # 0xdf938
leaq 0xc59d3(%rip), %rsi     # 0xdf8c8
leaq 0xc59d3(%rip), %rcx     # 0xdf8cf
movl $0x196, %edx            # imm = 0x196
callq 0x3170
leaq 0xc599f(%rip), %rdi     # 0xdf8ac
leaq 0xc59b4(%rip), %rsi     # 0xdf8c8
leaq 0xc59b4(%rip), %rcx     # 0xdf8cf
movl $0x158, %edx            # imm = 0x158
callq 0x3170
leaq 0xc59df(%rip), %rdi     # 0xdf90b
leaq 0xc5995(%rip), %rsi     # 0xdf8c8
leaq 0xc5995(%rip), %rcx     # 0xdf8cf
movl $0x159, %edx            # imm = 0x159
callq 0x3170
leaq 0xc59fb(%rip), %rdi     # 0xdf946
leaq 0xc5976(%rip), %rsi     # 0xdf8c8
leaq 0xc5976(%rip), %rcx     # 0xdf8cf
movl $0x1b1, %edx            # imm = 0x1B1
callq 0x3170
leaq 0xc59c2(%rip), %rdi     # 0xdf92c
leaq 0xc5957(%rip), %rsi     # 0xdf8c8
leaq 0xc5957(%rip), %rcx     # 0xdf8cf
movl $0x192, %edx            # imm = 0x192
callq 0x3170
leaq 0xc59d5(%rip), %rdi     # 0xdf95e
leaq 0xc5938(%rip), %rsi     # 0xdf8c8
leaq 0xc59ce(%rip), %rcx     # 0xdf965
movl $0x9d, %edx
callq 0x3170