Function at 0x409860
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 + 0x7c], ecx
add edi, dword [ecx + 0x60]
mov dword [esp + 0x80], 0x1f1614c3
mov dword [esp + 0x84], 0xdc1c1be1
mov dword [esp + 0x88], 0xd81c12fa
mov dword [esp + 0x8c], 0x23d791ec
mov dword [esp + 0x90], 0xd3d1d222
mov dword [esp + 0x94], 0x2b2ad229
mov dword [esp + 0x98], 0x32ef25ef
mov dword [esp + 0x9c], 0xc2cbcfc4
mov dword [esp + 0xa0], 0x98aa9632
mov dword [esp + 0xa4], 0xa9a4
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x27
ja 0x409953
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x80]
lea edx, [eax + ecx]
add eax, 0x15
and eax, ecx
add eax, eax
sub edx, eax
add edx, 0x98801e15
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
add al, 0x6d
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x80], al
mov eax, dword [esp + 8]
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
cmp eax, 0x28
jb 0x409900
mov dword [esp + 8], 0x2b1c1802
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x13], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xe
ja 0x4099dd
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx edx, byte [esp + ecx + 8]
lea esi, [eax + 0x26d0b5fa]
lea ecx, [eax + edx]
add ecx, 0x26d0b5fa
and esi, edx
add eax, 0xfa
and eax, edx
add eax, esi
mov edx, eax
xor edx, ecx
not eax
and eax, ecx
add eax, eax
sub eax, edx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
add al, 0x2a
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xf
jb 0x409990
mov dword [esp + 0x20], 0xd6d08c8d
mov dword [esp + 0x24], 0xd2d280fc
mov dword [esp + 0x28], 0xafbab0fd
mov dword [esp + 0x2c], 0xaab7aeb3
mov dword [esp + 0x30], 0xf2a7b3b2
mov dword [esp + 0x34], 0xb885dfd9
mov dword [esp + 0x38], 0xa5bfada6
mov dword [esp + 0x3c], 0xa69ae0a8
mov dword [esp + 0x40], 0xa0ada1a3
mov dword [esp + 0x44], 0xa8afa1ad
mov dword [esp + 0x48], 0x8dcaa396
mov dword [esp + 0x4c], 0xd2939f93
mov dword [esp + 0x50], 0x82968084
mov dword [esp + 0x54], 0x8698c5af
mov dword [esp + 0x58], 0xd9b79c85
mov dword [esp + 0x5c], 0x9a82849a
mov dword [esp + 0x60], 0x95d2bad2
mov dword [esp + 0x64], 0x8993898d
mov dword [esp + 0x68], 0x466f7469
mov word [esp + 0x6c], 0xd2e
mov word [esp + 0x72], 0
mov dword [esp + 0x6e], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0x53
ja 0x409ade
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x20]
lea edx, [eax + ecx]
add edx, 0xa2dfb638
add eax, 0xa2dfb638
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp], edx
mov eax, dword [esp]
add al, 0x78
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x20], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x54
jb 0x409aa0
mov eax, dword [ebp + 0xc]
movzx ecx, byte [esp + 0x20]
mov edx, edi
test cl, cl
je 0x409b0b
lea esi, [esp + 0x21]
mov edx, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409b00
mov byte [edx], 0
movzx ecx, byte [eax]
test cl, cl
je 0x409b2b
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 0x409b20
mov byte [edx], 0
movzx eax, byte [esp + 8]
test al, al
je 0x409b4b
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 0x409b40
mov esi, dword [ebp + 0x14]
mov ebx, dword [ebp + 0x10]
mov byte [edx], 0
movzx eax, byte [esp + 0x80]
test al, al
mov dword [esp + 0x78], edi
je 0x409b7b
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 0x409b70
mov byte [edx], 0
mov ecx, esi
shr ecx, 2
mov eax, ebx
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, esi
and eax, 0xfffffffc
lea ecx, [edx + eax]
mov dword [esp + 0x1c], ecx
add eax, ebx
mov ebx, esi
and ebx, 3
mov ecx, ebx
shr ecx, 1
mov esi, eax
mov edi, dword [esp + 0x1c]
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov edi, dword [esp + 0x1c]
mov ecx, ebx
xor ecx, 0xfffffffe
or ebx, 1
and ebx, ecx
je 0x409be8
mov esi, dword [ebp + 0x14]
and esi, 2
movzx ecx, byte [eax + esi]
mov byte [edi + esi], cl
cmp ebx, 1
je 0x409be8
movzx ecx, byte [eax + esi + 1]
mov byte [edi + esi + 1], cl
cmp ebx, 2
je 0x409be8
movzx eax, byte [eax + esi + 2]
mov byte [edi + esi + 2], al
mov dword [esp + 0x20], 0x24275b41
mov dword [esp + 0x24], 0x2024f2f0
mov dword [esp + 0x28], 0xf027f6f2
mov dword [esp + 0x2c], 0xa1509ea
mov dword [esp + 0x30], 0x11120e0d
mov dword [esp + 0x34], 0xa5bbde0d
mov word [esp + 0x38], 0xa3b9
mov byte [esp + 0x3a], 0xa8
mov dword [esp + 0x3b], 0
mov dword [esp + 0x3f], 0
mov byte [esp + 0x43], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x23
mov edi, dword [esp + 0x78]
ja 0x409c96
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x20]
lea esi, [eax + ecx]
add esi, 0xc8d2cc73
add eax, 0xc8d2cc73
and eax, ecx
add eax, eax
sub esi, eax
mov dword [esp + 0x80], esi
mov eax, dword [esp + 0x80]
add al, 0xdb
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x20], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x24
jb 0x409c50
add edx, dword [ebp + 0x14]
movzx eax, byte [esp + 0x20]
test al, al
je 0x409cbb
lea ecx, [esp + 0x21]
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 0x409cb0
mov byte [edx], 0
sub edx, edi
mov eax, dword [esp + 0x7c]
add dword [eax + 0x60], edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10