Function at 0x4ea050
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xb0
mov edi, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
cmp edx, 0x10
ja 0x4ea11c
cmp edx, 9
jb 0x4ea9bc
mov edx, dword [edi + 0x20]
mov eax, dword [edi + 0x24]
xor edx, dword [edi + 0x18]
xor eax, dword [edi + 0x1c]
mov esi, dword [edi + 0x30]
xor esi, dword [edi + 0x28]
mov ebx, dword [edi + 0x34]
xor ebx, dword [edi + 0x2c]
mov edi, eax
xor edi, dword [ecx + 4]
mov dword [esp + 0x20], edi
xor edx, dword [ecx]
mov eax, dword [ebp + 0xc]
xor ebx, dword [ecx + eax - 4]
xor esi, dword [ecx + eax - 8]
mov ecx, eax
mov eax, edi
bswap eax
add eax, ecx
mov edi, edx
mov ecx, edx
bswap ecx
adc ecx, 0
add eax, esi
mov dword [esp + 0x10], eax
adc ecx, ebx
mov dword [esp + 4], ecx
mov eax, esi
mul edx
mov dword [esp + 0x50], edx
mov dword [esp + 8], eax
mov eax, esi
mov ecx, dword [esp + 0x20]
mul ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x30], eax
mov eax, ebx
mul edi
mov edi, edx
mov esi, eax
mov eax, ebx
mul ecx
mov ecx, edx
add esi, dword [esp + 0x30]
adc edi, 0
add esi, dword [esp + 0x50]
adc edi, 0
add eax, dword [esp + 0x40]
adc ecx, 0
add eax, edi
adc ecx, 0
xor ecx, esi
xor eax, dword [esp + 8]
add eax, dword [esp + 0x10]
adc ecx, dword [esp + 4]
jmp 0x4ea4bd
cmp edx, 0x80
ja 0x4ea4e7
mov ebx, ecx
mov ecx, 0x85ebca87
mov eax, edx
mul ecx
imul esi, dword [ebp + 0xc], 0x9e3779b1
add esi, edx
mov ecx, dword [ebp + 0xc]
cmp ecx, 0x21
jb 0x4ea3e8
cmp ecx, 0x41
jb 0x4ea30e
cmp ecx, 0x61
jb 0x4ea234
movq xmm0, qword [edi + 0x70]
movq xmm2, qword [edi + 0x60]
punpcklqdq xmm2, xmm0
movq xmm0, qword [ebx + ecx - 0x40]
movq xmm1, qword [ebx + 0x30]
punpcklqdq xmm1, xmm0
pxor xmm1, xmm2
movq xmm0, qword [edi + 0x78]
movq xmm3, qword [edi + 0x68]
punpcklqdq xmm3, xmm0
movq xmm0, qword [ebx + ecx - 0x38]
movq xmm2, qword [ebx + 0x38]
punpcklqdq xmm2, xmm0
pxor xmm2, xmm3
movdqa xmm0, xmm2
pmuludq xmm0, xmm1
movdqa xmm4, xmm1
psrlq xmm4, 0x20
movdqa xmm3, xmm2
pmuludq xmm3, xmm4
psrlq xmm2, 0x20
pmuludq xmm1, xmm2
pmuludq xmm2, xmm4
movdqa xmm4, xmm0
psrlq xmm4, 0x20
paddq xmm4, xmm1
movdqa xmm5, xmmword [0x686500]
movdqa xmm1, xmm3
pand xmm1, xmm5
paddq xmm1, xmm4
psrlq xmm3, 0x20
paddq xmm3, xmm2
movdqa xmm2, xmm1
psrlq xmm2, 0x20
paddq xmm2, xmm3
psllq xmm1, 0x20
pand xmm0, xmm5
por xmm0, xmm1
pxor xmm0, xmm2
pshufd xmm1, xmm0, 0x55
movd ecx, xmm0
add ecx, eax
movd edx, xmm1
adc edx, esi
pshufd xmm1, xmm0, 0xff
pshufd xmm0, xmm0, 0xee
movd eax, xmm0
add eax, ecx
movd esi, xmm1
adc esi, edx
mov ecx, dword [ebp + 0xc]
movq xmm0, qword [edi + 0x50]
movq xmm2, qword [edi + 0x40]
punpcklqdq xmm2, xmm0
movq xmm0, qword [ebx + ecx - 0x30]
movq xmm1, qword [ebx + 0x20]
punpcklqdq xmm1, xmm0
pxor xmm1, xmm2
movq xmm0, qword [edi + 0x58]
movq xmm3, qword [edi + 0x48]
punpcklqdq xmm3, xmm0
movq xmm0, qword [ebx + ecx - 0x28]
movq xmm2, qword [ebx + 0x28]
punpcklqdq xmm2, xmm0
pxor xmm2, xmm3
movdqa xmm0, xmm2
pmuludq xmm0, xmm1
movdqa xmm4, xmm1
psrlq xmm4, 0x20
movdqa xmm3, xmm2
pmuludq xmm3, xmm4
psrlq xmm2, 0x20
pmuludq xmm1, xmm2
pmuludq xmm2, xmm4
movdqa xmm4, xmm0
psrlq xmm4, 0x20
paddq xmm4, xmm1
movdqa xmm5, xmmword [0x686500]
movdqa xmm1, xmm3
pand xmm1, xmm5
paddq xmm1, xmm4
psrlq xmm3, 0x20
paddq xmm3, xmm2
movdqa xmm2, xmm1
psrlq xmm2, 0x20
paddq xmm2, xmm3
psllq xmm1, 0x20
pand xmm0, xmm5
por xmm0, xmm1
pxor xmm0, xmm2
pshufd xmm1, xmm0, 0x55
movd ecx, xmm0
add ecx, eax
movd edx, xmm1
adc edx, esi
pshufd xmm1, xmm0, 0xff
pshufd xmm0, xmm0, 0xee
movd eax, xmm0
add eax, ecx
movd esi, xmm1
adc esi, edx
mov ecx, dword [ebp + 0xc]
movq xmm0, qword [edi + 0x30]
movq xmm2, qword [edi + 0x20]
punpcklqdq xmm2, xmm0
movq xmm0, qword [ebx + ecx - 0x20]
movq xmm1, qword [ebx + 0x10]
punpcklqdq xmm1, xmm0
pxor xmm1, xmm2
movq xmm0, qword [edi + 0x38]
movq xmm3, qword [edi + 0x28]
punpcklqdq xmm3, xmm0
movq xmm0, qword [ebx + ecx - 0x18]
movq xmm2, qword [ebx + 0x18]
punpcklqdq xmm2, xmm0
pxor xmm2, xmm3
movdqa xmm0, xmm2
pmuludq xmm0, xmm1
movdqa xmm4, xmm1
psrlq xmm4, 0x20
movdqa xmm3, xmm2
pmuludq xmm3, xmm4
psrlq xmm2, 0x20
pmuludq xmm1, xmm2
pmuludq xmm2, xmm4
movdqa xmm4, xmm0
psrlq xmm4, 0x20
paddq xmm4, xmm1
movdqa xmm5, xmmword [0x686500]
movdqa xmm1, xmm3
pand xmm1, xmm5
paddq xmm1, xmm4
psrlq xmm3, 0x20
paddq xmm3, xmm2
movdqa xmm2, xmm1
psrlq xmm2, 0x20
paddq xmm2, xmm3
psllq xmm1, 0x20
pand xmm0, xmm5
por xmm0, xmm1
pxor xmm0, xmm2
pshufd xmm1, xmm0, 0x55
movd ecx, xmm0
add ecx, eax
movd edx, xmm1
adc edx, esi
pshufd xmm1, xmm0, 0xff
pshufd xmm0, xmm0, 0xee
movd eax, xmm0
add eax, ecx
movd esi, xmm1
adc esi, edx
mov ecx, dword [ebp + 0xc]
movq xmm0, qword [edi + 0x10]
movq xmm2, qword [edi]
punpcklqdq xmm2, xmm0
movq xmm0, qword [ebx + ecx - 0x10]
movq xmm1, qword [ebx]
punpcklqdq xmm1, xmm0
pxor xmm1, xmm2
movq xmm0, qword [edi + 0x18]
movq xmm3, qword [edi + 8]
punpcklqdq xmm3, xmm0
movq xmm0, qword [ebx + ecx - 8]
movq xmm2, qword [ebx + 8]
punpcklqdq xmm2, xmm0
pxor xmm2, xmm3
movdqa xmm0, xmm2
pmuludq xmm0, xmm1
movdqa xmm4, xmm1
psrlq xmm4, 0x20
movdqa xmm3, xmm2
pmuludq xmm3, xmm4
psrlq xmm2, 0x20
pmuludq xmm1, xmm2
pmuludq xmm2, xmm4
movdqa xmm4, xmm0
psrlq xmm4, 0x20
paddq xmm4, xmm1
movdqa xmm5, xmmword [0x686500]
movdqa xmm1, xmm3
pand xmm1, xmm5
paddq xmm1, xmm4
psrlq xmm3, 0x20
paddq xmm3, xmm2
movdqa xmm2, xmm1
psrlq xmm2, 0x20
paddq xmm2, xmm3
psllq xmm1, 0x20
pand xmm0, xmm5
por xmm0, xmm1
pxor xmm0, xmm2
pshufd xmm1, xmm0, 0x55
movd edx, xmm1
movd edi, xmm0
add edi, eax
adc edx, esi
pshufd xmm1, xmm0, 0xff
movd ecx, xmm1
pshufd xmm0, xmm0, 0xee
movd eax, xmm0
add eax, edi
adc ecx, edx
imul edi, ecx, 0x9e3779f9
shr ecx, 5
xor ecx, eax
mov edx, 0x9e3779f9
mov eax, ecx
mul edx
mov esi, edx
imul edx, ecx, 0x16566791
add edx, esi
add edx, edi
xor eax, edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
cmp edx, 0xf0
ja 0x4ea4fe
push 0
push 0
push edi
call fcn.004f4dd0
add esp, 0xc
jmp 0x4ea4df
mov eax, dword [ebp + 0x14]
lea ebx, [eax - 0x40]
mov dword [esp + 0x20], ebx
shr ebx, 3
mov ecx, ebx
shl ecx, 6
lea esi, [edx - 1]
mov eax, esi
xor edx, edx
div ecx
mov dword [esp + 4], edx
mov dword [esp + 0x10], ecx
cmp ecx, esi
mov dword [esp + 0xc], eax
jbe 0x4ea54e
movdqa xmm3, xmmword [0x686470]
movdqa xmm2, xmmword [0x686480]
movdqa xmm1, xmmword [0x686490]
movdqa xmm0, xmmword [0x6864a0]
jmp 0x4ea7d4
cmp eax, 2
mov ecx, 1
cmovae ecx, eax
mov dword [esp + 8], ecx
mov eax, dword [ebp + 0x14]
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 + 0x20], 8
jae 0x4ea618
pxor xmm6, xmmword [0x6864c0]
pshufd xmm1, xmm6, 0xf5
movdqa xmm0, xmmword [0x6864b0]
pmuludq xmm1, xmm0
psllq xmm1, 0x20
pmuludq xmm6, xmm0
pxor xmm7, xmmword [0x6864d0]
paddq xmm6, xmm1
pshufd xmm1, xmm7, 0xf5
pmuludq xmm1, xmm0
psllq xmm1, 0x20
pmuludq xmm7, xmm0
paddq xmm7, xmm1
pxor xmm2, xmmword [0x6864e0]
pshufd xmm1, xmm2, 0xf5
pmuludq xmm1, xmm0
psllq xmm1, 0x20
pmuludq xmm2, xmm0
paddq xmm2, xmm1
pxor xmm3, xmmword [0x6864f0]
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 0x4ea7d4
movdqa xmmword [esp + 0x30], xmm3
movdqa xmmword [esp + 0x20], xmm2
xor eax, eax
movdqa xmm3, xmmword [0x686470]
movdqa xmm2, xmmword [0x686480]
movdqa xmm1, xmmword [0x686490]
movdqa xmm0, xmmword [0x6864a0]
movdqa xmm4, xmmword [0x6864b0]
mov esi, dword [ebp + 8]
movdqa xmmword [esp + 0x50], xmm6
movdqa xmmword [esp + 0x40], xmm7
nop dword [eax]
mov ecx, esi
xor edx, edx
nop word cs:[eax + eax]
nop
prefetcht0 byte [ecx + 0x140]
movdqu xmm5, xmmword [ecx]
movdqu xmm6, xmmword [edi + edx*8]
pxor xmm6, xmm5
pshufd xmm7, xmm6, 0xf5
pmuludq xmm7, xmm6
movdqu xmm6, xmmword [ecx + 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 [ecx + 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 [ecx + 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 ecx, 0x40
cmp ebx, edx
jne 0x4ea670
movdqa xmm5, xmm3
psrlq xmm5, 0x2f
movdqa xmm6, xmmword [esp + 0x50]
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 + 0x40]
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 + 0x20]
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 + 0x30]
pxor xmm5, xmm0
pmuludq xmm5, xmm4
pshufd xmm0, xmm0, 0xf5
pmuludq xmm0, xmm4
psllq xmm0, 0x20
paddq xmm0, xmm5
add eax, 1
add esi, dword [esp + 0x10]
cmp eax, dword [esp + 8]
jne 0x4ea660
cmp dword [esp + 4], 0x40
jae 0x4ea7f6
movdqa xmm4, xmm0
movdqa xmm5, xmm1
movdqa xmm6, xmm2
movdqa xmm7, xmm3
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp + 0x14]
jmp 0x4ea8da
mov ebx, dword [esp + 0xc]
imul ebx, dword [esp + 0x10]
shr dword [esp + 4], 6
add ebx, dword [ebp + 8]
xor ecx, ecx
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp + 0x14]
nop
mov edx, ecx
shl edx, 6
prefetcht0 byte [ebx + edx + 0x140]
movdqu xmm5, xmmword [ebx + edx]
movups xmm4, xmmword [ebx + edx + 0x10]
movaps xmmword [esp + 0x10], xmm4
movdqu xmm6, xmmword [edi + ecx*8]
pxor xmm6, xmm5
pshufd xmm4, xmm6, 0xf5
pmuludq xmm4, xmm6
movdqu xmm6, xmmword [edi + 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 [ebx + edx + 0x20]
movdqu xmm3, xmmword [edi + 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 [ebx + edx + 0x30]
movdqu xmm2, xmmword [edi + 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, dword [esp + 4]
jne 0x4ea810
mov ecx, dword [ebp + 8]
movdqu xmm0, xmmword [ecx + eax - 0x40]
movdqu xmm1, xmmword [edi + esi - 0x47]
pxor xmm1, xmm0
pshufd xmm2, xmm1, 0xf5
pmuludq xmm2, xmm1
pshufd xmm0, xmm0, 0x4e
paddq xmm0, xmm2
paddq xmm0, xmm7
movdqa xmmword [esp + 0x60], xmm0
movdqu xmm0, xmmword [ecx + eax - 0x30]
movdqu xmm1, xmmword [edi + esi - 0x37]
pxor xmm1, xmm0
pshufd xmm2, xmm1, 0xf5
pmuludq xmm2, xmm1
pshufd xmm0, xmm0, 0x4e
paddq xmm0, xmm2
paddq xmm0, xmm6
movdqa xmmword [esp + 0x70], xmm0
movdqu xmm0, xmmword [ecx + eax - 0x20]
movdqu xmm1, xmmword [edi + esi - 0x27]
pxor xmm1, xmm0
pshufd xmm2, xmm1, 0xf5
pmuludq xmm2, xmm1
pshufd xmm0, xmm0, 0x4e
paddq xmm0, xmm2
paddq xmm0, xmm5
movdqa xmmword [esp + 0x80], xmm0
movdqu xmm0, xmmword [ecx + eax - 0x10]
movdqu xmm1, xmmword [edi + esi - 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 esi, eax
mul ecx
movdqa xmmword [esp + 0x90], xmm0
add edi, 0xb
imul esi, esi, 0x9e3779b1
add esi, edx
lea ecx, [esp + 0x60]
mov edx, edi
push esi
push eax
call fcn.004ee340
add esp, 8
jmp 0x4ea4df
cmp edx, 4
jb 0x4eaa50
mov eax, dword [edi + 0x10]
mov esi, dword [edi + 0x14]
xor esi, dword [edi + 0xc]
xor eax, dword [edi + 8]
xor eax, dword [ecx + edx - 4]
xor esi, dword [ecx]
mov ecx, eax
shld ecx, esi, 0x18
mov edx, esi
shld edx, eax, 0x11
xor ecx, eax
xor ecx, edx
mov ebx, esi
shld ebx, eax, 0x18
mov edi, eax
shld edi, esi, 0x11
mov eax, ecx
mov edx, 0x1e98df25
mul edx
xor ebx, esi
xor ebx, edi
imul ecx, ecx, 0x9fb21c65
add ecx, edx
imul edx, ebx, 0x1e98df25
add edx, ecx
mov ecx, edx
shr ecx, 3
xor ebx, ebx
add ecx, dword [ebp + 0xc]
setb bl
xor ebx, edx
xor ecx, eax
mov eax, ecx
mov edx, 0x1e98df25
mul edx
mov esi, eax
imul eax, ecx, 0x9fb21c65
add eax, edx
imul ecx, ebx, 0x1e98df25
add ecx, eax
mov edx, ecx
shr edx, 0x1c
xor edx, ecx
mov eax, ecx
shld eax, esi, 4
xor eax, esi
jmp 0x4ea4df
mov ebx, 0xc2b2ae3d
test edx, edx
je 0x4eaabb
mov eax, edx
shr eax, 1
mov esi, ecx
movzx eax, byte [ecx + eax]
movzx ecx, byte [ecx]
movzx esi, byte [edx + esi - 1]
shl ecx, 0x10
shl edx, 8
or edx, ecx
shl eax, 0x18
or edx, eax
or edx, esi
mov esi, dword [edi + 4]
xor esi, dword [edi]
xor esi, edx
mov eax, esi
mov ecx, 0x27d4eb4f
mul ecx
mov ecx, eax
imul ebx, esi
add edx, ebx
mov esi, edx
shr esi, 0x1d
xor esi, edx
shld edx, eax, 3
xor ecx, edx
mov edx, 0x9e3779f9
imul esi, edx
mov eax, ecx
mul edx
mov edi, 0x165667b1
imul edi, ecx
add edx, edi
add edx, esi
jmp 0x4ea4dd
mov ecx, dword [edi + 0x40]
xor ecx, dword [edi + 0x38]
mov esi, dword [edi + 0x44]
xor esi, dword [edi + 0x3c]
mov eax, esi
shr eax, 1
xor eax, ecx
imul ebx, eax
mov edi, 0x27d4eb4f
mul edi
mov ecx, eax
add edx, ebx
imul esi, edi
add esi, edx
mov edi, esi
shr edi, 0x1d
xor edi, esi
shld esi, eax, 3
xor ecx, esi
mov edx, 0x9e3779f9
imul edi, edx
mov eax, ecx
mul edx
mov esi, 0x165667b1
imul esi, ecx
jmp 0x4ea4d9