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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0xc4
mov eax, dword [0x4a151c]
xor eax, esp
mov dword [esp + 0xc0], eax
mov edi, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
mov ebx, dword [ebp + 0x10]
cmp dword [ebp + 0x14], 0
je 0x40ea59
mov eax, dword [ebp + 0x14]
mov edx, eax
neg edx
and edx, 0xf
cmp dword [edx + eax], 0x2052494a
je 0x40e06d
mov eax, 0xfffffff3
jmp 0x40ea1c
test edi, edi
je 0x40ea52
test esi, esi
je 0x40ea52
cmp dword [ebp + 0x18], 0
je 0x40ea52
test ebx, ebx
jle 0x40ea17
mov eax, dword [ebp + 0x1c]
lea ecx, [eax - 1]
cmp ecx, 0x7f
jbe 0x40e0a4
mov eax, 0xfffffc0c
jmp 0x40ea1c
mov eax, dword [ebp + 0x18]
cmp ebx, 0x10
mov ecx, dword [ebp + 0x14]
movdqu xmm0, xmmword [eax]
mov eax, dword [edx + ecx + 0x10]
movdqa xmmword [esp + 0xa0], xmm0
mov dword [esp + 0x14], eax
jl 0x40e58c
mov eax, dword [ebp + 0x1c]
mov dword [esp], ebx
mov ebx, eax
neg ebx
add ebx, 0x80
mov ecx, ebx
sar ecx, 2
shr ecx, 0x1d
sub ecx, eax
mov eax, dword [ebp + 0x14]
add ecx, 0x80
sar ecx, 3
mov dword [esp + 4], ecx
and ebx, 0x80000007
mov dword [esp + 8], ebx
lea ecx, [eax + edx + 0x20]
mov dword [esp + 0x1c], ecx
mov ebx, dword [esp]
jge 0x40e118
mov eax, dword [esp + 8]
sub eax, 1
or eax, 0xfffffff8
inc eax
mov dword [esp + 8], eax
mov dword [esp + 0x18], edx
mov edx, dword [esp + 4]
mov dword [esp], ebx
mov ebx, 0xff
mov ecx, dword [esp + 8]
shr ebx, cl
lea eax, [edx - 0xf]
shr eax, 0x1f
neg eax
mov ecx, eax
or ecx, ebx
and ebx, eax
mov dword [esp + 0x40], ecx
lea eax, [edx - 0xe]
shr eax, 0x1f
not ecx
mov dword [esp + 0x20], ecx
neg eax
mov ecx, ebx
and ebx, eax
or ecx, eax
lea eax, [edx - 0xd]
shr eax, 0x1f
mov dword [esp + 0x48], ecx
not ecx
mov dword [esp + 0x24], ecx
neg eax
mov ecx, ebx
and ebx, eax
or ecx, eax
lea eax, [edx - 0xc]
shr eax, 0x1f
mov dword [esp + 0x50], ecx
not ecx
mov dword [esp + 0x28], ecx
neg eax
mov ecx, ebx
and ebx, eax
or ecx, eax
lea eax, [edx - 0xb]
shr eax, 0x1f
mov dword [esp + 0x54], ecx
not ecx
mov dword [esp + 0x2c], ecx
neg eax
mov ecx, ebx
and ebx, eax
or ecx, eax
lea eax, [edx - 0xa]
shr eax, 0x1f
mov dword [esp + 0x5c], ecx
not ecx
mov dword [esp + 0x30], ecx
neg eax
mov ecx, ebx
and ebx, eax
or ecx, eax
lea eax, [edx - 9]
shr eax, 0x1f
mov dword [esp + 0x60], ecx
not ecx
mov dword [esp + 0x34], ecx
neg eax
mov ecx, ebx
and ebx, eax
or ecx, eax
lea eax, [edx - 8]
shr eax, 0x1f
mov dword [esp + 0x68], ecx
not ecx
mov dword [esp + 0x3c], ecx
neg eax
mov ecx, ebx
and ebx, eax
or ecx, eax
lea eax, [edx - 7]
shr eax, 0x1f
mov dword [esp + 0x6c], ecx
not ecx
mov dword [esp + 0x44], ecx
neg eax
mov ecx, ebx
and ebx, eax
or ecx, eax
lea eax, [edx - 6]
shr eax, 0x1f
mov dword [esp + 0x74], ecx
not ecx
mov dword [esp + 0x4c], ecx
neg eax
mov ecx, ebx
and ebx, eax
or ecx, eax
lea eax, [edx - 5]
shr eax, 0x1f
mov dword [esp + 0x78], ecx
not ecx
mov dword [esp + 0x58], ecx
neg eax
mov ecx, ebx
and ebx, eax
or ecx, eax
lea eax, [edx - 4]
shr eax, 0x1f
mov dword [esp + 0x80], ecx
not ecx
mov dword [esp + 0x64], ecx
neg eax
mov ecx, ebx
and ebx, eax
or ecx, eax
lea eax, [edx - 3]
shr eax, 0x1f
mov dword [esp + 0x84], ecx
not ecx
mov dword [esp + 0x70], ecx
neg eax
mov ecx, ebx
and ebx, eax
or ecx, eax
lea eax, [edx - 2]
shr eax, 0x1f
mov dword [esp + 0x8c], ecx
not ecx
mov dword [esp + 0x7c], ecx
neg eax
mov ecx, ebx
and ebx, eax
or ecx, eax
mov eax, ebx
mov dword [esp + 0x90], ecx
not ecx
mov dword [esp + 0x88], ecx
lea ecx, [edx - 1]
shr ecx, 0x1f
shr edx, 0x1f
neg ecx
neg edx
and ebx, ecx
or ebx, edx
or eax, ecx
mov ecx, ebx
mov dword [esp + 0x94], eax
not eax
not ecx
mov dword [esp + 0x38], ebx
mov ebx, dword [esp]
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], eax
nop
push 0x48fd40
push dword [esp + 0x20]
mov eax, dword [esp + 0x20]
mov edx, dword [ebp + 0x14]
push dword [eax + edx + 0xc]
lea ecx, [esp + 0xbc]
push ecx
lea eax, [esp + 0xb0]
push eax
call dword [esp + 0x28]
add esp, 0x14
test edi, 3
jne 0x40e32b
test esi, 3
jne 0x40e32b
lea edx, [esp + 0xb0]
mov eax, dword [edx]
xor eax, dword [edi]
mov dword [esi], eax
mov edx, dword [edx + 4]
xor edx, dword [edi + 4]
mov dword [esi + 4], edx
lea edx, [esp + 0xb8]
mov ecx, dword [edx]
xor ecx, dword [edi + 8]
mov dword [esi + 8], ecx
mov eax, dword [edx + 4]
xor eax, dword [edi + 0xc]
mov dword [esi + 0xc], eax
jmp 0x40e359
mov eax, dword [edi]
lea ecx, [esp + 0xb0]
xor eax, dword [ecx]
mov dword [esi], eax
mov edx, dword [edi + 4]
xor edx, dword [ecx + 4]
mov dword [esi + 4], edx
mov ecx, dword [edi + 8]
lea edx, [esp + 0xb8]
xor ecx, dword [edx]
mov dword [esi + 8], ecx
mov eax, dword [edi + 0xc]
xor eax, dword [edx + 4]
mov dword [esi + 0xc], eax
movzx edx, byte [esp + 0xaf]
add ebx, 0xfffffff0
mov eax, dword [esp + 0x40]
add edi, 0x10
add esi, 0x10
lea ecx, [edx + 1]
and edx, dword [esp + 0x20]
and eax, ecx
shr ecx, 8
or edx, eax
mov byte [esp + 0xaf], dl
movzx edx, byte [esp + 0xae]
add ecx, edx
mov eax, dword [esp + 0x48]
and edx, dword [esp + 0x24]
and eax, ecx
shr ecx, 8
or edx, eax
mov byte [esp + 0xae], dl
movzx edx, byte [esp + 0xad]
add ecx, edx
mov eax, dword [esp + 0x50]
and eax, ecx
shr ecx, 8
and edx, dword [esp + 0x28]
and ecx, 1
or edx, eax
mov byte [esp + 0xad], dl
movzx edx, byte [esp + 0xac]
add ecx, edx
mov eax, dword [esp + 0x54]
and edx, dword [esp + 0x2c]
and eax, ecx
shr ecx, 8
or edx, eax
mov byte [esp + 0xac], dl
movzx edx, byte [esp + 0xab]
add ecx, edx
mov eax, dword [esp + 0x5c]
and edx, dword [esp + 0x30]
and eax, ecx
shr ecx, 8
or edx, eax
mov byte [esp + 0xab], dl
movzx edx, byte [esp + 0xaa]
add ecx, edx
mov eax, dword [esp + 0x60]
and eax, ecx
shr ecx, 8
and edx, dword [esp + 0x34]
and ecx, 1
or edx, eax
mov byte [esp + 0xaa], dl
movzx edx, byte [esp + 0xa9]
add ecx, edx
mov eax, dword [esp + 0x68]
and edx, dword [esp + 0x3c]
and eax, ecx
shr ecx, 8
or edx, eax
mov byte [esp + 0xa9], dl
movzx edx, byte [esp + 0xa8]
add ecx, edx
mov eax, dword [esp + 0x6c]
and edx, dword [esp + 0x44]
and eax, ecx
shr ecx, 8
or edx, eax
mov byte [esp + 0xa8], dl
movzx edx, byte [esp + 0xa7]
add ecx, edx
mov eax, dword [esp + 0x74]
and eax, ecx
shr ecx, 8
and edx, dword [esp + 0x4c]
and ecx, 1
or edx, eax
mov byte [esp + 0xa7], dl
movzx edx, byte [esp + 0xa6]
add ecx, edx
mov eax, dword [esp + 0x78]
and edx, dword [esp + 0x58]
and eax, ecx
shr ecx, 8
or edx, eax
mov byte [esp + 0xa6], dl
movzx edx, byte [esp + 0xa5]
add ecx, edx
mov eax, dword [esp + 0x80]
and edx, dword [esp + 0x64]
and eax, ecx
shr ecx, 8
or edx, eax
mov byte [esp + 0xa5], dl
movzx edx, byte [esp + 0xa4]
add ecx, edx
mov eax, dword [esp + 0x84]
and eax, ecx
shr ecx, 8
and edx, dword [esp + 0x70]
and ecx, 1
or edx, eax
mov byte [esp + 0xa4], dl
movzx edx, byte [esp + 0xa3]
add ecx, edx
mov eax, dword [esp + 0x8c]
and edx, dword [esp + 0x7c]
and eax, ecx
shr ecx, 8
or edx, eax
mov byte [esp + 0xa3], dl
movzx edx, byte [esp + 0xa2]
add ecx, edx
mov eax, dword [esp + 0x90]
and edx, dword [esp + 0x88]
and eax, ecx
shr ecx, 8
or edx, eax
mov byte [esp + 0xa2], dl
movzx edx, byte [esp + 0xa1]
add ecx, edx
mov eax, dword [esp + 0x94]
and eax, ecx
shr ecx, 8
and edx, dword [esp + 0xc]
and ecx, 1
or edx, eax
movzx eax, byte [esp + 0xa0]
add ecx, eax
and eax, dword [esp + 0x10]
and ecx, dword [esp + 0x38]
or eax, ecx
mov byte [esp + 0xa1], dl
cmp ebx, 0x10
mov byte [esp + 0xa0], al
jge 0x40e2c0
mov edx, dword [esp + 0x18]
test ebx, ebx
je 0x40ea03
mov ecx, dword [ebp + 0x14]
mov dword [esp], ebx
lea ebx, [esp + 0xb0]
push 0x48fd40
lea eax, [ecx + edx + 0x20]
push eax
push dword [edx + ecx + 0xc]
push ebx
lea edx, [esp + 0xb0]
push edx
mov ebx, dword [esp + 0x14]
call dword [esp + 0x28]
add esp, 0x14
test ebx, ebx
jle 0x40e70a
cmp ebx, 6
jle 0x40e698
cmp edi, esi
jbe 0x40e5e0
mov eax, edi
sub eax, esi
cmp eax, ebx
jge 0x40e5f4
cmp esi, edi
jbe 0x40e698
mov eax, esi
sub eax, edi
cmp eax, ebx
jl 0x40e698
cmp ebx, 0x10
jl 0x40ea3c
mov edx, ebx
and edx, 0xfffffff0
test esi, 0xf
je 0x40e63c
xor eax, eax
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
movdqu xmm0, xmmword [edi + eax]
pxor xmm0, xmmword [esp + eax + 0xb0]
movdqu xmmword [eax + esi], xmm0
add eax, 0x10
cmp eax, edx
jb 0x40e620
jmp 0x40e65a
xor eax, eax
nop
movdqu xmm0, xmmword [edi + eax]
pxor xmm0, xmmword [esp + eax + 0xb0]
movdqa xmmword [eax + esi], xmm0
add eax, 0x10
cmp eax, edx
jb 0x40e640
cmp edx, ebx
jae 0x40e70a
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
nop dword [eax]
movzx eax, byte [edx + edi]
movzx ecx, byte [esp + edx + 0xb0]
xor eax, ecx
mov byte [edx + esi], al
inc edx
cmp edx, ebx
jb 0x40e680
jmp 0x40e70a
mov edx, ebx
shr edx, 1
test edx, edx
jbe 0x40ea43
mov dword [esp], ebx
xor eax, eax
mov ebx, edx
nop dword [eax + eax]
nop dword [eax]
nop word [eax + eax]
movzx edx, byte [edi + eax*2]
movzx ecx, byte [esp + eax*2 + 0xb0]
xor edx, ecx
mov byte [esi + eax*2], dl
movzx ecx, byte [edi + eax*2 + 1]
movzx edx, byte [esp + eax*2 + 0xb1]
xor ecx, edx
mov byte [esi + eax*2 + 1], cl
inc eax
cmp eax, ebx
jb 0x40e6c0
mov ebx, dword [esp]
lea eax, [eax + eax + 1]
lea edx, [eax - 1]
cmp ebx, edx
jbe 0x40e70a
movzx edx, byte [edi + eax - 1]
movzx edi, byte [esp + eax + 0xaf]
xor edx, edi
mov byte [eax + esi - 1], dl
mov edx, dword [ebp + 0x1c]
mov ecx, edx
neg ecx
add ecx, 0x80
mov eax, ecx
sar eax, 2
shr eax, 0x1d
sub eax, edx
add eax, 0x80
sar eax, 3
and ecx, 0x80000007
jge 0x40e738
sub ecx, 1
or ecx, 0xfffffff8
inc ecx
mov edi, 0xff
lea esi, [eax - 0xf]
shr esi, 0x1f
neg esi
shr edi, cl
mov ebx, esi
movzx edx, byte [esp + 0xaf]
or ebx, edi
mov ecx, ebx
and edi, esi
not ecx
lea esi, [edx + 1]
and edx, ecx
and ebx, esi
or edx, ebx
lea ebx, [eax - 0xe]
shr ebx, 0x1f
mov byte [esp + 0xaf], dl
neg ebx
mov edx, edi
and edi, ebx
or edx, ebx
shr esi, 8
mov ecx, edx
movzx ebx, byte [esp + 0xae]
add esi, ebx
not ecx
and edx, esi
and ebx, ecx
mov ecx, edi
or ebx, edx
lea edx, [eax - 0xd]
shr edx, 0x1f
neg edx
or ecx, edx
and edi, edx
mov byte [esp + 0xae], bl
mov ebx, ecx
shr esi, 8
not ebx
movzx edx, byte [esp + 0xad]
add esi, edx
and edx, ebx
and ecx, esi
or edx, ecx
lea ecx, [eax - 0xc]
shr ecx, 0x1f
mov byte [esp + 0xad], dl
neg ecx
mov edx, edi
and edi, ecx
shr esi, 8
or edx, ecx
and esi, 1
mov ebx, edx
movzx ecx, byte [esp + 0xac]
add esi, ecx
not ebx
and edx, esi
and ecx, ebx
mov ebx, edi
or ecx, edx
lea edx, [eax - 0xb]
shr edx, 0x1f
neg edx
or ebx, edx
and edi, edx
mov byte [esp + 0xac], cl
mov ecx, ebx
shr esi, 8
not ecx
movzx edx, byte [esp + 0xab]
add esi, edx
and edx, ecx
and ebx, esi
or edx, ebx
lea ebx, [eax - 0xa]
shr ebx, 0x1f
mov byte [esp + 0xab], dl
neg ebx
mov edx, edi
and edi, ebx
or edx, ebx
shr esi, 8
mov ecx, edx
movzx ebx, byte [esp + 0xaa]
add esi, ebx
not ecx
and edx, esi
and ebx, ecx
mov ecx, edi
or ebx, edx
lea edx, [eax - 9]
shr edx, 0x1f
neg edx
shr esi, 8
or ecx, edx
mov byte [esp + 0xaa], bl
and esi, 1
mov ebx, ecx
and edi, edx
movzx edx, byte [esp + 0xa9]
add esi, edx
not ebx
and ecx, esi
and edx, ebx
or edx, ecx
lea ecx, [eax - 8]
shr ecx, 0x1f
mov byte [esp + 0xa9], dl
neg ecx
mov edx, edi
and edi, ecx
or edx, ecx
shr esi, 8
mov ebx, edx
movzx ecx, byte [esp + 0xa8]
add esi, ecx
not ebx
and edx, esi
and ecx, ebx
mov ebx, edi
or ecx, edx
lea edx, [eax - 7]
shr edx, 0x1f
neg edx
or ebx, edx
and edi, edx
mov byte [esp + 0xa8], cl
mov ecx, ebx
shr esi, 8
not ecx
movzx edx, byte [esp + 0xa7]
add esi, edx
and edx, ecx
and ebx, esi
or edx, ebx
lea ebx, [eax - 6]
shr ebx, 0x1f
mov byte [esp + 0xa7], dl
neg ebx
mov edx, edi
and edi, ebx
shr esi, 8
or edx, ebx
and esi, 1
mov ecx, edx
movzx ebx, byte [esp + 0xa6]
add esi, ebx
not ecx
and edx, esi
and ebx, ecx
mov ecx, edi
or ebx, edx
lea edx, [eax - 5]
shr edx, 0x1f
neg edx
or ecx, edx
and edi, edx
mov byte [esp + 0xa6], bl
mov ebx, ecx
shr esi, 8
not ebx
movzx edx, byte [esp + 0xa5]
add esi, edx
and edx, ebx
and ecx, esi
or edx, ecx
lea ecx, [eax - 4]
shr ecx, 0x1f
mov byte [esp + 0xa5], dl
neg ecx
mov edx, edi
and edi, ecx
or edx, ecx
shr esi, 8
mov ebx, edx
movzx ecx, byte [esp + 0xa4]
add esi, ecx
not ebx
and edx, esi
and ecx, ebx
mov ebx, edi
or ecx, edx
lea edx, [eax - 3]
shr edx, 0x1f
neg edx
shr esi, 8
or ebx, edx
mov byte [esp + 0xa4], cl
and esi, 1
mov ecx, ebx
and edi, edx
movzx edx, byte [esp + 0xa3]
add esi, edx
not ecx
and ebx, esi
and edx, ecx
mov ecx, edi
or edx, ebx
lea ebx, [eax - 2]
shr ebx, 0x1f
neg ebx
or ecx, ebx
and edi, ebx
mov byte [esp + 0xa3], dl
mov edx, ecx
shr esi, 8
not edx
movzx ebx, byte [esp + 0xa2]
add esi, ebx
and ebx, edx
and ecx, esi
or ebx, ecx
lea ecx, [eax - 1]
shr ecx, 0x1f
mov edx, edi
neg ecx
shr eax, 0x1f
or edx, ecx
neg eax
and edi, ecx
shr esi, 8
or edi, eax
mov byte [esp + 0xa2], bl
mov ebx, edx
movzx eax, byte [esp + 0xa1]
add esi, eax
not ebx
and edx, esi
shr esi, 8
and eax, ebx
and esi, 1
or eax, edx
mov byte [esp + 0xa1], al
movzx eax, byte [esp + 0xa0]
add esi, eax
and esi, edi
not edi
and eax, edi
or eax, esi
mov byte [esp + 0xa0], al
mov eax, dword [ebp + 0x18]
movdqa xmm0, xmmword [esp + 0xa0]
movdqu xmmword [eax], xmm0
xor eax, eax
jmp 0x40ea1c
mov eax, 0xfffffff1
mov ecx, dword [esp + 0xc0]
xor ecx, esp
cmp ecx, dword [0x4a151c]
jne 0x40ea4d
add esp, 0xc4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x18
xor edx, edx
jmp 0x40e65a
mov eax, 1
jmp 0x40e6f0
call fcn.004720f2
mov eax, 0xfffffff8
jmp 0x40ea1c
mov ecx, dword [esp + 0xc0]
xor ecx, esp
cmp ecx, dword [0x4a151c]
jne 0x40ea4d
mov eax, 0xfffffff8
add esp, 0xc4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x18