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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x23c
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
xor esi, esi
mov al, 0xe9
mov dword [ebp - 0x237], esi
mov word [ebp - 0x230], 0x25ff
mov dword [ebp - 0x22e], esi
mov ebx, dword [edi + 0x70]
mov ecx, dword [edi + 0x80]
sub ecx, ebx
mov byte [ebp - 0x238], al
sub ecx, 5
mov dword [ebp - 0x23c], ebx
mov dword [ebp - 0x237], ecx
cmp byte [ebx], al
jne 0x1002200f
mov al, byte [ebx + 1]
cmp al, cl
jne 0x1002200f
mov eax, ecx
shr eax, 8
cmp byte [ebx + 2], al
jne 0x1002200f
mov eax, ecx
shr eax, 0x10
cmp byte [ebx + 3], al
jne 0x1002200f
shr ecx, 0x18
cmp byte [ebx + 4], cl
jne 0x1002200f
lea eax, [esi + 1]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10025f80
mov esp, ebp
pop ebp
ret 4
cmp byte [edi + 0x88], 1
mov eax, dword [ebx]
mov dword [edi + 0x78], eax
mov al, byte [ebx + 4]
mov byte [edi + 0x7c], al
jne 0x10022041
mov ecx, dword [edi + 0x84]
mov ax, word [0x10040c74]
mov word [ecx], ax
mov al, byte [0x10040c76]
mov byte [ecx + 2], al
add dword [edi + 0x84], 3
push 0x21f
lea eax, [ebp - 0x228]
push 0
push eax
call fcn.10029700
add esp, 0xc
mov dword [ebp - 0x228], ebx
lea ecx, [ebp - 0x228]
mov dword [ebp - 0x224], ebx
mov dword [ebp - 0x220], esi
mov dword [ebp - 0x1d8], esi
call fcn.10018410
mov ebx, eax
cmp ebx, 0xffffffff
je 0x10022169
jmp 0x10022090
mov ecx, dword [ebp - 0x23c]
mov eax, dword [edi + 0x84]
add ecx, esi
push ebx
push ecx
add eax, esi
push eax
call fcn.1002dd90
mov eax, dword [ebp - 0x1b4]
add esp, 0xc
cmp eax, 0xb
je 0x100220bb
cmp eax, 0xc
jne 0x1002210e
mov edx, dword [ebp - 0x1a4]
mov eax, edx
or eax, dword [ebp - 0x1a0]
je 0x1002210e
mov eax, dword [ebp - 0x19c]
or eax, dword [ebp - 0x198]
jne 0x1002210e
cmp ebx, 5
jne 0x100220f0
mov eax, dword [edi + 0x84]
sub edx, eax
sub edx, esi
sub edx, ebx
mov dword [eax + esi + 1], edx
jmp 0x1002210e
cmp ebx, 6
jne 0x1002210e
mov ecx, dword [edi + 0x84]
mov eax, dword [edx]
mov dword [ecx + esi + 0x14], eax
lea ecx, [esi + 0xe]
mov eax, dword [edi + 0x84]
mov dword [eax + esi + 2], ecx
add esi, ebx
cmp esi, 5
jae 0x1002217e
push 0x21f
lea eax, [ebp - 0x228]
push 0
push eax
call fcn.10029700
mov eax, dword [ebp - 0x23c]
lea ecx, [ebp - 0x228]
add esp, 0xc
mov dword [ebp - 0x220], 0
add eax, esi
mov dword [ebp - 0x1d8], 0
mov dword [ebp - 0x228], eax
mov dword [ebp - 0x224], eax
call fcn.10018410
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x10022090
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10025f80
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [edi + 0x84]
mov ebx, dword [ebp - 0x23c]
lea eax, [ecx + 6]
add eax, esi
mov dword [ebp - 0x22e], eax
mov eax, dword [ebp - 0x230]
mov dword [ecx + esi], eax
mov ax, word [ebp - 0x22c]
mov word [ecx + esi + 4], ax
lea ecx, [ebx + esi]
mov eax, dword [edi + 0x84]
mov dword [eax + esi + 6], ecx
cmp byte [edi + 0x88], 1
jne 0x100221c7
add dword [edi + 0x84], 0xfffffffd
mov ecx, dword [edi + 0x80]
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
lea eax, [ecx + 6]
mov dword [ebp - 0x22e], eax
mov eax, dword [ebp - 0x230]
mov dword [ecx], eax
mov ax, word [ebp - 0x22c]
mov word [ecx + 4], ax
mov ecx, dword [edi + 0x80]
mov eax, dword [edi + 0x74]
mov dword [ecx + 6], eax
lea eax, [ebp - 8]
push eax
push 0x40
push 5
push ebx
call esi
mov edi, dword [sym.imp.KERNEL32.dll_VirtualProtectEx]
push eax
call edi
test eax, eax
je 0x10022169
mov eax, dword [ebp - 0x238]
mov dword [ebx], eax
mov al, byte [ebp - 0x234]
mov byte [ebx + 4], al
lea eax, [ebp - 8]
push eax
push 0x20
push 5
push ebx
call esi
push eax
call edi
mov ecx, dword [ebp - 4]
neg eax
pop edi
sbb eax, eax
xor ecx, ebp
pop esi
neg eax
pop ebx
call fcn.10025f80
mov esp, ebp
pop ebp
ret 4