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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x80
mov esi, dword [esp + 0x98]
mov edx, dword [ecx + 0x80]
mov dword [esp + 0x18], 0xc5c0ceb9
mov dword [esp + 0x1c], 0x8ac6cdd7
mov dword [esp + 0x20], 0xeec6fca0
mov dword [esp + 0x24], 0xf9e9ab82
mov dword [esp + 0x28], 0xf9ebecf8
mov dword [esp + 0x2c], 0xf1fce4ff
mov dword [esp + 0x30], 0xe8b9cfb5
mov dword [esp + 0x34], 0xf8fde1fa
mov dword [esp + 0x38], 0x4e4440e8
mov word [esp + 0x3c], 0x534a
mov dword [esp + 0x3e], 0
mov word [esp + 0x42], 0
xor eax, eax
xor ebp, ebp
nop
nop
nop
nop
nop
nop
nop
mov edi, eax
and edi, 0x2a
mov ebx, ebp
xor ebx, 0x15
add ebx, edi
xor bl, byte [esp + ebp + 0x18]
add bl, 0x97
mov byte [esp + ebp + 0x18], bl
inc ebp
add eax, 2
cmp ebp, 0x2c
jne 0x4097f0
mov dword [esp + 0x10], 0x17202cc6
mov dword [esp + 0x14], 0
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
add al, 0x46
xor al, byte [esp + ebx + 0x10]
add al, 0xa2
mov byte [esp + ebx + 0x10], al
mov eax, ebx
and eax, 1
xor ebx, 1
lea ebx, [ebx + eax*2]
cmp ebx, 8
jb 0x409830
mov dword [esp + 0x44], 0x80db2523
mov dword [esp + 0x48], 0x8bf5878e
mov dword [esp + 0x4c], 0x92d2c880
mov dword [esp + 0x50], 0x989b9b9d
mov dword [esp + 0x54], 0x90959b97
mov dword [esp + 0x58], 0xe322c99e
mov dword [esp + 0x5c], 0xe6999595
mov dword [esp + 0x60], 0xdeaed8dc
mov dword [esp + 0x64], 0xd2a01ff1
mov dword [esp + 0x68], 0x17fdd4af
mov dword [esp + 0x6c], 0xceaaacd2
mov dword [esp + 0x70], 0xcb0ae60a
mov dword [esp + 0x74], 0xbfc9b3b7
mov dword [esp + 0x78], 0xeac5bcc3
mov dword [esp + 0x7c], 0x2706
xor ebx, ebx
mov ebp, dword [esp + 0x94]
nop
mov eax, ebx
add al, 0xc5
xor al, byte [esp + ebx + 0x44]
add al, 0x27
mov byte [esp + ebx + 0x44], al
inc ebx
cmp ebx, 0x3c
jne 0x4098d0
add ebp, edx
mov word [esp], 0x989f
mov byte [esp + 2], 0x4a
mov dword [esp + 3], 0
mov byte [esp + 7], 0
xor edx, edx
mov eax, edx
add al, 0x13
xor al, byte [esp + edx]
add al, 0xa1
mov byte [esp + edx], al
inc edx
cmp edx, 8
jne 0x409900
movzx ebx, byte [esp]
mov edx, ebp
test bl, bl
je 0x40993b
lea edi, [esp + 1]
mov edx, ebp
nop
nop
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 0x409930
mov byte [edx], 0
movzx ebx, byte [ecx + 0x60]
test bl, bl
je 0x40995b
lea edi, [ecx + 0x61]
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409950
mov byte [edx], 0
movzx ebx, byte [esp + 0x44]
test bl, bl
je 0x40997b
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 0x409970
mov byte [edx], 0
movzx ebx, byte [esi]
test bl, bl
je 0x40999b
inc esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409990
mov byte [edx], 0
movzx eax, byte [esp + 0x10]
test al, al
je 0x4099bb
lea edi, [esp + 0x11]
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [edi]
inc edi
test al, al
jne 0x4099b0
mov byte [edx], 0
movzx eax, byte [esp + 0x18]
test al, al
mov dword [esp + 0xc], ecx
mov dword [esp + 8], ebp
je 0x4099eb
lea edi, [esp + 0x19]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [edi]
inc edi
test al, al
jne 0x4099e0
mov byte [edx], 0
mov esi, dword [esp + 0xa0]
mov ecx, esi
shr ecx, 2
mov ebp, dword [esp + 0x9c]
mov eax, ebp
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov ebx, esi
and ebx, 0xfffffffc
add edx, ebx
add ebx, ebp
mov ecx, esi
and ecx, 3
mov eax, esi
not eax
or eax, 0xfffffffe
lea ebp, [ecx + eax]
inc ebp
shr ecx, 1
mov eax, ebx
mov edi, edx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
add edx, ebp
mov eax, esi
test al, 1
je 0x409a3c
movzx eax, byte [ebx + ebp]
mov byte [edx], al
inc edx
mov dword [esp + 0x18], 0x1037f7d
mov byte [esp + 0x1c], 0x74
mov word [esp + 0x1d], 0
mov byte [esp + 0x1f], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ecx + 0x18]
lea edi, [ecx - 0x6848da7]
mov ebx, edi
xor ebx, 0xdbccd79b
and edi, 0x20332064
add edi, edi
sub edi, ebx
mov ebx, edi
and ebx, eax
add edi, eax
add ebx, ebx
sub edi, ebx
mov eax, edi
and eax, 0x49
xor edi, 0x49
lea eax, [edi + eax*2]
inc al
mov byte [esp + ecx + 0x18], al
xor ecx, 7
mov eax, 8
sub eax, ecx
test ecx, ecx
mov ecx, eax
jne 0x409a60
mov dword [esp + 0x44], 0x42436f6d
mov byte [esp + 0x48], 0x94
mov dword [esp + 0x49], 0
mov dword [esp + 0x4c], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx + 0x44]
lea esi, [ecx - 0x58df8f9a]
mov ebx, esi
and ebx, edi
lea ebp, [ecx + edi]
add ebp, 0xa7207066
not ebp
lea eax, [ebx*2]
add eax, ebp
and eax, esi
mov esi, eax
and esi, 0xa720707d
mov ebp, eax
and ebp, 2
mov ebx, eax
or ebx, 0xfffffffd
inc ebx
imul ebx, esi
or eax, 2
imul eax, ebp
sub ebx, eax
add edi, ecx
lea eax, [ebx + edi]
add eax, 0x637e3e67
mov esi, eax
and esi, 1
xor eax, 1
lea eax, [eax + esi*2]
mov byte [esp + ecx + 0x44], al
lea eax, [ecx + ecx]
and eax, 2
mov esi, eax
and esi, ecx
or eax, ecx
xor eax, 1
add eax, esi
mov ecx, eax
cmp eax, 0xc
jb 0x409ad0
movzx ecx, byte [esp + 0x44]
test cl, cl
je 0x409b6d
lea edi, [esp + 0x45]
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409b60
jmp 0x409b75
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 8]
mov byte [edx], 0
movzx ecx, byte [esi + 0x60]
test cl, cl
je 0x409b9b
lea edi, [esi + 0x61]
nop
nop
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 0x409b90
mov byte [edx], 0
movzx ecx, byte [esp + 0x18]
test cl, cl
je 0x409bbb
lea edi, [esp + 0x19]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409bb0
mov byte [edx], 0
mov eax, edx
not eax
and eax, ebx
not ebx
and ebx, edx
sub ebx, eax
add dword [esi + 0x80], ebx
add esp, 0x80
pop esi
pop edi
pop ebx
pop ebp
ret 0x10