// File: /workspace/github_c_makefile_star2_O0/ToniWestbrook[P]paladin/ksw.c
// Function: ksw_u8
kswr_t ksw_u8(kswq_t *q, int tlen, const uint8_t *target, int _o_del, int _e_del, int _o_ins, int _e_ins, int xtra) // the first gap costs -(_o+_e)
{
	int slen, i, m_b, n_b, te = -1, gmax = 0, minsc, endsc;
	uint64_t *b;
	__m128i zero, oe_del, e_del, oe_ins, e_ins, shift, *H0, *H1, *E, *Hmax;
	kswr_t r;

#define __max_16(ret, xx) do { \
		(xx) = _mm_max_epu8((xx), _mm_srli_si128((xx), 8)); \
		(xx) = _mm_max_epu8((xx), _mm_srli_si128((xx), 4)); \
		(xx) = _mm_max_epu8((xx), _mm_srli_si128((xx), 2)); \
		(xx) = _mm_max_epu8((xx), _mm_srli_si128((xx), 1)); \
    	(ret) = _mm_extract_epi16((xx), 0) & 0x00ff; \
	} while (0)

	// initialization
	r = g_defr;
	minsc = (xtra&KSW_XSUBO)? xtra&0xffff : 0x10000;
	endsc = (xtra&KSW_XSTOP)? xtra&0xffff : 0x10000;
	m_b = n_b = 0; b = 0;
	zero = _mm_set1_epi32(0);
	oe_del = _mm_set1_epi8(_o_del + _e_del);
	e_del = _mm_set1_epi8(_e_del);
	oe_ins = _mm_set1_epi8(_o_ins + _e_ins);
	e_ins = _mm_set1_epi8(_e_ins);
	shift = _mm_set1_epi8(q->shift);
	H0 = q->H0; H1 = q->H1; E = q->E; Hmax = q->Hmax;
	slen = q->slen;
	for (i = 0; i < slen; ++i) {
		_mm_store_si128(E + i, zero);
		_mm_store_si128(H0 + i, zero);
		_mm_store_si128(Hmax + i, zero);
	}
	// the core loop
	for (i = 0; i < tlen; ++i) {
		int j, k, cmp, imax;
		__m128i e, h, t, f = zero, max = zero, *S = q->qp + target[i] * slen; // s is the 1st score vector
		h = _mm_load_si128(H0 + slen - 1); // h={2,5,8,11,14,17,-1,-1} in the above example
		h = _mm_slli_si128(h, 1); // h=H(i-1,-1); << instead of >> because x64 is little-endian
		for (j = 0; LIKELY(j < slen); ++j) {
			/* SW cells are computed in the following order:
			 *   H(i,j)   = max{H(i-1,j-1)+S(i,j), E(i,j), F(i,j)}
			 *   E(i+1,j) = max{H(i,j)-q, E(i,j)-r}
			 *   F(i,j+1) = max{H(i,j)-q, F(i,j)-r}
			 */
			// compute H'(i,j); note that at the beginning, h=H'(i-1,j-1)
			h = _mm_adds_epu8(h, _mm_load_si128(S + j));
			h = _mm_subs_epu8(h, shift); // h=H'(i-1,j-1)+S(i,j)
			e = _mm_load_si128(E + j); // e=E'(i,j)
			h = _mm_max_epu8(h, e);
			h = _mm_max_epu8(h, f); // h=H'(i,j)
			max = _mm_max_epu8(max, h); // set max
			_mm_store_si128(H1 + j, h); // save to H'(i,j)
			// now compute E'(i+1,j)
			e = _mm_subs_epu8(e, e_del); // e=E'(i,j) - e_del
			t = _mm_subs_epu8(h, oe_del); // h=H'(i,j) - o_del - e_del
			e = _mm_max_epu8(e, t); // e=E'(i+1,j)
			_mm_store_si128(E + j, e); // save to E'(i+1,j)
			// now compute F'(i,j+1)
			f = _mm_subs_epu8(f, e_ins);
			t = _mm_subs_epu8(h, oe_ins); // h=H'(i,j) - o_ins - e_ins
			f = _mm_max_epu8(f, t);
			// get H'(i-1,j) and prepare for the next j
			h = _mm_load_si128(H0 + j); // h=H'(i-1,j)
		}
		// NB: we do not need to set E(i,j) as we disallow adjecent insertion and then deletion
		for (k = 0; LIKELY(k < 16); ++k) { // this block mimics SWPS3; NB: H(i,j) updated in the lazy-F loop cannot exceed max
			f = _mm_slli_si128(f, 1);
			for (j = 0; LIKELY(j < slen); ++j) {
				h = _mm_load_si128(H1 + j);
				h = _mm_max_epu8(h, f); // h=H'(i,j)
				_mm_store_si128(H1 + j, h);
				h = _mm_subs_epu8(h, oe_ins);
				f = _mm_subs_epu8(f, e_ins);
				cmp = _mm_movemask_epi8(_mm_cmpeq_epi8(_mm_subs_epu8(f, h), zero));
				if (UNLIKELY(cmp == 0xffff)) goto end_loop16;
			}
		}
end_loop16:
		//int k;for (k=0;k<16;++k)printf("%d ", ((uint8_t*)&max)[k]);printf("\n");
		__max_16(imax, max); // imax is the maximum number in max
		if (imax >= minsc) { // write the b array; this condition adds branching unfornately
			if (n_b == 0 || (int32_t)b[n_b-1] + 1 != i) { // then append
				if (n_b == m_b) {
					m_b = m_b? m_b<<1 : 8;
					b = (uint64_t*)realloc(b, 8 * m_b);
				}
				b[n_b++] = (uint64_t)imax<<32 | i;
			} else if ((int)(b[n_b-1]>>32) < imax) b[n_b-1] = (uint64_t)imax<<32 | i; // modify the last
		}
		if (imax > gmax) {
			gmax = imax; te = i; // te is the end position on the target
			for (j = 0; LIKELY(j < slen); ++j) // keep the H1 vector
				_mm_store_si128(Hmax + j, _mm_load_si128(H1 + j));
			if (gmax + q->shift >= 255 || gmax >= endsc) break;
		}
		S = H1; H1 = H0; H0 = S; // swap H0 and H1
	}
	r.score = gmax + q->shift < 255? gmax : 255;
	r.te = te;
	if (r.score != 255) { // get a->qe, the end of query match; find the 2nd best score
		int max = -1, tmp, low, high, qlen = slen * 16;
		uint8_t *t = (uint8_t*)Hmax;
		for (i = 0; i < qlen; ++i, ++t)
			if ((int)*t > max) max = *t, r.qe = i / 16 + i % 16 * slen;
			else if ((int)*t == max && (tmp = i / 16 + i % 16 * slen) < r.qe) r.qe = tmp; 
		//printf("%d,%d\n", max, gmax);
		if (b) {
			i = (r.score + q->max - 1) / q->max;
			low = te - i; high = te + i;
			for (i = 0; i < n_b; ++i) {
				int e = (int32_t)b[i];
				if ((e < low || e > high) && (int)(b[i]>>32) > r.score2)
					r.score2 = b[i]>>32, r.te2 = e;
			}
		}
	}
	free(b);
	return r;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x600, %rsp            # imm = 0x600
movq %rdi, -0x5e0(%rbp)
movq %rdi, %rax
movq %rax, -0x5d8(%rbp)
movl 0x20(%rbp), %eax
movl 0x18(%rbp), %eax
movl 0x10(%rbp), %eax
movq %rsi, -0x478(%rbp)
movl %edx, -0x47c(%rbp)
movq %rcx, -0x488(%rbp)
movl %r8d, -0x48c(%rbp)
movl %r9d, -0x490(%rbp)
movl $0xffffffff, -0x4a4(%rbp) # imm = 0xFFFFFFFF
movl $0x0, -0x4a8(%rbp)
movq 0x923a(%rip), %rax      # 0x3b4dc
movq %rax, (%rdi)
movq 0x9238(%rip), %rax      # 0x3b4e4
movq %rax, 0x8(%rdi)
movq 0x9235(%rip), %rax      # 0x3b4ec
movq %rax, 0x10(%rdi)
movl 0x9233(%rip), %eax      # 0x3b4f4
movl %eax, 0x18(%rdi)
movl 0x20(%rbp), %eax
andl $0x40000, %eax          # imm = 0x40000
cmpl $0x0, %eax
je 0x322e1
movl 0x20(%rbp), %eax
andl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0x5e4(%rbp)
jmp 0x322ee
movl $0x10000, %eax          # imm = 0x10000
movl %eax, -0x5e4(%rbp)
jmp 0x322ee
movl -0x5e4(%rbp), %eax
movl %eax, -0x4ac(%rbp)
movl 0x20(%rbp), %eax
andl $0x20000, %eax          # imm = 0x20000
cmpl $0x0, %eax
je 0x32317
movl 0x20(%rbp), %eax
andl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0x5e8(%rbp)
jmp 0x32324
movl $0x10000, %eax          # imm = 0x10000
movl %eax, -0x5e8(%rbp)
jmp 0x32324
movl -0x5e8(%rbp), %eax
movl %eax, -0x4b0(%rbp)
movl $0x0, -0x4a0(%rbp)
movl $0x0, -0x49c(%rbp)
movq $0x0, -0x4b8(%rbp)
movl $0x0, -0x46c(%rbp)
movl -0x46c(%rbp), %eax
movl %eax, -0xa4(%rbp)
movl %eax, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
movl %eax, -0xb0(%rbp)
movd -0xa4(%rbp), %xmm0
movd -0xa8(%rbp), %xmm1
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movd -0xac(%rbp), %xmm2
movd -0xb0(%rbp), %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
movaps %xmm0, -0xc0(%rbp)
movaps -0xc0(%rbp), %xmm0
movaps %xmm0, -0x4d0(%rbp)
movl -0x48c(%rbp), %eax
movl -0x490(%rbp), %ecx
addl %ecx, %eax
movb %al, -0x461(%rbp)
movb -0x461(%rbp), %al
movb %al, -0x5ed(%rbp)
movb %al, -0x81(%rbp)
movb %al, -0x82(%rbp)
movb %al, -0x83(%rbp)
movb %al, -0x84(%rbp)
movb %al, -0x85(%rbp)
movb %al, -0x86(%rbp)
movb %al, -0x87(%rbp)
movb %al, -0x88(%rbp)
movb %al, -0x89(%rbp)
movb %al, -0x8a(%rbp)
movb %al, -0x8b(%rbp)
movb %al, -0x8c(%rbp)
movb %al, -0x8d(%rbp)
movb %al, -0x8e(%rbp)
movb %al, -0x8f(%rbp)
movb %al, -0x90(%rbp)
movzbl -0x81(%rbp), %eax
movd %eax, %xmm0
movzbl -0x82(%rbp), %eax
movd %eax, %xmm1
punpcklbw %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
movzbl -0x83(%rbp), %eax
movd %eax, %xmm2
movzbl -0x84(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
punpcklwd %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
movzbl -0x85(%rbp), %eax
movd %eax, %xmm1
movzbl -0x86(%rbp), %eax
movd %eax, %xmm2
punpcklbw %xmm1, %xmm2    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
movzbl -0x87(%rbp), %eax
movd %eax, %xmm3
movzbl -0x88(%rbp), %eax
movd %eax, %xmm1
punpcklbw %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
punpcklwd %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movzbl -0x89(%rbp), %eax
movd %eax, %xmm2
movzbl -0x8a(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
movzbl -0x8b(%rbp), %eax
movd %eax, %xmm3
movzbl -0x8c(%rbp), %eax
movd %eax, %xmm2
punpcklbw %xmm3, %xmm2    # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
punpcklwd %xmm0, %xmm2    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
movzbl -0x8d(%rbp), %eax
movd %eax, %xmm0
movzbl -0x8e(%rbp), %eax
movd %eax, %xmm3
punpcklbw %xmm0, %xmm3    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
movzbl -0x8f(%rbp), %eax
movd %eax, %xmm4
movzbl -0x90(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm4, %xmm0    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]
punpcklwd %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
movaps %xmm0, -0xa0(%rbp)
movaps -0xa0(%rbp), %xmm0
movaps %xmm0, -0x4e0(%rbp)
movb -0x490(%rbp), %al
movb %al, -0x462(%rbp)
movb -0x462(%rbp), %al
movb %al, -0x5ec(%rbp)
movb %al, -0x61(%rbp)
movb %al, -0x62(%rbp)
movb %al, -0x63(%rbp)
movb %al, -0x64(%rbp)
movb %al, -0x65(%rbp)
movb %al, -0x66(%rbp)
movb %al, -0x67(%rbp)
movb %al, -0x68(%rbp)
movb %al, -0x69(%rbp)
movb %al, -0x6a(%rbp)
movb %al, -0x6b(%rbp)
movb %al, -0x6c(%rbp)
movb %al, -0x6d(%rbp)
movb %al, -0x6e(%rbp)
movb %al, -0x6f(%rbp)
movb %al, -0x70(%rbp)
movzbl -0x61(%rbp), %eax
movd %eax, %xmm0
movzbl -0x62(%rbp), %eax
movd %eax, %xmm1
punpcklbw %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
movzbl -0x63(%rbp), %eax
movd %eax, %xmm2
movzbl -0x64(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
punpcklwd %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
movzbl -0x65(%rbp), %eax
movd %eax, %xmm1
movzbl -0x66(%rbp), %eax
movd %eax, %xmm2
punpcklbw %xmm1, %xmm2    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
movzbl -0x67(%rbp), %eax
movd %eax, %xmm3
movzbl -0x68(%rbp), %eax
movd %eax, %xmm1
punpcklbw %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
punpcklwd %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movzbl -0x69(%rbp), %eax
movd %eax, %xmm2
movzbl -0x6a(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
movzbl -0x6b(%rbp), %eax
movd %eax, %xmm3
movzbl -0x6c(%rbp), %eax
movd %eax, %xmm2
punpcklbw %xmm3, %xmm2    # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
punpcklwd %xmm0, %xmm2    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
movzbl -0x6d(%rbp), %eax
movd %eax, %xmm0
movzbl -0x6e(%rbp), %eax
movd %eax, %xmm3
punpcklbw %xmm0, %xmm3    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
movzbl -0x6f(%rbp), %eax
movd %eax, %xmm4
movzbl -0x70(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm4, %xmm0    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]
punpcklwd %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
movaps %xmm0, -0x80(%rbp)
movaps -0x80(%rbp), %xmm0
movaps %xmm0, -0x4f0(%rbp)
movl 0x10(%rbp), %eax
movl 0x18(%rbp), %ecx
addl %ecx, %eax
movb %al, -0x463(%rbp)
movb -0x463(%rbp), %al
movb %al, -0x5eb(%rbp)
movb %al, -0x41(%rbp)
movb %al, -0x42(%rbp)
movb %al, -0x43(%rbp)
movb %al, -0x44(%rbp)
movb %al, -0x45(%rbp)
movb %al, -0x46(%rbp)
movb %al, -0x47(%rbp)
movb %al, -0x48(%rbp)
movb %al, -0x49(%rbp)
movb %al, -0x4a(%rbp)
movb %al, -0x4b(%rbp)
movb %al, -0x4c(%rbp)
movb %al, -0x4d(%rbp)
movb %al, -0x4e(%rbp)
movb %al, -0x4f(%rbp)
movb %al, -0x50(%rbp)
movzbl -0x41(%rbp), %eax
movd %eax, %xmm0
movzbl -0x42(%rbp), %eax
movd %eax, %xmm1
punpcklbw %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
movzbl -0x43(%rbp), %eax
movd %eax, %xmm2
movzbl -0x44(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
punpcklwd %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
movzbl -0x45(%rbp), %eax
movd %eax, %xmm1
movzbl -0x46(%rbp), %eax
movd %eax, %xmm2
punpcklbw %xmm1, %xmm2    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
movzbl -0x47(%rbp), %eax
movd %eax, %xmm3
movzbl -0x48(%rbp), %eax
movd %eax, %xmm1
punpcklbw %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
punpcklwd %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movzbl -0x49(%rbp), %eax
movd %eax, %xmm2
movzbl -0x4a(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
movzbl -0x4b(%rbp), %eax
movd %eax, %xmm3
movzbl -0x4c(%rbp), %eax
movd %eax, %xmm2
punpcklbw %xmm3, %xmm2    # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
punpcklwd %xmm0, %xmm2    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
movzbl -0x4d(%rbp), %eax
movd %eax, %xmm0
movzbl -0x4e(%rbp), %eax
movd %eax, %xmm3
punpcklbw %xmm0, %xmm3    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
movzbl -0x4f(%rbp), %eax
movd %eax, %xmm4
movzbl -0x50(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm4, %xmm0    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]
punpcklwd %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
movaps %xmm0, -0x60(%rbp)
movaps -0x60(%rbp), %xmm0
movaps %xmm0, -0x500(%rbp)
movb 0x18(%rbp), %al
movb %al, -0x464(%rbp)
movb -0x464(%rbp), %al
movb %al, -0x5ea(%rbp)
movb %al, -0x21(%rbp)
movb %al, -0x22(%rbp)
movb %al, -0x23(%rbp)
movb %al, -0x24(%rbp)
movb %al, -0x25(%rbp)
movb %al, -0x26(%rbp)
movb %al, -0x27(%rbp)
movb %al, -0x28(%rbp)
movb %al, -0x29(%rbp)
movb %al, -0x2a(%rbp)
movb %al, -0x2b(%rbp)
movb %al, -0x2c(%rbp)
movb %al, -0x2d(%rbp)
movb %al, -0x2e(%rbp)
movb %al, -0x2f(%rbp)
movb %al, -0x30(%rbp)
movzbl -0x21(%rbp), %eax
movd %eax, %xmm0
movzbl -0x22(%rbp), %eax
movd %eax, %xmm1
punpcklbw %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
movzbl -0x23(%rbp), %eax
movd %eax, %xmm2
movzbl -0x24(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
punpcklwd %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
movzbl -0x25(%rbp), %eax
movd %eax, %xmm1
movzbl -0x26(%rbp), %eax
movd %eax, %xmm2
punpcklbw %xmm1, %xmm2    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
movzbl -0x27(%rbp), %eax
movd %eax, %xmm3
movzbl -0x28(%rbp), %eax
movd %eax, %xmm1
punpcklbw %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
punpcklwd %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movzbl -0x29(%rbp), %eax
movd %eax, %xmm2
movzbl -0x2a(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
movzbl -0x2b(%rbp), %eax
movd %eax, %xmm3
movzbl -0x2c(%rbp), %eax
movd %eax, %xmm2
punpcklbw %xmm3, %xmm2    # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
punpcklwd %xmm0, %xmm2    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
movzbl -0x2d(%rbp), %eax
movd %eax, %xmm0
movzbl -0x2e(%rbp), %eax
movd %eax, %xmm3
punpcklbw %xmm0, %xmm3    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
movzbl -0x2f(%rbp), %eax
movd %eax, %xmm4
movzbl -0x30(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm4, %xmm0    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]
punpcklwd %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
movaps %xmm0, -0x40(%rbp)
movaps -0x40(%rbp), %xmm0
movaps %xmm0, -0x510(%rbp)
movq -0x478(%rbp), %rax
movb 0x8(%rax), %al
movb %al, -0x465(%rbp)
movb -0x465(%rbp), %al
movb %al, -0x5e9(%rbp)
movb %al, -0x1(%rbp)
movb %al, -0x2(%rbp)
movb %al, -0x3(%rbp)
movb %al, -0x4(%rbp)
movb %al, -0x5(%rbp)
movb %al, -0x6(%rbp)
movb %al, -0x7(%rbp)
movb %al, -0x8(%rbp)
movb %al, -0x9(%rbp)
movb %al, -0xa(%rbp)
movb %al, -0xb(%rbp)
movb %al, -0xc(%rbp)
movb %al, -0xd(%rbp)
movb %al, -0xe(%rbp)
movb %al, -0xf(%rbp)
movb %al, -0x10(%rbp)
movzbl -0x1(%rbp), %eax
movd %eax, %xmm0
movzbl -0x2(%rbp), %eax
movd %eax, %xmm1
punpcklbw %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
movzbl -0x3(%rbp), %eax
movd %eax, %xmm2
movzbl -0x4(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
punpcklwd %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
movzbl -0x5(%rbp), %eax
movd %eax, %xmm1
movzbl -0x6(%rbp), %eax
movd %eax, %xmm2
punpcklbw %xmm1, %xmm2    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
movzbl -0x7(%rbp), %eax
movd %eax, %xmm3
movzbl -0x8(%rbp), %eax
movd %eax, %xmm1
punpcklbw %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
punpcklwd %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movzbl -0x9(%rbp), %eax
movd %eax, %xmm2
movzbl -0xa(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
movzbl -0xb(%rbp), %eax
movd %eax, %xmm3
movzbl -0xc(%rbp), %eax
movd %eax, %xmm2
punpcklbw %xmm3, %xmm2    # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
punpcklwd %xmm0, %xmm2    # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3]
movzbl -0xd(%rbp), %eax
movd %eax, %xmm0
movzbl -0xe(%rbp), %eax
movd %eax, %xmm3
punpcklbw %xmm0, %xmm3    # xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
movzbl -0xf(%rbp), %eax
movd %eax, %xmm4
movzbl -0x10(%rbp), %eax
movd %eax, %xmm0
punpcklbw %xmm4, %xmm0    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]
punpcklwd %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
movdqa %xmm0, -0x20(%rbp)
movdqa -0x20(%rbp), %xmm0
movdqa %xmm0, -0x520(%rbp)
movq -0x478(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x528(%rbp)
movq -0x478(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x530(%rbp)
movq -0x478(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x538(%rbp)
movq -0x478(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x540(%rbp)
movq -0x478(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x494(%rbp)
movl $0x0, -0x498(%rbp)
movl -0x498(%rbp), %eax
cmpl -0x494(%rbp), %eax
jge 0x32ad0
movq -0x538(%rbp), %rax
movslq -0x498(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movdqa -0x4d0(%rbp), %xmm0
movq %rax, -0x388(%rbp)
movdqa %xmm0, -0x3a0(%rbp)
movdqa -0x3a0(%rbp), %xmm0
movq -0x388(%rbp), %rax
movdqa %xmm0, (%rax)
movq -0x528(%rbp), %rax
movslq -0x498(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movdqa -0x4d0(%rbp), %xmm0
movq %rax, -0x3a8(%rbp)
movdqa %xmm0, -0x3c0(%rbp)
movdqa -0x3c0(%rbp), %xmm0
movq -0x3a8(%rbp), %rax
movdqa %xmm0, (%rax)
movq -0x540(%rbp), %rax
movslq -0x498(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movdqa -0x4d0(%rbp), %xmm0
movq %rax, -0x3c8(%rbp)
movdqa %xmm0, -0x3e0(%rbp)
movdqa -0x3e0(%rbp), %xmm0
movq -0x3c8(%rbp), %rax
movdqa %xmm0, (%rax)
movl -0x498(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x498(%rbp)
jmp 0x329ed
movl $0x0, -0x498(%rbp)
movl -0x498(%rbp), %eax
cmpl -0x47c(%rbp), %eax
jge 0x334c8
movaps -0x4d0(%rbp), %xmm0
movaps %xmm0, -0x590(%rbp)
movaps -0x4d0(%rbp), %xmm0
movaps %xmm0, -0x5a0(%rbp)
movq -0x478(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x488(%rbp), %rcx
movslq -0x498(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movl -0x494(%rbp), %edx
imull %edx, %ecx
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x5a8(%rbp)
movq -0x528(%rbp), %rax
movslq -0x494(%rbp), %rcx
shlq $0x4, %rcx
leaq -0x10(%rax,%rcx), %rax
movq %rax, -0x358(%rbp)
movq -0x358(%rbp), %rax
movaps (%rax), %xmm0
movaps %xmm0, -0x570(%rbp)
movaps -0x570(%rbp), %xmm0
pslldq $0x1, %xmm0             # xmm0 = zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]
movdqa %xmm0, -0x570(%rbp)
movl $0x0, -0x544(%rbp)
movl -0x544(%rbp), %eax
cmpl -0x494(%rbp), %eax
setl %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x32f4f
movdqa -0x570(%rbp), %xmm1
movq -0x5a8(%rbp), %rax
movslq -0x544(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x360(%rbp)
movq -0x360(%rbp), %rax
movdqa (%rax), %xmm0
movdqa %xmm1, -0x340(%rbp)
movdqa %xmm0, -0x350(%rbp)
movdqa -0x340(%rbp), %xmm0
movdqa -0x350(%rbp), %xmm1
paddusb %xmm1, %xmm0
movdqa %xmm0, -0x570(%rbp)
movdqa -0x570(%rbp), %xmm1
movdqa -0x520(%rbp), %xmm0
movdqa %xmm1, -0x240(%rbp)
movdqa %xmm0, -0x250(%rbp)
movdqa -0x240(%rbp), %xmm0
movdqa -0x250(%rbp), %xmm1
psubusb %xmm1, %xmm0
movdqa %xmm0, -0x570(%rbp)
movq -0x538(%rbp), %rax
movslq -0x544(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x368(%rbp)
movq -0x368(%rbp), %rax
movdqa (%rax), %xmm0
movdqa %xmm0, -0x560(%rbp)
movdqa -0x570(%rbp), %xmm1
movdqa -0x560(%rbp), %xmm0
movdqa %xmm1, -0x100(%rbp)
movdqa %xmm0, -0x110(%rbp)
movdqa -0x100(%rbp), %xmm0
movdqa -0x110(%rbp), %xmm1
pmaxub %xmm1, %xmm0
movdqa %xmm0, -0x570(%rbp)
movdqa -0x570(%rbp), %xmm1
movdqa -0x590(%rbp), %xmm0
movdqa %xmm1, -0x120(%rbp)
movdqa %xmm0, -0x130(%rbp)
movdqa -0x120(%rbp), %xmm0
movdqa -0x130(%rbp), %xmm1
pmaxub %xmm1, %xmm0
movdqa %xmm0, -0x570(%rbp)
movdqa -0x5a0(%rbp), %xmm1
movdqa -0x570(%rbp), %xmm0
movdqa %xmm1, -0x140(%rbp)
movdqa %xmm0, -0x150(%rbp)
movdqa -0x140(%rbp), %xmm0
movdqa -0x150(%rbp), %xmm1
pmaxub %xmm1, %xmm0
movdqa %xmm0, -0x5a0(%rbp)
movq -0x530(%rbp), %rax
movslq -0x544(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movdqa -0x570(%rbp), %xmm0
movq %rax, -0x3e8(%rbp)
movdqa %xmm0, -0x400(%rbp)
movdqa -0x400(%rbp), %xmm0
movq -0x3e8(%rbp), %rax
movdqa %xmm0, (%rax)
movdqa -0x560(%rbp), %xmm1
movdqa -0x4f0(%rbp), %xmm0
movdqa %xmm1, -0x260(%rbp)
movdqa %xmm0, -0x270(%rbp)
movdqa -0x260(%rbp), %xmm0
movdqa -0x270(%rbp), %xmm1
psubusb %xmm1, %xmm0
movdqa %xmm0, -0x560(%rbp)
movdqa -0x570(%rbp), %xmm1
movdqa -0x4e0(%rbp), %xmm0
movdqa %xmm1, -0x280(%rbp)
movdqa %xmm0, -0x290(%rbp)
movdqa -0x280(%rbp), %xmm0
movdqa -0x290(%rbp), %xmm1
psubusb %xmm1, %xmm0
movdqa %xmm0, -0x580(%rbp)
movdqa -0x560(%rbp), %xmm1
movdqa -0x580(%rbp), %xmm0
movdqa %xmm1, -0x160(%rbp)
movdqa %xmm0, -0x170(%rbp)
movdqa -0x160(%rbp), %xmm0
movdqa -0x170(%rbp), %xmm1
pmaxub %xmm1, %xmm0
movdqa %xmm0, -0x560(%rbp)
movq -0x538(%rbp), %rax
movslq -0x544(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movdqa -0x560(%rbp), %xmm0
movq %rax, -0x408(%rbp)
movdqa %xmm0, -0x420(%rbp)
movdqa -0x420(%rbp), %xmm0
movq -0x408(%rbp), %rax
movdqa %xmm0, (%rax)
movdqa -0x590(%rbp), %xmm1
movdqa -0x510(%rbp), %xmm0
movdqa %xmm1, -0x2a0(%rbp)
movdqa %xmm0, -0x2b0(%rbp)
movdqa -0x2a0(%rbp), %xmm0
movdqa -0x2b0(%rbp), %xmm1
psubusb %xmm1, %xmm0
movdqa %xmm0, -0x590(%rbp)
movdqa -0x570(%rbp), %xmm1
movdqa -0x500(%rbp), %xmm0
movdqa %xmm1, -0x2c0(%rbp)
movdqa %xmm0, -0x2d0(%rbp)
movdqa -0x2c0(%rbp), %xmm0
movdqa -0x2d0(%rbp), %xmm1
psubusb %xmm1, %xmm0
movdqa %xmm0, -0x580(%rbp)
movdqa -0x590(%rbp), %xmm1
movdqa -0x580(%rbp), %xmm0
movdqa %xmm1, -0x180(%rbp)
movdqa %xmm0, -0x190(%rbp)
movdqa -0x180(%rbp), %xmm0
movdqa -0x190(%rbp), %xmm1
pmaxub %xmm1, %xmm0
movdqa %xmm0, -0x590(%rbp)
movq -0x528(%rbp), %rax
movslq -0x544(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x370(%rbp)
movq -0x370(%rbp), %rax
movdqa (%rax), %xmm0
movdqa %xmm0, -0x570(%rbp)
movl -0x544(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x544(%rbp)
jmp 0x32b8c
movl $0x0, -0x548(%rbp)
cmpl $0x10, -0x548(%rbp)
setl %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x33170
movaps -0x590(%rbp), %xmm0
pslldq $0x1, %xmm0             # xmm0 = zero,xmm0[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]
movdqa %xmm0, -0x590(%rbp)
movl $0x0, -0x544(%rbp)
movl -0x544(%rbp), %eax
cmpl -0x494(%rbp), %eax
setl %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x3315a
movq -0x530(%rbp), %rax
movslq -0x544(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x378(%rbp)
movq -0x378(%rbp), %rax
movaps (%rax), %xmm0
movaps %xmm0, -0x570(%rbp)
movaps -0x570(%rbp), %xmm1
movaps -0x590(%rbp), %xmm0
movaps %xmm1, -0x1a0(%rbp)
movaps %xmm0, -0x1b0(%rbp)
movaps -0x1a0(%rbp), %xmm0
movaps -0x1b0(%rbp), %xmm1
pmaxub %xmm1, %xmm0
movaps %xmm0, -0x570(%rbp)
movq -0x530(%rbp), %rax
movslq -0x544(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movaps -0x570(%rbp), %xmm0
movq %rax, -0x428(%rbp)
movaps %xmm0, -0x440(%rbp)
movaps -0x440(%rbp), %xmm0
movq -0x428(%rbp), %rax
movaps %xmm0, (%rax)
movaps -0x570(%rbp), %xmm1
movaps -0x500(%rbp), %xmm0
movaps %xmm1, -0x2e0(%rbp)
movaps %xmm0, -0x2f0(%rbp)
movaps -0x2e0(%rbp), %xmm0
movaps -0x2f0(%rbp), %xmm1
psubusb %xmm1, %xmm0
movaps %xmm0, -0x570(%rbp)
movaps -0x590(%rbp), %xmm1
movaps -0x510(%rbp), %xmm0
movaps %xmm1, -0x300(%rbp)
movaps %xmm0, -0x310(%rbp)
movaps -0x300(%rbp), %xmm0
movaps -0x310(%rbp), %xmm1
psubusb %xmm1, %xmm0
movaps %xmm0, -0x590(%rbp)
movaps -0x590(%rbp), %xmm1
movaps -0x570(%rbp), %xmm0
movaps %xmm1, -0x320(%rbp)
movaps %xmm0, -0x330(%rbp)
movaps -0x320(%rbp), %xmm1
movaps -0x330(%rbp), %xmm0
psubusb %xmm0, %xmm1
movaps -0x4d0(%rbp), %xmm0
movaps %xmm1, -0xd0(%rbp)
movaps %xmm0, -0xe0(%rbp)
movaps -0xd0(%rbp), %xmm0
movaps -0xe0(%rbp), %xmm1
pcmpeqb %xmm1, %xmm0
movdqa %xmm0, -0xf0(%rbp)
movdqa -0xf0(%rbp), %xmm0
pmovmskb %xmm0, %eax
movl %eax, -0x54c(%rbp)
cmpl $0xffff, -0x54c(%rbp)   # imm = 0xFFFF
sete %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x33144
jmp 0x33172
jmp 0x33146
movl -0x544(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x544(%rbp)
jmp 0x32f92
jmp 0x3315c
movl -0x548(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x548(%rbp)
jmp 0x32f59
jmp 0x33172
jmp 0x33174
movaps -0x5a0(%rbp), %xmm1
movaps %xmm1, %xmm0
psrldq $0x8, %xmm0             # xmm0 = xmm0[8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero
movaps %xmm1, -0x1c0(%rbp)
movaps %xmm0, -0x1d0(%rbp)
movaps -0x1c0(%rbp), %xmm0
movaps -0x1d0(%rbp), %xmm1
pmaxub %xmm1, %xmm0
movaps %xmm0, -0x5a0(%rbp)
movaps -0x5a0(%rbp), %xmm1
movaps %xmm1, %xmm0
psrldq $0x4, %xmm0             # xmm0 = xmm0[4,5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero
movaps %xmm1, -0x1e0(%rbp)
movaps %xmm0, -0x1f0(%rbp)
movaps -0x1e0(%rbp), %xmm0
movaps -0x1f0(%rbp), %xmm1
pmaxub %xmm1, %xmm0
movaps %xmm0, -0x5a0(%rbp)
movaps -0x5a0(%rbp), %xmm1
movaps %xmm1, %xmm0
psrldq $0x2, %xmm0             # xmm0 = xmm0[2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero,zero
movaps %xmm1, -0x200(%rbp)
movaps %xmm0, -0x210(%rbp)
movaps -0x200(%rbp), %xmm0
movaps -0x210(%rbp), %xmm1
pmaxub %xmm1, %xmm0
movaps %xmm0, -0x5a0(%rbp)
movaps -0x5a0(%rbp), %xmm1
movaps %xmm1, %xmm0
psrldq $0x1, %xmm0             # xmm0 = xmm0[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],zero
movaps %xmm1, -0x220(%rbp)
movaps %xmm0, -0x230(%rbp)
movaps -0x220(%rbp), %xmm0
movaps -0x230(%rbp), %xmm1
pmaxub %xmm1, %xmm0
movaps %xmm0, -0x5a0(%rbp)
movl -0x5a0(%rbp), %eax
movzwl %ax, %eax
andl $0xff, %eax
movl %eax, -0x550(%rbp)
movl -0x550(%rbp), %eax
cmpl -0x4ac(%rbp), %eax
jl 0x3339c
cmpl $0x0, -0x4a0(%rbp)
je 0x332a1
movq -0x4b8(%rbp), %rax
movl -0x4a0(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
addl $0x1, %eax
cmpl -0x498(%rbp), %eax
je 0x33349
movl -0x4a0(%rbp), %eax
cmpl -0x49c(%rbp), %eax
jne 0x33313
cmpl $0x0, -0x49c(%rbp)
je 0x332c8
movl -0x49c(%rbp), %eax
shll %eax
movl %eax, -0x5f4(%rbp)
jmp 0x332d5
movl $0x8, %eax
movl %eax, -0x5f4(%rbp)
jmp 0x332d5
movl -0x5f4(%rbp), %eax
movl %eax, -0x49c(%rbp)
movq -0x4b8(%rbp), %rdi
movl -0x49c(%rbp), %eax
shll $0x3, %eax
movslq %eax, %rsi
leaq 0x81fd(%rip), %rdx      # 0x3b4f8
movl $0xc5, %ecx
leaq 0x8201(%rip), %r8       # 0x3b508
callq 0x31d40
movq %rax, -0x4b8(%rbp)
movslq -0x550(%rbp), %rdx
shlq $0x20, %rdx
movslq -0x498(%rbp), %rax
orq %rax, %rdx
movq -0x4b8(%rbp), %rax
movl -0x4a0(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x4a0(%rbp)
movslq %ecx, %rcx
movq %rdx, (%rax,%rcx,8)
jmp 0x3339a
movq -0x4b8(%rbp), %rax
movl -0x4a0(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
cmpl -0x550(%rbp), %eax
jge 0x33398
movslq -0x550(%rbp), %rdx
shlq $0x20, %rdx
movslq -0x498(%rbp), %rax
orq %rax, %rdx
movq -0x4b8(%rbp), %rax
movl -0x4a0(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq %rdx, (%rax,%rcx,8)
jmp 0x3339a
jmp 0x3339c
movl -0x550(%rbp), %eax
cmpl -0x4a8(%rbp), %eax
jle 0x3348a
movl -0x550(%rbp), %eax
movl %eax, -0x4a8(%rbp)
movl -0x498(%rbp), %eax
movl %eax, -0x4a4(%rbp)
movl $0x0, -0x544(%rbp)
movl -0x544(%rbp), %eax
cmpl -0x494(%rbp), %eax
setl %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x3345e
movq -0x540(%rbp), %rax
movslq -0x544(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq -0x530(%rbp), %rcx
movslq -0x544(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq %rcx, -0x380(%rbp)
movq -0x380(%rbp), %rcx
movdqa (%rcx), %xmm0
movq %rax, -0x448(%rbp)
movdqa %xmm0, -0x460(%rbp)
movdqa -0x460(%rbp), %xmm0
movq -0x448(%rbp), %rax
movdqa %xmm0, (%rax)
movl -0x544(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x544(%rbp)
jmp 0x333d0
movl -0x4a8(%rbp), %eax
movq -0x478(%rbp), %rcx
movzbl 0x8(%rcx), %ecx
addl %ecx, %eax
cmpl $0xff, %eax
jge 0x33486
movl -0x4a8(%rbp), %eax
cmpl -0x4b0(%rbp), %eax
jl 0x33488
jmp 0x334c8
jmp 0x3348a
movq -0x530(%rbp), %rax
movq %rax, -0x5a8(%rbp)
movq -0x528(%rbp), %rax
movq %rax, -0x530(%rbp)
movq -0x5a8(%rbp), %rax
movq %rax, -0x528(%rbp)
movl -0x498(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x498(%rbp)
jmp 0x32ada
movl -0x4a8(%rbp), %eax
movq -0x478(%rbp), %rcx
movzbl 0x8(%rcx), %ecx
addl %ecx, %eax
cmpl $0xff, %eax
jge 0x334f0
movl -0x4a8(%rbp), %eax
movl %eax, -0x5f8(%rbp)
jmp 0x334fd
movl $0xff, %eax
movl %eax, -0x5f8(%rbp)
jmp 0x334fd
movq -0x5e0(%rbp), %rax
movl -0x5f8(%rbp), %ecx
movl %ecx, (%rax)
movl -0x4a4(%rbp), %ecx
movl %ecx, 0x4(%rax)
cmpl $0xff, (%rax)
je 0x3375c
movl $0xffffffff, -0x5ac(%rbp) # imm = 0xFFFFFFFF
movl -0x494(%rbp), %eax
shll $0x4, %eax
movl %eax, -0x5bc(%rbp)
movq -0x540(%rbp), %rax
movq %rax, -0x5c8(%rbp)
movl $0x0, -0x498(%rbp)
movl -0x498(%rbp), %eax
cmpl -0x5bc(%rbp), %eax
jge 0x33648
movq -0x5c8(%rbp), %rax
movzbl (%rax), %eax
cmpl -0x5ac(%rbp), %eax
jle 0x335b9
movq -0x5c8(%rbp), %rax
movzbl (%rax), %eax
movl %eax, -0x5ac(%rbp)
movl -0x498(%rbp), %eax
movl $0x10, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x498(%rbp), %eax
movl $0x10, %esi
cltd
idivl %esi
movq -0x5e0(%rbp), %rax
imull -0x494(%rbp), %edx
addl %edx, %ecx
movl %ecx, 0x8(%rax)
jmp 0x33620
movq -0x5c8(%rbp), %rax
movzbl (%rax), %eax
cmpl -0x5ac(%rbp), %eax
jne 0x3361e
movq -0x5e0(%rbp), %rcx
movl -0x498(%rbp), %eax
movl $0x10, %esi
cltd
idivl %esi
movl %eax, -0x5fc(%rbp)
movl -0x498(%rbp), %eax
movl $0x10, %esi
cltd
idivl %esi
movl -0x5fc(%rbp), %eax
imull -0x494(%rbp), %edx
addl %edx, %eax
movl %eax, -0x5b0(%rbp)
cmpl 0x8(%rcx), %eax
jge 0x3361e
movq -0x5e0(%rbp), %rax
movl -0x5b0(%rbp), %ecx
movl %ecx, 0x8(%rax)
jmp 0x33620
jmp 0x33622
movl -0x498(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x498(%rbp)
movq -0x5c8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x5c8(%rbp)
jmp 0x33552
cmpq $0x0, -0x4b8(%rbp)
je 0x3375a
movq -0x5e0(%rbp), %rax
movl (%rax), %eax
movq -0x478(%rbp), %rcx
movzbl 0xa(%rcx), %ecx
addl %ecx, %eax
subl $0x1, %eax
movq -0x478(%rbp), %rcx
movzbl 0xa(%rcx), %ecx
cltd
idivl %ecx
movl %eax, -0x498(%rbp)
movl -0x4a4(%rbp), %eax
subl -0x498(%rbp), %eax
movl %eax, -0x5b4(%rbp)
movl -0x4a4(%rbp), %eax
addl -0x498(%rbp), %eax
movl %eax, -0x5b8(%rbp)
movl $0x0, -0x498(%rbp)
movl -0x498(%rbp), %eax
cmpl -0x4a0(%rbp), %eax
jge 0x33758
movq -0x4b8(%rbp), %rax
movslq -0x498(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl %eax, -0x5cc(%rbp)
movl -0x5cc(%rbp), %eax
cmpl -0x5b4(%rbp), %eax
jl 0x336f7
movl -0x5cc(%rbp), %eax
cmpl -0x5b8(%rbp), %eax
jle 0x33742
movq -0x5e0(%rbp), %rcx
movq -0x4b8(%rbp), %rax
movslq -0x498(%rbp), %rdx
movq (%rax,%rdx,8), %rax
shrq $0x20, %rax
cmpl 0xc(%rcx), %eax
jle 0x33742
movq -0x5e0(%rbp), %rax
movq -0x4b8(%rbp), %rcx
movslq -0x498(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
movl %ecx, 0xc(%rax)
movl -0x5cc(%rbp), %ecx
movl %ecx, 0x10(%rax)
jmp 0x33744
movl -0x498(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x498(%rbp)
jmp 0x336b1
jmp 0x3375a
jmp 0x3375c
movq -0x4b8(%rbp), %rdi
callq 0x3380
movq -0x5d8(%rbp), %rax
addq $0x600, %rsp            # imm = 0x600
popq %rbp
retq
nopl (%rax,%rax)