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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x44
mov eax, dword [0x1004c040]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [0x1004c648]
push ebx
mov ebx, edx
mov dword [ebp - 0x44], ebx
test eax, eax
jne 0x1003ad05
mov eax, 2
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1003b9a6
mov esp, ebp
pop ebp
ret 8
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x1003ad28
mov eax, 0xd
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1003b9a6
mov esp, ebp
pop ebp
ret 8
push esi
mov esi, dword [sym.imp.KERNEL32.dll_VirtualQuery]
lea eax, [ebp - 0x20]
push edi
push 0x1c
push eax
push ebx
mov dword [ebp - 0x40], 0
call esi
cmp dword [ebp - 0x10], 0x1000
jne 0x1003ad56
test byte [ebp - 0xc], 0xf0
je 0x1003ad56
mov eax, 1
jmp 0x1003ad58
xor eax, eax
test eax, eax
je 0x1003af29
push 0x1c
lea eax, [ebp - 0x3c]
push eax
push 0x1003b510
call esi
cmp dword [ebp - 0x2c], 0x1000
jne 0x1003af29
test byte [ebp - 0x28], 0xf0
je 0x1003af29
mov edx, dword [0x1004c6b8]
xor ecx, ecx
mov esi, dword [0x1004c6b0]
test edx, edx
je 0x1003adae
mov eax, esi
cmp dword [eax], 1
jne 0x1003ada6
cmp ebx, dword [eax + 4]
je 0x1003ae73
inc ecx
add eax, 0x30
cmp ecx, edx
jb 0x1003ad98
mov ecx, dword [0x1004c6bc]
test ecx, ecx
je 0x1003adc4
cmp dword [ecx + 4], 0
jne 0x1003ae21
mov ecx, dword [ecx]
test ecx, ecx
jne 0x1003adb8
push 0x40
push 0x3000
push 0x1000
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov ecx, eax
test ecx, ecx
je 0x1003af20
xor edi, edi
mov dword [ecx + 8], 0
lea edx, [ecx + 0x40]
lea esi, [edi + 0x40]
mov dword [edx], edi
mov eax, edx
mov dword [ecx + 4], edx
add esi, 0x40
add edx, 0x40
mov edi, eax
cmp esi, 0xfc0
jbe 0x1003adf1
mov eax, dword [0x1004c6bc]
mov esi, dword [0x1004c6b0]
mov edx, dword [0x1004c6b8]
mov dword [ecx], eax
mov dword [0x1004c6bc], ecx
mov ebx, dword [ecx + 4]
mov eax, dword [ebx]
inc dword [ecx + 8]
mov dword [ecx + 4], eax
test ebx, ebx
je 0x1003af20
test esi, esi
jne 0x1003ae88
push 0x600
push esi
push dword [0x1004c6a0]
mov dword [0x1004c6b4], 0x20
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov esi, eax
mov dword [0x1004c6b0], esi
test esi, esi
jne 0x1003aebf
mov ecx, ebx
mov dword [ebp - 0x40], 9
call fcn.10039bb0
jmp 0x1003af30
cmp ecx, 0xffffffff
je 0x1003adae
mov dword [ebp - 0x40], 3
jmp 0x1003af30
mov eax, dword [0x1004c6b4]
cmp edx, eax
jb 0x1003aec5
lea eax, [eax + eax*2]
shl eax, 5
push eax
push esi
push 0
push dword [0x1004c6a0]
call dword [sym.imp.KERNEL32.dll_HeapReAlloc]
mov esi, eax
test esi, esi
je 0x1003ae60
mov eax, dword [0x1004c6b4]
add eax, eax
mov dword [0x1004c6b0], esi
mov dword [0x1004c6b4], eax
mov edx, dword [0x1004c6b8]
lea edi, [edx + edx*2]
inc edx
shl edi, 4
mov dword [0x1004c6b8], edx
add edi, esi
je 0x1003ae60
mov dword [ebx + 4], 1
lea ecx, [ebx + 8]
mov dword [ebx], 0x1003af60
mov eax, 0x1003b510
sub eax, ecx
mov byte [ecx], 0xe9
sub eax, 5
mov dword [ecx + 1], eax
mov eax, dword [ebp - 0x44]
mov dword [edi + 4], eax
mov al, byte [edi + 0x18]
and al, 0xfd
mov dword [edi], 1
and al, 0xfb
mov dword [edi + 8], 0x1003b510
mov byte [edi + 0x18], al
lea eax, [ebx + 0xd]
mov dword [edi + 0xc], ebx
mov dword [0x1004c64c], eax
jmp 0x1003af30
mov dword [ebp - 0x40], 9
jmp 0x1003af30
mov dword [ebp - 0x40], 7
push dword [0x1004c648]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x40]
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.1003b9a6
mov esp, ebp
pop ebp
ret 8