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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xa8
cmp dword [ecx + 0x20], 0
je 0x40e1df
mov esi, ecx
movzx eax, byte [ecx]
lea ecx, [esp + 0xa4]
push 0xa
push 4
push ecx
push eax
call fcn.0040e1f0
add esp, 0x10
mov dword [esp + 0x18], eax
lea eax, [esi + 0x10]
push eax
call fcn.0040abf0
add esp, 4
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x1c], eax
mov dword [esp], ecx
lea eax, [ecx + 0x400]
push eax
call fcn.0040cc60
add esp, 4
mov dword [esp + 0x20], 0x9b97a290
mov byte [esp + 0x24], 0x3c
mov dword [esp + 0x25], 0
mov byte [esp + 0x29], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
mov ecx, edx
add cl, 0xca
xor cl, byte [esp + edx + 0x20]
add cl, 0xe
mov byte [esp + edx + 0x20], cl
inc edx
cmp edx, 0xa
jne 0x40dd80
lea ebp, [esp + 0x20]
mov ecx, esi
push 0x4507d0
push ebp
mov dword [esp + 0xc], eax
push eax
call fcn.0040d6d0
mov dword [esp + 0x20], 0xe11a1c14
mov word [esp + 0x24], 0
mov eax, 0x76fa5aa9
mov edi, 0x556
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax - 0x76fa5a89]
mov ecx, edi
and ecx, 0x450
mov edx, eax
and edx, 0x4278580f
or edx, ecx
xor edx, ebx
mov ecx, 1
sub ecx, edx
and ecx, 1
and edx, 0xfe
xor edx, 0xf1
sub edx, ecx
add dl, 0xb3
mov byte [esp + eax - 0x76fa5a89], dl
inc eax
dec edi
cmp eax, 0x76fa5aaf
jne 0x40ddd0
mov ecx, esi
push dword [esp + 0x18]
push ebp
mov edi, dword [esp + 0xc]
push edi
call fcn.0040d6d0
mov eax, dword [str.c2CoW0__newsource2]
mov dword [esp + 0x20], 0x690e0408
mov word [esp + 0x24], 0
xor ecx, ecx
nop
nop
mov edx, ecx
add dl, 0xe7
xor dl, byte [esp + ecx + 0x20]
add dl, 0x7d
mov byte [esp + ecx + 0x20], dl
inc ecx
cmp ecx, 6
jne 0x40de40
mov ecx, esi
push eax
push ebp
push edi
call fcn.0040d6d0
mov dword [esp + 0x20], 0xefe4ece3
mov dword [esp + 0x24], 0xdcd3d8cb
mov dword [esp + 0x28], 0xd6d5c8db
mov byte [esp + 0x2c], 0xa4
mov dword [esp + 0x2d], 0
mov word [esp + 0x31], 0
mov eax, 0x2e2a8ee3
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [ebp]
mov edx, ecx
not edx
and edx, 0xdc
mov edi, ecx
xor edi, 0xdc
or ecx, 0x23
and ecx, edi
or ecx, edx
mov edx, eax
xor edx, 0x23
mov edi, eax
or edi, 0xdc
and edi, edx
lea edx, [eax - 0x2e2a8ec0]
not edx
and edx, 0x23
or edx, edi
xor edx, ecx
add dl, 0x74
mov byte [ebp], dl
inc ebp
dec eax
cmp eax, 0x2e2a8ed0
jne 0x40dea0
mov dword [esp + 8], 0x930e3231
mov byte [esp + 0xc], 0
mov eax, 0x24
mov ecx, 0xdb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x1c]
lea edi, [edx + edx]
not edi
add edi, edx
mov ebx, ecx
and ebx, edx
not edx
or edx, edi
and edx, eax
or edx, ebx
add dl, 0x4c
mov byte [esp + eax - 0x1c], dl
inc eax
dec ecx
cmp eax, 0x29
jne 0x40df10
lea ebp, [esp + 0x20]
lea eax, [esp + 8]
mov ecx, esi
push ebp
push eax
mov edi, dword [esp + 0xc]
push edi
call fcn.0040d6d0
mov dword [esp + 0x20], 0x61e1806
mov byte [esp + 0x24], 0x64
mov dword [esp + 0x25], 0
mov dword [esp + 0x28], 0
xor eax, eax
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x68
xor cl, byte [esp + eax + 0x20]
add cl, 0xf8
mov byte [esp + eax + 0x20], cl
inc eax
cmp eax, 0xc
jne 0x40df70
mov ecx, esi
push dword [esp]
push dword [esp + 0x20]
push ebp
push edi
call fcn.0040d970
mov eax, dword [esi + 0x60]
mov dword [esp], eax
mov dword [esp + 0x20], 0x21972779
mov dword [esp + 0x24], 0x3dae2396
mov dword [esp + 0x28], 0x39883f83
mov dword [esp + 0x2c], 0x354d3bb4
mov dword [esp + 0x30], 0x31bd3798
mov dword [esp + 0x34], 0xd8d3380
mov dword [esp + 0x38], 0x96e0f46
mov dword [esp + 0x3c], 0x5850bbf
mov dword [esp + 0x40], 0x18a07b0
mov dword [esp + 0x44], 0x1db203bb
mov dword [esp + 0x48], 0x19ac1fbf
mov dword [esp + 0x4c], 0x156b1b94
mov dword [esp + 0x50], 0x11a717aa
mov dword [esp + 0x54], 0x6da513a2
mov dword [esp + 0x58], 0x69d26f1b
mov dword [esp + 0x5c], 0x65e66bcb
mov dword [esp + 0x60], 0x612367c7
mov dword [esp + 0x64], 0x7dc06300
mov dword [esp + 0x68], 0x79f17fcd
mov dword [esp + 0x6c], 0x75c67bce
mov dword [esp + 0x70], 0x71c477d7
mov dword [esp + 0x74], 0x4d3573fb
mov dword [esp + 0x78], 0x49f14fee
mov dword [esp + 0x7c], 0x45054b00
mov dword [esp + 0x80], 0x41f947f8
mov dword [esp + 0x84], 0x5df9430f
mov dword [esp + 0x88], 0x59e25fec
mov dword [esp + 0x8c], 0x55e75be9
mov dword [esp + 0x90], 0x51e957ef
mov dword [esp + 0x94], 0xade053e2
mov dword [esp + 0x98], 0xa9ddaf13
mov dword [esp + 0x9c], 0xa5b0abbf
mov dword [esp + 0xa0], 0xa7a4
mov ecx, 0x4bcc676
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [ebp]
mov edi, ecx
and edi, 0x49881f6
lea ebx, [ecx - 0x58000000]
and ebx, 0xa8244609
or ebx, edi
mov edi, edx
xor edi, 9
xor edx, 0xb9244609
or edx, edi
xor edx, ebx
mov ebx, edx
and ebx, 0x15888052
xor ebx, 0x468ba052
mov edi, ebx
and edi, 0x50
mov eax, ebx
and eax, 2
or ebx, 2
imul ebx, eax
xor eax, 2
imul eax, edi
xor edx, 0xa4
add edx, ebx
add edx, eax
inc dl
mov byte [ebp], dl
inc ebp
dec ecx
cmp ecx, 0x4bcc5f2
jne 0x40e0d0
mov dword [esp + 8], 0x39953b6d
mov dword [esp + 0xc], 0x25b127a8
mov word [esp + 0x10], 0x2324
mov dword [esp + 0x12], 0
mov ecx, 0x4192f18b
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0x4192f183]
xor edx, ecx
mov eax, edx
and eax, 0xcd
xor eax, 0x28000acd
and edx, 0x41103032
sub edx, eax
add edx, 0xe0a41415
mov eax, edx
and eax, 0x48
xor edx, 0x48
lea eax, [edx + eax*2]
add al, 0xb9
mov byte [esp + ecx - 0x4192f183], al
inc ecx
cmp ecx, 0x4192f199
jne 0x40e160
lea eax, [esp + 0x20]
push reloc.ole32.dll_CoInitializeSecurity
push dword [esp + 4]
mov edi, dword [esp + 0xc]
push edi
push 0
push 0
push eax
lea eax, [esp + 0x20]
push eax
call fcn.00410310
add esp, 0x1c
mov ebx, eax
push edi
call fcn.0040cc70
add esp, 4
mov eax, dword [esi + 0x60]
add dword [esi + 4], eax
mov dword [esi + 0x60], 0
jmp 0x40e1e1
mov bl, 1
mov eax, ebx
add esp, 0xa8
pop esi
pop edi
pop ebx
pop ebp
ret