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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x110
cmp dword [ecx + 0x20], 0
je 0x40a123
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00406410
add esp, 4
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xc], eax
movzx eax, byte [esi]
imul ecx, eax, 0xcd
shr ecx, 0xa
and ecx, 0xfffffffe
lea ecx, [ecx + ecx*4]
sub al, cl
movzx eax, al
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [esp + 2], al
mov byte [esp + 3], 0
mov dword [esp + 0x10], edx
lea eax, [edx + 0x400]
push eax
call fcn.00408630
add esp, 4
mov edi, eax
mov dword [esp + 0x74], 0x71b1618
mov byte [esp + 0x78], 0xe4
mov dword [esp + 0x79], 0
mov dword [esp + 0x7c], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x74]
mov ecx, eax
or ecx, 0x3fc2bc32
mov ebx, eax
and ebx, 2
add ecx, ebx
add ecx, 0x93a90276
xor ecx, edx
mov edx, ecx
xor edx, 0x49
and ecx, 0x36
add ecx, ecx
sub ecx, edx
inc cl
mov byte [esp + eax + 0x74], cl
mov edx, eax
xor edx, 0xfffffffe
mov ecx, eax
or ecx, 1
and ecx, edx
mov edx, ecx
and edx, 0xd
mov ebx, ecx
and ebx, 2
or ecx, 2
imul ecx, ebx
xor ebx, 2
imul ebx, edx
xor eax, 1
add eax, ecx
add eax, ebx
cmp eax, 0xc
jb 0x409d60
lea ebx, [esp + 0x74]
mov ecx, esi
push 0x44847c
push ebx
push edi
call fcn.00409560
mov dword [esp + 0x74], 0x69cec4f4
mov byte [esp + 0x78], 0
mov eax, 0x31528217
movzx ecx, byte [esp + eax - 0x315281a3]
mov edx, ecx
not edx
or edx, eax
add dl, dl
add dl, cl
neg dl
movzx ecx, dl
add ecx, eax
add cl, 0x8b
mov byte [esp + eax - 0x315281a3], cl
inc eax
cmp eax, 0x3152821c
jne 0x409de0
lea eax, [esp + 2]
mov ecx, esi
push eax
push ebx
mov dword [esp + 0xc], edi
push edi
call fcn.00409560
mov eax, dword [str.xAeOdp__beast]
mov dword [esp + 0x74], 0x1fbab0b4
mov word [esp + 0x78], 0
xor ebp, ebp
mov edi, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, edi
or ecx, 0x3a
add ecx, ebp
add ecx, ecx
mov edx, ebp
xor edx, 0x45
sub edx, ecx
add dl, 0xfe
xor dl, byte [esp + ebp + 0x74]
mov cl, 0x5d
sub cl, dl
mov byte [esp + ebp + 0x74], cl
lea ecx, [ebp + 1]
dec edi
mov ebp, ecx
cmp ecx, 6
jne 0x409e40
mov ecx, esi
push eax
push ebx
mov edi, dword [esp + 0xc]
push edi
call fcn.00409560
mov dword [esp + 0x74], 0x35383001
mov dword [esp + 0x78], 0x83d3429
mov dword [esp + 0x7c], 0x3a3b3c09
mov byte [esp + 0x80], 0x80
mov dword [esp + 0x81], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xe3
xor cl, byte [esp + eax + 0x74]
add cl, 0x91
mov byte [esp + eax + 0x74], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x11
jb 0x409eb0
mov dword [esp + 0x14], 0x23968281
mov word [esp + 0x18], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x88
xor cl, byte [esp + eax + 0x14]
add cl, 0x58
mov byte [esp + eax + 0x14], cl
inc eax
cmp eax, 6
jne 0x409ef0
lea eax, [esp + 0x14]
mov ecx, esi
push ebx
push eax
push edi
call fcn.00409560
mov dword [esp + 0x74], 0xdec6d8de
mov byte [esp + 0x78], 0x7c
mov dword [esp + 0x79], 0
mov byte [esp + 0x7d], 0
mov eax, 0xa4fb1194
mov ecx, 0x5b04ee6b
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + eax + 0x5b04eee0]
mov edx, eax
and edx, ebp
add edx, edx
sub edx, ebp
add edx, ecx
and edx, eax
add edx, edx
mov edi, edx
xor edi, eax
and edx, ecx
add edx, edx
sub edx, edi
mov edi, edx
xor edi, ebp
not edx
and edx, ebp
add edx, edx
sub edx, edi
add dl, 0x1c
mov byte [esp + eax + 0x5b04eee0], dl
inc eax
dec ecx
cmp eax, 0xa4fb119e
jne 0x409f40
mov dword [esp + 8], esi
mov ecx, esi
push dword [esp + 0x10]
push dword [esp + 0x10]
push ebx
push dword [esp + 0x10]
call fcn.00409870
mov dword [esp + 0x14], 0x93659153
mov dword [esp + 0x18], 0xaf22ad5a
mov dword [esp + 0x1c], 0xab5ca955
mov dword [esp + 0x20], 0xa793a528
mov dword [esp + 0x24], 0xa32ba14c
mov dword [esp + 0x28], 0xbf43bd4c
mov dword [esp + 0x2c], 0xbb9ab972
mov dword [esp + 0x30], 0xb73bb541
mov dword [esp + 0x34], 0xb33eb144
mov dword [esp + 0x38], 0x4fbe4db5
mov dword [esp + 0x3c], 0x4bb849a9
mov dword [esp + 0x40], 0x477145c8
mov dword [esp + 0x44], 0x43b541be
mov dword [esp + 0x48], 0x5fab5dae
mov dword [esp + 0x4c], 0x5ba6596d
mov dword [esp + 0x50], 0x57da55b5
mov dword [esp + 0x54], 0x539951b1
mov dword [esp + 0x58], 0x6f8c6d4c
mov dword [esp + 0x5c], 0x6be7699f
mov dword [esp + 0x60], 0x679a6592
mov dword [esp + 0x64], 0x63906181
mov dword [esp + 0x68], 0x7fbb7df5
mov word [esp + 0x6c], 0x7978
mov byte [esp + 0x72], 0
mov dword [esp + 0x6e], 0
mov eax, 0xf695ad5c
mov ecx, 0xa3
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x96a52b8]
mov edi, ecx
and edi, 0x92
mov ebp, eax
and ebp, 0x6d
or ebp, edi
xor ebp, 0x6d
and ebp, ecx
mov edi, edx
not edi
or edi, ebp
mov ebp, edi
not ebp
or edx, eax
or edx, ebp
lea ebp, [edi + edx]
add edx, edi
inc edx
mov edi, edx
and edi, 0x33
mov esi, edx
and esi, 0xcc
xor edx, 0x33
add edx, ebp
inc edx
sub edx, esi
add edx, edi
inc dl
mov byte [esp + eax + 0x96a52b8], dl
inc eax
dec ecx
cmp eax, 0xf695adbb
jne 0x40a070
movzx eax, word [esp + 0x14]
test ax, ax
je 0x40a0f1
lea ebx, [esp + 0x74]
lea ecx, [esp + 0x16]
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40a0e0
mov word [ebx], 0
mov edx, dword [esp + 8]
movzx ecx, byte [edx + 0x60]
test cl, cl
je 0x40a12a
lea eax, [edx + 0x61]
mov edi, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [ebx], cx
add ebx, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x40a110
jmp 0x40a12e
mov bl, 1
jmp 0x40a1e6
mov edi, dword [esp + 4]
mov dword [ebx], 0xa000d
mov word [ebx + 4], 0
mov eax, dword [edx + 0x80]
mov dword [esp + 0x14], 0x39953bed
mov dword [esp + 0x18], 0x25b127a8
mov dword [esp + 0x1c], 0x2324
mov byte [esp + 0x20], 0
xor ecx, ecx
nop
lea edx, [ecx - 0x1e94c726]
mov esi, edx
and esi, 0x4b
xor edx, 0x4b
lea edx, [edx + esi*2]
add dl, 0x26
xor dl, byte [esp + ecx + 0x14]
add dl, 0x89
mov byte [esp + ecx + 0x14], dl
add ecx, 0x509c67f7
mov edx, ecx
xor edx, 0xaf63980a
and ecx, 0x80a
lea ecx, [edx + ecx*2]
cmp ecx, 0xd
jb 0x40a160
lea ecx, [esp + 0x74]
push 0x493e0
push eax
push edi
push 0
push 0
push ecx
lea eax, [esp + 0x2c]
push eax
call fcn.0040cb70
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00408640
add esp, 4
mov esi, dword [esp + 8]
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0x80]
mov edx, eax
and edx, ecx
xor eax, ecx
lea eax, [eax + edx*2]
mov dword [esi + 4], eax
mov dword [esi + 0x80], 0
mov eax, ebx
add esp, 0x110
pop esi
pop edi
pop ebx
pop ebp
ret