// File: /workspace/github_cpp_makefile_star2_O1/wangyu-[P]pwdgen/lib/pbkdf2-sha1.cpp
// Function: sha1_process(sha1_context*, unsigned char const*)
static void sha1_process(sha1_context * ctx, const unsigned char data[64])
{
	unsigned long temp, W[16], A, B, C, D, E;

	GET_ULONG_BE(W[0], data, 0);
	GET_ULONG_BE(W[1], data, 4);
	GET_ULONG_BE(W[2], data, 8);
	GET_ULONG_BE(W[3], data, 12);
	GET_ULONG_BE(W[4], data, 16);
	GET_ULONG_BE(W[5], data, 20);
	GET_ULONG_BE(W[6], data, 24);
	GET_ULONG_BE(W[7], data, 28);
	GET_ULONG_BE(W[8], data, 32);
	GET_ULONG_BE(W[9], data, 36);
	GET_ULONG_BE(W[10], data, 40);
	GET_ULONG_BE(W[11], data, 44);
	GET_ULONG_BE(W[12], data, 48);
	GET_ULONG_BE(W[13], data, 52);
	GET_ULONG_BE(W[14], data, 56);
	GET_ULONG_BE(W[15], data, 60);

#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))

#define R(t)                                            \
(                                                       \
    temp = W[(t -  3) & 0x0F] ^ W[(t - 8) & 0x0F] ^     \
           W[(t - 14) & 0x0F] ^ W[ t      & 0x0F],      \
    ( W[t & 0x0F] = S(temp,1) )                         \
)

#define P(a,b,c,d,e,x)                                  \
{                                                       \
    e += S(a,5) + F(b,c,d) + K + x; b = S(b,30);        \
}

	A = ctx->state[0];
	B = ctx->state[1];
	C = ctx->state[2];
	D = ctx->state[3];
	E = ctx->state[4];

#define F(x,y,z) (z ^ (x & (y ^ z)))
#define K 0x5A827999

	P(A, B, C, D, E, W[0]);
	P(E, A, B, C, D, W[1]);
	P(D, E, A, B, C, W[2]);
	P(C, D, E, A, B, W[3]);
	P(B, C, D, E, A, W[4]);
	P(A, B, C, D, E, W[5]);
	P(E, A, B, C, D, W[6]);
	P(D, E, A, B, C, W[7]);
	P(C, D, E, A, B, W[8]);
	P(B, C, D, E, A, W[9]);
	P(A, B, C, D, E, W[10]);
	P(E, A, B, C, D, W[11]);
	P(D, E, A, B, C, W[12]);
	P(C, D, E, A, B, W[13]);
	P(B, C, D, E, A, W[14]);
	P(A, B, C, D, E, W[15]);
	P(E, A, B, C, D, R(16));
	P(D, E, A, B, C, R(17));
	P(C, D, E, A, B, R(18));
	P(B, C, D, E, A, R(19));

#undef K
#undef F

#define F(x,y,z) (x ^ y ^ z)
#define K 0x6ED9EBA1

	P(A, B, C, D, E, R(20));
	P(E, A, B, C, D, R(21));
	P(D, E, A, B, C, R(22));
	P(C, D, E, A, B, R(23));
	P(B, C, D, E, A, R(24));
	P(A, B, C, D, E, R(25));
	P(E, A, B, C, D, R(26));
	P(D, E, A, B, C, R(27));
	P(C, D, E, A, B, R(28));
	P(B, C, D, E, A, R(29));
	P(A, B, C, D, E, R(30));
	P(E, A, B, C, D, R(31));
	P(D, E, A, B, C, R(32));
	P(C, D, E, A, B, R(33));
	P(B, C, D, E, A, R(34));
	P(A, B, C, D, E, R(35));
	P(E, A, B, C, D, R(36));
	P(D, E, A, B, C, R(37));
	P(C, D, E, A, B, R(38));
	P(B, C, D, E, A, R(39));

#undef K
#undef F

#define F(x,y,z) ((x & y) | (z & (x | y)))
#define K 0x8F1BBCDC

	P(A, B, C, D, E, R(40));
	P(E, A, B, C, D, R(41));
	P(D, E, A, B, C, R(42));
	P(C, D, E, A, B, R(43));
	P(B, C, D, E, A, R(44));
	P(A, B, C, D, E, R(45));
	P(E, A, B, C, D, R(46));
	P(D, E, A, B, C, R(47));
	P(C, D, E, A, B, R(48));
	P(B, C, D, E, A, R(49));
	P(A, B, C, D, E, R(50));
	P(E, A, B, C, D, R(51));
	P(D, E, A, B, C, R(52));
	P(C, D, E, A, B, R(53));
	P(B, C, D, E, A, R(54));
	P(A, B, C, D, E, R(55));
	P(E, A, B, C, D, R(56));
	P(D, E, A, B, C, R(57));
	P(C, D, E, A, B, R(58));
	P(B, C, D, E, A, R(59));

#undef K
#undef F

#define F(x,y,z) (x ^ y ^ z)
#define K 0xCA62C1D6

	P(A, B, C, D, E, R(60));
	P(E, A, B, C, D, R(61));
	P(D, E, A, B, C, R(62));
	P(C, D, E, A, B, R(63));
	P(B, C, D, E, A, R(64));
	P(A, B, C, D, E, R(65));
	P(E, A, B, C, D, R(66));
	P(D, E, A, B, C, R(67));
	P(C, D, E, A, B, R(68));
	P(B, C, D, E, A, R(69));
	P(A, B, C, D, E, R(70));
	P(E, A, B, C, D, R(71));
	P(D, E, A, B, C, R(72));
	P(C, D, E, A, B, R(73));
	P(B, C, D, E, A, R(74));
	P(A, B, C, D, E, R(75));
	P(E, A, B, C, D, R(76));
	P(D, E, A, B, C, R(77));
	P(C, D, E, A, B, R(78));
	P(B, C, D, E, A, R(79));

#undef K
#undef F

	ctx->state[0] += A;
	ctx->state[1] += B;
	ctx->state[2] += C;
	ctx->state[3] += D;
	ctx->state[4] += E;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x50, %rsp
movq %rsi, %rax
movq %rdi, 0x48(%rsp)
movl (%rsi), %edx
movl 0x4(%rsi), %ecx
bswapl %edx
movq %rdx, %r13
movq %rdx, -0x70(%rsp)
bswapl %ecx
movq %rcx, %r12
movq %rcx, -0x80(%rsp)
movq 0x10(%rdi), %rdx
movq 0x18(%rdi), %rsi
movq 0x20(%rdi), %rbx
movq 0x28(%rdi), %r11
movq 0x30(%rdi), %r10
movq %r10, 0x40(%rsp)
movl %edx, %ecx
movq %rdx, %r8
movq %rsi, %rdx
shlq $0x1e, %rdx
movl %esi, %edi
movq %rsi, %r14
movq %rsi, 0x30(%rsp)
shrl $0x2, %edi
orq %rdx, %rdi
movq %rdi, %rdx
xorq %rbx, %rdx
andq %r8, %rdx
movq %r8, %rsi
movq %r8, %r15
movq %r8, 0x20(%rsp)
shlq $0x5, %r8
shrl $0x1b, %ecx
movq %r11, %r9
xorq %rbx, %r9
andq %r14, %r9
xorq %r11, %r9
movq %r11, 0x38(%rsp)
addq %r13, %r8
addq %r10, %rcx
addq %r8, %rcx
addq %r9, %rcx
movl $0x5a827999, %r9d       # imm = 0x5A827999
addq %r9, %rcx
movq %rbx, 0x28(%rsp)
xorq %rbx, %rdx
addq %r12, %rdx
addq %r11, %rdx
movq %rcx, %r8
shlq $0x5, %r8
addq %r8, %rdx
movl %ecx, %r10d
shrl $0x1b, %r10d
addq %r9, %r10
addq %rdx, %r10
movl %r15d, %r8d
shlq $0x1e, %rsi
shrl $0x2, %r8d
orq %rsi, %r8
movl 0x8(%rax), %edx
bswapl %edx
movq %rdx, -0x68(%rsp)
movq %rdi, %rsi
xorq %r8, %rsi
andq %rcx, %rsi
xorq %rdi, %rsi
addq %rbx, %rdx
addq %rdx, %rsi
movq %r10, %rdx
shlq $0x5, %rdx
addq %rdx, %rsi
movl %r10d, %edx
shrl $0x1b, %edx
movl $0x5a827999, %r11d      # imm = 0x5A827999
addq %r11, %rdx
addq %rsi, %rdx
movq %rcx, %rsi
shlq $0x1e, %rsi
shrl $0x2, %ecx
orq %rsi, %rcx
movl 0xc(%rax), %r9d
bswapl %r9d
movq %rcx, %rsi
xorq %r8, %rsi
andq %r10, %rsi
xorq %r8, %rsi
addq %r9, %rdi
addq %rsi, %rdi
movq %rdx, %rsi
shlq $0x5, %rsi
addq %rsi, %rdi
movl %edx, %esi
shrl $0x1b, %esi
addq %r11, %rsi
movl $0x5a827999, %r13d      # imm = 0x5A827999
addq %rdi, %rsi
movq %r10, %rdi
shlq $0x1e, %rdi
shrl $0x2, %r10d
orq %rdi, %r10
movl 0x10(%rax), %r12d
bswapl %r12d
movq %r10, %rdi
xorq %rcx, %rdi
andq %rdx, %rdi
xorq %rcx, %rdi
addq %r12, %r8
addq %rdi, %r8
movq %rsi, %rdi
shlq $0x5, %rdi
addq %rdi, %r8
movl %esi, %edi
shrl $0x1b, %edi
addq %r13, %rdi
addq %r8, %rdi
movq %rdx, %r8
shlq $0x1e, %r8
shrl $0x2, %edx
orq %r8, %rdx
movl 0x14(%rax), %r8d
bswapl %r8d
movq %r8, %r11
movq %r8, -0x78(%rsp)
movq %rdx, %r8
xorq %r10, %r8
andq %rsi, %r8
xorq %r10, %r8
addq %r11, %rcx
addq %r8, %rcx
movq %rdi, %r8
shlq $0x5, %r8
addq %r8, %rcx
movl %edi, %r8d
shrl $0x1b, %r8d
addq %r13, %r8
addq %rcx, %r8
movq %rsi, %rcx
shlq $0x1e, %rcx
shrl $0x2, %esi
orq %rcx, %rsi
movl 0x18(%rax), %ecx
bswapl %ecx
movq %rcx, %r11
movq %rcx, -0x48(%rsp)
movq %rsi, %rcx
xorq %rdx, %rcx
andq %rdi, %rcx
xorq %rdx, %rcx
addq %r11, %r10
addq %rcx, %r10
movq %r8, %rcx
shlq $0x5, %rcx
addq %rcx, %r10
movl %r8d, %r11d
shrl $0x1b, %r11d
addq %r13, %r11
addq %r10, %r11
movq %rdi, %rcx
shlq $0x1e, %rcx
shrl $0x2, %edi
orq %rcx, %rdi
movl 0x1c(%rax), %ecx
bswapl %ecx
movq %rcx, %r10
movq %rcx, -0x60(%rsp)
movq %rdi, %rcx
xorq %rsi, %rcx
andq %r8, %rcx
xorq %rsi, %rcx
addq %r10, %rdx
addq %rcx, %rdx
movq %r11, %rcx
shlq $0x5, %rcx
addq %rcx, %rdx
movl %r11d, %ebx
shrl $0x1b, %ebx
addq %r13, %rbx
addq %rdx, %rbx
movq %r8, %rcx
shlq $0x1e, %rcx
shrl $0x2, %r8d
orq %rcx, %r8
movl 0x20(%rax), %r14d
bswapl %r14d
movq %r8, %rcx
xorq %rdi, %rcx
andq %r11, %rcx
xorq %rdi, %rcx
addq %r14, %rsi
addq %rcx, %rsi
movq %rbx, %rcx
shlq $0x5, %rcx
addq %rcx, %rsi
movl %ebx, %edx
shrl $0x1b, %edx
addq %r13, %rdx
addq %rsi, %rdx
movq %r11, %rcx
shlq $0x1e, %rcx
shrl $0x2, %r11d
orq %rcx, %r11
movl 0x24(%rax), %ecx
bswapl %ecx
movq %rcx, %rsi
movq %rcx, -0x10(%rsp)
movq %r11, %rcx
xorq %r8, %rcx
andq %rbx, %rcx
xorq %r8, %rcx
addq %rsi, %rdi
addq %rcx, %rdi
movq %rdx, %rcx
shlq $0x5, %rcx
addq %rcx, %rdi
movl %edx, %r15d
shrl $0x1b, %r15d
addq %r13, %r15
addq %rdi, %r15
movq %rbx, %rcx
shlq $0x1e, %rcx
shrl $0x2, %ebx
orq %rcx, %rbx
movl 0x28(%rax), %ecx
bswapl %ecx
movq %rcx, %rsi
movq %rcx, -0x8(%rsp)
movq %rbx, %rcx
xorq %r11, %rcx
andq %rdx, %rcx
xorq %r11, %rcx
addq %rsi, %r8
addq %rcx, %r8
movq %r15, %rcx
shlq $0x5, %rcx
addq %rcx, %r8
movl %r15d, %ecx
shrl $0x1b, %ecx
addq %r13, %rcx
addq %r8, %rcx
movq %rdx, %rsi
shlq $0x1e, %rsi
shrl $0x2, %edx
orq %rsi, %rdx
movl 0x2c(%rax), %esi
bswapl %esi
movq %rsi, %rdi
movq %rsi, -0x40(%rsp)
movq %rdx, %rsi
xorq %rbx, %rsi
andq %r15, %rsi
xorq %rbx, %rsi
addq %rdi, %r11
addq %rsi, %r11
movq %rcx, %rsi
shlq $0x5, %rsi
addq %rsi, %r11
movl %ecx, %r8d
shrl $0x1b, %r8d
addq %r13, %r8
addq %r11, %r8
movq %r15, %rsi
shlq $0x1e, %rsi
shrl $0x2, %r15d
orq %rsi, %r15
movl 0x30(%rax), %esi
bswapl %esi
movq %rsi, %rdi
movq %rsi, -0x38(%rsp)
movq %r15, %rsi
xorq %rdx, %rsi
andq %rcx, %rsi
xorq %rdx, %rsi
addq %rdi, %rbx
addq %rsi, %rbx
movq %r8, %rsi
shlq $0x5, %rsi
addq %rsi, %rbx
movl %r8d, %edi
shrl $0x1b, %edi
addq %r13, %rdi
addq %rbx, %rdi
movq %rcx, %rsi
shlq $0x1e, %rsi
shrl $0x2, %ecx
orq %rsi, %rcx
movl 0x34(%rax), %r13d
bswapl %r13d
movq %rcx, %rsi
xorq %r15, %rsi
andq %r8, %rsi
xorq %r15, %rsi
addq %r13, %rdx
addq %rsi, %rdx
movq %rdi, %rsi
shlq $0x5, %rsi
addq %rsi, %rdx
movl %edi, %esi
shrl $0x1b, %esi
movl $0x5a827999, %r10d      # imm = 0x5A827999
addq %r10, %rsi
addq %rdx, %rsi
movq %r8, %rdx
shlq $0x1e, %rdx
shrl $0x2, %r8d
orq %rdx, %r8
movl 0x38(%rax), %ebp
bswapl %ebp
movq %r8, %rdx
xorq %rcx, %rdx
andq %rdi, %rdx
xorq %rcx, %rdx
addq %rbp, %r15
addq %rdx, %r15
movq %rsi, %rdx
shlq $0x5, %rdx
addq %rdx, %r15
movl %esi, %edx
shrl $0x1b, %edx
addq %r10, %rdx
movl $0x5a827999, %r11d      # imm = 0x5A827999
addq %r15, %rdx
movq %rdi, %r10
shlq $0x1e, %r10
shrl $0x2, %edi
orq %r10, %rdi
movl 0x3c(%rax), %eax
bswapl %eax
movq %rax, %r10
movq %rdi, %rax
xorq %r8, %rax
andq %rsi, %rax
xorq %r8, %rax
addq %r10, %rcx
movq %r10, %r15
movq %r10, -0x50(%rsp)
addq %rax, %rcx
movq %rdx, %rax
shlq $0x5, %rax
addq %rax, %rcx
movl %edx, %eax
shrl $0x1b, %eax
addq %r11, %rax
addq %rcx, %rax
movq %rsi, %rcx
shlq $0x1e, %rcx
shrl $0x2, %esi
orq %rcx, %rsi
movq -0x70(%rsp), %r10
movq -0x68(%rsp), %r11
xorq %r11, %r10
movq %r14, %rcx
xorq %r13, %rcx
xorq %r10, %rcx
movl %ecx, %r10d
shrl $0x1f, %r10d
leaq (%r10,%rcx,2), %rbx
movq %rsi, %rcx
xorq %rdi, %rcx
andq %rdx, %rcx
xorq %rdi, %rcx
addq %rbx, %r8
movq %rbx, 0x8(%rsp)
addq %rcx, %r8
movq %rax, %rcx
shlq $0x5, %rcx
addq %rcx, %r8
movl %eax, %r10d
shrl $0x1b, %r10d
movl $0x5a827999, %ecx       # imm = 0x5A827999
addq %rcx, %r10
addq %r8, %r10
movq %rdx, %rcx
shlq $0x1e, %rcx
shrl $0x2, %edx
orq %rcx, %rdx
movq -0x80(%rsp), %r8
xorq %r9, %r8
movq -0x10(%rsp), %rcx
xorq %rbp, %rcx
xorq %r8, %rcx
movl %ecx, %r8d
shrl $0x1f, %r8d
leaq (%r8,%rcx,2), %r8
movq %r8, -0x58(%rsp)
movq %rdx, %rcx
xorq %rsi, %rcx
andq %rax, %rcx
xorq %rsi, %rcx
addq %r8, %rdi
addq %rcx, %rdi
movq %r10, %rcx
shlq $0x5, %rcx
addq %rcx, %rdi
movl %r10d, %ecx
shrl $0x1b, %ecx
movl $0x5a827999, %r8d       # imm = 0x5A827999
addq %r8, %rcx
addq %rdi, %rcx
movq %rax, %rdi
shlq $0x1e, %rdi
shrl $0x2, %eax
orq %rdi, %rax
movq %r11, %r8
xorq %r12, %r8
movq -0x8(%rsp), %rdi
xorq %r15, %rdi
xorq %r8, %rdi
movl %edi, %r8d
shrl $0x1f, %r8d
leaq (%r8,%rdi,2), %r8
movq %r8, -0x80(%rsp)
movq %rax, %rdi
xorq %rdx, %rdi
andq %r10, %rdi
xorq %rdx, %rdi
addq %r8, %rsi
addq %rdi, %rsi
movq %rcx, %rdi
shlq $0x5, %rdi
addq %rdi, %rsi
movl %ecx, %r8d
shrl $0x1b, %r8d
movl $0x5a827999, %edi       # imm = 0x5A827999
addq %rdi, %r8
movl $0x5a827999, %r15d      # imm = 0x5A827999
addq %rsi, %r8
movq %r10, %rsi
shlq $0x1e, %rsi
shrl $0x2, %r10d
orq %rsi, %r10
movq -0x78(%rsp), %r11
xorq %r11, %r9
xorq -0x40(%rsp), %r9
xorq %rbx, %r9
movl %r9d, %esi
shrl $0x1f, %esi
leaq (%rsi,%r9,2), %rdi
movq %rdi, -0x68(%rsp)
movq %r10, %rsi
xorq %rax, %rsi
andq %rcx, %rsi
xorq %rax, %rsi
addq %rdi, %rdx
addq %rsi, %rdx
movq %r8, %rsi
shlq $0x5, %rsi
addq %rsi, %rdx
movl %r8d, %edi
shrl $0x1b, %edi
addq %r15, %rdi
addq %rdx, %rdi
movq %rcx, %rdx
shlq $0x1e, %rdx
shrl $0x2, %ecx
orq %rdx, %rcx
movq -0x48(%rsp), %rbx
xorq %rbx, %r12
xorq -0x38(%rsp), %r12
xorq -0x58(%rsp), %r12
movl %r12d, %edx
shrl $0x1f, %edx
leaq (%rdx,%r12,2), %rsi
movq %rsi, -0x70(%rsp)
movq %rcx, %rdx
xorq %r10, %rdx
xorq %r8, %rdx
addq %rsi, %rax
addq %rdx, %rax
movq %rdi, %rdx
shlq $0x5, %rdx
addq %rdx, %rax
movl %edi, %r9d
shrl $0x1b, %r9d
movl $0x6ed9eba1, %edx       # imm = 0x6ED9EBA1
addq %rdx, %r9
addq %rax, %r9
movq %r8, %rax
shlq $0x1e, %rax
shrl $0x2, %r8d
orq %rax, %r8
movq %r11, %rsi
movq -0x60(%rsp), %r11
xorq %r11, %rsi
xorq %r13, %rsi
xorq -0x80(%rsp), %rsi
movl %esi, %eax
shrl $0x1f, %eax
leaq (%rax,%rsi,2), %rsi
movq %rsi, -0x78(%rsp)
movq %r8, %rax
xorq %rcx, %rax
xorq %rdi, %rax
addq %rsi, %r10
addq %rax, %r10
movq %r9, %rax
shlq $0x5, %rax
addq %rax, %r10
movl %r9d, %r12d
shrl $0x1b, %r12d
addq %rdx, %r12
addq %r10, %r12
movq %rdi, %rax
shlq $0x1e, %rax
shrl $0x2, %edi
orq %rax, %rdi
xorq %r14, %rbx
xorq %rbp, %rbx
xorq -0x68(%rsp), %rbx
movl %ebx, %eax
shrl $0x1f, %eax
leaq (%rax,%rbx,2), %r15
movq %rdi, %rax
xorq %r8, %rax
xorq %r9, %rax
addq %r15, %rcx
movq %r15, -0x28(%rsp)
addq %rax, %rcx
movq %r12, %rax
shlq $0x5, %rax
addq %rax, %rcx
movl %r12d, %eax
shrl $0x1b, %eax
addq %rdx, %rax
addq %rcx, %rax
movq %r9, %rcx
shlq $0x1e, %rcx
shrl $0x2, %r9d
orq %rcx, %r9
movq -0x10(%rsp), %r10
xorq %r10, %r11
xorq -0x50(%rsp), %r11
xorq -0x70(%rsp), %r11
movl %r11d, %ecx
shrl $0x1f, %ecx
leaq (%rcx,%r11,2), %rsi
movq %rsi, -0x60(%rsp)
movq %r9, %rcx
xorq %rdi, %rcx
xorq %r12, %rcx
addq %rsi, %r8
addq %rcx, %r8
movq %rax, %rcx
shlq $0x5, %rcx
addq %rcx, %r8
movl %eax, %ecx
shrl $0x1b, %ecx
addq %rdx, %rcx
addq %r8, %rcx
movq %r12, %rdx
shlq $0x1e, %rdx
shrl $0x2, %r12d
orq %rdx, %r12
movq -0x8(%rsp), %r11
xorq %r11, %r14
xorq 0x8(%rsp), %r14
xorq -0x78(%rsp), %r14
movl %r14d, %edx
shrl $0x1f, %edx
leaq (%rdx,%r14,2), %rsi
movq %r12, %rdx
xorq %r9, %rdx
xorq %rax, %rdx
addq %rsi, %rdi
movq %rsi, %r14
movq %rsi, 0x10(%rsp)
addq %rdx, %rdi
movq %rcx, %rdx
shlq $0x5, %rdx
addq %rdx, %rdi
movl %ecx, %edx
shrl $0x1b, %edx
movl $0x6ed9eba1, %ebx       # imm = 0x6ED9EBA1
addq %rbx, %rdx
addq %rdi, %rdx
movq %rax, %rsi
shlq $0x1e, %rsi
shrl $0x2, %eax
orq %rsi, %rax
movq -0x40(%rsp), %r8
movq %r10, %rdi
xorq %r8, %rdi
xorq -0x58(%rsp), %rdi
xorq %r15, %rdi
movl %edi, %esi
shrl $0x1f, %esi
leaq (%rsi,%rdi,2), %rdi
movq %rax, %rsi
xorq %r12, %rsi
xorq %rcx, %rsi
addq %rdi, %r9
movq %rdi, %r15
movq %rdi, -0x30(%rsp)
addq %rsi, %r9
movq %rdx, %rsi
shlq $0x5, %rsi
addq %rsi, %r9
movl %edx, %edi
shrl $0x1b, %edi
addq %rbx, %rdi
addq %r9, %rdi
movq %rcx, %rsi
shlq $0x1e, %rsi
shrl $0x2, %ecx
orq %rsi, %rcx
movq -0x38(%rsp), %r10
movq %r11, %r9
xorq %r10, %r9
xorq -0x80(%rsp), %r9
xorq -0x60(%rsp), %r9
movl %r9d, %esi
shrl $0x1f, %esi
leaq (%rsi,%r9,2), %r9
movq %rcx, %rsi
xorq %rax, %rsi
xorq %rdx, %rsi
addq %r9, %r12
movq %r9, %r11
movq %r9, -0x18(%rsp)
addq %rsi, %r12
movq %rdi, %rsi
shlq $0x5, %rsi
addq %rsi, %r12
movl %edi, %r9d
shrl $0x1b, %r9d
addq %rbx, %r9
addq %r12, %r9
movq %rdx, %rsi
shlq $0x1e, %rsi
shrl $0x2, %edx
orq %rsi, %rdx
xorq %r13, %r8
xorq -0x68(%rsp), %r8
xorq %r14, %r8
movl %r8d, %esi
shrl $0x1f, %esi
leaq (%rsi,%r8,2), %r8
movq %rdx, %rsi
xorq %rcx, %rsi
xorq %rdi, %rsi
addq %r8, %rax
movq %r8, %r14
addq %rsi, %rax
movq %r9, %rsi
shlq $0x5, %rsi
addq %rsi, %rax
movl %r9d, %esi
shrl $0x1b, %esi
movl $0x6ed9eba1, %r12d      # imm = 0x6ED9EBA1
addq %r12, %rsi
addq %rax, %rsi
movq %rdi, %rax
shlq $0x1e, %rax
shrl $0x2, %edi
orq %rax, %rdi
xorq %rbp, %r10
xorq -0x70(%rsp), %r10
xorq %r15, %r10
movl %r10d, %eax
shrl $0x1f, %eax
leaq (%rax,%r10,2), %r8
movq %rdi, %rax
xorq %rdx, %rax
xorq %r9, %rax
addq %r8, %rcx
movq %r8, %rbx
movq %r8, -0x20(%rsp)
addq %rax, %rcx
movq %rsi, %rax
shlq $0x5, %rax
addq %rax, %rcx
movl %esi, %eax
shrl $0x1b, %eax
addq %r12, %rax
movl $0x6ed9eba1, %r10d      # imm = 0x6ED9EBA1
addq %rcx, %rax
movq %r9, %rcx
shlq $0x1e, %rcx
shrl $0x2, %r9d
orq %rcx, %r9
movq -0x50(%rsp), %r15
xorq %r15, %r13
xorq -0x78(%rsp), %r13
xorq %r11, %r13
movl %r13d, %ecx
shrl $0x1f, %ecx
leaq (%rcx,%r13,2), %r8
movq %r9, %rcx
xorq %rdi, %rcx
xorq %rsi, %rcx
addq %r8, %rdx
movq %r8, %r12
movq %r8, -0x48(%rsp)
addq %rcx, %rdx
movq %rax, %rcx
shlq $0x5, %rcx
addq %rcx, %rdx
movl %eax, %ecx
shrl $0x1b, %ecx
addq %r10, %rcx
movl $0x6ed9eba1, %r11d      # imm = 0x6ED9EBA1
addq %rdx, %rcx
movq %rsi, %rdx
shlq $0x1e, %rdx
shrl $0x2, %esi
orq %rdx, %rsi
movq 0x8(%rsp), %r10
xorq %r10, %rbp
xorq -0x28(%rsp), %rbp
xorq %r14, %rbp
movq %r14, %r13
movq %r14, 0x18(%rsp)
movl %ebp, %edx
shrl $0x1f, %edx
leaq (%rdx,%rbp,2), %r8
movq %rsi, %rdx
xorq %r9, %rdx
xorq %rax, %rdx
addq %r8, %rdi
movq %r8, %r14
movq %r8, (%rsp)
addq %rdx, %rdi
movq %rcx, %rdx
shlq $0x5, %rdx
addq %rdx, %rdi
movl %ecx, %edx
shrl $0x1b, %edx
addq %r11, %rdx
movl $0x6ed9eba1, %ebp       # imm = 0x6ED9EBA1
addq %rdi, %rdx
movq %rax, %rdi
shlq $0x1e, %rdi
shrl $0x2, %eax
orq %rdi, %rax
movq -0x58(%rsp), %r11
movq %r15, %r8
xorq %r11, %r8
xorq -0x60(%rsp), %r8
xorq %rbx, %r8
movl %r8d, %edi
shrl $0x1f, %edi
leaq (%rdi,%r8,2), %r8
movq %rax, %rdi
xorq %rsi, %rdi
xorq %rcx, %rdi
addq %r8, %r9
movq %r8, %rbx
movq %r8, -0x50(%rsp)
addq %rdi, %r9
movq %rdx, %rdi
shlq $0x5, %rdi
addq %rdi, %r9
movl %edx, %edi
shrl $0x1b, %edi
addq %rbp, %rdi
addq %r9, %rdi
movq %rcx, %r8
shlq $0x1e, %r8
shrl $0x2, %ecx
orq %r8, %rcx
movq %r10, %r9
movq -0x80(%rsp), %r10
xorq %r10, %r9
xorq 0x10(%rsp), %r9
xorq %r12, %r9
movl %r9d, %r8d
shrl $0x1f, %r8d
leaq (%r8,%r9,2), %r9
movq %rcx, %r8
xorq %rax, %r8
xorq %rdx, %r8
addq %r9, %rsi
movq %r9, %r15
movq %r9, 0x8(%rsp)
addq %r8, %rsi
movq %rdi, %r8
shlq $0x5, %r8
addq %r8, %rsi
movl %edi, %r8d
shrl $0x1b, %r8d
addq %rbp, %r8
addq %rsi, %r8
movq %rdx, %rsi
shlq $0x1e, %rsi
shrl $0x2, %edx
orq %rsi, %rdx
movq %r11, %r9
movq -0x68(%rsp), %r11
xorq %r11, %r9
xorq -0x30(%rsp), %r9
xorq %r14, %r9
movl %r9d, %esi
shrl $0x1f, %esi
leaq (%rsi,%r9,2), %r9
movq %rdx, %rsi
xorq %rcx, %rsi
xorq %rdi, %rsi
addq %r9, %rax
movq %r9, %r14
movq %r9, -0x38(%rsp)
addq %rsi, %rax
movq %r8, %rsi
shlq $0x5, %rsi
addq %rsi, %rax
movl %r8d, %esi
shrl $0x1b, %esi
addq %rbp, %rsi
addq %rax, %rsi
movq %rdi, %rax
shlq $0x1e, %rax
shrl $0x2, %edi
orq %rax, %rdi
movq %r10, %r9
movq -0x70(%rsp), %r10
xorq %r10, %r9
xorq -0x18(%rsp), %r9
xorq %rbx, %r9
movl %r9d, %eax
shrl $0x1f, %eax
leaq (%rax,%r9,2), %r9
movq %rdi, %rax
xorq %rdx, %rax
xorq %r8, %rax
addq %r9, %rcx
movq %r9, %r12
movq %r9, -0x58(%rsp)
addq %rax, %rcx
movq %rsi, %rax
shlq $0x5, %rax
addq %rax, %rcx
movl %esi, %eax
shrl $0x1b, %eax
addq %rbp, %rax
addq %rcx, %rax
movq %r8, %rcx
shlq $0x1e, %rcx
shrl $0x2, %r8d
orq %rcx, %r8
movq %r11, %r9
movq -0x78(%rsp), %rbx
xorq %rbx, %r9
xorq %r13, %r9
xorq %r15, %r9
movl %r9d, %ecx
shrl $0x1f, %ecx
leaq (%rcx,%r9,2), %r9
movq %r8, %rcx
xorq %rdi, %rcx
xorq %rsi, %rcx
addq %r9, %rdx
movq %r9, %r13
movq %r9, -0x80(%rsp)
addq %rcx, %rdx
movq %rax, %rcx
shlq $0x5, %rcx
addq %rcx, %rdx
movl %eax, %r15d
shrl $0x1b, %r15d
movl $0x6ed9eba1, %r9d       # imm = 0x6ED9EBA1
addq %r9, %r15
addq %rdx, %r15
movq %rsi, %rcx
shlq $0x1e, %rcx
shrl $0x2, %esi
orq %rcx, %rsi
movq %r10, %rdx
movq -0x28(%rsp), %r10
xorq %r10, %rdx
xorq -0x20(%rsp), %rdx
xorq %r14, %rdx
movl %edx, %ecx
shrl $0x1f, %ecx
leaq (%rcx,%rdx,2), %r14
movq %rsi, %rcx
xorq %r8, %rcx
xorq %rax, %rcx
addq %r14, %rdi
movq %r14, -0x40(%rsp)
addq %rcx, %rdi
movq %r15, %rcx
shlq $0x5, %rcx
addq %rcx, %rdi
movl %r15d, %r11d
shrl $0x1b, %r11d
addq %r9, %r11
addq %rdi, %r11
movq %rax, %rcx
shlq $0x1e, %rcx
shrl $0x2, %eax
orq %rcx, %rax
movq %rbx, %rdx
movq -0x60(%rsp), %rbx
xorq %rbx, %rdx
xorq -0x48(%rsp), %rdx
xorq %r12, %rdx
movl %edx, %ecx
shrl $0x1f, %ecx
leaq (%rcx,%rdx,2), %r12
movq %rax, %rcx
xorq %rsi, %rcx
xorq %r15, %rcx
addq %r12, %r8
movq %r12, -0x68(%rsp)
addq %rcx, %r8
movq %r11, %rcx
shlq $0x5, %rcx
addq %rcx, %r8
movl %r11d, %r9d
shrl $0x1b, %r9d
addq %rbp, %r9
addq %r8, %r9
movq %r15, %rcx
shlq $0x1e, %rcx
shrl $0x2, %r15d
orq %rcx, %r15
movq %r10, %rdx
movq 0x10(%rsp), %r10
xorq %r10, %rdx
xorq (%rsp), %rdx
xorq %r13, %rdx
movl %edx, %ecx
shrl $0x1f, %ecx
leaq (%rcx,%rdx,2), %rdx
movq %r15, %rcx
xorq %rax, %rcx
xorq %r11, %rcx
addq %rdx, %rsi
movq %rdx, %r13
movq %rdx, -0x10(%rsp)
addq %rcx, %rsi
movq %r9, %rcx
shlq $0x5, %rcx
addq %rcx, %rsi
movl %r9d, %edi
shrl $0x1b, %edi
addq %rbp, %rdi
addq %rsi, %rdi
movq %r11, %rcx
shlq $0x1e, %rcx
shrl $0x2, %r11d
orq %rcx, %r11
movq %rbx, %rdx
movq -0x30(%rsp), %r8
xorq %r8, %rdx
xorq -0x50(%rsp), %rdx
xorq %r14, %rdx
movl %edx, %ecx
shrl $0x1f, %ecx
leaq (%rcx,%rdx,2), %rdx
movq %r11, %rcx
xorq %r15, %rcx
xorq %r9, %rcx
addq %rdx, %rax
movq %rdx, %rbx
movq %rdx, -0x28(%rsp)
addq %rcx, %rax
movq %rdi, %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl %edi, %edx
shrl $0x1b, %edx
addq %rbp, %rdx
addq %rax, %rdx
movq %r9, %rax
shlq $0x1e, %rax
shrl $0x2, %r9d
orq %rax, %r9
movq %rdi, %rax
andq %r9, %rax
movq %rdi, %rcx
orq %r9, %rcx
andq %r11, %rcx
orq %rax, %rcx
movq %r10, %rsi
movq -0x18(%rsp), %r10
xorq %r10, %rsi
xorq 0x8(%rsp), %rsi
xorq %r12, %rsi
movl %esi, %eax
shrl $0x1f, %eax
leaq (%rax,%rsi,2), %rbp
addq %rbp, %r15
movq %rbp, -0x8(%rsp)
addq %rcx, %r15
movq %rdx, %rax
shlq $0x5, %rax
addq %rax, %r15
movl %edx, %esi
shrl $0x1b, %esi
movl $0x8f1bbcdc, %eax       # imm = 0x8F1BBCDC
addq %rax, %rsi
movl $0x8f1bbcdc, %r14d      # imm = 0x8F1BBCDC
addq %r15, %rsi
movq %rdi, %rax
shlq $0x1e, %rax
shrl $0x2, %edi
orq %rax, %rdi
movq %rdx, %rax
andq %rdi, %rax
movq %rdx, %rcx
orq %rdi, %rcx
andq %r9, %rcx
orq %rax, %rcx
movq 0x18(%rsp), %r15
xorq %r15, %r8
xorq -0x38(%rsp), %r8
xorq %r13, %r8
movl %r8d, %eax
shrl $0x1f, %eax
leaq (%rax,%r8,2), %rax
addq %rax, %r11
movq %rax, %r12
movq %rax, -0x30(%rsp)
addq %rcx, %r11
movq %rsi, %rax
shlq $0x5, %rax
addq %rax, %r11
movl %esi, %r8d
shrl $0x1b, %r8d
addq %r14, %r8
movl $0x8f1bbcdc, %r13d      # imm = 0x8F1BBCDC
addq %r11, %r8
movq %rdx, %rax
shlq $0x1e, %rax
shrl $0x2, %edx
orq %rax, %rdx
movq %rsi, %rax
andq %rdx, %rax
movq %rsi, %rcx
orq %rdx, %rcx
andq %rdi, %rcx
orq %rax, %rcx
movq -0x20(%rsp), %r14
xorq %r14, %r10
xorq -0x58(%rsp), %r10
xorq %rbx, %r10
movl %r10d, %eax
shrl $0x1f, %eax
leaq (%rax,%r10,2), %rax
addq %rax, %r9
movq %rax, %r10
movq %rax, -0x60(%rsp)
addq %rcx, %r9
movq %r8, %rax
shlq $0x5, %rax
addq %rax, %r9
movl %r8d, %r11d
shrl $0x1b, %r11d
addq %r13, %r11
addq %r9, %r11
movq %rsi, %rax
shlq $0x1e, %rax
shrl $0x2, %esi
orq %rax, %rsi
movq %r8, %rax
andq %rsi, %rax
movq %r8, %rcx
orq %rsi, %rcx
andq %rdx, %rcx
orq %rax, %rcx
movq -0x48(%rsp), %rbx
movq %r15, %r9
xorq %rbx, %r9
xorq -0x80(%rsp), %r9
xorq %rbp, %r9
movl %r9d, %eax
shrl $0x1f, %eax
leaq (%rax,%r9,2), %rax
addq %rax, %rdi
movq %rax, %r15
movq %rax, -0x18(%rsp)
addq %rcx, %rdi
movq %r11, %rax
shlq $0x5, %rax
addq %rax, %rdi
movl %r11d, %ecx
shrl $0x1b, %ecx
addq %r13, %rcx
movl $0x8f1bbcdc, %ebp       # imm = 0x8F1BBCDC
addq %rdi, %rcx
movq %r8, %rax
shlq $0x1e, %rax
shrl $0x2, %r8d
orq %rax, %r8
movq %r11, %rax
andq %r8, %rax
movq %r11, %rdi
orq %r8, %rdi
andq %rsi, %rdi
orq %rax, %rdi
movq (%rsp), %r9
xorq %r9, %r14
xorq -0x40(%rsp), %r14
xorq %r12, %r14
movl %r14d, %eax
shrl $0x1f, %eax
leaq (%rax,%r14,2), %rax
addq %rax, %rdx
movq %rax, %r12
movq %rax, -0x20(%rsp)
addq %rdi, %rdx
movq %rcx, %rax
shlq $0x5, %rax
addq %rax, %rdx
movl %ecx, %r14d
shrl $0x1b, %r14d
addq %rbp, %r14
addq %rdx, %r14
movq %r11, %rax
shlq $0x1e, %rax
shrl $0x2, %r11d
orq %rax, %r11
movq %rcx, %rax
andq %r11, %rax
movq %rcx, %rdx
orq %r11, %rdx
andq %r8, %rdx
orq %rax, %rdx
movq -0x50(%rsp), %rdi
xorq %rdi, %rbx
xorq -0x68(%rsp), %rbx
xorq %r10, %rbx
movl %ebx, %eax
shrl $0x1f, %eax
leaq (%rax,%rbx,2), %rax
addq %rax, %rsi
movq %rax, %r10
movq %rax, -0x48(%rsp)
addq %rdx, %rsi
movq %r14, %rax
shlq $0x5, %rax
addq %rax, %rsi
movl %r14d, %ebx
shrl $0x1b, %ebx
addq %rbp, %rbx
addq %rsi, %rbx
movq %rcx, %rax
shlq $0x1e, %rax
shrl $0x2, %ecx
orq %rax, %rcx
movq %r14, %rax
andq %rcx, %rax
movq %r14, %rdx
orq %rcx, %rdx
andq %r11, %rdx
orq %rax, %rdx
movq %r9, %rsi
movq 0x8(%rsp), %r9
xorq %r9, %rsi
xorq -0x10(%rsp), %rsi
xorq %r15, %rsi
movl %esi, %eax
shrl $0x1f, %eax
leaq (%rax,%rsi,2), %rax
movq %rax, -0x70(%rsp)
addq %rax, %r8
addq %rdx, %r8
movq %rbx, %rax
shlq $0x5, %rax
addq %rax, %r8
movl %ebx, %eax
shrl $0x1b, %eax
addq %rbp, %rax
addq %r8, %rax
movq %r14, %rdx
shlq $0x1e, %rdx
shrl $0x2, %r14d
orq %rdx, %r14
movq %rbx, %rdx
andq %r14, %rdx
movq %rbx, %rsi
orq %r14, %rsi
andq %rcx, %rsi
orq %rdx, %rsi
movq -0x38(%rsp), %r8
xorq %r8, %rdi
xorq -0x28(%rsp), %rdi
xorq %r12, %rdi
movl %edi, %edx
shrl $0x1f, %edx
leaq (%rdx,%rdi,2), %r13
addq %r13, %r11
movq %r13, -0x50(%rsp)
addq %rsi, %r11
movq %rax, %rdx
shlq $0x5, %rdx
addq %rdx, %r11
movl %eax, %r15d
shrl $0x1b, %r15d
addq %rbp, %r15
addq %r11, %r15
movq %rbx, %rdx
shlq $0x1e, %rdx
shrl $0x2, %ebx
orq %rdx, %rbx
movq %rax, %rdx
andq %rbx, %rdx
movq %rax, %rsi
orq %rbx, %rsi
andq %r14, %rsi
orq %rdx, %rsi
movq %r9, %rdi
movq -0x58(%rsp), %r9
xorq %r9, %rdi
xorq -0x8(%rsp), %rdi
xorq %r10, %rdi
movl %edi, %edx
shrl $0x1f, %edx
leaq (%rdx,%rdi,2), %rdx
movq %rdx, -0x78(%rsp)
addq %rdx, %rcx
addq %rsi, %rcx
movq %r15, %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl %r15d, %r12d
shrl $0x1b, %r12d
movl $0x8f1bbcdc, %edi       # imm = 0x8F1BBCDC
addq %rdi, %r12
addq %rcx, %r12
movq %rax, %rcx
shlq $0x1e, %rcx
shrl $0x2, %eax
orq %rcx, %rax
movq %r15, %rcx
andq %rax, %rcx
movq %r15, %rdx
orq %rax, %rdx
andq %rbx, %rdx
orq %rcx, %rdx
movq %r8, %rsi
movq -0x80(%rsp), %r8
xorq %r8, %rsi
xorq -0x30(%rsp), %rsi
xorq -0x70(%rsp), %rsi
movl %esi, %ecx
shrl $0x1f, %ecx
leaq (%rcx,%rsi,2), %r10
addq %r10, %r14
movq %r10, -0x38(%rsp)
addq %rdx, %r14
movq %r12, %rcx
shlq $0x5, %rcx
addq %rcx, %r14
movl %r12d, %ecx
shrl $0x1b, %ecx
addq %rdi, %rcx
addq %r14, %rcx
movq %r15, %rdx
shlq $0x1e, %rdx
shrl $0x2, %r15d
orq %rdx, %r15
movq %r12, %rdx
andq %r15, %rdx
movq %r12, %rsi
orq %r15, %rsi
andq %rax, %rsi
orq %rdx, %rsi
movq %r9, %rdi
movq -0x40(%rsp), %r11
xorq %r11, %rdi
xorq -0x60(%rsp), %rdi
xorq %r13, %rdi
movl %edi, %edx
shrl $0x1f, %edx
leaq (%rdx,%rdi,2), %rdx
addq %rdx, %rbx
movq %rdx, %r14
movq %rdx, -0x58(%rsp)
addq %rsi, %rbx
movq %rcx, %rdx
shlq $0x5, %rdx
addq %rdx, %rbx
movl %ecx, %edx
shrl $0x1b, %edx
addq %rbp, %rdx
addq %rbx, %rdx
movq %r12, %rsi
shlq $0x1e, %rsi
shrl $0x2, %r12d
orq %rsi, %r12
movq %rcx, %rsi
andq %r12, %rsi
movq %rcx, %rdi
orq %r12, %rdi
andq %r15, %rdi
orq %rsi, %rdi
movq -0x68(%rsp), %r9
xorq %r9, %r8
xorq -0x18(%rsp), %r8
xorq -0x78(%rsp), %r8
movl %r8d, %esi
shrl $0x1f, %esi
leaq (%rsi,%r8,2), %r13
addq %r13, %rax
movq %r13, (%rsp)
addq %rdi, %rax
movq %rdx, %rsi
shlq $0x5, %rsi
addq %rsi, %rax
movl %edx, %esi
shrl $0x1b, %esi
movl $0x8f1bbcdc, %ebx       # imm = 0x8F1BBCDC
addq %rbx, %rsi
addq %rax, %rsi
movq %rcx, %rax
shlq $0x1e, %rax
shrl $0x2, %ecx
orq %rax, %rcx
movq %rdx, %rax
andq %rcx, %rax
movq %rdx, %rdi
orq %rcx, %rdi
andq %r12, %rdi
orq %rax, %rdi
movq %r11, %r8
movq -0x10(%rsp), %r11
xorq %r11, %r8
xorq -0x20(%rsp), %r8
xorq %r10, %r8
movl %r8d, %eax
shrl $0x1f, %eax
leaq (%rax,%r8,2), %rbp
addq %rbp, %r15
movq %rbp, -0x40(%rsp)
addq %rdi, %r15
movq %rsi, %rax
shlq $0x5, %rax
addq %rax, %r15
movl %esi, %eax
shrl $0x1b, %eax
addq %rbx, %rax
movl $0x8f1bbcdc, %r10d      # imm = 0x8F1BBCDC
addq %r15, %rax
movq %rdx, %rdi
shlq $0x1e, %rdi
shrl $0x2, %edx
orq %rdi, %rdx
movq %rsi, %rdi
andq %rdx, %rdi
movq %rsi, %r8
orq %rdx, %r8
andq %rcx, %r8
orq %rdi, %r8
movq -0x28(%rsp), %rbx
xorq %rbx, %r9
xorq -0x48(%rsp), %r9
xorq %r14, %r9
movl %r9d, %edi
shrl $0x1f, %edi
leaq (%rdi,%r9,2), %rdi
movq %rdi, -0x80(%rsp)
addq %rdi, %r12
addq %r8, %r12
movq %rax, %rdi
shlq $0x5, %rdi
addq %rdi, %r12
movl %eax, %edi
shrl $0x1b, %edi
addq %r10, %rdi
addq %r12, %rdi
movq %rsi, %r8
shlq $0x1e, %r8
shrl $0x2, %esi
orq %r8, %rsi
movq %rax, %r8
andq %rsi, %r8
movq %rax, %r9
orq %rsi, %r9
andq %rdx, %r9
orq %r8, %r9
movq -0x8(%rsp), %r14
xorq %r14, %r11
xorq -0x70(%rsp), %r11
xorq %r13, %r11
movl %r11d, %r8d
shrl $0x1f, %r8d
leaq (%r8,%r11,2), %r8
addq %r8, %rcx
movq %r8, %r12
movq %r8, -0x68(%rsp)
addq %r9, %rcx
movq %rdi, %r8
shlq $0x5, %r8
addq %r8, %rcx
movl %edi, %r8d
shrl $0x1b, %r8d
addq %r10, %r8
addq %rcx, %r8
movq %rax, %rcx
shlq $0x1e, %rcx
shrl $0x2, %eax
orq %rcx, %rax
movq %rdi, %rcx
andq %rax, %rcx
movq %rdi, %r9
orq %rax, %r9
andq %rsi, %r9
orq %rcx, %r9
movq %rbx, %r11
movq -0x30(%rsp), %r15
xorq %r15, %r11
xorq -0x50(%rsp), %r11
xorq %rbp, %r11
movl %r11d, %ecx
shrl $0x1f, %ecx
leaq (%rcx,%r11,2), %rcx
addq %rcx, %rdx
movq %rcx, %r13
movq %rcx, -0x10(%rsp)
addq %r9, %rdx
movq %r8, %rcx
shlq $0x5, %rcx
addq %rcx, %rdx
movl %r8d, %ecx
shrl $0x1b, %ecx
addq %r10, %rcx
movl $0x8f1bbcdc, %ebx       # imm = 0x8F1BBCDC
addq %rdx, %rcx
movq %rdi, %rdx
shlq $0x1e, %rdx
shrl $0x2, %edi
orq %rdx, %rdi
movq %r8, %rdx
andq %rdi, %rdx
movq %r8, %r9
orq %rdi, %r9
andq %rax, %r9
orq %rdx, %r9
movq %r14, %r11
movq -0x60(%rsp), %r14
xorq %r14, %r11
xorq -0x78(%rsp), %r11
xorq -0x80(%rsp), %r11
movl %r11d, %edx
shrl $0x1f, %edx
leaq (%rdx,%r11,2), %r10
addq %r10, %rsi
movq %r10, 0x10(%rsp)
addq %r9, %rsi
movq %rcx, %rdx
shlq $0x5, %rdx
addq %rdx, %rsi
movl %ecx, %edx
shrl $0x1b, %edx
addq %rbx, %rdx
movl $0x8f1bbcdc, %ebp       # imm = 0x8F1BBCDC
addq %rsi, %rdx
movq %r8, %rsi
shlq $0x1e, %rsi
shrl $0x2, %r8d
orq %rsi, %r8
movq %rcx, %rsi
andq %r8, %rsi
movq %rcx, %r9
orq %r8, %r9
andq %rdi, %r9
orq %rsi, %r9
movq -0x18(%rsp), %rbx
movq %r15, %r11
xorq %rbx, %r11
xorq -0x38(%rsp), %r11
xorq %r12, %r11
movl %r11d, %esi
shrl $0x1f, %esi
leaq (%rsi,%r11,2), %r12
addq %r12, %rax
movq %r12, -0x8(%rsp)
addq %r9, %rax
movq %rdx, %rsi
shlq $0x5, %rsi
addq %rsi, %rax
movl %edx, %r9d
shrl $0x1b, %r9d
addq %rbp, %r9
addq %rax, %r9
movq %rcx, %rax
shlq $0x1e, %rax
shrl $0x2, %ecx
orq %rax, %rcx
movq %rdx, %rax
andq %rcx, %rax
movq %rdx, %rsi
orq %rcx, %rsi
andq %r8, %rsi
orq %rax, %rsi
movq -0x20(%rsp), %r15
movq %r14, %r11
xorq %r15, %r11
xorq -0x58(%rsp), %r11
xorq %r13, %r11
movl %r11d, %eax
shrl $0x1f, %eax
leaq (%rax,%r11,2), %rax
addq %rax, %rdi
movq %rax, %rbp
movq %rax, -0x28(%rsp)
addq %rsi, %rdi
movq %r9, %rax
shlq $0x5, %rax
addq %rax, %rdi
movl %r9d, %r11d
shrl $0x1b, %r11d
movl $0x8f1bbcdc, %eax       # imm = 0x8F1BBCDC
addq %rax, %r11
addq %rdi, %r11
movq %rdx, %rax
shlq $0x1e, %rax
shrl $0x2, %edx
orq %rax, %rdx
movq %r9, %rax
andq %rdx, %rax
movq %r9, %rsi
orq %rdx, %rsi
andq %rcx, %rsi
orq %rax, %rsi
movq %rbx, %rdi
movq -0x48(%rsp), %r13
xorq %r13, %rdi
xorq (%rsp), %rdi
xorq %r10, %rdi
movl %edi, %eax
shrl $0x1f, %eax
leaq (%rax,%rdi,2), %rax
addq %rax, %r8
movq %rax, %r14
movq %rax, -0x60(%rsp)
addq %rsi, %r8
movq %r11, %rax
shlq $0x5, %rax
addq %rax, %r8
movl %r11d, %r10d
shrl $0x1b, %r10d
movl $0x8f1bbcdc, %esi       # imm = 0x8F1BBCDC
addq %rsi, %r10
addq %r8, %r10
movq %r9, %rax
shlq $0x1e, %rax
shrl $0x2, %r9d
orq %rax, %r9
movq %r15, %rdi
movq -0x70(%rsp), %r8
xorq %r8, %rdi
xorq -0x40(%rsp), %rdi
xorq %r12, %rdi
movl %edi, %eax
shrl $0x1f, %eax
leaq (%rax,%rdi,2), %rax
addq %rax, %rsi
addq $0x3b4704fa, %rsi       # imm = 0x3B4704FA
movq %rax, %r15
movq %rax, -0x18(%rsp)
movl $0x8f1bbcdc, %r12d      # imm = 0x8F1BBCDC
addq %rcx, %rsi
movq %r9, %rax
xorq %rdx, %rax
xorq %r11, %rax
addq %rax, %rsi
movq %r10, %rax
shlq $0x5, %rax
addq %rax, %rsi
movl %r10d, %eax
shrl $0x1b, %eax
addq %rax, %rsi
movq %r11, %rax
shlq $0x1e, %rax
shrl $0x2, %r11d
orq %rax, %r11
movq %r13, %rcx
movq -0x50(%rsp), %rdi
xorq %rdi, %rcx
xorq -0x80(%rsp), %rcx
xorq %rbp, %rcx
movl %ecx, %eax
shrl $0x1f, %eax
leaq (%rax,%rcx,2), %rcx
leaq (%r12,%rcx), %rax
addq $0x3b4704fa, %rax       # imm = 0x3B4704FA
movq %rcx, %r13
movq %rcx, -0x20(%rsp)
addq %rdx, %rax
movq %r11, %rcx
xorq %r9, %rcx
xorq %r10, %rcx
addq %rcx, %rax
movq %rsi, %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl %esi, %ecx
shrl $0x1b, %ecx
addq %rcx, %rax
movq %r10, %rcx
shlq $0x1e, %rcx
shrl $0x2, %r10d
orq %rcx, %r10
movq %r8, %rdx
movq -0x78(%rsp), %rbx
xorq %rbx, %rdx
xorq -0x68(%rsp), %rdx
xorq %r14, %rdx
movl %edx, %ecx
shrl $0x1f, %ecx
leaq (%rcx,%rdx,2), %rbp
leaq (%r12,%rbp), %rcx
addq $0x3b4704fa, %rcx       # imm = 0x3B4704FA
movq %rbp, -0x30(%rsp)
addq %r9, %rcx
movq %r10, %rdx
xorq %r11, %rdx
xorq %rsi, %rdx
addq %rdx, %rcx
movq %rax, %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl %eax, %edx
shrl $0x1b, %edx
addq %rdx, %rcx
movq %rsi, %rdx
shlq $0x1e, %rdx
shrl $0x2, %esi
orq %rdx, %rsi
movq -0x38(%rsp), %r9
xorq %r9, %rdi
xorq -0x10(%rsp), %rdi
xorq %r15, %rdi
movl %edi, %edx
shrl $0x1f, %edx
leaq (%rdx,%rdi,2), %r8
leaq (%r12,%r8), %rdx
addq $0x3b4704fa, %rdx       # imm = 0x3B4704FA
movq %r8, %r12
movq %r8, -0x70(%rsp)
addq %r11, %rdx
movq %rsi, %rdi
xorq %r10, %rdi
xorq %rax, %rdi
addq %rdi, %rdx
movq %rcx, %rdi
shlq $0x5, %rdi
addq %rdi, %rdx
movl %ecx, %edi
shrl $0x1b, %edi
addq %rdi, %rdx
movq %rax, %rdi
shlq $0x1e, %rdi
shrl $0x2, %eax
orq %rdi, %rax
movq %rbx, %r8
movq -0x58(%rsp), %rbx
xorq %rbx, %r8
xorq 0x10(%rsp), %r8
xorq %r13, %r8
movl %r8d, %edi
shrl $0x1f, %edi
leaq (%rdi,%r8,2), %r15
movl $0x8f1bbcdc, %r14d      # imm = 0x8F1BBCDC
leaq (%r14,%r15), %rdi
addq $0x3b4704fa, %rdi       # imm = 0x3B4704FA
movq %r15, -0x48(%rsp)
addq %r10, %rdi
movq %rax, %r8
xorq %rsi, %r8
xorq %rcx, %r8
addq %r8, %rdi
movq %rdx, %r8
shlq $0x5, %r8
addq %r8, %rdi
movl %edx, %r8d
shrl $0x1b, %r8d
addq %r8, %rdi
movq %rcx, %r8
shlq $0x1e, %r8
shrl $0x2, %ecx
orq %r8, %rcx
movq (%rsp), %r11
xorq %r11, %r9
xorq -0x8(%rsp), %r9
xorq %rbp, %r9
movl %r9d, %r8d
shrl $0x1f, %r8d
leaq (%r8,%r9,2), %r13
leaq (%r14,%r13), %r8
addq $0x3b4704fa, %r8        # imm = 0x3B4704FA
movq %r13, -0x78(%rsp)
movl $0x8f1bbcdc, %r10d      # imm = 0x8F1BBCDC
addq %rsi, %r8
movq %rcx, %rsi
xorq %rax, %rsi
xorq %rdx, %rsi
addq %rsi, %r8
movq %rdi, %rsi
shlq $0x5, %rsi
addq %rsi, %r8
movl %edi, %esi
shrl $0x1b, %esi
addq %rsi, %r8
movq %rdx, %rsi
shlq $0x1e, %rsi
shrl $0x2, %edx
orq %rsi, %rdx
movq %rbx, %r9
movq -0x40(%rsp), %rbx
xorq %rbx, %r9
xorq -0x28(%rsp), %r9
xorq %r12, %r9
movl %r9d, %esi
shrl $0x1f, %esi
leaq (%rsi,%r9,2), %r9
leaq (%r10,%r9), %rsi
addq $0x3b4704fa, %rsi       # imm = 0x3B4704FA
movl $0x8f1bbcdc, %ebp       # imm = 0x8F1BBCDC
movq %r9, %r14
movq %r9, -0x38(%rsp)
addq %rax, %rsi
movq %rdx, %rax
xorq %rcx, %rax
xorq %rdi, %rax
addq %rax, %rsi
movq %r8, %rax
shlq $0x5, %rax
addq %rax, %rsi
movl %r8d, %eax
shrl $0x1b, %eax
addq %rax, %rsi
movq %rdi, %rax
shlq $0x1e, %rax
shrl $0x2, %edi
orq %rax, %rdi
movq %r11, %r9
movq -0x80(%rsp), %r11
xorq %r11, %r9
xorq -0x60(%rsp), %r9
xorq %r15, %r9
movl %r9d, %eax
shrl $0x1f, %eax
leaq (%rax,%r9,2), %r10
leaq (%r10,%rbp), %rax
addq $0x3b4704fa, %rax       # imm = 0x3B4704FA
movq %r10, -0x50(%rsp)
addq %rcx, %rax
movq %rdi, %rcx
xorq %rdx, %rcx
xorq %r8, %rcx
addq %rcx, %rax
movq %rsi, %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl %esi, %ecx
shrl $0x1b, %ecx
addq %rcx, %rax
movq %r8, %rcx
shlq $0x1e, %rcx
shrl $0x2, %r8d
orq %rcx, %r8
movq %rbx, %r9
movq -0x68(%rsp), %rbx
xorq %rbx, %r9
xorq -0x18(%rsp), %r9
xorq %r13, %r9
movl %r9d, %ecx
shrl $0x1f, %ecx
leaq (%rcx,%r9,2), %r12
leaq (%r12,%rbp), %rcx
addq $0x3b4704fa, %rcx       # imm = 0x3B4704FA
movq %r12, -0x40(%rsp)
addq %rdx, %rcx
movq %r8, %rdx
xorq %rdi, %rdx
xorq %rsi, %rdx
addq %rdx, %rcx
movq %rax, %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl %eax, %edx
shrl $0x1b, %edx
addq %rdx, %rcx
movq %rsi, %rdx
shlq $0x1e, %rdx
shrl $0x2, %esi
orq %rdx, %rsi
movq %r11, %r9
movq -0x10(%rsp), %r11
xorq %r11, %r9
xorq -0x20(%rsp), %r9
xorq %r14, %r9
movl %r9d, %edx
shrl $0x1f, %edx
leaq (%rdx,%r9,2), %r13
leaq 0x3b4704fa(,%r13), %rdx
addq %rbp, %rdx
movq %r13, (%rsp)
addq %rdi, %rdx
movq %rsi, %rdi
xorq %r8, %rdi
xorq %rax, %rdi
addq %rdi, %rdx
movq %rcx, %rdi
shlq $0x5, %rdi
addq %rdi, %rdx
movl %ecx, %edi
shrl $0x1b, %edi
addq %rdi, %rdx
movq %rax, %rdi
shlq $0x1e, %rdi
shrl $0x2, %eax
orq %rdi, %rax
movq %rbx, %r9
movq 0x10(%rsp), %r15
xorq %r15, %r9
xorq -0x30(%rsp), %r9
xorq %r10, %r9
movl %r9d, %edi
shrl $0x1f, %edi
leaq (%rdi,%r9,2), %r9
leaq (%r9,%rbp), %rdi
addq $0x3b4704fa, %rdi       # imm = 0x3B4704FA
movq %r9, %rbx
movq %r9, -0x58(%rsp)
addq %r8, %rdi
movq %rax, %r8
xorq %rsi, %r8
xorq %rcx, %r8
addq %r8, %rdi
movq %rdx, %r8
shlq $0x5, %r8
addq %r8, %rdi
movl %edx, %r8d
shrl $0x1b, %r8d
addq %r8, %rdi
movq %rcx, %r8
shlq $0x1e, %r8
shrl $0x2, %ecx
orq %r8, %rcx
movq %r11, %r9
movq -0x8(%rsp), %r14
xorq %r14, %r9
xorq -0x70(%rsp), %r9
xorq %r12, %r9
movl %r9d, %r8d
shrl $0x1f, %r8d
leaq (%r8,%r9,2), %r10
leaq (%r10,%rbp), %r8
addq $0x3b4704fa, %r8        # imm = 0x3B4704FA
movq %r10, -0x80(%rsp)
addq %rsi, %r8
movq %rcx, %rsi
xorq %rax, %rsi
xorq %rdx, %rsi
addq %rsi, %r8
movq %rdi, %rsi
shlq $0x5, %rsi
addq %rsi, %r8
movl %edi, %esi
shrl $0x1b, %esi
addq %rsi, %r8
movq %rdx, %rsi
shlq $0x1e, %rsi
shrl $0x2, %edx
orq %rsi, %rdx
movq %r15, %r9
movq -0x28(%rsp), %rbp
xorq %rbp, %r9
xorq -0x48(%rsp), %r9
xorq %r13, %r9
movl %r9d, %esi
shrl $0x1f, %esi
leaq (%rsi,%r9,2), %r11
movl $0x8f1bbcdc, %r9d       # imm = 0x8F1BBCDC
leaq (%r9,%r11), %r12
addq $0x3b4704fa, %r12       # imm = 0x3B4704FA
addq %rax, %r12
movq %rdx, %rax
xorq %rcx, %rax
xorq %rdi, %rax
addq %rax, %r12
movq %r8, %rax
shlq $0x5, %rax
addq %rax, %r12
movl %r8d, %eax
shrl $0x1b, %eax
addq %rax, %r12
movq %rdi, %rax
shlq $0x1e, %rax
shrl $0x2, %edi
orq %rax, %rdi
movq %r14, %rsi
movq -0x60(%rsp), %r15
xorq %r15, %rsi
xorq -0x78(%rsp), %rsi
xorq %rbx, %rsi
movl %esi, %eax
shrl $0x1f, %eax
leaq (%rax,%rsi,2), %rbx
leaq (%r9,%rbx), %r14
addq $0x3b4704fa, %r14       # imm = 0x3B4704FA
movl $0x8f1bbcdc, %esi       # imm = 0x8F1BBCDC
addq %rcx, %r14
movq %rdi, %rax
xorq %rdx, %rax
xorq %r8, %rax
addq %rax, %r14
movq %r12, %rax
shlq $0x5, %rax
addq %rax, %r14
movl %r12d, %eax
shrl $0x1b, %eax
addq %rax, %r14
movq %r8, %rax
shlq $0x1e, %rax
shrl $0x2, %r8d
orq %rax, %r8
movq -0x18(%rsp), %r9
movq %rbp, %rcx
xorq %r9, %rcx
xorq -0x38(%rsp), %rcx
xorq %r10, %rcx
movl %ecx, %eax
shrl $0x1f, %eax
leaq (%rax,%rcx,2), %rbp
addq %rbp, %rsi
addq $0x3b4704fa, %rsi       # imm = 0x3B4704FA
movl $0x8f1bbcdc, %r13d      # imm = 0x8F1BBCDC
addq %rdx, %rsi
movq %r8, %rax
xorq %rdi, %rax
xorq %r12, %rax
addq %rax, %rsi
movq %r14, %rax
shlq $0x5, %rax
addq %rax, %rsi
movl %r14d, %eax
shrl $0x1b, %eax
addq %rax, %rsi
movq %r12, %rax
shlq $0x1e, %rax
shrl $0x2, %r12d
orq %rax, %r12
movq %r15, %rcx
movq -0x20(%rsp), %r10
xorq %r10, %rcx
xorq -0x50(%rsp), %rcx
xorq %r11, %rcx
movl %ecx, %eax
shrl $0x1f, %eax
leaq (%rax,%rcx,2), %r11
leaq (%r11,%r13), %rax
addq $0x3b4704fa, %rax       # imm = 0x3B4704FA
addq %rdi, %rax
movq %r12, %rcx
xorq %r8, %rcx
xorq %r14, %rcx
addq %rcx, %rax
movq %rsi, %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl %esi, %ecx
shrl $0x1b, %ecx
addq %rcx, %rax
movq %r14, %rcx
shlq $0x1e, %rcx
shrl $0x2, %r14d
orq %rcx, %r14
movq -0x30(%rsp), %rdx
xorq %rdx, %r9
xorq -0x40(%rsp), %r9
xorq %rbx, %r9
movl %r9d, %ecx
shrl $0x1f, %ecx
leaq (%rcx,%r9,2), %r15
leaq (%r15,%r13), %rcx
addq $0x3b4704fa, %rcx       # imm = 0x3B4704FA
movl $0x8f1bbcdc, %r9d       # imm = 0x8F1BBCDC
addq %r8, %rcx
movq %r14, %rdi
xorq %r12, %rdi
xorq %rsi, %rdi
addq %rdi, %rcx
movq %rax, %rdi
shlq $0x5, %rdi
addq %rdi, %rcx
movl %eax, %edi
shrl $0x1b, %edi
addq %rdi, %rcx
movq %rsi, %rdi
shlq $0x1e, %rdi
shrl $0x2, %esi
orq %rdi, %rsi
movq -0x70(%rsp), %rbx
movq %r10, %r13
xorq %rbx, %r13
xorq (%rsp), %r13
xorq %rbp, %r13
leaq (%r9,%r13,2), %rdi
addq $0x3b4704fa, %rdi       # imm = 0x3B4704FA
shrl $0x1f, %r13d
orq %r13, %rdi
addq %r12, %rdi
movq %rsi, %r8
xorq %r14, %r8
xorq %rax, %r8
addq %r8, %rdi
movq %rcx, %r8
shlq $0x5, %r8
addq %r8, %rdi
movl %ecx, %r8d
shrl $0x1b, %r8d
addq %r8, %rdi
movq %rax, %r8
shlq $0x1e, %r8
shrl $0x2, %eax
orq %r8, %rax
movq -0x48(%rsp), %r8
xorq %rdx, %r8
xorq -0x58(%rsp), %r8
xorq %r11, %r8
movq %r8, %rdx
movq 0x20(%rsp), %r8
movl $0x8f1bbcdc, %r11d      # imm = 0x8F1BBCDC
leaq (%r8,%r11), %r9
addq $0x3b4704fa, %r9        # imm = 0x3B4704FA
leaq (%r11,%rdx,2), %r8
addq $0x3b4704fa, %r8        # imm = 0x3B4704FA
movl %edx, %r11d
shrl $0x1f, %r11d
orq %r11, %r8
addq %r14, %r8
movq %rax, %r11
xorq %rsi, %r11
xorq %rcx, %r11
addq %r11, %r8
movq %rdi, %r11
shlq $0x5, %r11
addq %r11, %r8
movl %edi, %r11d
shrl $0x1b, %r11d
addq %r11, %r8
movq %rcx, %r11
shlq $0x1e, %r11
shrl $0x2, %ecx
orq %r11, %rcx
movq -0x78(%rsp), %r10
xorq %rbx, %r10
xorq -0x80(%rsp), %r10
xorq %r15, %r10
leaq (%r9,%r10,2), %rdx
shrl $0x1f, %r10d
addq %r10, %rdx
addq %rsi, %rdx
movq %rcx, %rsi
xorq %rax, %rsi
xorq %rdi, %rsi
addq %rsi, %rdx
movq %r8, %rsi
shlq $0x5, %rsi
addq %rsi, %rdx
movl %r8d, %esi
shrl $0x1b, %esi
addq %rsi, %rdx
movq 0x48(%rsp), %rsi
movq %rdx, 0x10(%rsi)
addq 0x30(%rsp), %r8
movq %r8, 0x18(%rsi)
movq %rdi, %rdx
shlq $0x1e, %rdx
addq 0x28(%rsp), %rdx
shrl $0x2, %edi
addq %rdi, %rdx
movq %rdx, 0x20(%rsi)
addq 0x38(%rsp), %rcx
movq %rcx, 0x28(%rsi)
addq 0x40(%rsp), %rax
movq %rax, 0x30(%rsi)
addq $0x50, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq