// File: /workspace/github_c_makefile_star2_O0/ToniWestbrook[P]paladin/is.c
// Function: sais_main
static int64_t sais_main(const unsigned char *T, int64_t *SA, int64_t fs, int64_t n, int64_t k, int64_t cs)
{
	int64_t *C, *B, *RA;
	int64_t  i, j, c, m, p, q, plen, qlen, name;
	int64_t  c0, c1;
	int64_t  diff;

	/* stage 1: reduce the problem by at least 1/2 sort all the
	 * S-substrings */
	if (k <= fs) {
		C = SA + n;
		B = (k <= (fs - k)) ? C + k : C;
	} else if ((C = B = (int64_t *) malloc(k * sizeof(int64_t))) == NULL) return -2;
	getCounts(T, C, n, k, cs);
	getBuckets(C, B, k, 1);	/* find ends of buckets */
	for (i = 0; i < n; ++i) SA[i] = 0;
	for (i = n - 2, c = 0, c1 = chr(n - 1); 0 <= i; --i, c1 = c0) {
		if ((c0 = chr(i)) < (c1 + c)) c = 1;
		else if (c != 0) SA[--B[c1]] = i + 1, c = 0;
	}
	induceSA(T, SA, C, B, n, k, cs);
	if (fs < k) free(C);
	/* compact all the sorted substrings into the first m items of SA
	 * 2*m must be not larger than n (proveable) */
	for (i = 0, m = 0; i < n; ++i) {
		p = SA[i];
		if ((0 < p) && (chr(p - 1) > (c0 = chr(p)))) {
			for (j = p + 1; (j < n) && (c0 == (c1 = chr(j))); ++j);
			if ((j < n) && (c0 < c1)) SA[m++] = p;
		}
	}
	for (i = m; i < n; ++i) SA[i] = 0;	/* init the name array buffer */
	/* store the length of all substrings */
	for (i = n - 2, j = n, c = 0, c1 = chr(n - 1); 0 <= i; --i, c1 = c0) {
		if ((c0 = chr(i)) < (c1 + c)) c = 1;
		else if (c != 0) {
			SA[m + ((i + 1) >> 1)] = j - i - 1;
			j = i + 1;
			c = 0;
		}
	}
	/* find the lexicographic names of all substrings */
	for (i = 0, name = 0, q = n, qlen = 0; i < m; ++i) {
		p = SA[i], plen = SA[m + (p >> 1)], diff = 1;
		if (plen == qlen) {
			for (j = 0; (j < plen) && (chr(p + j) == chr(q + j)); j++);
			if (j == plen) diff = 0;
		}
		if (diff != 0) ++name, q = p, qlen = plen;
		SA[m + (p >> 1)] = name;
	}

	/* stage 2: solve the reduced problem recurse if names are not yet
	 * unique */
	if (name < m) {
		RA = SA + n + fs - m;
		for (i = n - 1, j = m - 1; m <= i; --i) {
			if (SA[i] != 0) RA[j--] = SA[i] - 1;
		}
		if (sais_main((unsigned char *) RA, SA, fs + n - m * 2, m, name, sizeof(int64_t)) != 0) return -2;
		for (i = n - 2, j = m - 1, c = 0, c1 = chr(n - 1); 0 <= i; --i, c1 = c0) {
			if ((c0 = chr(i)) < (c1 + c)) c = 1;
			else if (c != 0) RA[j--] = i + 1, c = 0; /* get p1 */
		}
		for (i = 0; i < m; ++i) SA[i] = RA[SA[i]]; /* get index */
	}
	/* stage 3: induce the result for the original problem */
	if (k <= fs) {
		C = SA + n;
		B = (k <= (fs - k)) ? C + k : C;
	} else if ((C = B = (int64_t *) malloc(k * sizeof(int64_t))) == NULL) return -2;
	/* put all left-most S characters into their buckets */
	getCounts(T, C, n, k, cs);
	getBuckets(C, B, k, 1);	/* find ends of buckets */
	for (i = m; i < n; ++i) SA[i] = 0; /* init SA[m..n-1] */
	for (i = m - 1; 0 <= i; --i) {
		j = SA[i], SA[i] = 0;
		SA[--B[chr(j)]] = j;
	}
	induceSA(T, SA, C, B, n, k, cs);
	if (fs < k) free(C);
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x170, %rsp            # imm = 0x170
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq %r9, -0x38(%rbp)
movq -0x30(%rbp), %rax
cmpq -0x20(%rbp), %rax
jg 0x39b1
movq -0x18(%rbp), %rax
movq -0x28(%rbp), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movq -0x30(%rbp), %rax
movq -0x20(%rbp), %rcx
subq -0x30(%rbp), %rcx
cmpq %rcx, %rax
jg 0x3999
movq -0x40(%rbp), %rax
movq -0x30(%rbp), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0xb8(%rbp)
jmp 0x39a4
movq -0x40(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rax
movq %rax, -0x48(%rbp)
jmp 0x39ee
movq -0x30(%rbp), %rdi
shlq $0x3, %rdi
leaq 0x33644(%rip), %rsi     # 0x37004
movl $0x71, %edx
leaq 0x33644(%rip), %rcx     # 0x37010
callq 0x31ca0
movq %rax, -0x48(%rbp)
movq %rax, -0x40(%rbp)
cmpq $0x0, %rax
jne 0x39ec
movq $-0x2, -0x8(%rbp)
jmp 0x44bc
jmp 0x39ee
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x4620
movq -0x40(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x30(%rbp), %rdx
movl $0x1, %ecx
callq 0x46d0
movq $0x0, -0x58(%rbp)
movq -0x58(%rbp), %rax
cmpq -0x28(%rbp), %rax
jge 0x3a4d
movq -0x18(%rbp), %rax
movq -0x58(%rbp), %rcx
movq $0x0, (%rax,%rcx,8)
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x3a25
movq -0x28(%rbp), %rax
subq $0x2, %rax
movq %rax, -0x58(%rbp)
movq $0x0, -0x68(%rbp)
cmpq $0x8, -0x38(%rbp)
jne 0x3a81
movq -0x10(%rbp), %rax
movq -0x28(%rbp), %rcx
subq $0x1, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xc0(%rbp)
jmp 0x3a98
movq -0x10(%rbp), %rax
movq -0x28(%rbp), %rcx
subq $0x1, %rcx
movzbl (%rax,%rcx), %eax
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq %rax, -0xa8(%rbp)
xorl %eax, %eax
cmpq -0x58(%rbp), %rax
jg 0x3b66
cmpq $0x8, -0x38(%rbp)
jne 0x3ace
movq -0x10(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xc8(%rbp)
jmp 0x3ae1
movq -0x10(%rbp), %rax
movq -0x58(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0xa8(%rbp), %rcx
addq -0x68(%rbp), %rcx
cmpq %rcx, %rax
jge 0x3b09
movq $0x1, -0x68(%rbp)
jmp 0x3b45
cmpq $0x0, -0x68(%rbp)
je 0x3b43
movq -0x58(%rbp), %rdx
addq $0x1, %rdx
movq -0x18(%rbp), %rax
movq -0x48(%rbp), %rsi
movq -0xa8(%rbp), %rdi
movq (%rsi,%rdi,8), %rcx
movq %rcx, %r8
addq $-0x1, %r8
movq %r8, (%rsi,%rdi,8)
movq %rdx, -0x8(%rax,%rcx,8)
movq $0x0, -0x68(%rbp)
jmp 0x3b45
jmp 0x3b47
movq -0x58(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x58(%rbp)
movq -0xa0(%rbp), %rax
movq %rax, -0xa8(%rbp)
jmp 0x3aa6
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq -0x48(%rbp), %rcx
movq -0x28(%rbp), %r8
movq -0x30(%rbp), %r9
movq -0x38(%rbp), %rax
movq %rax, (%rsp)
callq 0x4790
movq -0x20(%rbp), %rax
cmpq -0x30(%rbp), %rax
jge 0x3b9e
movq -0x40(%rbp), %rdi
callq 0x3380
movq $0x0, -0x58(%rbp)
movq $0x0, -0x70(%rbp)
movq -0x58(%rbp), %rax
cmpq -0x28(%rbp), %rax
jge 0x3d4f
movq -0x18(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x78(%rbp)
xorl %eax, %eax
cmpq -0x78(%rbp), %rax
jge 0x3d3c
cmpq $0x8, -0x38(%rbp)
jne 0x3bf8
movq -0x10(%rbp), %rax
movq -0x78(%rbp), %rcx
subq $0x1, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xd0(%rbp)
jmp 0x3c0f
movq -0x10(%rbp), %rax
movq -0x78(%rbp), %rcx
subq $0x1, %rcx
movzbl (%rax,%rcx), %eax
movq %rax, -0xd0(%rbp)
movq -0xd0(%rbp), %rax
movq %rax, -0xd8(%rbp)
cmpq $0x8, -0x38(%rbp)
jne 0x3c39
movq -0x10(%rbp), %rax
movq -0x78(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xe0(%rbp)
jmp 0x3c4c
movq -0x10(%rbp), %rax
movq -0x78(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq %rax, -0xe0(%rbp)
movq -0xd8(%rbp), %rax
movq -0xe0(%rbp), %rcx
movq %rcx, -0xa0(%rbp)
cmpq %rcx, %rax
jle 0x3d3c
movq -0x78(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rcx
xorl %eax, %eax
cmpq -0x28(%rbp), %rcx
movb %al, -0xe1(%rbp)
jge 0x3ce6
movq -0xa0(%rbp), %rax
movq %rax, -0xf0(%rbp)
cmpq $0x8, -0x38(%rbp)
jne 0x3cb2
movq -0x10(%rbp), %rax
movq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xf8(%rbp)
jmp 0x3cc5
movq -0x10(%rbp), %rax
movq -0x60(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq %rax, -0xf8(%rbp)
movq -0xf0(%rbp), %rax
movq -0xf8(%rbp), %rcx
movq %rcx, -0xa8(%rbp)
cmpq %rcx, %rax
sete %al
movb %al, -0xe1(%rbp)
movb -0xe1(%rbp), %al
testb $0x1, %al
jne 0x3cf2
jmp 0x3d05
jmp 0x3cf4
movq -0x60(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
jmp 0x3c76
movq -0x60(%rbp), %rax
cmpq -0x28(%rbp), %rax
jge 0x3d3a
movq -0xa0(%rbp), %rax
cmpq -0xa8(%rbp), %rax
jge 0x3d3a
movq -0x78(%rbp), %rdx
movq -0x18(%rbp), %rax
movq -0x70(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x70(%rbp)
movq %rdx, (%rax,%rcx,8)
jmp 0x3d3c
jmp 0x3d3e
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x3bae
movq -0x70(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
cmpq -0x28(%rbp), %rax
jge 0x3d7f
movq -0x18(%rbp), %rax
movq -0x58(%rbp), %rcx
movq $0x0, (%rax,%rcx,8)
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x3d57
movq -0x28(%rbp), %rax
subq $0x2, %rax
movq %rax, -0x58(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x60(%rbp)
movq $0x0, -0x68(%rbp)
cmpq $0x8, -0x38(%rbp)
jne 0x3dbb
movq -0x10(%rbp), %rax
movq -0x28(%rbp), %rcx
subq $0x1, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x100(%rbp)
jmp 0x3dd2
movq -0x10(%rbp), %rax
movq -0x28(%rbp), %rcx
subq $0x1, %rcx
movzbl (%rax,%rcx), %eax
movq %rax, -0x100(%rbp)
movq -0x100(%rbp), %rax
movq %rax, -0xa8(%rbp)
xorl %eax, %eax
cmpq -0x58(%rbp), %rax
jg 0x3ea7
cmpq $0x8, -0x38(%rbp)
jne 0x3e08
movq -0x10(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x108(%rbp)
jmp 0x3e1b
movq -0x10(%rbp), %rax
movq -0x58(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq %rax, -0x108(%rbp)
movq -0x108(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0xa8(%rbp), %rcx
addq -0x68(%rbp), %rcx
cmpq %rcx, %rax
jge 0x3e43
movq $0x1, -0x68(%rbp)
jmp 0x3e86
cmpq $0x0, -0x68(%rbp)
je 0x3e84
movq -0x60(%rbp), %rdx
subq -0x58(%rbp), %rdx
subq $0x1, %rdx
movq -0x18(%rbp), %rax
movq -0x70(%rbp), %rcx
movq -0x58(%rbp), %rsi
addq $0x1, %rsi
sarq %rsi
addq %rsi, %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
movq $0x0, -0x68(%rbp)
jmp 0x3e86
jmp 0x3e88
movq -0x58(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x58(%rbp)
movq -0xa0(%rbp), %rax
movq %rax, -0xa8(%rbp)
jmp 0x3de0
movq $0x0, -0x58(%rbp)
movq $0x0, -0x98(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x80(%rbp)
movq $0x0, -0x90(%rbp)
movq -0x58(%rbp), %rax
cmpq -0x70(%rbp), %rax
jge 0x4077
movq -0x18(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x78(%rbp)
movq -0x18(%rbp), %rax
movq -0x70(%rbp), %rcx
movq -0x78(%rbp), %rdx
sarq %rdx
addq %rdx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x88(%rbp)
movq $0x1, -0xb0(%rbp)
movq -0x88(%rbp), %rax
cmpq -0x90(%rbp), %rax
jne 0x4017
movq $0x0, -0x60(%rbp)
movq -0x60(%rbp), %rcx
xorl %eax, %eax
cmpq -0x88(%rbp), %rcx
movb %al, -0x109(%rbp)
jge 0x3fde
cmpq $0x8, -0x38(%rbp)
jne 0x3f68
movq -0x10(%rbp), %rax
movq -0x78(%rbp), %rcx
addq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x118(%rbp)
jmp 0x3f7f
movq -0x10(%rbp), %rax
movq -0x78(%rbp), %rcx
addq -0x60(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq %rax, -0x118(%rbp)
movq -0x118(%rbp), %rax
movq %rax, -0x120(%rbp)
cmpq $0x8, -0x38(%rbp)
jne 0x3fad
movq -0x10(%rbp), %rax
movq -0x80(%rbp), %rcx
addq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x128(%rbp)
jmp 0x3fc4
movq -0x10(%rbp), %rax
movq -0x80(%rbp), %rcx
addq -0x60(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq %rax, -0x128(%rbp)
movq -0x120(%rbp), %rax
movq -0x128(%rbp), %rcx
cmpq %rcx, %rax
sete %al
movb %al, -0x109(%rbp)
movb -0x109(%rbp), %al
testb $0x1, %al
jne 0x3fea
jmp 0x3ffd
jmp 0x3fec
movq -0x60(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
jmp 0x3f2f
movq -0x60(%rbp), %rax
cmpq -0x88(%rbp), %rax
jne 0x4015
movq $0x0, -0xb0(%rbp)
jmp 0x4017
cmpq $0x0, -0xb0(%rbp)
je 0x4049
movq -0x98(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x98(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x98(%rbp), %rdx
movq -0x18(%rbp), %rax
movq -0x70(%rbp), %rcx
movq -0x78(%rbp), %rsi
sarq %rsi
addq %rsi, %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x3ecd
movq -0x98(%rbp), %rax
cmpq -0x70(%rbp), %rax
jge 0x42b9
movq -0x18(%rbp), %rax
movq -0x28(%rbp), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq -0x20(%rbp), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
xorl %ecx, %ecx
subq -0x70(%rbp), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x28(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x58(%rbp)
movq -0x70(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x60(%rbp)
movq -0x70(%rbp), %rax
cmpq -0x58(%rbp), %rax
jg 0x411b
movq -0x18(%rbp), %rax
movq -0x58(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
je 0x410b
movq -0x18(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
subq $0x1, %rdx
movq -0x50(%rbp), %rax
movq -0x60(%rbp), %rcx
movq %rcx, %rsi
addq $-0x1, %rsi
movq %rsi, -0x60(%rbp)
movq %rdx, (%rax,%rcx,8)
jmp 0x410d
movq -0x58(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x40cb
movq -0x50(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
addq -0x28(%rbp), %rdx
movq -0x70(%rbp), %rax
shlq %rax
subq %rax, %rdx
movq -0x70(%rbp), %rcx
movq -0x98(%rbp), %r8
movl $0x8, %r9d
callq 0x3930
cmpq $0x0, %rax
je 0x415e
movq $-0x2, -0x8(%rbp)
jmp 0x44bc
movq -0x28(%rbp), %rax
subq $0x2, %rax
movq %rax, -0x58(%rbp)
movq -0x70(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x60(%rbp)
movq $0x0, -0x68(%rbp)
cmpq $0x8, -0x38(%rbp)
jne 0x419e
movq -0x10(%rbp), %rax
movq -0x28(%rbp), %rcx
subq $0x1, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x130(%rbp)
jmp 0x41b5
movq -0x10(%rbp), %rax
movq -0x28(%rbp), %rcx
subq $0x1, %rcx
movzbl (%rax,%rcx), %eax
movq %rax, -0x130(%rbp)
movq -0x130(%rbp), %rax
movq %rax, -0xa8(%rbp)
xorl %eax, %eax
cmpq -0x58(%rbp), %rax
jg 0x4277
cmpq $0x8, -0x38(%rbp)
jne 0x41eb
movq -0x10(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x138(%rbp)
jmp 0x41fe
movq -0x10(%rbp), %rax
movq -0x58(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq %rax, -0x138(%rbp)
movq -0x138(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0xa8(%rbp), %rcx
addq -0x68(%rbp), %rcx
cmpq %rcx, %rax
jge 0x4226
movq $0x1, -0x68(%rbp)
jmp 0x4256
cmpq $0x0, -0x68(%rbp)
je 0x4254
movq -0x58(%rbp), %rdx
addq $0x1, %rdx
movq -0x50(%rbp), %rax
movq -0x60(%rbp), %rcx
movq %rcx, %rsi
addq $-0x1, %rsi
movq %rsi, -0x60(%rbp)
movq %rdx, (%rax,%rcx,8)
movq $0x0, -0x68(%rbp)
jmp 0x4256
jmp 0x4258
movq -0x58(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x58(%rbp)
movq -0xa0(%rbp), %rax
movq %rax, -0xa8(%rbp)
jmp 0x41c3
movq $0x0, -0x58(%rbp)
movq -0x58(%rbp), %rax
cmpq -0x70(%rbp), %rax
jge 0x42b7
movq -0x50(%rbp), %rax
movq -0x18(%rbp), %rcx
movq -0x58(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rdx
movq -0x18(%rbp), %rax
movq -0x58(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x427f
jmp 0x42b9
movq -0x30(%rbp), %rax
cmpq -0x20(%rbp), %rax
jg 0x4317
movq -0x18(%rbp), %rax
movq -0x28(%rbp), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movq -0x30(%rbp), %rax
movq -0x20(%rbp), %rcx
subq -0x30(%rbp), %rcx
cmpq %rcx, %rax
jg 0x42ff
movq -0x40(%rbp), %rax
movq -0x30(%rbp), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x140(%rbp)
jmp 0x430a
movq -0x40(%rbp), %rax
movq %rax, -0x140(%rbp)
movq -0x140(%rbp), %rax
movq %rax, -0x48(%rbp)
jmp 0x4354
movq -0x30(%rbp), %rdi
shlq $0x3, %rdi
leaq 0x32cde(%rip), %rsi     # 0x37004
movl $0xab, %edx
leaq 0x32cde(%rip), %rcx     # 0x37010
callq 0x31ca0
movq %rax, -0x48(%rbp)
movq %rax, -0x40(%rbp)
cmpq $0x0, %rax
jne 0x4352
movq $-0x2, -0x8(%rbp)
jmp 0x44bc
jmp 0x4354
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x4620
movq -0x40(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x30(%rbp), %rdx
movl $0x1, %ecx
callq 0x46d0
movq -0x70(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
cmpq -0x28(%rbp), %rax
jge 0x43b3
movq -0x18(%rbp), %rax
movq -0x58(%rbp), %rcx
movq $0x0, (%rax,%rcx,8)
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x438b
movq -0x70(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x58(%rbp)
xorl %eax, %eax
cmpq -0x58(%rbp), %rax
jg 0x447c
movq -0x18(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x60(%rbp)
movq -0x18(%rbp), %rax
movq -0x58(%rbp), %rcx
movq $0x0, (%rax,%rcx,8)
movq -0x60(%rbp), %rax
movq %rax, -0x158(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x150(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x148(%rbp)
cmpq $0x8, -0x38(%rbp)
jne 0x4428
movq -0x10(%rbp), %rax
movq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x160(%rbp)
jmp 0x443b
movq -0x10(%rbp), %rax
movq -0x60(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq %rax, -0x160(%rbp)
movq -0x150(%rbp), %rax
movq -0x158(%rbp), %rdx
movq -0x148(%rbp), %rsi
movq -0x160(%rbp), %rdi
movq (%rsi,%rdi,8), %rcx
movq %rcx, %r8
addq $-0x1, %r8
movq %r8, (%rsi,%rdi,8)
movq %rdx, -0x8(%rax,%rcx,8)
movq -0x58(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x43bf
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq -0x48(%rbp), %rcx
movq -0x28(%rbp), %r8
movq -0x30(%rbp), %r9
movq -0x38(%rbp), %rax
movq %rax, (%rsp)
callq 0x4790
movq -0x20(%rbp), %rax
cmpq -0x30(%rbp), %rax
jge 0x44b4
movq -0x40(%rbp), %rdi
callq 0x3380
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x170, %rsp            # imm = 0x170
popq %rbp
retq
nopl (%rax)