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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xe8
cmp byte [0x50e244], 0
push ebx
push esi
mov esi, ecx
mov dword [ebp - 4], 0
mov ebx, 1
je 0x437590
cmp byte [esi + 0x10], 0
je 0x437590
push 3
push 0x76
push str.._srcWow64.cc
lea ecx, [ebp - 0xe8]
mov dword [ebp - 4], ebx
call fcn.00444980
add eax, 4
push str.Check_failed:__init_.
push eax
call fcn.0040afbf
add esp, 8
test byte [ebp - 4], bl
je 0x4375a4
and dword [ebp - 4], 0xfffffffe
lea ecx, [ebp - 0xe8]
call fcn.00444620
mov ecx, esi
call fcn.00433810
test al, al
jne 0x4375b9
pop esi
mov al, bl
pop ebx
mov esp, ebp
pop ebp
ret 4
push edi
mov edi, dword [sym.imp.KERNEL32.dll_CreateEventW]
push 0
push 0
push ebx
push 0
call edi
push 0
push 0
push 0
push 0
mov dword [esi + 8], eax
call edi
mov dword [esi + 0xc], eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov edx, dword [esi + 8]
mov ebx, dword [sym.imp.KERNEL32.dll_DuplicateHandle]
push 0
push 0
mov edi, eax
mov eax, dword [esi]
mov eax, dword [eax]
push 0x100002
lea ecx, [ebp - 0x10]
push ecx
push eax
push edx
push edi
call ebx
test eax, eax
je 0x43773c
mov eax, dword [esi]
mov eax, dword [eax]
mov edx, dword [esi + 0xc]
push 0
push 0
push 0x100002
lea ecx, [ebp - 0xc]
push ecx
push eax
push edx
push edi
call ebx
test eax, eax
je 0x43773c
mov eax, dword [esi]
mov eax, dword [eax]
push 0x40
push 0x3000
mov edi, 0x1000
push edi
push edi
push eax
call dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
mov ebx, eax
test ebx, ebx
jne 0x437696
mov ecx, dword [esi]
xor eax, eax
push 0x1c
lea edx, [ebp - 0x2c]
push edx
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
mov eax, dword [ecx]
push edi
push eax
call dword [sym.imp.KERNEL32.dll_VirtualQueryEx]
test eax, eax
je 0x437696
add edi, dword [ebp - 0x20]
mov eax, dword [esi]
mov eax, dword [eax]
push 0x40
push 0x3000
push 0x1000
push edi
push eax
call dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
mov ebx, eax
test ebx, ebx
je 0x437648
cmp byte [0x50e244], 0
je 0x4376cf
test ebx, ebx
jne 0x4376cf
or dword [ebp - 4], 2
push 3
push 0xb5
push str.._srcWow64.cc
lea ecx, [ebp - 0xe8]
call fcn.00444980
add eax, 4
push str.Check_failed:_buffer.
push eax
call fcn.0040afbf
add esp, 8
test byte [ebp - 4], 2
je 0x4376e0
lea ecx, [ebp - 0xe8]
call fcn.00444620
test ebx, ebx
je 0x43773c
push 0x2c
lea ecx, [ebp - 0x58]
push 0
push ecx
call fcn.0048f0d0
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi]
add esp, 0xc
mov dword [ebp - 0x5c], edx
lea edx, [ebp - 8]
push edx
mov dword [ebp - 0x54], eax
mov eax, dword [ecx]
push 0x10
lea ecx, [ebp - 0x5c]
push ecx
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
test eax, eax
je 0x43773c
cmp dword [ebp - 8], 0x10
jne 0x43773c
mov edi, dword [ebp + 8]
push edi
push ebx
mov ecx, esi
call fcn.00436fa0
test al, al
je 0x43773c
push edi
mov ecx, esi
call fcn.00436d00
test al, al
jne 0x437747
pop edi
pop esi
xor al, al
pop ebx
mov esp, ebp
pop ebp
ret 4
mov edx, dword [esi]
mov eax, dword [edx]
push ebx
push eax
call fcn.00433740
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4