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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x84
mov ebp, dword [esp + 0x98]
mov dword [esp], ecx
mov edx, dword [ecx + 0x80]
mov dword [esp + 0x18], 0x8f848653
mov dword [esp + 0x1c], 0x4a828b71
mov dword [esp + 0x20], 0x768a8064
mov dword [esp + 0x24], 0x9b67255e
mov dword [esp + 0x28], 0x6b61609c
mov dword [esp + 0x2c], 0x93986099
mov dword [esp + 0x30], 0x9c5f915f
mov dword [esp + 0x34], 0x545b5f56
mov dword [esp + 0x38], 0x63804ac
mov dword [esp + 0x3c], 0x3d36
mov byte [esp + 0x40], 0
xor ebx, ebx
mov edi, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, edi
or ecx, 4
mov eax, ebx
or eax, 4
add eax, ecx
add eax, ebx
inc al
xor al, byte [esp + ebx + 0x18]
add al, 0xec
mov byte [esp + ebx + 0x18], al
lea eax, [ebx + 1]
dec edi
mov ebx, eax
cmp eax, 0x29
jne 0x409540
mov dword [esp + 0x10], 0x292438c2
mov dword [esp + 0x14], 0
mov edi, 0x66679f29
mov ebx, 0x99860d6
nop
movzx eax, byte [esp + edi - 0x66679f19]
mov ecx, ebx
and ecx, 0x8086042
mov esi, edi
and esi, 0x64208c1d
sub esi, ecx
xor esi, eax
mov eax, esi
and eax, 1
xor esi, 1
lea eax, [esi + eax*2]
add al, 0x1c
mov byte [esp + edi - 0x66679f19], al
inc edi
dec ebx
cmp edi, 0x66679f31
jne 0x409580
mov dword [esp + 0x48], 0xdbe5e3
mov dword [esp + 0x4c], 0xb35070e
mov dword [esp + 0x50], 0x12d2c800
mov dword [esp + 0x54], 0x181b1b1d
mov dword [esp + 0x58], 0x10151b17
mov dword [esp + 0x5c], 0x23e2c91e
mov dword [esp + 0x60], 0xa6191515
mov dword [esp + 0x64], 0x5e6e585c
mov dword [esp + 0x68], 0x52609fb1
mov dword [esp + 0x6c], 0x97bd546f
mov dword [esp + 0x70], 0x4e6a6c52
mov dword [esp + 0x74], 0x4b8aa68a
mov dword [esp + 0x78], 0x7f497377
mov dword [esp + 0x7c], 0xaa457c43
mov dword [esp + 0x80], 0xe786
mov esi, 0x796176a5
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + esi - 0x7961765d]
mov eax, esi
or eax, ecx
lea edi, [esi - 0x79617600]
or edi, esi
and edi, ecx
sub eax, edi
add al, 0xc7
mov byte [esp + esi - 0x7961765d], al
inc esi
cmp esi, 0x796176e1
jne 0x409640
add ebp, edx
mov dword [esp + 0xc], ebp
mov word [esp + 4], 0x7475
mov byte [esp + 6], 0x8e
mov word [esp + 7], 0
mov byte [esp + 9], 0
mov edx, 0xba2329e2
mov esi, 0xba2329e3
mov ebp, 0x45dcd61d
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x44], esi
movzx esi, byte [esp + edx + 0x45dcd622]
lea eax, [ebp - 0x45dcd600]
mov ecx, edx
or ecx, esi
mov ebx, esi
not ebx
or ebx, eax
and ebx, ecx
not ebx
or ebx, ebp
lea ecx, [edx + ebx]
inc ecx
mov edi, ecx
and edi, 0xfffffffd
mov eax, ecx
or eax, 0xfffffffd
inc eax
imul eax, edi
add eax, esi
mov esi, dword [esp + 0x44]
or ecx, 2
add ebx, esi
shr ebx, 1
and ebx, 1
imul ebx, ecx
add ebx, ebx
sub eax, ebx
add eax, edx
add eax, 0xc8b98e5
mov ecx, eax
and ecx, 0x15
xor eax, 0x95
lea eax, [eax + ecx*2]
add al, 0x1c
mov byte [esp + edx + 0x45dcd622], al
inc edx
inc esi
dec ebp
cmp edx, 0xba2329e8
jne 0x4096a0
movzx ebx, byte [esp + 4]
mov ecx, dword [esp + 0xc]
mov edx, ecx
test bl, bl
je 0x40973b
lea eax, [esp + 5]
mov edx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [eax]
inc eax
test bl, bl
jne 0x409730
mov byte [edx], 0
mov ecx, dword [esp]
movzx eax, byte [ecx + 0x60]
test al, al
je 0x40975b
add ecx, 0x61
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409750
mov byte [edx], 0
movzx eax, byte [esp + 0x48]
test al, al
je 0x40977b
lea ecx, [esp + 0x49]
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409770
mov byte [edx], 0
mov ecx, dword [esp + 0x9c]
movzx eax, byte [ecx]
test al, al
je 0x40979b
inc ecx
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409790
mov byte [edx], 0
movzx eax, byte [esp + 0x10]
test al, al
je 0x4097bb
lea ecx, [esp + 0x11]
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4097b0
mov byte [edx], 0
movzx eax, byte [esp + 0x18]
test al, al
je 0x4097db
lea ecx, [esp + 0x19]
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4097d0
mov byte [edx], 0
mov ebx, dword [esp + 0xa4]
mov ecx, ebx
shr ecx, 2
mov ebp, dword [esp + 0xa0]
mov eax, ebp
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov esi, ebx
and esi, 0xfffffffc
add edx, esi
add esi, ebp
mov ecx, ebx
shr ecx, 1
and ecx, 1
mov eax, esi
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 0x409825
movzx eax, byte [esi + eax]
mov byte [edx], al
inc edx
mov dword [esp + 0x48], 0x3b313d33
mov byte [esp + 0x4c], 0x20
mov dword [esp + 0x4d], 0
mov dword [esp + 0x50], 0
xor ecx, ecx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edi + 0x48]
mov esi, ecx
and esi, 0x12
mov ebx, edi
xor ebx, 0xdfa55909
add ebx, esi
xor ebx, eax
mov eax, ebx
and eax, 0xd0
mov esi, ebx
and esi, 2
mov ebp, esi
xor ebp, 2
imul ebp, eax
or eax, 2
imul eax, esi
xor ebx, 0xd2
add ebx, ebp
add ebx, eax
inc bl
mov byte [esp + edi + 0x48], bl
inc edi
add ecx, 2
cmp edi, 0xc
jne 0x409850
mov dword [esp + 0x18], 0x6073b25
mov byte [esp + 0x1c], 0x3c
mov dword [esp + 0x1d], 0
mov dword [esp + 0x20], 0
mov ecx, 0x24dcc634
mov edi, 0xdb2339cb
movzx eax, byte [esp + ecx - 0x24dcc61c]
mov esi, eax
not esi
and esi, ecx
mov ebx, edi
or ebx, eax
sub eax, ebx
add eax, edi
or eax, esi
mov esi, eax
and esi, 0x7b
xor eax, 0x47b020fb
lea ebx, [eax + esi*2]
and eax, 1
or ebx, 1
add ebx, eax
mov byte [esp + ecx - 0x24dcc61c], bl
inc ecx
dec edi
cmp ecx, 0x24dcc640
jne 0x4098c0
movzx eax, byte [esp + 0x18]
test al, al
mov edi, dword [esp + 0xc]
je 0x40992d
lea ecx, [esp + 0x19]
mov esi, dword [esp]
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 0x409920
jmp 0x409930
mov esi, dword [esp]
mov byte [edx], 0
movzx eax, byte [esi + 0x60]
test al, al
je 0x40994b
lea ecx, [esi + 0x61]
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409940
mov byte [edx], 0
movzx eax, byte [esp + 0x48]
test al, al
je 0x40996b
lea ecx, [esp + 0x49]
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409960
mov byte [edx], 0
sub edx, edi
add dword [esi + 0x80], edx
add esp, 0x84
pop esi
pop edi
pop ebx
pop ebp
ret 0x10