Function at 0x403f88
Capabilities:
Allocate or change rwx memory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x328
mov eax, dword [0x4101b0]
mov dword [ebp - 0x300], eax
mov dword [ebp - 0x2fc], 0
call fcn.00404439
sub eax, 6
mov dword [ebp - 0x18], eax
lea ecx, [ebp - 4]
push ecx
lea edx, [ebp - 0x2f8]
push edx
lea eax, [ebp - 0x1f4]
push eax
push 0
call fcn.00403cad
add esp, 0x10
test eax, eax
je 0x40441f
push 4
push 0x1000
mov ecx, dword [ebp - 4]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [ebp - 0x14], eax
mov edx, dword [ebp - 4]
push edx
mov eax, dword [0x4102bc]
push eax
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.0040c3c0
add esp, 0xc
cmp dword [0x40fd10], 0
je 0x40401e
push 0x8000
push 0
mov edx, dword [0x4102bc]
push edx
call dword [sym.imp.KERNEL32.dll_VirtualFree]
lea eax, [ebp - 0x2f8]
push eax
lea ecx, [ebp - 8]
push ecx
lea edx, [ebp - 0xc]
push edx
mov eax, dword [ebp - 4]
push eax
mov ecx, dword [ebp - 0x2fc]
push ecx
mov edx, dword [ebp - 0x14]
push edx
call fcn.004044d9
add esp, 0x18
test eax, eax
jne 0x404060
push 0x8000
push 0
mov eax, dword [ebp - 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_VirtualFree]
xor eax, eax
jmp 0x404435
push 0x8000
push 0
mov ecx, dword [ebp - 0x14]
push ecx
call dword [sym.imp.KERNEL32.dll_VirtualFree]
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov dword [ebp - 0x324], eax
mov dword [ebp - 0x304], 0x4102bc
call fcn.00403f63
mov dword [0x40ff14], eax
mov dword [ebp - 0x314], 0x40ff14
lea edx, [ebp - 0x10]
push edx
push 0x40
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp - 0x300]
push ecx
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
jne 0x4040bd
xor eax, eax
jmp 0x404435
push 0x40
push 0x1000
push 0x64
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [0x40fd28], eax
mov dword [ebp - 0x320], 0
mov edx, dword [0x40fd28]
add edx, dword [ebp - 0x320]
mov byte [edx], 0x6a
mov eax, dword [ebp - 0x320]
add eax, 1
mov dword [ebp - 0x320], eax
mov ecx, dword [0x40fd28]
add ecx, dword [ebp - 0x320]
mov byte [ecx], 0
mov edx, dword [ebp - 0x320]
add edx, 1
mov dword [ebp - 0x320], edx
mov eax, dword [0x40fd28]
add eax, dword [ebp - 0x320]
mov byte [eax], 0x68
mov ecx, dword [ebp - 0x320]
add ecx, 1
mov dword [ebp - 0x320], ecx
push 4
lea edx, [ebp - 0xc]
push edx
mov eax, dword [0x40fd28]
add eax, dword [ebp - 0x320]
push eax
call fcn.0040c3c0
add esp, 0xc
mov ecx, dword [ebp - 0x320]
add ecx, 4
mov dword [ebp - 0x320], ecx
mov edx, dword [0x40fd28]
add edx, dword [ebp - 0x320]
mov byte [edx], 0x68
mov eax, dword [ebp - 0x320]
add eax, 1
mov dword [ebp - 0x320], eax
push 4
push 0x40ff1c
mov ecx, dword [0x40fd28]
add ecx, dword [ebp - 0x320]
push ecx
call fcn.0040c3c0
add esp, 0xc
mov edx, dword [ebp - 0x320]
add edx, 4
mov dword [ebp - 0x320], edx
mov eax, dword [0x40fd28]
add eax, dword [ebp - 0x320]
mov byte [eax], 0x68
mov ecx, dword [ebp - 0x320]
add ecx, 1
mov dword [ebp - 0x320], ecx
push 4
lea edx, [ebp - 0x300]
push edx
mov eax, dword [0x40fd28]
add eax, dword [ebp - 0x320]
push eax
call fcn.0040c3c0
add esp, 0xc
mov ecx, dword [ebp - 0x320]
add ecx, 4
mov dword [ebp - 0x320], ecx
mov edx, dword [0x40fd28]
add edx, dword [ebp - 0x320]
mov byte [edx], 0x68
mov eax, dword [ebp - 0x320]
add eax, 1
mov dword [ebp - 0x320], eax
push 4
lea ecx, [ebp - 0x324]
push ecx
mov edx, dword [0x40fd28]
add edx, dword [ebp - 0x320]
push edx
call fcn.0040c3c0
add esp, 0xc
mov eax, dword [ebp - 0x320]
add eax, 4
mov dword [ebp - 0x320], eax
mov ecx, dword [0x40fd28]
add ecx, dword [ebp - 0x320]
mov byte [ecx], 0xff
mov edx, dword [ebp - 0x320]
add edx, 1
mov dword [ebp - 0x320], edx
mov eax, dword [0x40fd28]
add eax, dword [ebp - 0x320]
mov byte [eax], 0x15
mov ecx, dword [ebp - 0x320]
add ecx, 1
mov dword [ebp - 0x320], ecx
push 4
lea edx, [ebp - 0x314]
push edx
mov eax, dword [0x40fd28]
add eax, dword [ebp - 0x320]
push eax
call fcn.0040c3c0
add esp, 0xc
mov ecx, dword [ebp - 0x320]
add ecx, 4
mov dword [ebp - 0x320], ecx
mov edx, dword [0x40fd28]
add edx, dword [ebp - 0x320]
mov byte [edx], 0x8b
mov eax, dword [ebp - 0x320]
add eax, 1
mov dword [ebp - 0x320], eax
mov ecx, dword [0x40fd28]
add ecx, dword [ebp - 0x320]
mov byte [ecx], 0xe5
mov edx, dword [ebp - 0x320]
add edx, 1
mov dword [ebp - 0x320], edx
mov eax, dword [0x40fd28]
add eax, dword [ebp - 0x320]
mov byte [eax], 0x5d
mov ecx, dword [ebp - 0x320]
add ecx, 1
mov dword [ebp - 0x320], ecx
mov edx, dword [0x40fd28]
add edx, dword [ebp - 0x320]
mov byte [edx], 0x8b
mov eax, dword [ebp - 0x320]
add eax, 1
mov dword [ebp - 0x320], eax
mov ecx, dword [0x40fd28]
add ecx, dword [ebp - 0x320]
mov byte [ecx], 0xe5
mov edx, dword [ebp - 0x320]
add edx, 1
mov dword [ebp - 0x320], edx
mov eax, dword [0x40fd28]
add eax, dword [ebp - 0x320]
mov byte [eax], 0x5d
mov ecx, dword [ebp - 0x320]
add ecx, 1
mov dword [ebp - 0x320], ecx
mov edx, dword [0x40fd28]
add edx, dword [ebp - 0x320]
mov byte [edx], 0xe9
mov eax, dword [ebp - 0x320]
add eax, 1
mov dword [ebp - 0x320], eax
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x30c], ecx
mov edx, dword [0x40fd28]
sub edx, dword [ebp - 0x30c]
sub edx, 5
mov dword [0x40ff10], edx
mov eax, dword [ebp - 0x30c]
mov dword [ebp - 0x328], eax
mov ecx, dword [ebp - 8]
mov dword [ebp - 8], ecx
mov edx, dword [ebp - 8]
sub edx, dword [0x40fd28]
mov eax, dword [ebp - 0x320]
add eax, 4
sub edx, eax
mov dword [ebp - 0x308], edx
push 4
lea ecx, [ebp - 0x308]
push ecx
mov edx, dword [0x40fd28]
add edx, dword [ebp - 0x320]
push edx
call fcn.0040c3c0
add esp, 0xc
mov byte [ebp - 0x31c], 0xe9
push 4
push 0x40ff10
lea eax, [ebp - 0x31b]
push eax
call fcn.0040c3c0
add esp, 0xc
push 0
push 5
lea ecx, [ebp - 0x31c]
push ecx
mov edx, dword [ebp - 0x328]
push edx
mov eax, dword [ebp - 0x324]
push eax
call dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
mov dword [ebp - 0x310], eax
jmp 0x404433
push 0x10
push 0x40144c
push 0x401454
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
xor eax, eax
mov esp, ebp
pop ebp
ret