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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x11c
cmp dword [ecx + 0x20], 0
je 0x40e8b7
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.0040ad60
add esp, 4
mov eax, dword [esi + 0x10]
mov dword [esp + 0xc], eax
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x14], eax
mov dword [esp + 0x80], 0x14949998
mov word [esp + 0x84], 0
mov byte [esp + 0x86], 0
mov eax, 0x66
mov ecx, 0x99
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax + 0x1a]
mov edx, ecx
xor edx, eax
and edx, edi
xor edx, eax
add dl, 2
mov byte [esp + eax + 0x1a], dl
inc eax
dec ecx
cmp eax, 0x6d
jne 0x40e370
mov eax, dword [esp + 0x80]
push dword [eax + 0x14]
call fcn.0040d800
add esp, 4
call fcn.0040d810
mov dword [esp + 0x1c], eax
mov ebx, eax
and ebx, 0xf
mov edi, 0xfffffff0
mov ebp, 0x38e38e39
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
call fcn.0040d810
mov ecx, eax
imul ebp
mov eax, edx
shr eax, 0x1f
sar edx, 3
add edx, eax
shl edx, 2
lea eax, [edx + edx*8]
neg eax
movzx eax, byte [ecx + eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [esi + edi + 0x70], al
inc edi
cmp ebx, edi
jne 0x40e3c0
mov dword [esp + 0x18], ebx
mov byte [esi + edi + 0x70], 0
mov dword [esp + 8], esi
movzx eax, byte [esi]
imul ecx, eax, 0xcd
shr ecx, 0xa
and ecx, 0xfffffffe
lea ecx, [ecx + ecx*4]
sub al, cl
movzx eax, al
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [esp + 2], al
mov byte [esp + 3], 0
mov eax, dword [esp + 0xc]
add eax, 0x400
push eax
call fcn.0040cf60
add esp, 4
mov dword [esp + 4], eax
mov dword [esp + 0x80], 0x9b97a290
mov byte [esp + 0x84], 0x3c
mov dword [esp + 0x85], 0
mov word [esp + 0x89], 0
mov eax, 0x76
mov edx, 0x89
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + edx - 9]
lea ebx, [edx + 1]
mov ebp, ebx
and ebp, edi
mov ecx, ebp
and ecx, 2
mov esi, ebp
or ebp, 2
imul ebp, ecx
xor ecx, 2
and esi, 0xffffff9d
imul esi, ecx
add ebp, esi
mov ecx, edx
sub ecx, ebp
lea esi, [eax + ebp]
and ecx, edi
not edi
and edi, esi
sub ecx, edi
add cl, 0x4e
mov byte [esp + edx - 9], cl
dec eax
mov edx, ebx
cmp eax, 0x6b
jne 0x40e470
lea edi, [esp + 0x80]
mov esi, dword [esp + 8]
mov ecx, esi
push 0x44ac9c
push edi
mov ebx, dword [esp + 0xc]
push ebx
call fcn.0040dbe0
mov dword [esp + 0x80], 0x9ffaf0e8
mov word [esp + 0x84], 0
mov byte [esp + 0x86], 0
mov eax, 0x1449999a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x1449991a]
xor ecx, eax
add ecx, 0x9a8ffffd
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov byte [esp + eax - 0x1449991a], cl
inc eax
cmp eax, 0x144999a1
jne 0x40e500
lea eax, [esp + 2]
mov ecx, esi
push eax
push edi
push ebx
call fcn.0040dbe0
mov eax, dword [str.xAeOdp__mainteam]
mov dword [esp + 0x10], eax
mov dword [esp + 0x80], 0x936e6864
mov word [esp + 0x84], 0
mov byte [esp + 0x86], 0
xor edx, edx
mov ecx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edx + 0x80]
mov esi, edx
and esi, 4
mov ebx, edx
xor ebx, 0x625751dc
lea ebp, [ebx + esi*2]
mov esi, eax
not esi
and esi, ebp
mov ebx, ebp
xor ebx, eax
or ebp, eax
sub eax, ebx
add eax, esi
not eax
and eax, ebp
add al, 0xb4
mov byte [esp + edx + 0x80], al
mov eax, edx
or eax, 1
xor ecx, 0x7ffffffe
and ecx, eax
add ecx, ecx
mov eax, ecx
or eax, edx
xor eax, 1
and ecx, edx
add ecx, eax
mov edx, ecx
cmp ecx, 7
jb 0x40e570
mov ebx, dword [esp + 8]
mov ecx, ebx
push dword [esp + 0x10]
push edi
mov ebp, dword [esp + 0xc]
push ebp
call fcn.0040dbe0
mov dword [esp + 0x80], 0xf5e8f0e1
mov dword [esp + 0x84], 0xd8cdd4f9
mov dword [esp + 0x88], 0xcacbccd9
mov byte [esp + 0x8c], 0xa0
mov word [esp + 0x8d], 0
mov byte [esp + 0x8f], 0
mov eax, 0xf45c251b
mov ecx, 0xe4
movzx edx, byte [esp + eax + 0xba3db65]
mov esi, ecx
xor esi, eax
and esi, edx
xor esi, eax
mov edx, esi
and edx, 1
xor esi, 1
lea edx, [esi + edx*2]
add dl, 0x78
mov byte [esp + eax + 0xba3db65], dl
inc eax
dec ecx
cmp eax, 0xf45c252b
jne 0x40e620
mov dword [esp + 0x20], 0xf19aaaaf
mov byte [esp + 0x24], 0
xor eax, eax
nop
nop
nop
mov ecx, eax
add cl, 0xfd
xor cl, byte [esp + eax + 0x20]
add cl, 0xf
mov byte [esp + eax + 0x20], cl
mov ecx, eax
not ecx
or ecx, 1
add ecx, eax
or eax, 1
add eax, ecx
inc eax
cmp eax, 5
jb 0x40e660
lea eax, [esp + 0x20]
mov ecx, ebx
push edi
push eax
push ebp
call fcn.0040dbe0
mov dword [esp + 0x80], 0x3602043a
mov byte [esp + 0x84], 0x90
mov dword [esp + 0x85], 0
mov word [esp + 0x89], 0
mov eax, 0x25
mov ecx, 0xda
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax + 0x5b]
not esi
mov edx, eax
or edx, esi
or esi, ecx
not edx
add edx, eax
and edx, esi
add dl, 0x47
mov byte [esp + eax + 0x5b], dl
inc eax
dec ecx
cmp eax, 0x30
jne 0x40e6d0
mov ecx, ebx
push dword [esp + 0xc]
push dword [esp + 0x18]
push edi
push ebp
call fcn.0040dea0
mov dword [esp + 0x20], 0x13a51153
mov dword [esp + 0x24], 0x6fe26dda
mov dword [esp + 0x28], 0x6bdc69d5
mov dword [esp + 0x2c], 0x671365e8
mov dword [esp + 0x30], 0x63eb61cc
mov dword [esp + 0x34], 0x7fc37dcc
mov dword [esp + 0x38], 0x7b1a7932
mov dword [esp + 0x3c], 0x77fb75c1
mov dword [esp + 0x40], 0x73fe71c4
mov dword [esp + 0x44], 0x4ffe4df5
mov dword [esp + 0x48], 0x4bf849e9
mov dword [esp + 0x4c], 0x473145c8
mov dword [esp + 0x50], 0x43f541fe
mov dword [esp + 0x54], 0x5feb5dee
mov dword [esp + 0x58], 0x5be6592d
mov dword [esp + 0x5c], 0x57da55f5
mov dword [esp + 0x60], 0x531951f1
mov dword [esp + 0x64], 0xaf0cadcc
mov dword [esp + 0x68], 0xab27a91f
mov dword [esp + 0x6c], 0xa71aa512
mov dword [esp + 0x70], 0xa310a101
mov dword [esp + 0x74], 0xbffbbd35
mov word [esp + 0x78], 0xb9b8
mov byte [esp + 0x7e], 0
mov dword [esp + 0x7a], 0
mov eax, 0x3c
mov ecx, 0xc3
movzx edx, byte [esp + eax - 0x1c]
mov esi, eax
or esi, edx
not edx
or edx, ecx
and edx, esi
add dl, 0xd4
mov byte [esp + eax - 0x1c], dl
inc eax
dec ecx
cmp eax, 0x9b
jne 0x40e7d0
movzx eax, word [esp + 0x20]
test ax, ax
je 0x40e821
lea edi, [esp + 0x80]
lea ecx, [esp + 0x22]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], ax
add edi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e810
mov word [edi], 0
mov eax, dword [esp + 0x1c]
and eax, 7
mov ebp, eax
mov ecx, dword [esp + 0x18]
sub ecx, eax
lea edx, [ecx*2 + 0x20]
xor eax, eax
xor ecx, ecx
movsx esi, byte [ebx + ecx + 0x60]
mov word [edi + eax], si
movsx esi, byte [ebx + ecx + 0x61]
mov word [edi + eax + 2], si
movsx esi, byte [ebx + ecx + 0x62]
mov word [edi + eax + 4], si
movsx esi, byte [ebx + ecx + 0x63]
mov word [edi + eax + 6], si
movsx esi, byte [ebx + ecx + 0x64]
mov word [edi + eax + 8], si
movsx esi, byte [ebx + ecx + 0x65]
mov word [edi + eax + 0xa], si
movsx esi, byte [ebx + ecx + 0x66]
mov word [edi + eax + 0xc], si
movsx esi, byte [ebx + ecx + 0x67]
mov word [edi + eax + 0xe], si
add ecx, 8
add eax, 0x10
cmp edx, eax
jne 0x40e840
test ebp, ebp
je 0x40e8be
neg eax
nop
movsx edx, byte [ebx + ecx + 0x60]
mov word [edi + ecx*2], dx
inc ecx
add eax, 0xfffffffe
dec ebp
jne 0x40e8a0
sub edi, eax
lea ecx, [edi - 2]
jmp 0x40e8c6
mov bl, 1
jmp 0x40e969
lea ecx, [edi + eax]
add ecx, 0xfffffffe
add edi, eax
mov word [edi], 0xd
mov dword [ecx + 4], 0xa
mov eax, dword [ebx + 0x80]
mov dword [esp + 0x20], 0x8323816f
mov dword [esp + 0x24], 0x872f8534
mov word [esp + 0x28], 0x8988
mov dword [esp + 0x2a], 0
mov byte [esp + 0x2e], 0
xor ecx, ecx
mov esi, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x20]
xor dl, cl
xor dl, 0x60
add dl, 0x20
mov byte [esp + ecx + 0x20], dl
inc ecx
cmp ecx, 0xf
jne 0x40e910
lea ecx, [esp + 0x80]
push 0x493e0
push eax
push esi
push 0
push 0
push ecx
lea eax, [esp + 0x38]
push eax
call fcn.00410c20
add esp, 0x1c
mov ebx, eax
push esi
call fcn.0040cf70
add esp, 4
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x80]
add dword [ecx + 4], eax
mov dword [ecx + 0x80], 0
mov eax, ebx
add esp, 0x11c
pop esi
pop edi
pop ebx
pop ebp
ret