// File: /workspace/github_c_makefile_star2_O1/lh3[P]miniprot/nasw-sse.c
// Function: ns_global_gs16b
void ns_global_gs16b(void *km, const char *ns, int32_t nl, const char *as, int32_t al, const ns_opt_t *opt, const uint8_t *ss, ns_rst_t *r)
{
	typedef int16_t ns_int_t;
	const int32_t ssize = sizeof(ns_int_t), vsize = 16 / ssize;
	const ns_int_t neg_inf = (ns_int_t)(1 << (8*ssize - 1));
	NS_GEN_VAR(epi16)
	NS_GEN_PREPARE(epi16)
	NS_GEN_INIT1(epi16)

	if (tb == 0) {
		int32_t max_sc = INT32_MIN, max_sc_log = INT32_MIN, tmp_sc, tmp_sc_log, end_sc, max_i = -1, pen_len = al * 3;
		for (i = 2; i < nl; ++i) {
			__m128i max;
			NS_GEN_INIT2(epi16)
			max = _mm_set1_epi16(neg_inf);
			for (j = 0; j < slen; ++j) {
				__m128i h, t, u, v;
				// H(i-3,j-1) + s(i,j)
				u = _mm_load_si128(H3 + j - 1);
				v = _mm_load_si128(S + j);
				h = _mm_adds_epi16(u, v);
				// I(i,j) = max{ H(i,j-1) - q, I(i,j-1) } - e
				t = _mm_subs_epi16(last_h, go);
				t = _mm_max_epi16(t, I);
				I = _mm_subs_epi16(t, ge);
				h = _mm_max_epi16(h, I);
				// D(i,j) = max{ H(i-3,j) - q, D(i-3,j) } - e
				u = _mm_load_si128(H3 + j);
				v = _mm_load_si128(D3 + j);
				t = _mm_max_epi16(_mm_subs_epi16(u, go), v);
				t = _mm_subs_epi16(t, gei);
				_mm_store_si128(D + j, t);
				h = _mm_max_epi16(h, t);
				// A(i,j) = max{ H(i-1,j)   - r - d(i-1), A(i-1,j) }
				u = _mm_subs_epi16(_mm_load_si128(H1 + j), io);
				v = _mm_load_si128(A + j);
				t = _mm_subs_epi16(u, dim1);
				t = _mm_max_epi16(t, v);
				_mm_store_si128(A + j, t);
				h = _mm_max_epi16(h, _mm_subs_epi16(t, ai));
				// B(i,j) = max{ H(i-1,j-1) - r - d(i),   B(i-1,j) }
				u = _mm_subs_epi16(_mm_load_si128(H1 + j - 1), io);
				v = _mm_load_si128(B + j);
				t = _mm_subs_epi16(u, di);
				t = _mm_max_epi16(t, v);
				_mm_store_si128(B + j, t);
				h = _mm_max_epi16(h, _mm_subs_epi16(t, aim2));
				// C(i,j) = max{ H(i-1,j-1) - r - d(i+1), C(i-1,j) }
				v = _mm_load_si128(C + j);
				t = _mm_subs_epi16(u, dip1);
				t = _mm_max_epi16(t, v);
				_mm_store_si128(C + j, t);
				h = _mm_max_epi16(h, _mm_subs_epi16(t, aim1));
				// H(i-1,j-1)-f and H(i-2,j-1)-f
				t = _mm_subs_epi16(_mm_load_si128(H1 + j), fs);
				h = _mm_max_epi16(h, t);
				t = _mm_subs_epi16(_mm_load_si128(H2 + j), fs);
				h = _mm_max_epi16(h, t);
				// H(i-1,j)-f and H(i-2,j)-f
				t = _mm_subs_epi16(_mm_load_si128(H1 + j - 1), fs);
				h = _mm_max_epi16(h, t);
				t = _mm_subs_epi16(_mm_load_si128(H2 + j - 1), fs);
				h = _mm_max_epi16(h, t);
				// save H
				max = _mm_max_epi16(max, h);
				_mm_store_si128(H + j, h);
				last_h = h;
			}
			I = _mm_max_epi16(_mm_subs_epi16(last_h, goe), _mm_subs_epi16(I, ge));
			for (k = 0; k < vsize; ++k) { // lazy-F loop
				I = _mm_insert_epi16(_mm_slli_si128(I, sizeof(ns_int_t)), neg_inf, 0);
				for (j = 0; j < slen; ++j) {
					__m128i h;
					h = _mm_load_si128(H + j);
					h = _mm_max_epi16(h, I);
					max = _mm_max_epi16(max, h);
					_mm_store_si128(H + j, h);
					h = _mm_subs_epi16(h, goe);
					I = _mm_subs_epi16(I, ge);
					if (ns_le_epi16(I, h)) break;
				}
				if (j < slen) break;
			}
			tmp_sc = ns_max_8(max);
			end_sc = *((ns_int_t*)&H[(al-1)%slen] + (al-1)/slen) + opt->end_bonus;
			tmp_sc = tmp_sc > end_sc? tmp_sc : end_sc;
			tmp_sc_log = tmp_sc - (i - pen_len < 2? 0 : (int32_t)(opt->ie_coef * ns_log2(i - pen_len) + .5f));
			if (tmp_sc_log > max_sc_log) {
				max_sc = tmp_sc, max_sc_log = tmp_sc_log, max_i = i;
				memcpy(&Hmax[-1], &H[-1], (slen + 1) * 16);
			}
			tmp = H3, H3 = H2, H2 = H1, H1 = H, H = tmp;
			tmp = D3, D3 = D2, D2 = D1, D1 = D, D = tmp;
			if (max_sc_log - tmp_sc_log > opt->xdrop) break;
		}
		if (is_ext) {
			for (j = 0; j < al; ++j) {
				int32_t sc = *((ns_int_t*)&Hmax[j%slen] + j/slen);
				if (j == al - 1) sc += opt->end_bonus;
				if (sc == max_sc) break;
			}
			assert(j < al);
			r->nt_len = max_i + 1, r->aa_len = j + 1, r->score = max_sc;
		}
	} else {
		for (i = 2; i < nl; ++i) {
			__m128i *tbi = tb + i * slen;
			NS_GEN_INIT2(epi16)
			for (j = 0; j < slen; ++j) {
				__m128i h, t, u, v, y, z;
				// H(i-3,j-1) + s(i,j)
				y = _mm_setzero_si128();
				z = _mm_setzero_si128();
				u = _mm_load_si128(H3 + j - 1);
				v = _mm_load_si128(S + j);
				h = _mm_adds_epi16(u, v);
				// I(i,j) = max{ H(i,j-1) - q, I(i,j-1) } - e
				t = _mm_subs_epi16(last_h, go);
				z = _mm_or_si128(z, _mm_and_si128(_mm_cmpgt_epi16(I, t), _mm_set1_epi16(1<<4)));
				t = _mm_max_epi16(t, I);
				I = _mm_subs_epi16(t, ge);
				y = ns_select(_mm_cmpgt_epi16(I, h), _mm_set1_epi16(1), y);
				h = _mm_max_epi16(h, I);
				// D(i,j) = max{ H(i-3,j) - q, D(i-3,j) } - e
				u = _mm_subs_epi16(_mm_load_si128(H3 + j), go);
				v = _mm_load_si128(D3 + j);
				z = _mm_or_si128(z, _mm_and_si128(_mm_cmpgt_epi16(v, u), _mm_set1_epi16(1<<5)));
				t = _mm_max_epi16(u, v);
				t = _mm_subs_epi16(t, gei);
				_mm_store_si128(D + j, t);
				y = ns_select(_mm_cmpgt_epi16(t, h), _mm_set1_epi16(2), y);
				h = _mm_max_epi16(h, t);
				// A(i,j) = max{ H(i-1,j)   - r - d(i-1), A(i-1,j) }
				u = _mm_subs_epi16(_mm_load_si128(H1 + j), io);
				v = _mm_load_si128(A + j);
				t = _mm_subs_epi16(u, dim1);
				z = _mm_or_si128(z, _mm_and_si128(_mm_cmpgt_epi16(v, t), _mm_set1_epi16(1<<6)));
				t = _mm_max_epi16(t, v);
				_mm_store_si128(A + j, t);
				t = _mm_subs_epi16(t, ai);
				y = ns_select(_mm_cmpgt_epi16(t, h), _mm_set1_epi16(3), y);
				h = _mm_max_epi16(h, t);
				// B(i,j) = max{ H(i-1,j-1) - r - d(i),   B(i-1,j) }
				u = _mm_subs_epi16(_mm_load_si128(H1 + j - 1), io);
				v = _mm_load_si128(B + j);
				t = _mm_subs_epi16(u, di);
				z = _mm_or_si128(z, _mm_and_si128(_mm_cmpgt_epi16(v, t), _mm_set1_epi16(1<<7)));
				t = _mm_max_epi16(t, v);
				_mm_store_si128(B + j, t);
				t = _mm_subs_epi16(t, aim2);
				y = ns_select(_mm_cmpgt_epi16(t, h), _mm_set1_epi16(4), y);
				h = _mm_max_epi16(h, t);
				// C(i,j) = max{ H(i-1,j-1) - r - d(i+1), C(i-1,j) }
				v = _mm_load_si128(C + j);
				t = _mm_subs_epi16(u, dip1);
				z = _mm_or_si128(z, _mm_and_si128(_mm_cmpgt_epi16(v, t), _mm_set1_epi16(1<<8)));
				t = _mm_max_epi16(t, v);
				_mm_store_si128(C + j, t);
				t = _mm_subs_epi16(t, aim1);
				y = ns_select(_mm_cmpgt_epi16(t, h), _mm_set1_epi16(5), y);
				h = _mm_max_epi16(h, t);
				// H(i-1,j-1)-f and H(i-2,j-1)-f
				t = _mm_subs_epi16(_mm_load_si128(H1 + j), fs);
				y = ns_select(_mm_cmpgt_epi16(t, h), _mm_set1_epi16(6), y);
				h = _mm_max_epi16(h, t);
				t = _mm_subs_epi16(_mm_load_si128(H2 + j), fs);
				y = ns_select(_mm_cmpgt_epi16(t, h), _mm_set1_epi16(7), y);
				h = _mm_max_epi16(h, t);
				// H(i-1,j)-f and H(i-2,j)-f
				t = _mm_subs_epi16(_mm_load_si128(H1 + j - 1), fs);
				y = ns_select(_mm_cmpgt_epi16(t, h), _mm_set1_epi16(8), y);
				h = _mm_max_epi16(h, t);
				t = _mm_subs_epi16(_mm_load_si128(H2 + j - 1), fs);
				y = ns_select(_mm_cmpgt_epi16(t, h), _mm_set1_epi16(9), y);
				h = _mm_max_epi16(h, t);
				// save H and traceback
				z = _mm_or_si128(z, y);
				_mm_store_si128(tbi + j, z);
				_mm_store_si128(H + j, h);
				last_h = h;
			}
			I = _mm_max_epi16(_mm_subs_epi16(last_h, goe), _mm_subs_epi16(I, ge));
			for (k = 0; k < vsize; ++k) { // lazy-F loop
				I = _mm_insert_epi16(_mm_slli_si128(I, sizeof(ns_int_t)), neg_inf, 0);
				for (j = 0; j < slen; ++j) {
					__m128i h, z;
					z = _mm_load_si128(tbi + j);
					h = _mm_load_si128(H + j);
					z = _mm_or_si128(z, _mm_and_si128(_mm_cmpgt_epi16(I, h), _mm_set1_epi16(1<<9)));
					h = _mm_max_epi16(h, I);
					_mm_store_si128(tbi + j, z);
					_mm_store_si128(H + j, h);
					h = _mm_subs_epi16(h, goe);
					I = _mm_subs_epi16(I, ge);
					if (ns_le_epi16(I, h)) break;
				}
				if (j < slen) break;
			}
			//printf("[%d:%d]\t", i, k); for (j = 0; j < al; ++j) printf("%d\t", *((ns_int_t*)&H[0] + j)); putchar('\n');
			tmp = H3, H3 = H2, H2 = H1, H1 = H, H = tmp;
			tmp = D3, D3 = D2, D2 = D1, D1 = D, D = tmp;
		}
	}
	if (!is_ext) r->score = *((ns_int_t*)&H1[(al-1)%slen] + (al-1)/slen);
	kfree(km, mem_H);
	kfree(km, mem_ap);
	kfree(km, nas);
	if (tb) {
		ns_backtrack(km, vsize, tb, nl, al, &r->cigar, &r->n_cigar, &r->m_cigar);
		kfree(km, mem_tb);
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1d8, %rsp            # imm = 0x1D8
movq %r9, %r12
movl %r8d, %r14d
movq %rdi, %r15
movq 0x218(%rsp), %rdi
movq 0x210(%rsp), %rax
leal 0x7(%r14), %r8d
leal 0xe(%r14), %r9d
testl %r8d, %r8d
cmovnsl %r8d, %r9d
movl (%r12), %r8d
sarl $0x3, %r9d
movq %r9, (%rsp)
movl $0x0, (%rdi)
movl %edx, 0x8(%rdi)
movl %r14d, 0xc(%rdi)
movq %rdi, 0xb8(%rsp)
movl $0x80000000, 0x10(%rdi) # imm = 0x80000000
leaq 0x148(%rsp), %r10
movl %r8d, 0x2c(%rsp)
testb $0x2, %r8b
movl %edx, 0x14(%rsp)
leaq 0x108(%rsp), %r11
leaq 0x150(%rsp), %rbx
movq %r15, %rdi
movl %r14d, %r8d
movq %r12, %r9
jne 0x87f6
pushq %r10
pushq %r11
pushq %rbx
pushq %rax
callq 0x9db0
jmp 0x8801
pushq %r10
pushq %r11
pushq %rbx
pushq %rax
callq 0x9a01
addq $0x20, %rsp
movq %rax, 0x98(%rsp)
movslq 0x1c(%r12), %rsi
movslq (%rsp), %rbp
imulq %rbp, %rsi
shlq $0x4, %rsi
addq $0x10, %rsi
movq %r15, 0xc8(%rsp)
movq %r15, %rdi
callq 0x80a1
movq %rax, 0x170(%rsp)
addq $0xf, %rax
andq $-0x10, %rax
movq %rax, 0xf0(%rsp)
movq %r12, 0x20(%rsp)
movslq 0x1c(%r12), %rax
testq %rax, %rax
jle 0x88ee
movq (%rsp), %r8
leal (,%r8,8), %ecx
movq 0x20(%rsp), %rdx
movq 0x40(%rdx), %rdx
movl %r8d, %esi
cmpl $0x2, %r8d
movl $0x1, %edi
cmovgel %r8d, %edi
xorl %r8d, %r8d
movq 0xf0(%rsp), %r9
testl %r14d, %r14d
jle 0x88e6
movq %r8, %r10
imulq %rax, %r10
addq %rdx, %r10
xorl %r11d, %r11d
cmpl %r11d, %ecx
jle 0x88de
movq 0x150(%rsp), %rbx
addq %r11, %rbx
xorl %r15d, %r15d
leal (%r11,%r15), %r13d
movw $0x8000, %r12w          # imm = 0x8000
cmpl %r14d, %r13d
jge 0x88ca
movzbl (%rbx,%r15), %r12d
movsbl (%r10,%r12), %r12d
movw %r12w, (%r9)
addq $0x2, %r9
addq %rsi, %r15
leal (%r11,%r15), %r12d
cmpl %r12d, %ecx
jg 0x88b2
incq %r11
cmpq %rdi, %r11
jne 0x889f
incq %r8
cmpq %rax, %r8
jne 0x888d
movq 0x20(%rsp), %r13
movl 0x4(%r13), %ecx
movq %rcx, 0x58(%rsp)
movl 0x8(%r13), %eax
movq %rax, 0x30(%rsp)
addl %eax, %ecx
movl %ecx, 0x40(%rsp)
movss 0xc(%r13), %xmm0
movaps %xmm0, 0x60(%rsp)
movss 0x10(%r13), %xmm0
movaps %xmm0, 0x80(%rsp)
movq (%rsp), %rbx
leal 0x1(%rbx), %r12d
leal (%r12,%r12,4), %eax
leal (,%rbx,8), %r15d
subl %ebx, %r15d
addl %eax, %r15d
movslq %r15d, %rsi
shlq $0x4, %rsi
addq $0x10, %rsi
movq 0xc8(%rsp), %rdi
callq 0x80a1
movq %rax, 0x168(%rsp)
leaq 0xf(%rax), %r11
andq $-0x10, %r11
leal 0x2(,%rbx,2), %eax
cltq
shlq $0x4, %rax
movq %rax, 0x120(%rsp)
movq %r12, 0x18(%rsp)
leal (%r12,%r12,2), %eax
cltq
shlq $0x4, %rax
movq %rax, 0x130(%rsp)
leal 0x4(,%rbx,4), %eax
movslq %eax, %rdx
shlq $0x4, %rdx
leaq (%r11,%rdx), %rax
movq %rbp, %rcx
shlq $0x4, %rcx
movq %rax, 0x188(%rsp)
addq %rcx, %rax
addq $0x10, %rax
movq %rax, 0xa0(%rsp)
addq %rcx, %rax
movd 0x58(%rsp), %xmm0
movq %rax, %rbx
addq %rcx, %rax
movd 0x30(%rsp), %xmm1
movq %rax, 0x58(%rsp)
movq %rcx, 0x50(%rsp)
leaq (%rax,%rcx), %r9
movd 0x40(%rsp), %xmm2
xorl %eax, %eax
testb $0x6, 0x2c(%rsp)
movq %rdx, 0x8(%rsp)
jne 0x8a80
movl (%r13), %ecx
movl $0x0, %edx
andl $0x1, %ecx
movq 0xc8(%rsp), %rdi
movl 0x14(%rsp), %r8d
movq %r13, %r10
je 0x8a8a
movq (%rsp), %rax
imull %r8d, %eax
movslq %eax, %rsi
shlq $0x4, %rsi
addq $0x10, %rsi
movq %r9, %r12
movq %r11, %r13
movdqa %xmm0, 0x40(%rsp)
movdqa %xmm1, 0x30(%rsp)
movdqa %xmm2, 0x110(%rsp)
callq 0x80a1
movdqa 0x110(%rsp), %xmm2
movdqa 0x30(%rsp), %xmm1
movdqa 0x40(%rsp), %xmm0
movq %r13, %r11
movq %r12, %r9
movq 0x20(%rsp), %r10
movl 0x14(%rsp), %r8d
movq %rax, %rdx
addq $0xf, %rdx
andq $-0x10, %rdx
jmp 0x8a8a
xorl %edx, %edx
movl 0x14(%rsp), %r8d
movq %r13, %r10
movq %rdx, 0xc0(%rsp)
movq %rax, 0x160(%rsp)
movq 0x50(%rsp), %rsi
leaq (%r9,%rsi), %rax
movq %rax, 0x100(%rsp)
pshuflw $0x0, %xmm0, %xmm0      # xmm0 = xmm0[0,0,0,0,4,5,6,7]
pshuflw $0x0, %xmm1, %xmm1      # xmm1 = xmm1[0,0,0,0,4,5,6,7]
pshuflw $0x0, %xmm2, %xmm2      # xmm2 = xmm2[0,0,0,0,4,5,6,7]
pshuflw $0x0, 0x60(%rsp), %xmm3 # xmm3 = mem[0,0,0,0,4,5,6,7]
pshuflw $0x0, 0x80(%rsp), %xmm4 # xmm4 = mem[0,0,0,0,4,5,6,7]
movq 0x120(%rsp), %r12
leaq (%r11,%r12), %rcx
movq 0x130(%rsp), %rax
leaq (%r11,%rax), %rdx
leaq (%r11,%rsi), %rax
addq $0x10, %rax
testl %r15d, %r15d
jle 0x8b1d
movq (%rsp), %rsi
leal (%rsi,%rsi,2), %esi
leal 0x4(,%rsi,4), %esi
shlq $0x4, %rsi
orq $0x10, %rsi
xorl %edi, %edi
movaps 0xaf51(%rip), %xmm5     # 0x13a60
movaps %xmm5, (%r11,%rdi)
addq $0x10, %rdi
cmpq %rdi, %rsi
jne 0x8b0f
movq 0x100(%rsp), %rsi
movq 0x50(%rsp), %rdi
addq %rdi, %rsi
movq %rsi, 0xf8(%rsp)
leaq 0x10(%r11), %rsi
movq %rsi, 0x30(%rsp)
pshufd $0x0, %xmm0, %xmm5      # xmm5 = xmm0[0,0,0,0]
pshufd $0x0, %xmm1, %xmm14     # xmm14 = xmm1[0,0,0,0]
pshufd $0x0, %xmm2, %xmm15     # xmm15 = xmm2[0,0,0,0]
pshufd $0x0, %xmm3, %xmm12     # xmm12 = xmm3[0,0,0,0]
pshufd $0x0, %xmm4, %xmm2      # xmm2 = xmm4[0,0,0,0]
leaq 0x20(%r11,%rdi), %r13
addq %r11, %r12
addq $0x10, %r12
movq 0x130(%rsp), %rsi
leaq (%r11,%rsi), %rdi
addq $0x10, %rdi
xorl %esi, %esi
movw %si, (%rdx)
xorl %edx, %edx
subw 0x10(%r10), %dx
movw %dx, (%rcx)
subw 0x10(%r10), %si
movw %si, (%rax)
cmpq $0x0, 0xc0(%rsp)
movdqa %xmm5, 0x1c0(%rsp)
movdqa %xmm14, 0x1b0(%rsp)
movdqa %xmm15, 0x1a0(%rsp)
movdqa %xmm12, 0x130(%rsp)
movdqa %xmm2, 0x110(%rsp)
je 0x9258
cmpl $0x3, %r8d
jl 0x9932
movl %r8d, %edx
movq %r9, 0x18(%rsp)
movq 0xf8(%rsp), %rax
movq 0x50(%rsp), %rcx
addq %rax, %rcx
movq 0x108(%rsp), %rax
movq %rax, 0xe8(%rsp)
movq 0x148(%rsp), %rax
movq %rax, 0xe0(%rsp)
movq (%rsp), %rsi
leal -0x1(%rsi), %eax
cltq
testl %r14d, %r14d
setg %r8b
cmpl $0x2, %esi
movl $0x1, %r9d
cmovgel %esi, %r9d
movl %edx, %edx
movq %rdx, 0xd0(%rsp)
movq %rbp, %r11
shlq $0x5, %r11
addq 0xc0(%rsp), %r11
shlq $0x4, %r9
movl $0x2, %r10d
shlq $0x4, %rax
movq %rax, 0x90(%rsp)
movdqa 0xae0e(%rip), %xmm7     # 0x13a70
movdqa 0xaeb5(%rip), %xmm12    # 0x13b20
movq 0xa0(%rsp), %rax
movq 0x30(%rsp), %rdx
movb %r8b, 0xd8(%rsp)
movdqa 0x110(%rsp), %xmm15
movq 0x58(%rsp), %rsi
movq %rsi, 0x20(%rsp)
movq %rbx, 0x58(%rsp)
movq %rax, %r15
movq %r12, %rax
movq %r13, %r12
movq %rdx, %r13
movq 0x98(%rsp), %rdx
movzbl (%rdx,%r10), %edx
movdqa %xmm2, %xmm8
cmpl $0x14, %edx
je 0x8cc1
movdqa %xmm14, %xmm8
movq 0xe8(%rsp), %r8
movsbl -0x1(%r8,%r10), %esi
movsbl (%r8,%r10), %ebx
movl %ebx, 0x60(%rsp)
movsbl 0x1(%r8,%r10), %r8d
movl %r8d, 0x80(%rsp)
movq 0xe0(%rsp), %r8
movsbl (%r8,%r10), %ebx
movl %ebx, 0x40(%rsp)
movsbl -0x1(%r8,%r10), %ebx
movl %ebx, 0x30(%rsp)
movsbl -0x2(%r8,%r10), %r8d
movl %r8d, 0xa0(%rsp)
movq %r10, 0x8(%rsp)
cmpq $0x3, %r10
jb 0x8d6c
movq 0x90(%rsp), %r8
movdqa (%rdi,%r8), %xmm0
pslldq $0x2, %xmm0             # xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
movl $0x8000, %r10d          # imm = 0x8000
pinsrw $0x0, %r10d, %xmm0
movdqa %xmm0, -0x10(%rdi)
movdqa (%rax,%r8), %xmm0
pslldq $0x2, %xmm0             # xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
pinsrw $0x0, %r10d, %xmm0
movdqa %xmm0, -0x10(%rax)
movdqa (%r12,%r8), %xmm0
pslldq $0x2, %xmm0             # xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
pinsrw $0x0, %r10d, %xmm0
movdqa %xmm0, -0x10(%r12)
movdqa 0xacec(%rip), %xmm6     # 0x13a60
movdqa %xmm6, %xmm13
testl %r14d, %r14d
movq 0x100(%rsp), %rbx
movq 0xf8(%rsp), %r10
movdqa 0x1c0(%rsp), %xmm11
movdqa 0x1b0(%rsp), %xmm9
movq 0x18(%rsp), %r8
movdqa 0xad22(%rip), %xmm14    # 0x13ad0
jle 0x914c
imull (%rsp), %edx
movslq %edx, %rdx
shlq $0x4, %rdx
addq 0xf0(%rsp), %rdx
movd %esi, %xmm0
pshuflw $0x0, %xmm0, %xmm0      # xmm0 = xmm0[0,0,0,0,4,5,6,7]
pshufd $0x0, %xmm0, %xmm0      # xmm0 = xmm0[0,0,0,0]
movdqa %xmm0, 0x120(%rsp)
movd 0x60(%rsp), %xmm0
pshuflw $0x0, %xmm0, %xmm0      # xmm0 = xmm0[0,0,0,0,4,5,6,7]
pshufd $0x0, %xmm0, %xmm0      # xmm0 = xmm0[0,0,0,0]
movdqa %xmm0, 0x60(%rsp)
movd 0x80(%rsp), %xmm1
pshuflw $0x0, %xmm1, %xmm1      # xmm1 = xmm1[0,0,0,0,4,5,6,7]
pshufd $0x0, %xmm1, %xmm0      # xmm0 = xmm1[0,0,0,0]
movdqa %xmm0, 0x80(%rsp)
movd 0x40(%rsp), %xmm2
pshuflw $0x0, %xmm2, %xmm2      # xmm2 = xmm2[0,0,0,0,4,5,6,7]
pshufd $0x0, %xmm2, %xmm0      # xmm0 = xmm2[0,0,0,0]
movdqa %xmm0, 0x40(%rsp)
movd 0x30(%rsp), %xmm3
pshuflw $0x0, %xmm3, %xmm3      # xmm3 = xmm3[0,0,0,0,4,5,6,7]
pshufd $0x0, %xmm3, %xmm0      # xmm0 = xmm3[0,0,0,0]
movdqa %xmm0, 0x30(%rsp)
movd 0xa0(%rsp), %xmm4
pshuflw $0x0, %xmm4, %xmm4      # xmm4 = xmm4[0,0,0,0,4,5,6,7]
pshufd $0x0, %xmm4, %xmm0      # xmm0 = xmm4[0,0,0,0]
movdqa %xmm0, 0xa0(%rsp)
xorl %esi, %esi
movdqa 0xabfd(%rip), %xmm13    # 0x13a60
movdqa %xmm13, %xmm6
movdqa -0x10(%rdi,%rsi), %xmm5
movdqa %xmm14, %xmm0
movdqa (%rdi,%rsi), %xmm14
paddsw (%rdx,%rsi), %xmm5
psubsw %xmm11, %xmm6
movdqa %xmm13, %xmm10
pcmpgtw %xmm6, %xmm10
pand %xmm7, %xmm10
pmaxsw %xmm6, %xmm13
psubsw %xmm9, %xmm13
movdqa %xmm11, %xmm4
movdqa %xmm13, %xmm11
pcmpgtw %xmm5, %xmm11
pmaxsw %xmm13, %xmm5
psubsw %xmm4, %xmm14
movdqa %xmm9, %xmm3
movdqa (%r8,%rsi), %xmm9
movdqa %xmm7, %xmm1
movdqa %xmm14, %xmm7
pmaxsw %xmm9, %xmm7
psubsw %xmm8, %xmm7
movdqa %xmm7, %xmm6
pcmpgtw %xmm5, %xmm6
movdqa %xmm8, %xmm2
movdqa %xmm6, %xmm8
pandn %xmm11, %xmm8
pcmpgtw %xmm14, %xmm9
pand 0xab88(%rip), %xmm9     # 0x13a80
por %xmm10, %xmm9
movdqa %xmm7, (%r15,%rsi)
pand 0xab85(%rip), %xmm6     # 0x13a90
psrlw $0xf, %xmm8
por %xmm6, %xmm8
pmaxsw %xmm5, %xmm7
movdqa (%r12,%rsi), %xmm5
movdqa 0x130(%rsp), %xmm11
psubsw %xmm11, %xmm5
psubsw 0x120(%rsp), %xmm5
movdqa (%rbx,%rsi), %xmm6
movdqa %xmm6, %xmm10
pcmpgtw %xmm5, %xmm10
pand 0xab50(%rip), %xmm10    # 0x13aa0
por %xmm9, %xmm10
pmaxsw %xmm6, %xmm5
movdqa %xmm5, (%rbx,%rsi)
psubsw 0x40(%rsp), %xmm5
movdqa %xmm5, %xmm9
pcmpgtw %xmm7, %xmm9
movdqa %xmm9, %xmm6
pandn %xmm8, %xmm6
psrlw $0xe, %xmm9
por %xmm6, %xmm9
pmaxsw %xmm7, %xmm5
movdqa -0x10(%r12,%rsi), %xmm8
psubsw %xmm11, %xmm8
movdqa (%r10,%rsi), %xmm7
movdqa %xmm8, %xmm6
psubsw 0x60(%rsp), %xmm6
movdqa %xmm7, %xmm11
pcmpgtw %xmm6, %xmm11
pmaxsw %xmm7, %xmm6
movdqa %xmm6, (%r10,%rsi)
psubsw 0xa0(%rsp), %xmm6
movdqa %xmm6, %xmm7
pcmpgtw %xmm5, %xmm7
movdqa %xmm7, %xmm14
pandn %xmm9, %xmm14
pand 0xaad4(%rip), %xmm11    # 0x13ab0
pand 0xaadc(%rip), %xmm7     # 0x13ac0
por %xmm14, %xmm7
movdqa %xmm0, %xmm14
pmaxsw %xmm5, %xmm6
movdqa (%rcx,%rsi), %xmm9
psubsw 0x80(%rsp), %xmm8
movdqa %xmm9, %xmm5
pcmpgtw %xmm8, %xmm5
pand %xmm0, %xmm5
por %xmm11, %xmm5
por %xmm10, %xmm5
pmaxsw %xmm9, %xmm8
movdqa %xmm8, (%rcx,%rsi)
psubsw 0x30(%rsp), %xmm8
movdqa %xmm8, %xmm9
pcmpgtw %xmm6, %xmm9
movdqa %xmm9, %xmm10
pandn %xmm7, %xmm10
pand 0xaa97(%rip), %xmm9     # 0x13ae0
por %xmm10, %xmm9
pmaxsw %xmm6, %xmm8
movdqa (%r12,%rsi), %xmm6
psubsw %xmm15, %xmm6
movdqa %xmm6, %xmm7
pcmpgtw %xmm8, %xmm7
movdqa %xmm7, %xmm10
pandn %xmm9, %xmm10
pand 0xaa77(%rip), %xmm7     # 0x13af0
por %xmm10, %xmm7
pmaxsw %xmm8, %xmm6
movdqa (%rax,%rsi), %xmm8
psubsw %xmm15, %xmm8
movdqa %xmm8, %xmm9
pcmpgtw %xmm6, %xmm9
movdqa %xmm9, %xmm10
pandn %xmm7, %xmm10
movdqa -0x10(%r12,%rsi), %xmm7
psrlw $0xd, %xmm9
por %xmm10, %xmm9
pmaxsw %xmm6, %xmm8
psubsw %xmm15, %xmm7
movdqa %xmm7, %xmm10
pcmpgtw %xmm8, %xmm10
movdqa %xmm10, %xmm11
pandn %xmm9, %xmm11
movdqa -0x10(%rax,%rsi), %xmm6
pand 0xaa1f(%rip), %xmm10    # 0x13b00
por %xmm11, %xmm10
movdqa %xmm4, %xmm11
pmaxsw %xmm8, %xmm7
psubsw %xmm15, %xmm6
movdqa %xmm6, %xmm8
pcmpgtw %xmm7, %xmm8
movdqa %xmm8, %xmm9
pandn %xmm10, %xmm9
movdqa 0xa9ff(%rip), %xmm0     # 0x13b10
pand %xmm0, %xmm8
por %xmm9, %xmm8
movdqa %xmm3, %xmm9
por %xmm5, %xmm8
pmaxsw %xmm7, %xmm6
movdqa %xmm1, %xmm7
movdqa %xmm8, (%r11,%rsi)
movdqa %xmm2, %xmm8
movdqa %xmm6, (%r13,%rsi)
addq $0x10, %rsi
cmpq %rsi, %r9
jne 0x8e68
movq %r15, 0x80(%rsp)
incq 0x8(%rsp)
movdqa 0x1a0(%rsp), %xmm2
psubsw %xmm2, %xmm6
psubsw %xmm9, %xmm13
pmaxsw %xmm6, %xmm13
xorl %edx, %edx
movdqa %xmm9, %xmm14
movb 0xd8(%rsp), %r8b
pslldq $0x2, %xmm13            # xmm13 = zero,zero,xmm13[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
movl $0x8000, %esi           # imm = 0x8000
pinsrw $0x0, %esi, %xmm13
testl %r14d, %r14d
jle 0x91fe
movl $0x1, %ebx
xorl %r10d, %r10d
movl %r8d, %esi
movdqa (%r13,%r10), %xmm0
movdqa %xmm13, %xmm1
pcmpgtw %xmm0, %xmm1
pand %xmm12, %xmm1
por (%r11,%r10), %xmm1
pmaxsw %xmm13, %xmm0
movdqa %xmm1, (%r11,%r10)
movdqa %xmm0, (%r13,%r10)
psubsw %xmm2, %xmm0
psubsw %xmm14, %xmm13
movdqa %xmm13, %xmm1
pcmpgtw %xmm0, %xmm1
pmovmskb %xmm1, %r15d
testl %r15d, %r15d
je 0x9201
cmpq %rbp, %rbx
setl %sil
addq $0x10, %r10
incq %rbx
cmpq %r10, %r9
jne 0x91a0
jmp 0x9201
movl %r8d, %esi
testb $0x1, %sil
jne 0x9215
leal 0x1(%rdx), %esi
cmpl $0x7, %edx
movl %esi, %edx
jb 0x917f
addq 0x50(%rsp), %r11
movq %rdi, %rdx
movq %rax, %rdi
movq 0x18(%rsp), %rax
movq 0x20(%rsp), %rsi
movq %rsi, 0x18(%rsp)
movq 0x8(%rsp), %r10
cmpq 0xd0(%rsp), %r10
movq 0x80(%rsp), %rbx
movdqa 0x110(%rsp), %xmm2
jne 0x8c8a
jmp 0x9932
movq %rbx, 0x80(%rsp)
movq 0x8(%rsp), %rax
addq %r11, %rax
addq $0x10, %rax
movq %rax, 0x158(%rsp)
leal (%r14,%r14,2), %eax
negl %eax
movq %rax, 0xe8(%rsp)
movq 0x108(%rsp), %rax
movq %rax, 0xe0(%rsp)
movq 0x148(%rsp), %rax
movq %rax, 0xd8(%rsp)
movq (%rsp), %rcx
leal -0x1(%rcx), %eax
movslq %eax, %rdx
testl %r14d, %r14d
setg %al
movb %al, 0x120(%rsp)
leal -0x1(%r14), %esi
movl %esi, 0xd0(%rsp)
movq 0x18(%rsp), %rax
shll $0x4, %eax
movslq %eax, %rsi
movq %rsi, 0x178(%rsp)
cmpl $0x2, %ecx
movl $0x1, %ebx
cmovgel %ecx, %ebx
cmpl $0x3, %r8d
movl $0x2, %esi
cmovgel %r8d, %esi
movq %rsi, 0x50(%rsp)
imulq $0x70, %rbp, %rax
leal (,%rcx,4), %ecx
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rax, %rcx
addq %rcx, %r11
addq $0x50, %r11
movq %rbx, %rax
shlq $0x4, %rax
negq %rbx
movl $0x80000000, 0x8(%rsp)  # imm = 0x80000000
movl $0xffffffff, 0x7c(%rsp) # imm = 0xFFFFFFFF
shlq $0x4, %rdx
movq %rdx, 0x180(%rsp)
movl $0x2, %edx
movl $0x8000, %r15d          # imm = 0x8000
movl $0x80000000, 0x90(%rsp) # imm = 0x80000000
movq %r11, 0x198(%rsp)
movq %rax, 0x190(%rsp)
movq 0x30(%rsp), %rsi
movq %rdi, 0x30(%rsp)
cmpq 0x50(%rsp), %rdx
je 0x988d
movq %r9, 0x18(%rsp)
movq 0x98(%rsp), %rax
movq %rdx, 0x40(%rsp)
movzbl (%rax,%rdx), %eax
cmpl $0x14, %eax
je 0x9391
movdqa %xmm14, %xmm2
movq 0xe0(%rsp), %rdi
movq 0x40(%rsp), %rdx
movsbl -0x1(%rdi,%rdx), %ecx
movsbl (%rdi,%rdx), %r11d
movsbl 0x1(%rdi,%rdx), %r10d
movq 0xd8(%rsp), %rdi
movsbl (%rdi,%rdx), %r9d
movsbl -0x1(%rdi,%rdx), %r8d
movsbl -0x2(%rdi,%rdx), %edi
cmpq $0x3, %rdx
jb 0x9453
movl %ecx, 0x60(%rsp)
movl %r11d, %ecx
movl %r10d, %r11d
movl %r9d, %r10d
movl %edi, %r9d
movl %r8d, %edi
movq %rsi, %r8
movq 0x30(%rsp), %rsi
movq 0x180(%rsp), %rdx
movdqa (%rsi,%rdx), %xmm0
pslldq $0x2, %xmm0             # xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
pinsrw $0x0, %r15d, %xmm0
movdqa %xmm0, -0x10(%rsi)
movq %r8, %rsi
movl %edi, %r8d
movl %r9d, %edi
movl %r10d, %r9d
movl %r11d, %r10d
movl %ecx, %r11d
movl 0x60(%rsp), %ecx
movdqa (%r12,%rdx), %xmm0
pslldq $0x2, %xmm0             # xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
pinsrw $0x0, %r15d, %xmm0
movdqa %xmm0, -0x10(%r12)
movdqa (%r13,%rdx), %xmm0
movq 0x40(%rsp), %rdx
pslldq $0x2, %xmm0             # xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
pinsrw $0x0, %r15d, %xmm0
movdqa %xmm0, -0x10(%r13)
movdqa 0xa605(%rip), %xmm0     # 0x13a60
movdqa %xmm0, %xmm9
movdqa %xmm0, %xmm1
testl %r14d, %r14d
jle 0x9651
imull (%rsp), %eax
cltq
shlq $0x4, %rax
addq 0xf0(%rsp), %rax
movd %ecx, %xmm0
pshuflw $0x0, %xmm0, %xmm0      # xmm0 = xmm0[0,0,0,0,4,5,6,7]
pshufd $0x0, %xmm0, %xmm0      # xmm0 = xmm0[0,0,0,0]
movdqa %xmm0, 0x60(%rsp)
movd %r11d, %xmm0
pshuflw $0x0, %xmm0, %xmm0      # xmm0 = xmm0[0,0,0,0,4,5,6,7]
pshufd $0x0, %xmm0, %xmm4      # xmm4 = xmm0[0,0,0,0]
movd %r10d, %xmm0
pshuflw $0x0, %xmm0, %xmm0      # xmm0 = xmm0[0,0,0,0,4,5,6,7]
pshufd $0x0, %xmm0, %xmm3      # xmm3 = xmm0[0,0,0,0]
movd %r9d, %xmm0
pshuflw $0x0, %xmm0, %xmm0      # xmm0 = xmm0[0,0,0,0,4,5,6,7]
pshufd $0x0, %xmm0, %xmm6      # xmm6 = xmm0[0,0,0,0]
movd %r8d, %xmm0
pshuflw $0x0, %xmm0, %xmm0      # xmm0 = xmm0[0,0,0,0,4,5,6,7]
pshufd $0x0, %xmm0, %xmm7      # xmm7 = xmm0[0,0,0,0]
movd %edi, %xmm0
pshuflw $0x0, %xmm0, %xmm0      # xmm0 = xmm0[0,0,0,0,4,5,6,7]
pshufd $0x0, %xmm0, %xmm8      # xmm8 = xmm0[0,0,0,0]
xorl %edx, %edx
movdqa 0xa577(%rip), %xmm9     # 0x13a60
movdqa %xmm9, %xmm0
movdqa %xmm9, %xmm1
movq 0x100(%rsp), %rcx
movq 0xf8(%rsp), %rdi
movdqa 0x110(%rsp), %xmm13
movq 0xa0(%rsp), %r9
movq 0x30(%rsp), %r10
movq 0x198(%rsp), %r11
movq 0x190(%rsp), %r15
movq 0x18(%rsp), %r8
movdqa -0x10(%r10,%rdx), %xmm10
movdqa (%r10,%rdx), %xmm11
paddsw (%rax,%rdx), %xmm10
psubsw %xmm5, %xmm9
pmaxsw %xmm9, %xmm1
psubsw %xmm14, %xmm1
pmaxsw %xmm1, %xmm10
psubsw %xmm5, %xmm11
pmaxsw (%r8,%rdx), %xmm11
psubsw %xmm2, %xmm11
movdqa %xmm11, (%r9,%rdx)
pmaxsw %xmm10, %xmm11
movdqa (%r13,%rdx), %xmm9
psubsw %xmm12, %xmm9
psubsw 0x60(%rsp), %xmm9
pmaxsw (%rcx,%rdx), %xmm9
movdqa %xmm9, (%rcx,%rdx)
psubsw %xmm6, %xmm9
pmaxsw %xmm11, %xmm9
movdqa -0x10(%r13,%rdx), %xmm10
psubsw %xmm12, %xmm10
movdqa %xmm10, %xmm11
psubsw %xmm4, %xmm11
pmaxsw (%rdi,%rdx), %xmm11
movdqa %xmm11, (%rdi,%rdx)
psubsw %xmm8, %xmm11
psubsw %xmm3, %xmm10
pmaxsw (%r11,%rdx), %xmm10
movdqa %xmm10, (%r11,%rdx)
psubsw %xmm7, %xmm10
pmaxsw %xmm11, %xmm10
pmaxsw %xmm9, %xmm10
movdqa (%r13,%rdx), %xmm9
psubsw %xmm13, %xmm9
movdqa (%r12,%rdx), %xmm11
psubsw %xmm13, %xmm11
pmaxsw %xmm9, %xmm11
movdqa -0x10(%r13,%rdx), %xmm12
psubsw %xmm13, %xmm12
pmaxsw %xmm11, %xmm12
movdqa -0x10(%r12,%rdx), %xmm9
psubsw %xmm13, %xmm9
pmaxsw %xmm12, %xmm9
movdqa 0x130(%rsp), %xmm12
pmaxsw %xmm10, %xmm9
pmaxsw %xmm9, %xmm0
movdqa %xmm9, (%rsi,%rdx)
addq $0x10, %rdx
cmpq %rdx, %r15
jne 0x952f
movl $0x8000, %r15d          # imm = 0x8000
movq 0x40(%rsp), %rdx
leaq 0x1(%rdx), %r8
psubsw %xmm15, %xmm9
psubsw %xmm14, %xmm1
pmaxsw %xmm9, %xmm1
xorl %eax, %eax
movq 0x20(%rsp), %r10
pslldq $0x2, %xmm1             # xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
pinsrw $0x0, %r15d, %xmm1
testl %r14d, %r14d
jle 0x96d2
movl $0x1, %edi
movq %rsi, %r9
movb 0x120(%rsp), %dl
movdqa (%r9), %xmm2
pmaxsw %xmm1, %xmm2
pmaxsw %xmm2, %xmm0
movdqa %xmm2, (%r9)
psubsw %xmm15, %xmm2
psubsw %xmm14, %xmm1
movdqa %xmm1, %xmm3
pcmpgtw %xmm2, %xmm3
pmovmskb %xmm3, %ecx
testl %ecx, %ecx
je 0x96d9
cmpq %rbp, %rdi
setl %dl
addq $0x10, %r9
leaq (%rbx,%rdi), %rcx
incq %rcx
incq %rdi
cmpq $0x1, %rcx
jne 0x968a
jmp 0x96d9
movb 0x120(%rsp), %dl
testb $0x1, %dl
jne 0x96e8
leal 0x1(%rax), %ecx
cmpl $0x7, %eax
movl %ecx, %eax
jb 0x966b
movl 0xd0(%rsp), %eax
cltd
idivl (%rsp)
movdqa %xmm0, %xmm1
psrldq $0x8, %xmm1             # xmm1 = xmm1[8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero
pmaxsw %xmm0, %xmm1
movdqa %xmm1, %xmm0
psrldq $0x4, %xmm0             # xmm0 = xmm0[4,5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero
pmaxsw %xmm1, %xmm0
movdqa %xmm0, %xmm1
psrldq $0x2, %xmm1             # xmm1 = xmm1[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero
pmaxsw %xmm0, %xmm1
movd %xmm1, %ecx
movslq %edx, %rdx
shlq $0x4, %rdx
addq %rsi, %rdx
cltq
movswl (%rdx,%rax,2), %edi
addl 0x18(%r10), %edi
movswl %cx, %eax
cmpl %edi, %eax
cmovgl %eax, %edi
movq 0xe8(%rsp), %rax
movq 0x40(%rsp), %rdx
leal (%rax,%rdx), %ecx
xorl %eax, %eax
cmpl $0x2, %ecx
jl 0x97b0
xorps %xmm0, %xmm0
cvtsi2ss %ecx, %xmm0
movd %xmm0, %eax
movl %eax, %ecx
shrl $0x17, %ecx
addl $-0x80, %ecx
xorps %xmm0, %xmm0
cvtsi2ss %rcx, %xmm0
andl $0x7fffff, %eax         # imm = 0x7FFFFF
orl $0x3f800000, %eax       # imm = 0x3F800000
movd %eax, %xmm1
movdqa %xmm1, %xmm2
mulss 0xa48a(%rip), %xmm2     # 0x13c10
addss 0xa486(%rip), %xmm2     # 0x13c14
mulss %xmm1, %xmm2
addss 0xa47e(%rip), %xmm2     # 0x13c18
addss %xmm0, %xmm2
mulss 0x3c(%r10), %xmm2
addss 0xa470(%rip), %xmm2     # 0x13c1c
cvttss2si %xmm2, %eax
movl %edi, %r15d
subl %eax, %r15d
movl 0x8(%rsp), %eax
cmpl %eax, %r15d
jle 0x9830
movq %rsi, 0x60(%rsp)
movq 0x60(%rsp), %rax
leaq -0x10(%rax), %rsi
movl %edi, 0x90(%rsp)
movq 0x188(%rsp), %rdi
movq 0x178(%rsp), %rdx
movq %r8, 0x8(%rsp)
callq 0x21e0
movq 0x8(%rsp), %r8
movq 0x60(%rsp), %rsi
movq 0x20(%rsp), %r10
movdqa 0x130(%rsp), %xmm12
movdqa 0x1a0(%rsp), %xmm15
movdqa 0x1b0(%rsp), %xmm14
movdqa 0x1c0(%rsp), %xmm5
movq 0x40(%rsp), %rax
movl %eax, 0x7c(%rsp)
movl %r15d, %eax
movl %eax, 0x8(%rsp)
subl %r15d, %eax
movq %r8, %rdx
movq 0x58(%rsp), %r9
movq 0x80(%rsp), %rcx
movq %rcx, 0x58(%rsp)
movq 0xa0(%rsp), %rcx
movq %rcx, 0x80(%rsp)
movq 0x18(%rsp), %rcx
movq %rcx, 0xa0(%rsp)
movq %r12, %rdi
movq %r13, %r12
movq %rsi, %r13
cmpl 0x14(%r10), %eax
movdqa 0x110(%rsp), %xmm2
movl $0x8000, %r15d          # imm = 0x8000
jle 0x935c
jmp 0x9890
movq %r13, %rsi
testb $0x6, 0x2c(%rsp)
je 0x992f
movq %rsi, %r13
testl %r14d, %r14d
movq 0x158(%rsp), %rsi
movl 0x90(%rsp), %r9d
jle 0x98f5
movl %r14d, %edi
negl %edi
movl $0x1, %r8d
leal -0x1(%r8), %eax
xorl %edx, %edx
divl (%rsp)
shlq $0x4, %rdx
addq %rsi, %rdx
movswl (%rdx,%rax,2), %eax
movl %edi, %ecx
addl %r8d, %ecx
jne 0x98dd
addl 0x18(%r10), %eax
cmpl %r9d, %eax
je 0x9914
leal (%rdi,%r8), %eax
incl %eax
movl %r8d, %ecx
incl %ecx
movl %ecx, %r8d
cmpl $0x1, %eax
jne 0x98be
leaq 0xa34c(%rip), %rdi      # 0x13c48
leaq 0xa34c(%rip), %rsi      # 0x13c4f
leaq 0xa350(%rip), %rcx      # 0x13c5a
movl $0x1b9, %edx            # imm = 0x1B9
callq 0x2150
movl 0x7c(%rsp), %ecx
incl %ecx
movq 0xb8(%rsp), %rax
movl %ecx, 0x8(%rax)
movl %r8d, 0xc(%rax)
movl %r9d, 0x10(%rax)
jmp 0x9932
movq %rsi, %r13
testb $0x6, 0x2c(%rsp)
jne 0x995e
leal -0x1(%r14), %eax
cltd
idivl (%rsp)
movslq %edx, %rcx
shlq $0x4, %rcx
addq %rcx, %r13
cltq
movswl (%r13,%rax,2), %eax
movq 0xb8(%rsp), %rcx
movl %eax, 0x10(%rcx)
movq 0xc8(%rsp), %rbx
movq %rbx, %rdi
movq 0x168(%rsp), %rsi
callq 0x7fd6
movq %rbx, %rdi
movq 0x170(%rsp), %rsi
callq 0x7fd6
movq %rbx, %rdi
movq 0x98(%rsp), %rsi
callq 0x7fd6
movq 0xc0(%rsp), %rdx
testq %rdx, %rdx
je 0x99ef
movq 0xb8(%rsp), %r10
leaq 0x18(%r10), %r9
leaq 0x4(%r10), %rax
movq %rbx, %rdi
movl $0x8, %esi
movl 0x14(%rsp), %ecx
movl %r14d, %r8d
pushq %rax
pushq %r10
callq 0xa0a0
addq $0x10, %rsp
movq %rbx, %rdi
movq 0x160(%rsp), %rsi
addq $0x1d8, %rsp            # imm = 0x1D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x7fd6
addq $0x1d8, %rsp            # imm = 0x1D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq