Function at 0x409bb0
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, 0xf0
mov edi, dword [ebp + 8]
mov dword [esp + 0x7c], ecx
add edi, dword [ecx + 0x60]
mov dword [esp + 0x80], 0x17101ecb
mov dword [esp + 0x84], 0xda1213e5
mov dword [esp + 0x88], 0xde2a0cf0
mov dword [esp + 0x8c], 0x2bdf99f6
mov dword [esp + 0x90], 0x2bd5dc28
mov dword [esp + 0x94], 0x2324d42d
mov dword [esp + 0x98], 0x38f73de7
mov dword [esp + 0x9c], 0xc8cb37ce
mov dword [esp + 0xa0], 0x9e9c9038
mov word [esp + 0xa4], 0xa19e
mov dword [esp + 0xa6], 0
mov dword [esp + 0xaa], 0
mov dword [esp + 0xae], 0
mov dword [esp + 0xb2], 0
mov dword [esp + 0xb6], 0
mov dword [esp + 0xba], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x3d
ja 0x409cce
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
movzx edx, byte [esp + eax + 0x80]
lea eax, [ecx + edx]
add eax, 0x9ad5b516
add ecx, 0x9ad5b516
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0x66
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x80], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x3e
jb 0x409c90
mov word [esp + 0xdc], 0
mov dword [esp + 0xd8], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd0], 0
mov dword [esp + 0xcc], 0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc0], 0x233c300a
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x1d
ja 0x409d89
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [esp + ecx + 0xc0]
lea edx, [eax + ecx]
add edx, 0xe7e07726
add eax, 0xe7e07726
and eax, ecx
add eax, eax
mov ecx, eax
not ecx
and ecx, edx
add ecx, ecx
xor eax, edx
sub ecx, eax
add cl, 0xf6
mov eax, dword [esp + 0x10]
mov byte [esp + eax + 0xc0], cl
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x1e
jb 0x409d40
mov dword [esp + 0x10], 0xe0e29695
mov dword [esp + 0x14], 0xe4ec9292
mov dword [esp + 0x18], 0x97dce295
mov dword [esp + 0x1c], 0x9c9f94a3
mov dword [esp + 0x20], 0xec9fa3a0
mov dword [esp + 0x24], 0xaefd37c9
mov dword [esp + 0x28], 0xb197a9ac
mov dword [esp + 0x2c], 0x88e4f2b6
mov dword [esp + 0x30], 0xbeb5b5b3
mov dword [esp + 0x34], 0xbe87bd85
mov dword [esp + 0x38], 0xb9ccf3bc
mov dword [esp + 0x3c], 0xc4838783
mov dword [esp + 0x40], 0xbc80b2b2
mov dword [esp + 0x44], 0xb88af9c7
mov dword [esp + 0x48], 0xe5dfb68d
mov dword [esp + 0x4c], 0xacacaea8
mov dword [esp + 0x50], 0xa1e4d8e0
mov dword [esp + 0x54], 0x9da3a5a5
mov dword [esp + 0x58], 0x30a79ea9
mov word [esp + 0x5c], 0xf114
mov byte [esp + 0x62], 0
mov dword [esp + 0x5e], 0
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
cmp eax, 0x52
ja 0x409e88
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
movzx edx, byte [esp + eax + 0x10]
lea eax, [ecx + edx]
add eax, 0xa56480b5
add ecx, 0xa56480b5
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0xd
mov ecx, dword [esp + 0xc]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, 0x53
jb 0x409e50
mov eax, dword [ebp + 0xc]
movzx ecx, byte [esp + 0x10]
mov edx, edi
test cl, cl
je 0x409eab
lea esi, [esp + 0x11]
mov edx, edi
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409ea0
mov byte [edx], 0
movzx ecx, byte [eax]
test cl, cl
je 0x409ecb
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 0x409ec0
mov byte [edx], 0
movzx eax, byte [esp + 0xc0]
test al, al
je 0x409efb
lea ecx, [esp + 0xc1]
nop
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 0x409ef0
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
mov byte [edx], 0
movzx eax, byte [esp + 0x80]
test al, al
mov dword [esp + 0x78], edi
je 0x409f2b
lea ecx, [esp + 0x81]
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409f20
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 eax, ebx
and eax, 0xfffffffc
mov ecx, esi
lea esi, [edx + eax]
add eax, ecx
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 0x409f6d
mov ecx, ebx
and ecx, 2
movzx eax, byte [eax + ecx]
mov byte [esi + ecx], al
mov dword [esp + 0x10], 0xd4d73339
mov dword [esp + 0x14], 0xc8c49a98
mov dword [esp + 0x18], 0xa8f7a69a
mov dword [esp + 0x1c], 0xa2b5a1b2
mov dword [esp + 0x20], 0xb9baaead
mov dword [esp + 0x24], 0x503fead
mov word [esp + 0x28], 0x1b01
mov byte [esp + 0x2a], 0x10
mov dword [esp + 0x2b], 0
mov dword [esp + 0x2f], 0
mov dword [esp + 0x33], 0
mov dword [esp + 0x37], 0
mov word [esp + 0x3b], 0
mov dword [esp + 0x80], 0
mov eax, dword [esp + 0x80]
cmp eax, 0x2c
mov esi, dword [esp + 0x78]
ja 0x40a024
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x80]
add al, 0xd7
xor al, byte [esp + ecx + 0x10]
add al, 0x1f
mov ecx, dword [esp + 0x80]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 0x80]
mov eax, dword [esp + 0x80]
cmp eax, 0x2d
jb 0x409ff0
add edx, ebx
movzx eax, byte [esp + 0x10]
test al, al
je 0x40a04b
lea ecx, [esp + 0x11]
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 0x40a040
mov byte [edx], 0
mov eax, edx
not eax
and eax, esi
not esi
and esi, edx
sub esi, eax
mov eax, dword [esp + 0x7c]
add dword [eax + 0x60], esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10