Function at 0x4013e6
Capabilities:
Allocate or change rwx memory

Disassembly:
push ebp
mov ebp, esp
pushal
cmp dword [ebp + 8], 0
jne 0x4013f8
mov eax, dword [0x40f900]
mov dword [ebp + 8], eax
cmp dword [ebp + 0xc], 0
jne 0x401403
popal
leave
ret 0x10
push str.Kernel32.dll
call sub.kernel32.dll_LoadLibraryA
push str.CreateThread
push eax
call sub.kernel32.dll_GetProcAddress
cmp eax, dword [ebp + 0xc]
jne 0x401468
mov edx, eax
mov eax, 0x40b110
jmp 0x401429
add eax, 0x10
cmp dword [eax], 0
jne 0x401426
mov dword [eax + 8], edx
mov dword [eax + 4], 0xffffffff
mov edx, dword [0x40f12c]
sub edx, 0x100
mov dword [eax], edx
mov eax, dword [ebp + 0x10]
mov dword [eax], edx
push 0
push 2
push 0x40b001
push edx
push dword [ebp + 8]
call sub.kernel32.dll_WriteProcessMemory
inc dword [0x40f110]
popal
leave
ret 0x10
push 0x40b108
push 0x40
push 2
push dword [ebp + 0xc]
push dword [ebp + 8]
call sub.kernel32.dll_VirtualProtectEx
cmp dword [ebp + 0x14], 1
jne 0x4015d0
mov eax, 0x40b110
mov ecx, dword [0x40f110]
mov edx, dword [ebp + 0xc]
jmp 0x4014be
cmp dword [eax + 8], edx
je 0x4014a1
add eax, 0x10
dec ecx
jmp 0x4014be
push 0x40b108
push dword [0x40b108]
push 2
push dword [ebp + 0xc]
push dword [ebp + 8]
call sub.kernel32.dll_VirtualProtectEx
popal
leave
ret 0x10
cmp ecx, 0
ja 0x401496
push 0x40
push 0x1000
push 0x1000
push 0
push dword [ebp + 8]
call sub.kernel32.dll_VirtualAllocEx
mov edi, dword [ebp + 0x10]
mov dword [edi], eax
sub eax, dword [ebp + 0xc]
sub eax, 5
mov dword [0x40b10c], eax
push 0
push 0x100
push 0x40b008
push dword [ebp + 0xc]
push dword [ebp + 8]
call sub.kernel32.dll_ReadProcessMemory
mov esi, 0x40b008
xor ecx, ecx
jmp 0x401512
call fcn.00407ad7
add ecx, eax
add esi, eax
cmp ecx, 5
jb 0x401509
mov eax, dword [edi]
push ecx
push 0
push 2
push 0x40b001
push eax
push dword [ebp + 8]
call sub.kernel32.dll_WriteProcessMemory
mov eax, dword [edi]
add eax, 2
pop ecx
push ecx
push 0
push ecx
push 0x40b008
push eax
push dword [ebp + 8]
call sub.kernel32.dll_WriteProcessMemory
push 0
push 1
push section..data
push dword [ebp + 0xc]
push dword [ebp + 8]
call sub.kernel32.dll_WriteProcessMemory
mov eax, dword [ebp + 0xc]
inc eax
push 0
push 4
push 0x40b10c
push eax
push dword [ebp + 8]
call sub.kernel32.dll_WriteProcessMemory
pop ecx
mov esi, 0x40b110
jmp 0x401579
add esi, 0x10
cmp dword [esi], 0
jne 0x401576
mov eax, dword [ebp + 0xc]
mov dword [esi + 8], eax
mov eax, dword [edi]
mov dword [esi + 4], 1
mov dword [esi], eax
mov dword [esi + 0xc], ecx
add eax, 2
add eax, ecx
mov ebx, eax
add eax, 5
mov edx, dword [ebp + 0xc]
add edx, ecx
sub edx, eax
mov dword [0x40b10c], edx
push 0
push 1
push section..data
push ebx
push dword [ebp + 8]
call sub.kernel32.dll_WriteProcessMemory
inc ebx
push 0
push 4
push 0x40b10c
push ebx
push dword [ebp + 8]
call sub.kernel32.dll_WriteProcessMemory
jmp 0x401647
mov eax, 0x40b110
mov ecx, dword [0x40f110]
mov edx, dword [ebp + 0xc]
jmp 0x401607
cmp dword [eax], edx
je 0x4015ea
add eax, 0x10
dec ecx
jmp 0x401607
push 0x40b108
push dword [0x40b108]
push 2
push dword [ebp + 0xc]
push dword [ebp + 8]
call sub.kernel32.dll_VirtualProtectEx
popal
leave
ret 0x10
cmp ecx, 0
ja 0x4015e0
mov eax, 0x40b110
mov ecx, dword [ebp + 0xc]
jmp 0x401619
add eax, 0x10
cmp dword [eax], 0
jne 0x401616
mov dword [eax], ecx
add eax, 8
push 0
push 2
push eax
push dword [ebp + 0xc]
push dword [ebp + 8]
call sub.kernel32.dll_ReadProcessMemory
push 0
push 2
push 0x40b001
push dword [ebp + 0xc]
push dword [ebp + 8]
call sub.kernel32.dll_WriteProcessMemory
inc dword [0x40f110]
push 0x40b108
push dword [0x40b108]
push 2
push dword [ebp + 0xc]
push dword [ebp + 8]
call sub.kernel32.dll_VirtualProtectEx
popal
leave
ret 0x10