Function at 0x4097c0
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], 0xdfd6d483
mov dword [esp + 0x7c], 0x9cdcdbe1
mov dword [esp + 0x80], 0x98dcd2fa
mov dword [esp + 0x84], 0xa397d1ec
mov dword [esp + 0x88], 0x939192a2
mov dword [esp + 0x8c], 0xabaa92a9
mov dword [esp + 0x90], 0xb2efa5ef
mov dword [esp + 0x94], 0x828b8f84
mov dword [esp + 0x98], 0xd82ad6b2
mov dword [esp + 0x9c], 0x2924
mov byte [esp + 0xa0], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x28
ja 0x4098a6
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x78]
add eax, 0xb1c68635
mov edx, eax
and edx, ecx
mov esi, eax
xor esi, ecx
not ecx
or eax, ecx
add ecx, esi
add eax, edx
sub ecx, eax
lea eax, [ecx + edx*2]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
add al, 0x8d
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x78], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x29
jb 0x409860
mov dword [esp + 8], 0x2b1c1802
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov word [esp + 0x14], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xd
ja 0x40991b
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]
mov ecx, 0x20e8db85
sub ecx, eax
add eax, 0x7a
and eax, edx
or ecx, edx
not ecx
add ecx, edx
sub ecx, eax
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x18]
add al, 0xaa
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xe
jb 0x4098e0
mov dword [esp + 0x18], 0xe6e41011
mov dword [esp + 0x1c], 0xe2e21408
mov dword [esp + 0x20], 0x1f2adc11
mov dword [esp + 0x24], 0x1a271e2b
mov dword [esp + 0x28], 0xe2172b2a
mov dword [esp + 0x2c], 0x24f1cfcd
mov dword [esp + 0x30], 0x390f2126
mov dword [esp + 0x34], 0x36eaf43c
mov dword [esp + 0x38], 0x34313d3b
mov dword [esp + 0x3c], 0x343f3539
mov dword [esp + 0x40], 0x1faeb36
mov dword [esp + 0x44], 0xc2030f0b
mov dword [esp + 0x48], 0x32063c38
mov dword [esp + 0x4c], 0x3604f1df
mov dword [esp + 0x50], 0xedc73009
mov dword [esp + 0x54], 0x2a121012
mov dword [esp + 0x58], 0x19e2c2ea
mov dword [esp + 0x5c], 0x15231d19
mov dword [esp + 0x60], 0xb65f1825
mov word [esp + 0x64], 0xf99e
mov dword [esp + 0x6a], 0
mov dword [esp + 0x66], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0x55
ja 0x409a1b
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x18]
lea edx, [eax + 0x51abcf6]
add eax, 0xf6
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esp], edx
mov eax, dword [esp]
add al, 0x46
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x18], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x56
jb 0x4099e0
mov eax, dword [ebp + 0xc]
movzx ecx, byte [esp + 0x18]
mov edx, edi
test cl, cl
je 0x409a3b
lea esi, [esp + 0x19]
mov edx, edi
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409a30
mov byte [edx], 0
movzx ecx, byte [eax]
test cl, cl
je 0x409a5b
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 0x409a50
mov byte [edx], 0
movzx eax, byte [esp + 8]
test al, al
je 0x409a7b
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 0x409a70
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 0x409aab
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 0x409aa0
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 0x409aed
mov ecx, ebx
and ecx, 2
movzx eax, byte [eax + ecx]
mov byte [esi + ecx], al
mov dword [esp + 0x18], 0xa4a7c3f9
mov dword [esp + 0x1c], 0xa8b49a98
mov dword [esp + 0x20], 0x68a7969a
mov dword [esp + 0x24], 0x92659162
mov dword [esp + 0x28], 0x797a8e6d
mov dword [esp + 0x2c], 0xd5d3be8d
mov word [esp + 0x30], 0xdbd1
mov byte [esp + 0x32], 0xe0
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 edi, dword [esp + 0x70]
ja 0x409ba0
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]
lea esi, [eax + ecx]
add esi, 0x1e11b2df
add eax, 0x1e11b2df
and eax, ecx
add eax, eax
sub esi, eax
mov dword [esp + 0x78], esi
mov eax, dword [esp + 0x78]
add al, 0xe7
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x18], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x27
jb 0x409b60
add edx, ebx
movzx eax, byte [esp + 0x18]
test al, al
je 0x409bbb
lea ecx, [esp + 0x19]
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409bb0
mov byte [edx], 0
mov eax, edx
xor eax, edi
not edi
and edi, edx
add edi, edi
sub edi, eax
mov eax, dword [esp + 0x74]
add dword [eax + 0x60], edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10