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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x80
mov ebp, dword [esp + 0x98]
mov eax, dword [esp + 0x94]
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0x40], eax
mov dword [esp + 0x18], 0xf10a0c21
mov dword [esp + 0x1c], 0x44fc0903
mov dword [esp + 0x20], 0x8fcf21e
mov dword [esp + 0x24], 0x5f14f34
mov dword [esp + 0x28], 0xfdf7f206
mov dword [esp + 0x2c], 0xdf6f2fb
mov dword [esp + 0x30], 0xf2b103b5
mov dword [esp + 0x34], 0xe2e5f5fc
mov dword [esp + 0x38], 0x888e8e16
mov word [esp + 0x3c], 0x878c
mov byte [esp + 0x3e], 0
xor eax, eax
mov ecx, eax
add cl, 0xf2
xor cl, byte [esp + eax + 0x18]
add cl, 0x70
mov byte [esp + eax + 0x18], cl
mov ecx, eax
and ecx, 0x29
xor eax, 0xa4e79a9
lea eax, [eax + ecx*2]
add eax, 0xf5b18658
cmp eax, 0x27
jb 0x409870
mov dword [esp + 0x12], 0x3b30341a
mov byte [esp + 0x16], 0
mov eax, 0xef75b0f8
nop
nop
nop
nop
nop
nop
nop
mov dword [esp], eax
movzx edx, byte [esp + eax + 0x108a4f1a]
mov ebx, dword [esp]
and ebx, edx
lea edi, [ebx + ebx]
mov eax, edx
sub eax, edi
add eax, dword [esp]
mov ecx, dword [esp]
add cl, dl
add bl, bl
mov esi, ebx
sub cl, bl
and cl, 0x3f
add cl, dl
xor al, 0x3f
add al, cl
mov ecx, ebx
sub al, cl
add edx, dword [esp]
sub edx, edi
and dl, 0xc0
sub al, dl
movzx eax, al
add eax, dword [esp]
inc al
mov ecx, dword [esp]
mov byte [esp + ecx + 0x108a4f1a], al
mov eax, dword [esp]
inc eax
cmp eax, 0xef75b0fd
jne 0x4098b0
mov dword [esp + 0x44], 0xcea37573
mov dword [esp + 0x48], 0xcbc1f7cc
mov dword [esp + 0x4c], 0xc0ac8af2
mov dword [esp + 0x50], 0xfec3fbf9
mov dword [esp + 0x54], 0xfef9fbc7
mov dword [esp + 0x58], 0xf3b489fc
mov dword [esp + 0x5c], 0xb4f5c5f9
mov dword [esp + 0x60], 0xfcc8fafe
mov dword [esp + 0x64], 0xe0eebf85
mov dword [esp + 0x68], 0xa799e6ef
mov dword [esp + 0x6c], 0xece4eee0
mov dword [esp + 0x70], 0xebac90a8
mov dword [esp + 0x74], 0x9f95e3e7
mov dword [esp + 0x78], 0xe8919e93
mov dword [esp + 0x7c], 0x37d4
mov eax, 0x1fcb210e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x1fcb20ca]
xor ecx, eax
add ecx, 0x1a6f78f
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov byte [esp + eax - 0x1fcb20ca], cl
inc eax
cmp eax, 0x1fcb214a
jne 0x409990
mov eax, dword [esp + 0x40]
add dword [esp + 4], eax
mov word [esp + 0xc], 0x7677
mov byte [esp + 0xe], 0x5c
mov word [esp + 0xf], 0
lea edx, [esp + 0xc]
xor esi, esi
xor edi, edi
nop
nop
nop
movzx eax, byte [edx]
mov ebx, esi
and ebx, 0x4b1a2bec
mov ecx, edi
xor ecx, 0x5a72ea09
sub ecx, ebx
inc ecx
mov ebx, eax
and ebx, ecx
add ebx, ebx
sub ecx, ebx
add cl, al
add cl, 0xb0
mov byte [edx], cl
inc edx
dec edi
add esi, 0xfffffffe
cmp edi, 0xfffffffb
jne 0x4099e0
movzx eax, byte [esp + 0xc]
mov esi, dword [esp + 4]
test al, al
je 0x409a3b
lea ecx, [esp + 0xd]
mov esi, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409a30
mov byte [esi], 0
mov ecx, dword [esp + 8]
movzx eax, byte [ecx + 0x60]
test al, al
mov ebx, dword [esp + 0x9c]
je 0x409a6b
add ecx, 0x61
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409a60
mov byte [esi], 0
movzx eax, byte [esp + 0x44]
test al, al
je 0x409a8b
lea ecx, [esp + 0x45]
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409a80
mov byte [esi], 0
movzx eax, byte [ebp]
test al, al
je 0x409aac
inc ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ebp]
inc ebp
test al, al
jne 0x409aa0
mov byte [esi], 0
movzx eax, byte [esp + 0x12]
test al, al
je 0x409acd
lea ecx, [esp + 0x13]
mov ebp, ebx
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409ac0
jmp 0x409acf
mov ebp, ebx
mov byte [esi], 0
movzx eax, byte [esp + 0x18]
test al, al
je 0x409aeb
lea ecx, [esp + 0x19]
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409ae0
mov byte [esi], 0
mov ebx, dword [esp + 0xa0]
mov ecx, ebx
shr ecx, 2
mov eax, ebp
mov edi, esi
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov edx, ebx
and edx, 0xfffffffc
add ebp, edx
add edx, esi
mov ecx, ebx
shr ecx, 1
and ecx, 1
mov eax, ebp
mov edi, edx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov eax, ebx
and eax, 2
add edx, eax
test bl, 1
je 0x409b2f
movzx eax, byte [ebp + eax]
mov byte [edx], al
inc edx
mov edi, dword [esp + 8]
mov dword [esp + 0x44], 0x292f2b2d
mov byte [esp + 0x48], 0x24
mov word [esp + 0x49], 0
mov eax, 0x33cf9f20
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x33cf9edc]
xor ecx, eax
mov esi, ecx
and esi, 2
mov ebx, ecx
or ebx, 2
imul ebx, esi
xor esi, 2
sub ebx, ecx
and ecx, 0xfd
imul ecx, esi
add ebx, ecx
mov byte [esp + eax - 0x33cf9edc], bl
inc eax
cmp eax, 0x33cf9f27
jne 0x409b50
mov dword [esp + 0x18], 0x4a4b2f29
mov byte [esp + 0x1c], 0x28
mov word [esp + 0x1d], 0
mov byte [esp + 0x1f], 0
xor eax, eax
mov ecx, 0xb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
and esi, 9
mov ebx, eax
and ebx, 6
or ebx, esi
xor bl, byte [esp + eax + 0x18]
xor bl, 0xd
add bl, 0xe0
mov byte [esp + eax + 0x18], bl
inc eax
dec ecx
cmp eax, 8
jne 0x409bb0
movzx eax, byte [esp + 0x18]
test al, al
je 0x409beb
lea ecx, [esp + 0x19]
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409be0
mov byte [edx], 0
movzx eax, byte [edi + 0x60]
test al, al
je 0x409c0b
lea ecx, [edi + 0x61]
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409c00
mov byte [edx], 0
movzx eax, byte [esp + 0x44]
test al, al
je 0x409c2b
lea ecx, [esp + 0x45]
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409c20
mov byte [edx], 0
sub edx, dword [esp + 4]
add dword [edi + 0x80], edx
add esp, 0x80
pop esi
pop edi
pop ebx
pop ebp
ret 0x10