Function at 0x502980
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
cmp edx, 0x10
ja 0x502a44
cmp edx, 9
jb 0x502ea3
mov eax, 0x6782737b
xor eax, dword [ecx + 4]
mov esi, eax
mov ebp, 0xea4239b9
xor ebp, dword [ecx]
mov edi, 0xaf56bc3b
xor edi, dword [ecx + edx - 4]
mov ebx, 0x996523a
xor ebx, dword [ecx + edx - 8]
mov eax, ebp
bswap eax
mov ecx, esi
bswap esi
add esi, edx
adc eax, 0
add esi, ebx
adc eax, edi
mov dword [esp], eax
mov eax, ebx
mul ebp
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], eax
mov eax, ebx
mul ecx
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov eax, edi
mul ebp
mov ebp, edx
mov ebx, eax
mov eax, edi
mul ecx
mov ecx, edx
add ebx, dword [esp + 8]
adc ebp, 0
add ebx, dword [esp + 0xc]
adc ebp, 0
add eax, dword [esp + 4]
adc ecx, 0
add eax, ebp
adc ecx, 0
xor ecx, ebx
xor eax, dword [esp + 0x10]
add eax, esi
adc ecx, dword [esp]
imul esi, ecx, 0x9e3779f9
shr ecx, 5
xor ecx, eax
mov edx, 0x9e3779f9
mov eax, ecx
mul edx
add edx, esi
imul ecx, ecx, 0x16566791
jmp 0x502e7a
cmp edx, 0x80
ja 0x502e86
mov esi, 0x85ebca87
mov eax, edx
mov dword [esp], edx
mul esi
mov dword [esp + 0x10], eax
mov dword [esp + 8], edx
movdqu xmm0, xmmword [ecx]
pxor xmm0, xmmword [0x5264b0]
movd esi, xmm0
pshufd xmm1, xmm0, 0xee
movd edi, xmm1
mov eax, edi
mul esi
mov dword [esp + 0xc], eax
mov dword [esp + 4], edx
pshufd xmm1, xmm0, 0xff
psrlq xmm0, 0x20
movd edx, xmm0
mov dword [esp + 0x1c], edx
mov eax, edi
mul edx
mov ebp, eax
mov ebx, edx
mov edi, ecx
movd eax, xmm1
mov dword [esp + 0x18], eax
mul esi
movd xmm0, ebx
mov ecx, 0x1f67b3b7
mov esi, dword [esp]
xor ecx, dword [edi + esi - 4]
movd xmm2, ecx
movd xmm1, ebp
movd xmm4, eax
mov ebx, 0xa4a44072
mov eax, dword [esp]
xor ebx, dword [edi + eax - 8]
movd xmm5, edx
mov eax, dword [esp]
mov dword [esp + 0x14], edi
movq xmm6, qword [edi + eax - 0x10]
shufps xmm2, xmm0, 0
pshufd xmm3, xmm1, 0x44
pxor xmm6, xmmword [0x5264c0]
pand xmm3, xmmword [0x5264d0]
movdqa xmm7, xmm5
punpcklqdq xmm7, xmm4
movaps xmm1, xmmword [0x5264e0]
shufps xmm1, xmm7, 0x24
movdqa xmm7, xmm3
punpckldq xmm4, xmm5
movdqa xmm5, xmm6
psrlq xmm5, xmm1
psrlq xmm3, xmm4
movd xmm0, ebx
movsd xmm3, xmm5
movdqa xmm4, xmm0
pmuludq xmm4, xmm3
psrlq xmm3, 0x20
pmuludq xmm0, xmm3
psllq xmm0, 0x20
paddq xmm0, xmm4
imul edi, dword [esp], 0x9e3779b1
add edi, dword [esp + 8]
movsd xmm7, xmm6
mov eax, dword [esp + 0x18]
mul dword [esp + 0x1c]
movd ecx, xmm6
movd xmm4, dword [esp + 4]
pshufd xmm4, xmm4, 0
psrlq xmm4, 0x20
paddq xmm1, xmm4
paddq xmm1, xmm7
movd xmm4, edx
movd xmm7, eax
punpckldq xmm7, xmm4
movdqa xmm6, xmm1
movsd xmm6, xmm0
psrlq xmm2, 0x20
movd esi, xmm2
pmuludq xmm5, xmm2
pmuludq xmm3, xmm2
mov eax, ebx
mul ecx
mov dword [esp + 4], eax
mov ebx, edx
psllq xmm3, 0x20
paddq xmm3, xmm5
mov eax, esi
mul ecx
movd xmm5, ebx
movd ecx, xmm0
add ecx, eax
pshufd xmm4, xmm7, 0x44
paddq xmm4, xmm2
movd xmm0, ecx
movsd xmm4, xmm3
adc edx, 0
movd xmm3, edx
mov ebp, dword [esp]
punpcklqdq xmm3, xmm0
pxor xmm2, xmm2
punpcklqdq xmm2, xmm5
shufps xmm3, xmm1, 0xe2
shufps xmm2, xmmword [0x5264f0], 0xe2
paddq xmm2, xmm3
psrlq xmm6, 0x20
paddq xmm6, xmm4
movd xmm0, dword [esp + 0xc]
movq xmm0, xmm0
movaps xmm4, xmmword [0x5264e0]
shufps xmm4, xmm0, 0x84
movss xmm3, dword [esp + 4]
psllq xmm1, 0x20
orps xmm4, xmm1
pshufd xmm0, xmm2, 0x50
psrlq xmm2, 0x20
paddq xmm2, xmm6
xorps xmm4, xmm6
movd xmm1, dword [esp + 0x10]
movss xmm0, xmm3
movd xmm3, edi
punpcklqdq xmm3, xmm1
pxor xmm2, xmm0
shufps xmm0, xmm3, 0x24
paddq xmm0, xmm4
movsd xmm0, xmm2
cmp ebp, 0x21
jb 0x502e48
mov eax, dword [esp + 0x14]
movq xmm1, qword [eax + ebp - 0x20]
movq xmm2, qword [eax + 0x10]
punpcklqdq xmm1, xmm2
pxor xmm1, xmmword [0x526500]
movq xmm3, qword [eax + ebp - 0x18]
movq xmm2, qword [eax + 0x18]
punpcklqdq xmm3, xmm2
pxor xmm3, xmmword [0x526510]
movdqa xmm2, xmm3
pmuludq xmm2, xmm1
movdqa xmm5, xmm1
psrlq xmm5, 0x20
movdqa xmm4, xmm3
pmuludq xmm4, xmm5
psrlq xmm3, 0x20
pmuludq xmm1, xmm3
pmuludq xmm3, xmm5
movdqa xmm6, xmm2
psrlq xmm6, 0x20
paddq xmm6, xmm1
movdqa xmm1, xmmword [0x526520]
movdqa xmm5, xmm4
pand xmm5, xmm1
paddq xmm5, xmm6
psrlq xmm4, 0x20
paddq xmm4, xmm3
movdqa xmm3, xmm5
psrlq xmm3, 0x20
paddq xmm3, xmm4
psllq xmm5, 0x20
pand xmm2, xmm1
por xmm2, xmm5
pxor xmm2, xmm3
paddq xmm0, xmm2
cmp ebp, 0x41
jb 0x502e48
movq xmm4, qword [eax + ebp - 0x30]
movq xmm2, qword [eax + 0x20]
punpcklqdq xmm4, xmm2
pxor xmm4, xmmword [0x526530]
movq xmm3, qword [eax + ebp - 0x28]
movq xmm2, qword [eax + 0x28]
punpcklqdq xmm3, xmm2
pxor xmm3, xmmword [0x526540]
movdqa xmm2, xmm3
pmuludq xmm2, xmm4
movdqa xmm6, xmm4
psrlq xmm6, 0x20
movdqa xmm5, xmm3
pmuludq xmm5, xmm6
psrlq xmm3, 0x20
pmuludq xmm4, xmm3
pmuludq xmm3, xmm6
movdqa xmm6, xmm2
psrlq xmm6, 0x20
paddq xmm6, xmm4
movdqa xmm4, xmm5
pand xmm4, xmm1
paddq xmm4, xmm6
psrlq xmm5, 0x20
paddq xmm5, xmm3
movdqa xmm3, xmm4
psrlq xmm3, 0x20
paddq xmm3, xmm5
psllq xmm4, 0x20
pand xmm2, xmm1
por xmm2, xmm4
pxor xmm2, xmm3
paddq xmm0, xmm2
cmp ebp, 0x61
jb 0x502e48
movq xmm4, qword [eax + ebp - 0x40]
movq xmm2, qword [eax + 0x30]
punpcklqdq xmm4, xmm2
pxor xmm4, xmmword [0x526550]
movq xmm3, qword [eax + ebp - 0x38]
movq xmm2, qword [eax + 0x38]
punpcklqdq xmm3, xmm2
pxor xmm3, xmmword [0x526560]
movdqa xmm2, xmm3
pmuludq xmm2, xmm4
movdqa xmm6, xmm4
psrlq xmm6, 0x20
movdqa xmm5, xmm3
pmuludq xmm5, xmm6
psrlq xmm3, 0x20
pmuludq xmm4, xmm3
pmuludq xmm3, xmm6
movdqa xmm6, xmm2
psrlq xmm6, 0x20
paddq xmm6, xmm4
movdqa xmm4, xmm5
pand xmm4, xmm1
paddq xmm4, xmm6
psrlq xmm5, 0x20
paddq xmm5, xmm3
movdqa xmm3, xmm4
psrlq xmm3, 0x20
paddq xmm3, xmm5
psllq xmm4, 0x20
pand xmm2, xmm1
por xmm2, xmm4
pxor xmm2, xmm3
paddq xmm0, xmm2
pshufd xmm1, xmm0, 0xee
paddq xmm1, xmm0
movd eax, xmm1
pshufd xmm0, xmm1, 0x55
movd ecx, xmm0
imul esi, ecx, 0x9e3779f9
shr ecx, 5
xor ecx, eax
mov edx, 0x9e3779f9
mov eax, ecx
mul edx
imul ecx, ecx, 0x16566791
add edx, esi
add edx, ecx
xor eax, edx
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret
add esp, 0x20
cmp edx, 0xf0
ja 0x502e9a
pop esi
pop edi
pop ebx
pop ebp
jmp 0x502ed0
pop esi
pop edi
pop ebx
pop ebp
jmp 0x503530
cmp edx, 4
jb 0x502eb4
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
jmp 0x503db0
test edx, edx
je 0x502ec4
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
jmp 0x503e40
mov edx, 0x2d068005
mov eax, 0x38d394c2
jmp 0x502e7e
push ebp
push ebx
push edi
push esi
sub esp, 0xe8
mov ebx, edx
movq xmm0, qword [ecx + 0x30]
movq xmm6, qword [ecx + 0x20]
punpcklqdq xmm6, xmm0
movq xmm0, qword [ecx + 0x70]
movq xmm5, qword [ecx + 0x60]
punpcklqdq xmm5, xmm0
movq xmm0, qword [ecx + 0x10]
movq xmm7, qword [ecx]
punpcklqdq xmm7, xmm0
movsd xmm0, qword [ecx + 0x50]
movsd xmm1, qword [ecx + 0x40]
pxor xmm6, xmmword [0x5265a0]
movlhps xmm1, xmm0
movups xmmword [esp + 0x48], xmm1
movq xmm0, qword [ecx + 0x38]
movq xmm1, qword [ecx + 0x28]
punpcklqdq xmm1, xmm0
movdqa xmm4, xmm1
movq xmm0, qword [ecx + 0x78]
movq xmm3, qword [ecx + 0x68]
punpcklqdq xmm3, xmm0
movq xmm0, qword [ecx + 0x18]
movq xmm2, qword [ecx + 8]
punpcklqdq xmm2, xmm0
movsd xmm0, qword [ecx + 0x58]
movsd xmm1, qword [ecx + 0x48]
movlhps xmm1, xmm0
movups xmmword [esp + 0x18], xmm1
pxor xmm4, xmmword [0x5265e0]
movdqa xmm0, xmm4
movdqa xmm1, xmm6
pmuludq xmm0, xmm6
movdqu xmmword [esp + 0x58], xmm0
movdqa xmm0, xmm6
psrlq xmm0, 0x20
movdqa xmm6, xmm4
pmuludq xmm6, xmm0
movdqu xmmword [esp + 4], xmm6
psrlq xmm4, 0x20
pmuludq xmm1, xmm4
movdqu xmmword [esp + 0xc8], xmm1
pmuludq xmm4, xmm0
movdqu xmmword [esp + 0x28], xmm4
pxor xmm7, xmmword [0x526580]
pxor xmm5, xmmword [0x526590]
pxor xmm2, xmmword [0x5265c0]
pxor xmm3, xmmword [0x5265d0]
movdqa xmm0, xmm3
pmuludq xmm0, xmm5
movdqu xmmword [esp + 0x78], xmm0
movdqa xmm0, xmm5
psrlq xmm0, 0x20
movdqa xmm1, xmm3
pmuludq xmm1, xmm0
movdqu xmmword [esp + 0x68], xmm1
psrlq xmm3, 0x20
pmuludq xmm5, xmm3
movdqu xmmword [esp + 0xa8], xmm5
pmuludq xmm3, xmm0
movdqu xmmword [esp + 0xd8], xmm3
movdqa xmm6, xmm2
movdqa xmm1, xmm7
pmuludq xmm6, xmm7
movdqu xmmword [esp + 0x38], xmm6
movdqa xmm0, xmm7
psrlq xmm0, 0x20
movdqa xmm7, xmm2
pmuludq xmm7, xmm0
psrlq xmm2, 0x20
pmuludq xmm1, xmm2
movdqu xmmword [esp + 0x88], xmm1
pmuludq xmm2, xmm0
movdqu xmmword [esp + 0xb8], xmm2
movdqu xmm3, xmmword [esp + 0x48]
pxor xmm3, xmmword [0x526570]
movdqu xmm1, xmmword [esp + 0x18]
pxor xmm1, xmmword [0x5265b0]
movdqa xmm0, xmm1
pmuludq xmm0, xmm3
movdqa xmm4, xmm0
movdqu xmmword [esp + 0x98], xmm0
movdqa xmm0, xmm3
psrlq xmm0, 0x20
movdqa xmm2, xmm1
pmuludq xmm2, xmm0
psrlq xmm1, 0x20
pmuludq xmm3, xmm1
pmuludq xmm1, xmm0
movdqu xmmword [esp + 0x18], xmm1
movdqa xmm5, xmm4
psrlq xmm5, 0x20
paddq xmm5, xmm3
movdqa xmm0, xmm6
psrlq xmm0, 0x20
movdqu xmm1, xmmword [esp + 0x88]
paddq xmm0, xmm1
movdqu xmm1, xmmword [esp + 0x78]
psrlq xmm1, 0x20
movdqu xmm3, xmmword [esp + 0xa8]
paddq xmm1, xmm3
movdqu xmm3, xmmword [esp + 0x58]
psrlq xmm3, 0x20
movdqu xmm6, xmmword [esp + 0xc8]
paddq xmm3, xmm6
movdqa xmm4, xmmword [0x5265f0]
movdqu xmm6, xmmword [esp + 4]
pand xmm6, xmm4
paddq xmm6, xmm3
movdqu xmmword [esp + 0x48], xmm6
movdqu xmm3, xmmword [esp + 0x68]
pand xmm3, xmm4
paddq xmm3, xmm1
movdqa xmm6, xmm7
movdqa xmm1, xmm4
pand xmm6, xmm4
paddq xmm6, xmm0
movdqa xmm0, xmm2
pand xmm0, xmm4
paddq xmm0, xmm5
movdqu xmm1, xmmword [esp + 4]
psrlq xmm1, 0x20
movdqu xmm5, xmmword [esp + 0x28]
paddq xmm1, xmm5
movdqu xmmword [esp + 4], xmm1
movdqu xmm5, xmmword [esp + 0x68]
psrlq xmm5, 0x20
movdqu xmm1, xmmword [esp + 0xd8]
paddq xmm5, xmm1
psrlq xmm7, 0x20
movdqu xmm1, xmmword [esp + 0xb8]
paddq xmm7, xmm1
psrlq xmm2, 0x20
movdqu xmm1, xmmword [esp + 0x18]
paddq xmm2, xmm1
movdqa xmm1, xmm0
psrlq xmm1, 0x20
paddq xmm1, xmm2
movdqa xmm2, xmm6
psrlq xmm2, 0x20
paddq xmm2, xmm7
movdqa xmm7, xmm3
psrlq xmm7, 0x20
paddq xmm7, xmm5
movdqu xmm5, xmmword [esp + 0x48]
psrlq xmm5, 0x20
movdqu xmm4, xmmword [esp + 4]
paddq xmm5, xmm4
psllq xmm0, 0x20
movdqu xmm4, xmmword [esp + 0x98]
pand xmm4, xmmword [0x5265f0]
por xmm4, xmm0
pxor xmm4, xmm1
psllq xmm6, 0x20
movdqu xmm0, xmmword [esp + 0x38]
movdqa xmm1, xmmword [0x5265f0]
pand xmm0, xmm1
por xmm0, xmm6
pxor xmm0, xmm2
paddq xmm0, xmm4
movdqa xmm2, xmm0
psllq xmm3, 0x20
movdqu xmm0, xmmword [esp + 0x78]
pand xmm0, xmm1
por xmm0, xmm3
pxor xmm0, xmm7
movdqa xmm7, xmm1
movdqu xmm3, xmmword [esp + 0x48]
psllq xmm3, 0x20
movdqu xmm1, xmmword [esp + 0x58]
pand xmm1, xmm7
por xmm1, xmm3
pxor xmm1, xmm5
paddq xmm1, xmm0
paddq xmm1, xmm2
pshufd xmm0, xmm1, 0xee
paddq xmm0, xmm1
pshufd xmm1, xmm0, 0x55
movd esi, xmm1
mov edx, 0x85ebca87
mov eax, ebx
mul edx
movd ebp, xmm0
imul edi, ebx, 0x9e3779b1
add edi, edx
add ebp, eax
adc esi, edi
mov edx, 0x9e3779f9
imul edi, esi, 0x9e3779f9
shr esi, 5
xor esi, ebp
mov eax, esi
mul edx
add edx, edi
imul esi, esi, 0x16566791
add edx, esi
xor eax, edx
cmp ebx, 0x90
mov dword [esp + 0x14], ebx
mov dword [esp], ecx
jb 0x5032ce
mov esi, ebx
shr esi, 4
lea ebp, [esi - 8]
mov edi, 8
cmp ebp, 2
jae 0x5032db
mov dword [esp + 0x38], eax
mov dword [esp + 0x28], edx
jmp 0x5033e0
mov dword [esp + 0x38], eax
mov dword [esp + 0x28], edx
jmp 0x503485
mov dword [esp + 4], esi
mov edi, ebp
and edi, 0xfffffffe
lea ebx, [edi + 8]
movd xmm0, eax
movd xmm1, edx
punpckldq xmm0, xmm1
movq xmm0, xmm0
xor edx, edx
mov esi, edi
nop dword [eax + eax]
movdqu xmm2, xmmword [edx + 0x526783]
movdqu xmm1, xmmword [edx + 0x526773]
movdqu xmm4, xmmword [ecx + edx + 0x80]
movdqu xmm5, xmmword [ecx + edx + 0x90]
movdqa xmm6, xmm4
punpcklqdq xmm6, xmm5
movdqa xmm3, xmm1
punpcklqdq xmm3, xmm2
pxor xmm3, xmm6
punpckhqdq xmm4, xmm5
punpckhqdq xmm1, xmm2
pxor xmm1, xmm4
movdqa xmm2, xmm1
pmuludq xmm2, xmm3
movdqa xmm5, xmm3
psrlq xmm5, 0x20
movdqa xmm4, xmm1
pmuludq xmm4, xmm5
psrlq xmm1, 0x20
pmuludq xmm3, xmm1
pmuludq xmm1, xmm5
movdqa xmm5, xmm2
psrlq xmm5, 0x20
paddq xmm5, xmm3
movdqa xmm3, xmm4
pand xmm3, xmm7
paddq xmm3, xmm5
psrlq xmm4, 0x20
paddq xmm4, xmm1
movdqa xmm1, xmm3
psrlq xmm1, 0x20
paddq xmm1, xmm4
psllq xmm3, 0x20
pand xmm2, xmm7
por xmm2, xmm3
pxor xmm2, xmm1
paddq xmm0, xmm2
add edx, 0x20
add esi, 0xfffffffe
jne 0x503300
pshufd xmm1, xmm0, 0xee
paddq xmm1, xmm0
movd dword [esp + 0x38], xmm1
pshufd xmm0, xmm1, 0x55
movd dword [esp + 0x28], xmm0
cmp ebp, edi
mov esi, dword [esp + 4]
mov edi, ebx
je 0x503485
sub esi, edi
shl edi, 4
lea ebp, [edi + 0x5266f3]
add edi, dword [esp]
nop
mov dword [esp + 0x18], edi
mov dword [esp + 4], esi
movdqu xmm0, xmmword [ebp]
movdqu xmm1, xmmword [edi]
pxor xmm1, xmm0
movd edi, xmm1
pshufd xmm0, xmm1, 0xee
movd ecx, xmm0
mov eax, ecx
mul edi
mov dword [esp + 0x58], eax
mov dword [esp + 0x78], edx
pshufd xmm0, xmm1, 0xff
psrlq xmm1, 0x20
movd ebx, xmm1
mov eax, ecx
mul ebx
mov dword [esp + 0x68], eax
mov dword [esp + 0x48], edx
movd esi, xmm0
mov eax, esi
mul edi
mov edi, edx
mov ecx, eax
mov eax, esi
mov esi, dword [esp + 4]
mul ebx
add ecx, dword [esp + 0x68]
adc edi, 0
add ecx, dword [esp + 0x78]
adc edi, 0
add eax, dword [esp + 0x48]
adc edx, 0
add eax, edi
mov edi, dword [esp + 0x18]
adc edx, 0
xor edx, ecx
xor eax, dword [esp + 0x58]
add dword [esp + 0x38], eax
adc dword [esp + 0x28], edx
add ebp, 0x10
add edi, 0x10
dec esi
jne 0x5033f0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp]
movdqu xmm0, xmmword [ecx + eax - 0x10]
pxor xmm0, xmmword [0x526600]
movd edi, xmm0
pshufd xmm1, xmm0, 0xee
movd ecx, xmm1
mov eax, ecx
mul edi
mov dword [esp + 4], eax
mov dword [esp + 0x18], edx
pshufd xmm1, xmm0, 0xff
psrlq xmm0, 0x20
movd ebx, xmm0
mov eax, ecx
mul ebx
mov ecx, eax
mov dword [esp + 0x58], edx
movd esi, xmm1
mov eax, esi
mul edi
mov edi, edx
mov ebp, eax
mov eax, esi
mul ebx
mov esi, edx
add ebp, ecx
adc edi, 0
add ebp, dword [esp + 0x18]
adc edi, 0
add eax, dword [esp + 0x58]
adc esi, 0
add eax, edi
adc esi, 0
xor esi, ebp
xor eax, dword [esp + 4]
add eax, dword [esp + 0x38]
adc esi, dword [esp + 0x28]
mov ecx, esi
shr ecx, 5
xor eax, ecx
mov edi, 0x16566791
imul edi, eax
mov ecx, 0x9e3779f9
mul ecx
imul esi, ecx
add edx, esi
add edx, edi
xor eax, edx
add esp, 0xe8
pop esi
pop edi
pop ebx
pop ebp
ret
push ebp
push ebx
push edi
push esi
sub esp, 0xb4
mov esi, ecx
mov dword [esp + 0x10], edx
lea eax, [edx - 1]
cmp eax, 0x400
jae 0x50356f
movdqa xmm7, xmmword [0x526610]
movdqa xmm5, xmmword [0x526620]
movdqa xmm4, xmmword [0x526630]
movdqa xmm2, xmmword [0x526640]
jmp 0x50394b
mov edx, eax
shr edx, 0xa
movdqa xmm1, xmmword [0x526650]
movaps xmm0, xmmword [0x526660]
movups xmmword [esp], xmm0
movdqa xmm0, xmmword [0x526670]
movdqa xmm3, xmmword [0x526680]
xor edi, edi
mov ecx, esi
nop dword [eax + eax]
movq xmm4, xmm3
psrldq xmm3, 8
movdqu xmmword [esp + 0x44], xmm3
movq xmm2, xmm0
movdqu xmmword [esp + 0x34], xmm2
psrldq xmm0, 8
movdqu xmmword [esp + 0x14], xmm0
movdqu xmm7, xmmword [esp]
movq xmm2, xmm7
psrldq xmm7, 8
movdqa xmm0, xmm1
movq xmm1, xmm1
movdqu xmmword [esp + 0x24], xmm1
psrldq xmm0, 8
movdqu xmmword [esp + 0x54], xmm0
xor ebp, ebp
mov ebx, ecx
nop
movdqu xmmword [esp], xmm7
movdqu xmm5, xmmword [ecx + ebp*8 + 0x40]
movdqu xmm3, xmmword [ecx + ebp*8]
movdqu xmm1, xmmword [ecx + ebp*8 + 0x10]
movdqa xmm0, xmm3
punpcklqdq xmm0, xmm5
punpckhqdq xmm3, xmm5
movdqu xmm7, xmmword [ecx + ebp*8 + 0x50]
movdqa xmm6, xmm1
punpcklqdq xmm6, xmm7
punpckhqdq xmm1, xmm7
movdqu xmmword [esp + 0x64], xmm1
movups xmm5, xmmword [ecx + ebp*8 + 0x60]
movups xmm1, xmmword [ecx + ebp*8 + 0x20]
movaps xmm7, xmm1
movlhps xmm7, xmm5
movups xmmword [esp + 0x74], xmm7
unpckhpd xmm1, xmm5
movups xmmword [esp + 0x84], xmm1
movups xmm5, xmmword [ecx + ebp*8 + 0x70]
movups xmm1, xmmword [ecx + ebp*8 + 0x30]
movaps xmm7, xmm1
movlhps xmm7, xmm5
movups xmmword [esp + 0x94], xmm7
unpckhpd xmm1, xmm5
movups xmmword [esp + 0xa4], xmm1
movdqu xmm5, xmmword [ebp + 0x526770]
pxor xmm5, xmm0
movdqu xmm1, xmmword [esp + 0x24]
paddq xmm0, xmm1
movdqa xmm1, xmm5
psrlq xmm1, 0x20
pmuludq xmm1, xmm5
movdqu xmm5, xmmword [ebp + 0x526778]
pxor xmm5, xmm3
movdqu xmm7, xmmword [esp + 0x54]
paddq xmm7, xmm3
paddq xmm7, xmm1
movdqu xmmword [esp + 0x54], xmm7
movdqu xmm7, xmmword [esp]
movdqa xmm1, xmm5
psrlq xmm1, 0x20
pmuludq xmm1, xmm5
paddq xmm1, xmm0
movdqu xmmword [esp + 0x24], xmm1
movdqu xmm0, xmmword [ebp + 0x526780]
pxor xmm0, xmm6
paddq xmm6, xmm2
movdqa xmm2, xmm0
psrlq xmm2, 0x20
pmuludq xmm2, xmm0
movdqu xmm0, xmmword [ebp + 0x526788]
movdqu xmm1, xmmword [esp + 0x64]
pxor xmm0, xmm1
paddq xmm7, xmm1
paddq xmm7, xmm2
movdqa xmm2, xmm0
psrlq xmm2, 0x20
pmuludq xmm2, xmm0
paddq xmm2, xmm6
movdqu xmm0, xmmword [ebp + 0x526790]
movdqu xmm6, xmmword [esp + 0x74]
pxor xmm0, xmm6
movdqu xmm1, xmmword [esp + 0x34]
paddq xmm6, xmm1
movdqa xmm3, xmm0
psrlq xmm3, 0x20
pmuludq xmm3, xmm0
movdqu xmm1, xmmword [ebp + 0x526798]
movdqu xmm0, xmmword [esp + 0x84]
pxor xmm1, xmm0
movdqu xmm5, xmmword [esp + 0x14]
paddq xmm5, xmm0
paddq xmm5, xmm3
movdqu xmmword [esp + 0x14], xmm5
movdqa xmm0, xmm1
psrlq xmm0, 0x20
pmuludq xmm0, xmm1
paddq xmm0, xmm6
movdqu xmmword [esp + 0x34], xmm0
movdqu xmm6, xmmword [ebp + 0x5267a0]
movdqu xmm3, xmmword [esp + 0x94]
pxor xmm6, xmm3
paddq xmm3, xmm4
movdqa xmm5, xmm3
movdqa xmm3, xmm6
psrlq xmm3, 0x20
pmuludq xmm3, xmm6
movdqu xmm1, xmmword [ebp + 0x5267a8]
movdqu xmm6, xmmword [esp + 0xa4]
pxor xmm1, xmm6
movdqu xmm4, xmmword [esp + 0x44]
paddq xmm4, xmm6
paddq xmm4, xmm3
movdqu xmmword [esp + 0x44], xmm4
movdqa xmm4, xmm1
psrlq xmm4, 0x20
pmuludq xmm4, xmm1
paddq xmm4, xmm5
sub ebx, 0xffffff80
add ebp, 0x10
cmp ebp, 0x80
jne 0x5035f0
movdqu xmm0, xmmword [esp + 0x54]
movdqa xmm3, xmm0
punpckhqdq xmm3, xmm7
punpcklqdq xmm0, xmm7
paddq xmm0, xmm3
movdqu xmm3, xmmword [esp + 0x14]
movdqa xmm5, xmm3
movdqu xmm7, xmmword [esp + 0x44]
punpckhqdq xmm5, xmm7
punpcklqdq xmm3, xmm7
paddq xmm3, xmm5
movdqa xmm7, xmm3
psrlq xmm7, 0x2f
movdqa xmm5, xmm0
psrlq xmm5, 0x2f
pxor xmm5, xmm0
pxor xmm5, xmmword [0x5266a0]
pxor xmm7, xmm3
pxor xmm7, xmmword [0x526690]
movdqa xmm0, xmm5
movdqa xmm3, xmmword [0x5266b0]
pmuludq xmm0, xmm3
psrlq xmm5, 0x20
pmuludq xmm5, xmm3
psllq xmm5, 0x20
paddq xmm5, xmm0
movdqa xmm0, xmm7
pmuludq xmm0, xmm3
psrlq xmm7, 0x20
pmuludq xmm7, xmm3
psllq xmm7, 0x20
paddq xmm7, xmm0
movdqu xmm1, xmmword [esp + 0x24]
movdqa xmm0, xmm1
punpckhqdq xmm0, xmm2
punpcklqdq xmm1, xmm2
paddq xmm1, xmm0
movdqu xmm6, xmmword [esp + 0x34]
movdqa xmm0, xmm6
punpckhqdq xmm0, xmm4
punpcklqdq xmm6, xmm4
paddq xmm6, xmm0
movdqa xmm4, xmm6
psrlq xmm4, 0x2f
movdqa xmm2, xmm1
psrlq xmm2, 0x2f
pxor xmm2, xmm1
pxor xmm2, xmmword [0x5266d0]
pxor xmm4, xmm6
pxor xmm4, xmmword [0x5266c0]
movdqa xmm0, xmm2
pmuludq xmm0, xmm3
psrlq xmm2, 0x20
pmuludq xmm2, xmm3
psllq xmm2, 0x20
paddq xmm2, xmm0
movdqa xmm0, xmm4
pmuludq xmm0, xmm3
psrlq xmm4, 0x20
pmuludq xmm4, xmm3
psllq xmm4, 0x20
paddq xmm4, xmm0
inc edi
movdqa xmm3, xmm4
punpckhqdq xmm3, xmm7
movdqa xmm0, xmm4
punpcklqdq xmm0, xmm7
movdqa xmm1, xmm2
punpckhqdq xmm1, xmm5
movdqu xmmword [esp], xmm1
movdqa xmm1, xmm2
punpcklqdq xmm1, xmm5
add ecx, 0x400
cmp edi, edx
jne 0x5035a0
mov edx, eax
shr edx, 6
and edx, 0xf
je 0x503b75
and eax, 0xfffffc00
add eax, esi
movdqa xmm0, xmm4
punpckhqdq xmm0, xmm7
punpcklqdq xmm4, xmm7
movdqa xmm6, xmm2
punpckhqdq xmm6, xmm5
punpcklqdq xmm2, xmm5
shl edx, 3
xor edi, edi
xor ecx, ecx
movdqa xmm3, xmm4
movdqa xmm1, xmm2
nop word [eax + eax]
movdqu xmmword [esp + 0x54], xmm0
movss xmm0, dword [edi + 0x52678c]
movss xmm2, dword [edi + 0x526788]
unpcklps xmm2, xmm0
movss xmm0, dword [edi + 0x52677c]
movss xmm4, dword [edi + 0x526778]
unpcklps xmm4, xmm0
movlhps xmm4, xmm2
movups xmmword [esp], xmm4
movsd xmm0, qword [eax + edi*8 + 0x18]
movsd xmm2, qword [eax + edi*8 + 8]
movlhps xmm2, xmm0
movups xmmword [esp + 0x14], xmm2
movd xmm0, dword [edi + 0x5267a4]
movd xmm2, dword [edi + 0x5267a0]
punpckldq xmm2, xmm0
movd xmm4, dword [edi + 0x526794]
movd xmm0, dword [edi + 0x526790]
punpckldq xmm0, xmm4
punpcklqdq xmm0, xmm2
movd xmm2, dword [edi + 0x526784]
movd xmm4, dword [edi + 0x526780]
punpckldq xmm4, xmm2
movd xmm2, dword [edi + 0x526774]
movd xmm5, dword [edi + 0x526770]
punpckldq xmm5, xmm2
punpcklqdq xmm5, xmm4
movq xmm4, qword [eax + edi*8 + 0x30]
movq xmm2, qword [eax + edi*8 + 0x20]
punpcklqdq xmm2, xmm4
movdqa xmm7, xmm2
movdqu xmmword [esp + 0x24], xmm2
movq xmm2, qword [eax + edi*8 + 0x10]
movq xmm4, qword [eax + edi*8]
punpcklqdq xmm4, xmm2
pxor xmm5, xmm4
movdqa xmm2, xmm5
psrlq xmm2, 0x20
pmuludq xmm2, xmm5
movdqu xmmword [esp + 0x44], xmm2
pxor xmm0, xmm7
movdqa xmm2, xmm0
psrlq xmm2, 0x20
pmuludq xmm2, xmm0
movdqu xmmword [esp + 0x34], xmm2
movd xmm5, dword [edi + 0x5267ac]
movd xmm0, dword [edi + 0x5267a8]
punpckldq xmm0, xmm5
movd xmm2, dword [edi + 0x52679c]
movd xmm5, dword [edi + 0x526798]
punpckldq xmm5, xmm2
punpcklqdq xmm5, xmm0
movq xmm2, qword [eax + edi*8 + 0x38]
movq xmm0, qword [eax + edi*8 + 0x28]
punpcklqdq xmm0, xmm2
movdqa xmm2, xmm6
movdqa xmm6, xmm1
punpckhqdq xmm6, xmm2
punpcklqdq xmm1, xmm2
movdqa xmm7, xmm3
movdqu xmm2, xmmword [esp + 0x54]
punpckhqdq xmm7, xmm2
punpcklqdq xmm3, xmm2
movdqu xmm2, xmmword [esp + 0x24]
paddq xmm3, xmm2
paddq xmm1, xmm4
pxor xmm5, xmm0
movdqa xmm4, xmm5
psrlq xmm4, 0x20
pmuludq xmm4, xmm5
paddq xmm4, xmm3
movdqu xmm3, xmmword [esp]
movdqu xmm5, xmmword [esp + 0x14]
pxor xmm3, xmm5
movdqa xmm2, xmm3
psrlq xmm2, 0x20
pmuludq xmm2, xmm3
paddq xmm2, xmm1
paddq xmm6, xmm5
movdqu xmm1, xmmword [esp + 0x44]
paddq xmm6, xmm1
paddq xmm7, xmm0
movdqu xmm0, xmmword [esp + 0x34]
paddq xmm7, xmm0
movdqa xmm5, xmm6
movdqa xmm0, xmm4
punpckhqdq xmm0, xmm7
movdqa xmm3, xmm4
punpcklqdq xmm3, xmm7
movdqa xmm6, xmm2
punpckhqdq xmm6, xmm5
movdqa xmm1, xmm2
punpcklqdq xmm1, xmm5
add ecx, 0x40
add edi, 8
cmp edx, edi
jne 0x503990
mov ebx, dword [esp + 0x10]
movq xmm1, qword [esi + ebx - 0x10]
movq xmm0, qword [esi + ebx - 0x20]
movq xmm3, qword [esi + ebx - 0x30]
movq xmm6, qword [esi + ebx - 0x40]
punpcklqdq xmm6, xmm3
paddq xmm2, xmm6
pxor xmm6, xmmword [0x5266e0]
punpcklqdq xmm0, xmm1
paddq xmm4, xmm0
pxor xmm0, xmmword [0x5266f0]
movdqa xmm1, xmm0
psrlq xmm1, 0x20
movdqa xmm3, xmm6
psrlq xmm3, 0x20
pmuludq xmm3, xmm6
pmuludq xmm1, xmm0
movdqu xmmword [esp], xmm1
movq xmm0, qword [esi + ebx - 0x28]
movq xmm1, qword [esi + ebx - 0x38]
punpcklqdq xmm1, xmm0
movq xmm0, qword [esi + ebx - 8]
movq xmm6, qword [esi + ebx - 0x18]
punpcklqdq xmm6, xmm0
paddq xmm7, xmm6
pxor xmm6, xmmword [0x526700]
paddq xmm5, xmm1
pxor xmm1, xmmword [0x526710]
paddq xmm5, xmm3
movdqu xmm0, xmmword [esp]
paddq xmm7, xmm0
movdqa xmm0, xmm1
psrlq xmm0, 0x20
movdqa xmm3, xmm6
psrlq xmm3, 0x20
pmuludq xmm3, xmm6
paddq xmm3, xmm4
pmuludq xmm0, xmm1
paddq xmm0, xmm2
pxor xmm7, xmmword [0x526720]
pxor xmm5, xmmword [0x526730]
pxor xmm3, xmmword [0x526740]
pxor xmm0, xmmword [0x526750]
movdqa xmm2, xmm0
pmuludq xmm2, xmm5
movdqa xmm1, xmm3
pmuludq xmm1, xmm7
movdqu xmmword [esp], xmm1
movdqa xmm1, xmm5
psrlq xmm1, 0x20
movdqa xmm4, xmm0
pmuludq xmm4, xmm1
movdqu xmmword [esp + 0x14], xmm4
psrlq xmm0, 0x20
pmuludq xmm5, xmm0
pmuludq xmm0, xmm1
movdqa xmm4, xmm7
psrlq xmm4, 0x20
movdqa xmm1, xmm3
pmuludq xmm1, xmm4
psrlq xmm3, 0x20
pmuludq xmm7, xmm3
pmuludq xmm3, xmm4
movdqu xmm6, xmmword [esp]
psrlq xmm6, 0x20
paddq xmm6, xmm7
movdqa xmm7, xmm2
psrlq xmm7, 0x20
paddq xmm7, xmm5
movdqu xmm5, xmmword [esp + 0x14]
movdqa xmm4, xmm5
pand xmm4, xmmword [0x526760]
paddq xmm4, xmm7
movdqa xmm7, xmm1
pand xmm7, xmmword [0x526760]
paddq xmm7, xmm6
psrlq xmm5, 0x20
paddq xmm5, xmm0
psrlq xmm1, 0x20
paddq xmm1, xmm3
movdqa xmm3, xmm7
psrlq xmm3, 0x20
paddq xmm3, xmm1
movdqa xmm0, xmm4
psrlq xmm0, 0x20
paddq xmm0, xmm5
psllq xmm7, 0x20
movdqu xmm1, xmmword [esp]
movdqa xmm5, xmmword [0x526760]
pand xmm1, xmm5
por xmm1, xmm7
pxor xmm1, xmm3
pand xmm2, xmm5
psllq xmm4, 0x20
por xmm2, xmm4
pxor xmm2, xmm0
paddq xmm2, xmm1
pshufd xmm0, xmm2, 0xee
paddq xmm0, xmm2
pshufd xmm1, xmm0, 0x55
movd ecx, xmm1
mov edx, 0x85ebca87
mov eax, ebx
mul edx
movd edi, xmm0
imul esi, ebx, 0x9e3779b1
add esi, edx
add edi, eax
adc ecx, esi
imul esi, ecx, 0x9e3779f9
shr ecx, 5
xor ecx, edi
mov edx, 0x9e3779f9
mov eax, ecx
mul edx
imul ecx, ecx, 0x16566791
add edx, esi
add edx, ecx
xor eax, edx
add esp, 0xb4
pop esi
pop edi
pop ebx
pop ebp
ret
push ebp
push ebx
push edi
push esi
mov esi, edx
mov eax, 0xc5ecd5a2
xor eax, dword [ecx + edx - 4]
mov edx, 0xc73ab174
xor edx, dword [ecx]
mov edi, edx
shld edi, eax, 0x11
mov ebx, edx
shld ebx, eax, 0x18
mov ecx, eax
shld ecx, edx, 0x18
xor ecx, edi
mov edi, eax
shld edi, edx, 0x11
xor ecx, eax
xor ebx, edi
xor ebx, edx
mov edi, 0x1e98df25
mov eax, ecx
mul edi
imul ecx, ecx, 0x9fb21c65
add ecx, edx
imul ebp, ebx, 0x1e98df25
add ebp, ecx
mov ecx, ebp
shr ecx, 3
xor ebx, ebx
add ecx, esi
setb bl
xor ecx, eax
mov eax, ecx
mul edi
xor ebx, ebp
imul ecx, ecx, 0x9fb21c65
add edx, ecx
imul ecx, ebx, 0x1e98df25
add edx, ecx
mov ecx, edx
shld ecx, eax, 4
mov esi, edx
shr esi, 0x1c
xor edx, esi
xor eax, ecx
pop esi
pop edi
pop ebx
pop ebp
ret
push edi
push esi
mov esi, edx
movzx eax, byte [ecx]
shr edx, 1
movzx edi, byte [ecx + esi - 1]
shl eax, 0x10
movzx ecx, byte [ecx + edx]
shl ecx, 0x18
shl esi, 8
or esi, eax
or esi, ecx
or esi, edi
xor esi, 0x87275a9b
mov ecx, 0x27d4eb4f
mov eax, esi
mul ecx
imul edi, esi, 0xc2b2ae3d
add edi, edx
mov esi, edi
mov ecx, edi
shld ecx, eax, 3
shr esi, 0x1d
xor esi, edi
xor ecx, eax
mov edx, 0x9e3779f9
mov eax, ecx
mul edx
imul ecx, ecx, 0x165667b1
imul esi, esi, 0x9e3779f9
add edx, esi
add edx, ecx
xor eax, edx
pop esi
pop edi
ret