// File: /workspace/github_c_makefile_star2_O3/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, %r13
movl %r8d, %r14d
movq %rdi, %r15
movq 0x218(%rsp), %rdi
movq 0x210(%rsp), %rax
leal 0x7(%r14), %r8d
leal 0xe(%r14), %r12d
testl %r8d, %r8d
cmovnsl %r8d, %r12d
movl (%r9), %r8d
sarl $0x3, %r12d
movl $0x0, (%rdi)
movl %edx, 0x8(%rdi)
movl %r14d, 0xc(%rdi)
movq %rdi, 0xd0(%rsp)
movl $0x80000000, 0x10(%rdi) # imm = 0x80000000
leaq 0x160(%rsp), %r10
movl %r8d, 0x2c(%rsp)
testb $0x2, %r8b
movl %edx, 0xc(%rsp)
leaq 0x100(%rsp), %r11
leaq 0x168(%rsp), %rbx
movq %r15, %rdi
movl %r14d, %r8d
jne 0x8bea
pushq %r10
pushq %r11
pushq %rbx
pushq %rax
callq 0xa10a
jmp 0x8bf5
pushq %r10
pushq %r11
pushq %rbx
pushq %rax
callq 0x9d8c
addq $0x20, %rsp
movq %rax, 0xb0(%rsp)
movslq 0x1c(%r13), %rsi
movq %r12, 0x20(%rsp)
movslq %r12d, %rbp
imulq %rbp, %rsi
shlq $0x4, %rsi
addq $0x10, %rsi
movq %r15, 0xa8(%rsp)
movq %r15, %rdi
callq 0x84a5
movq %rax, 0x150(%rsp)
addq $0xf, %rax
andq $-0x10, %rax
movq %rax, 0xf8(%rsp)
movq %r13, 0x18(%rsp)
movslq 0x1c(%r13), %rax
testq %rax, %rax
jle 0x8ce5
movq 0x20(%rsp), %r8
leal (,%r8,8), %ecx
movq 0x18(%rsp), %rdx
movq 0x40(%rdx), %rdx
movl %r8d, %esi
cmpl $0x2, %r8d
movl $0x1, %edi
cmovgel %r8d, %edi
xorl %r8d, %r8d
movq 0xf8(%rsp), %r9
testl %r14d, %r14d
jle 0x8cdd
movq %r8, %r10
imulq %rax, %r10
addq %rdx, %r10
xorl %r11d, %r11d
cmpl %r11d, %ecx
jle 0x8cd5
movq 0x168(%rsp), %rbx
addq %r11, %rbx
xorl %r15d, %r15d
leal (%r11,%r15), %r13d
movw $0x8000, %r12w          # imm = 0x8000
cmpl %r14d, %r13d
jge 0x8cc1
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 0x8ca9
incq %r11
cmpq %rdi, %r11
jne 0x8c96
incq %r8
cmpq %rax, %r8
jne 0x8c84
movq 0x18(%rsp), %r13
movl 0x4(%r13), %ecx
movq %rcx, 0x80(%rsp)
movl 0x8(%r13), %eax
movq %rax, 0x70(%rsp)
addl %eax, %ecx
movl %ecx, 0x40(%rsp)
movss 0xc(%r13), %xmm0
movaps %xmm0, 0x110(%rsp)
movss 0x10(%r13), %xmm0
movaps %xmm0, 0x50(%rsp)
movq 0x20(%rsp), %r15
leal 0x1(%r15), %r12d
leal (%r12,%r12,4), %eax
leal (,%r15,8), %ebx
subl %r15d, %ebx
addl %eax, %ebx
movslq %ebx, %rsi
shlq $0x4, %rsi
addq $0x10, %rsi
movq 0xa8(%rsp), %rdi
callq 0x84a5
movq %rax, 0x148(%rsp)
leaq 0xf(%rax), %r10
andq $-0x10, %r10
leal 0x2(,%r15,2), %eax
cltq
shlq $0x4, %rax
movq %rax, 0x90(%rsp)
movq %r12, 0x10(%rsp)
leal (%r12,%r12,2), %eax
movslq %eax, %rdi
shlq $0x4, %rdi
leal 0x4(,%r15,4), %eax
cltq
shlq $0x4, %rax
movq %rax, 0x30(%rsp)
addq %r10, %rax
movq %rbp, %rcx
shlq $0x4, %rcx
movq %rax, 0x190(%rsp)
addq %rcx, %rax
addq $0x10, %rax
movq %rax, 0xc0(%rsp)
leaq (%rax,%rcx), %r15
movd 0x80(%rsp), %xmm0
leaq (%r15,%rcx), %rax
movd 0x70(%rsp), %xmm1
movq %rax, 0xb8(%rsp)
movq %rcx, 0x38(%rsp)
leaq (%rax,%rcx), %r11
movd 0x40(%rsp), %xmm2
xorl %eax, %eax
testb $0x6, 0x2c(%rsp)
jne 0x8e9a
movl (%r13), %ecx
movl $0x0, %edx
andl $0x1, %ecx
movl 0xc(%rsp), %r8d
movq 0x20(%rsp), %r12
movq %r13, %r9
je 0x8ea9
movl %r12d, %eax
imull %r8d, %eax
movslq %eax, %rsi
shlq $0x4, %rsi
addq $0x10, %rsi
movq %rdi, 0x70(%rsp)
movq 0xa8(%rsp), %rdi
movq %r11, 0x40(%rsp)
movq %r10, %r13
movdqa %xmm0, 0x80(%rsp)
movdqa %xmm1, 0x130(%rsp)
movdqa %xmm2, 0x120(%rsp)
callq 0x84a5
movdqa 0x120(%rsp), %xmm2
movdqa 0x130(%rsp), %xmm1
movdqa 0x80(%rsp), %xmm0
movq 0x70(%rsp), %rdi
movq %r13, %r10
movq 0x40(%rsp), %r11
movq 0x18(%rsp), %r9
movl 0xc(%rsp), %r8d
movq %rax, %rdx
addq $0xf, %rdx
andq $-0x10, %rdx
jmp 0x8ea9
xorl %edx, %edx
movl 0xc(%rsp), %r8d
movq 0x20(%rsp), %r12
movq %r13, %r9
movq %r15, 0x80(%rsp)
movq %rdx, 0xd8(%rsp)
movq %rax, 0x178(%rsp)
movq 0x38(%rsp), %rsi
leaq (%r11,%rsi), %rax
movq %rax, 0x120(%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, 0x110(%rsp), %xmm3 # xmm3 = mem[0,0,0,0,4,5,6,7]
pshuflw $0x0, 0x50(%rsp), %xmm4 # xmm4 = mem[0,0,0,0,4,5,6,7]
movq 0x90(%rsp), %r15
leaq (%r10,%r15), %rcx
movq %rdi, %rax
leaq (%r10,%rdi), %rdx
addq %r10, %rsi
addq $0x10, %rsi
movq %rsi, 0x40(%rsp)
testl %ebx, %ebx
jle 0x8f3f
leal (%r12,%r12,2), %esi
leal 0x4(,%rsi,4), %esi
shlq $0x4, %rsi
orq $0x10, %rsi
xorl %edi, %edi
movaps 0xbb7f(%rip), %xmm5     # 0x14ab0
movaps %xmm5, (%r10,%rdi)
addq $0x10, %rdi
cmpq %rdi, %rsi
jne 0x8f31
movq 0x120(%rsp), %rsi
movq 0x38(%rsp), %rdi
leaq (%rsi,%rdi), %r13
leaq 0x10(%r10), %rsi
movq %rsi, 0x50(%rsp)
pshufd $0x0, %xmm0, %xmm12     # xmm12 = xmm0[0,0,0,0]
pshufd $0x0, %xmm1, %xmm14     # xmm14 = xmm1[0,0,0,0]
pshufd $0x0, %xmm2, %xmm5      # xmm5 = xmm2[0,0,0,0]
pshufd $0x0, %xmm3, %xmm15     # xmm15 = xmm3[0,0,0,0]
pshufd $0x0, %xmm4, %xmm0      # xmm0 = xmm4[0,0,0,0]
movdqa %xmm0, 0x110(%rsp)
leaq (%r10,%rdi), %rbx
addq $0x20, %rbx
addq %r10, %r15
addq $0x10, %r15
leaq (%r10,%rax), %rdi
addq $0x10, %rdi
xorl %esi, %esi
movw %si, (%rdx)
xorl %edx, %edx
subw 0x10(%r9), %dx
movw %dx, (%rcx)
subw 0x10(%r9), %si
movq 0x40(%rsp), %rax
movw %si, (%rax)
cmpq $0x0, 0xd8(%rsp)
movdqa %xmm12, 0x1c0(%rsp)
movdqa %xmm14, 0x1b0(%rsp)
movdqa %xmm5, 0x130(%rsp)
movdqa %xmm15, 0x1a0(%rsp)
je 0x95fb
cmpl $0x3, %r8d
jl 0x9c9b
movl %r8d, %edx
movq 0x38(%rsp), %rax
leaq (%rax,%r13), %rcx
movq 0x100(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x160(%rsp), %rax
movq %rax, 0xf0(%rsp)
leal -0x1(%r12), %eax
cltq
cmpl $0x2, %r12d
movl $0x1, %r8d
cmovgel %r12d, %r8d
movl %edx, %edx
movq %rdx, 0xe8(%rsp)
shlq $0x5, %rbp
addq 0xd8(%rsp), %rbp
shlq $0x4, %r8
movl $0x2, %r10d
shlq $0x4, %rax
movq %rax, 0xe0(%rsp)
movdqa 0xba5d(%rip), %xmm7     # 0x14ac0
movdqa 0xbaf4(%rip), %xmm10    # 0x14b60
movdqa 0x110(%rsp), %xmm13
movq 0xc0(%rsp), %rdx
movq 0x50(%rsp), %r9
movdqa 0x1a0(%rsp), %xmm15
movq %r11, %rsi
movq 0xb8(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x80(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq %rdx, 0x80(%rsp)
movq %r15, %rax
movq %rbx, %r15
movq %r9, %rbx
movq 0xb0(%rsp), %rdx
movzbl (%rdx,%r10), %r9d
movdqa %xmm13, %xmm8
cmpl $0x14, %r9d
je 0x90db
movdqa %xmm14, %xmm8
movq 0x30(%rsp), %rdx
movsbl -0x1(%rdx,%r10), %r11d
movsbl (%rdx,%r10), %r12d
movl %r12d, 0x50(%rsp)
movsbl 0x1(%rdx,%r10), %edx
movl %edx, 0xc0(%rsp)
movq 0xf0(%rsp), %rdx
movsbl (%rdx,%r10), %r12d
movl %r12d, 0x40(%rsp)
movsbl -0x1(%rdx,%r10), %r12d
movl %r12d, 0x70(%rsp)
movsbl -0x2(%rdx,%r10), %edx
movl %edx, 0x10(%rsp)
cmpq $0x3, %r10
jb 0x9179
movq 0xe0(%rsp), %rdx
movdqa (%rdi,%rdx), %xmm0
pslldq $0x2, %xmm0             # xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
movl $0x8000, %r12d          # imm = 0x8000
pinsrw $0x0, %r12d, %xmm0
movdqa %xmm0, -0x10(%rdi)
movdqa (%rax,%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, %r12d, %xmm0
movdqa %xmm0, -0x10(%rax)
movdqa (%r15,%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, %r12d, %xmm0
movdqa %xmm0, -0x10(%r15)
movdqa 0xb92f(%rip), %xmm6     # 0x14ab0
movdqa %xmm6, %xmm11
testl %r14d, %r14d
movq 0x80(%rsp), %r12
movq 0x120(%rsp), %rdx
movdqa 0x1c0(%rsp), %xmm14
movdqa 0x1b0(%rsp), %xmm9
jle 0x9537
imull 0x20(%rsp), %r9d
movslq %r9d, %r9
shlq $0x4, %r9
addq 0xf8(%rsp), %r9
movd %r11d, %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, 0x90(%rsp)
movd 0x50(%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, 0x50(%rsp)
movd 0xc0(%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, 0xc0(%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 0x70(%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, 0x70(%rsp)
movd 0x10(%rsp), %xmm4
pshuflw $0x0, %xmm4, %xmm4      # xmm4 = xmm4[0,0,0,0,4,5,6,7]
pshufd $0x0, %xmm4, %xmm4      # xmm4 = xmm4[0,0,0,0]
xorl %r11d, %r11d
movdqa 0xb856(%rip), %xmm11    # 0x14ab0
movdqa %xmm11, %xmm6
movdqa -0x10(%rdi,%r11), %xmm5
movdqa (%rdi,%r11), %xmm12
paddsw (%r9,%r11), %xmm5
psubsw %xmm14, %xmm6
movdqa %xmm11, %xmm13
pcmpgtw %xmm6, %xmm13
pand %xmm7, %xmm13
pmaxsw %xmm6, %xmm11
psubsw %xmm9, %xmm11
movdqa %xmm10, %xmm1
movdqa %xmm11, %xmm10
pcmpgtw %xmm5, %xmm10
pmaxsw %xmm11, %xmm5
psubsw %xmm14, %xmm12
movdqa %xmm9, %xmm3
movdqa (%rsi,%r11), %xmm9
movdqa %xmm7, %xmm0
movdqa %xmm12, %xmm7
pmaxsw %xmm9, %xmm7
psubsw %xmm8, %xmm7
movdqa %xmm7, %xmm6
pcmpgtw %xmm5, %xmm6
movdqa %xmm8, %xmm2
movdqa %xmm6, %xmm8
pandn %xmm10, %xmm8
pcmpgtw %xmm12, %xmm9
pand 0xb7e4(%rip), %xmm9     # 0x14ad0
por %xmm13, %xmm9
movdqa %xmm7, (%r12,%r11)
pand 0xb7e1(%rip), %xmm6     # 0x14ae0
psrlw $0xf, %xmm8
por %xmm6, %xmm8
pmaxsw %xmm5, %xmm7
movdqa (%r15,%r11), %xmm5
psubsw %xmm15, %xmm5
psubsw 0x90(%rsp), %xmm5
movdqa (%rdx,%r11), %xmm6
movdqa %xmm6, %xmm10
pcmpgtw %xmm5, %xmm10
pand 0xb7b5(%rip), %xmm10    # 0x14af0
por %xmm9, %xmm10
pmaxsw %xmm6, %xmm5
movdqa %xmm5, (%rdx,%r11)
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(%r15,%r11), %xmm8
psubsw %xmm15, %xmm8
movdqa (%r13,%r11), %xmm7
movdqa %xmm8, %xmm6
psubsw 0x50(%rsp), %xmm6
movdqa %xmm7, %xmm12
pcmpgtw %xmm6, %xmm12
pmaxsw %xmm7, %xmm6
movdqa %xmm6, (%r13,%r11)
psubsw %xmm4, %xmm6
movdqa %xmm6, %xmm7
pcmpgtw %xmm5, %xmm7
movdqa %xmm7, %xmm13
pandn %xmm9, %xmm13
pand 0xb73b(%rip), %xmm12    # 0x14b00
pand 0xb743(%rip), %xmm7     # 0x14b10
por %xmm13, %xmm7
movdqa 0x110(%rsp), %xmm13
pmaxsw %xmm5, %xmm6
movdqa (%rcx,%r11), %xmm9
psubsw 0xc0(%rsp), %xmm8
movdqa %xmm9, %xmm5
pcmpgtw %xmm8, %xmm5
pand 0xb71e(%rip), %xmm5     # 0x14b20
por %xmm12, %xmm5
por %xmm10, %xmm5
pmaxsw %xmm9, %xmm8
movdqa %xmm8, (%rcx,%r11)
psubsw 0x70(%rsp), %xmm8
movdqa %xmm8, %xmm9
pcmpgtw %xmm6, %xmm9
movdqa %xmm9, %xmm10
pandn %xmm7, %xmm10
pand 0xb6f5(%rip), %xmm9     # 0x14b30
por %xmm10, %xmm9
pmaxsw %xmm6, %xmm8
movdqa (%r15,%r11), %xmm6
psubsw %xmm13, %xmm6
movdqa %xmm6, %xmm7
pcmpgtw %xmm8, %xmm7
movdqa %xmm7, %xmm10
pandn %xmm9, %xmm10
pand 0xb6d5(%rip), %xmm7     # 0x14b40
por %xmm10, %xmm7
pmaxsw %xmm8, %xmm6
movdqa (%rax,%r11), %xmm8
psubsw %xmm13, %xmm8
movdqa %xmm8, %xmm9
pcmpgtw %xmm6, %xmm9
movdqa %xmm9, %xmm10
pandn %xmm7, %xmm10
movdqa -0x10(%r15,%r11), %xmm7
psrlw $0xd, %xmm9
por %xmm10, %xmm9
pmaxsw %xmm6, %xmm8
psubsw %xmm13, %xmm7
movdqa %xmm7, %xmm10
pcmpgtw %xmm8, %xmm10
movdqa %xmm10, %xmm12
pandn %xmm9, %xmm12
movdqa -0x10(%rax,%r11), %xmm6
pand 0xb67c(%rip), %xmm10    # 0x14b50
por %xmm12, %xmm10
pmaxsw %xmm8, %xmm7
psubsw %xmm13, %xmm6
movdqa %xmm6, %xmm8
pcmpgtw %xmm7, %xmm8
movdqa %xmm8, %xmm9
pandn %xmm10, %xmm9
movdqa %xmm1, %xmm10
pand %xmm1, %xmm8
por %xmm9, %xmm8
movdqa %xmm3, %xmm9
por %xmm5, %xmm8
pmaxsw %xmm7, %xmm6
movdqa %xmm0, %xmm7
movdqa %xmm8, (%rbp,%r11)
movdqa %xmm2, %xmm8
movdqa %xmm6, (%rbx,%r11)
addq $0x10, %r11
cmpq %r11, %r8
jne 0x925f
incq %r10
movdqa 0x130(%rsp), %xmm2
psubsw %xmm2, %xmm6
psubsw %xmm9, %xmm11
pmaxsw %xmm6, %xmm11
xorl %r9d, %r9d
movq 0x20(%rsp), %r12
movdqa %xmm9, %xmm14
movq %rsi, %r11
movdqa 0xb607(%rip), %xmm3     # 0x14b70
pslldq $0x2, %xmm11            # xmm11 = zero,zero,xmm11[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
movl $0x8000, %edx           # imm = 0x8000
pinsrw $0x0, %edx, %xmm11
testl %r14d, %r14d
jle 0x95cc
xorl %edx, %edx
movdqa (%rbx,%rdx), %xmm0
movdqa %xmm11, %xmm1
pcmpgtw %xmm0, %xmm1
pand %xmm3, %xmm1
por (%rbp,%rdx), %xmm1
pmaxsw %xmm11, %xmm0
movdqa %xmm1, (%rbp,%rdx)
movdqa %xmm0, (%rbx,%rdx)
psubsw %xmm2, %xmm0
psubsw %xmm14, %xmm11
movdqa %xmm11, %xmm1
pcmpgtw %xmm0, %xmm1
pmovmskb %xmm1, %esi
testl %esi, %esi
je 0x95d5
addq $0x10, %rdx
cmpq %rdx, %r8
jne 0x9581
incl %r9d
cmpl $0x8, %r9d
jne 0x9569
addq 0x38(%rsp), %rbp
movq %rdi, %r9
movq %rax, %rdi
movq %r11, %rdx
movq 0x18(%rsp), %r11
cmpq 0xe8(%rsp), %r10
jne 0x908d
jmp 0x9c9b
movq 0x30(%rsp), %rax
addq %r10, %rax
addq $0x10, %rax
movq %rax, 0x170(%rsp)
leal (%r14,%r14,2), %eax
negl %eax
movq %rax, 0xf0(%rsp)
movq 0x100(%rsp), %rax
movq %rax, 0xe8(%rsp)
movq 0x160(%rsp), %rax
movq %rax, 0xe0(%rsp)
leal -0x1(%r12), %eax
movslq %eax, %rdx
leal -0x1(%r14), %eax
movl %eax, 0x30(%rsp)
movq 0x10(%rsp), %rax
shll $0x4, %eax
cltq
movq %rax, 0x180(%rsp)
cmpl $0x2, %r12d
movl $0x1, %esi
cmovgel %r12d, %esi
cmpl $0x3, %r8d
movl $0x2, %eax
cmovgel %r8d, %eax
movq %rax, 0x38(%rsp)
imulq $0x70, %rbp, %rax
leal (,%r12,4), %ecx
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rax, %rcx
leaq (%r10,%rcx), %rax
addq $0x50, %rax
movq %rax, 0x198(%rsp)
shlq $0x4, %rsi
movl $0x80000000, %r10d      # imm = 0x80000000
movl $0xffffffff, 0x68(%rsp) # imm = 0xFFFFFFFF
movl $0x2, %r8d
shlq $0x4, %rdx
movq %rdx, 0x188(%rsp)
movl $0x80000000, 0x6c(%rsp) # imm = 0x80000000
movq %rsi, 0x158(%rsp)
movq 0x50(%rsp), %rbp
movq %rdi, 0x50(%rsp)
cmpq 0x38(%rsp), %r8
je 0x9bfe
movq %r11, 0x40(%rsp)
movl %r10d, 0x10(%rsp)
movq 0xb0(%rsp), %rax
movzbl (%rax,%r8), %eax
movdqa 0x110(%rsp), %xmm3
cmpl $0x14, %eax
je 0x9717
movdqa %xmm14, %xmm3
movq 0xe8(%rsp), %rdx
movsbl -0x1(%rdx,%r8), %r11d
movsbl (%rdx,%r8), %ecx
movsbl 0x1(%rdx,%r8), %r10d
movq 0xe0(%rsp), %rdx
movsbl (%rdx,%r8), %r9d
movsbl -0x1(%rdx,%r8), %edi
movsbl -0x2(%rdx,%r8), %edx
cmpq $0x3, %r8
jb 0x97ed
movq 0x50(%rsp), %rsi
movl %ecx, 0x90(%rsp)
movl %r10d, %ecx
movl %edi, %r10d
movq %r8, %rdi
movq 0x188(%rsp), %r8
movdqa (%rsi,%r8), %xmm0
pslldq $0x2, %xmm0             # xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
movl %r9d, 0x10c(%rsp)
movl %edx, %r9d
movq %r12, %rdx
movl $0x8000, %r12d          # imm = 0x8000
pinsrw $0x0, %r12d, %xmm0
movdqa %xmm0, -0x10(%rsi)
movq 0x158(%rsp), %rsi
movdqa (%r15,%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, %r12d, %xmm0
movdqa %xmm0, -0x10(%r15)
movdqa (%rbx,%r8), %xmm0
movq %rdi, %r8
movl %r10d, %edi
movl %ecx, %r10d
movl 0x90(%rsp), %ecx
pslldq $0x2, %xmm0             # xmm0 = zero,zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
pinsrw $0x0, %r12d, %xmm0
movq %rdx, %r12
movl %r9d, %edx
movl 0x10c(%rsp), %r9d
movdqa %xmm0, -0x10(%rbx)
movdqa 0xb2bb(%rip), %xmm0     # 0x14ab0
movdqa %xmm0, %xmm9
movdqa %xmm0, %xmm1
testl %r14d, %r14d
movq %r8, 0x70(%rsp)
jle 0x99f3
imull %r12d, %eax
cltq
shlq $0x4, %rax
addq 0xf8(%rsp), %rax
movd %r11d, %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, 0x90(%rsp)
movd %ecx, %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, %xmm5      # xmm5 = 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 %edi, %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 %edx, %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 0xb226(%rip), %xmm9     # 0x14ab0
movdqa %xmm9, %xmm0
movdqa %xmm9, %xmm1
movq 0x120(%rsp), %rcx
movdqa 0x110(%rsp), %xmm13
movq 0xc0(%rsp), %rdi
movq 0x50(%rsp), %r9
movq 0x198(%rsp), %r8
movq 0x40(%rsp), %r10
movdqa -0x10(%r9,%rdx), %xmm10
movdqa (%r9,%rdx), %xmm11
paddsw (%rax,%rdx), %xmm10
psubsw %xmm12, %xmm9
pmaxsw %xmm9, %xmm1
psubsw %xmm14, %xmm1
pmaxsw %xmm1, %xmm10
psubsw %xmm12, %xmm11
pmaxsw (%r10,%rdx), %xmm11
psubsw %xmm3, %xmm11
movdqa %xmm11, (%rdi,%rdx)
pmaxsw %xmm10, %xmm11
movdqa (%rbx,%rdx), %xmm9
psubsw %xmm15, %xmm9
psubsw 0x90(%rsp), %xmm9
pmaxsw (%rcx,%rdx), %xmm9
movdqa %xmm9, (%rcx,%rdx)
psubsw %xmm6, %xmm9
pmaxsw %xmm11, %xmm9
movdqa -0x10(%rbx,%rdx), %xmm10
psubsw %xmm15, %xmm10
movdqa %xmm10, %xmm11
psubsw %xmm4, %xmm11
pmaxsw (%r13,%rdx), %xmm11
movdqa %xmm11, (%r13,%rdx)
psubsw %xmm8, %xmm11
psubsw %xmm5, %xmm10
pmaxsw (%r8,%rdx), %xmm10
movdqa %xmm10, (%r8,%rdx)
psubsw %xmm7, %xmm10
pmaxsw %xmm11, %xmm10
pmaxsw %xmm9, %xmm10
movdqa (%rbx,%rdx), %xmm9
psubsw %xmm13, %xmm9
movdqa (%r15,%rdx), %xmm11
psubsw %xmm13, %xmm11
pmaxsw %xmm9, %xmm11
movdqa %xmm15, %xmm2
movdqa %xmm12, %xmm15
movdqa -0x10(%rbx,%rdx), %xmm12
psubsw %xmm13, %xmm12
pmaxsw %xmm11, %xmm12
movdqa -0x10(%r15,%rdx), %xmm9
psubsw %xmm13, %xmm9
pmaxsw %xmm12, %xmm9
movdqa %xmm15, %xmm12
movdqa %xmm2, %xmm15
pmaxsw %xmm10, %xmm9
pmaxsw %xmm9, %xmm0
movdqa %xmm9, (%rbp,%rdx)
addq $0x10, %rdx
cmpq %rdx, %rsi
jne 0x98c0
movdqa 0x130(%rsp), %xmm5
movq 0x70(%rsp), %r8
leaq 0x1(%r8), %r11
psubsw %xmm5, %xmm9
psubsw %xmm14, %xmm1
pmaxsw %xmm9, %xmm1
xorl %eax, %eax
movq 0x18(%rsp), %r9
movl $0x8000, %edi           # imm = 0x8000
movl 0x10(%rsp), %r10d
pslldq $0x2, %xmm1             # xmm1 = zero,zero,xmm1[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
pinsrw $0x0, %edi, %xmm1
testl %r14d, %r14d
jle 0x9a5e
xorl %ecx, %ecx
movdqa (%rbp,%rcx), %xmm2
pmaxsw %xmm1, %xmm2
pmaxsw %xmm2, %xmm0
movdqa %xmm2, (%rbp,%rcx)
psubsw %xmm5, %xmm2
psubsw %xmm14, %xmm1
movdqa %xmm1, %xmm3
pcmpgtw %xmm2, %xmm3
pmovmskb %xmm3, %edx
testl %edx, %edx
je 0x9a65
addq $0x10, %rcx
cmpq %rcx, %rsi
jne 0x9a28
incl %eax
cmpl $0x8, %eax
jne 0x9a17
movl 0x30(%rsp), %eax
cltd
idivl %r12d
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 %rbp, %rdx
cltq
movswl (%rdx,%rax,2), %edx
addl 0x18(%r9), %edx
movswl %cx, %eax
cmpl %edx, %eax
cmovgl %eax, %edx
movq 0xf0(%rsp), %rax
leal (%rax,%r8), %ecx
xorl %eax, %eax
cmpl $0x2, %ecx
jl 0x9b26
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 0xb164(%rip), %xmm2     # 0x14c60
addss 0xb160(%rip), %xmm2     # 0x14c64
mulss %xmm1, %xmm2
addss 0xb158(%rip), %xmm2     # 0x14c68
addss %xmm0, %xmm2
mulss 0x3c(%r9), %xmm2
addss 0xb14a(%rip), %xmm2     # 0x14c6c
cvttss2si %xmm2, %eax
movl %edx, %r12d
subl %eax, %r12d
cmpl %r10d, %r12d
jle 0x9ba6
leaq -0x10(%rbp), %rsi
movq 0x190(%rsp), %rdi
movl %edx, 0x10(%rsp)
movq 0x180(%rsp), %rdx
movq %r11, 0x90(%rsp)
callq 0x21e0
movq 0x90(%rsp), %r11
movq 0x158(%rsp), %rsi
movq 0x18(%rsp), %r9
movdqa 0x1a0(%rsp), %xmm15
movdqa 0x130(%rsp), %xmm5
movdqa 0x1b0(%rsp), %xmm14
movdqa 0x1c0(%rsp), %xmm12
movq 0x70(%rsp), %rax
movl %eax, 0x68(%rsp)
movl %r12d, %r10d
movl 0x10(%rsp), %eax
movl %eax, 0x6c(%rsp)
movl %r10d, %eax
subl %r12d, %eax
movq %r11, %r8
movq 0xb8(%rsp), %r11
movq 0x80(%rsp), %rcx
movq %rcx, 0xb8(%rsp)
movq 0xc0(%rsp), %rcx
movq %rcx, 0x80(%rsp)
movq 0x40(%rsp), %rcx
movq %rcx, 0xc0(%rsp)
movq %r15, %rdi
movq %rbx, %r15
movq %rbp, %rbx
cmpl 0x14(%r9), %eax
movq 0x20(%rsp), %r12
jle 0x96d8
jmp 0x9c01
movq %rbx, %rbp
testb $0x6, 0x2c(%rsp)
je 0x9cc0
testl %r14d, %r14d
movq 0x170(%rsp), %rsi
movl 0x6c(%rsp), %r10d
jle 0x9c60
movl %r14d, %edi
negl %edi
movl $0x1, %r8d
leal -0x1(%r8), %eax
xorl %edx, %edx
divl %r12d
shlq $0x4, %rdx
addq %rsi, %rdx
movswl (%rdx,%rax,2), %eax
movl %edi, %ecx
addl %r8d, %ecx
jne 0x9c48
addl 0x18(%r9), %eax
cmpl %r10d, %eax
je 0x9c7f
leal (%rdi,%r8), %eax
incl %eax
movl %r8d, %ecx
incl %ecx
movl %ecx, %r8d
cmpl $0x1, %eax
jne 0x9c29
leaq 0xb031(%rip), %rdi      # 0x14c98
leaq 0xb031(%rip), %rsi      # 0x14c9f
leaq 0xb035(%rip), %rcx      # 0x14caa
movl $0x1b9, %edx            # imm = 0x1B9
callq 0x2150
movl 0x68(%rsp), %ecx
incl %ecx
movq 0xd0(%rsp), %rax
movl %ecx, 0x8(%rax)
movl %r8d, 0xc(%rax)
movl %r10d, 0x10(%rax)
movq %rbp, %rbx
testb $0x6, 0x2c(%rsp)
movq 0xa8(%rsp), %r15
movq 0x150(%rsp), %r13
movq 0x148(%rsp), %rsi
jne 0x9cfe
leal -0x1(%r14), %eax
jmp 0x9cdf
movq %rbp, %rbx
movq 0xa8(%rsp), %r15
movq 0x150(%rsp), %r13
movq 0x148(%rsp), %rsi
movl 0x30(%rsp), %eax
cltd
idivl %r12d
movslq %edx, %rcx
shlq $0x4, %rcx
addq %rbx, %rcx
cltq
movswl (%rcx,%rax,2), %eax
movq 0xd0(%rsp), %rcx
movl %eax, 0x10(%rcx)
movq %r15, %rdi
callq 0x83df
movq %r15, %rdi
movq %r13, %rsi
callq 0x83df
movq %r15, %rdi
movq 0xb0(%rsp), %rsi
callq 0x83df
movq 0xd8(%rsp), %rdx
testq %rdx, %rdx
je 0x9d7a
movq 0xd0(%rsp), %r10
leaq 0x18(%r10), %r9
leaq 0x4(%r10), %rax
movq %r15, %rdi
movl $0x8, %esi
movl 0xc(%rsp), %ecx
movl %r14d, %r8d
pushq %rax
pushq %r10
callq 0xa3ff
addq $0x10, %rsp
movq %r15, %rdi
movq 0x178(%rsp), %rsi
addq $0x1d8, %rsp            # imm = 0x1D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x83df
addq $0x1d8, %rsp            # imm = 0x1D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq