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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x8c
mov ebp, dword [esp + 0xa0]
mov dword [esp + 4], 0x22ea1e19
mov dword [esp + 8], 0x6081410
lea ebx, [esp + 0xc]
mov byte [esp + 0xc], 0x60
mov dword [esp + 0xd], 0
mov byte [esp + 0x11], 0
mov eax, 0x6369596a
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x63695966]
lea edx, [eax - 0x63695900]
and edx, ecx
or ecx, eax
xor ecx, edx
mov edx, ecx
and edx, 0x3d
xor edx, 0x9c16823d
and ecx, 0x612941c2
sub ecx, edx
add ecx, 0xef140ed
mov edx, ecx
and edx, 0x3d
add edx, edx
xor ecx, 0xc2
sub edx, ecx
mov byte [esp + eax - 0x63695966], dl
inc eax
cmp eax, 0x63695978
jne 0x40cd50
lea eax, [esp + 0x83]
lea esi, [esp + 4]
mov edx, esi
mov edi, eax
mov ecx, 2
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0x8b]
xor ecx, ecx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
movzx ecx, byte [esp + 0xc]
mov byte [esp + 0x8b], cl
mov dword [esp + 4], 0x9fed99df
mov dword [esp + 8], 0xa3d69dee
mov dword [esp + 0xc], 0xa7d4a1c5
mov dword [esp + 0x10], 0xab87a5d0
mov dword [esp + 0x14], 0xafd7a9fc
mov dword [esp + 0x18], 0xb3d7addc
mov dword [esp + 0x1c], 0xb796b18e
mov dword [esp + 0x20], 0xbbcab5d5
mov dword [esp + 0x24], 0xbfd2b9c8
mov dword [esp + 0x28], 0xc3a5bdd5
mov dword [esp + 0x2c], 0xc7b2c1a1
mov dword [esp + 0x30], 0xcbb9c5ad
mov dword [esp + 0x34], 0xcffdc9ba
mov dword [esp + 0x38], 0xd3ffcdb4
mov dword [esp + 0x3c], 0xd7add1ab
mov dword [esp + 0x40], 0xdbf7d5af
mov dword [esp + 0x44], 0xdfadd9b2
mov dword [esp + 0x48], 0xe38fddaa
mov dword [esp + 0x4c], 0xe793e1cd
mov dword [esp + 0x50], 0xeb86e592
mov dword [esp + 0x54], 0xef9ce98d
mov dword [esp + 0x58], 0xf381ed8b
mov dword [esp + 0x5c], 0xf793f194
mov dword [esp + 0x60], 0xfbf7f590
mov dword [esp + 0x64], 0xfffef9f6
mov dword [esp + 0x68], 0
mov ecx, 0x449a3e1a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx - 0x449a3e16]
mov edx, ebx
and edx, ecx
add dl, dl
sub bl, dl
movzx edx, bl
add edx, ecx
add dl, 0x7e
mov byte [esp + ecx - 0x449a3e16], dl
inc ecx
cmp ecx, 0x449a3e82
jne 0x40ceb0
mov dword [esp + 0x70], 0x43a3416f
mov dword [esp + 0x74], 0x47af45d4
mov dword [esp + 0x78], 0x4948
mov byte [esp + 0x7c], 0
mov ecx, 0x12a6fb10
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx - 0x12a6faa0]
mov edx, ebx
and edx, ecx
add dl, dl
sub bl, dl
movzx edx, bl
add edx, ecx
add dl, 0xb0
mov byte [esp + ecx - 0x12a6faa0], dl
inc ecx
cmp ecx, 0x12a6fb1d
jne 0x40cf00
mov ecx, esp
lea edx, [esp + 0x70]
push 0
push ecx
push 8
push eax
push esi
push edx
push ebp
call fcn.0040da60
add esp, 0x1c
test al, al
je 0x40d074
mov dword [esp + 4], 0xc65255
mov eax, 0xce
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esi]
lea ecx, [eax - 0x68d36300]
or ecx, edx
mov edi, eax
and edi, edx
not ecx
or ecx, edi
and edx, 8
mov edi, ecx
and edi, 2
mov ebx, edi
xor ebx, 2
imul ebx, edx
or edx, 2
imul edx, edi
xor ecx, 0xa
add ecx, edx
add ecx, ebx
inc cl
mov byte [esi], cl
inc esi
dec eax
cmp eax, 0xca
jne 0x40cf60
xor ecx, ecx
mov eax, dword [esp]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [eax + ecx]
mov dh, byte [esp + ecx + 4]
test dl, dl
je 0x40cfc1
inc ecx
cmp dl, dh
je 0x40cfb0
mov bl, 1
cmp dl, dh
je 0x40d260
mov dword [esp + 4], 0xe5ebe8f9
mov dword [esp + 8], 0x55fce2fb
mov dword [esp + 0xc], 0
mov ecx, 0xd80fd16d
mov edx, 0x27f02e92
nop
nop
nop
movzx edi, byte [esp + ecx + 0x27f02e97]
mov esi, edi
not esi
or esi, ecx
add esi, edi
lea esi, [esi*2 + 2]
lea ebx, [ecx + edi]
mov ebp, edx
sub ebp, edi
and ebp, esi
not esi
and esi, ebx
sub esi, ebp
mov edi, esi
and edi, 0x5e
xor esi, 0xde
lea ebx, [esi + edi*2]
inc bl
mov byte [esp + ecx + 0x27f02e97], bl
inc ecx
dec edx
cmp ecx, 0xd80fd179
jne 0x40cff0
movzx ebx, byte [esp + 4]
mov edx, eax
test bl, bl
je 0x40d07b
lea ecx, [esp + 4]
mov esi, ecx
mov edi, eax
mov edx, eax
jmp 0x40d057
movzx ebx, byte [esi]
test bl, bl
je 0x40d07b
mov bh, byte [edi]
test bh, bh
je 0x40d25e
inc edi
inc esi
lea ebp, [edx + 1]
cmp bh, bl
je 0x40d06e
mov edx, ebp
mov edi, ebp
je 0x40d050
mov esi, ecx
jmp 0x40d050
xor ebx, ebx
jmp 0x40d269
xor ecx, ecx
test edx, edx
je 0x40d25e
mov dword [esp + 4], 0x61f001e
mov dword [esp + 8], 0x13074729
mov dword [esp + 0xc], 0x5b580207
mov dword [esp + 0x10], 0xa021c0a
mov dword [esp + 0x14], 0x73503c15
mov word [esp + 0x18], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 4]
lea edx, [ecx + 0x68]
mov edi, 0x3fcc4a97
sub edi, ecx
xor edx, edi
and edx, esi
xor edx, edi
mov edi, edx
not edi
mov esi, edi
and esi, 0xf5
mov ebx, edx
and ebx, 2
imul ebx, esi
and edi, 2
or esi, 2
imul esi, edi
xor edx, 8
add edx, ebx
add edx, esi
inc dl
mov byte [esp + ecx + 4], dl
mov esi, ecx
xor esi, 0xfffffffe
mov edx, ecx
or edx, 1
and edx, esi
mov edi, edx
and edi, 2
mov esi, edx
or edx, 2
imul edx, edi
xor edi, 2
and esi, 0x1d
imul esi, edi
xor ecx, 1
add ecx, edx
add ecx, esi
cmp ecx, 0x16
jb 0x40d0c0
movzx ebx, byte [esp + 4]
mov ecx, eax
test bl, bl
je 0x40d174
lea edx, [esp + 4]
mov esi, edx
mov edi, eax
mov ecx, eax
jmp 0x40d157
movzx ebx, byte [esi]
test bl, bl
je 0x40d174
mov bh, byte [edi]
test bh, bh
je 0x40d25e
inc edi
inc esi
lea ebp, [ecx + 1]
cmp bh, bl
je 0x40d16e
mov ecx, ebp
mov edi, ebp
je 0x40d150
mov esi, edx
jmp 0x40d150
xor edx, edx
test ecx, ecx
je 0x40d25e
mov ebx, ecx
mov word [esp + 4], 0xb2e
mov byte [esp + 6], 0x4e
mov dword [esp + 7], 0
mov byte [esp + 0xb], 0
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edx + 4]
lea edi, [edx - 0x4392978e]
mov esi, 0x8d
sub esi, edx
xor esi, edi
and esi, ecx
xor esi, edi
mov ecx, 0x2e230a3a
sub ecx, esi
or ecx, 1
add ecx, esi
lea edi, [esi + esi]
or edi, 0xfd
add edi, esi
lea ecx, [edi + ecx*2]
add cl, 0x53
mov byte [esp + edx + 4], cl
mov ecx, edx
not ecx
or ecx, 1
add ecx, edx
or edx, 1
add edx, ecx
inc edx
cmp edx, 8
jb 0x40d1a0
mov ecx, ebx
add ecx, 0x13
movzx ebx, byte [esp + 4]
test bl, bl
je 0x40d230
lea esi, [esp + 4]
mov edi, esi
mov edx, ecx
mov dword [esp + 0x6c], ecx
jmp 0x40d217
movzx ebx, byte [edi]
test bl, bl
je 0x40d234
mov bh, byte [ecx]
test bh, bh
je 0x40d25e
inc ecx
inc edi
lea ebp, [edx + 1]
cmp bh, bl
je 0x40d22a
mov edx, ebp
mov ecx, ebp
je 0x40d210
mov edi, esi
jmp 0x40d210
mov edx, ecx
jmp 0x40d23c
test edx, edx
mov ecx, dword [esp + 0x6c]
je 0x40d25e
mov byte [0x44c0f0], 1
push edx
push ecx
push 0x100
push 0x44c0f2
call fcn.0040ca80
add esp, 0x10
mov eax, dword [esp]
mov bl, 1
jmp 0x40d260
xor ebx, ebx
push eax
call fcn.0043ba30
add esp, 4
mov eax, ebx
add esp, 0x8c
pop esi
pop edi
pop ebx
pop ebp
ret