Function at 0x409a30
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, 0xfffffff8
sub esp, 0xb0
mov edi, dword [ebp + 8]
mov dword [esp + 0x74], ecx
add edi, dword [ecx + 0x60]
mov dword [esp + 0x78], 0xd7d0de0b
mov dword [esp + 0x7c], 0x1ad2d3e5
mov dword [esp + 0x80], 0x1e2accf0
mov dword [esp + 0x84], 0x2b1fd9f6
mov dword [esp + 0x88], 0x2b151c28
mov dword [esp + 0x8c], 0x2324142d
mov dword [esp + 0x90], 0x38f73de7
mov dword [esp + 0x94], 0x80b370e
mov dword [esp + 0x98], 0xdedcd038
mov word [esp + 0x9c], 0xa1de
mov dword [esp + 0x9e], 0
mov byte [esp + 0xa2], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x2a
ja 0x409b1e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x78]
lea edx, [eax + ecx]
add eax, 0x76
and eax, ecx
add eax, eax
sub edx, eax
add edx, 0x3d9e4076
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x18]
add al, 0xc6
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x78], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x2b
jb 0x409ae0
mov dword [esp + 8], 0x63686c42
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov byte [esp + 0x14], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xc
ja 0x409b98
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
and edx, 0x2fd6da30
xor eax, 0xafd6da30
lea eax, [eax + edx*2]
xor eax, ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
mov ecx, eax
or ecx, 0xaf
and eax, 0xaf
add eax, ecx
inc al
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xd
jb 0x409b50
mov dword [esp + 0x18], 0xe0e21615
mov dword [esp + 0x1c], 0xe4ec1212
mov dword [esp + 0x20], 0x17dce215
mov dword [esp + 0x24], 0x1c1f1423
mov dword [esp + 0x28], 0xec1f2320
mov dword [esp + 0x2c], 0x2efdb7c9
mov dword [esp + 0x30], 0x3117292c
mov dword [esp + 0x34], 0x8e4f236
mov dword [esp + 0x38], 0x3e353533
mov dword [esp + 0x3c], 0x3e073d05
mov dword [esp + 0x40], 0x39ccf33c
mov dword [esp + 0x44], 0xc4030703
mov dword [esp + 0x48], 0x3c003232
mov dword [esp + 0x4c], 0x380af9c7
mov dword [esp + 0x50], 0xe5df360d
mov dword [esp + 0x54], 0x2c2c2e28
mov dword [esp + 0x58], 0x21e4d8e0
mov dword [esp + 0x5c], 0x1d232525
mov dword [esp + 0x60], 0xb0271e29
mov word [esp + 0x64], 0xf194
mov word [esp + 0x6e], 0
mov dword [esp + 0x6a], 0
mov dword [esp + 0x66], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0x57
ja 0x409ca6
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x18]
lea edx, [eax + ecx]
add edx, 0x8e69b375
add eax, 0x75
and eax, ecx
add eax, eax
mov ecx, eax
xor ecx, edx
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp], eax
mov eax, dword [esp]
add al, 0xcd
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x18], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x58
jb 0x409c60
mov eax, dword [ebp + 0xc]
movzx ecx, byte [esp + 0x18]
mov edx, edi
test cl, cl
je 0x409ccb
lea esi, [esp + 0x19]
mov edx, edi
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409cc0
mov byte [edx], 0
movzx ecx, byte [eax]
test cl, cl
je 0x409ceb
inc eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x409ce0
mov byte [edx], 0
movzx eax, byte [esp + 8]
test al, al
je 0x409d0b
lea ecx, [esp + 9]
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409d00
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
mov byte [edx], 0
movzx eax, byte [esp + 0x78]
test al, al
mov dword [esp + 0x70], edi
je 0x409d3b
lea ecx, [esp + 0x79]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409d30
mov byte [edx], 0
mov ecx, ebx
shr ecx, 2
mov eax, esi
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov edi, esi
mov esi, ebx
and esi, 0xfffffffc
add esi, edx
mov ecx, ebx
xor ecx, 3
mov eax, ebx
or eax, 0xfffffffc
and eax, ecx
add eax, edi
mov ecx, ebx
shr ecx, 1
and ecx, 1
mov ebx, eax
mov edi, esi
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov ebx, dword [ebp + 0x14]
test bl, 1
je 0x409d88
mov ecx, ebx
and ecx, 2
movzx eax, byte [eax + ecx]
mov byte [esi + ecx], al
mov dword [esp + 0x18], 0xd4d7b3b9
mov dword [esp + 0x1c], 0xc8c41a18
mov dword [esp + 0x20], 0x28f7261a
mov dword [esp + 0x24], 0x22352132
mov dword [esp + 0x28], 0x393a2e2d
mov dword [esp + 0x2c], 0x8583fe2d
mov word [esp + 0x30], 0x9b81
mov byte [esp + 0x32], 0x90
mov dword [esp + 0x33], 0
mov dword [esp + 0x37], 0
mov dword [esp + 0x3b], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x26
mov esi, dword [esp + 0x70]
ja 0x409e33
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x18]
add eax, 0xa9e47c17
xor eax, ecx
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x78]
add al, 0x5f
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x18], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x27
jb 0x409e00
add edx, ebx
movzx eax, byte [esp + 0x18]
test al, al
je 0x409e5b
lea ecx, [esp + 0x19]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409e50
mov byte [edx], 0
sub edx, esi
mov eax, dword [esp + 0x74]
add dword [eax + 0x60], edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10