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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xe8
cmp byte [0x50c21c], 0
push ebx
push esi
mov esi, ecx
mov dword [ebp - 4], 0
mov ebx, 1
je 0x436dc0
cmp byte [esi + 0x10], 0
je 0x436dc0
push 3
push 0x76
push str.._srcWow64.cc
lea ecx, [ebp - 0xe8]
mov dword [ebp - 4], ebx
call fcn.004440f0
add eax, 4
push str.Check_failed:__init_.
push eax
call fcn.0040afde
add esp, 8
test byte [ebp - 4], bl
je 0x436dd4
and dword [ebp - 4], 0xfffffffe
lea ecx, [ebp - 0xe8]
call fcn.00443d90
mov ecx, esi
call fcn.00433040
test al, al
jne 0x436de9
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 ebx
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 0x436f6b
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 0x436f6b
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 0x436ec5
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 0x436ec5
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 0x436e77
cmp byte [0x50c21c], 0
je 0x436efe
test ebx, ebx
jne 0x436efe
or dword [ebp - 4], 2
push 3
push 0xad
push str.._srcWow64.cc
lea ecx, [ebp - 0xe8]
call fcn.004440f0
add eax, 4
push str.Check_failed:_buffer.
push eax
call fcn.0040afde
add esp, 8
test byte [ebp - 4], 2
je 0x436f0f
lea ecx, [ebp - 0xe8]
call fcn.00443d90
test ebx, ebx
je 0x436f6b
push 0x2c
lea ecx, [ebp - 0x58]
push 0
push ecx
call fcn.0048e760
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 0x436f6b
cmp dword [ebp - 8], 0x10
jne 0x436f6b
mov edi, dword [ebp + 8]
push edi
push ebx
mov ecx, esi
call fcn.004367d0
test al, al
je 0x436f6b
push edi
mov ecx, esi
call fcn.00436520
test al, al
jne 0x436f76
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.00432f70
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4