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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x1000c776
mov eax, dword fs:[0]
push eax
sub esp, 0x98
mov eax, dword [0x100140ac]
xor eax, esp
mov dword [esp + 0x90], eax
push ebx
push esi
push edi
mov eax, dword [0x100140ac]
xor eax, esp
push eax
lea eax, [esp + 0xa8]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov edi, edx
cmp byte [edi], 0xeb
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x40], ecx
jne 0x1000822d
add edi, 2
mov dword [esp + 0x18], edi
mov esi, edi
nop
mov dl, byte [esi]
xor ebx, ebx
push 0x40
lea eax, [esp + 0x5c]
push ebx
push eax
mov dword [esp + 0x48], esi
mov byte [esp + 0x1f], dl
mov dword [esp + 0x50], ebx
mov dword [esp + 0x54], ebx
call sub.MSVCR100.dll_memset
lea ecx, [esp + 0x60]
mov dword [esp + 0x58], ecx
lea edx, [esp + 0xa4]
add esp, 0xc
mov dword [esp + 0x50], edx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x98], ebx
movzx eax, byte [esi]
mov edx, dword [eax*8 + 0x1000ef24]
push esi
lea ecx, [esp + 0x5c]
lea eax, [eax*8 + 0x1000ef20]
push ecx
push eax
lea ecx, [esp + 0x50]
call edx
mov esi, eax
mov al, byte [esp + 0x13]
mov ebx, esi
sub ebx, edi
cmp al, 0xe9
je 0x100082eb
cmp al, 0xe0
je 0x100082eb
cmp al, 0xc2
je 0x100082eb
cmp al, 0xc3
je 0x100082eb
cmp al, 0xff
jne 0x100082b8
mov eax, dword [esp + 0x3c]
cmp byte [eax + 1], 0x25
jmp 0x100082de
cmp al, 0x26
je 0x100082d0
cmp al, 0x2e
je 0x100082d0
cmp al, 0x36
je 0x100082d0
cmp al, 0x3e
je 0x100082d0
cmp al, 0x64
je 0x100082d0
cmp al, 0x65
jne 0x100082e0
mov eax, dword [esp + 0x3c]
cmp byte [eax + 1], 0xff
jne 0x100082e0
cmp byte [eax + 2], 0x25
je 0x100082eb
cmp ebx, 5
jl 0x10008230
jmp 0x100082f4
cmp ebx, 5
jl 0x1000848f
cmp ebx, 0x1a
jg 0x1000848f
mov ecx, dword [esp + 0x14]
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], 0x20
mov dword [esp + 0x28], 0
call esi
cmp dword [esp + 0x20], 0
mov dword [esp + 0x1c], eax
je 0x10008355
cmp dword [esp + 0x24], 0
je 0x10008355
mov edx, dword [esp + 0x14]
push 0x20
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FlushInstructionCache]
test eax, eax
je 0x10008355
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x28]
push eax
push 0x40
push 0x20
push ecx
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
xor eax, eax
mov dword [esp + 0xb0], eax
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], eax
call esi
cmp dword [esp + 0x30], 0
mov dword [esp + 0x2c], eax
je 0x1000839a
cmp dword [esp + 0x34], 0
je 0x1000839a
push ebx
push edi
push eax
call dword [sym.imp.KERNEL32.dll_FlushInstructionCache]
test eax, eax
je 0x1000839a
lea edx, [esp + 0x38]
push edx
push 0x40
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
mov byte [esp + 0xb0], 1
cmp dword [esp + 0x28], 0
je 0x1000847d
cmp dword [esp + 0x20], 0
je 0x1000847d
cmp dword [esp + 0x24], 0
je 0x1000847d
cmp dword [esp + 0x30], 0
mov dword [esp + 0x28], 0x40
je 0x1000847d
cmp dword [esp + 0x34], 0
je 0x1000847d
cmp dword [esp + 0x38], 0
je 0x1000847d
mov esi, dword [esp + 0x14]
xor ecx, ecx
mov eax, edi
test ebx, ebx
jle 0x10008413
mov edi, eax
call fcn.100084a0
mov esi, dword [esp + 0x14]
mov ecx, eax
sub ecx, dword [esp + 0x18]
add esi, ecx
cmp ecx, ebx
jl 0x100083f8
mov edi, dword [esp + 0x18]
cmp ecx, ebx
jne 0x1000847d
mov edx, dword [esp + 0x14]
mov eax, edi
sub eax, esi
mov byte [esi], 0xe9
lea ecx, [eax + ebx - 5]
mov dword [esi + 1], ecx
mov byte [edx + 0x1f], bl
cmp ebx, 5
jl 0x1000847d
mov eax, dword [esp + 0x40]
mov edx, ebx
mov ecx, edi
call fcn.10008530
test eax, eax
je 0x1000847d
lea esi, [esp + 0x2c]
call fcn.100080d0
lea esi, [esp + 0x1c]
call fcn.100080d0
mov eax, 1
mov ecx, dword [esp + 0xa8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x90]
xor ecx, esp
call fcn.10009ef6
mov esp, ebp
pop ebp
ret
lea esi, [esp + 0x2c]
call fcn.100080d0
lea esi, [esp + 0x1c]
call fcn.100080d0
xor eax, eax
jmp 0x10008459