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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x84
mov esi, dword [esp + 0x98]
mov dword [esp + 0x40], ecx
mov edx, dword [ecx + 0x80]
mov dword [esp + 0x10], 0x6d686a01
mov dword [esp + 0x14], 0x2e6a6d63
mov dword [esp + 0x18], 0x6a625c08
mov dword [esp + 0x1c], 0x6171371e
mov dword [esp + 0x20], 0x110f0c60
mov dword [esp + 0x24], 0x191c141b
mov dword [esp + 0x28], 0x10512b5d
mov dword [esp + 0x2c], 0x1d1906
mov dword [esp + 0x30], 0xaaa4a810
mov word [esp + 0x34], 0xbfa6
mov dword [esp + 0x36], 0
mov word [esp + 0x3a], 0
xor edi, edi
xor ebp, ebp
nop
nop
nop
mov eax, edi
and eax, 0x5e
mov ebx, ebp
xor ebx, 0x2f
add ebx, eax
xor bl, byte [esp + ebp + 0x10]
add bl, 0x15
mov byte [esp + ebp + 0x10], bl
inc ebp
add edi, 2
cmp ebp, 0x2c
jne 0x4099c0
mov dword [esp + 8], 0xd1c4c02e
mov word [esp + 0xc], 0
mov byte [esp + 0xe], 0
mov edi, 0x68be25ad
mov ebp, 0x52
nop
nop
movzx ebx, byte [esp + edi - 0x68be25a5]
mov eax, ebx
not eax
or eax, ebp
or ebx, edi
and ebx, eax
mov eax, ebx
and eax, 0x1e
add eax, eax
xor ebx, 0x61
sub eax, ebx
mov byte [esp + edi - 0x68be25a5], al
inc edi
dec ebp
cmp edi, 0x68be25b4
jne 0x409a00
mov dword [esp + 0x44], 0xecd99795
mov dword [esp + 0x48], 0xd1c7e9ee
mov dword [esp + 0x4c], 0xcee28cd4
mov dword [esp + 0x50], 0xdcd9d5d3
mov dword [esp + 0x54], 0xdcc7ddc1
mov dword [esp + 0x58], 0xd99293de
mov dword [esp + 0x5c], 0x9adbc7c3
mov dword [esp + 0x60], 0xdaced4d0
mov dword [esp + 0x64], 0xdecc9987
mov dword [esp + 0x68], 0xe5ffd8d1
mov dword [esp + 0x6c], 0xa2aaa8aa
mov dword [esp + 0x70], 0xa1eafae2
mov dword [esp + 0x74], 0xbdaba5a1
mov dword [esp + 0x78], 0xeeb7a0ad
mov word [esp + 0x7c], 0xd1f6
mov dword [esp + 0x7e], 0
mov byte [esp + 0x82], 0
mov edi, 0x1a
mov ebp, 0xe5
mov ecx, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebp
and eax, 0xa1
mov ebx, edi
and ebx, 0x5e
or ebx, eax
xor bl, byte [esp + edi + 0x2a]
xor bl, 0xa1
add bl, 0x7e
mov byte [esp + edi + 0x2a], bl
inc edi
dec ebp
cmp edi, 0x59
jne 0x409ad0
add ecx, edx
mov word [esp], 0xf4f5
mov byte [esp + 2], 0x8e
mov dword [esp + 3], 0
mov edx, 0x14995822
nop
nop
nop
movzx ebp, byte [esp + edx - 0x14995822]
mov ebx, edx
and ebx, ebp
mov eax, ebx
and eax, 0x2d
mov esi, ebx
and esi, 2
mov edi, ebx
or edi, 0xfffffffd
inc edi
imul edi, eax
or ebx, 2
imul ebx, esi
add edi, ebp
sub edi, ebx
add edi, edx
mov eax, edi
and eax, 0x55
xor edi, 0x55
lea eax, [edi + eax*2]
inc al
mov byte [esp + edx - 0x14995822], al
inc edx
cmp edx, 0x14995829
jne 0x409b10
movzx ebx, byte [esp]
mov edx, ecx
test bl, bl
je 0x409b7b
lea edi, [esp + 1]
mov edx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409b70
mov byte [edx], 0
mov ebp, dword [esp + 0x40]
movzx ebx, byte [ebp + 0x60]
test bl, bl
mov eax, dword [esp + 0x9c]
je 0x409bab
lea edi, [ebp + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409ba0
mov byte [edx], 0
movzx ebx, byte [esp + 0x44]
test bl, bl
je 0x409bcb
lea edi, [esp + 0x45]
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409bc0
mov byte [edx], 0
movzx ebx, byte [eax]
test bl, bl
mov dword [esp + 0x3c], ecx
je 0x409beb
inc eax
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [eax]
inc eax
test bl, bl
jne 0x409be0
mov byte [edx], 0
movzx ecx, byte [esp + 8]
test cl, cl
je 0x409c0b
lea edi, [esp + 9]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409c00
mov byte [edx], 0
movzx ecx, byte [esp + 0x10]
test cl, cl
je 0x409c2b
lea edi, [esp + 0x11]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409c20
mov byte [edx], 0
mov ebx, dword [esp + 0xa4]
mov ecx, ebx
shr ecx, 2
mov esi, dword [esp + 0xa0]
mov eax, esi
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, ebx
and ebx, 0xfffffffc
add edx, ebx
add ebx, esi
mov ecx, eax
mov esi, eax
shr ecx, 1
and ecx, 1
mov eax, ebx
mov edi, edx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov ecx, esi
mov eax, esi
and eax, 2
add edx, eax
test cl, 1
je 0x409c79
movzx eax, byte [ebx + eax]
mov byte [edx], al
inc edx
mov dword [esp + 0x44], 0x4f494d4f
mov byte [esp + 0x48], pe_nt_image_headers32
mov dword [esp + 0x49], 0
mov dword [esp + 0x4c], 0
mov ecx, 0xfdc5d36b
mov edi, 0x94
movzx eax, byte [esp + ecx + 0x23a2cd9]
mov ebx, edi
xor ebx, ecx
and ebx, eax
xor ebx, ecx
mov eax, ebx
not eax
and eax, 0x18
and ebx, 0xe7
sub ebx, eax
inc bl
mov byte [esp + ecx + 0x23a2cd9], bl
inc ecx
dec edi
cmp ecx, 0xfdc5d377
jne 0x409ca0
mov dword [esp + 0x10], 0xeae9cdcf
mov byte [esp + 0x14], 0x38
mov dword [esp + 0x15], 0
mov byte [esp + 0x19], 0
mov ecx, 0x7133facb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx - 0x7133fabb]
xor edi, ecx
mov eax, edi
and eax, 0x3003e0f8
xor eax, 0xf8
mov esi, edi
and esi, 6
sub esi, eax
and edi, 1
or esi, 1
xor esi, edi
lea eax, [esi + edi*2]
mov byte [esp + ecx - 0x7133fabb], al
inc ecx
cmp ecx, 0x7133fad5
jne 0x409d00
movzx ecx, byte [esp + 0x10]
test cl, cl
je 0x409d5b
lea edi, [esp + 0x11]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409d50
mov byte [edx], 0
movzx ecx, byte [ebp + 0x60]
test cl, cl
je 0x409d7b
lea edi, [ebp + 0x61]
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409d70
mov byte [edx], 0
movzx ecx, byte [esp + 0x44]
test cl, cl
je 0x409d9b
lea edi, [esp + 0x45]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409d90
mov byte [edx], 0
sub edx, dword [esp + 0x3c]
add dword [ebp + 0x80], edx
add esp, 0x84
pop esi
pop edi
pop ebx
pop ebp
ret 0x10