// File: /workspace/github_cpp_makefile_star2_O1/Finsenty54[P]fast_collision/block1wang.cpp
// Function: find_block1_wang(unsigned int*, unsigned int const*)
void find_block1_wang(uint32 block[], const uint32 IV[])
{
	uint32 Q[68] = { IV[0], IV[3], IV[2], IV[1] };

	std::vector<uint32> q4mask(1<<6);
	for (unsigned k = 0; k < q4mask.size(); ++k)
		q4mask[k] = ((k<<13) ^ (k<<19)) & 0x01c0e000;

	std::vector<uint32> q9mask(1<<5), q10mask(1<<5);
	for (unsigned k = 0; k < q9mask.size(); ++k)
	{
		uint32 msk = (k<<5) ^ (k<<13) ^ (k<<17) ^ (k<<24);
		q9mask[k] = msk &  0x00084000;
		q10mask[k] = msk & 0x18000020;
	}
	
	std::vector<uint32> q9mask2(1<<10);
	for (unsigned k = 0; k < q9mask2.size(); ++k)
		q9mask2[k] = ((k<<1) ^ (k<<7) ^ (k<<14) ^ (k<<15) ^ (k<<22)) & 0x6074041c;
	
	
	while (true) 
	{
		uint32 aa = Q[Qoff] & 0x80000000;
		uint32 bb = 0x80000000 ^ aa;

		Q[Qoff + 2] = (xrng64() & 0x71de7799) | 0x0c008840 | bb;
		Q[Qoff + 3] = (xrng64() & 0x01c06601) | 0x3e1f0966 | (Q[Qoff + 2] & 0x80000018);
		Q[Qoff + 4] = 0x3a040010 | (Q[Qoff + 3] & 0x80000601);
		Q[Qoff + 5] = (xrng64() & 0x03c0e000) | 0x482f0e50 | aa;
		Q[Qoff + 6] = (xrng64() & 0x600c0000) | 0x05e2ec56 | aa;
		Q[Qoff + 7] = (xrng64() & 0x604c203e) | 0x16819e01 | bb | (Q[Qoff + 6] & 0x01000000);
		Q[Qoff + 8] = (xrng64() & 0x604c7c1c) | 0x043283e0 | (Q[Qoff + 7] & 0x80000002);
		Q[Qoff + 9] =  (xrng64() & 0x00002800) | 0x1c0101c1 | (Q[Qoff + 8] & 0x80001000);
		Q[Qoff + 10] = 0x078bcbc0 | bb;
		Q[Qoff + 11] = (xrng64() & 0x07800000) | 0x607dc7df | bb;
		Q[Qoff + 12] = (xrng64() & 0x00f00f7f) | 0x00081080 | (Q[Qoff + 11] & 0xe7000000);
		Q[Qoff + 13] = (xrng64() & 0x00701f77) | 0x3f0fe008 | aa;
		Q[Qoff + 14] = (xrng64() & 0x00701f77) | 0x408be088 | aa;
		Q[Qoff + 15] = (xrng64() & 0x00ff3ff7) | 0x7d000000;
		Q[Qoff + 16] = (xrng64() & 0x4ffdffff) | 0x20000000 | (~Q[Qoff + 15] & 0x00020000);
	    
		MD5_REVERSE_STEP(5, 0x4787c62a, 12);
		MD5_REVERSE_STEP(6, 0xa8304613, 17);
		MD5_REVERSE_STEP(7, 0xfd469501, 22);
		MD5_REVERSE_STEP(11, 0x895cd7be, 22);
		MD5_REVERSE_STEP(14, 0xa679438e, 17);
		MD5_REVERSE_STEP(15, 0x49b40821, 22);

		const uint32 tt17 = GG(Q[Qoff + 16], Q[Qoff + 15], Q[Qoff + 14]) + Q[Qoff + 13] + 0xf61e2562;
		const uint32 tt18 = Q[Qoff + 14] + 0xc040b340 + block[6];
		const uint32 tt19 = Q[Qoff + 15] + 0x265e5a51 + block[11];

		const uint32 tt0 = FF(Q[Qoff + 0], Q[Qoff - 1], Q[Qoff - 2]) + Q[Qoff - 3] + 0xd76aa478;
		const uint32 tt1 = Q[Qoff - 2] + 0xe8c7b756;		

		const uint32 q1a = 0x04200040 | (Q[Qoff + 2] & 0xf01e1080);
		
		unsigned counter = 0;
		while (counter < (1 << 12))
		{
			++counter;

			uint32 q1 = q1a | (xrng64() & 0x01c0e71f);
			uint32 m1 = Q[Qoff+2] - q1;
			m1 = RR(m1, 12) - FF(q1, Q[Qoff+0], Q[Qoff-1]) - tt1;

			const uint32 q16 = Q[Qoff+16];
			uint32 q17 = tt17 + m1;
			q17 = RL(q17, 5) + q16;
			if (0x40000000 != ((q17^q16) & 0xc0008008)) continue;
			if (0 != (q17 & 0x00020000)) continue;

			uint32 q18 = GG(q17, q16, Q[Qoff+15]) + tt18;
			q18 = RL(q18, 9); q18 += q17;
			if (0x00020000 != ((q18^q17) & 0xa0020000)) continue;

			uint32 q19 = GG(q18, q17, q16) + tt19;
			q19 = RL(q19, 14); q19 += q18;
			if (0 != (q19 & 0x80020000)) continue;

			uint32 m0 = q1 - Q[Qoff + 0];
			m0 = RR(m0, 7) - tt0;

			uint32 q20 = GG(q19, q18, q17) + q16 + 0xe9b6c7aa + m0;
			q20 = RL(q20, 20); q20 += q19;
			if (0x00040000 != ((q20^q19) & 0x80040000))	continue;
			
			Q[Qoff + 1] = q1;
			Q[Qoff + 17] = q17;
			Q[Qoff + 18] = q18;
			Q[Qoff + 19] = q19;
			Q[Qoff + 20] = q20;

			block[0] = m0;
			block[1] = m1;
			MD5_REVERSE_STEP(2, 0x242070db, 17);

			counter = 0;
			break;
		}
		if (counter != 0)
			continue;

		const uint32 q4b = Q[Qoff + 4];
		const uint32 q9b = Q[Qoff + 9];
		const uint32 q10b = Q[Qoff + 10];
		const uint32 tt21 = GG(Q[Qoff+20], Q[Qoff+19], Q[Qoff+18]) + Q[Qoff+17] + 0xd62f105d;

		counter = 0;
		while (counter < (1<<6))
		{
			Q[Qoff + 4] = q4b ^ q4mask[counter];
			++counter;
			MD5_REVERSE_STEP(5, 0x4787c62a, 12);
			uint32 q21 = tt21 + block[5];
			q21 = RL(q21, 5); q21 += Q[Qoff+20];
			if (0 != ((q21^Q[Qoff+20]) & 0x80020000)) continue;

			Q[Qoff+21] = q21;
			MD5_REVERSE_STEP(3, 0xc1bdceee, 22);
			MD5_REVERSE_STEP(4, 0xf57c0faf, 7);
			MD5_REVERSE_STEP(7, 0xfd469501, 22);

			const uint32 tt10 = Q[Qoff + 7] + 0xffff5bb1;
			const uint32 tt22 = GG(Q[Qoff + 21], Q[Qoff + 20], Q[Qoff + 19]) + Q[Qoff + 18] + 0x02441453;
			const uint32 tt23 = Q[Qoff + 19] + 0xd8a1e681 + block[15];
			const uint32 tt24 = Q[Qoff + 20] + 0xe7d3fbc8 + block[4];
	 
			unsigned counter2 = 0;
			while (counter2 < (1<<5))
			{
				uint32 q10 = q10b ^ q10mask[counter2];
				uint32 m10 = RR(Q[Qoff+11]-q10,17);
				uint32 q9 = q9b ^ q9mask[counter2];
				++counter2;

				m10 -= FF(q10, q9, Q[Qoff+8]) + tt10;

				uint32 aa = Q[Qoff + 21];
				uint32 dd = tt22+m10; dd = RL(dd, 9) + aa;
				if (0 != (dd & 0x80000000)) continue;			

				uint32 bb = Q[Qoff + 20];
				uint32 cc = tt23 + GG(dd, aa, bb); 
				if (0 != (cc & 0x20000)) continue;
				cc = RL(cc, 14) + dd;
				if (0 != (cc & 0x80000000)) continue;

				bb = tt24 + GG(cc, dd, aa); bb = RL(bb, 20) + cc;
				if (0 == (bb & 0x80000000)) continue;

				block[10] = m10;
				Q[Qoff + 9] = q9;
				Q[Qoff + 10] = q10;
				MD5_REVERSE_STEP(13, 0xfd987193, 12);

				for (unsigned k9 = 0; k9 < (1<<10);)
				{
					uint32 a = aa, b = bb, c = cc, d = dd;
					Q[Qoff + 9] = q9 ^ q9mask2[k9]; ++k9;
					MD5_REVERSE_STEP(8, 0x698098d8, 7);
					MD5_REVERSE_STEP(9, 0x8b44f7af, 12);
					MD5_REVERSE_STEP(12, 0x6b901122, 7);

					MD5_STEP(GG, a, b, c, d, block[9], 0x21e1cde6, 5);
					MD5_STEP(GG, d, a, b, c, block[14], 0xc33707d6, 9);
					MD5_STEP(GG, c, d, a, b, block[3], 0xf4d50d87, 14);
					MD5_STEP(GG, b, c, d, a, block[8], 0x455a14ed, 20);
					MD5_STEP(GG, a, b, c, d, block[13], 0xa9e3e905, 5);
					MD5_STEP(GG, d, a, b, c, block[2], 0xfcefa3f8, 9);
					MD5_STEP(GG, c, d, a, b, block[7], 0x676f02d9, 14);
					MD5_STEP(GG, b, c, d, a, block[12], 0x8d2a4c8a, 20);
					MD5_STEP(HH, a, b, c, d, block[5], 0xfffa3942, 4);
					MD5_STEP(HH, d, a, b, c, block[8], 0x8771f681, 11);

					c += HH(d, a, b) + block[11] + 0x6d9d6122;
					if (0 == (c & (1 << 15))) 
						continue;
					c = (c<<16 | c>>16) + d;
					
					MD5_STEP(HH, b, c, d, a, block[14], 0xfde5380c, 23);
					MD5_STEP(HH, a, b, c, d, block[1], 0xa4beea44, 4);
					MD5_STEP(HH, d, a, b, c, block[4], 0x4bdecfa9, 11);
					MD5_STEP(HH, c, d, a, b, block[7], 0xf6bb4b60, 16);
					MD5_STEP(HH, b, c, d, a, block[10], 0xbebfbc70, 23);
					MD5_STEP(HH, a, b, c, d, block[13], 0x289b7ec6, 4);
					MD5_STEP(HH, d, a, b, c, block[0], 0xeaa127fa, 11);
					MD5_STEP(HH, c, d, a, b, block[3], 0xd4ef3085, 16);
					MD5_STEP(HH, b, c, d, a, block[6], 0x04881d05, 23);
					MD5_STEP(HH, a, b, c, d, block[9], 0xd9d4d039, 4);
					MD5_STEP(HH, d, a, b, c, block[12], 0xe6db99e5, 11);
					MD5_STEP(HH, c, d, a, b, block[15], 0x1fa27cf8, 16);
					MD5_STEP(HH, b, c, d, a, block[2], 0xc4ac5665, 23);
					if (0 != ((b^d) & 0x80000000))
						continue;

					MD5_STEP(II, a, b, c, d, block[0], 0xf4292244, 6);
					if (0 != ((a^c) >> 31)) continue;
					MD5_STEP(II, d, a, b, c, block[7], 0x432aff97, 10);
					if (0 == ((b^d) >> 31)) continue;
					MD5_STEP(II, c, d, a, b, block[14], 0xab9423a7, 15);
					if (0 != ((a^c) >> 31)) continue;
					MD5_STEP(II, b, c, d, a, block[5], 0xfc93a039, 21);
					if (0 != ((b^d) >> 31)) continue;
					MD5_STEP(II, a, b, c, d, block[12], 0x655b59c3, 6);
					if (0 != ((a^c) >> 31)) continue;
					MD5_STEP(II, d, a, b, c, block[3], 0x8f0ccc92, 10);
					if (0 != ((b^d) >> 31)) continue;
					MD5_STEP(II, c, d, a, b, block[10], 0xffeff47d, 15);
					if (0 != ((a^c) >> 31)) continue;
					MD5_STEP(II, b, c, d, a, block[1], 0x85845dd1, 21);
					if (0 != ((b^d) >> 31)) continue;
					MD5_STEP(II, a, b, c, d, block[8], 0x6fa87e4f, 6);
					if (0 != ((a^c) >> 31)) continue;
					MD5_STEP(II, d, a, b, c, block[15], 0xfe2ce6e0, 10);
					if (0 != ((b^d) >> 31)) continue;
					MD5_STEP(II, c, d, a, b, block[6], 0xa3014314, 15);
					if (0 != ((a^c) >> 31)) continue;
					MD5_STEP(II, b, c, d, a, block[13], 0x4e0811a1, 21);
					if (0 == ((b^d) >> 31)) continue;
					MD5_STEP(II, a, b, c, d, block[4], 0xf7537e82, 6);
					if (0 != ((a^c) >> 31)) continue;
					MD5_STEP(II, d, a, b, c, block[11], 0xbd3af235, 10);
					if (0 != ((b^d) >> 31)) continue;
					MD5_STEP(II, c, d, a, b, block[2], 0x2ad7d2bb, 15);
					if (0 != ((a^c) >> 31)) continue;
					MD5_STEP(II, b, c, d, a, block[9], 0xeb86d391, 21);

					std::cout << "." << std::flush;

					uint32 block2[16];
					uint32 IV1[4], IV2[4];
					for (int t = 0; t < 4; ++t)
					{
						IV1[t] = IV[t];
						IV2[t] = IV[t] + (1 << 31);
					}
					IV2[1] += (1 << 25);
					IV2[2] += (1 << 25);
					IV2[3] += (1 << 25);

					for (int t = 0; t < 16; ++t)
						block2[t] = block[t];
					block2[4] += 1<<31;
					block2[11] -= 1<<15;
					block2[14] += 1<<31;

					md5_compress(IV1, block);
					md5_compress(IV2, block2);
					if (IV2[0]==IV1[0] && IV2[1]==IV1[1] && IV2[2]==IV1[2] && IV2[3]==IV1[3])
						return;

					if (IV2[0] != IV1[0])
						std::cout << "!" << std::flush;
				}
			}
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x238, %rsp            # imm = 0x238
movq %rdi, %r13
movl (%rsi), %eax
movl %eax, -0x94(%rbp)
movl 0x4(%rsi), %eax
movl %eax, -0x3c(%rbp)
movl 0xc(%rsi), %eax
movl %eax, -0x98(%rbp)
movq %rsi, -0x178(%rbp)
movl 0x8(%rsi), %eax
movl %eax, -0x64(%rbp)
movl $0x100, %edi            # imm = 0x100
callq 0x10b0
movq %rax, %r14
xorl %ebx, %ebx
movl $0x100, %edx            # imm = 0x100
movq %rax, %rdi
xorl %esi, %esi
callq 0x1050
movq %r14, -0xf0(%rbp)
movl %ebx, %ecx
andl $0x1c0e000, %ecx        # imm = 0x1C0E000
movl %ecx, (%r14)
addq $0x82000, %rbx          # imm = 0x82000
addq $0x4, %r14
cmpq $0x2080000, %rbx        # imm = 0x2080000
jne 0x8508
movl $0x80, %edi
callq 0x10b0
movq %rax, %rbx
xorps %xmm0, %xmm0
movups %xmm0, 0x70(%rax)
movups %xmm0, 0x60(%rax)
movups %xmm0, 0x50(%rax)
movups %xmm0, 0x40(%rax)
movups %xmm0, 0x30(%rax)
movups %xmm0, 0x20(%rax)
movups %xmm0, 0x10(%rax)
movups %xmm0, (%rax)
movl $0x80, %edi
movq %rax, -0xe8(%rbp)
callq 0x10b0
xorps %xmm0, %xmm0
movups %xmm0, 0x70(%rax)
movups %xmm0, 0x60(%rax)
movups %xmm0, 0x50(%rax)
movups %xmm0, 0x40(%rax)
movups %xmm0, 0x30(%rax)
movups %xmm0, 0x20(%rax)
movups %xmm0, 0x10(%rax)
movups %xmm0, (%rax)
xorl %r8d, %r8d
xorl %ecx, %ecx
xorl %edx, %edx
xorl %esi, %esi
movl %r8d, %edi
orl %ecx, %edi
andl $0x84000, %edi          # imm = 0x84000
movl %edi, (%rbx,%rsi,4)
movl %edx, %edi
andl $0x18000020, %edi       # imm = 0x18000020
movl %edi, (%rax,%rsi,4)
incq %rsi
addl $0x1000020, %edx        # imm = 0x1000020
addl $0x20000, %ecx          # imm = 0x20000
addl $0x2000, %r8d           # imm = 0x2000
cmpq $0x20, %rsi
jne 0x8592
movl $0x1000, %edi           # imm = 0x1000
movq %rax, -0xe0(%rbp)
callq 0x10b0
movq %rax, %r14
xorl %ebx, %ebx
movl $0x1000, %edx           # imm = 0x1000
movq %rax, %rdi
xorl %esi, %esi
callq 0x1050
xorl %eax, %eax
xorl %ecx, %ecx
xorl %edx, %edx
xorl %esi, %esi
movl %ebx, %edi
xorl %eax, %edi
movl %ecx, %r8d
xorl %edx, %r8d
xorl %edi, %r8d
xorl %esi, %r8d
andl $0x6074041c, %r8d       # imm = 0x6074041C
movl %r8d, (%r14,%rbx,2)
addl $0x400000, %esi         # imm = 0x400000
addl $0x8000, %edx           # imm = 0x8000
addl $0x4000, %ecx           # imm = 0x4000
subl $-0x80, %eax
addq $0x2, %rbx
cmpq $0x800, %rbx            # imm = 0x800
jne 0x85f4
movq %r14, -0x100(%rbp)
movl $0x80000000, %eax       # imm = 0x80000000
movl -0x3c(%rbp), %ecx
movl %ecx, %edx
andl %eax, %edx
movl %edx, %esi
xorl %eax, %esi
movq %rsi, -0xc8(%rbp)
movq %rdx, -0x180(%rbp)
leal -0x78743440(%rdx), %eax
movl %eax, -0x9c(%rbp)
movl -0x64(%rbp), %esi
movl %esi, %eax
movl -0x98(%rbp), %edx
xorl %edx, %eax
andl %ecx, %eax
xorl %edx, %eax
addl %eax, -0x94(%rbp)
xorl %esi, %ecx
movl %ecx, -0x13c(%rbp)
movq $0x0, -0xd0(%rbp)
movq $0x0, -0x88(%rbp)
movq $0x0, -0x170(%rbp)
movq $0x0, -0x168(%rbp)
movl $0x0, -0x54(%rbp)
movq %r13, -0x30(%rbp)
leaq 0x39e9(%rip), %rax      # 0xc0a8
movl (%rax), %eax
movl %eax, %edx
shll $0xa, %edx
xorl %eax, %edx
leaq 0x39dd(%rip), %rax      # 0xc0ac
movl (%rax), %eax
movl %eax, %ecx
shrl $0xa, %ecx
xorl %eax, %ecx
xorl %edx, %ecx
shrl $0xd, %edx
xorl %ecx, %edx
movl %eax, %esi
shll $0xa, %esi
xorl %eax, %esi
andl $0x71de7799, %eax       # imm = 0x71DE7799
movq %rax, -0x78(%rbp)
movq -0xc8(%rbp), %rcx
orl %ecx, %eax
movq %rax, -0x48(%rbp)
movl %esi, %r8d
shrl $0xd, %r8d
xorl %esi, %r8d
xorl %edx, %r8d
movl %edx, %edi
movl %edx, %r9d
shll $0xa, %r9d
xorl %edx, %r9d
shrl $0xa, %edx
xorl %edx, %r8d
andl $0x1c06601, %edi        # imm = 0x1C06601
andl $0x80000018, %eax       # imm = 0x80000018
leal (%rdi,%rax), %edx
addl $0x3e1f0966, %edx       # imm = 0x3E1F0966
movl %edx, -0x34(%rbp)
orl %eax, %edi
movl %r9d, %eax
xorl %r8d, %r9d
movl %r8d, %edx
shll $0xa, %edx
xorl %r8d, %edx
movl %r8d, %esi
shrl $0xa, %esi
shrl $0xd, %eax
xorl %esi, %eax
xorl %eax, %r9d
movl %r9d, %esi
shrl $0xa, %esi
movl %edx, %eax
shrl $0xd, %eax
xorl %edx, %eax
xorl %esi, %eax
xorl %r9d, %eax
movl %r9d, %esi
shll $0xa, %esi
xorl %r9d, %esi
movl %eax, %r10d
shrl $0xa, %r10d
movl %esi, %edx
shrl $0xd, %edx
xorl %esi, %edx
xorl %r10d, %edx
xorl %eax, %edx
movl %eax, %r10d
shll $0xa, %r10d
xorl %eax, %r10d
andl $0x604c203e, %eax       # imm = 0x604C203E
movq %rax, -0x50(%rbp)
movl %eax, %ebx
orl %ecx, %ebx
movl %edx, %eax
shrl $0xa, %eax
movl %r10d, %esi
shrl $0xd, %esi
xorl %r10d, %esi
xorl %eax, %esi
xorl %edx, %esi
movl %edx, %eax
shll $0xa, %eax
xorl %edx, %eax
movl %edx, %r10d
andl $0x604c7c1c, %r10d      # imm = 0x604C7C1C
movl %ebx, -0x144(%rbp)
movl %ebx, %edx
andl $0x80000002, %edx       # imm = 0x80000002
leal (%r10,%rdx), %r11d
addl $0x43283e0, %r11d       # imm = 0x43283E0
movl %r11d, -0x40(%rbp)
orl %edx, %r10d
movq %r10, %rbx
movq %r10, -0x80(%rbp)
movl %eax, %edx
shrl $0xd, %edx
xorl %eax, %edx
movl %esi, %eax
shrl $0xa, %eax
xorl %eax, %edx
xorl %esi, %edx
movl %esi, %eax
shll $0xa, %eax
xorl %esi, %eax
andl $0x2800, %esi           # imm = 0x2800
andl $0x80001000, %ebx       # imm = 0x80001000
addl %ebx, %esi
addl $0x1c0101c1, %esi       # imm = 0x1C0101C1
movl %esi, -0xa0(%rbp)
movl %eax, %esi
shrl $0xd, %esi
xorl %eax, %esi
movl %edx, %eax
shrl $0xa, %eax
xorl %eax, %esi
movl %edx, %eax
shll $0xa, %eax
xorl %edx, %eax
movl %eax, %r15d
shrl $0xd, %r15d
xorl %eax, %r15d
xorl %edx, %esi
movl %esi, %eax
shrl $0xa, %eax
xorl %eax, %r15d
movl %edx, %eax
andl $0x7800000, %eax        # imm = 0x7800000
movl %ecx, %edx
orl %eax, %edx
movq %rdx, -0x118(%rbp)
leal (%rcx,%rax), %r14d
addl $0x607dc7df, %r14d      # imm = 0x607DC7DF
xorl %esi, %r15d
movl %esi, %eax
shll $0xa, %eax
xorl %esi, %eax
movl %esi, %edx
andl $0xf00f7f, %edx         # imm = 0xF00F7F
movl %r14d, %esi
andl $0xe7000000, %esi       # imm = 0xE7000000
leal (%rsi,%rdx), %ecx
movq %rcx, -0x90(%rbp)
leal (%rsi,%rdx), %ecx
addl $0x81080, %ecx          # imm = 0x81080
movl %ecx, -0x5c(%rbp)
movl %eax, %r13d
shrl $0xd, %r13d
xorl %eax, %r13d
movl %r15d, %eax
shrl $0xa, %eax
xorl %eax, %r13d
movl %r15d, %eax
shll $0xa, %eax
xorl %r15d, %eax
movl %eax, %edx
shrl $0xd, %edx
xorl %eax, %edx
xorl %r15d, %r13d
movl %r13d, %eax
shrl $0xa, %eax
xorl %eax, %edx
movl %r13d, %eax
shll $0xa, %eax
xorl %r13d, %eax
movl %eax, %r11d
shrl $0xd, %r11d
xorl %eax, %r11d
xorl %r13d, %edx
movl %edx, %eax
shrl $0xa, %eax
xorl %eax, %r11d
movl %edx, %eax
shll $0xa, %eax
xorl %edx, %eax
movl %eax, %r12d
shrl $0xd, %r12d
xorl %eax, %r12d
xorl %edx, %r11d
movl %r11d, %eax
shrl $0xa, %eax
xorl %eax, %r12d
xorl %r11d, %r12d
leaq 0x37b1(%rip), %rax      # 0xc0ac
movl %r12d, (%rax)
movl %r8d, %eax
movl %edi, %ebx
andl $0x80000601, %ebx       # imm = 0x80000601
andl $0x3c0e000, %eax        # imm = 0x3C0E000
movq -0x180(%rbp), %r12
leal (%r12,%rax), %r8d
addl $0x482f0e50, %r8d       # imm = 0x482F0E50
movl %r9d, %eax
andl $0x600c0000, %eax       # imm = 0x600C0000
leal (%r12,%rax), %r10d
addl $0x5e2ec56, %r10d       # imm = 0x5E2EC56
leaq 0x376e(%rip), %rax      # 0xc0a8
movl %r11d, (%rax)
movl %r10d, %r9d
subl %r8d, %r9d
shrl $0xc, %r9d
leal 0x3a040010(%rbx), %esi
movl %esi, %eax
movl -0x34(%rbp), %ecx
xorl %ecx, %eax
andl %r8d, %eax
xorl %ecx, %eax
movq -0x48(%rbp), %rcx
addl %ecx, %eax
addl $0xc008840, %eax        # imm = 0xC008840
negl %eax
movq %r9, -0xf8(%rbp)
addl %r9d, %eax
addl $0x98d839d6, %eax       # imm = 0x98D839D6
movq -0x30(%rbp), %r9
movl %eax, 0x14(%r9)
movl %r8d, %eax
xorl %esi, %eax
andl %r10d, %eax
movl %esi, -0x134(%rbp)
xorl %esi, %eax
addl %edi, %eax
addl $0x3e1f0966, %eax       # imm = 0x3E1F0966
movq -0xc8(%rbp), %rcx
movq -0x50(%rbp), %rsi
addl %esi, %ecx
addl $0x17819e01, %ecx       # imm = 0x17819E01
movl %ecx, %r9d
subl %r10d, %r9d
roll $0xf, %r9d
subl %eax, %r9d
leal 0x57cfb9ed(%r9), %eax
movq -0x30(%rbp), %rdi
movl %eax, 0x18(%rdi)
movl -0x40(%rbp), %eax
movl %eax, %edi
subl %ecx, %edi
roll $0xa, %edi
movl %r10d, -0xa8(%rbp)
movl %r10d, %eax
xorl %r8d, %eax
movl %ecx, -0xa4(%rbp)
andl %ecx, %eax
movl %r8d, -0x60(%rbp)
xorl %r8d, %eax
movq %rax, -0x190(%rbp)
addl %ebx, %eax
addl $0x3a040010, %eax       # imm = 0x3A040010
negl %eax
movq %rdi, -0xd8(%rbp)
addl %edi, %eax
addl $0x2b96aff, %eax        # imm = 0x2B96AFF
movq -0x30(%rbp), %rdi
movl %eax, 0x1c(%rdi)
movl -0xa0(%rbp), %ecx
movl %ecx, %eax
xorl -0x9c(%rbp), %eax
andl %r14d, %eax
xorl %ecx, %eax
movq -0x80(%rbp), %rcx
addl %ecx, %eax
addl $0x43283e0, %eax        # imm = 0x43283E0
movl -0x5c(%rbp), %ecx
movl %ecx, %r10d
movl %r14d, -0x68(%rbp)
subl %r14d, %r10d
roll $0xa, %r10d
subl %eax, %r10d
leal 0x76a32842(%r10), %eax
movq -0x30(%rbp), %rdi
movl %eax, 0x2c(%rdi)
movl %r15d, %eax
movl $0x701f77, %esi         # imm = 0x701F77
andl %esi, %eax
movl %r12d, %r8d
orl %eax, %r8d
leal (%r12,%rax), %ebx
addl $0x3f0fe008, %ebx       # imm = 0x3F0FE008
movl %r13d, %edi
movq -0x30(%rbp), %r13
andl %esi, %edi
movl %ebx, %eax
xorl %ecx, %eax
leal (%rdi,%r12), %esi
addl $0x408be088, %esi       # imm = 0x408BE088
andl %esi, %eax
xorl %ecx, %eax
movq -0x118(%rbp), %rcx
addl %ecx, %eax
addl $0x607dc7df, %eax       # imm = 0x607DC7DF
movl %edx, %r14d
andl $0xff3ff7, %r14d        # imm = 0xFF3FF7
leal 0x7d000000(%r14), %ecx
movl %ecx, %r15d
subl %esi, %r15d
roll $0xf, %r15d
subl %eax, %r15d
addl $0x5986bc72, %r15d      # imm = 0x5986BC72
movl %r15d, 0x38(%r13)
movl %esi, %eax
xorl %ebx, %eax
andl %ecx, %eax
movl %ebx, -0x6c(%rbp)
xorl %ebx, %eax
movq -0x90(%rbp), %rbx
addl %ebx, %eax
addl $0x81080, %eax          # imm = 0x81080
andl $0x4ffdffff, %r11d      # imm = 0x4FFDFFFF
andl $0x20000, %edx          # imm = 0x20000
movl %r11d, -0x50(%rbp)
orl %r11d, %edx
xorl $0x20020000, %edx       # imm = 0x20020000
movl %edx, %ebx
subl %ecx, %ebx
roll $0xa, %ebx
subl %eax, %ebx
addl $0xb64bf7df, %ebx       # imm = 0xB64BF7DF
movl %ebx, 0x3c(%r13)
movl %edx, %eax
xorl %ecx, %eax
movl %esi, -0x58(%rbp)
andl %esi, %eax
movq -0x48(%rbp), %rsi
xorl %ecx, %eax
addl %eax, %r8d
addl $0x352e056a, %r8d       # imm = 0x352E056A
movl %edi, %r11d
movl %ecx, %edi
orl %r12d, %r11d
leal (%r9,%r11), %eax
addl $0x589c4db5, %eax       # imm = 0x589C4DB5
movl %eax, -0x80(%rbp)
leal 0x1a018293(%r10,%r14), %eax
movl %eax, -0x90(%rbp)
movq -0x78(%rbp), %rax
movq -0xc8(%rbp), %rcx
addl %ecx, %eax
addl $0xc008840, %eax        # imm = 0xC008840
movl -0x34(%rbp), %ecx
movl %eax, -0x38(%rbp)
subl %eax, %ecx
roll $0xf, %ecx
andl $0xf01e1080, %esi       # imm = 0xF01E1080
addl $0xdbdf8f25, %ecx       # imm = 0xDBDF8F25
movl %ecx, -0x78(%rbp)
leal -0x16493856(%rdx), %eax
movq %rax, -0x48(%rbp)
xorl %ebx, %ebx
cmpl $0xfff, %ebx            # imm = 0xFFF
ja 0x8d23
incl %ebx
leaq 0x3521(%rip), %r9       # 0xc0a8
movl (%r9), %ecx
movl %ecx, %eax
shll $0xa, %eax
xorl %ecx, %eax
leaq 0x3514(%rip), %r15      # 0xc0ac
movl (%r15), %ecx
movl %ecx, (%r9)
movl %ecx, %r10d
shrl $0xa, %r10d
xorl %ecx, %r10d
xorl %eax, %r10d
shrl $0xd, %eax
xorl %r10d, %eax
andl $0x1c0e71f, %ecx        # imm = 0x1C0E71F
leal (%rsi,%rcx), %r14d
addl $0x4200040, %r14d       # imm = 0x4200040
movl -0x38(%rbp), %ecx
movl %ecx, %r11d
subl %r14d, %r11d
roll $0x14, %r11d
movl %r14d, %ecx
andl -0x13c(%rbp), %ecx
xorl -0x64(%rbp), %ecx
addl -0x98(%rbp), %ecx
subl %ecx, %r11d
leal (%r8,%r11), %r10d
addl $0x173848aa, %r10d      # imm = 0x173848AA
roll $0x5, %r10d
movl %eax, (%r15)
addl %edx, %r10d
btl $0x11, %r10d
movb $0x1, %r15b
jb 0x8d16
movl %r10d, %eax
xorl -0x50(%rbp), %eax
andl $0xc0008008, %eax       # imm = 0xC0008008
cmpl $0x40000000, %eax       # imm = 0x40000000
jne 0x8d16
movl %r10d, %r13d
xorl %edx, %r13d
andl %edi, %r13d
xorl %edx, %r13d
addl -0x80(%rbp), %r13d
roll $0x9, %r13d
addl %r10d, %r13d
movl %r13d, %ecx
xorl %r10d, %ecx
movl %ecx, %eax
andl $0xa0020000, %eax       # imm = 0xA0020000
cmpl $0x20000, %eax          # imm = 0x20000
jne 0x8d16
andl %edx, %ecx
xorl %r10d, %ecx
addl -0x90(%rbp), %ecx
roll $0xe, %ecx
addl %r13d, %ecx
testl $0x80020000, %ecx       # imm = 0x80020000
jne 0x8d16
movl %r14d, %eax
subl -0x3c(%rbp), %eax
roll $0x19, %eax
subl -0x94(%rbp), %eax
movl %ecx, %r9d
xorl %r13d, %r9d
andl %r10d, %r9d
xorl %r13d, %r9d
movq -0x48(%rbp), %r12
addl %eax, %r12d
addl $0x28955b88, %r12d      # imm = 0x28955B88
addl %r9d, %r12d
roll $0x14, %r12d
addl %ecx, %r12d
movl %r12d, %r9d
xorl %ecx, %r9d
andl $0x80040000, %r9d       # imm = 0x80040000
cmpl $0x40000, %r9d          # imm = 0x40000
jne 0x8d16
addl $0x173848aa, %r11d      # imm = 0x173848AA
addl $0x28955b88, %eax       # imm = 0x28955B88
movq -0x30(%rbp), %rbx
movl %eax, (%rbx)
movl %r11d, 0x4(%rbx)
movl %r14d, %eax
movl -0x3c(%rbp), %r9d
xorl %r9d, %eax
andl -0x38(%rbp), %eax
xorl %r9d, %eax
addl -0x64(%rbp), %eax
movl -0x78(%rbp), %r9d
subl %eax, %r9d
movl %r9d, 0x8(%rbx)
xorl %ebx, %ebx
movl %ecx, %eax
movq %rax, -0xd0(%rbp)
movl %r12d, %eax
movq %rax, -0x88(%rbp)
movl %r13d, %eax
movq %rax, -0x170(%rbp)
movl %r10d, %eax
movq %rax, -0x168(%rbp)
xorl %r15d, %r15d
movl %r14d, -0x54(%rbp)
testb %r15b, %r15b
movq -0x30(%rbp), %r13
jne 0x8b72
movl $0xb, %eax
testl %ebx, %ebx
movq -0xe8(%rbp), %rbx
movq -0xe0(%rbp), %r14
jne 0x98a9
movq -0x88(%rbp), %rdx
movl %edx, %eax
movq -0xd0(%rbp), %rcx
xorl %ecx, %eax
movq -0x170(%rbp), %rsi
andl %esi, %eax
xorl %ecx, %eax
movq -0x168(%rbp), %rdi
addl %edi, %eax
addl $0xd62f105d, %eax       # imm = 0xD62F105D
movl %eax, -0x130(%rbp)
movl -0x54(%rbp), %eax
movl %eax, %r9d
movl -0x38(%rbp), %r8d
xorl %r8d, %r9d
movl -0x34(%rbp), %edi
andl %edi, %r9d
xorl %eax, %r9d
addl -0x3c(%rbp), %r9d
movl %r9d, -0x128(%rbp)
xorl %r8d, %edi
movl %edi, -0x124(%rbp)
leal -0x275e197f(%rcx), %eax
movl %eax, -0x120(%rbp)
leal -0x182c0438(%rdx), %eax
movq %rax, -0x188(%rbp)
movl -0x6c(%rbp), %edi
movl -0x58(%rbp), %r8d
subl %edi, %r8d
roll $0x14, %r8d
leal 0x2441453(%rsi), %eax
movl %eax, -0x11c(%rbp)
movl -0x5c(%rbp), %ecx
movl %ecx, %edx
movl -0x68(%rbp), %eax
xorl %eax, %edx
andl %edi, %edx
xorl %eax, %edx
movq %rdx, -0x198(%rbp)
movl -0xa4(%rbp), %esi
movl %esi, %r9d
movl -0xa8(%rbp), %edx
xorl %edx, %r9d
movl -0x40(%rbp), %eax
andl %eax, %r9d
xorl %edx, %r9d
addl -0x60(%rbp), %r9d
movl %r9d, -0x14c(%rbp)
xorl %esi, %eax
movl %eax, -0x148(%rbp)
subl %ecx, %edi
roll $0x19, %edi
addl $0x946feede, %edi       # imm = 0x946FEEDE
movl %edi, -0x6c(%rbp)
movq -0xf8(%rbp), %rax
addl $0x98d839d6, %eax       # imm = 0x98D839D6
movq %rax, -0xf8(%rbp)
movq -0xd8(%rbp), %rax
addl $0x2b96aff, %eax        # imm = 0x2B96AFF
movq %rax, -0xd8(%rbp)
addl $0x2678e6d, %r8d        # imm = 0x2678E6D
movl %r8d, -0x58(%rbp)
xorl %ecx, %ecx
movq -0xf0(%rbp), %rax
movq %rcx, -0x1a0(%rbp)
movl (%rax,%rcx,4), %ecx
xorl -0x134(%rbp), %ecx
movl %ecx, %eax
movl -0x34(%rbp), %edx
xorl %edx, %eax
andl -0x60(%rbp), %eax
xorl %edx, %eax
addl -0x38(%rbp), %eax
movq -0xf8(%rbp), %rdx
movl %edx, %r15d
subl %eax, %r15d
movl %r15d, 0x14(%r13)
addl -0x130(%rbp), %r15d
roll $0x5, %r15d
movq -0x88(%rbp), %rax
addl %eax, %r15d
movl %r15d, %edx
xorl %eax, %edx
movl $0xf, %eax
testl $0x80020000, %edx       # imm = 0x80020000
jne 0x988a
movq %rdx, %rsi
movl %ecx, %eax
subl -0x34(%rbp), %eax
roll $0xa, %eax
subl -0x128(%rbp), %eax
addl $0x3e423112, %eax       # imm = 0x3E423112
movl %eax, 0xc(%r13)
movl -0x60(%rbp), %eax
subl %ecx, %eax
roll $0x19, %eax
movq -0x190(%rbp), %rdx
addl %ecx, %edx
andl -0x124(%rbp), %ecx
xorl -0x38(%rbp), %ecx
addl -0x54(%rbp), %ecx
subl %ecx, %eax
leal 0xa83f051(%rax), %ecx
movl %ecx, 0x10(%r13)
movq -0xd8(%rbp), %rcx
subl %edx, %ecx
movl %ecx, 0x1c(%r13)
andl -0xd0(%rbp), %esi
xorl -0x88(%rbp), %esi
addl -0x11c(%rbp), %esi
movq %rsi, -0x1e8(%rbp)
movl 0x3c(%r13), %ecx
addl -0x120(%rbp), %ecx
movl %ecx, -0x140(%rbp)
movq -0x188(%rbp), %rcx
addl %ecx, %eax
addl $0xa83f051, %eax        # imm = 0xA83F051
movl %eax, -0x138(%rbp)
leal 0x21e1cde6(%r15), %eax
movl %eax, -0x12c(%rbp)
xorl %eax, %eax
movq %r15, -0x108(%rbp)
movl (%r14,%rax,4), %esi
xorl -0x9c(%rbp), %esi
movq %rax, %rdx
movl -0x68(%rbp), %eax
movl %eax, %ecx
subl %esi, %ecx
roll $0xf, %ecx
movq %rdx, -0x118(%rbp)
movl (%rbx,%rdx,4), %eax
xorl -0xa0(%rbp), %eax
movl %eax, -0x90(%rbp)
movl -0x40(%rbp), %edx
xorl %edx, %eax
movq %rsi, -0x80(%rbp)
andl %esi, %eax
xorl %edx, %eax
addl -0x144(%rbp), %eax
subl %eax, %ecx
movq -0x1e8(%rbp), %rax
leal (%rax,%rcx), %r12d
addl $0xe87f064e, %r12d      # imm = 0xE87F064E
roll $0x9, %r12d
addl %r15d, %r12d
movl $0x11, %eax
js 0x986b
movl %r12d, %esi
xorl %r15d, %esi
andl -0x88(%rbp), %esi
xorl %r15d, %esi
addl -0x140(%rbp), %esi
btl $0x11, %esi
jb 0x986b
roll $0xe, %esi
addl %r12d, %esi
js 0x986b
movl %esi, %edi
xorl %r12d, %edi
andl %r15d, %edi
xorl %r12d, %edi
addl -0x138(%rbp), %edi
roll $0x14, %edi
addl %esi, %edi
jns 0x986b
addl $0xe87f064e, %ecx       # imm = 0xE87F064E
movl %ecx, 0x28(%r13)
movq -0x198(%rbp), %rax
movq -0x80(%rbp), %rdx
addl %edx, %eax
movl -0x58(%rbp), %ecx
subl %eax, %ecx
movl %ecx, 0x34(%r13)
movl %edx, %eax
xorl -0x68(%rbp), %eax
andl -0x5c(%rbp), %eax
xorl %edx, %eax
movq %rax, -0x210(%rbp)
movl %edi, %eax
xorl %esi, %eax
andl %r12d, %eax
xorl %esi, %eax
addl -0x12c(%rbp), %eax
movq %rax, -0x208(%rbp)
addl $0xc33707d6, %r12d      # imm = 0xC33707D6
movq %rsi, -0x220(%rbp)
leal -0xb2af279(%rsi), %eax
movq %rax, -0x200(%rbp)
movq %rdi, -0x218(%rbp)
leal 0x455a14ed(%rdi), %eax
movq %rax, -0x1f8(%rbp)
xorl %r14d, %r14d
movq %r12, -0x110(%rbp)
movq -0x100(%rbp), %rax
movq %r14, -0x50(%rbp)
movl (%rax,%r14,4), %eax
xorl -0x90(%rbp), %eax
movl %eax, %edx
subl -0x40(%rbp), %edx
roll $0x19, %edx
subl -0x14c(%rbp), %edx
leal -0x698098d8(%rdx), %ecx
movq -0x80(%rbp), %r10
subl %eax, %r10d
roll $0x14, %r10d
movl %ecx, 0x20(%r13)
movq -0x210(%rbp), %rcx
addl %eax, %ecx
andl -0x148(%rbp), %eax
xorl -0xa4(%rbp), %eax
addl -0xa8(%rbp), %eax
subl %eax, %r10d
leal 0x74bb0851(%r10), %eax
movl %eax, 0x24(%r13)
movl -0x6c(%rbp), %eax
movl %eax, %r11d
subl %ecx, %r11d
movl %r11d, 0x30(%r13)
movq -0x208(%rbp), %rax
leal (%rax,%r10), %ecx
addl $0x74bb0851, %ecx       # imm = 0x74BB0851
roll $0x5, %ecx
movq -0x218(%rbp), %rdi
addl %edi, %ecx
movl %ecx, %eax
xorl %edi, %eax
andl -0x220(%rbp), %eax
xorl %edi, %eax
movl 0x38(%r13), %r8d
addl %r12d, %eax
addl %r8d, %eax
roll $0x9, %eax
addl %ecx, %eax
movl %eax, %esi
xorl %ecx, %esi
andl %edi, %esi
xorl %ecx, %esi
movl 0xc(%r13), %r9d
movq -0x200(%rbp), %rdi
movq %r9, -0x48(%rbp)
addl %r9d, %edi
addl %edi, %esi
roll $0xe, %esi
addl %eax, %esi
movl %esi, %r9d
xorl %eax, %r9d
andl %ecx, %r9d
xorl %eax, %r9d
movq -0x1f8(%rbp), %rdi
addl %edx, %edi
addl $0x967f6728, %edi       # imm = 0x967F6728
addl %r9d, %edi
roll $0x14, %edi
movl 0x8(%r13), %ebx
addl %esi, %edi
movl %edi, %r9d
xorl %esi, %r9d
andl %eax, %r9d
xorl %esi, %r9d
movl 0x34(%r13), %r14d
addl %r14d, %ecx
addl %ecx, %r9d
addl $0xa9e3e905, %r9d       # imm = 0xA9E3E905
roll $0x5, %r9d
addl %edi, %r9d
movl %r9d, %ecx
xorl %edi, %ecx
andl %esi, %ecx
xorl %edi, %ecx
movq %rbx, -0x78(%rbp)
addl %ebx, %eax
addl %ecx, %eax
addl $0xfcefa3f8, %eax       # imm = 0xFCEFA3F8
roll $0x9, %eax
addl %r9d, %eax
movl %eax, %ebx
xorl %r9d, %ebx
andl %edi, %ebx
xorl %r9d, %ebx
movl 0x1c(%r13), %ecx
addl %ecx, %esi
leal (%rbx,%rsi), %r15d
addl $0x676f02d9, %r15d      # imm = 0x676F02D9
roll $0xe, %r15d
addl %eax, %r15d
movl %r15d, %esi
xorl %eax, %esi
movl %esi, %ebx
andl %r9d, %ebx
xorl %eax, %ebx
addl %r11d, %edi
leal (%rbx,%rdi), %r12d
addl $0x8d2a4c8a, %r12d      # imm = 0x8D2A4C8A
roll $0x14, %r12d
addl %r15d, %r12d
xorl %r12d, %esi
movl 0x14(%r13), %edi
movq %rdi, -0x1f0(%rbp)
addl %edi, %r9d
leal (%rsi,%r9), %ebx
addl $0xfffa3942, %ebx       # imm = 0xFFFA3942
roll $0x4, %ebx
addl %r12d, %ebx
movl %r12d, %esi
xorl %r15d, %esi
xorl %ebx, %esi
addl %edx, %eax
addl %eax, %esi
addl $0x1df15da9, %esi       # imm = 0x1DF15DA9
roll $0xb, %esi
addl %ebx, %esi
movl %ebx, %eax
xorl %r12d, %eax
xorl %esi, %eax
movl 0x2c(%r13), %edi
addl %edi, %r15d
leal (%rax,%r15), %r9d
addl $0x6d9d6122, %r9d       # imm = 0x6D9D6122
movl $0x14, %eax
testw %r9w, %r9w
jns 0x9480
movq %rdi, -0x1b0(%rbp)
roll $0x10, %r9d
addl %esi, %r9d
movl %esi, %edi
xorl %ebx, %edi
xorl %r9d, %edi
movq %r8, -0x1e0(%rbp)
addl %r8d, %r12d
addl %edi, %r12d
addl $0xfde5380c, %r12d      # imm = 0xFDE5380C
roll $0x17, %r12d
addl %r9d, %r12d
movl %r9d, %edi
xorl %esi, %edi
xorl %r12d, %edi
movl 0x4(%r13), %r8d
addl %ebx, %edi
movq %r8, -0x1d0(%rbp)
leal (%r8,%rdi), %r15d
addl $0xa4beea44, %r15d      # imm = 0xA4BEEA44
roll $0x4, %r15d
addl %r12d, %r15d
movl %r12d, %edi
xorl %r9d, %edi
xorl %r15d, %edi
movl 0x10(%r13), %ebx
movq %rbx, -0x1b8(%rbp)
addl %ebx, %esi
addl %esi, %edi
addl $0x4bdecfa9, %edi       # imm = 0x4BDECFA9
roll $0xb, %edi
addl %r15d, %edi
movl %r15d, %esi
xorl %r12d, %esi
xorl %edi, %esi
addl %ecx, %r9d
leal (%rsi,%r9), %ebx
addl $0xf6bb4b60, %ebx       # imm = 0xF6BB4B60
roll $0x10, %ebx
movl (%r13), %esi
addl %edi, %ebx
movl %edi, %r9d
xorl %r15d, %r9d
xorl %ebx, %r9d
movl 0x28(%r13), %r8d
movq %r8, -0x1d8(%rbp)
addl %r8d, %r12d
movq %r13, %r8
leal (%r9,%r12), %r13d
addl $0xbebfbc70, %r13d      # imm = 0xBEBFBC70
roll $0x17, %r13d
addl %ebx, %r13d
movl %ebx, %r9d
xorl %edi, %r9d
xorl %r13d, %r9d
movq %r14, -0x1c0(%rbp)
addl %r14d, %r15d
addl %r9d, %r15d
addl $0x289b7ec6, %r15d      # imm = 0x289B7EC6
roll $0x4, %r15d
addl %r13d, %r15d
movl %r13d, %r9d
xorl %ebx, %r9d
xorl %r15d, %r9d
addl %esi, %edi
addl %edi, %r9d
addl $0xeaa127fa, %r9d       # imm = 0xEAA127FA
roll $0xb, %r9d
addl %r15d, %r9d
movl %r9d, %edi
xorl %r15d, %edi
movl %r15d, %r12d
xorl %r13d, %r12d
xorl %r9d, %r12d
movq -0x48(%rbp), %r14
addl %r14d, %ebx
addl %ebx, %r12d
addl $0xd4ef3085, %r12d      # imm = 0xD4EF3085
roll $0x10, %r12d
addl %r15d, %r10d
addl %r9d, %r12d
xorl %r12d, %edi
movl 0x18(%r8), %r14d
addl %r14d, %r13d
addl %r13d, %edi
addl $0x4881d05, %edi        # imm = 0x4881D05
roll $0x17, %edi
addl %r12d, %edi
movl %r12d, %ebx
xorl %r9d, %ebx
xorl %edi, %ebx
addl %ebx, %r10d
addl $0x4e8fd88a, %r10d      # imm = 0x4E8FD88A
roll $0x4, %r10d
addl %edi, %r10d
movl %edi, %ebx
xorl %r12d, %ebx
xorl %r10d, %ebx
addl %r11d, %r9d
addl %r9d, %ebx
addl $0xe6db99e5, %ebx       # imm = 0xE6DB99E5
roll $0xb, %ebx
addl %r10d, %ebx
movl %r10d, %r9d
xorl %edi, %r9d
xorl %ebx, %r9d
movl 0x3c(%r8), %r8d
movq %r8, -0x1c8(%rbp)
addl %r8d, %r12d
addl %r12d, %r9d
addl $0x1fa27cf8, %r9d       # imm = 0x1FA27CF8
roll $0x10, %r9d
addl %ebx, %r9d
movl %ebx, %r15d
xorl %r10d, %r15d
xorl %r9d, %r15d
addl -0x78(%rbp), %edi
leal (%r15,%rdi), %r13d
addl $0xc4ac5665, %r13d      # imm = 0xC4AC5665
roll $0x17, %r13d
addl %r9d, %r13d
movl %r13d, %edi
xorl %ebx, %edi
js 0x947c
movq %r14, -0x1a8(%rbp)
movl %ebx, %edi
notl %edi
orl %r13d, %edi
xorl %r9d, %edi
addl %r10d, %esi
addl %edi, %esi
addl $0xf4292244, %esi       # imm = 0xF4292244
roll $0x6, %esi
addl %r13d, %esi
movl %esi, %edi
xorl %r9d, %edi
movq -0x108(%rbp), %r15
movq -0x110(%rbp), %r12
movq -0x50(%rbp), %r14
js 0x9476
movl %r9d, %edi
notl %edi
orl %esi, %edi
xorl %r13d, %edi
addl %ebx, %ecx
addl %edi, %ecx
addl $0x432aff97, %ecx       # imm = 0x432AFF97
roll $0xa, %ecx
addl %esi, %ecx
movl %ecx, %edi
xorl %r13d, %edi
js 0x94b4
movq -0x30(%rbp), %r13
jmp 0x9492
movq -0x30(%rbp), %r13
movq -0x108(%rbp), %r15
movq -0x110(%rbp), %r12
movq -0x50(%rbp), %r14
cmpl $0x14, %eax
je 0x949f
testl %eax, %eax
jne 0x9852
incq %r14
cmpq $0x400, %r14            # imm = 0x400
jne 0x9082
jmp 0x984d
movq %r11, %r8
movl %r13d, %edi
notl %edi
orl %ecx, %edi
xorl %esi, %edi
movq -0x1e0(%rbp), %r10
addl %r9d, %r10d
leal (%rdi,%r10), %r11d
addl $0xab9423a7, %r11d      # imm = 0xAB9423A7
roll $0xf, %r11d
addl %ecx, %r11d
movl %r11d, %edi
xorl %esi, %edi
js 0x9476
movl %esi, %edi
notl %edi
orl %r11d, %edi
xorl %ecx, %edi
movq -0x1f0(%rbp), %r9
addl %r13d, %r9d
addl %r9d, %edi
addl $0xfc93a039, %edi       # imm = 0xFC93A039
roll $0x15, %edi
addl %r11d, %edi
movl %edi, %r9d
xorl %ecx, %r9d
js 0x9476
movl %ecx, %r9d
notl %r9d
orl %edi, %r9d
xorl %r11d, %r9d
addl %esi, %r8d
leal (%r9,%r8), %esi
addl $0x655b59c3, %esi       # imm = 0x655B59C3
roll $0x6, %esi
addl %edi, %esi
movl %esi, %r8d
xorl %r11d, %r8d
movq -0x30(%rbp), %r13
js 0x9492
movl %r11d, %r8d
notl %r8d
orl %esi, %r8d
xorl %edi, %r8d
movq -0x48(%rbp), %r9
addl %ecx, %r9d
leal (%r8,%r9), %ecx
addl $0x8f0ccc92, %ecx       # imm = 0x8F0CCC92
roll $0xa, %ecx
addl %esi, %ecx
movl %ecx, %r8d
xorl %edi, %r8d
js 0x9492
movl %edi, %r8d
notl %r8d
orl %ecx, %r8d
xorl %esi, %r8d
movq -0x1d8(%rbp), %r9
addl %r11d, %r9d
addl %r9d, %r8d
addl $0xffeff47d, %r8d       # imm = 0xFFEFF47D
roll $0xf, %r8d
addl %ecx, %r8d
movl %r8d, %r9d
xorl %esi, %r9d
js 0x9492
movl %esi, %r9d
notl %r9d
orl %r8d, %r9d
xorl %ecx, %r9d
movq -0x1d0(%rbp), %r10
addl %edi, %r10d
leal (%r9,%r10), %edi
addl $0x85845dd1, %edi       # imm = 0x85845DD1
roll $0x15, %edi
addl %r8d, %edi
movl %edi, %r9d
xorl %ecx, %r9d
js 0x9492
movl %ecx, %r9d
notl %r9d
orl %edi, %r9d
xorl %r8d, %r9d
addl %esi, %edx
addl %r9d, %edx
addl $0x627e577, %edx        # imm = 0x627E577
roll $0x6, %edx
addl %edi, %edx
movl %edx, %esi
xorl %r8d, %esi
js 0x9492
movl %r8d, %esi
notl %esi
orl %edx, %esi
xorl %edi, %esi
movq -0x1c8(%rbp), %r9
addl %ecx, %r9d
leal (%rsi,%r9), %ecx
addl $0xfe2ce6e0, %ecx       # imm = 0xFE2CE6E0
roll $0xa, %ecx
addl %edx, %ecx
movl %ecx, %esi
xorl %edi, %esi
js 0x9492
movl %edi, %esi
notl %esi
orl %ecx, %esi
xorl %edx, %esi
movq -0x1a8(%rbp), %r9
addl %r8d, %r9d
addl %r9d, %esi
addl $0xa3014314, %esi       # imm = 0xA3014314
roll $0xf, %esi
addl %ecx, %esi
movl %esi, %r8d
xorl %edx, %r8d
js 0x9492
movl %edx, %r8d
notl %r8d
orl %esi, %r8d
xorl %ecx, %r8d
movq -0x1c0(%rbp), %r9
addl %edi, %r9d
leal (%r8,%r9), %edi
addl $0x4e0811a1, %edi       # imm = 0x4E0811A1
roll $0x15, %edi
addl %esi, %edi
movl %edi, %r8d
xorl %ecx, %r8d
jns 0x9492
movl %ecx, %r8d
notl %r8d
orl %edi, %r8d
xorl %esi, %r8d
movq -0x1b8(%rbp), %r9
addl %edx, %r9d
leal (%r8,%r9), %edx
addl $0xf7537e82, %edx       # imm = 0xF7537E82
roll $0x6, %edx
addl %edi, %edx
movl %edx, %r8d
xorl %esi, %r8d
js 0x9492
movl %esi, %r8d
notl %r8d
orl %edx, %r8d
xorl %edi, %r8d
movq -0x1b0(%rbp), %r9
addl %ecx, %r9d
leal (%r8,%r9), %ecx
addl $0xbd3af235, %ecx       # imm = 0xBD3AF235
roll $0xa, %ecx
addl %edx, %ecx
movl %ecx, %r8d
xorl %edi, %r8d
js 0x9492
notl %edi
orl %ecx, %edi
xorl %edx, %edi
movq -0x78(%rbp), %r8
addl %esi, %r8d
leal (%rdi,%r8), %esi
addl $0x2ad7d2bb, %esi       # imm = 0x2AD7D2BB
roll $0xf, %esi
addl %ecx, %esi
xorl %edx, %esi
js 0x9492
movl $0x1, %edx
movq 0x28c4(%rip), %rbx      # 0xbfd8
movq %rbx, %rdi
leaq 0x996(%rip), %rsi       # 0xa0b4
callq 0x10d0
movq %rbx, %rdi
callq 0x1070
movq -0x178(%rbp), %rdx
movups (%rdx), %xmm0
movaps %xmm0, -0x160(%rbp)
xorl %eax, %eax
movl $0x80000000, %esi       # imm = 0x80000000
movl (%rdx,%rax,4), %ecx
xorl %esi, %ecx
movl %ecx, -0xc0(%rbp,%rax,4)
incq %rax
cmpq $0x4, %rax
jne 0x9743
movl $0x2000000, %eax        # imm = 0x2000000
addl %eax, -0xbc(%rbp)
addl %eax, -0xb8(%rbp)
addl %eax, -0xb4(%rbp)
movups (%r13), %xmm0
movups 0x10(%r13), %xmm1
movups 0x20(%r13), %xmm2
movups 0x30(%r13), %xmm3
movaps %xmm1, -0x250(%rbp)
movaps %xmm2, -0x240(%rbp)
movaps %xmm0, -0x260(%rbp)
movaps %xmm3, -0x230(%rbp)
xorb $-0x80, -0x24d(%rbp)
addl $0xffff8000, -0x234(%rbp) # imm = 0xFFFF8000
xorb $-0x80, -0x225(%rbp)
leaq -0x160(%rbp), %rdi
movq %r13, %rsi
callq 0x2ee4
leaq -0xc0(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x2ee4
movl -0xc0(%rbp), %eax
movl -0x160(%rbp), %ecx
cmpl %ecx, %eax
jne 0x982a
movl -0xbc(%rbp), %edx
cmpl -0x15c(%rbp), %edx
jne 0x9826
movl -0xb8(%rbp), %edx
cmpl -0x158(%rbp), %edx
jne 0x9826
cmpl %ecx, %eax
sete %dl
movl -0xb4(%rbp), %ecx
xorl %eax, %eax
cmpl -0x154(%rbp), %ecx
sete %cl
orb %cl, %dl
je 0x982a
movb %cl, %al
jmp 0x9492
cmpl %ecx, %eax
je 0x9846
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x87d(%rip), %rsi       # 0xa0b6
callq 0x10d0
movq %rbx, %rdi
callq 0x1070
xorl %eax, %eax
jmp 0x9492
movl $0x13, %eax
cmpl $0x13, %eax
movl $0x0, %ecx
cmovel %ecx, %eax
movq -0xe8(%rbp), %rbx
movq -0xe0(%rbp), %r14
cmpl $0x11, %eax
je 0x9874
testl %eax, %eax
jne 0x988a
movq -0x118(%rbp), %rax
incq %rax
cmpq $0x20, %rax
jne 0x8f55
xorl %eax, %eax
cmpl $0xf, %eax
je 0x9893
testl %eax, %eax
jne 0x98a9
movq -0x1a0(%rbp), %rcx
incq %rcx
cmpq $0x40, %rcx
jne 0x8e50
xorl %eax, %eax
testl %eax, %eax
je 0x86b8
cmpl $0xb, %eax
je 0x86b8
movl $0x1000, %esi           # imm = 0x1000
movq -0x100(%rbp), %rdi
callq 0x10c0
movl $0x80, %esi
movq %r14, %rdi
callq 0x10c0
movl $0x80, %esi
movq %rbx, %rdi
callq 0x10c0
movl $0x100, %esi            # imm = 0x100
movq -0xf0(%rbp), %rdi
callq 0x10c0
addq $0x238, %rsp            # imm = 0x238
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r12
jmp 0x992d
movq %rax, %r12
jmp 0x993e
movq %rax, %r12
jmp 0x994f
jmp 0x9919
movq %rax, %r12
movl $0x1000, %esi           # imm = 0x1000
movq -0x100(%rbp), %rdi
callq 0x10c0
movl $0x80, %esi
movq -0xe0(%rbp), %rdi
callq 0x10c0
movl $0x80, %esi
movq -0xe8(%rbp), %rdi
callq 0x10c0
movl $0x100, %esi            # imm = 0x100
movq -0xf0(%rbp), %rdi
callq 0x10c0
movq %r12, %rdi
callq 0x1100