// File: /workspace/github_c_makefile_star2_O3/nh13[P]ksw/src/parasail/contrib/sais-lite-lcp/sais.c
// Function: sais_main
static sais_index_type sais_main(const void *T, sais_index_type *SA,
				 sais_index_type *LCP,
				 sais_index_type fs, sais_index_type n, sais_index_type k, int cs,
				 sais_bool_type isbwt,
				 sais_bool_type level0) { /* level0 = 1 iff recursion depth is 0 */
  sais_index_type *C, *B, *D, *RA, *PLCP, *PHI, *DELTA, *b;
  sais_index_type i, j, m, /* m: number of S*-suffixes */
    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) { /* only one S*-suffix => set immediately */
    *b = j + 1;        /* set entry in SA */
    if (level0) { LCP[b-SA] = -1; } /* mark first (=only) S*-suffix in bucket */
    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, NULL, newfs, m, name, sizeof(sais_index_type), 0, 0) != 0) {
      if(flags & 1) { SAIS_MYFREE(C, k, sais_index_type); }
      return -2;
    }

    /* (re)compute starting positions of S*-suffixes (stored in RA): */
    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));
      }
    }

    /* construct LCP for S*-suffixes: */
    /* PHI: "to whom I want to be compared" (pos. in T) */
    /* DELTA: "distance (in T) to next S*" (in PHI-order) */
    if (level0) {
      if (m < n/3) { /* hence we can store PHI and DELTA interleaved */
	PHI = LCP+m;       /* use space in LCP-array for PHI and DELTA */
	RA[m] = n;         /* stopper */
	j = SA[0];         /* j stores SA[i-1] in the following loop */
	PHI[j<<1] = n-1;   /* set PHI[SA[0]] to $ (causes mismatch in char. comp.) */
	PHI[(j<<1)+1] = 0; /* set DELTA */
	for (i = 1; i < m; ++i) {
	  q = SA[i];                /* text position */
	  p = q<<1;                 /* for interleaving */
	  PHI[p]=RA[j];             /* set PHI-array */
	  PHI[p+1]=RA[j+1]-RA[j];   /* set DELTA */
	  j = q;                    /* store for next loop iteration */
	}

	PLCP = PHI; /* overwrite DELTA in following loop */
	p = 0; /* guaranteed LCP-value */
	j = 0; /* position in PLCP and RA */
	for (i = 0; i < n; ++i) {
	  if (i == RA[j]) {
	    sais_index_type twoj = j << 1;
	    if (p < 0) p = 0;
	    while (chr(i+p) == chr(PHI[twoj]+p)) ++p;
	    t = PHI[twoj+1];      /* accesses DELTA-value */
	    q = RA[j+1]-RA[j];    /* length difference */
	    PLCP[twoj] = p;       /* overwrite PHI with PLCP */
	    ++j;
	    p -= (t > q) ? t : q; /* decrease p by larger of t and q */
	  }
	}

	/* translate PLCP-values to SA-order: */
	for (j = 0; j < m; ++j) LCP[j] = PLCP[SA[j]<<1];
      }
      else { /* non-interleaved */
	PHI = LCP;     /* use space in LCP-array for PHI */
	DELTA = LCP+m; /* because we compute only m < n/2 values, this is valid */
	RA[m] = n;     /* stopper */
	j = SA[0];     /* j stores SA[i-1] in the following loop */
	PHI[j] = n-1;  /* set PHI[SA[0]] to $ (causes mismatch in char. comp.) */
	DELTA[j] = 0;
	for (i = 1; i < m; ++i) {
	  q = SA[i];              /* text position */
	  PHI[q]=RA[j];           /* set PHI-array */
	  DELTA[q]=RA[j+1]-RA[j]; /* set DELTA */
	  j = q;                  /* store for next loop iteration */
	}

	PLCP = DELTA; /* overwrite DELTA in following loop */
	p = 0; /* guaranteed LCP-value */
	j = 0; /* position in PLCP and RA */
	for (i = 0; i < n; ++i) {
	  if (i == RA[j]) {
	    if (p < 0) p = 0;
	    while (chr(i+p) == chr(PHI[j]+p)) ++p;
	    t = PLCP[j];          /* accesses DELTA-value */
	    q = RA[j+1]-RA[j];    /* length difference */
	    PLCP[j++] = p;
	    p -= (t > q) ? t : q; /* decrease p by larger of t and q */
	  }
	}

	/* translate PLCP-values to SA-order: */
	for (j = 0; j < m; ++j) LCP[j] = PLCP[SA[j]];
      }
    }

    /* translate indices in RA to indices in T: */
    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;
      }
    }
  } /* endif (name < m) */
  else if (level0) { /* this should only occur for small or pathetic inputs */
    /* all names unique => computing LCP for *S naively takes linear time */
    /*printf("*** computing LCP naively..."); */
    j = SA[0]; /* j = SA[i-1] in the following loop */
    for (i = 1; i < m; ++i) {
      p = 0;
      while (chr(SA[i]+p) == chr(j+p)) p++;
      LCP[i] = p;
      j = SA[i];
    }
    /*printf("done.\n"); */
  }

  /* stage 3: induce the result for the original problem */
  if(flags & 8) { getCounts(T, C, n, k, cs); }
  /* put all S*-suffixes (and their LCP-values) into their buckets */
  if(1 < m) { /* otherwise SA (and LCP) is already correct */
    getBuckets(C, B, k, 1); /* find ends of buckets */
    i = m - 1, j = n, p = SA[m - 1], c1 = chr(p);
    if (level0) {
      newfs = LCP[m-1]; /* newfs stores LCP[i] in the following loop */
      do {
	q = B[c0 = c1];
	while(q < j) {
	  SA[--j] = 0; LCP[j] = -2; /* set remaining entries in old bucket to 0/-2 */
	}
	
	do { /* step through bucket c0 and write S*-suffixes to SA: */
	  SA[--j] = p; LCP[j] = newfs;
	  if(--i < 0) break;
	  newfs = LCP[i]; p = SA[i];
	} while((c1 = chr(p)) == c0);
	/*assert(LCP[j]==0); *//* first S*-suffix in bucket must have LCP-value 0 */
	LCP[j] = -1;       /* mark first S*-suffix in every bucket */
      } while(0 <= i);
      while(0 < j) {
	SA[--j] = 0; LCP[j] = -2; /* set remaining entries in smallest buckets to 0/-2 */
      }
    }
    else {
      do {
	q = B[c0 = c1];
	while(q < j) SA[--j] = 0; /* set remaining entries in old bucket to 0 */
	do { /* step through bucket c0 */
	  SA[--j] = p;
	  if(--i < 0) break;
	  p = SA[i];
	} while((c1 = chr(p)) == c0);
      } while(0 <= i);
      while(0 < j) SA[--j] = 0; /* set remaining entries in 1st bucket to 0 */
    }
  }

  if(isbwt == 0) {
    if (level0) induceSAandLCP(T, SA, LCP, C, B, n, k, cs);
    else 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 $0xb8, %rsp
movq %r8, 0x18(%rsp)
testq %rdi, %rdi
je 0x3088ba
movl %ecx, %r15d
testl %ecx, %ecx
js 0x3088d9
cmpl $0x0, 0x18(%rsp)
jle 0x3088d9
testl %r9d, %r9d
jle 0x3088d9
movq %rdx, %rbp
movq %rsi, %r13
movq %rdi, %r12
cmpl $0x100, %r9d            # imm = 0x100
movq %rsi, 0x38(%rsp)
movq %rdi, 0x10(%rsp)
movq %r9, 0x70(%rsp)
movq %rdx, 0x40(%rsp)
ja 0x305df0
leal (,%r9,4), %r12d
movq %r12, %rdi
movq %r9, %rbx
callq 0x29e340
movl $0xfffffffe, %ebp       # imm = 0xFFFFFFFE
testq %rax, %rax
je 0x3084dd
movq %rax, %r14
cmpl %ebx, %r15d
jae 0x305e71
movq %r12, %rdi
callq 0x29e340
testq %rax, %rax
je 0x308525
movl $0x3, %ecx
movq %rcx, 0x28(%rsp)
xorl %ecx, %ecx
movq 0x38(%rsp), %r13
movq 0x10(%rsp), %r12
movq 0x70(%rsp), %r9
jmp 0x305ea2
movl %r15d, %eax
subl %r9d, %eax
jae 0x305e26
movl %r9d, %edi
shlq $0x2, %rdi
callq 0x29e340
testq %rax, %rax
je 0x3084d8
movl $0xc, %ecx
movq %rcx, 0x28(%rsp)
xorl %ecx, %ecx
movq %rax, %r14
movq 0x70(%rsp), %r9
jmp 0x305ed2
movq 0x18(%rsp), %rcx
addl %r15d, %ecx
subl %r9d, %ecx
movslq %ecx, %rcx
leaq (,%rcx,4), %r14
addq %r13, %r14
cmpl %r9d, %eax
jge 0x305ea9
cmpl $0x400, %r9d            # imm = 0x400
ja 0x305ec3
leal (,%r9,4), %edi
callq 0x29e340
testq %rax, %rax
je 0x3084d8
movl $0x2, %ecx
movq %rcx, 0x28(%rsp)
xorl %ecx, %ecx
jmp 0x305e1c
movq %rbx, %r9
movq 0x18(%rsp), %rax
addl %r15d, %eax
subl %r9d, %eax
cltq
movq 0x38(%rsp), %r13
leaq (,%rax,4), %rax
addq %r13, %rax
movl $0x1, %ecx
movq %rcx, 0x28(%rsp)
xorl %ecx, %ecx
movq 0x10(%rsp), %r12
movq 0x40(%rsp), %rbp
jmp 0x305ed2
movl %r9d, %ecx
shlq $0x2, %rcx
movq %r14, %rax
subq %rcx, %rax
movq $0x0, 0x28(%rsp)
movb $0x1, %cl
jmp 0x305ed2
movl $0x8, %eax
movq %rax, 0x28(%rsp)
xorl %ecx, %ecx
movq %r14, %rax
movq %rax, (%rsp)
movq 0x18(%rsp), %rax
cmpl $0x3fffffff, %eax       # imm = 0x3FFFFFFF
ja 0x305f33
xorl %edx, %edx
divl %r9d
cmpl $0x2, %eax
jb 0x305f33
movq 0x28(%rsp), %rsi
testb $0x1, %sil
jne 0x305f15
testb %cl, %cl
je 0x305f33
leal (%r9,%r9), %eax
movl %r15d, %ecx
subl %eax, %ecx
xorl %edx, %edx
cmpl %ecx, %eax
setle %dl
shll $0x5, %edx
movq %rdx, 0x28(%rsp)
jmp 0x305f33
leal (%r9,%r9), %eax
movl %r15d, %ecx
subl %r9d, %ecx
xorl %edx, %edx
cmpl %ecx, %eax
setle %dl
shll $0x4, %edx
addl %edx, %esi
addl $0x10, %esi
movq %rsi, 0x28(%rsp)
movq %r15, 0x90(%rsp)
movl 0xf0(%rsp), %r15d
movl %r9d, %eax
movq %rax, 0x48(%rsp)
leaq (,%rax,4), %rdx
xorl %ebx, %ebx
movq %r14, %rdi
xorl %esi, %esi
movq %rdx, 0x50(%rsp)
callq 0x29e140
movl %r15d, %ecx
movl 0x18(%rsp), %r15d
movq (%rsp), %rdx
cmpl $0x4, %ecx
jne 0x305f7b
movl (%r12,%rbx,4), %eax
jmp 0x305f80
movzbl (%r12,%rbx), %eax
cltq
incl (%r14,%rax,4)
incq %rbx
cmpq %rbx, %r15
jne 0x305f70
xorl %eax, %eax
xorl %ecx, %ecx
movq 0x48(%rsp), %rsi
addl (%r14,%rax,4), %ecx
movl %ecx, (%rdx,%rax,4)
incq %rax
cmpq %rax, %rsi
jne 0x305f97
leaq (,%r15,4), %rdx
movq %r13, %rdi
xorl %esi, %esi
callq 0x29e140
movq 0x18(%rsp), %rax
leal -0x1(%rax), %esi
movl 0xf0(%rsp), %r10d
cmpl $0x4, %r10d
jne 0x305fd4
movl (%r12,%rsi,4), %eax
jmp 0x305fd9
movzbl (%r12,%rsi), %eax
leaq -0x1(%rsi), %rdx
movl %esi, %ecx
movq (%rsp), %r11
movq %rsi, 0x30(%rsp)
movq %r15, 0x68(%rsp)
testl %ecx, %ecx
jle 0x3060c3
movl %edx, %esi
cmpl $0x4, %r10d
jne 0x306003
movl (%r12,%rsi,4), %esi
jmp 0x306008
movzbl (%r12,%rsi), %esi
decl %ecx
decq %rdx
cmpl %eax, %esi
movl %esi, %eax
jge 0x305fed
leaq 0x7c(%rsp), %rax
movq $0x0, 0x8(%rsp)
movq 0x18(%rsp), %rbp
movl %ebp, %edi
movl %ecx, %r8d
decl %ecx
movl %ecx, %r9d
movl %esi, %edx
movq %r8, %rbx
subq $0x1, %rbx
jb 0x30616a
movl %edx, %esi
movl %r9d, %ecx
cmpl $0x4, %r10d
jne 0x306050
movl (%r12,%rbx,4), %edx
jmp 0x306056
movzbl -0x1(%r12,%r8), %edx
leal -0x1(%rcx), %r9d
movq %rbx, %r8
cmpl %esi, %edx
jle 0x306035
movl %edi, (%rax)
movslq %esi, %rax
movslq (%r11,%rax,4), %rsi
leaq -0x1(%rsi), %rdi
movl %edi, (%r11,%rax,4)
leaq -0x4(,%rsi,4), %rax
addq %r13, %rax
movq 0x8(%rsp), %rsi
incl %esi
movq %rsi, 0x8(%rsp)
movl %ecx, %edi
decq %rdi
testl %ecx, %ecx
jle 0x30616c
movl %edi, %esi
cmpl $0x4, %r10d
jne 0x3060a4
movl (%r12,%rsi,4), %esi
jmp 0x3060a9
movzbl (%r12,%rsi), %esi
decl %ecx
decq %rdi
cmpl %edx, %esi
movl %esi, %edx
jge 0x30608e
movl %ebx, %edi
testl %ecx, %ecx
jns 0x306028
jmp 0x30616c
xorl %ecx, %ecx
movq $0x0, 0x8(%rsp)
testb $0x8, 0x28(%rsp)
movq %r11, (%rsp)
je 0x30611d
xorl %ebx, %ebx
movq %r14, %rdi
xorl %esi, %esi
movq 0x50(%rsp), %rdx
movl %ecx, 0x20(%rsp)
callq 0x29e140
movl 0x20(%rsp), %ecx
movl 0xf0(%rsp), %r10d
movq (%rsp), %r11
cmpl $0x4, %r10d
jne 0x30610a
movl (%r12,%rbx,4), %eax
jmp 0x30610f
movzbl (%r12,%rbx), %eax
cltq
incl (%r14,%rax,4)
incq %rbx
cmpq %rbx, %r15
jne 0x3060fe
testb %cl, %cl
movq %r14, 0x58(%rsp)
movq 0x48(%rsp), %rbx
je 0x306471
xorl %eax, %eax
xorl %ecx, %ecx
addl (%r14,%rax,4), %ecx
movl %ecx, (%r11,%rax,4)
incq %rax
cmpq %rax, %rbx
jne 0x306133
movq 0x8(%rsp), %r12
decl %r12d
movl (%r13,%r12,4), %ebp
movslq %ebp, %rax
cmpl $0x4, %r10d
jne 0x306200
movq 0x10(%rsp), %rcx
movl (%rcx,%rax,4), %ebx
jmp 0x306209
movl %edi, %ebx
movq 0x8(%rsp), %rcx
cmpl $0x2, %ecx
setge %dl
movl %edx, 0x20(%rsp)
movq %r14, 0x58(%rsp)
jl 0x3061ae
movq 0x28(%rsp), %rax
testb $0x30, %al
je 0x3073ac
movq 0x70(%rsp), %rcx
leal (%rcx,%rcx), %edi
shlq $0x2, %rdi
testb $0x10, %al
jne 0x307430
movq %r11, %rax
subq %rdi, %rax
jmp 0x30744a
movl $0x0, 0x20(%rsp)
movl $0x0, %ebp
cmpl $0x1, %ecx
movq %rcx, %r12
jne 0x307ef5
incl %ebx
movl %ebx, (%rax)
cmpl $0x0, 0x100(%rsp)
je 0x307af1
subq %r13, %rax
movq 0x40(%rsp), %rcx
movl $0xffffffff, (%rcx,%rax) # imm = 0xFFFFFFFF
movl $0x1, %r12d
movl $0x0, 0x20(%rsp)
movl $0x1, %ebp
jmp 0x307ef5
movq 0x10(%rsp), %rcx
movzbl (%rcx,%rax), %ebx
cmpl $0x0, 0x100(%rsp)
je 0x306367
movq 0x40(%rsp), %rax
movl (%rax,%r12,4), %edx
leaq -0x4(%r13), %rcx
movq 0x18(%rsp), %rax
movslq %ebx, %rsi
movslq (%r11,%rsi,4), %rsi
cmpl %eax, %esi
jge 0x306254
cltq
movq 0x40(%rsp), %rdi
movl $0x0, -0x4(%r13,%rax,4)
movl $0xfffffffe, -0x4(%rdi,%rax,4) # imm = 0xFFFFFFFE
decq %rax
cmpq %rsi, %rax
jg 0x30623b
decl %eax
movslq %eax, %r9
movl %ebp, (%r13,%r9,4)
movq 0x40(%rsp), %rbp
movl %edx, (%rbp,%r9,4)
testl %r12d, %r12d
jle 0x306320
leal -0x1(%r12), %esi
leaq (,%r9,4), %r8
addq %rbp, %r8
leaq (%rcx,%r9,4), %r9
leaq (,%rsi,4), %r10
addq %r13, %r10
leaq (,%rsi,4), %r11
addq %rbp, %r11
xorl %edi, %edi
movl (%r10,%rdi,4), %ebp
movslq %ebp, %rdx
cmpl $0x4, 0xf0(%rsp)
jne 0x3062b9
movq 0x10(%rsp), %r14
movl (%r14,%rdx,4), %r14d
jmp 0x3062c3
movq 0x10(%rsp), %r14
movzbl (%r14,%rdx), %r14d
movl (%r11,%rdi,4), %edx
cmpl %ebx, %r14d
jne 0x3062e9
movl %ebp, (%r9,%rdi,4)
movl %edx, -0x4(%r8,%rdi,4)
leaq (%rsi,%rdi), %rdx
decq %rdx
decq %rdi
incq %rdx
testq %rdx, %rdx
jg 0x30629d
jmp 0x306309
addl %edi, %esi
addl %edi, %eax
movl $0xffffffff, (%r8,%rdi,4) # imm = 0xFFFFFFFF
movl %esi, %r12d
movl %r14d, %ebx
movq 0x58(%rsp), %r14
movq (%rsp), %r11
jmp 0x306229
movslq %eax, %r9
subl %r12d, %eax
addq %rdi, %r9
movq 0x58(%rsp), %r14
movq (%rsp), %r11
movq 0x40(%rsp), %rbp
movl $0xffffffff, (%rbp,%r9,4) # imm = 0xFFFFFFFF
testl %eax, %eax
movq 0x10(%rsp), %r12
movl 0xf0(%rsp), %r10d
movq 0x48(%rsp), %rbx
jle 0x306471
movl %eax, %eax
incq %rax
movl $0x0, -0x8(%r13,%rax,4)
movl $0xfffffffe, -0x8(%rbp,%rax,4) # imm = 0xFFFFFFFE
decq %rax
cmpq $0x1, %rax
ja 0x306348
jmp 0x306471
movq %r12, %r14
leaq -0x4(%r13), %r9
leaq -0x8(%r13), %r15
movq 0x18(%rsp), %rax
movslq %ebx, %rcx
movslq (%r11,%rcx,4), %r12
cmpl %eax, %r12d
jge 0x3063cd
movq %r15, 0x8(%rsp)
movslq %eax, %r13
movl %r12d, %ecx
notl %ecx
addl %eax, %ecx
movq %r13, %rax
subq %rcx, %rax
movq %r9, %r15
leaq (%r9,%rax,4), %rdi
leaq 0x4(,%rcx,4), %rdx
xorl %esi, %esi
callq 0x29e140
decq %r13
cmpq %r12, %r13
jg 0x3063ae
movl %r13d, %eax
movq (%rsp), %r11
movl 0xf0(%rsp), %r10d
movq %r15, %r9
movq 0x8(%rsp), %r15
leal -0x1(%rax), %ecx
movslq %ecx, %rdx
movq 0x38(%rsp), %r13
movl %ebp, (%r13,%rdx,4)
testl %r14d, %r14d
jle 0x306438
leal -0x1(%r14), %edx
cltq
leaq (%r15,%rax,4), %rsi
movl %ecx, %eax
movl (%r13,%rdx,4), %ebp
movslq %ebp, %rdi
cmpl $0x4, %r10d
jne 0x306407
movq 0x10(%rsp), %r8
movl (%r8,%rdi,4), %edi
jmp 0x306411
movq 0x10(%rsp), %r8
movzbl (%r8,%rdi), %edi
cmpl %ebx, %edi
jne 0x30642b
movl %ebp, (%rsi)
leaq -0x1(%rdx), %rdi
decl %eax
addq $-0x4, %rsi
testq %rdx, %rdx
movq %rdi, %rdx
jg 0x3063ee
jmp 0x306435
movl %edx, %r14d
movl %edi, %ebx
jmp 0x306377
subl %r14d, %ecx
testl %ecx, %ecx
movq 0x10(%rsp), %r12
movq 0x58(%rsp), %r14
movq 0x40(%rsp), %rbp
movq 0x48(%rsp), %rbx
movq 0x68(%rsp), %r15
jle 0x306471
movl %ecx, %edx
shlq $0x2, %rdx
movq %r13, %rdi
xorl %esi, %esi
callq 0x29e140
movl 0xf0(%rsp), %r10d
movq (%rsp), %r11
cmpl $0x0, 0xf8(%rsp)
je 0x306517
cmpq %r11, %r14
movq 0x18(%rsp), %rbp
jne 0x3064c5
xorl %ebx, %ebx
movq %r14, %rdi
xorl %esi, %esi
movq 0x50(%rsp), %rdx
callq 0x29e140
movl 0xf0(%rsp), %r10d
movq (%rsp), %r11
cmpl $0x4, %r10d
jne 0x3064b2
movl (%r12,%rbx,4), %eax
jmp 0x3064b7
movzbl (%r12,%rbx), %eax
cltq
incl (%r14,%rax,4)
incq %rbx
cmpq %rbx, %r15
jne 0x3064a6
xorl %eax, %eax
xorl %ecx, %ecx
movq 0x48(%rsp), %rsi
movl (%r14,%rax,4), %edx
addl %ecx, %edx
movl %ecx, (%r11,%rax,4)
incq %rax
movl %edx, %ecx
cmpq %rax, %rsi
jne 0x3064ce
cmpl $0x4, %r10d
movq 0x30(%rsp), %rsi
jne 0x3066f9
movslq (%r12,%rsi,4), %rdx
movslq (%r11,%rdx,4), %rax
leaq (,%rax,4), %rax
addq %r13, %rax
cmpl $0x1, %ebp
jle 0x306725
movl -0x8(%r12,%r15,4), %ecx
jmp 0x306718
cmpl $0x0, 0x100(%rsp)
je 0x306946
movq 0x50(%rsp), %rdi
callq 0x29e340
movq %rax, 0x80(%rsp)
testq %rax, %rax
je 0x3085a9
movq 0x50(%rsp), %rdi
callq 0x29e340
movq %rax, 0x8(%rsp)
testq %rax, %rax
movq 0x30(%rsp), %rdi
je 0x3085a9
leal 0x3(%rbx), %eax
andl $-0x4, %eax
leaq -0x1(%rbx), %rcx
movq %rcx, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
movdqa 0x3d0687(%rip), %xmm1   # 0x6d6c00
movdqa 0x3ceaef(%rip), %xmm2   # 0x6d5070
xorl %ecx, %ecx
movdqa 0x3ceaf5(%rip), %xmm7   # 0x6d5080
pxor %xmm7, %xmm0
pcmpeqd %xmm3, %xmm3
movdqa 0x3d0674(%rip), %xmm8   # 0x6d6c10
movq (%rsp), %rsi
movdqa %xmm2, %xmm4
pxor %xmm7, %xmm4
movdqa %xmm4, %xmm5
pcmpgtd %xmm0, %xmm5
pcmpeqd %xmm0, %xmm4
pshufd $0xf5, %xmm4, %xmm6     # xmm6 = xmm4[1,1,3,3]
pand %xmm5, %xmm6
pshufd $0xf5, %xmm5, %xmm4     # xmm4 = xmm5[1,1,3,3]
por %xmm6, %xmm4
movd %xmm4, %edx
notl %edx
testb $0x1, %dl
je 0x3065d9
movq 0x8(%rsp), %rdx
movl %edi, (%rdx,%rcx,4)
pxor %xmm3, %xmm4
pextrw $0x4, %xmm4, %edx
testb $0x1, %dl
je 0x3065f0
movq 0x8(%rsp), %rdx
movl %edi, 0x4(%rdx,%rcx,4)
movdqa %xmm1, %xmm4
pxor %xmm7, %xmm4
movdqa %xmm4, %xmm5
pcmpgtd %xmm0, %xmm5
pcmpeqd %xmm0, %xmm4
pshufd $0xf5, %xmm4, %xmm6     # xmm6 = xmm4[1,1,3,3]
pand %xmm5, %xmm6
pshufd $0xf5, %xmm5, %xmm4     # xmm4 = xmm5[1,1,3,3]
por %xmm6, %xmm4
pxor %xmm3, %xmm4
pextrw $0x0, %xmm4, %edx
testb $0x1, %dl
je 0x30662d
movq 0x8(%rsp), %rdx
movl %edi, 0x8(%rdx,%rcx,4)
pextrw $0x4, %xmm4, %edx
testb $0x1, %dl
je 0x306640
movq 0x8(%rsp), %rdx
movl %edi, 0xc(%rdx,%rcx,4)
addq $0x4, %rcx
paddq %xmm8, %xmm2
paddq %xmm8, %xmm1
cmpq %rcx, %rax
jne 0x3065a0
cmpq %rsi, %r14
jne 0x306696
xorl %ebx, %ebx
movq %r14, %rdi
xorl %esi, %esi
movq 0x50(%rsp), %rdx
callq 0x29e140
movl 0xf0(%rsp), %ecx
movq (%rsp), %rsi
cmpl $0x4, %ecx
jne 0x306683
movl (%r12,%rbx,4), %eax
jmp 0x306688
movzbl (%r12,%rbx), %eax
cltq
incl (%r14,%rax,4)
incq %rbx
cmpq %rbx, %r15
jne 0x306678
xorl %eax, %eax
xorl %ecx, %ecx
movq 0x48(%rsp), %rdi
movl (%r14,%rax,4), %edx
addl %ecx, %edx
movl %ecx, (%rsi,%rax,4)
incq %rax
movl %edx, %ecx
cmpq %rax, %rdi
jne 0x30669f
movq 0x80(%rsp), %rdi
movq 0x50(%rsp), %rdx
movq %rsi, %rbx
callq 0x29e1f0
cmpl $0x4, 0xf0(%rsp)
jne 0x3069d3
movq 0x30(%rsp), %rsi
movslq (%r12,%rsi,4), %rdi
movl (%rbx,%rdi,4), %eax
movl %eax, 0x64(%rsp)
cltq
movl $0x0, (%rbp,%rax,4)
movl -0x8(%r12,%r15,4), %ecx
jmp 0x3069f4
movzbl (%r12,%rsi), %edx
movslq (%r11,%rdx,4), %rax
leaq (,%rax,4), %rax
addq %r13, %rax
cmpl $0x1, %ebp
jle 0x306725
movzbl -0x2(%r12,%r15), %ecx
negl %ebp
cmpl %edx, %ecx
movl %esi, %ecx
cmovll %ebp, %ecx
movl %ecx, (%rax)
jmp 0x306727
movl %esi, (%rax)
addq $0x4, %rax
xorl %ecx, %ecx
movslq (%r13,%rcx,4), %rsi
testq %rsi, %rsi
jle 0x306750
leal -0x1(%rsi), %r8d
cmpl $0x4, %r10d
jne 0x30675f
movl (%r12,%r8,4), %edi
cmpl (%r12,%rsi,4), %edi
jge 0x30676e
jmp 0x30852d
testl %esi, %esi
je 0x30675b
notl %esi
movl %esi, (%r13,%rcx,4)
movl %edx, %edi
jmp 0x3067de
movzbl (%r12,%r8), %edi
cmpb (%r12,%rsi), %dil
jb 0x30852d
movl %edi, %r9d
notl %r9d
movl %r9d, (%r13,%rcx,4)
cmpl %edx, %edi
jne 0x306781
movl %edx, %edi
jmp 0x3067a1
subq %r13, %rax
shrq $0x2, %rax
movslq %edx, %rdx
movl %eax, (%r11,%rdx,4)
movslq %edi, %rax
movslq (%r11,%rax,4), %rax
leaq (,%rax,4), %rax
addq %r13, %rax
movq %rax, %rdx
subq %r13, %rdx
sarq $0x2, %rdx
cmpq %rcx, %rdx
jle 0x30854c
xorl %edx, %edx
cmpl $0x1, %esi
je 0x3067d8
cmpl $0x4, %r10d
jne 0x3067c8
movl -0x8(%r12,%rsi,4), %edx
jmp 0x3067ce
movzbl -0x2(%r12,%rsi), %edx
negl %esi
cmpl %edi, %edx
cmovgel %r8d, %esi
movl %esi, %edx
movl %edx, (%rax)
addq $0x4, %rax
incq %rcx
movl %edi, %edx
cmpq %rcx, %r15
jne 0x30672d
cmpq %r11, %r14
jne 0x30682d
xorl %ebx, %ebx
movq %r14, %rdi
xorl %esi, %esi
movq 0x50(%rsp), %rdx
callq 0x29e140
movl 0xf0(%rsp), %r10d
movq (%rsp), %r11
cmpl $0x4, %r10d
jne 0x30681a
movl (%r12,%rbx,4), %eax
jmp 0x30681f
movzbl (%r12,%rbx), %eax
cltq
incl (%r14,%rax,4)
incq %rbx
cmpq %rbx, %r15
jne 0x30680e
xorl %eax, %eax
xorl %ecx, %ecx
movq 0x48(%rsp), %rdx
addl (%r14,%rax,4), %ecx
movl %ecx, (%r11,%rax,4)
incq %rax
cmpq %rax, %rdx
jne 0x306836
movslq (%r11), %rax
leaq (,%rax,4), %rax
addq %r13, %rax
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
xorl %esi, %esi
movq 0x30(%rsp), %r9
movslq (%r13,%r9,4), %rdx
testq %rdx, %rdx
jle 0x306887
leal -0x1(%rdx), %edi
cmpl $0x4, %r10d
jne 0x30689b
movq 0x10(%rsp), %r8
movl (%r8,%rdi,4), %ecx
cmpl (%r8,%rdx,4), %ecx
jle 0x3068af
jmp 0x30856b
testl %edx, %edx
je 0x30692a
notl %edx
movl %edx, (%r13,%r9,4)
jmp 0x30692d
movq 0x10(%rsp), %r8
movzbl (%r8,%rdi), %ecx
cmpb (%r8,%rdx), %cl
ja 0x30856b
movl %ecx, (%r13,%r9,4)
cmpl %esi, %ecx
jne 0x3068bc
movl %esi, %ecx
jmp 0x3068dc
subq %r13, %rax
shrq $0x2, %rax
movslq %esi, %rsi
movl %eax, (%r11,%rsi,4)
movslq %ecx, %rax
movslq (%r11,%rax,4), %rax
leaq (,%rax,4), %rax
addq %r13, %rax
movq %rax, %rsi
subq %r13, %rsi
sarq $0x2, %rsi
cmpq %r9, %rsi
jg 0x30858a
xorl %esi, %esi
cmpl $0x1, %edx
je 0x306921
cmpl $0x4, %r10d
jne 0x30690d
movq 0x10(%rsp), %rsi
movl -0x8(%rsi,%rdx,4), %edx
movl %edi, %esi
cmpl %ecx, %edx
jg 0x30691d
jmp 0x306921
movq 0x10(%rsp), %rsi
movzbl -0x2(%rsi,%rdx), %edx
movl %edi, %esi
cmpl %edx, %ecx
jge 0x306921
notl %edx
movl %edx, %esi
movl %esi, -0x4(%rax)
addq $-0x4, %rax
jmp 0x30692f
movl %r9d, %ebp
movl %esi, %ecx
leaq -0x1(%r9), %rdx
movl %ecx, %esi
testq %r9, %r9
movq %rdx, %r9
jg 0x306860
jmp 0x307ac5
cmpq %r11, %r14
movq 0x18(%rsp), %rbp
jne 0x30698c
xorl %ebx, %ebx
movq %r14, %rdi
xorl %esi, %esi
movq 0x50(%rsp), %rdx
callq 0x29e140
movl 0xf0(%rsp), %r10d
movq (%rsp), %r11
cmpl $0x4, %r10d
jne 0x306979
movl (%r12,%rbx,4), %eax
jmp 0x30697e
movzbl (%r12,%rbx), %eax
cltq
incl (%r14,%rax,4)
incq %rbx
cmpq %rbx, %r15
jne 0x30696d
xorl %eax, %eax
xorl %ecx, %ecx
movq 0x48(%rsp), %rsi
movl (%r14,%rax,4), %edx
addl %ecx, %edx
movl %ecx, (%r11,%rax,4)
incq %rax
movl %edx, %ecx
cmpq %rax, %rsi
jne 0x306995
cmpl $0x4, %r10d
movq 0x30(%rsp), %rsi
jne 0x307907
movslq (%r12,%rsi,4), %rcx
movl (%r11,%rcx,4), %eax
cmpl $0x1, %ebp
jle 0x307926
movl -0x8(%r12,%r15,4), %edx
jmp 0x30791b
movq 0x30(%rsp), %rsi
movzbl (%r12,%rsi), %edi
movl (%rbx,%rdi,4), %eax
movl %eax, 0x64(%rsp)
cltq
movl $0x0, (%rbp,%rax,4)
movzbl -0x2(%r12,%r15), %ecx
movq 0x18(%rsp), %rdx
negl %edx
movq %rdi, 0xb0(%rsp)
cmpl %edi, %ecx
cmovgel %esi, %edx
movl %edx, (%r13,%rax,4)
movl $0x0, (%rbp)
movq 0x50(%rsp), %rdi
callq 0x29e340
testq %rax, %rax
movq 0x48(%rsp), %rdx
je 0x3085a9
movq %rax, %rbx
incl 0x64(%rsp)
xorl %eax, %eax
xorl %r15d, %r15d
movl %r15d, %ecx
movl %r15d, (%rbx,%rax,4)
xorl %r15d, %r15d
cmpl $0x0, (%r14,%rax,4)
setg %r15b
addl %ecx, %r15d
incq %rax
cmpq %rax, %rdx
jne 0x306a38
movl %r15d, %eax
movq %rax, 0x88(%rsp)
leaq (,%rax,4), %rdi
movq %rdi, 0xa8(%rsp)
callq 0x29e340
movq %rax, 0x20(%rsp)
testq %rax, %rax
je 0x3085a9
testl %r15d, %r15d
je 0x306aa0
movq 0x20(%rsp), %rdi
movl $0xff, %esi
movq 0xa8(%rsp), %rdx
callq 0x29e140
movq %rbx, 0xa0(%rsp)
leal 0x80c(,%r15,2), %eax
movslq %eax, %rdi
shlq $0x2, %rdi
callq 0x29e340
testq %rax, %rax
je 0x3085a9
movq %rax, %r13
movq %r15, 0x98(%rsp)
leal 0x808(,%r15,2), %eax
movl %eax, 0x90(%rsp)
movabsq $-0x200000000, %r15     # imm = 0xFFFFFFFE00000000
movq $-0x1, (%r13)
movl $0x1, %r14d
xorl %ebx, %ebx
movq (%rsp), %r11
movl 0xf0(%rsp), %r10d
movdqa 0x3ce573(%rip), %xmm7   # 0x6d5080
movdqa 0x3d00fa(%rip), %xmm8   # 0x6d6c10
movl 0x64(%rsp), %r9d
movq 0x38(%rsp), %rdx
movslq (%rdx,%rbx,4), %rcx
movl %ecx, %eax
notl %eax
movl %eax, (%rdx,%rbx,4)
movl (%rbp,%rbx,4), %eax
testq %rcx, %rcx
jle 0x306b4f
cmpl $-0x1, %eax
jne 0x306c05
movq %r11, %rbp
movl %r9d, %r11d
cmpl $0x4, %r10d
jne 0x306bab
movl (%r12,%rcx,4), %eax
jmp 0x306bb0
cmpl $-0x1, %eax
je 0x3087c2
testl %eax, %eax
js 0x306d69
movslq %r14d, %rcx
leal 0x4(%rcx), %r14d
leaq (,%rcx,4), %rdx
addq %r13, %rdx
shlq $0x20, %rcx
movabsq $0x200000000, %rsi      # imm = 0x200000000
addq %rsi, %rcx
addq %r15, %rcx
addl $-0x2, %r14d
leaq -0x8(%rdx), %rsi
cmpl (%rdx), %eax
movq %rsi, %rdx
jle 0x306b83
sarq $0x1e, %rcx
movl %ebx, 0x4(%r13,%rcx)
movslq %r14d, %rcx
movl %eax, (%r13,%rcx,4)
jmp 0x306d69
movzbl (%r12,%rcx), %eax
movslq %eax, %rdx
leaq (%r12,%rcx), %rsi
leaq (%r12,%rcx,4), %rdi
xorl %eax, %eax
cmpl $0x4, %r10d
jne 0x306bdc
movl (%rdi,%rax,4), %r8d
movq 0x8(%rsp), %r9
movl (%r9,%rdx,4), %r9d
addl %eax, %r9d
movslq %r9d, %r9
movl (%r12,%r9,4), %r9d
jmp 0x306bf5
movzbl (%rsi,%rax), %r8d
movq 0x8(%rsp), %r9
movl (%r9,%rdx,4), %r9d
addl %eax, %r9d
movslq %r9d, %r9
movzbl (%r12,%r9), %r9d
incq %rax
cmpl %r9d, %r8d
je 0x306bbd
decl %eax
movl %r11d, %r9d
movq %rbp, %r11
leal -0x1(%rcx), %edi
cmpl $0x4, %r10d
jne 0x306c1d
movl (%r12,%rdi,4), %r8d
cmpl (%r12,%rcx,4), %r8d
jge 0x306c2c
jmp 0x308610
movzbl (%r12,%rdi), %r8d
cmpb (%r12,%rcx), %r8b
jb 0x308610
movslq %r8d, %rdx
movq 0xb0(%rsp), %rsi
cmpl %esi, %r8d
jne 0x306c41
movq %r11, %rbp
jmp 0x306c5a
movslq %esi, %rsi
movl %r9d, (%r11,%rsi,4)
movq %r11, %rbp
movl (%r11,%rdx,4), %r9d
movl %r8d, %esi
movq %rsi, 0xb0(%rsp)
movslq %r9d, %rsi
cmpq %rsi, %rbx
jge 0x30862f
movl %r9d, %r11d
movq 0x8(%rsp), %r9
movl %edi, (%r9,%rdx,4)
xorl %r9d, %r9d
cmpl $0x1, %ecx
je 0x306c98
cmpl $0x4, %r10d
jne 0x306c87
movl -0x8(%r12,%rcx,4), %r9d
jmp 0x306c8d
movzbl -0x2(%r12,%rcx), %r9d
negl %ecx
cmpl %r8d, %r9d
cmovll %ecx, %edi
movl %edi, %r9d
movq 0x38(%rsp), %rcx
movl %r9d, (%rcx,%rsi,4)
testl %eax, %eax
js 0x3085f1
movslq %r14d, %rcx
leal 0x4(%r14), %r8d
leaq 0x2(%rcx), %rdi
shlq $0x20, %rcx
movabsq $0x200000000, %r9       # imm = 0x200000000
addq %r9, %rcx
decl %r14d
movl %r14d, %r9d
movl %r8d, %r14d
movq %rdi, %r10
movl %r9d, %r8d
addl $-0x2, %r14d
addq $-0x2, %rdi
addq %r15, %rcx
leal -0x2(%r8), %r9d
cmpl -0x8(%r13,%r10,4), %eax
jle 0x306cce
sarq $0x1e, %rcx
movl %ebx, 0x4(%r13,%rcx)
movslq %r14d, %rcx
movl %eax, (%r13,%rcx,4)
testq %rdi, %rdi
jle 0x3085d2
movq 0xa0(%rsp), %rax
movslq (%rax,%rdx,4), %rax
movq 0x20(%rsp), %rcx
movl (%rcx,%rax,4), %edi
movslq %r8d, %rcx
leaq (,%rcx,4), %rcx
addq %r13, %rcx
movl %r11d, %r9d
movq %rcx, %r8
addq $-0x8, %rcx
cmpl (%r8), %edi
jl 0x306d29
xorl %edi, %edi
movq 0x80(%rsp), %r8
cmpl (%r8,%rdx,4), %r9d
movq %rbp, %r11
je 0x306d4d
movl 0x14(%rcx), %edi
incl %edi
movq 0x40(%rsp), %rbp
movl %edi, (%rbp,%rsi,4)
movq 0x20(%rsp), %rcx
movl %ebx, (%rcx,%rax,4)
incl %r9d
movl 0xf0(%rsp), %r10d
cmpl 0x90(%rsp), %r14d
jle 0x306e8f
movl %r9d, 0x64(%rsp)
movq 0xa8(%rsp), %rbp
movq %rbp, %rdi
callq 0x29e340
testq %rax, %rax
je 0x3085a9
movq %rax, %r12
movq %rax, %rdi
movq 0x20(%rsp), %rsi
movq %rbp, %rdx
callq 0x29e1f0
movl $0x4, %edx
movq %r12, %rdi
movq 0x88(%rsp), %rsi
leaq -0x10f7(%rip), %rcx     # 0x305cc8
callq 0x29e4c0
cmpl $0x0, 0x98(%rsp)
je 0x306e53
movslq %r14d, %rcx
movl $0x1, %ebp
movl $0x2, %eax
xorl %edx, %edx
movq 0x88(%rsp), %r9
movabsq $0x200000000, %r10      # imm = 0x200000000
movl (%r12,%rdx,4), %edi
movslq %ebp, %rsi
cmpl -0x4(%r13,%rsi,4), %edi
jl 0x306e3f
cmpl %r14d, %eax
jge 0x306e49
cltq
movq %rax, %r8
shlq $0x20, %r8
cmpl (%r13,%rax,4), %edi
jl 0x306e24
addq $0x2, %rax
addq %r10, %r8
cmpq %rcx, %rax
jl 0x306e0f
jmp 0x306e49
sarq $0x1e, %r8
movl (%r13,%r8), %edi
movl %edi, 0x4(%r13,%rsi,4)
movl 0x4(%r13,%r8), %edi
leal 0x2(%rsi), %ebp
movl %edi, 0x8(%r13,%rsi,4)
incq %rdx
cmpq %r9, %rdx
jne 0x306df3
jmp 0x306e58
cmpl %r14d, %eax
jg 0x306e58
jmp 0x30887c
movl $0x1, %ebp
movq %r12, %rdi
callq 0x29e2e0
movl %ebp, %r14d
movq 0x10(%rsp), %r12
movq (%rsp), %r11
movl 0xf0(%rsp), %r10d
movq 0x40(%rsp), %rbp
movdqa 0x3ce1ff(%rip), %xmm7   # 0x6d5080
movdqa 0x3cfd86(%rip), %xmm8   # 0x6d6c10
movl 0x64(%rsp), %r9d
incq %rbx
cmpq 0x68(%rsp), %rbx
jne 0x306b1b
movq 0x58(%rsp), %r14
cmpq %r11, %r14
jne 0x306ef6
xorl %ebx, %ebx
movq %r14, %rdi
xorl %esi, %esi
movq 0x50(%rsp), %rdx
callq 0x29e140
movdqa 0x3cfd4f(%rip), %xmm8   # 0x6d6c10
movdqa 0x3ce1b7(%rip), %xmm7   # 0x6d5080
movl 0xf0(%rsp), %r10d
movq (%rsp), %r11
cmpl $0x4, %r10d
jne 0x306ee1
movl (%r12,%rbx,4), %eax
jmp 0x306ee6
movzbl (%r12,%rbx), %eax
cltq
incl (%r14,%rax,4)
incq %rbx
cmpq %rbx, 0x68(%rsp)
jne 0x306ed5
xorl %eax, %eax
xorl %ecx, %ecx
movq 0x48(%rsp), %rdx
addl (%r14,%rax,4), %ecx
movl %ecx, (%r11,%rax,4)
incq %rax
cmpq %rax, %rdx
jne 0x306eff
cmpl $0x0, 0x98(%rsp)
movq 0x30(%rsp), %rbx
je 0x30700e
movq 0x88(%rsp), %rcx
leal 0x3(%rcx), %eax
andl $-0x4, %eax
decq %rcx
movq %rcx, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
movdqa 0x3cfcbb(%rip), %xmm1   # 0x6d6c00
movdqa 0x3ce123(%rip), %xmm2   # 0x6d5070
xorl %ecx, %ecx
pxor %xmm7, %xmm0
pcmpeqd %xmm3, %xmm3
movdqa %xmm2, %xmm4
pxor %xmm7, %xmm4
movdqa %xmm4, %xmm5
pcmpgtd %xmm0, %xmm5
pcmpeqd %xmm0, %xmm4
pshufd $0xf5, %xmm4, %xmm6     # xmm6 = xmm4[1,1,3,3]
pand %xmm5, %xmm6
pshufd $0xf5, %xmm5, %xmm4     # xmm4 = xmm5[1,1,3,3]
por %xmm6, %xmm4
movd %xmm4, %edx
notl %edx
testb $0x1, %dl
je 0x306f90
movq 0x20(%rsp), %rdx
movl %ebx, (%rdx,%rcx,4)
pxor %xmm3, %xmm4
pextrw $0x4, %xmm4, %edx
testb $0x1, %dl
je 0x306fa7
movq 0x20(%rsp), %rdx
movl %ebx, 0x4(%rdx,%rcx,4)
movdqa %xmm1, %xmm4
pxor %xmm7, %xmm4
movdqa %xmm4, %xmm5
pcmpgtd %xmm0, %xmm5
pcmpeqd %xmm0, %xmm4
pshufd $0xf5, %xmm4, %xmm6     # xmm6 = xmm4[1,1,3,3]
pand %xmm5, %xmm6
pshufd $0xf5, %xmm5, %xmm4     # xmm4 = xmm5[1,1,3,3]
por %xmm6, %xmm4
pxor %xmm3, %xmm4
pextrw $0x0, %xmm4, %edx
testb $0x1, %dl
je 0x306fe4
movq 0x20(%rsp), %rdx
movl %ebx, 0x8(%rdx,%rcx,4)
pextrw $0x4, %xmm4, %edx
testb $0x1, %dl
je 0x306ff7
movq 0x20(%rsp), %rdx
movl %ebx, 0xc(%rdx,%rcx,4)
addq $0x4, %rcx
paddq %xmm8, %xmm2
paddq %xmm8, %xmm1
cmpq %rcx, %rax
jne 0x306f57
movq 0x18(%rsp), %rax
movl %eax, (%r13)
movl $0xffffffff, 0x4(%r13)  # imm = 0xFFFFFFFF
movl (%r11), %eax
movl %eax, 0x68(%rsp)
movl $0x1, %r14d
xorl %edi, %edi
movl (%rbp,%rbx,4), %eax
testq %rbx, %rbx
setne %cl
testl %eax, %eax
sets %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x3070b5
cmpl $0x0, -0x4(%rbp,%rbx,4)
js 0x3070b5
movq %rbp, %r11
movq %rdi, %rbp
movq 0x38(%rsp), %rcx
movl -0x4(%rcx,%rbx,4), %eax
movl (%rcx,%rbx,4), %ecx
movl %ecx, %edx
sarl $0x1f, %edx
xorl %ecx, %edx
movl %eax, %ecx
sarl $0x1f, %ecx
xorl %eax, %ecx
movslq %edx, %rax
movslq %ecx, %rdi
leaq (%r12,%rax), %rcx
leaq (%r12,%rdi), %rdx
leaq (%r12,%rax,4), %rsi
leaq (%r12,%rdi,4), %rdi
xorl %eax, %eax
cmpl $0x4, %r10d
jne 0x307093
movl (%rsi,%rax,4), %r8d
movl (%rdi,%rax,4), %r9d
jmp 0x30709d
movzbl (%rcx,%rax), %r8d
movzbl (%rdx,%rax), %r9d
incq %rax
cmpl %r9d, %r8d
je 0x307083
decl %eax
movl %eax, (%r11,%rbx,4)
movq %rbp, %rdi
movq %r11, %rbp
movq (%rsp), %r11
movq 0x38(%rsp), %rcx
movslq (%rcx,%rbx,4), %rsi
testq %rsi, %rsi
jle 0x3070dc
leal -0x1(%rsi), %r8d
cmpl $0x4, %r10d
jne 0x3070e6
movl (%r12,%r8,4), %ecx
cmpl (%r12,%rsi,4), %ecx
jle 0x3070f5
jmp 0x3086ab
notl %esi
movl %esi, (%rcx,%rbx,4)
jmp 0x3071da
movzbl (%r12,%r8), %ecx
cmpb (%r12,%rsi), %cl
ja 0x3086ab
movslq %ecx, %r9
cmpl %edi, %ecx
jne 0x307105
movq %rdi, %r11
movl 0x68(%rsp), %edx
jmp 0x307117
movslq %edi, %rdx
movl 0x68(%rsp), %edi
movl %edi, (%r11,%rdx,4)
movl (%r11,%r9,4), %edx
movl %ecx, %r11d
movslq %edx, %rdi
cmpq %rdi, %rbx
jl 0x30868c
testl %r8d, %r8d
je 0x307140
cmpl $0x4, %r10d
jne 0x307135
movl -0x8(%r12,%rsi,4), %r10d
jmp 0x30713b
movzbl -0x2(%r12,%rsi), %r10d
cmpl %ecx, %r10d
jle 0x307145
negl %esi
movl %esi, %r8d
movq 0x38(%rsp), %rsi
movl %r8d, -0x4(%rsi,%rdi,4)
incl %ecx
cmpl 0x70(%rsp), %ecx
jge 0x30866d
testl %r14d, %r14d
jle 0x30864e
leal -0x1(%rdx), %esi
movl %esi, 0x68(%rsp)
movq 0xa0(%rsp), %rsi
movslq (%rsi,%r9,4), %rsi
movq 0x20(%rsp), %r8
movl (%r8,%rsi,4), %r9d
leal -0x1(%r14), %r8d
leaq (,%r8,4), %r8
addq %r13, %r8
movq %r8, %r10
addq $-0x8, %r8
cmpl (%r10), %r9d
jge 0x30718f
movslq %ecx, %r9
xorl %ecx, %ecx
movq 0x80(%rsp), %r10
cmpl (%r10,%r9,4), %edx
je 0x3071b4
movl 0x14(%r8), %ecx
incl %ecx
movl %ecx, (%rbp,%rdi,4)
movl %edx, %ecx
cmpq %rcx, %rbx
movl 0xf0(%rsp), %r10d
jne 0x3071cb
movl (%rbp,%rbx,4), %eax
movq 0x20(%rsp), %rcx
movl %ebx, (%rcx,%rsi,4)
movq %r11, %rdi
movq (%rsp), %r11
movq %rbx, 0x30(%rsp)
testl %eax, %eax
movq 0xa8(%rsp), %rbp
js 0x3085b3
movslq %r14d, %rcx
movq %rcx, %rbx
shlq $0x20, %rbx
movabsq $0x200000000, %rdx      # imm = 0x200000000
addq %rdx, %rbx
addl $0x4, %r14d
addq %r15, %rbx
addl $-0x2, %r14d
testq %rcx, %rcx
js 0x307224
leaq -0x2(%rcx), %rdx
cmpl (%r13,%rcx,4), %eax
movq %rdx, %rcx
jle 0x30720a
movq %rbx, %rcx
sarq $0x1e, %rcx
movq 0x30(%rsp), %rdx
movl %edx, 0x4(%r13,%rcx)
movslq %r14d, %rcx
movl %eax, (%r13,%rcx,4)
cmpl 0x90(%rsp), %ecx
jle 0x30734f
movq %rdi, 0x18(%rsp)
movq %rbp, %rdi
callq 0x29e340
testq %rax, %rax
je 0x3085a9
movq %rax, %r12
movq %rax, %rdi
movq 0x20(%rsp), %rsi
movq %rbp, %rdx
callq 0x29e1f0
movl $0x4, %edx
movq %r12, %rdi
movq 0x88(%rsp), %rbp
movq %rbp, %rsi
leaq -0x15c5(%rip), %rcx     # 0x305cc8
callq 0x29e4c0
cmpl $0x0, 0x98(%rsp)
je 0x307329
sarq $0x20, %rbx
movl $0x2, %eax
movq %rbp, %rcx
movl $0x1, %ebp
movabsq $0x200000000, %r9       # imm = 0x200000000
movl -0x4(%r12,%rcx,4), %esi
movslq %ebp, %rdx
cmpl -0x4(%r13,%rdx,4), %esi
jge 0x307310
cmpl %r14d, %eax
jge 0x30731f
movslq %eax, %r8
movq %r8, %rdi
shlq $0x20, %rdi
addq $-0x2, %r8
cmpl 0x8(%r13,%r8,4), %esi
jge 0x3072f5
addq %r9, %rdi
addl $0x2, %eax
addq $0x2, %r8
cmpq %rbx, %r8
jl 0x3072dd
jmp 0x30731f
sarq $0x1e, %rdi
movl (%r13,%rdi), %esi
movl %esi, 0x4(%r13,%rdx,4)
movl 0x4(%r13,%rdi), %esi
leal 0x2(%rdx), %ebp
movl %esi, 0x8(%r13,%rdx,4)
leaq -0x1(%rcx), %rdx
cmpq $0x1, %rcx
movq %rdx, %rcx
jg 0x3072bb
jmp 0x30732e
cmpl %r14d, %eax
jg 0x30732e
jmp 0x30889b
movl $0x1, %ebp
movq %r12, %rdi
callq 0x29e2e0
movl %ebp, %r14d
movq 0x10(%rsp), %r12
movq (%rsp), %r11
movl 0xf0(%rsp), %r10d
movq 0x18(%rsp), %rdi
movq 0x30(%rsp), %rbp
leaq -0x1(%rbp), %rbx
testq %rbp, %rbp
movq 0x40(%rsp), %rbp
jg 0x30702e
movq 0x80(%rsp), %rdi
callq 0x29e2e0
movq 0x20(%rsp), %rdi
callq 0x29e2e0
movq %r13, %rdi
callq 0x29e2e0
movq 0xa0(%rsp), %rdi
callq 0x29e2e0
movq 0x8(%rsp), %rdi
callq 0x29e2e0
movq (%rsp), %r11
xorl %ebp, %ebp
movq 0x58(%rsp), %r14
jmp 0x307ac5
cmpq %r11, %r14
jne 0x3073ed
xorl %ebx, %ebx
movq %r14, %rdi
xorl %esi, %esi
movq 0x50(%rsp), %rdx
callq 0x29e140
movl 0xf0(%rsp), %r10d
movq (%rsp), %r11
cmpl $0x4, %r10d
jne 0x3073da
movl (%r12,%rbx,4), %eax
jmp 0x3073df
movzbl (%r12,%rbx), %eax
cltq
incl (%r14,%rax,4)
incq %rbx
cmpq %rbx, %r15
jne 0x3073ce
xorl %eax, %eax
xorl %ecx, %ecx
movq 0x48(%rsp), %rsi
movl (%r14,%rax,4), %edx
addl %ecx, %edx
movl %ecx, (%r11,%rax,4)
incq %rax
movl %edx, %ecx
cmpq %rax, %rsi
jne 0x3073f6
movslq %ebp, %rdi
cmpl $0x4, %r10d
movq 0x30(%rsp), %rax
jne 0x307b02
movl (%r12,%rax,4), %edx
movslq %edx, %rax
leal -0x2(%rbp), %esi
movl -0x8(%r12,%rdi,4), %ecx
jmp 0x307b15
callq 0x29e340
movl 0xf0(%rsp), %r10d
movq (%rsp), %r11
testq %rax, %rax
je 0x308338
movl %ebx, %ecx
leaq 0x1(%rcx), %rdx
cmpl %ebp, %edx
jge 0x308917
cmpl $0x4, %r10d
movq 0x30(%rsp), %rbx
jne 0x30746a
movl 0x4(%r12,%rcx,4), %ecx
jmp 0x30746f
movzbl (%r12,%rdx), %ecx
movslq %ecx, %rcx
incl (%r11,%rcx,4)
movq 0x48(%rsp), %rcx
leaq (%rax,%rcx,4), %rcx
xorl %edx, %edx
xorl %esi, %esi
xorl %edi, %edi
addl (%r14,%rsi,4), %edi
movslq (%r11,%rsi,4), %r8
cmpl %edi, %r8d
je 0x3074a8
movl (%r13,%r8,4), %r9d
testl %r9d, %r9d
je 0x3087e1
addl %ebp, %r9d
movl %r9d, (%r13,%r8,4)
movl %edx, (%rcx,%rsi,4)
movl %edx, (%rax,%rsi,4)
incq %rsi
cmpq %rsi, 0x48(%rsp)
jne 0x307485
cmpq %r11, %r14
je 0x308936
xorl %ecx, %ecx
xorl %edx, %edx
movq 0x48(%rsp), %rdi
movl (%r14,%rcx,4), %esi
addl %edx, %esi
movl %edx, (%r11,%rcx,4)
incq %rcx
movl %esi, %edx
cmpq %rcx, %rdi
jne 0x3074ca
cmpl $0x4, %r10d
jne 0x3074f4
movl (%r12,%rbx,4), %edx
movslq %edx, %rsi
leal -0x2(%rbp), %ecx
movl (%r12,%rcx,4), %edi
jmp 0x307503
movzbl (%r12,%rbx), %esi
leal -0x2(%rbp), %ecx
movzbl (%r12,%rcx), %edi
movl %esi, %edx
movslq (%r11,%rsi,4), %rsi
xorl %r8d, %r8d
cmpl %edx, %edi
setl %r8b
addl %ebp, %ecx
negl %r8d
xorl %ecx, %r8d
leaq 0x4(,%rsi,4), %rdi
addq %r13, %rdi
movl %r8d, -0x4(%rdi)
xorl %esi, %esi
xorl %ecx, %ecx
movl (%r13,%rsi,4), %r9d
testl %r9d, %r9d
jle 0x307567
xorl %r8d, %r8d
cmpl %ebp, %r9d
movl $0x0, %r11d
cmovgel %ebp, %r11d
movl %r10d, %ebx
setge %r10b
subl %r11d, %r9d
movslq %r9d, %r11
cmpl $0x4, %ebx
jne 0x307575
movl (%r12,%r11,4), %r9d
cmpl 0x4(%r12,%r11,4), %r9d
jge 0x307585
jmp 0x3086ca
jns 0x307632
notl %r9d
jmp 0x30762d
movzbl (%r12,%r11), %r9d
cmpb 0x1(%r12,%r11), %r9b
jb 0x3086ca
cmpl %edx, %r9d
je 0x3075b0
subq %r13, %rdi
shrq $0x2, %rdi
movslq %edx, %rdx
movq (%rsp), %rbx
movl %edi, (%rbx,%rdx,4)
movslq %r9d, %rdx
movslq (%rbx,%rdx,4), %rdx
leaq (,%rdx,4), %rdi
addq %r13, %rdi
movl %r9d, %edx
movq %rdi, %rbx
subq %r13, %rbx
sarq $0x2, %rbx
cmpq %rsi, %rbx
jle 0x3086e9
leaq -0x1(%r11), %rbx
cmpl $0x4, 0xf0(%rsp)
jne 0x3075d8
movl -0x4(%r12,%r11,4), %r11d
jmp 0x3075dd
movzbl (%r12,%rbx), %r11d
movb %r10b, %r8b
addl %r8d, %ecx
addl %r9d, %r9d
xorl %r8d, %r8d
cmpl %edx, %r11d
setl %r8b
orl %r9d, %r8d
movslq %r8d, %r8
cmpl %ecx, (%rax,%r8,4)
je 0x307602
addl %ebp, %ebx
movl %ecx, (%rax,%r8,4)
movl 0xf0(%rsp), %r10d
xorl %r8d, %r8d
cmpl %edx, %r11d
setl %r8b
negl %r8d
xorl %ebx, %r8d
movl %r8d, (%rdi)
addq $0x4, %rdi
xorl %r9d, %r9d
movq (%rsp), %r11
movq 0x30(%rsp), %rbx
movl %r9d, (%r13,%rsi,4)
incq %rsi
cmpq %rsi, %r15
jne 0x30752b
movl %ebx, %edx
movl %edx, %esi
movl (%r13,%rsi,4), %edi
testl %edi, %edi
setle %r8b
cmpl %ebp, %edi
setge %r9b
orb %r8b, %r9b
jne 0x307676
addl %ebp, %edi
leaq (,%rsi,4), %rsi
addq %r13, %rsi
movl %edi, (%rsi)
movl -0x4(%rsi), %edi
addq $-0x4, %rsi
decl %edx
subl %ebp, %edi
jl 0x307667
movl %edi, (%rsi)
leal -0x1(%rdx), %esi
testl %edx, %edx
movl %esi, %edx
jg 0x307640
xorl %edx, %edx
xorl %esi, %esi
movq 0x48(%rsp), %rdi
addl (%r14,%rdx,4), %esi
movl %esi, (%r11,%rdx,4)
incq %rdx
cmpq %rdx, %rdi
jne 0x307688
incl %ecx
movslq (%r11), %rdx
leaq (,%rdx,4), %rdx
addq %r13, %rdx
xorl %edi, %edi
movq %rbx, %rsi
movl (%r13,%rsi,4), %r9d
testl %r9d, %r9d
jle 0x3077a7
xorl %r8d, %r8d
cmpl %ebp, %r9d
movl $0x0, %r11d
cmovgel %ebp, %r11d
movl %r10d, %ebx
setge %r10b
subl %r11d, %r9d
movslq %r9d, %r11
cmpl $0x4, %ebx
jne 0x3076ed
movl (%r12,%r11,4), %r9d
cmpl 0x4(%r12,%r11,4), %r9d
jle 0x3076fd
jmp 0x308708
movzbl (%r12,%r11), %r9d
cmpb 0x1(%r12,%r11), %r9b
ja 0x308708
cmpl %edi, %r9d
je 0x307728
subq %r13, %rdx
shrq $0x2, %rdx
movslq %edi, %rdi
movq (%rsp), %rbx
movl %edx, (%rbx,%rdi,4)
movslq %r9d, %rdx
movslq (%rbx,%rdx,4), %rdx
leaq (,%rdx,4), %rdx
addq %r13, %rdx
movl %r9d, %edi
movq %rdx, %rbx
subq %r13, %rbx
sarq $0x2, %rbx
cmpq %rsi, %rbx
jg 0x308727
leaq -0x1(%r11), %rbx
cmpl $0x4, 0xf0(%rsp)
jne 0x307750
movl -0x4(%r12,%r11,4), %r11d
jmp 0x307755
movzbl (%r12,%rbx), %r11d
movb %r10b, %r8b
addl %r8d, %ecx
addl %r9d, %r9d
xorl %r8d, %r8d
cmpl %edi, %r11d
setg %r8b
orl %r9d, %r8d
movslq %r8d, %r8
cmpl %ecx, (%rax,%r8,4)
je 0x30777a
addl %ebp, %ebx
movl %ecx, (%rax,%r8,4)
movl 0xf0(%rsp), %r10d
movl $0xfffffffe, %r8d       # imm = 0xFFFFFFFE
subl %ebx, %r8d
cmpl %edi, %r11d
cmovlel %ebx, %r8d
movl %r8d, -0x4(%rdx)
addq $-0x4, %rdx
movl $0x0, (%r13,%rsi,4)
movq (%rsp), %r11
leaq -0x1(%rsi), %r8
testq %rsi, %rsi
movq %r8, %rsi
jg 0x3076ad
movq %r15, %rdx
negq %rdx
xorl %ebp, %ebp
movl $0x1, %ecx
movq 0x8(%rsp), %r12
movl -0x4(%r13,%rcx,4), %esi
testl %esi, %esi
jns 0x307814
notl %esi
xorl %edi, %edi
cmpl 0x18(%rsp), %esi
setge %dil
addl %edi, %ebp
movl %esi, -0x4(%r13,%rcx,4)
leaq (%rdx,%rcx), %rsi
incq %rsi
incq %rcx
cmpq $0x1, %rsi
jne 0x3077c9
leaq 0x3cf5eb(%rip), %rdi    # 0x6d6de7
leaq 0x3cf439(%rip), %rsi    # 0x6d6c3c
leaq 0x3cf5bb(%rip), %rcx    # 0x6d6dc5
movl $0xe8, %edx
callq 0x29e180
leaq -0x1(%rcx), %rdx
cmpl %edx, %r12d
jle 0x307879
cmpl 0x18(%rsp), %ecx
jge 0x30785a
movl (%r13,%rcx,4), %esi
testl %esi, %esi
jns 0x307852
notl %esi
xorl %edi, %edi
cmpl 0x18(%rsp), %esi
setge %dil
addl %edi, %ebp
movslq %edx, %rdi
incl %edx
movl %esi, (%r13,%rdi,4)
movl $0x0, (%r13,%rcx,4)
cmpl %r12d, %edx
je 0x307879
incq %rcx
cmpq %rcx, %r15
jne 0x307823
leaq 0x3cf592(%rip), %rdi    # 0x6d6df3
leaq 0x3cf3d4(%rip), %rsi    # 0x6d6c3c
leaq 0x3cf556(%rip), %rcx    # 0x6d6dc5
movl $0xec, %edx
callq 0x29e180
movl %r12d, %ecx
cmpl %r12d, %ebp
jge 0x3078c1
leal 0x1(%rbp), %edx
incq %rcx
movq 0x18(%rsp), %r9
movl -0x8(%r13,%rcx,4), %esi
xorl %edi, %edi
cmpl %r9d, %esi
setge %dil
movl $0x0, %r8d
cmovgel %r9d, %r8d
subl %r8d, %esi
subl %edi, %edx
sarl %esi
addl %r12d, %esi
movslq %esi, %rsi
movl %edx, (%r13,%rsi,4)
decq %rcx
cmpq $0x1, %rcx
ja 0x30788c
jmp 0x3078e3
xorl %edx, %edx
movq 0x18(%rsp), %rdi
movl (%r13,%rdx,4), %esi
subl %edi, %esi
jl 0x3078d6
movl %esi, (%r13,%rdx,4)
incq %rdx
cmpq %rdx, %rcx
movq 0x18(%rsp), %rdi
jne 0x3078c8
testb $0x10, 0x28(%rsp)
je 0x307ef5
movq %rax, %rdi
callq 0x29e2e0
movl 0xf0(%rsp), %r10d
movq (%rsp), %r11
jmp 0x307ef5
movzbl (%r12,%rsi), %ecx
movl (%r11,%rcx,4), %eax
cmpl $0x1, %ebp
jle 0x307926
movzbl -0x2(%r12,%r15), %edx
negl %ebp
cmpl %ecx, %edx
movl %esi, %edx
cmovll %ebp, %edx
jmp 0x307928
movl %esi, %edx
cltq
movl %edx, (%r13,%rax,4)
incl %eax
xorl %edx, %edx
movslq (%r13,%rdx,4), %rsi
movl %esi, %edi
notl %edi
movl %edi, (%r13,%rdx,4)
testq %rsi, %rsi
jle 0x3079be
leal -0x1(%rsi), %edi
cmpl $0x4, %r10d
jne 0x30795e
movl (%r12,%rdi,4), %r8d
cmpl (%r12,%rsi,4), %r8d
jge 0x30796d
jmp 0x308746
movzbl (%r12,%rdi), %r8d
cmpb (%r12,%rsi), %r8b
jb 0x308746
cmpl %ecx, %r8d
jne 0x307977
movl %ecx, %r8d
jmp 0x307985
movslq %ecx, %rcx
movl %eax, (%r11,%rcx,4)
movslq %r8d, %rax
movl (%r11,%rax,4), %eax
cltq
cmpq %rax, %rdx
jge 0x308765
xorl %ecx, %ecx
cmpl $0x1, %esi
je 0x3079b4
cmpl $0x4, %r10d
jne 0x3079a4
movl -0x8(%r12,%rsi,4), %ecx
jmp 0x3079aa
movzbl -0x2(%r12,%rsi), %ecx
negl %esi
cmpl %r8d, %ecx
cmovgel %edi, %esi
movl %esi, %ecx
movl %ecx, (%r13,%rax,4)
incl %eax
movl %r8d, %ecx
incq %rdx
cmpq %rdx, %r15
jne 0x307933
cmpq %r11, %r14
jne 0x307a0b
xorl %ebx, %ebx
movq %r14, %rdi
xorl %esi, %esi
movq 0x50(%rsp), %rdx
callq 0x29e140
movl 0xf0(%rsp), %r10d
movq (%rsp), %r11
cmpl $0x4, %r10d
jne 0x3079f8
movl (%r12,%rbx,4), %eax
jmp 0x3079fd
movzbl (%r12,%rbx), %eax
cltq
incl (%r14,%rax,4)
incq %rbx
cmpq %rbx, %r15
jne 0x3079ec
xorl %eax, %eax
xorl %ecx, %ecx
movq 0x48(%rsp), %rdx
addl (%r14,%rax,4), %ecx
movl %ecx, (%r11,%rax,4)
incq %rax
cmpq %rax, %rdx
jne 0x307a14
movl (%r11), %ecx
xorl %edi, %edi
movq 0x30(%rsp), %r8
movslq (%r13,%r8,4), %rax
testq %rax, %rax
jle 0x307a50
leal -0x1(%rax), %edx
cmpl $0x4, %r10d
jne 0x307a59
movl (%r12,%rdx,4), %esi
cmpl (%r12,%rax,4), %esi
jle 0x307a68
jmp 0x308784
notl %eax
movl %eax, (%r13,%r8,4)
jmp 0x307ab3
movzbl (%r12,%rdx), %esi
cmpb (%r12,%rax), %sil
ja 0x308784
cmpl %edi, %esi
jne 0x307a70
movl %edi, %esi
jmp 0x307a7e
movslq %edi, %rdi
movl %ecx, (%r11,%rdi,4)
movslq %esi, %rcx
movl (%r11,%rcx,4), %ecx
movslq %ecx, %rdi
cmpq %rdi, %r8
jl 0x3087a3
testl %edx, %edx
je 0x307aa5
cmpl $0x4, %r10d
jne 0x307a9b
movl -0x8(%r12,%rax,4), %ecx
jmp 0x307aa1
movzbl -0x2(%r12,%rax), %ecx
cmpl %esi, %ecx
jle 0x307aa9
negl %eax
movl %eax, %edx
leal -0x1(%rdi), %ecx
movl %edx, -0x4(%r13,%rdi,4)
movl %esi, %edi
leaq -0x1(%r8), %rax
testq %r8, %r8
movq %rax, %r8
jg 0x307a2e
xorl %ebp, %ebp
movq 0x28(%rsp), %rbx
testb $0x5, %bl
je 0x307adb
movq %r14, %rdi
callq 0x29e2e0
movq (%rsp), %r11
testb $0x2, %bl
je 0x3084dd
movq %r11, %rdi
callq 0x29e2e0
jmp 0x3084dd
movl $0x1, %eax
movq %rax, 0x8(%rsp)
xorl %ecx, %ecx
jmp 0x307fee
movzbl (%r12,%rax), %eax
movzbl -0x2(%r12,%rdi), %ecx
addq $-0x2, %rdi
movl %edi, %esi
movl %eax, %edx
movl $0x1, %edi
subl %ebp, %edi
cmpl %edx, %ecx
cmovgel %esi, %edi
movslq (%r11,%rax,4), %rax
movl %edi, (%r13,%rax,4)
leal 0x1(%rax), %ecx
xorl %eax, %eax
movslq (%r13,%rax,4), %rsi
testq %rsi, %rsi
jle 0x307b4f
cmpl $0x4, %r10d
jne 0x307b57
movl (%r12,%rsi,4), %edi
cmpl 0x4(%r12,%rsi,4), %edi
jge 0x307b67
jmp 0x308800
testl %esi, %esi
jns 0x307bb5
notl %esi
jmp 0x307bb0
movzbl (%r12,%rsi), %edi
cmpb 0x1(%r12,%rsi), %dil
jb 0x308800
cmpl %edx, %edi
jne 0x307b6f
movl %edx, %edi
jmp 0x307b7d
movslq %edx, %rdx
movl %ecx, (%r11,%rdx,4)
movslq %edi, %rcx
movl (%r11,%rcx,4), %ecx
movslq %ecx, %rcx
cmpq %rcx, %rax
jge 0x30881f
leal -0x1(%rsi), %edx
cmpl $0x4, %r10d
jne 0x307b98
movl (%r12,%rdx,4), %r8d
jmp 0x307b9d
movzbl (%r12,%rdx), %r8d
negl %esi
cmpl %edi, %r8d
cmovgel %edx, %esi
movl %esi, (%r13,%rcx,4)
incl %ecx
xorl %esi, %esi
movl %edi, %edx
movl %esi, (%r13,%rax,4)
incq %rax
cmpq %rax, %r15
jne 0x307b2f
cmpq %r11, %r14
jne 0x307c02
xorl %ebx, %ebx
movq %r14, %rdi
xorl %esi, %esi
movq 0x50(%rsp), %rdx
callq 0x29e140
movl 0xf0(%rsp), %r10d
movq (%rsp), %r11
cmpl $0x4, %r10d
jne 0x307bef
movl (%r12,%rbx,4), %eax
jmp 0x307bf4
movzbl (%r12,%rbx), %eax
cltq
incl (%r14,%rax,4)
incq %rbx
cmpq %rbx, %r15
jne 0x307be3
xorl %eax, %eax
xorl %ecx, %ecx
movq 0x48(%rsp), %rdx
addl (%r14,%rax,4), %ecx
movl %ecx, (%r11,%rax,4)
incq %rax
cmpq %rax, %rdx
jne 0x307c0b
movl (%r11), %edx
xorl %edi, %edi
movq 0x30(%rsp), %r9
movq %r9, %rax
movslq (%r13,%rax,4), %rcx
testq %rcx, %rcx
jle 0x307ca9
cmpl $0x4, %r10d
jne 0x307c48
movl (%r12,%rcx,4), %esi
cmpl 0x4(%r12,%rcx,4), %esi
jle 0x307c58
jmp 0x30883e
movzbl (%r12,%rcx), %esi
cmpb 0x1(%r12,%rcx), %sil
ja 0x30883e
cmpl %edi, %esi
jne 0x307c60
movl %edi, %esi
jmp 0x307c6e
movslq %edi, %rdi
movl %edx, (%r11,%rdi,4)
movslq %esi, %rdx
movl (%r11,%rdx,4), %edx
movslq %edx, %rdi
cmpq %rdi, %rax
jl 0x30885d
leal -0x1(%rcx), %edx
cmpl $0x4, %r10d
jne 0x307c89
movl (%r12,%rdx,4), %r8d
jmp 0x307c8e
movzbl (%r12,%rdx), %r8d
cmpl %esi, %r8d
notl %ecx
cmovlel %edx, %ecx
leal -0x1(%rdi), %edx
movl %ecx, -0x4(%r13,%rdi,4)
movl $0x0, (%r13,%rax,4)
movl %esi, %edi
leaq -0x1(%rax), %rcx
testq %rax, %rax
movq %rcx, %rax
jg 0x307c28
movq %r15, %rcx
negq %rcx
movl $0x1, %eax
movl -0x4(%r13,%rax,4), %edx
testl %edx, %edx
jns 0x307d03
notl %edx
movl %edx, -0x4(%r13,%rax,4)
leaq (%rcx,%rax), %rdx
incq %rdx
incq %rax
cmpq $0x1, %rdx
jne 0x307cc4
leaq 0x3cf0fc(%rip), %rdi    # 0x6d6de7
leaq 0x3cef4a(%rip), %rsi    # 0x6d6c3c
leaq 0x3cf151(%rip), %rcx    # 0x6d6e4a
movl $0x7f, %edx
callq 0x29e180
leaq -0x1(%rax), %rcx
cmpl %ecx, 0x8(%rsp)
jle 0x307d5c
cmpl %ebp, %eax
jge 0x307d3d
movl (%r13,%rax,4), %edx
testl %edx, %edx
jns 0x307d35
notl %edx
movslq %ecx, %rsi
incl %ecx
movl %edx, (%r13,%rsi,4)
movl $0x0, (%r13,%rax,4)
cmpl 0x8(%rsp), %ecx
je 0x307d5c
incq %rax
cmpq %rax, %r15
jne 0x307d11
leaq 0x3cf0af(%rip), %rdi    # 0x6d6df3
leaq 0x3ceef1(%rip), %rsi    # 0x6d6c3c
leaq 0x3cf0f8(%rip), %rcx    # 0x6d6e4a
movl $0x82, %edx
callq 0x29e180
cmpl $0x4, %r10d
jne 0x307d68
movl (%r12,%r9,4), %edx
jmp 0x307d6d
movzbl (%r12,%r9), %edx
movq %r9, %rax
testl %eax, %eax
jle 0x307df3
decq %rax
movl %eax, %ecx
cmpl $0x4, %r10d
jne 0x307d85
movl (%r12,%rcx,4), %ecx
jmp 0x307d8a
movzbl (%r12,%rcx), %ecx
cmpl %edx, %ecx
movl %ecx, %edx
jge 0x307d70
movl %r9d, %esi
movl %eax, %edi
movq %rdi, %rax
subq $0x1, %rax
jb 0x307df3
cmpl $0x4, %r10d
jne 0x307daa
movl (%r12,%rax,4), %edx
jmp 0x307db0
movzbl -0x1(%r12,%rdi), %edx
movq %rax, %rdi
cmpl %ecx, %edx
movl %edx, %ecx
jle 0x307d98
leal 0x1(%rax), %edi
subl %eax, %esi
movl %edi, %ecx
shrl %ecx
addl 0x8(%rsp), %ecx
movl %esi, (%r13,%rcx,4)
movl %eax, %eax
testl %eax, %eax
jle 0x307df3
decq %rax
movl %eax, %ecx
cmpl $0x4, %r10d
jne 0x307de2
movl (%r12,%rcx,4), %ecx
jmp 0x307de7
movzbl (%r12,%rcx), %ecx
cmpl %edx, %ecx
movl %ecx, %edx
jge 0x307dcd
movl %edi, %esi
testl %eax, %eax
jns 0x307d93
movq 0x8(%rsp), %r12
movl %r12d, %eax
xorl %ecx, %ecx
movq %rbp, %r8
xorl %ebp, %ebp
xorl %r9d, %r9d
movl (%r13,%rcx,4), %edx
movl %edx, %esi
sarl %esi
addl %r12d, %esi
movslq %esi, %rsi
movl (%r13,%rsi,4), %edi
cmpl %r9d, %edi
jne 0x307ed4
leal (%rdi,%r8), %r10d
cmpl 0x18(%rsp), %r10d
jge 0x307ed4
movl %r9d, %r9d
testl %r9d, %r9d
jle 0x307eaa
movslq %edx, %r10
movslq %r8d, %r15
movq 0x10(%rsp), %r12
leaq (%r12,%r10), %r11
leaq (%r12,%r15), %rbx
leaq (%r12,%r10,4), %r14
leaq (%r12,%r15,4), %r15
xorl %r10d, %r10d
cmpl $0x4, 0xf0(%rsp)
jne 0x307e6b
movl (%r14,%r10,4), %r13d
movl (%r15,%r10,4), %r12d
jmp 0x307e75
movzbl (%r11,%r10), %r13d
movzbl (%rbx,%r10), %r12d
cmpl %r12d, %r13d
jne 0x307eaf
incq %r10
cmpq %r10, %r9
movq 0x38(%rsp), %r13
jne 0x307e57
movl %r8d, %edx
movl %r9d, %edi
movq 0x58(%rsp), %r14
movq (%rsp), %r11
movl 0xf0(%rsp), %r10d
movq 0x68(%rsp), %r15
movq 0x8(%rsp), %r12
jmp 0x307ede
xorl %r10d, %r10d
jmp 0x307ec7
movq 0x38(%rsp), %r13
movq 0x58(%rsp), %r14
movq (%rsp), %r11
movq 0x68(%rsp), %r15
movq 0x8(%rsp), %r12
cmpl %r9d, %r10d
jne 0x307ed4
movl %r8d, %edx
movl %r9d, %edi
jmp 0x307ed6
incl %ebp
movl 0xf0(%rsp), %r10d
movl %ebp, (%r13,%rsi,4)
incq %rcx
movl %edi, %r9d
movl %edx, %r8d
cmpq %rax, %rcx
jne 0x307e05
cmpl %r12d, %ebp
jge 0x307f5e
testb $0x4, 0x28(%rsp)
je 0x307f0d
movq %r14, %rdi
callq 0x29e2e0
movq (%rsp), %r11
testb $0x2, 0x28(%rsp)
je 0x307f1c
movq %r11, %rdi
callq 0x29e2e0
movq 0x90(%rsp), %rdx
addl 0x18(%rsp), %edx
subl %r12d, %edx
subl %r12d, %edx
testb $0xd, 0x28(%rsp)
jne 0x308006
movq 0x70(%rsp), %rcx
leal (%rcx,%rbp), %eax
cmpl %edx, %eax
jle 0x308004
movq %rdx, %rcx
movq 0x28(%rsp), %rax
orl $0x8, %eax
movq %rax, 0x28(%rsp)
jmp 0x308009
movq %r12, 0x8(%rsp)
cmpl $0x0, 0x100(%rsp)
movl 0x20(%rsp), %ecx
je 0x307fee
testb %cl, %cl
movq 0x10(%rsp), %r12
movq 0x40(%rsp), %rbp
je 0x307ffd
movl 0x8(%rsp), %eax
movl $0x1, %ecx
movq %r13, %rdx
movslq (%rdx), %rdi
leaq (,%rcx,4), %rdx
addq %r13, %rdx
leaq (%r12,%rdi), %rsi
leaq (%r12,%rdi,4), %rdi
movslq (%rdx), %r8
leaq (%r12,%r8), %r9
leaq (%r12,%r8,4), %r10
xorl %r8d, %r8d
cmpl $0x4, 0xf0(%rsp)
jne 0x307fc3
movl (%r10,%r8,4), %r11d
movl (%rdi,%r8,4), %ebx
jmp 0x307fcd
movzbl (%r9,%r8), %r11d
movzbl (%rsi,%r8), %ebx
incq %r8
cmpl %ebx, %r11d
je 0x307faf
decl %r8d
movl %r8d, (%rbp,%rcx,4)
incq %rcx
cmpq %rax, %rcx
jne 0x307f8b
movq (%rsp), %r11
jmp 0x308508
movq 0x10(%rsp), %r12
movq 0x40(%rsp), %rbp
jmp 0x3060ce
xorl %ecx, %ecx
jmp 0x3060ce
subl %ecx, %edx
movq %rdx, %rcx
movq 0x18(%rsp), %rsi
movl %esi, %eax
shrl %eax
leal (%rcx,%r12), %edi
cmpl %edi, %eax
jg 0x3088f8
movq %rcx, %rdx
movslq %r12d, %rbx
leaq (,%rbx,4), %rdi
addq %r13, %rdi
movslq %edx, %rdx
leaq (%rdi,%rdx,4), %r13
leal -0x1(%r12), %r14d
cmpl $0x2, %esi
jb 0x308069
addl %r12d, %eax
cltq
movl %r14d, %edi
movq 0x38(%rsp), %rdx
movl -0x4(%rdx,%rax,4), %edx
testl %edx, %edx
je 0x308061
decl %edx
movslq %edi, %rsi
decl %edi
movl %edx, (%r13,%rsi,4)
decq %rax
cmpq %rbx, %rax
jg 0x308048
subq $0x8, %rsp
xorl %eax, %eax
movq %r13, %rdi
movq 0x40(%rsp), %rsi
xorl %edx, %edx
movl %r12d, %r8d
movl %ebp, %r9d
pushq %rax
pushq %rax
pushq $0x4
callq 0x305d2e
addq $0x20, %rsp
testl %eax, %eax
je 0x3080aa
movl $0xfffffffe, %ebp       # imm = 0xFFFFFFFE
testb $0x1, 0x28(%rsp)
je 0x3084dd
movq 0x58(%rsp), %rdi
jmp 0x307ae7
movq %r12, 0x8(%rsp)
movl 0xf0(%rsp), %r10d
cmpl $0x4, %r10d
jne 0x3080cd
movq 0x10(%rsp), %r12
movq 0x30(%rsp), %rax
movl (%r12,%rax,4), %edx
jmp 0x3080dc
movq 0x10(%rsp), %r12
movq 0x30(%rsp), %rax
movzbl (%r12,%rax), %edx
movq (%rsp), %r11
movq 0x40(%rsp), %rbp
leaq -0x1(%rax), %rsi
testl %eax, %eax
jle 0x308179
movl %esi, %ecx
cmpl $0x4, %r10d
jne 0x3080ff
movl (%r12,%rcx,4), %ecx
jmp 0x308104
movzbl (%r12,%rcx), %ecx
decl %eax
decq %rsi
cmpl %edx, %ecx
movl %ecx, %edx
jge 0x3080e9
movl %eax, %edi
decl %eax
movl %eax, %r8d
movq %rdi, %rsi
subq $0x1, %rsi
jb 0x308179
movl %r8d, %eax
cmpl $0x4, %r10d
jne 0x30812e
movl (%r12,%rsi,4), %edx
jmp 0x308134
movzbl -0x1(%r12,%rdi), %edx
leal -0x1(%rax), %r8d
movq %rsi, %rdi
cmpl %ecx, %edx
movl %edx, %ecx
jle 0x308119
incl %esi
movslq %r14d, %rcx
decl %r14d
movl %esi, (%r13,%rcx,4)
movl %eax, %esi
decq %rsi
testl %eax, %eax
jle 0x308179
movl %esi, %ecx
cmpl $0x4, %r10d
jne 0x308165
movl (%r12,%rcx,4), %ecx
jmp 0x30816a
movzbl (%r12,%rcx), %ecx
decl %eax
decq %rsi
cmpl %edx, %ecx
movl %ecx, %edx
jge 0x308153
testl %eax, %eax
jns 0x30810f
cmpl $0x0, 0x100(%rsp)
movq 0x58(%rsp), %r14
movq 0x38(%rsp), %rdi
je 0x308485
movl $0xaaaaaaab, %edx       # imm = 0xAAAAAAAB
imulq %r15, %rdx
shrq $0x21, %rdx
leaq (,%rbx,4), %rax
addq %rbp, %rax
movq 0x18(%rsp), %rcx
movl %ecx, (%r13,%rbx,4)
movl (%rdi), %ecx
cmpl %edx, 0x8(%rsp)
jge 0x308358
leal (%rcx,%rcx), %edx
movslq %edx, %rdx
movq 0x30(%rsp), %rsi
movl %esi, (%rax,%rdx,4)
leal 0x1(,%rcx,2), %edx
movslq %edx, %rdx
movl $0x0, (%rax,%rdx,4)
cmpb $0x0, 0x20(%rsp)
movq 0x38(%rsp), %r10
je 0x30822b
movl 0x8(%rsp), %edx
movl $0x1, %esi
movslq %ecx, %rcx
movl (%r10,%rsi,4), %edi
leal (%rdi,%rdi), %r8d
movl (%r13,%rcx,4), %r9d
movslq %r8d, %r8
movl %r9d, (%rax,%r8,4)
movl 0x4(%r13,%rcx,4), %ecx
subl %r9d, %ecx
leal 0x1(,%rdi,2), %r8d
movslq %r8d, %r8
movl %ecx, (%rax,%r8,4)
incq %rsi
movl %edi, %ecx
cmpq %rsi, %rdx
jne 0x3081f3
xorl %ecx, %ecx
movq %r12, %rdx
movq %r12, %rsi
xorl %edi, %edi
xorl %r9d, %r9d
xorl %r8d, %r8d
movslq %r8d, %r11
movl (%r13,%r11,4), %r10d
cmpq %r10, %rdi
jne 0x3082e7
leal (%r8,%r8), %ebx
testl %r9d, %r9d
cmovlel %ecx, %r9d
movslq %ebx, %rbx
cmpl $0x4, 0xf0(%rsp)
jne 0x30827d
movl (%rsi,%r9,4), %ebp
movl (%rax,%rbx,4), %r14d
addl %r9d, %r14d
movslq %r14d, %r14
movq 0x10(%rsp), %r15
movl (%r15,%r14,4), %r14d
jmp 0x308296
movzbl (%rdx,%r9), %ebp
movl (%rax,%rbx,4), %r14d
addl %r9d, %r14d
movslq %r14d, %r14
movq 0x10(%rsp), %r15
movzbl (%r15,%r14), %r14d
incq %r9
cmpl %r14d, %ebp
movq 0x68(%rsp), %r15
je 0x30825a
leal -0x1(%r9), %ebp
movl %ebx, %r14d
orl $0x1, %r14d
movslq %r14d, %r14
movl (%rax,%r14,4), %r14d
movl %r14d, 0x7c(%rsp)
incl %r8d
movl 0x4(%r13,%r11,4), %r11d
subl %r10d, %r11d
cmpl %r11d, %r14d
cmovgl %r14d, %r11d
movl %ebp, (%rax,%rbx,4)
notl %r11d
addl %r9d, %r11d
movl %r11d, %r9d
movq 0x10(%rsp), %r12
movq 0x58(%rsp), %r14
movq 0x40(%rsp), %rbp
incq %rdi
addq $0x4, %rsi
incq %rdx
cmpq %r15, %rdi
jne 0x30823b
cmpl $0x0, 0x8(%rsp)
movq (%rsp), %r11
movl 0xf0(%rsp), %r10d
movq 0x38(%rsp), %rdi
jle 0x3084a6
movl 0x8(%rsp), %ecx
xorl %edx, %edx
movl (%rdi,%rdx,4), %esi
addl %esi, %esi
movslq %esi, %rsi
movl (%rax,%rsi,4), %esi
movl %esi, (%rbp,%rdx,4)
incq %rdx
cmpq %rdx, %rcx
jne 0x30831c
jmp 0x308485
movq 0x28(%rsp), %rbx
testb $0x5, %bl
je 0x30834e
movq %r14, %rdi
callq 0x29e2e0
movq (%rsp), %r11
movl $0xfffffffe, %ebp       # imm = 0xFFFFFFFE
jmp 0x307adb
movslq %ecx, %rdx
movq 0x30(%rsp), %rsi
movl %esi, (%rbp,%rdx,4)
movl $0x0, (%rax,%rdx,4)
cmpb $0x0, 0x20(%rsp)
movq 0x38(%rsp), %r9
je 0x3083a6
movl 0x8(%rsp), %edx
movl $0x1, %esi
movslq %ecx, %rcx
movslq (%r9,%rsi,4), %rdi
movl (%r13,%rcx,4), %r8d
movl %r8d, (%rbp,%rdi,4)
movl 0x4(%r13,%rcx,4), %ecx
subl %r8d, %ecx
movl %ecx, (%rax,%rdi,4)
incq %rsi
movl %edi, %ecx
cmpq %rsi, %rdx
jne 0x308380
xorl %ecx, %ecx
movq %r12, %rdx
movq %r12, %rsi
xorl %edi, %edi
xorl %r8d, %r8d
xorl %r11d, %r11d
movslq %r11d, %r9
movl (%r13,%r9,4), %r10d
cmpq %r10, %rdi
jne 0x308441
testl %r8d, %r8d
cmovlel %ecx, %r8d
cmpl $0x4, 0xf0(%rsp)
jne 0x3083e9
movl (%rsi,%r8,4), %r11d
movl (%rbp,%r9,4), %ebx
addl %r8d, %ebx
movslq %ebx, %rbx
movl (%r12,%rbx,4), %ebx
jmp 0x3083fe
movzbl (%rdx,%r8), %r11d
movl (%rbp,%r9,4), %ebx
addl %r8d, %ebx
movslq %ebx, %rbx
movzbl (%r12,%rbx), %ebx
incq %r8
cmpl %ebx, %r11d
je 0x3083ca
leal -0x1(%r8), %ebx
movl (%rax,%r9,4), %ebp
movl %ebp, 0x7c(%rsp)
leal 0x1(%r9), %r11d
movl 0x4(%r13,%r9,4), %r14d
subl %r10d, %r14d
cmpl %r14d, %ebp
cmovgl %ebp, %r14d
movq 0x40(%rsp), %rbp
movq 0x10(%rsp), %r12
movl %ebx, (%rax,%r9,4)
notl %r14d
addl %r8d, %r14d
movl %r14d, %r8d
movq 0x58(%rsp), %r14
incq %rdi
addq $0x4, %rsi
incq %rdx
cmpq %r15, %rdi
jne 0x3083b6
cmpl $0x0, 0x8(%rsp)
movq (%rsp), %r11
movl 0xf0(%rsp), %r10d
movq 0x38(%rsp), %rdi
jle 0x3084a6
movl 0x8(%rsp), %ecx
xorl %edx, %edx
movslq (%rdi,%rdx,4), %rsi
movl (%rax,%rsi,4), %esi
movl %esi, (%rbp,%rdx,4)
incq %rdx
cmpq %rdx, %rcx
jne 0x308472
cmpl $0x0, 0x8(%rsp)
jle 0x3084a6
movl 0x8(%rsp), %eax
xorl %ecx, %ecx
movslq (%rdi,%rcx,4), %rdx
movl (%r13,%rdx,4), %edx
movl %edx, (%rdi,%rcx,4)
incq %rcx
cmpq %rcx, %rax
jne 0x308492
testb $0x4, 0x28(%rsp)
je 0x3084ca
movq 0x50(%rsp), %rdi
callq 0x29e340
movl 0xf0(%rsp), %r10d
movq %rax, %r11
movq %rax, %r14
testq %rax, %rax
je 0x3084d8
testb $0x2, 0x28(%rsp)
jne 0x3084f1
movq 0x38(%rsp), %r13
jmp 0x308510
movl $0xfffffffe, %ebp       # imm = 0xFFFFFFFE
movl %ebp, %eax
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x50(%rsp), %rdi
callq 0x29e340
testq %rax, %rax
movq 0x38(%rsp), %r13
je 0x308519
movq %rax, %r11
movl 0xf0(%rsp), %r10d
movl 0x20(%rsp), %ecx
jmp 0x3060ce
movl $0xfffffffe, %ebp       # imm = 0xFFFFFFFE
testb $0x1, 0x28(%rsp)
je 0x3084dd
movq %r14, %rdi
jmp 0x307ae7
leaq 0x3ce84c(%rip), %rdi    # 0x6d6d80
leaq 0x3ce701(%rip), %rsi    # 0x6d6c3c
leaq 0x3cea1c(%rip), %rcx    # 0x6d6f5e
movl $0x20d, %edx            # imm = 0x20D
callq 0x29e180
leaq 0x3ce842(%rip), %rdi    # 0x6d6d95
leaq 0x3ce6e2(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce9fd(%rip), %rcx    # 0x6d6f5e
movl $0x210, %edx            # imm = 0x210
callq 0x29e180
leaq 0x3ce830(%rip), %rdi    # 0x6d6da2
leaq 0x3ce6c3(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce9de(%rip), %rcx    # 0x6d6f5e
movl $0x21c, %edx            # imm = 0x21C
callq 0x29e180
leaq 0x3ce826(%rip), %rdi    # 0x6d6db7
leaq 0x3ce6a4(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce9bf(%rip), %rcx    # 0x6d6f5e
movl $0x21f, %edx            # imm = 0x21F
callq 0x29e180
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x29e2f0
leaq 0x3ce912(%rip), %rdi    # 0x6d6ecc
leaq 0x3ce67b(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce8b7(%rip), %rcx    # 0x6d6e7f
movl $0x1db, %edx            # imm = 0x1DB
callq 0x29e180
leaq 0x3ce8fc(%rip), %rdi    # 0x6d6ed5
leaq 0x3ce65c(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce898(%rip), %rcx    # 0x6d6e7f
movl $0x18a, %edx            # imm = 0x18A
callq 0x29e180
leaq 0x3ce8d4(%rip), %rdi    # 0x6d6ecc
leaq 0x3ce63d(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce879(%rip), %rcx    # 0x6d6e7f
movl $0x184, %edx            # imm = 0x184
callq 0x29e180
leaq 0x3ce769(%rip), %rdi    # 0x6d6d80
leaq 0x3ce61e(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce85a(%rip), %rcx    # 0x6d6e7f
movl $0x17a, %edx            # imm = 0x17A
callq 0x29e180
leaq 0x3ce803(%rip), %rdi    # 0x6d6e39
leaq 0x3ce5ff(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce83b(%rip), %rcx    # 0x6d6e7f
movl $0x17f, %edx            # imm = 0x17F
callq 0x29e180
leaq 0x3ce8b8(%rip), %rdi    # 0x6d6f0d
leaq 0x3ce5e0(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce81c(%rip), %rcx    # 0x6d6e7f
movl $0x1d0, %edx            # imm = 0x1D0
callq 0x29e180
leaq 0x3ce892(%rip), %rdi    # 0x6d6f06
leaq 0x3ce5c1(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce7fd(%rip), %rcx    # 0x6d6e7f
movl $0x1cc, %edx            # imm = 0x1CC
callq 0x29e180
leaq 0x3ce86b(%rip), %rdi    # 0x6d6efe
leaq 0x3ce5a2(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce7de(%rip), %rcx    # 0x6d6e7f
movl $0x1ca, %edx            # imm = 0x1CA
callq 0x29e180
leaq 0x3ce6f0(%rip), %rdi    # 0x6d6da2
leaq 0x3ce583(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce7bf(%rip), %rcx    # 0x6d6e7f
movl $0x1c6, %edx            # imm = 0x1C6
callq 0x29e180
leaq 0x3ce6af(%rip), %rdi    # 0x6d6d80
leaq 0x3ce564(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce65a(%rip), %rcx    # 0x6d6d39
movl $0xb6, %edx
callq 0x29e180
leaq 0x3ce6a5(%rip), %rdi    # 0x6d6d95
leaq 0x3ce545(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce63b(%rip), %rcx    # 0x6d6d39
movl $0xb8, %edx
callq 0x29e180
leaq 0x3ce693(%rip), %rdi    # 0x6d6da2
leaq 0x3ce526(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce61c(%rip), %rcx    # 0x6d6d39
movl $0xd2, %edx
callq 0x29e180
leaq 0x3ce689(%rip), %rdi    # 0x6d6db7
leaq 0x3ce507(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce5fd(%rip), %rcx    # 0x6d6d39
movl $0xd4, %edx
callq 0x29e180
leaq 0x3ce633(%rip), %rdi    # 0x6d6d80
leaq 0x3ce4e8(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce7c3(%rip), %rcx    # 0x6d6f1e
movl $0x116, %edx            # imm = 0x116
callq 0x29e180
leaq 0x3ce6cd(%rip), %rdi    # 0x6d6e39
leaq 0x3ce4c9(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce7a4(%rip), %rcx    # 0x6d6f1e
movl $0x118, %edx            # imm = 0x118
callq 0x29e180
leaq 0x3ce617(%rip), %rdi    # 0x6d6da2
leaq 0x3ce4aa(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce785(%rip), %rcx    # 0x6d6f1e
movl $0x123, %edx            # imm = 0x123
callq 0x29e180
leaq 0x3ce754(%rip), %rdi    # 0x6d6efe
leaq 0x3ce48b(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce766(%rip), %rcx    # 0x6d6f1e
movl $0x125, %edx            # imm = 0x125
callq 0x29e180
leaq 0x3ce71d(%rip), %rdi    # 0x6d6ee6
leaq 0x3ce46c(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce6a8(%rip), %rcx    # 0x6d6e7f
movl $0x195, %edx            # imm = 0x195
callq 0x29e180
leaq 0x3ce524(%rip), %rdi    # 0x6d6d0c
leaq 0x3ce44d(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce4a1(%rip), %rcx    # 0x6d6c97
movl $0x276, %edx            # imm = 0x276
callq 0x29e180
leaq 0x3ce579(%rip), %rdi    # 0x6d6d80
leaq 0x3ce42e(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce5e4(%rip), %rcx    # 0x6d6df9
movl $0x5b, %edx
callq 0x29e180
leaq 0x3ce613(%rip), %rdi    # 0x6d6e39
leaq 0x3ce40f(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce5c5(%rip), %rcx    # 0x6d6df9
movl $0x5d, %edx
callq 0x29e180
leaq 0x3ce55d(%rip), %rdi    # 0x6d6da2
leaq 0x3ce3f0(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce5a6(%rip), %rcx    # 0x6d6df9
movl $0x6b, %edx
callq 0x29e180
leaq 0x3ce5dc(%rip), %rdi    # 0x6d6e40
leaq 0x3ce3d1(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce587(%rip), %rcx    # 0x6d6df9
movl $0x6d, %edx
callq 0x29e180
leaq 0x3ce66d(%rip), %rdi    # 0x6d6ef0
leaq 0x3ce3b2(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce5ee(%rip), %rcx    # 0x6d6e7f
movl $0x1a8, %edx            # imm = 0x1A8
callq 0x29e180
leaq 0x3ce64e(%rip), %rdi    # 0x6d6ef0
leaq 0x3ce393(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce5cf(%rip), %rcx    # 0x6d6e7f
movl $0x1ec, %edx            # imm = 0x1EC
callq 0x29e180
leaq 0x3ce35f(%rip), %rdi    # 0x6d6c20
leaq 0x3ce374(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce3c8(%rip), %rcx    # 0x6d6c97
movl $0x236, %edx            # imm = 0x236
callq 0x29e180
leaq 0x3ce3ff(%rip), %rdi    # 0x6d6cdf
leaq 0x3ce355(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce3a9(%rip), %rcx    # 0x6d6c97
movl $0x237, %edx            # imm = 0x237
callq 0x29e180
leaq 0x3ce41b(%rip), %rdi    # 0x6d6d1a
leaq 0x3ce336(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce38a(%rip), %rcx    # 0x6d6c97
movl $0x292, %edx            # imm = 0x292
callq 0x29e180
leaq 0x3ce3e2(%rip), %rdi    # 0x6d6d00
leaq 0x3ce317(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce36b(%rip), %rcx    # 0x6d6c97
movl $0x272, %edx            # imm = 0x272
callq 0x29e180
leaq 0x3ce3f5(%rip), %rdi    # 0x6d6d32
leaq 0x3ce2f8(%rip), %rsi    # 0x6d6c3c
leaq 0x3ce3ee(%rip), %rcx    # 0x6d6d39
movl $0xa9, %edx
callq 0x29e180