Function at 0x4ef2a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xf0
mov ebx, dword [ebp + 8]
mov edi, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
cmp esi, 0x10
ja 0x4ef49f
cmp esi, 9
jb 0x4ef854
mov eax, esi
mov esi, dword [edi + 0x28]
mov ebx, dword [edi + 0x2c]
xor ebx, dword [edi + 0x24]
xor esi, dword [edi + 0x20]
mov ecx, dword [edi + 0x38]
xor ecx, dword [edi + 0x30]
mov dword [esp + 0x30], ecx
mov ecx, dword [edi + 0x3c]
xor ecx, dword [edi + 0x34]
mov dword [esp + 0x40], ecx
xor esi, dword [edx]
xor ebx, dword [edx + 4]
mov ecx, dword [edx + eax - 8]
mov dword [esp + 0x60], ecx
mov edi, dword [edx + eax - 4]
mov dword [esp + 8], edi
xor esi, ecx
mov ecx, 0x85ebca87
mov eax, esi
mul ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x2c], edx
xor ebx, edi
mov eax, ebx
mul ecx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x70], edx
add ecx, 0x184baf2a
mov eax, esi
mul ecx
mov edi, edx
mov esi, eax
mov eax, ebx
mul ecx
mov dword [esp + 0xc], eax
mov dword [esp + 0x80], edx
add esi, dword [esp + 0x5c]
adc edi, 0
add esi, dword [esp + 0x2c]
mov ebx, esi
adc edi, 0
mov esi, dword [esp + 0x40]
xor esi, dword [esp + 8]
mov eax, dword [esp + 0x30]
xor eax, dword [esp + 0x60]
mov ecx, 0x85ebca87
add ecx, 0xfffffff0
mul ecx
mov ecx, edx
add ecx, esi
mov edx, dword [ebp + 0x10]
shl edx, 0x16
add eax, dword [esp + 0xc]
adc ecx, dword [esp + 0x80]
add eax, dword [esp + 0x70]
adc ecx, 0
add eax, edi
mov dword [esp + 0x70], eax
adc ecx, 0
add edx, ebx
add edx, 0xffc00000
mov dword [esp + 0x40], edx
mov edi, ecx
bswap edi
xor edi, dword [esp + 0x10]
mov ebx, eax
bswap ebx
mov esi, 0x27d4eb4f
mov eax, edi
mul esi
mov dword [esp + 0x30], eax
mov dword [esp + 8], edx
xor ebx, dword [esp + 0x40]
mov eax, ebx
mul esi
mov dword [esp + 0xc], eax
mov dword [esp + 0x40], edx
mov esi, 0x85ebca87
add esi, 0x3cc6e3b6
mov eax, edi
mul esi
mov dword [esp + 0x10], edx
mov edi, eax
mov eax, ebx
mul esi
mov dword [esp + 0x80], eax
mov dword [esp + 0x60], edx
add edi, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
adc eax, 0
add edi, dword [esp + 8]
adc eax, 0
mov dword [esp + 0x10], eax
mov esi, dword [esp + 0x70]
mov eax, esi
mov edx, 0x27d4eb4f
mul edx
mov ebx, eax
imul eax, esi, 0xc2b2ae3d
add eax, edx
imul ecx, ecx, 0x27d4eb4f
add ecx, eax
add ebx, dword [esp + 0x80]
adc ecx, dword [esp + 0x60]
add ebx, dword [esp + 0x40]
adc ecx, 0
add ebx, dword [esp + 0x10]
adc ecx, 0
imul eax, edi, 0x9e3779f9
mov dword [esp + 0x10], eax
shr edi, 5
xor edi, dword [esp + 0x30]
mov edx, 0x9e3779f9
mov eax, edi
mul edx
mov esi, eax
imul edi, edi, 0x16566791
add edi, edx
add edi, dword [esp + 0x10]
imul eax, ecx, 0x9e3779f9
mov dword [esp + 0x10], eax
shr ecx, 5
xor ecx, ebx
mov ebx, dword [ebp + 8]
xor esi, edi
mov eax, ecx
mov edx, 0x9e3779f9
mul edx
mov dword [ebx + 4], edi
mov dword [ebx], esi
imul ecx, ecx, 0x16566791
add ecx, edx
add ecx, dword [esp + 0x10]
xor eax, ecx
mov dword [ebx + 0xc], ecx
mov dword [ebx + 8], eax
jmp 0x4f0246
cmp esi, 0x80
ja 0x4ef96c
mov ecx, 0x85ebca87
mov eax, esi
mul ecx
imul ecx, esi, 0x9e3779b1
add ecx, edx
movd xmm1, eax
movd xmm0, ecx
punpckldq xmm1, xmm0
movdqa xmm4, xmm1
pslldq xmm4, 8
cmp esi, 0x21
jb 0x4ef98d
cmp esi, 0x41
mov edx, dword [ebp + 0xc]
jb 0x4ef777
cmp esi, 0x61
jb 0x4ef69f
movdqu xmm0, xmmword [edx + 0x30]
movdqa xmmword [esp + 0x30], xmm0
movdqu xmm2, xmmword [edi + 0x60]
pxor xmm2, xmm0
movd ebx, xmm2
pshufd xmm3, xmm2, 0xee
movd ecx, xmm3
mov eax, ecx
mul ebx
mov dword [esp + 0x40], eax
mov dword [esp + 0x80], edx
pshufd xmm3, xmm2, 0xff
psrlq xmm2, 0x20
movd esi, xmm2
mov eax, ecx
mul esi
mov dword [esp + 8], eax
mov dword [esp + 0x60], edx
movd ecx, xmm3
mov eax, ecx
mul ebx
mov dword [esp + 0x10], edx
mov ebx, eax
mov eax, ecx
mul esi
mov dword [esp + 0x70], eax
add ebx, dword [esp + 8]
mov eax, dword [esp + 0x10]
adc eax, 0
add ebx, dword [esp + 0x80]
movd xmm5, dword [esp + 0x60]
movdqu xmm4, xmmword [edi + 0x70]
mov ecx, dword [ebp + 0x10]
mov esi, dword [ebp + 0xc]
movdqu xmm2, xmmword [esi + ecx - 0x40]
pxor xmm4, xmm2
movd xmm6, edx
movd ecx, xmm4
pshufd xmm7, xmm4, 0xee
pshufd xmm3, xmm4, 0x4e
psrlq xmm4, 0x20
pmuludq xmm3, xmm4
movd edx, xmm7
pshufd xmm7, xmm3, 0xee
movd esi, xmm7
movd xmm7, dword [esp + 0x70]
adc eax, 0
mov dword [esp + 0x10], eax
mov eax, edx
mul ecx
movd ecx, xmm3
add esi, ecx
punpckldq xmm7, xmm6
movd xmm0, ebx
pshufd xmm5, xmm5, 0x45
pshufd xmm6, xmm7, 0x44
paddq xmm6, xmm5
pshufd xmm5, xmm4, 0xee
pmuludq xmm5, xmm4
shufps xmm5, xmm6, 0xe4
pshufd xmm4, xmm3, 0xff
movd xmm6, esi
mov esi, dword [ebp + 0x10]
movd ecx, xmm4
adc ecx, 0
movd xmm4, ecx
punpckldq xmm6, xmm4
movd xmm7, dword [esp + 0x10]
punpckldq xmm0, xmm7
punpcklqdq xmm6, xmm0
movd xmm0, edx
mov edx, dword [ebp + 0xc]
pxor xmm4, xmm4
punpcklqdq xmm4, xmm0
shufps xmm3, xmm7, 0x24
movd xmm0, dword [esp + 0x40]
psrlq xmm3, 0x20
paddq xmm3, xmm5
pslldq xmm0, 8
movaps xmm5, xmmword [0x686c90]
shufps xmm5, xmm0, 0x24
shufps xmm4, xmmword [0x686c80], 0xe2
paddq xmm4, xmm6
psllq xmm6, 0x20
orps xmm5, xmm6
pshufd xmm0, xmm4, 0x50
psrlq xmm4, 0x20
paddq xmm4, xmm3
xorps xmm5, xmm3
pand xmm0, xmmword [0x686ca0]
movd xmm3, eax
por xmm3, xmm0
pshufd xmm0, xmm2, 0x44
paddq xmm0, xmm2
movsd xmm0, xmm3
movdqa xmm2, xmmword [esp + 0x30]
pshufd xmm3, xmm2, 0xee
paddq xmm3, xmm2
pxor xmm3, xmm4
pshufd xmm4, xmm1, 0x44
paddq xmm4, xmm5
movsd xmm4, xmm3
xorpd xmm4, xmm0
movq xmm0, qword [edi + 0x40]
movq xmm3, qword [edi + 0x50]
punpcklqdq xmm3, xmm0
movq xmm6, qword [edx + esi - 0x30]
movdqa xmmword [esp + 0x10], xmm6
movq xmm2, qword [edx + 0x20]
punpcklqdq xmm6, xmm2
pxor xmm6, xmm3
movq xmm0, qword [edi + 0x48]
movq xmm5, qword [edi + 0x58]
punpcklqdq xmm5, xmm0
movq xmm7, qword [edx + esi - 0x28]
movdqa xmmword [esp + 0x30], xmm7
movq xmm3, qword [edx + 0x28]
punpcklqdq xmm7, xmm3
pxor xmm7, xmm5
movdqa xmm5, xmm6
pmuludq xmm5, xmm7
movdqa xmm1, xmm6
psrlq xmm1, 0x20
movdqa xmm0, xmm7
pmuludq xmm0, xmm1
psrlq xmm7, 0x20
pmuludq xmm6, xmm7
pmuludq xmm7, xmm1
movdqa xmm1, xmm5
psrlq xmm1, 0x20
paddq xmm1, xmm6
movdqa xmm6, xmm0
pand xmm6, xmmword [0x686cb0]
paddq xmm6, xmm1
psrlq xmm0, 0x20
paddq xmm0, xmm7
movdqa xmm1, xmm6
psrlq xmm1, 0x20
paddq xmm1, xmm0
pand xmm5, xmmword [0x686cb0]
psllq xmm6, 0x20
por xmm5, xmm6
pxor xmm5, xmm1
paddq xmm5, xmm4
punpcklqdq xmm3, xmmword [esp + 0x30]
punpcklqdq xmm2, xmmword [esp + 0x10]
paddq xmm2, xmm3
pxor xmm2, xmm5
movdqa xmm4, xmm2
movq xmm0, qword [edi + 0x20]
movq xmm3, qword [edi + 0x30]
punpcklqdq xmm3, xmm0
movq xmm6, qword [edx + esi - 0x20]
movdqa xmmword [esp + 0x10], xmm6
movq xmm1, qword [edx + 0x10]
punpcklqdq xmm6, xmm1
pxor xmm6, xmm3
movq xmm0, qword [edi + 0x28]
movq xmm5, qword [edi + 0x38]
punpcklqdq xmm5, xmm0
movq xmm7, qword [edx + esi - 0x18]
movdqa xmmword [esp + 0x30], xmm7
movq xmm3, qword [edx + 0x18]
punpcklqdq xmm7, xmm3
pxor xmm7, xmm5
movdqa xmm5, xmm7
pmuludq xmm5, xmm6
movdqa xmm2, xmm6
psrlq xmm2, 0x20
movdqa xmm0, xmm7
pmuludq xmm0, xmm2
psrlq xmm7, 0x20
pmuludq xmm6, xmm7
pmuludq xmm7, xmm2
movdqa xmm2, xmm5
psrlq xmm2, 0x20
paddq xmm2, xmm6
movdqa xmm6, xmm0
pand xmm6, xmmword [0x686cb0]
paddq xmm6, xmm2
psrlq xmm0, 0x20
paddq xmm0, xmm7
movdqa xmm2, xmm6
psrlq xmm2, 0x20
paddq xmm2, xmm0
pand xmm5, xmmword [0x686cb0]
psllq xmm6, 0x20
por xmm5, xmm6
pxor xmm5, xmm2
paddq xmm5, xmm4
punpcklqdq xmm3, xmmword [esp + 0x30]
punpcklqdq xmm1, xmmword [esp + 0x10]
paddq xmm1, xmm3
pxor xmm1, xmm5
movdqa xmm4, xmm1
jmp 0x4ef990
cmp esi, 4
jb 0x4efbe7
mov ecx, esi
mov esi, dword [edi + 0x18]
mov ebx, dword [edi + 0x1c]
xor esi, dword [edi + 0x10]
xor ebx, dword [edi + 0x14]
xor ebx, dword [edx + ecx - 4]
xor esi, dword [edx]
shl ecx, 2
xor edi, edi
add ecx, 0x85ebca87
adc edi, 0x9e3779b1
mov eax, esi
mul ecx
mov dword [esp + 0x30], edx
mov dword [esp + 0x10], eax
mov eax, ebx
mul ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x70], eax
mov eax, esi
mul edi
mov ecx, edx
mov esi, eax
mov eax, ebx
mul edi
add esi, dword [esp + 0x70]
adc ecx, 0
add esi, dword [esp + 0x30]
adc ecx, 0
add eax, dword [esp + 0x40]
adc edx, 0
add eax, ecx
adc edx, 0
mov ecx, esi
mov ebx, dword [esp + 0x10]
shld ecx, ebx, 1
lea edi, [ebx + ebx]
add eax, edi
adc ecx, edx
mov edx, ecx
movd xmm0, ecx
shld ecx, eax, 0x1d
xor ecx, ebx
mov ebx, dword [ebp + 8]
shr edx, 3
xor edx, esi
movd xmm1, edx
movd xmm2, ecx
movd xmm3, eax
punpckldq xmm2, xmm1
punpckldq xmm3, xmm0
movdqa xmm1, xmm2
punpcklqdq xmm1, xmm3
psrlq xmm2, 0x23
movdqa xmm0, xmm1
psrlq xmm0, 0x25
movsd xmm0, xmm2
xorpd xmm0, xmm1
movapd xmm1, xmm0
psrlq xmm1, 0x20
movdqa xmm2, xmmword [0x686d10]
pmuludq xmm1, xmm2
movdqa xmm3, xmmword [0x686d20]
pmuludq xmm3, xmm0
paddq xmm3, xmm1
psllq xmm3, 0x20
pmuludq xmm0, xmm2
paddq xmm0, xmm3
movdqa xmm1, xmm0
psrlq xmm1, 0x1c
movdqa xmm2, xmm0
psrlq xmm2, 0x20
movsd xmm2, xmm1
xorpd xmm2, xmm0
movupd xmmword [ebx], xmm2
jmp 0x4f0246
cmp esi, 0xf0
ja 0x4efc6c
mov ecx, ebx
push 0
push 0
push edi
push esi
call fcn.004f5500
add esp, 0x10
jmp 0x4f0246
mov edx, dword [ebp + 0xc]
mov eax, dword [edx]
mov dword [esp + 0x70], eax
mov esi, dword [edi]
xor esi, eax
mov dword [esp + 0x2c], esi
mov eax, dword [edx + 8]
mov dword [esp + 0x60], eax
mov ecx, dword [edi + 8]
xor ecx, eax
mov eax, ecx
mov ebx, edx
mul esi
mov dword [esp + 0x10], eax
mov dword [esp + 0x40], edx
mov eax, dword [ebx + 4]
mov dword [esp + 0x80], eax
mov esi, dword [edi + 4]
xor esi, eax
mov eax, ecx
mul esi
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
mov eax, dword [ebx + 0xc]
mov dword [esp + 0x30], eax
mov ebx, dword [edi + 0xc]
xor ebx, eax
mov eax, ebx
mul dword [esp + 0x2c]
mov ecx, edx
mov dword [esp + 0x2c], eax
mov eax, ebx
mul esi
mov esi, dword [esp + 0x2c]
add esi, dword [esp + 0xc]
adc ecx, 0
add esi, dword [esp + 0x40]
adc ecx, 0
add eax, dword [esp + 8]
adc edx, 0
add eax, ecx
adc edx, 0
xor edx, esi
mov ecx, eax
xor ecx, dword [esp + 0x10]
pshufd xmm0, xmm4, 0xee
movd eax, xmm0
add ecx, eax
mov dword [esp + 0x40], ecx
pshufd xmm0, xmm4, 0xff
movd eax, xmm0
adc eax, edx
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
mov ebx, dword [ecx + eax - 0x10]
mov edx, dword [ecx + eax - 0xc]
mov esi, dword [ecx + eax - 4]
mov ecx, dword [ecx + eax - 8]
mov eax, ecx
add eax, ebx
mov dword [esp + 0x2c], eax
mov eax, esi
adc eax, edx
mov dword [esp + 0x10], eax
xor edx, dword [edi + 0x14]
mov dword [esp + 0x94], edx
xor ebx, dword [edi + 0x10]
xor esi, dword [edi + 0x1c]
xor ecx, dword [edi + 0x18]
mov eax, ecx
mul ebx
mov dword [esp + 0x5c], edx
mov dword [esp + 8], eax
mov eax, ecx
mov edi, dword [esp + 0x94]
mul edi
mov dword [esp + 0x9c], edx
mov dword [esp + 0x98], eax
mov eax, esi
mul ebx
mov ecx, eax
mov ebx, edx
mov eax, dword [esp + 0xc]
xor dword [esp + 0x10], eax
mov eax, esi
mul edi
mov esi, dword [esp + 0x2c]
xor dword [esp + 0x40], esi
add ecx, dword [esp + 0x98]
adc ebx, 0
add ecx, dword [esp + 0x5c]
adc ebx, 0
add eax, dword [esp + 0x9c]
adc edx, 0
add eax, ebx
adc edx, 0
xor edx, ecx
xor eax, dword [esp + 8]
movd ecx, xmm4
add ecx, eax
pshufd xmm0, xmm4, 0x55
movd eax, xmm0
adc eax, edx
mov esi, dword [esp + 0x60]
add esi, dword [esp + 0x70]
mov ebx, dword [esp + 0x30]
adc ebx, dword [esp + 0x80]
xor ebx, eax
mov dword [esp + 0x30], ebx
xor esi, ecx
mov ecx, esi
mov eax, dword [esp + 0x40]
add ecx, eax
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x10]
adc ebx, ecx
mov edx, 0x85ebca87
imul ecx, edx
mov dword [esp + 0x10], ecx
mov ecx, eax
mul edx
mov dword [esp + 0x60], eax
mov edi, edx
mov eax, 0x9e3779b1
imul eax, ecx
add edi, eax
add edi, dword [esp + 0x10]
mov ecx, 0xc2b2ae63
mov eax, esi
mul ecx
mov dword [esp + 0x10], eax
imul eax, esi, 0x85ebca77
add eax, edx
imul ecx, dword [esp + 0x30], 0xc2b2ae63
add ecx, eax
mov dword [esp + 0x30], ecx
mov edx, 0x27d4eb4f
mov ecx, dword [ebp + 0x10]
mov eax, ecx
mul edx
mov esi, eax
imul ecx, ecx, 0xc2b2ae3d
add ecx, edx
add esi, dword [esp + 0x60]
adc ecx, edi
add esi, dword [esp + 0x10]
adc ecx, dword [esp + 0x30]
imul eax, ebx, 0x9e3779f9
mov dword [esp + 0x10], eax
shr ebx, 5
xor ebx, dword [esp + 0x70]
mov edx, 0x9e3779f9
mov eax, ebx
mul edx
mov edi, eax
imul ebx, ebx, 0x16566791
add ebx, edx
add ebx, dword [esp + 0x10]
imul eax, ecx, 0x9e3779f9
mov dword [esp + 0x10], eax
shr ecx, 5
xor ecx, esi
xor edi, ebx
mov eax, ecx
mov edx, 0x9e3779f9
mul edx
mov esi, dword [ebp + 8]
mov dword [esi + 4], ebx
mov ebx, esi
mov dword [esi], edi
imul ecx, ecx, 0x16566791
add ecx, edx
add ecx, dword [esp + 0x10]
xor eax, ecx
xor edx, edx
neg eax
sbb edx, ecx
mov dword [esi + 8], eax
mov dword [esi + 0xc], edx
jmp 0x4f0246
test esi, esi
je 0x4efd8a
movzx eax, byte [edx]
mov ecx, esi
shr ecx, 1
movzx ecx, byte [edx + ecx]
movzx edx, byte [esi + edx - 1]
shl eax, 0x10
shl esi, 8
or esi, eax
shl ecx, 0x18
or esi, ecx
or esi, edx
movd xmm1, dword [edi + 0xc]
movd xmm2, dword [edi + 4]
movd xmm3, dword [edi + 8]
movd xmm4, dword [edi]
movd xmm0, esi
bswap esi
rol esi, 0xd
movd xmm5, esi
punpckldq xmm2, xmm1
punpckldq xmm4, xmm3
pxor xmm4, xmm2
punpckldq xmm0, xmm5
pxor xmm0, xmm4
pxor xmm1, xmm1
punpckldq xmm0, xmm1
movdqa xmm1, xmmword [0x686cc0]
pmuludq xmm1, xmm0
pmuludq xmm0, xmmword [0x686cd0]
psllq xmm0, 0x20
paddq xmm0, xmm1
jmp 0x4efde9
mov eax, dword [ebp + 0x18]
lea ecx, [eax - 0x40]
mov eax, esi
mov dword [esp + 0x60], ecx
mov esi, ecx
shr esi, 3
mov ebx, esi
shl ebx, 6
lea ecx, [eax - 1]
mov eax, ecx
xor edx, edx
div ebx
mov dword [esp + 8], edx
mov dword [esp + 0x10], ebx
cmp ebx, ecx
mov dword [esp + 0xc], eax
jbe 0x4efcc0
movdqa xmm3, xmmword [0x686bf0]
movdqa xmm2, xmmword [0x686c00]
movdqa xmm1, xmmword [0x686c10]
movdqa xmm0, xmmword [0x686c20]
jmp 0x4f0007
cmp eax, 2
mov ecx, 1
cmovae ecx, eax
mov dword [esp + 0x30], ecx
mov eax, dword [ebp + 0x18]
movdqu xmm6, xmmword [edi + eax - 0x40]
movdqu xmm7, xmmword [edi + eax - 0x30]
movdqu xmm2, xmmword [edi + eax - 0x20]
movdqu xmm3, xmmword [edi + eax - 0x10]
cmp dword [esp + 0x60], 8
jae 0x4efe3e
pxor xmm6, xmmword [0x686c40]
pshufd xmm1, xmm6, 0xf5
movdqa xmm0, xmmword [0x686c30]
pmuludq xmm1, xmm0
psllq xmm1, 0x20
pmuludq xmm6, xmm0
pxor xmm7, xmmword [0x686c50]
paddq xmm6, xmm1
pshufd xmm1, xmm7, 0xf5
pmuludq xmm1, xmm0
psllq xmm1, 0x20
pmuludq xmm7, xmm0
paddq xmm7, xmm1
pxor xmm2, xmmword [0x686c60]
pshufd xmm1, xmm2, 0xf5
pmuludq xmm1, xmm0
psllq xmm1, 0x20
pmuludq xmm2, xmm0
paddq xmm2, xmm1
pxor xmm3, xmmword [0x686c70]
pshufd xmm1, xmm3, 0xf5
pmuludq xmm1, xmm0
psllq xmm1, 0x20
pmuludq xmm3, xmm0
paddq xmm3, xmm1
movdqa xmm0, xmm3
movdqa xmm1, xmm2
movdqa xmm2, xmm7
movdqa xmm3, xmm6
jmp 0x4f0007
movq xmm0, qword [edi + 0x58]
movq xmm1, qword [edi + 0x48]
punpcklqdq xmm1, xmm0
movq xmm0, qword [edi + 0x50]
movq xmm2, qword [edi + 0x40]
punpcklqdq xmm2, xmm0
pxor xmm2, xmm1
movdqa xmm0, xmm2
psrlq xmm0, 0x21
pxor xmm0, xmm2
movdqa xmm1, xmm0
psrlq xmm1, 0x20
movdqa xmm2, xmmword [0x686d00]
pmuludq xmm1, xmm2
movdqa xmm3, xmmword [0x686cd0]
pmuludq xmm3, xmm0
paddq xmm3, xmm1
psllq xmm3, 0x20
pmuludq xmm0, xmm2
paddq xmm0, xmm3
movdqa xmm1, xmm0
psrlq xmm1, 0x1d
pxor xmm1, xmm0
movdqa xmm0, xmm1
psrlq xmm0, 0x20
movdqa xmm2, xmmword [0x686ce0]
pmuludq xmm0, xmm2
movdqa xmm3, xmmword [0x686cf0]
pmuludq xmm3, xmm1
paddq xmm3, xmm0
psllq xmm3, 0x20
pmuludq xmm1, xmm2
paddq xmm1, xmm3
movdqa xmm0, xmm1
psrlq xmm0, 0x20
pxor xmm0, xmm1
movdqu xmmword [ebx], xmm0
jmp 0x4f0246
movdqa xmmword [esp + 0x80], xmm3
movdqa xmmword [esp + 0x60], xmm2
xor eax, eax
movdqa xmm3, xmmword [0x686bf0]
movdqa xmm2, xmmword [0x686c00]
movdqa xmm1, xmmword [0x686c10]
movdqa xmm0, xmmword [0x686c20]
movdqa xmm4, xmmword [0x686c30]
mov ecx, dword [ebp + 0xc]
movdqa xmmword [esp + 0x40], xmm6
movdqa xmmword [esp + 0x70], xmm7
nop word cs:[eax + eax]
mov ebx, ecx
xor edx, edx
nop word cs:[eax + eax]
nop
prefetcht0 byte [ebx + 0x140]
movdqu xmm5, xmmword [ebx]
movdqu xmm6, xmmword [edi + edx*8]
pxor xmm6, xmm5
pshufd xmm7, xmm6, 0xf5
pmuludq xmm7, xmm6
movdqu xmm6, xmmword [ebx + 0x10]
pshufd xmm5, xmm5, 0x4e
paddq xmm3, xmm5
movdqu xmm5, xmmword [edi + edx*8 + 0x10]
paddq xmm3, xmm7
pxor xmm5, xmm6
pshufd xmm7, xmm5, 0xf5
pmuludq xmm7, xmm5
pshufd xmm5, xmm6, 0x4e
paddq xmm2, xmm5
paddq xmm2, xmm7
movdqu xmm5, xmmword [ebx + 0x20]
movdqu xmm6, xmmword [edi + edx*8 + 0x20]
pxor xmm6, xmm5
pshufd xmm7, xmm6, 0xf5
pmuludq xmm7, xmm6
pshufd xmm5, xmm5, 0x4e
paddq xmm1, xmm5
paddq xmm1, xmm7
movdqu xmm5, xmmword [ebx + 0x30]
movdqu xmm6, xmmword [edi + edx*8 + 0x30]
pxor xmm6, xmm5
pshufd xmm7, xmm6, 0xf5
pmuludq xmm7, xmm6
pshufd xmm5, xmm5, 0x4e
paddq xmm0, xmm5
paddq xmm0, xmm7
add edx, 1
add ebx, 0x40
cmp esi, edx
jne 0x4efea0
movdqa xmm5, xmm3
psrlq xmm5, 0x2f
movdqa xmm6, xmmword [esp + 0x40]
pxor xmm3, xmm6
pxor xmm5, xmm3
pmuludq xmm5, xmm4
pshufd xmm3, xmm3, 0xf5
pmuludq xmm3, xmm4
psllq xmm3, 0x20
paddq xmm3, xmm5
movdqa xmm5, xmm2
psrlq xmm5, 0x2f
movdqa xmm7, xmmword [esp + 0x70]
pxor xmm2, xmm7
pxor xmm5, xmm2
pmuludq xmm5, xmm4
pshufd xmm2, xmm2, 0xf5
pmuludq xmm2, xmm4
psllq xmm2, 0x20
paddq xmm2, xmm5
movdqa xmm5, xmm1
psrlq xmm5, 0x2f
pxor xmm1, xmmword [esp + 0x60]
pxor xmm5, xmm1
pmuludq xmm5, xmm4
pshufd xmm1, xmm1, 0xf5
pmuludq xmm1, xmm4
psllq xmm1, 0x20
paddq xmm1, xmm5
movdqa xmm5, xmm0
psrlq xmm5, 0x2f
pxor xmm0, xmmword [esp + 0x80]
pxor xmm5, xmm0
pmuludq xmm5, xmm4
pshufd xmm0, xmm0, 0xf5
pmuludq xmm0, xmm4
psllq xmm0, 0x20
paddq xmm0, xmm5
add eax, 1
add ecx, dword [esp + 0x10]
cmp eax, dword [esp + 0x30]
jne 0x4efe90
mov eax, dword [esp + 8]
cmp eax, 0x40
jae 0x4f002b
movdqa xmm4, xmm0
movdqa xmm5, xmm1
movdqa xmm6, xmm2
movdqa xmm7, xmm3
mov esi, dword [ebp + 0x10]
mov ebx, dword [ebp + 0x14]
jmp 0x4f011c
mov edi, dword [esp + 0xc]
imul edi, dword [esp + 0x10]
shr eax, 6
mov edx, dword [ebp + 0xc]
add edi, edx
xor ecx, ecx
mov esi, dword [ebp + 0x10]
mov ebx, dword [ebp + 0x14]
nop word cs:[eax + eax]
nop
mov edx, eax
mov eax, ecx
shl eax, 6
prefetcht0 byte [edi + eax + 0x140]
movdqu xmm5, xmmword [edi + eax]
movups xmm4, xmmword [edi + eax + 0x10]
movaps xmmword [esp + 0x10], xmm4
movdqu xmm6, xmmword [ebx + ecx*8]
pxor xmm6, xmm5
pshufd xmm4, xmm6, 0xf5
pmuludq xmm4, xmm6
movdqu xmm6, xmmword [ebx + ecx*8 + 0x10]
pshufd xmm7, xmm5, 0x4e
paddq xmm7, xmm3
paddq xmm7, xmm4
movdqa xmm4, xmmword [esp + 0x10]
pxor xmm6, xmm4
pshufd xmm3, xmm6, 0xf5
pmuludq xmm3, xmm6
pshufd xmm6, xmm4, 0x4e
paddq xmm6, xmm2
paddq xmm6, xmm3
movdqu xmm2, xmmword [edi + eax + 0x20]
movdqu xmm3, xmmword [ebx + ecx*8 + 0x20]
pxor xmm3, xmm2
pshufd xmm4, xmm3, 0xf5
pmuludq xmm4, xmm3
pshufd xmm5, xmm2, 0x4e
paddq xmm5, xmm1
paddq xmm5, xmm4
movdqu xmm1, xmmword [edi + eax + 0x30]
mov eax, edx
movdqu xmm2, xmmword [ebx + ecx*8 + 0x30]
pxor xmm2, xmm1
pshufd xmm3, xmm2, 0xf5
pmuludq xmm3, xmm2
pshufd xmm4, xmm1, 0x4e
paddq xmm4, xmm0
paddq xmm4, xmm3
add ecx, 1
movdqa xmm0, xmm4
movdqa xmm1, xmm5
movdqa xmm2, xmm6
movdqa xmm3, xmm7
cmp ecx, eax
jne 0x4f0050
mov eax, dword [ebp + 0xc]
movdqu xmm0, xmmword [eax + esi - 0x40]
mov ecx, dword [ebp + 0x18]
movdqu xmm1, xmmword [ebx + ecx - 0x47]
pxor xmm1, xmm0
pshufd xmm2, xmm1, 0xf5
pmuludq xmm2, xmm1
pshufd xmm0, xmm0, 0x4e
paddq xmm0, xmm2
paddq xmm0, xmm7
movdqa xmmword [esp + 0xa0], xmm0
movdqu xmm0, xmmword [eax + esi - 0x30]
movdqu xmm1, xmmword [ebx + ecx - 0x37]
pxor xmm1, xmm0
pshufd xmm2, xmm1, 0xf5
pmuludq xmm2, xmm1
pshufd xmm0, xmm0, 0x4e
paddq xmm0, xmm2
paddq xmm0, xmm6
movdqa xmmword [esp + 0xb0], xmm0
movdqu xmm0, xmmword [eax + esi - 0x20]
movdqu xmm1, xmmword [ebx + ecx - 0x27]
pxor xmm1, xmm0
pshufd xmm2, xmm1, 0xf5
pmuludq xmm2, xmm1
pshufd xmm0, xmm0, 0x4e
paddq xmm0, xmm2
paddq xmm0, xmm5
movdqa xmmword [esp + 0xc0], xmm0
movdqu xmm0, xmmword [eax + esi - 0x10]
movdqu xmm1, xmmword [ebx + ecx - 0x17]
pxor xmm1, xmm0
pshufd xmm2, xmm1, 0xf5
pmuludq xmm2, xmm1
pshufd xmm0, xmm0, 0x4e
paddq xmm0, xmm2
paddq xmm0, xmm4
mov ecx, 0x85ebca87
mov eax, esi
mul ecx
movdqa xmmword [esp + 0xd0], xmm0
imul edi, esi, 0x9e3779b1
add edi, edx
lea edx, [ebx + 0xb]
lea ecx, [esp + 0xa0]
push edi
push eax
call fcn.004ee340
add esp, 8
mov ecx, esi
mov esi, dword [ebp + 8]
mov dword [esi + 4], edx
mov dword [esi], eax
mov eax, dword [ebp + 0x18]
lea edi, [ebx + eax]
add edi, 0xffffffb5
mov edx, 0x27d4eb4f
mov eax, ecx
mul edx
imul ebx, ecx, 0xc2b2ae3d
add ebx, edx
not eax
not ebx
lea ecx, [esp + 0xa0]
mov edx, edi
push ebx
mov ebx, esi
push eax
call fcn.004ee340
add esp, 8
mov dword [esi + 0xc], edx
mov dword [esi + 8], eax
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret