Function at 0x10003d20
Capabilities:
Allocate or change rwx memory
Enumerate pe sections
Execute shellcode via indirect call

Disassembly:
sub esp, 0x14
push ebp
push esi
mov ebp, 5
mov esi, edx
push ecx
mov dword [esp + 0xc], ebp
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
test eax, eax
je 0x10003f1c
push esi
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
test esi, esi
je 0x10003f1c
push ebx
push 0x40
push 0x1000
push 0x20
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov ebx, eax
test ebx, ebx
je 0x10003f13
movzx eax, byte [esi]
mov byte [ebx], al
movzx eax, byte [esi + 1]
mov byte [ebx + 1], al
movzx eax, byte [esi + 2]
mov byte [ebx + 2], al
movzx eax, byte [esi + 3]
mov byte [ebx + 3], al
movzx eax, byte [esi + 4]
mov byte [ebx + 4], al
mov al, byte [esi]
push edi
cmp al, 0xe8
je 0x10003e04
cmp al, 0xe9
je 0x10003e04
cmp al, 0x8d
je 0x10003e45
cmp al, 0x6a
jne 0x10003dd8
mov byte [ebx], al
mov ebp, 7
movzx eax, byte [esi + 1]
mov byte [ebx + 1], al
movzx eax, byte [esi + 2]
mov byte [ebx + 2], al
movzx eax, byte [esi + 3]
mov byte [ebx + 3], al
movzx eax, byte [esi + 4]
mov byte [ebx + 4], al
movzx eax, byte [esi + 5]
mov byte [ebx + 5], al
movzx eax, byte [esi + 6]
mov byte [ebx + 6], al
jmp 0x10003e45
cmp al, 0xff
jne 0x10003e45
mov al, byte [esi + 1]
cmp al, 0x15
je 0x10003de7
cmp al, 0x25
jne 0x10003e45
mov ebp, 6
mov edi, esi
mov ecx, ebx
sub edi, ebx
mov edx, ebp
mov al, byte [edi + ecx]
lea ecx, [ecx + 1]
mov byte [ecx - 1], al
sub edx, 1
jne 0x10003df4
jmp 0x10003e45
mov edi, ebx
lea eax, [esp + 0x14]
xor edx, edx
sub edi, esi
sub eax, esi
mov ecx, esi
mov ebp, eax
movzx eax, byte [ecx]
lea ecx, [ecx + 1]
mov byte [ecx + edi - 1], al
inc edx
movzx eax, byte [ecx - 1]
mov byte [ecx + ebp - 1], al
cmp edx, 5
jb 0x10003e14
mov ebp, dword [esp + 0x10]
mov eax, esi
sub eax, ebx
add dword [esp + 0x15], eax
mov eax, dword [esp + 0x14]
mov dword [ebx], eax
mov al, byte [esp + 0x18]
mov byte [ebx + 4], al
mov eax, dword [sym.imp.KERNEL32.dll_VirtualProtect]
lea edi, [ebx + ebp]
mov dword [esp + 0x10], eax
test edi, edi
je 0x10003eaf
mov eax, esi
mov byte [esp + 0x1c], 0xe9
sub eax, edi
mov dword [esp + 0x14], 0
add eax, 0xfffffffb
add eax, ebp
mov dword [esp + 0x1d], eax
lea eax, [esp + 0x14]
push eax
push 0x40
push 5
push edi
call dword [esp + 0x20]
test eax, eax
je 0x10003eaf
lea edx, [esp + 0x1c]
xor ecx, ecx
sub edx, edi
nop dword [eax]
lea eax, [edx + ecx]
mov al, byte [eax + edi]
mov byte [edi + ecx], al
inc ecx
cmp ecx, 5
jb 0x10003e90
lea eax, [esp + 0x14]
push eax
push dword [esp + 0x18]
push 5
push edi
call dword [esp + 0x20]
mov eax, 0x10009a90
mov byte [esp + 0x1c], 0xe9
sub eax, esi
mov dword [esp + 0x14], 0
sub eax, 5
mov dword [esp + 0x1d], eax
lea eax, [esp + 0x14]
push eax
push 0x40
push ebp
push esi
call dword [esp + 0x20]
pop edi
test eax, eax
je 0x10003f0a
lea edx, [esp + 0x18]
xor eax, eax
sub edx, esi
cmp eax, 5
jae 0x10003ef1
lea ecx, [edx + eax]
mov cl, byte [ecx + esi]
jmp 0x10003ef3
mov cl, 0x90
mov byte [esi + eax], cl
inc eax
cmp eax, ebp
jb 0x10003ee4
lea eax, [esp + 0x10]
push eax
push dword [esp + 0x14]
push ebp
push esi
call dword [esp + 0x1c]
mov eax, ebx
pop ebx
pop esi
pop ebp
add esp, 0x14
ret
pop ebx
pop esi
xor eax, eax
pop ebp
add esp, 0x14
ret
pop esi
xor eax, eax
pop ebp
add esp, 0x14
ret