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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xac
cmp dword [ecx + 0x20], 0
je 0x40de6a
mov esi, ecx
movzx eax, byte [ecx]
lea ecx, [esp + 0xa8]
push 0xa
push 4
push ecx
push eax
call fcn.0040de80
add esp, 0x10
mov dword [esp + 0x1c], eax
lea eax, [esi + 0x10]
push eax
call fcn.0040a5c0
add esp, 4
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
lea eax, [ecx + 0x400]
push eax
call fcn.0040c700
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x20], 0x8b8f9280
mov byte [esp + 0x24], 0x14
mov dword [esp + 0x25], 0
mov edx, 0xc6
nop
nop
nop
nop
nop
movzx eax, byte [esp + edx - 0xa6]
mov ebx, eax
mov edi, eax
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0xdd
mul cl
mov ecx, eax
mov eax, edi
add cl, al
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, edx
add al, 0x22
mov byte [esp + edx - 0xa6], al
inc edx
cmp edx, 0xcf
jne 0x40d9d0
lea ebp, [esp + 0x20]
mov ecx, esi
push 0x4509f8
push ebp
push dword [esp + 8]
call fcn.0040d2d0
mov dword [esp + 0x20], 0x294e44b4
mov byte [esp + 0x24], 0
mov eax, 0xb7
mov ecx, 8
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x97]
lea edi, [edx + edx]
not edi
add edi, edx
and edi, 0x2c
and edx, 0xffffffd3
or edx, edi
mov edi, ecx
and edi, 0xc
mov ebx, eax
and ebx, 0x93
or ebx, edi
xor ebx, edx
add bl, 0x6d
mov byte [esp + eax - 0x97], bl
inc eax
dec ecx
cmp eax, 0xbc
jne 0x40da50
mov ecx, esi
push dword [esp + 0x1c]
push ebp
push dword [esp + 8]
call fcn.0040d2d0
mov eax, dword [str.c2CoW0__LETIM]
mov dword [esp + 0x20], 0x315a4440
mov ecx, 0xe16a12b5
nop
nop
nop
movzx edx, byte [esp + ecx + 0x1e95ed6b]
mov edi, ecx
and edi, edx
or edx, ecx
lea ebx, [edi + edi]
not ebx
add ebx, edi
and ebx, edx
mov edx, ebx
and edx, 0x76
xor ebx, 0x76
lea edx, [ebx + edx*2]
inc dl
mov byte [esp + ecx + 0x1e95ed6b], dl
inc ecx
cmp ecx, 0xe16a12b9
jne 0x40dab0
mov ecx, esi
push eax
push ebp
push dword [esp + 8]
call fcn.0040d2d0
mov dword [esp + 0x20], 0xcbc4c4f7
mov dword [esp + 0x24], 0xfccfc0d7
mov dword [esp + 0x28], 0xf2f5d0ff
mov byte [esp + 0x2c], 0x4c
mov dword [esp + 0x2d], 0
mov dword [esp + 0x30], 0
mov eax, 0xeaa77f69
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [ebp]
mov edx, ecx
not edx
or edx, 0xc3c82fc3
add edx, ecx
inc edx
and ecx, 0x3c
xor ecx, 0x3c37d03c
or edx, ecx
lea ecx, [eax + 0x40000000]
and ecx, 0x2827503c
mov edi, eax
and edi, 0xc2802f43
or edi, ecx
xor edi, edx
xor edi, 0xc3c82fc3
add edi, 0x95457d11
mov ecx, edi
and ecx, 1
xor edi, 1
lea ecx, [edi + ecx*2]
mov byte [ebp], cl
inc ebp
dec eax
cmp eax, 0xeaa77f55
jne 0x40db30
mov dword [esp + 0xc], 0x179a8679
mov word [esp + 0x10], 0
mov eax, 0x88d29806
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x772d6806]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0xe2
mov byte [esp + eax + 0x772d6806], cl
inc eax
cmp eax, 0x88d2980c
jne 0x40dba0
lea edi, [esp + 0x20]
lea ebp, [esp + 0xc]
mov ecx, esi
push edi
push ebp
push dword [esp + 8]
call fcn.0040d2d0
mov dword [esp + 0x20], 0x61e1806
mov byte [esp + 0x24], 0x64
mov word [esp + 0x25], 0
mov byte [esp + 0x27], 0
mov al, 0xd7
mov ecx, 0xd7
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0xb7]
xor dl, al
xor dl, 0x3f
add dl, 0x78
mov byte [esp + ecx - 0xb7], dl
dec al
inc ecx
cmp ecx, 0xdf
jne 0x40dc00
mov ecx, esi
push dword [esp + 8]
push dword [esp + 8]
push edi
push dword [esp + 0xc]
call fcn.0040d530
mov dword [esp + 8], esi
mov eax, dword [esi + 0x60]
mov dword [esp + 4], eax
mov dword [esp + 0x20], 0x57e54907
mov dword [esp + 0x24], 0x53ee55e6
mov dword [esp + 0x28], 0x5fec51fd
mov dword [esp + 0x2c], 0x5b2f5de0
mov dword [esp + 0x30], 0xa71f5904
mov dword [esp + 0x34], 0xa30fa514
mov dword [esp + 0x38], 0xafcea1e6
mov dword [esp + 0x3c], 0xab17ad19
mov dword [esp + 0x40], 0xb70aa91c
mov dword [esp + 0x44], 0xb302b51d
mov dword [esp + 0x48], 0xbf00b111
mov dword [esp + 0x4c], 0xbbc9bd00
mov dword [esp + 0x50], 0x8735b912
mov dword [esp + 0x54], 0x8337853a
mov dword [esp + 0x58], 0x8f2281f5
mov dword [esp + 0x5c], 0x8b368d2d
mov dword [esp + 0x60], 0x97d18929
mov dword [esp + 0x64], 0x933c95f4
mov dword [esp + 0x68], 0x9f239123
mov dword [esp + 0x6c], 0x9b369d2e
mov dword [esp + 0x70], 0xe7589939
mov dword [esp + 0x74], 0xe3a7e55d
mov dword [esp + 0x78], 0xef43e14e
mov dword [esp + 0x7c], 0xeb97ed94
mov dword [esp + 0x80], 0xf75be944
mov dword [esp + 0x84], 0xf35bf589
mov dword [esp + 0x88], 0xff52f140
mov dword [esp + 0x8c], 0xfb55fd4f
mov dword [esp + 0x90], 0xc76bf951
mov dword [esp + 0x94], 0xc37cc57a
mov dword [esp + 0x98], 0xcfbfc16d
mov dword [esp + 0x9c], 0xcbdccdd9
mov word [esp + 0xa0], 0xc9c8
mov dword [esp + 0xa2], 0
mov eax, 0x8965096e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x769af6b2]
xor ecx, eax
mov edx, ecx
and edx, 0x59
xor ecx, 0xd9
lea ecx, [ecx + edx*2]
inc cl
mov byte [esp + eax + 0x769af6b2], cl
inc eax
cmp eax, 0x896509f4
jne 0x40dd80
mov dword [esp + 0xc], 0xb1ed8fdd
mov dword [esp + 0x10], 0xb5d9b320
mov word [esp + 0x14], 0xb7b4
mov dword [esp + 0x16], 0
mov word [esp + 0x1a], 0
xor ecx, ecx
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [ebp]
mov edi, ecx
and edi, 0x7a73c6c6
mov edx, ebx
xor edx, 0x42c61c9c
sub edx, edi
inc edx
mov eax, esi
not eax
and eax, edx
lea edi, [eax + eax]
not edi
add edi, eax
mov eax, edx
or eax, esi
xor edx, esi
add edx, esi
not edx
add edx, eax
and edx, edi
lea eax, [edx + edx]
not eax
add eax, edx
add al, 0xef
mov byte [ebp], al
inc ebp
dec ebx
add ecx, 0xfffffffe
cmp ebx, 0xfffffff0
jne 0x40dde0
lea eax, [esp + 0xc]
push 0x493e0
push dword [esp + 8]
mov esi, dword [esp + 8]
push esi
push 0
push 0
lea ecx, [esp + 0x34]
push ecx
push eax
call fcn.00410260
add esp, 0x1c
mov ebx, eax
push esi
call fcn.0040c710
add esp, 4
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x60]
add dword [ecx + 4], eax
mov dword [ecx + 0x60], 0
jmp 0x40de6c
mov bl, 1
mov eax, ebx
add esp, 0xac
pop esi
pop edi
pop ebx
pop ebp
ret