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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x110
cmp dword [ecx + 0x20], 0
je 0x409d19
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00406070
add esp, 4
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 8], eax
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 dword [esp + 0xc], edx
lea eax, [edx + 0x400]
push eax
call fcn.004082d0
add esp, 4
mov dword [esp + 0x74], 0x9b97a290
mov byte [esp + 0x78], 0x3c
mov dword [esp + 0x79], 0
mov edi, 0x4a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edi + 0x2a]
mov edx, ecx
and edx, edi
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, edi
add cl, 0x8e
mov byte [esp + edi + 0x2a], cl
inc edi
cmp edi, 0x53
jne 0x4098b0
lea edx, [esp + 0x74]
mov dword [esp + 4], esi
mov ecx, esi
push 0x44aab4
push edx
mov dword [esp + 0x18], eax
push eax
call fcn.004090f0
mov dword [esp + 0x74], 0xb75a6018
mov word [esp + 0x78], 0
mov edx, 0xf529d22
mov esi, 0xdd
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + esi - 0x69]
lea eax, [esi - 0xf529dff]
lea ebp, [edx - 1]
mov ecx, ebp
or ecx, ebx
mov edi, ebp
and edi, ebx
not ecx
or ecx, edi
lea edi, [ecx + ecx]
not edi
add edi, ecx
and edi, eax
mov eax, edi
and eax, 0xf0ad62fd
mov ecx, edi
and ecx, 2
or edi, 2
imul edi, ecx
xor ecx, 2
imul ecx, eax
add edi, ecx
add edx, edi
mov eax, esi
sub eax, edi
xor edx, ebx
and eax, ebx
add eax, eax
sub eax, edx
mov ecx, eax
and ecx, 0x29
xor eax, 0x4c9d11a9
lea ecx, [eax + ecx*2]
and eax, 1
xor ecx, 1
lea eax, [ecx + eax*2]
mov byte [esp + esi - 0x69], al
inc esi
mov edx, ebp
cmp esi, 0xe3
jne 0x409910
lea eax, [esp + 2]
mov edi, dword [esp + 4]
mov ecx, edi
push eax
lea ebp, [esp + 0x78]
push ebp
mov ebx, dword [esp + 0x18]
push ebx
call fcn.004090f0
mov eax, dword [str.MeHdy4__pl8vs06]
mov dword [esp + 0x74], 0x8326282c
mov word [esp + 0x78], 0
mov ecx, 0xbe12a420
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x41ed5c54]
xor edx, ecx
mov esi, edx
and esi, 0x5f
xor edx, 0x5f
lea edx, [edx + esi*2]
inc dl
mov byte [esp + ecx + 0x41ed5c54], dl
inc ecx
cmp ecx, 0xbe12a426
jne 0x4099c0
mov ecx, edi
push eax
push ebp
push ebx
call fcn.004090f0
mov dword [esp + 0x74], 0x8d988091
mov dword [esp + 0x78], 0x98859c89
mov dword [esp + 0x7c], 0x9a9b9499
mov byte [esp + 0x80], 0x30
mov dword [esp + 0x81], 0
mov word [esp + 0x85], 0
mov eax, 0x5be3e547
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x5be3e4d3]
lea edx, [eax - 0x5be3e500]
and edx, ecx
mov esi, eax
and esi, ecx
xor ecx, eax
lea ecx, [ecx + esi*2]
add edx, edx
sub ecx, edx
add cl, 0x9d
mov byte [esp + eax - 0x5be3e4d3], cl
inc eax
cmp eax, 0x5be3e55a
jne 0x409a30
mov dword [esp + 0x14], 0x37ba4659
mov dword [esp + 0x18], 0
xor ecx, ecx
mov eax, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
or esi, 0xb6
mov edx, ecx
or edx, 0xb6
add edx, esi
add edx, ecx
inc dl
xor dl, byte [esp + ecx + 0x14]
add dl, 0x72
mov byte [esp + ecx + 0x14], dl
lea edx, [ecx + 1]
dec eax
mov ecx, edx
cmp edx, 8
jne 0x409a80
lea eax, [esp + 0x14]
mov ecx, edi
push ebp
push eax
push ebx
call fcn.004090f0
mov dword [esp + 0x74], 0x6a525052
mov byte [esp + 0x78], 0xcc
mov dword [esp + 0x79], 0
mov word [esp + 0x7d], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
mov esi, eax
and esi, 0x9c
mov edx, ecx
xor edx, 0x31
sub edx, esi
inc dl
xor dl, byte [ebp]
add dl, 6
mov byte [ebp], dl
inc ebp
dec ecx
add eax, 0xfffffffe
cmp ecx, 0xfffffff5
jne 0x409ae0
lea ebp, [esp + 0x74]
mov ecx, edi
push dword [esp + 0xc]
push dword [esp + 0xc]
push ebp
push ebx
call fcn.004093a0
mov dword [esp + 0x14], 0xb92bbbc1
mov dword [esp + 0x18], 0xbd2abf2a
mov dword [esp + 0x1c], 0xb120b327
mov dword [esp + 0x20], 0xb5e5b724
mov dword [esp + 0x24], 0xa925abc0
mov dword [esp + 0x28], 0xad35af38
mov dword [esp + 0x2c], 0xa182a3e2
mov dword [esp + 0x30], 0xa52da733
mov dword [esp + 0x34], 0xd94edb38
mov dword [esp + 0x38], 0xdd4edf47
mov dword [esp + 0x3c], 0xd144d3bb
mov dword [esp + 0x40], 0xd587d744
mov dword [esp + 0x44], 0xc95bcb4e
mov dword [esp + 0x48], 0xcd5dcf5e
mov dword [esp + 0x4c], 0xc1a6c39f
mov dword [esp + 0x50], 0xc552c7a7
mov dword [esp + 0x54], 0xf9b7fba3
mov dword [esp + 0x58], 0xfd98ffd8
mov dword [esp + 0x5c], 0xf179f36d
mov dword [esp + 0x60], 0xf592f762
mov dword [esp + 0x64], 0xe97ceb93
mov dword [esp + 0x68], 0xedadef67
mov word [esp + 0x6c], 0xe3ec
mov dword [esp + 0x6e], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x9f
xor cl, byte [esp + eax + 0x14]
add cl, 0xe5
mov byte [esp + eax + 0x14], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x5e
jb 0x409be0
movzx eax, word [esp + 0x14]
test ax, ax
je 0x409c32
lea ebp, [esp + 0x74]
lea ecx, [esp + 0x16]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebp], ax
add ebp, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x409c20
mov word [ebp], 0
movzx ecx, byte [edi + 0x60]
test cl, cl
je 0x409c62
lea eax, [edi + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [ebp], cx
add ebp, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x409c50
mov dword [ebp], 0xa000d
mov word [ebp + 4], 0
mov eax, dword [edi + 0x80]
mov dword [esp + 0x14], 0x63c361bf
mov dword [esp + 0x18], 0x67ff65f4
mov dword [esp + 0x1c], 0x5958
mov ecx, 0x1886b118
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0x1886b104]
xor edx, ecx
lea esi, [edx*2 + 0xabd150e]
add edx, 0x855e8a87
and esi, 2
mov edi, esi
and edi, edx
xor esi, edx
xor esi, 1
lea edx, [esi + edi*2]
mov byte [esp + ecx - 0x1886b104], dl
inc ecx
cmp ecx, 0x1886b124
jne 0x409ca0
lea ecx, [esp + 0x74]
push 0x493e0
push eax
push ebx
push 0
push 0
push ecx
lea eax, [esp + 0x2c]
push eax
call fcn.0040c430
add esp, 0x1c
mov ecx, ebx
mov ebx, eax
push ecx
call fcn.004082e0
add esp, 4
mov ecx, dword [esp + 4]
mov eax, dword [ecx + 0x80]
add dword [ecx + 4], eax
mov dword [ecx + 0x80], 0
jmp 0x409d1b
mov bl, 1
mov eax, ebx
add esp, 0x110
pop esi
pop edi
pop ebx
pop ebp
ret