// File: chhylp123[P]hifiasm/./Levenshtein_distance.h
// Function: Reserve_Banded_BPM_4_SSE_only(char*, char*, char*, char*, int, char*, int, int*, unsigned int*, unsigned short, long long vector[2]*)
inline int Reserve_Banded_BPM_4_SSE_only(char *pattern1, char *pattern2, char *pattern3, char *pattern4, int p_length, char *text, int t_length,
	int* return_sites, unsigned int* return_sites_error, unsigned short errthold, __m128i* Peq_SSE)

{
	memset(return_sites, -1, sizeof(int)* 4);
	memset(return_sites_error, -1, sizeof(unsigned int)* 4);

	Word_32 Peq[256][4];
	int band_length = (errthold << 1) + 1;


	int i;

	Word_32 tmp_Peq_1 = 1;


	memset(Peq[(uint8_t)'A'], 0, sizeof(Word_32)* 4);
	memset(Peq[(uint8_t)'C'], 0, sizeof(Word_32)* 4);
	memset(Peq[(uint8_t)'G'], 0, sizeof(Word_32)* 4);
	memset(Peq[(uint8_t)'T'], 0, sizeof(Word_32)* 4);

	for (i = 0; i<band_length; i++)
	{
		Peq[(uint8_t)pattern1[i]][0] = Peq[(uint8_t)pattern1[i]][0] | tmp_Peq_1;
		Peq[(uint8_t)pattern2[i]][1] = Peq[(uint8_t)pattern2[i]][1] | tmp_Peq_1;
		Peq[(uint8_t)pattern3[i]][2] = Peq[(uint8_t)pattern3[i]][2] | tmp_Peq_1;
		Peq[(uint8_t)pattern4[i]][3] = Peq[(uint8_t)pattern4[i]][3] | tmp_Peq_1;

		tmp_Peq_1 = tmp_Peq_1 << 1;
	}

	Peq_SSE[(uint8_t)'A'] = _mm_set_epi32(Peq[(uint8_t)'A'][3], Peq[(uint8_t)'A'][2], Peq[(uint8_t)'A'][1], Peq[(uint8_t)'A'][0]);
	Peq_SSE[(uint8_t)'C'] = _mm_set_epi32(Peq[(uint8_t)'C'][3], Peq[(uint8_t)'C'][2], Peq[(uint8_t)'C'][1], Peq[(uint8_t)'C'][0]);
	Peq_SSE[(uint8_t)'G'] = _mm_set_epi32(Peq[(uint8_t)'G'][3], Peq[(uint8_t)'G'][2], Peq[(uint8_t)'G'][1], Peq[(uint8_t)'G'][0]);
	Peq_SSE[(uint8_t)'T'] = _mm_set_epi32(Peq[(uint8_t)'T'][3], Peq[(uint8_t)'T'][2], Peq[(uint8_t)'T'][1], Peq[(uint8_t)'T'][0]);
	///Peq_SSE[(uint8_t)'T'] = _mm_or_si128(Peq_SSE[(uint8_t)'T'], Peq_SSE[(uint8_t)'C']);

	Word_32 Mask = ((Word_32)1 << (errthold << 1));

	__m128i Mask1 = _mm_set_epi32(0, 0, 0, Mask);
	__m128i Mask2 = _mm_set_epi32(0, 0, Mask, 0);
	__m128i Mask3 = _mm_set_epi32(0, Mask, 0, 0);
	__m128i Mask4 = _mm_set_epi32(Mask, 0, 0, 0);


	__m128i VP = _mm_setzero_si128();
	__m128i VN = _mm_setzero_si128();
	__m128i X = _mm_setzero_si128();
	__m128i D0 = _mm_setzero_si128();
	__m128i HN = _mm_setzero_si128();
	__m128i HP = _mm_setzero_si128();
	__m128i tmp_process;
	__m128i tmp_process1;



	__m128i Err_4 = _mm_setzero_si128();
	__m128i err_mask = _mm_set_epi32(1, 1, 1, 1);
	///for_not li quan shi 1
	__m128i for_not = _mm_set1_epi32(-1);
	__m128i err_arry;
	__m128i cmp_result;


	int i_bd = (errthold << 1);
	int last_high = (errthold << 1);
	int t_length_1 = t_length - 1;
	int err1;
	int err2;
	int err3;
	int err4;

	__m128i pre_end = _mm_set_epi32
		(last_high + errthold, last_high + errthold, last_high + errthold, last_high + errthold);
	i = 0;

	while (i<t_length_1)
	{
		///X = Peq[text[i]] | VN;
		X = _mm_or_si128(Peq_SSE[(uint8_t)text[i]], VN);



		/*************D0 = ((VP + (X&VP)) ^ VP) | X*********************/
		///X&VP
		tmp_process1 = _mm_and_si128(X, VP);
		///(VP + (X&VP))
		tmp_process = _mm_add_epi32(tmp_process1, VP);
		///((VP + (X&VP)) ^ VP)
		tmp_process = _mm_xor_si128(tmp_process, VP);
		///((VP + (X&VP)) ^ VP) | X
		D0 = _mm_or_si128(tmp_process, X);
		/*************D0 = ((VP + (X&VP)) ^ VP) | X*********************/

		///HN = VP&D0;
		HN = _mm_and_si128(D0, VP);

		///HP = VN | ~(VP | D0);
		tmp_process = _mm_or_si128(D0, VP);
		tmp_process = _mm_andnot_si128(tmp_process, for_not);
		HP = _mm_or_si128(tmp_process, VN);

		///X = D0 >> 1;
		X = _mm_srli_epi32(D0, 1);
		///VN = X&HP;
		VN = _mm_and_si128(X, HP);
		///VP = HN | ~(X | HP);
		tmp_process = _mm_or_si128(X, HP);
		tmp_process = _mm_andnot_si128(tmp_process, for_not);
		VP = _mm_or_si128(HN, tmp_process);

		///D0&err_mask
		err_arry = _mm_and_si128(D0, err_mask);
		Err_4 = _mm_add_epi32(Err_4, err_mask);
		Err_4 = _mm_sub_epi32(Err_4, err_arry);

		/**************** */
		///shi ji shang zhe ge zhi hen xiao d
		cmp_result = _mm_cmpgt_epi32(Err_4, pre_end);

		///jian zhi
		if (_mm_extract_epi32(cmp_result, 0) && _mm_extract_epi32(cmp_result, 1)
			&& _mm_extract_epi32(cmp_result, 2) && _mm_extract_epi32(cmp_result, 3))
			return 1;
		/**************** */


		Peq_SSE[(uint8_t)'A'] = _mm_srli_epi32(Peq_SSE[(uint8_t)'A'], 1);
		Peq_SSE[(uint8_t)'T'] = _mm_srli_epi32(Peq_SSE[(uint8_t)'T'], 1);
		Peq_SSE[(uint8_t)'G'] = _mm_srli_epi32(Peq_SSE[(uint8_t)'G'], 1);
		Peq_SSE[(uint8_t)'C'] = _mm_srli_epi32(Peq_SSE[(uint8_t)'C'], 1);

		++i;
		++i_bd;

		Peq_SSE[(uint8_t)pattern1[i_bd]] = _mm_or_si128(Mask1, Peq_SSE[(uint8_t)pattern1[i_bd]]);
		Peq_SSE[(uint8_t)pattern2[i_bd]] = _mm_or_si128(Mask2, Peq_SSE[(uint8_t)pattern2[i_bd]]);
		Peq_SSE[(uint8_t)pattern3[i_bd]] = _mm_or_si128(Mask3, Peq_SSE[(uint8_t)pattern3[i_bd]]);
		Peq_SSE[(uint8_t)pattern4[i_bd]] = _mm_or_si128(Mask4, Peq_SSE[(uint8_t)pattern4[i_bd]]);
		///Peq_SSE[(uint8_t)'T'] = _mm_or_si128(Peq_SSE[(uint8_t)'T'], Peq_SSE[(uint8_t)'C']);
	}



		///X = Peq[text[i]] | VN;
	X = _mm_or_si128(Peq_SSE[(uint8_t)text[i]], VN);

	/*************D0 = ((VP + (X&VP)) ^ VP) | X*********************/
	///X&VP
	tmp_process1 = _mm_and_si128(X, VP);
	///(VP + (X&VP))
	tmp_process = _mm_add_epi32(tmp_process1, VP);
	///((VP + (X&VP)) ^ VP)
	tmp_process = _mm_xor_si128(tmp_process, VP);
	///((VP + (X&VP)) ^ VP) | X
	D0 = _mm_or_si128(tmp_process, X);
	/*************D0 = ((VP + (X&VP)) ^ VP) | X*********************/

	///HN = VP&D0;
	HN = _mm_and_si128(D0, VP);

	///HP = VN | ~(VP | D0);
	tmp_process = _mm_or_si128(D0, VP);
	tmp_process = _mm_andnot_si128(tmp_process, for_not);
	HP = _mm_or_si128(tmp_process, VN);


	///X = D0 >> 1;
	X = _mm_srli_epi32(D0, 1);
	///VN = X&HP;
	VN = _mm_and_si128(X, HP);
	///VP = HN | ~(X | HP);
	tmp_process = _mm_or_si128(X, HP);
	tmp_process = _mm_andnot_si128(tmp_process, for_not);
	VP = _mm_or_si128(HN, tmp_process);

	///D0&err_mask
	err_arry = _mm_and_si128(D0, err_mask);
	Err_4 = _mm_add_epi32(Err_4, err_mask);
	Err_4 = _mm_sub_epi32(Err_4, err_arry);

	///shi ji shang zhe ge zhi hen xiao d
	cmp_result = _mm_cmpgt_epi32(Err_4, pre_end);

	///jian zhi
	if (_mm_extract_epi32(cmp_result, 0) && _mm_extract_epi32(cmp_result, 1)
		&& _mm_extract_epi32(cmp_result, 2) && _mm_extract_epi32(cmp_result, 3))
		return 1;

	int site = t_length - 1;
	err1 = _mm_extract_epi32(Err_4, 0);
	err2 = _mm_extract_epi32(Err_4, 1);
	err3 = _mm_extract_epi32(Err_4, 2);
	err4 = _mm_extract_epi32(Err_4, 3);


	if ((err1 <= (int)errthold) && ((unsigned int)err1 <= return_sites_error[0]))
	{
		return_sites[0] = site;
		return_sites_error[0] = err1;
	}
	if ((err2 <= (int)errthold) && ((unsigned int)err2 <= return_sites_error[1]))
	{
		return_sites[1] = site;
		return_sites_error[1] = err2;
	}
	if ((err3 <= (int)errthold) && ((unsigned int)err3 <= return_sites_error[2]))
	{
		return_sites[2] = site;
		return_sites_error[2] = err3;
	}
	if ((err4 <= (int)errthold) && ((unsigned int)err4 <= return_sites_error[3]))
	{
		return_sites[3] = site;
		return_sites_error[3] = err4;
	}


	i = 0;

	/****************************may have bugs********************************/
	unsigned int ungap_error1 = (unsigned int)-1;
	unsigned int ungap_error2 = (unsigned int)-1;
	unsigned int ungap_error3 = (unsigned int)-1;
	unsigned int ungap_error4 = (unsigned int)-1;
	/****************************may have bugs********************************/


	///in most cases, p_length should be t_length + 2 * errthold
	int available_i = p_length - t_length;

	while (i < available_i)
	{
		///err = err + ((VP >> i)&(Word_32)1);
		tmp_process = _mm_srli_epi32(VP, i);
		tmp_process = _mm_and_si128(tmp_process, err_mask);
		Err_4 = _mm_add_epi32(Err_4, tmp_process);

		///err = err - ((VN >> i)&(Word_32)1);
		tmp_process1 = _mm_srli_epi32(VN, i);
		tmp_process1 = _mm_and_si128(tmp_process1, err_mask);
		Err_4 = _mm_sub_epi32(Err_4, tmp_process1);
		++i;

		err1 = _mm_extract_epi32(Err_4, 0);
		err2 = _mm_extract_epi32(Err_4, 1);
		err3 = _mm_extract_epi32(Err_4, 2);
		err4 = _mm_extract_epi32(Err_4, 3);


		if ((err1 <= (int)errthold) && ((unsigned int)err1 <= return_sites_error[0]))
		{
			return_sites[0] = site + i;
			return_sites_error[0] = err1;
		}
		if ((err2 <= (int)errthold) && ((unsigned int)err2 <= return_sites_error[1]))
		{
			return_sites[1] = site + i;
			return_sites_error[1] = err2;
		}
		if ((err3 <= (int)errthold) && ((unsigned int)err3 <= return_sites_error[2]))
		{
			return_sites[2] = site + i;
			return_sites_error[2] = err3;
		}
		if ((err4 <= (int)errthold) && ((unsigned int)err4 <= return_sites_error[3]))
		{
			return_sites[3] = site + i;
			return_sites_error[3] = err4;
		}

		/****************************may have bugs********************************/
		if(i == (int)errthold)
		{
			ungap_error1 = err1;
			ungap_error2 = err2;
			ungap_error3 = err3;
			ungap_error4 = err4;
		}
		/****************************may have bugs********************************/
	}

	/****************************may have bugs********************************/
	if((ungap_error1<=errthold) && (ungap_error1 == return_sites_error[0]))
	{
		return_sites[0] = site + errthold;
	}

	if((ungap_error2<=errthold) && (ungap_error2 == return_sites_error[1]))
	{
		return_sites[1] = site + errthold;
	}

	if((ungap_error3<=errthold) && (ungap_error3 == return_sites_error[2]))
	{
		return_sites[2] = site + errthold;
	}

	if((ungap_error4<=errthold) && (ungap_error4 == return_sites_error[3]))
	{
		return_sites[3] = site + errthold;
	}
	/****************************may have bugs********************************/

	return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x19d0, %rsp           # imm = 0x19D0
movq 0x30(%rbp), %rax
movw 0x28(%rbp), %ax
movq 0x20(%rbp), %rax
movq 0x18(%rbp), %rax
movl 0x10(%rbp), %eax
movq %rdi, -0x830(%rbp)
movq %rsi, -0x838(%rbp)
movq %rdx, -0x840(%rbp)
movq %rcx, -0x848(%rbp)
movl %r8d, -0x84c(%rbp)
movq %r9, -0x858(%rbp)
movq 0x18(%rbp), %rdi
movl $0xff, %esi
movl $0x10, %edx
callq 0x2100
movq 0x20(%rbp), %rdi
movl $0xff, %esi
movl $0x10, %edx
callq 0x2100
movzwl 0x28(%rbp), %eax
shll %eax
addl $0x1, %eax
movl %eax, -0x1864(%rbp)
movl $0x1, -0x186c(%rbp)
leaq -0x1860(%rbp), %rdi
addq $0x410, %rdi            # imm = 0x410
xorl %esi, %esi
movl $0x10, %edx
callq 0x2100
leaq -0x1860(%rbp), %rdi
addq $0x430, %rdi            # imm = 0x430
xorl %esi, %esi
movl $0x10, %edx
callq 0x2100
leaq -0x1860(%rbp), %rdi
addq $0x470, %rdi            # imm = 0x470
xorl %esi, %esi
movl $0x10, %edx
callq 0x2100
leaq -0x1860(%rbp), %rdi
addq $0x540, %rdi            # imm = 0x540
xorl %esi, %esi
movl $0x10, %edx
callq 0x2100
movl $0x0, -0x1868(%rbp)
movl -0x1868(%rbp), %eax
cmpl -0x1864(%rbp), %eax
jge 0x9cb8b
movq -0x830(%rbp), %rax
movslq -0x1868(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq -0x1860(%rbp), %rax
shlq $0x4, %rcx
addq %rcx, %rax
movl (%rax), %ecx
orl -0x186c(%rbp), %ecx
movq -0x830(%rbp), %rax
movslq -0x1868(%rbp), %rdx
movzbl (%rax,%rdx), %eax
movl %eax, %edx
leaq -0x1860(%rbp), %rax
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movq -0x838(%rbp), %rax
movslq -0x1868(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq -0x1860(%rbp), %rax
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x4(%rax), %ecx
orl -0x186c(%rbp), %ecx
movq -0x838(%rbp), %rax
movslq -0x1868(%rbp), %rdx
movzbl (%rax,%rdx), %eax
movl %eax, %edx
leaq -0x1860(%rbp), %rax
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movq -0x840(%rbp), %rax
movslq -0x1868(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq -0x1860(%rbp), %rax
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
orl -0x186c(%rbp), %ecx
movq -0x840(%rbp), %rax
movslq -0x1868(%rbp), %rdx
movzbl (%rax,%rdx), %eax
movl %eax, %edx
leaq -0x1860(%rbp), %rax
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movq -0x848(%rbp), %rax
movslq -0x1868(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq -0x1860(%rbp), %rax
shlq $0x4, %rcx
addq %rcx, %rax
movl 0xc(%rax), %ecx
orl -0x186c(%rbp), %ecx
movq -0x848(%rbp), %rax
movslq -0x1868(%rbp), %rdx
movzbl (%rax,%rdx), %eax
movl %eax, %edx
leaq -0x1860(%rbp), %rax
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
movl -0x186c(%rbp), %eax
shll %eax
movl %eax, -0x186c(%rbp)
movl -0x1868(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1868(%rbp)
jmp 0x9ca19
movl -0x1444(%rbp), %esi
movl -0x1448(%rbp), %edx
movl -0x1450(%rbp), %eax
movl -0x144c(%rbp), %ecx
movl %esi, -0x668(%rbp)
movl %edx, -0x66c(%rbp)
movl %ecx, -0x670(%rbp)
movl %eax, -0x674(%rbp)
movd -0x668(%rbp), %xmm0
movd -0x66c(%rbp), %xmm1
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movd -0x670(%rbp), %xmm2
movd -0x674(%rbp), %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
movaps %xmm0, -0x690(%rbp)
movaps -0x690(%rbp), %xmm0
movq 0x30(%rbp), %rax
movaps %xmm0, 0x410(%rax)
movl -0x1424(%rbp), %esi
movl -0x1428(%rbp), %edx
movl -0x1430(%rbp), %eax
movl -0x142c(%rbp), %ecx
movl %esi, -0x694(%rbp)
movl %edx, -0x698(%rbp)
movl %ecx, -0x69c(%rbp)
movl %eax, -0x6a0(%rbp)
movd -0x694(%rbp), %xmm0
movd -0x698(%rbp), %xmm1
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movd -0x69c(%rbp), %xmm2
movd -0x6a0(%rbp), %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
movaps %xmm0, -0x6b0(%rbp)
movaps -0x6b0(%rbp), %xmm0
movq 0x30(%rbp), %rax
movaps %xmm0, 0x430(%rax)
movl -0x13e4(%rbp), %esi
movl -0x13e8(%rbp), %edx
movl -0x13f0(%rbp), %eax
movl -0x13ec(%rbp), %ecx
movl %esi, -0x6b4(%rbp)
movl %edx, -0x6b8(%rbp)
movl %ecx, -0x6bc(%rbp)
movl %eax, -0x6c0(%rbp)
movd -0x6b4(%rbp), %xmm0
movd -0x6b8(%rbp), %xmm1
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movd -0x6bc(%rbp), %xmm2
movd -0x6c0(%rbp), %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
movaps %xmm0, -0x6d0(%rbp)
movaps -0x6d0(%rbp), %xmm0
movq 0x30(%rbp), %rax
movaps %xmm0, 0x470(%rax)
movl -0x1314(%rbp), %esi
movl -0x1318(%rbp), %edx
movl -0x1320(%rbp), %eax
movl -0x131c(%rbp), %ecx
movl %esi, -0x6d4(%rbp)
movl %edx, -0x6d8(%rbp)
movl %ecx, -0x6dc(%rbp)
movl %eax, -0x6e0(%rbp)
movd -0x6d4(%rbp), %xmm0
movd -0x6d8(%rbp), %xmm1
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movd -0x6dc(%rbp), %xmm2
movd -0x6e0(%rbp), %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
movaps %xmm0, -0x6f0(%rbp)
movaps -0x6f0(%rbp), %xmm0
movq 0x30(%rbp), %rax
movaps %xmm0, 0x540(%rax)
movb 0x28(%rbp), %cl
addb %cl, %cl
movl $0x1, %eax
shll %cl, %eax
movl %eax, -0x1870(%rbp)
movl -0x1870(%rbp), %eax
movl $0x0, -0x6f4(%rbp)
movl $0x0, -0x6f8(%rbp)
movl $0x0, -0x6fc(%rbp)
movl %eax, -0x700(%rbp)
movd -0x6f4(%rbp), %xmm0
movd -0x6f8(%rbp), %xmm1
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movd -0x6fc(%rbp), %xmm2
movd -0x700(%rbp), %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
movaps %xmm0, -0x710(%rbp)
movaps -0x710(%rbp), %xmm0
movaps %xmm0, -0x1880(%rbp)
movl -0x1870(%rbp), %eax
movl $0x0, -0x714(%rbp)
movl $0x0, -0x718(%rbp)
movl %eax, -0x71c(%rbp)
movl $0x0, -0x720(%rbp)
movd -0x714(%rbp), %xmm0
movd -0x718(%rbp), %xmm1
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movd -0x71c(%rbp), %xmm2
movd -0x720(%rbp), %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
movaps %xmm0, -0x730(%rbp)
movaps -0x730(%rbp), %xmm0
movaps %xmm0, -0x1890(%rbp)
movl -0x1870(%rbp), %eax
movl $0x0, -0x734(%rbp)
movl %eax, -0x738(%rbp)
movl $0x0, -0x73c(%rbp)
movl $0x0, -0x740(%rbp)
movd -0x734(%rbp), %xmm0
movd -0x738(%rbp), %xmm1
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movd -0x73c(%rbp), %xmm2
movd -0x740(%rbp), %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
movaps %xmm0, -0x750(%rbp)
movaps -0x750(%rbp), %xmm0
movaps %xmm0, -0x18a0(%rbp)
movl -0x1870(%rbp), %eax
movl %eax, -0x754(%rbp)
movl $0x0, -0x758(%rbp)
movl $0x0, -0x75c(%rbp)
movl $0x0, -0x760(%rbp)
movd -0x754(%rbp), %xmm0
movd -0x758(%rbp), %xmm1
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movd -0x75c(%rbp), %xmm2
movd -0x760(%rbp), %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
movaps %xmm0, -0x770(%rbp)
movaps -0x770(%rbp), %xmm0
movaps %xmm0, -0x18b0(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x7c0(%rbp)
movaps -0x7c0(%rbp), %xmm1
movaps %xmm1, -0x18c0(%rbp)
movaps %xmm0, -0x7d0(%rbp)
movaps -0x7d0(%rbp), %xmm1
movaps %xmm1, -0x18d0(%rbp)
movaps %xmm0, -0x7e0(%rbp)
movaps -0x7e0(%rbp), %xmm1
movaps %xmm1, -0x18e0(%rbp)
movaps %xmm0, -0x7f0(%rbp)
movaps -0x7f0(%rbp), %xmm1
movaps %xmm1, -0x18f0(%rbp)
movaps %xmm0, -0x800(%rbp)
movaps -0x800(%rbp), %xmm1
movaps %xmm1, -0x1900(%rbp)
movaps %xmm0, -0x810(%rbp)
movaps -0x810(%rbp), %xmm1
movaps %xmm1, -0x1910(%rbp)
movaps %xmm0, -0x820(%rbp)
movaps -0x820(%rbp), %xmm0
movaps %xmm0, -0x1940(%rbp)
movl $0x1, -0x774(%rbp)
movl $0x1, -0x778(%rbp)
movl $0x1, -0x77c(%rbp)
movl $0x1, -0x780(%rbp)
movd -0x774(%rbp), %xmm0
movd -0x778(%rbp), %xmm1
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movd -0x77c(%rbp), %xmm2
movd -0x780(%rbp), %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
movaps %xmm0, -0x790(%rbp)
movaps -0x790(%rbp), %xmm0
movaps %xmm0, -0x1950(%rbp)
movl $0xffffffff, -0x664(%rbp) # imm = 0xFFFFFFFF
movl -0x664(%rbp), %eax
movl %eax, -0x644(%rbp)
movl %eax, -0x648(%rbp)
movl %eax, -0x64c(%rbp)
movl %eax, -0x650(%rbp)
movd -0x644(%rbp), %xmm0
movd -0x648(%rbp), %xmm1
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movd -0x64c(%rbp), %xmm2
movd -0x650(%rbp), %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
movaps %xmm0, -0x660(%rbp)
movaps -0x660(%rbp), %xmm0
movaps %xmm0, -0x1960(%rbp)
movzwl 0x28(%rbp), %eax
addl %eax, %eax
movl %eax, -0x1984(%rbp)
movzwl 0x28(%rbp), %eax
addl %eax, %eax
movl %eax, -0x1988(%rbp)
movl 0x10(%rbp), %eax
decl %eax
movl %eax, -0x198c(%rbp)
movl -0x1988(%rbp), %eax
movzwl 0x28(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x794(%rbp)
movl %eax, -0x798(%rbp)
movl %eax, -0x79c(%rbp)
movl %eax, -0x7a0(%rbp)
movd -0x794(%rbp), %xmm0
movd -0x798(%rbp), %xmm1
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movd -0x79c(%rbp), %xmm2
movd -0x7a0(%rbp), %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
punpcklqdq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]
movdqa %xmm0, -0x7b0(%rbp)
movdqa -0x7b0(%rbp), %xmm0
movdqa %xmm0, -0x19b0(%rbp)
movl $0x0, -0x1868(%rbp)
movl -0x1868(%rbp), %eax
cmpl -0x198c(%rbp), %eax
jge 0x9d7e7
movq 0x30(%rbp), %rax
movq -0x858(%rbp), %rcx
movslq -0x1868(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
shll $0x4, %ecx
movaps (%rax,%rcx), %xmm1
movaps -0x18d0(%rbp), %xmm0
movaps %xmm1, -0x450(%rbp)
movaps %xmm0, -0x460(%rbp)
movaps -0x450(%rbp), %xmm0
movaps -0x460(%rbp), %xmm1
por %xmm1, %xmm0
movaps %xmm0, -0x18e0(%rbp)
movaps -0x18e0(%rbp), %xmm1
movaps -0x18c0(%rbp), %xmm0
movaps %xmm1, -0x310(%rbp)
movaps %xmm0, -0x320(%rbp)
movaps -0x310(%rbp), %xmm0
movaps -0x320(%rbp), %xmm1
pand %xmm1, %xmm0
movaps %xmm0, -0x1930(%rbp)
movaps -0x1930(%rbp), %xmm1
movaps -0x18c0(%rbp), %xmm0
movaps %xmm1, -0x270(%rbp)
movaps %xmm0, -0x280(%rbp)
movaps -0x270(%rbp), %xmm0
movaps -0x280(%rbp), %xmm1
paddd %xmm1, %xmm0
movaps %xmm0, -0x1920(%rbp)
movaps -0x1920(%rbp), %xmm1
movaps -0x18c0(%rbp), %xmm0
movaps %xmm1, -0x230(%rbp)
movaps %xmm0, -0x240(%rbp)
movaps -0x230(%rbp), %xmm0
movaps -0x240(%rbp), %xmm1
pxor %xmm1, %xmm0
movaps %xmm0, -0x1920(%rbp)
movaps -0x1920(%rbp), %xmm1
movaps -0x18e0(%rbp), %xmm0
movaps %xmm1, -0x470(%rbp)
movaps %xmm0, -0x480(%rbp)
movaps -0x470(%rbp), %xmm0
movaps -0x480(%rbp), %xmm1
por %xmm1, %xmm0
movaps %xmm0, -0x18f0(%rbp)
movaps -0x18f0(%rbp), %xmm1
movaps -0x18c0(%rbp), %xmm0
movaps %xmm1, -0x330(%rbp)
movaps %xmm0, -0x340(%rbp)
movaps -0x330(%rbp), %xmm0
movaps -0x340(%rbp), %xmm1
pand %xmm1, %xmm0
movaps %xmm0, -0x1900(%rbp)
movaps -0x18f0(%rbp), %xmm1
movaps -0x18c0(%rbp), %xmm0
movaps %xmm1, -0x490(%rbp)
movaps %xmm0, -0x4a0(%rbp)
movaps -0x490(%rbp), %xmm0
movaps -0x4a0(%rbp), %xmm1
por %xmm1, %xmm0
movaps %xmm0, -0x1920(%rbp)
movaps -0x1920(%rbp), %xmm1
movaps -0x1960(%rbp), %xmm0
movaps %xmm1, -0x1b0(%rbp)
movaps %xmm0, -0x1c0(%rbp)
movaps -0x1b0(%rbp), %xmm0
movaps -0x1c0(%rbp), %xmm1
pandn %xmm1, %xmm0
movaps %xmm0, -0x1920(%rbp)
movaps -0x1920(%rbp), %xmm1
movaps -0x18d0(%rbp), %xmm0
movaps %xmm1, -0x4b0(%rbp)
movaps %xmm0, -0x4c0(%rbp)
movaps -0x4b0(%rbp), %xmm0
movaps -0x4c0(%rbp), %xmm1
por %xmm1, %xmm0
movaps %xmm0, -0x1910(%rbp)
movaps -0x18f0(%rbp), %xmm0
movaps %xmm0, -0xb0(%rbp)
movl $0x1, -0xb4(%rbp)
movaps -0xb0(%rbp), %xmm0
movd -0xb4(%rbp), %xmm1
psrld %xmm1, %xmm0
movaps %xmm0, -0x18e0(%rbp)
movaps -0x18e0(%rbp), %xmm1
movaps -0x1910(%rbp), %xmm0
movaps %xmm1, -0x350(%rbp)
movaps %xmm0, -0x360(%rbp)
movaps -0x350(%rbp), %xmm0
movaps -0x360(%rbp), %xmm1
pand %xmm1, %xmm0
movaps %xmm0, -0x18d0(%rbp)
movaps -0x18e0(%rbp), %xmm1
movaps -0x1910(%rbp), %xmm0
movaps %xmm1, -0x4d0(%rbp)
movaps %xmm0, -0x4e0(%rbp)
movaps -0x4d0(%rbp), %xmm0
movaps -0x4e0(%rbp), %xmm1
por %xmm1, %xmm0
movaps %xmm0, -0x1920(%rbp)
movaps -0x1920(%rbp), %xmm1
movaps -0x1960(%rbp), %xmm0
movaps %xmm1, -0x1d0(%rbp)
movaps %xmm0, -0x1e0(%rbp)
movaps -0x1d0(%rbp), %xmm0
movaps -0x1e0(%rbp), %xmm1
pandn %xmm1, %xmm0
movaps %xmm0, -0x1920(%rbp)
movaps -0x1900(%rbp), %xmm1
movaps -0x1920(%rbp), %xmm0
movaps %xmm1, -0x4f0(%rbp)
movaps %xmm0, -0x500(%rbp)
movaps -0x4f0(%rbp), %xmm0
movaps -0x500(%rbp), %xmm1
por %xmm1, %xmm0
movaps %xmm0, -0x18c0(%rbp)
movaps -0x18f0(%rbp), %xmm1
movaps -0x1950(%rbp), %xmm0
movaps %xmm1, -0x370(%rbp)
movaps %xmm0, -0x380(%rbp)
movaps -0x370(%rbp), %xmm0
movaps -0x380(%rbp), %xmm1
pand %xmm1, %xmm0
movaps %xmm0, -0x1970(%rbp)
movaps -0x1940(%rbp), %xmm1
movaps -0x1950(%rbp), %xmm0
movaps %xmm1, -0x290(%rbp)
movaps %xmm0, -0x2a0(%rbp)
movaps -0x290(%rbp), %xmm0
movaps -0x2a0(%rbp), %xmm1
paddd %xmm1, %xmm0
movaps %xmm0, -0x1940(%rbp)
movaps -0x1940(%rbp), %xmm1
movaps -0x1970(%rbp), %xmm0
movaps %xmm1, -0x50(%rbp)
movaps %xmm0, -0x60(%rbp)
movaps -0x50(%rbp), %xmm0
movaps -0x60(%rbp), %xmm1
psubd %xmm1, %xmm0
movaps %xmm0, -0x1940(%rbp)
movaps -0x1940(%rbp), %xmm1
movaps -0x19b0(%rbp), %xmm0
movaps %xmm1, -0x10(%rbp)
movaps %xmm0, -0x20(%rbp)
movaps -0x10(%rbp), %xmm0
movaps -0x20(%rbp), %xmm1
pcmpgtd %xmm1, %xmm0
movaps %xmm0, -0x1980(%rbp)
movl -0x1980(%rbp), %eax
cmpl $0x0, %eax
je 0x9d51c
movl -0x197c(%rbp), %eax
cmpl $0x0, %eax
je 0x9d51c
movl -0x1978(%rbp), %eax
cmpl $0x0, %eax
je 0x9d51c
movl -0x1974(%rbp), %eax
cmpl $0x0, %eax
je 0x9d51c
movl $0x1, -0x824(%rbp)
jmp 0x9e0d4
movq 0x30(%rbp), %rax
movdqa 0x410(%rax), %xmm0
movdqa %xmm0, -0xd0(%rbp)
movl $0x1, -0xd4(%rbp)
movdqa -0xd0(%rbp), %xmm0
movl -0xd4(%rbp), %eax
movd %eax, %xmm1
psrld %xmm1, %xmm0
movq 0x30(%rbp), %rax
movdqa %xmm0, 0x410(%rax)
movq 0x30(%rbp), %rax
movdqa 0x540(%rax), %xmm0
movdqa %xmm0, -0xf0(%rbp)
movl $0x1, -0xf4(%rbp)
movdqa -0xf0(%rbp), %xmm0
movl -0xf4(%rbp), %eax
movd %eax, %xmm1
psrld %xmm1, %xmm0
movq 0x30(%rbp), %rax
movdqa %xmm0, 0x540(%rax)
movq 0x30(%rbp), %rax
movdqa 0x470(%rax), %xmm0
movdqa %xmm0, -0x110(%rbp)
movl $0x1, -0x114(%rbp)
movdqa -0x110(%rbp), %xmm0
movl -0x114(%rbp), %eax
movd %eax, %xmm1
psrld %xmm1, %xmm0
movq 0x30(%rbp), %rax
movdqa %xmm0, 0x470(%rax)
movq 0x30(%rbp), %rax
movdqa 0x430(%rax), %xmm0
movdqa %xmm0, -0x130(%rbp)
movl $0x1, -0x134(%rbp)
movdqa -0x130(%rbp), %xmm0
movl -0x134(%rbp), %eax
movd %eax, %xmm1
psrld %xmm1, %xmm0
movq 0x30(%rbp), %rax
movdqa %xmm0, 0x430(%rax)
movl -0x1868(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1868(%rbp)
movl -0x1984(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1984(%rbp)
movdqa -0x1880(%rbp), %xmm1
movq 0x30(%rbp), %rax
movq -0x830(%rbp), %rcx
movslq -0x1984(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movdqa (%rax), %xmm0
movdqa %xmm1, -0x510(%rbp)
movdqa %xmm0, -0x520(%rbp)
movdqa -0x510(%rbp), %xmm0
por -0x520(%rbp), %xmm0
movq 0x30(%rbp), %rax
movq -0x830(%rbp), %rcx
movslq -0x1984(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movdqa %xmm0, (%rax)
movdqa -0x1890(%rbp), %xmm1
movq 0x30(%rbp), %rax
movq -0x838(%rbp), %rcx
movslq -0x1984(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movdqa (%rax), %xmm0
movdqa %xmm1, -0x530(%rbp)
movdqa %xmm0, -0x540(%rbp)
movdqa -0x530(%rbp), %xmm0
por -0x540(%rbp), %xmm0
movq 0x30(%rbp), %rax
movq -0x838(%rbp), %rcx
movslq -0x1984(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movdqa %xmm0, (%rax)
movdqa -0x18a0(%rbp), %xmm1
movq 0x30(%rbp), %rax
movq -0x840(%rbp), %rcx
movslq -0x1984(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movdqa (%rax), %xmm0
movdqa %xmm1, -0x550(%rbp)
movdqa %xmm0, -0x560(%rbp)
movdqa -0x550(%rbp), %xmm0
por -0x560(%rbp), %xmm0
movq 0x30(%rbp), %rax
movq -0x840(%rbp), %rcx
movslq -0x1984(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movdqa %xmm0, (%rax)
movdqa -0x18b0(%rbp), %xmm1
movq 0x30(%rbp), %rax
movq -0x848(%rbp), %rcx
movslq -0x1984(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movdqa (%rax), %xmm0
movdqa %xmm1, -0x570(%rbp)
movdqa %xmm0, -0x580(%rbp)
movdqa -0x570(%rbp), %xmm0
por -0x580(%rbp), %xmm0
movq 0x30(%rbp), %rax
movq -0x848(%rbp), %rcx
movslq -0x1984(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movdqa %xmm0, (%rax)
jmp 0x9d11a
movq 0x30(%rbp), %rax
movq -0x858(%rbp), %rcx
movslq -0x1868(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
shll $0x4, %ecx
movaps (%rax,%rcx), %xmm1
movaps -0x18d0(%rbp), %xmm0
movaps %xmm1, -0x590(%rbp)
movaps %xmm0, -0x5a0(%rbp)
movaps -0x590(%rbp), %xmm0
movaps -0x5a0(%rbp), %xmm1
por %xmm1, %xmm0
movaps %xmm0, -0x18e0(%rbp)
movaps -0x18e0(%rbp), %xmm1
movaps -0x18c0(%rbp), %xmm0
movaps %xmm1, -0x390(%rbp)
movaps %xmm0, -0x3a0(%rbp)
movaps -0x390(%rbp), %xmm0
movaps -0x3a0(%rbp), %xmm1
pand %xmm1, %xmm0
movaps %xmm0, -0x1930(%rbp)
movaps -0x1930(%rbp), %xmm1
movaps -0x18c0(%rbp), %xmm0
movaps %xmm1, -0x2b0(%rbp)
movaps %xmm0, -0x2c0(%rbp)
movaps -0x2b0(%rbp), %xmm0
movaps -0x2c0(%rbp), %xmm1
paddd %xmm1, %xmm0
movaps %xmm0, -0x1920(%rbp)
movaps -0x1920(%rbp), %xmm1
movaps -0x18c0(%rbp), %xmm0
movaps %xmm1, -0x250(%rbp)
movaps %xmm0, -0x260(%rbp)
movaps -0x250(%rbp), %xmm0
movaps -0x260(%rbp), %xmm1
pxor %xmm1, %xmm0
movaps %xmm0, -0x1920(%rbp)
movaps -0x1920(%rbp), %xmm1
movaps -0x18e0(%rbp), %xmm0
movaps %xmm1, -0x5b0(%rbp)
movaps %xmm0, -0x5c0(%rbp)
movaps -0x5b0(%rbp), %xmm0
movaps -0x5c0(%rbp), %xmm1
por %xmm1, %xmm0
movaps %xmm0, -0x18f0(%rbp)
movaps -0x18f0(%rbp), %xmm1
movaps -0x18c0(%rbp), %xmm0
movaps %xmm1, -0x3b0(%rbp)
movaps %xmm0, -0x3c0(%rbp)
movaps -0x3b0(%rbp), %xmm0
movaps -0x3c0(%rbp), %xmm1
pand %xmm1, %xmm0
movaps %xmm0, -0x1900(%rbp)
movaps -0x18f0(%rbp), %xmm1
movaps -0x18c0(%rbp), %xmm0
movaps %xmm1, -0x5d0(%rbp)
movaps %xmm0, -0x5e0(%rbp)
movaps -0x5d0(%rbp), %xmm0
movaps -0x5e0(%rbp), %xmm1
por %xmm1, %xmm0
movaps %xmm0, -0x1920(%rbp)
movaps -0x1920(%rbp), %xmm1
movaps -0x1960(%rbp), %xmm0
movaps %xmm1, -0x1f0(%rbp)
movaps %xmm0, -0x200(%rbp)
movaps -0x1f0(%rbp), %xmm0
movaps -0x200(%rbp), %xmm1
pandn %xmm1, %xmm0
movaps %xmm0, -0x1920(%rbp)
movaps -0x1920(%rbp), %xmm1
movaps -0x18d0(%rbp), %xmm0
movaps %xmm1, -0x5f0(%rbp)
movaps %xmm0, -0x600(%rbp)
movaps -0x5f0(%rbp), %xmm0
movaps -0x600(%rbp), %xmm1
por %xmm1, %xmm0
movaps %xmm0, -0x1910(%rbp)
movaps -0x18f0(%rbp), %xmm0
movaps %xmm0, -0x150(%rbp)
movl $0x1, -0x154(%rbp)
movaps -0x150(%rbp), %xmm0
movd -0x154(%rbp), %xmm1
psrld %xmm1, %xmm0
movaps %xmm0, -0x18e0(%rbp)
movaps -0x18e0(%rbp), %xmm1
movaps -0x1910(%rbp), %xmm0
movaps %xmm1, -0x3d0(%rbp)
movaps %xmm0, -0x3e0(%rbp)
movaps -0x3d0(%rbp), %xmm0
movaps -0x3e0(%rbp), %xmm1
pand %xmm1, %xmm0
movaps %xmm0, -0x18d0(%rbp)
movaps -0x18e0(%rbp), %xmm1
movaps -0x1910(%rbp), %xmm0
movaps %xmm1, -0x610(%rbp)
movaps %xmm0, -0x620(%rbp)
movaps -0x610(%rbp), %xmm0
movaps -0x620(%rbp), %xmm1
por %xmm1, %xmm0
movaps %xmm0, -0x1920(%rbp)
movaps -0x1920(%rbp), %xmm1
movaps -0x1960(%rbp), %xmm0
movaps %xmm1, -0x210(%rbp)
movaps %xmm0, -0x220(%rbp)
movaps -0x210(%rbp), %xmm0
movaps -0x220(%rbp), %xmm1
pandn %xmm1, %xmm0
movaps %xmm0, -0x1920(%rbp)
movaps -0x1900(%rbp), %xmm1
movaps -0x1920(%rbp), %xmm0
movaps %xmm1, -0x630(%rbp)
movaps %xmm0, -0x640(%rbp)
movaps -0x630(%rbp), %xmm0
movaps -0x640(%rbp), %xmm1
por %xmm1, %xmm0
movaps %xmm0, -0x18c0(%rbp)
movaps -0x18f0(%rbp), %xmm1
movaps -0x1950(%rbp), %xmm0
movaps %xmm1, -0x3f0(%rbp)
movaps %xmm0, -0x400(%rbp)
movaps -0x3f0(%rbp), %xmm0
movaps -0x400(%rbp), %xmm1
pand %xmm1, %xmm0
movaps %xmm0, -0x1970(%rbp)
movaps -0x1940(%rbp), %xmm1
movaps -0x1950(%rbp), %xmm0
movaps %xmm1, -0x2d0(%rbp)
movaps %xmm0, -0x2e0(%rbp)
movaps -0x2d0(%rbp), %xmm0
movaps -0x2e0(%rbp), %xmm1
paddd %xmm1, %xmm0
movaps %xmm0, -0x1940(%rbp)
movaps -0x1940(%rbp), %xmm1
movaps -0x1970(%rbp), %xmm0
movaps %xmm1, -0x70(%rbp)
movaps %xmm0, -0x80(%rbp)
movaps -0x70(%rbp), %xmm0
movaps -0x80(%rbp), %xmm1
psubd %xmm1, %xmm0
movaps %xmm0, -0x1940(%rbp)
movaps -0x1940(%rbp), %xmm1
movaps -0x19b0(%rbp), %xmm0
movaps %xmm1, -0x30(%rbp)
movaps %xmm0, -0x40(%rbp)
movaps -0x30(%rbp), %xmm0
movaps -0x40(%rbp), %xmm1
pcmpgtd %xmm1, %xmm0
movaps %xmm0, -0x1980(%rbp)
movl -0x1980(%rbp), %eax
cmpl $0x0, %eax
je 0x9dbd7
movl -0x197c(%rbp), %eax
cmpl $0x0, %eax
je 0x9dbd7
movl -0x1978(%rbp), %eax
cmpl $0x0, %eax
je 0x9dbd7
movl -0x1974(%rbp), %eax
cmpl $0x0, %eax
je 0x9dbd7
movl $0x1, -0x824(%rbp)
jmp 0x9e0d4
movl 0x10(%rbp), %eax
decl %eax
movl %eax, -0x19b4(%rbp)
movl -0x1940(%rbp), %eax
movl %eax, -0x1990(%rbp)
movaps -0x1940(%rbp), %xmm0
pshufd $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movd %xmm0, -0x1994(%rbp)
movaps -0x1940(%rbp), %xmm0
pshufd $0xee, %xmm0, %xmm0     # xmm0 = xmm0[2,3,2,3]
movd %xmm0, -0x1998(%rbp)
movl -0x1934(%rbp), %eax
movl %eax, -0x199c(%rbp)
movl -0x1990(%rbp), %eax
movzwl 0x28(%rbp), %ecx
cmpl %ecx, %eax
jg 0x9dc56
movl -0x1990(%rbp), %eax
movq 0x20(%rbp), %rcx
cmpl (%rcx), %eax
ja 0x9dc56
movl -0x19b4(%rbp), %ecx
movq 0x18(%rbp), %rax
movl %ecx, (%rax)
movl -0x1990(%rbp), %ecx
movq 0x20(%rbp), %rax
movl %ecx, (%rax)
movl -0x1994(%rbp), %eax
movzwl 0x28(%rbp), %ecx
cmpl %ecx, %eax
jg 0x9dc8d
movl -0x1994(%rbp), %eax
movq 0x20(%rbp), %rcx
cmpl 0x4(%rcx), %eax
ja 0x9dc8d
movl -0x19b4(%rbp), %ecx
movq 0x18(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x1994(%rbp), %ecx
movq 0x20(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x1998(%rbp), %eax
movzwl 0x28(%rbp), %ecx
cmpl %ecx, %eax
jg 0x9dcc4
movl -0x1998(%rbp), %eax
movq 0x20(%rbp), %rcx
cmpl 0x8(%rcx), %eax
ja 0x9dcc4
movl -0x19b4(%rbp), %ecx
movq 0x18(%rbp), %rax
movl %ecx, 0x8(%rax)
movl -0x1998(%rbp), %ecx
movq 0x20(%rbp), %rax
movl %ecx, 0x8(%rax)
movl -0x199c(%rbp), %eax
movzwl 0x28(%rbp), %ecx
cmpl %ecx, %eax
jg 0x9dcfb
movl -0x199c(%rbp), %eax
movq 0x20(%rbp), %rcx
cmpl 0xc(%rcx), %eax
ja 0x9dcfb
movl -0x19b4(%rbp), %ecx
movq 0x18(%rbp), %rax
movl %ecx, 0xc(%rax)
movl -0x199c(%rbp), %ecx
movq 0x20(%rbp), %rax
movl %ecx, 0xc(%rax)
movl $0x0, -0x1868(%rbp)
movl $0xffffffff, -0x19b8(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x19bc(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x19c0(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x19c4(%rbp) # imm = 0xFFFFFFFF
movl -0x84c(%rbp), %eax
subl 0x10(%rbp), %eax
movl %eax, -0x19c8(%rbp)
movl -0x1868(%rbp), %eax
cmpl -0x19c8(%rbp), %eax
jge 0x9e00c
movaps -0x18c0(%rbp), %xmm0
movl -0x1868(%rbp), %eax
movaps %xmm0, -0x170(%rbp)
movl %eax, -0x174(%rbp)
movaps -0x170(%rbp), %xmm0
movd -0x174(%rbp), %xmm1
psrld %xmm1, %xmm0
movaps %xmm0, -0x1920(%rbp)
movaps -0x1920(%rbp), %xmm1
movaps -0x1950(%rbp), %xmm0
movaps %xmm1, -0x410(%rbp)
movaps %xmm0, -0x420(%rbp)
movaps -0x410(%rbp), %xmm0
movaps -0x420(%rbp), %xmm1
pand %xmm1, %xmm0
movaps %xmm0, -0x1920(%rbp)
movaps -0x1940(%rbp), %xmm1
movaps -0x1920(%rbp), %xmm0
movaps %xmm1, -0x2f0(%rbp)
movaps %xmm0, -0x300(%rbp)
movaps -0x2f0(%rbp), %xmm0
movaps -0x300(%rbp), %xmm1
paddd %xmm1, %xmm0
movaps %xmm0, -0x1940(%rbp)
movaps -0x18d0(%rbp), %xmm0
movl -0x1868(%rbp), %eax
movaps %xmm0, -0x190(%rbp)
movl %eax, -0x194(%rbp)
movaps -0x190(%rbp), %xmm0
movd -0x194(%rbp), %xmm1
psrld %xmm1, %xmm0
movaps %xmm0, -0x1930(%rbp)
movaps -0x1930(%rbp), %xmm1
movaps -0x1950(%rbp), %xmm0
movaps %xmm1, -0x430(%rbp)
movaps %xmm0, -0x440(%rbp)
movaps -0x430(%rbp), %xmm0
movaps -0x440(%rbp), %xmm1
pand %xmm1, %xmm0
movaps %xmm0, -0x1930(%rbp)
movaps -0x1940(%rbp), %xmm1
movaps -0x1930(%rbp), %xmm0
movaps %xmm1, -0x90(%rbp)
movaps %xmm0, -0xa0(%rbp)
movaps -0x90(%rbp), %xmm0
movaps -0xa0(%rbp), %xmm1
psubd %xmm1, %xmm0
movaps %xmm0, -0x1940(%rbp)
movl -0x1868(%rbp), %eax
incl %eax
movl %eax, -0x1868(%rbp)
movl -0x1940(%rbp), %eax
movl %eax, -0x1990(%rbp)
movaps -0x1940(%rbp), %xmm0
pshufd $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movd %xmm0, -0x1994(%rbp)
movaps -0x1940(%rbp), %xmm0
pshufd $0xee, %xmm0, %xmm0     # xmm0 = xmm0[2,3,2,3]
movd %xmm0, -0x1998(%rbp)
movl -0x1934(%rbp), %eax
movl %eax, -0x199c(%rbp)
movl -0x1990(%rbp), %eax
movzwl 0x28(%rbp), %ecx
cmpl %ecx, %eax
jg 0x9df12
movl -0x1990(%rbp), %eax
movq 0x20(%rbp), %rcx
cmpl (%rcx), %eax
ja 0x9df12
movl -0x19b4(%rbp), %ecx
addl -0x1868(%rbp), %ecx
movq 0x18(%rbp), %rax
movl %ecx, (%rax)
movl -0x1990(%rbp), %ecx
movq 0x20(%rbp), %rax
movl %ecx, (%rax)
movl -0x1994(%rbp), %eax
movzwl 0x28(%rbp), %ecx
cmpl %ecx, %eax
jg 0x9df4f
movl -0x1994(%rbp), %eax
movq 0x20(%rbp), %rcx
cmpl 0x4(%rcx), %eax
ja 0x9df4f
movl -0x19b4(%rbp), %ecx
addl -0x1868(%rbp), %ecx
movq 0x18(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x1994(%rbp), %ecx
movq 0x20(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x1998(%rbp), %eax
movzwl 0x28(%rbp), %ecx
cmpl %ecx, %eax
jg 0x9df8c
movl -0x1998(%rbp), %eax
movq 0x20(%rbp), %rcx
cmpl 0x8(%rcx), %eax
ja 0x9df8c
movl -0x19b4(%rbp), %ecx
addl -0x1868(%rbp), %ecx
movq 0x18(%rbp), %rax
movl %ecx, 0x8(%rax)
movl -0x1998(%rbp), %ecx
movq 0x20(%rbp), %rax
movl %ecx, 0x8(%rax)
movl -0x199c(%rbp), %eax
movzwl 0x28(%rbp), %ecx
cmpl %ecx, %eax
jg 0x9dfc9
movl -0x199c(%rbp), %eax
movq 0x20(%rbp), %rcx
cmpl 0xc(%rcx), %eax
ja 0x9dfc9
movl -0x19b4(%rbp), %ecx
addl -0x1868(%rbp), %ecx
movq 0x18(%rbp), %rax
movl %ecx, 0xc(%rax)
movl -0x199c(%rbp), %ecx
movq 0x20(%rbp), %rax
movl %ecx, 0xc(%rax)
movl -0x1868(%rbp), %eax
movzwl 0x28(%rbp), %ecx
cmpl %ecx, %eax
jne 0x9e007
movl -0x1990(%rbp), %eax
movl %eax, -0x19b8(%rbp)
movl -0x1994(%rbp), %eax
movl %eax, -0x19bc(%rbp)
movl -0x1998(%rbp), %eax
movl %eax, -0x19c0(%rbp)
movl -0x199c(%rbp), %eax
movl %eax, -0x19c4(%rbp)
jmp 0x9dd3c
movl -0x19b8(%rbp), %eax
movzwl 0x28(%rbp), %ecx
cmpl %ecx, %eax
ja 0x9e03a
movl -0x19b8(%rbp), %eax
movq 0x20(%rbp), %rcx
cmpl (%rcx), %eax
jne 0x9e03a
movl -0x19b4(%rbp), %ecx
movzwl 0x28(%rbp), %eax
addl %eax, %ecx
movq 0x18(%rbp), %rax
movl %ecx, (%rax)
movl -0x19bc(%rbp), %eax
movzwl 0x28(%rbp), %ecx
cmpl %ecx, %eax
ja 0x9e06a
movl -0x19bc(%rbp), %eax
movq 0x20(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jne 0x9e06a
movl -0x19b4(%rbp), %ecx
movzwl 0x28(%rbp), %eax
addl %eax, %ecx
movq 0x18(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x19c0(%rbp), %eax
movzwl 0x28(%rbp), %ecx
cmpl %ecx, %eax
ja 0x9e09a
movl -0x19c0(%rbp), %eax
movq 0x20(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jne 0x9e09a
movl -0x19b4(%rbp), %ecx
movzwl 0x28(%rbp), %eax
addl %eax, %ecx
movq 0x18(%rbp), %rax
movl %ecx, 0x8(%rax)
movl -0x19c4(%rbp), %eax
movzwl 0x28(%rbp), %ecx
cmpl %ecx, %eax
ja 0x9e0ca
movl -0x19c4(%rbp), %eax
movq 0x20(%rbp), %rcx
cmpl 0xc(%rcx), %eax
jne 0x9e0ca
movl -0x19b4(%rbp), %ecx
movzwl 0x28(%rbp), %eax
addl %eax, %ecx
movq 0x18(%rbp), %rax
movl %ecx, 0xc(%rax)
movl $0x1, -0x824(%rbp)
movl -0x824(%rbp), %eax
addq $0x19d0, %rsp           # imm = 0x19D0
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)