Function at 0x420440
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call
Get file size
Query or enumerate registry value
Read file via mapping

Disassembly:
sub esp, 0x88
mov eax, dword [esp + 0x8c]
push ebx
push ebp
push esi
xor ebx, ebx
cmp eax, ebx
mov esi, 0x80004005
push edi
mov edi, ecx
mov dword [esp + 0x14], esi
jne 0x42056b
lea eax, [esp + 0x18]
push eax
push 0x20019
push ebx
push 0x4c8810
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x420587
mov edx, dword [esp + 0x18]
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea ecx, [esp + 0x10]
push ecx
push ebx
push ebx
push ebx
push 0x4c7a94
push edx
call esi
test eax, eax
jne 0x42055e
mov eax, dword [esp + 0x10]
push eax
call fcn.004a7960
mov edx, dword [esp + 0x1c]
add esp, 4
lea ecx, [esp + 0x10]
push ecx
mov ebp, eax
push ebp
push ebx
push ebx
push 0x4c7a94
push edx
mov dword [esp + 0x38], ebp
call esi
test eax, eax
jne 0x420555
push ebx
push 0x80
push 3
push ebx
push 1
push SysReAllocString
push ebp
call dword [sym.imp.KERNEL32.DLL_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
je 0x420555
push ebx
push esi
call dword [sym.imp.KERNEL32.DLL_GetFileSize]
push ebx
push eax
push ebx
push 2
push ebx
push esi
mov dword [esp + 0x4c], eax
call dword [sym.imp.KERNEL32.DLL_CreateFileMappingA]
cmp eax, ebx
mov dword [esp + 0x1c], eax
je 0x42054e
push ebx
push ebx
push ebx
push 4
push eax
call dword [sym.imp.KERNEL32.DLL_MapViewOfFile]
mov ebp, eax
cmp ebp, ebx
je 0x42053f
mov eax, dword [esp + 0x34]
push eax
push ebp
mov ecx, edi
call fcn.00423970
push ebp
mov dword [esp + 0x18], eax
call dword [sym.imp.KERNEL32.DLL_UnmapViewOfFile]
mov ecx, dword [esp + 0x1c]
push ecx
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
mov ebp, dword [esp + 0x20]
push esi
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
push ebp
call fcn.004a7e92
add esp, 4
mov edx, dword [esp + 0x18]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x42057f
mov ecx, dword [esp + 0xa0]
push ecx
push eax
mov ecx, edi
call fcn.00423970
mov dword [esp + 0x14], eax
mov esi, dword [esp + 0x14]
cmp esi, ebx
je 0x420596
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x88
ret 0x10
push 0x40
push 0x1000
mov al, 0x68
push 0xd
push ebx
mov byte [esp + 0x34], 0x58
mov byte [esp + 0x35], al
mov dword [esp + 0x36], edi
mov byte [esp + 0x3a], 0x50
mov byte [esp + 0x3b], al
mov dword [esp + 0x3c], 0x41fbf0
mov byte [esp + 0x40], 0xc3
call dword [sym.imp.KERNEL32.DLL_VirtualAlloc]
push 0xd
lea edx, [esp + 0x28]
push edx
push eax
mov dword [edi + 0xfc], eax
call fcn.0043b7c0
mov eax, dword [edi + 0xfc]
add esp, 0xc
push 0xd
push eax
call dword [sym.imp.KERNEL32.DLL_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.DLL_FlushInstructionCache]
lea esi, [esp + 0x18]
call fcn.00420360
mov eax, dword [esp + 0xa4]
cmp eax, ebx
jne 0x42060f
mov eax, dword [esp + 0x18]
push eax
lea ecx, [esp + 0x14]
mov dword [esp + 0x14], ebx
call fcn.0041f460
mov ebp, dword [esp + 0x10]
lea esi, [edi + 0xf4]
push ebp
mov ecx, esi
call fcn.0041f460
push ebp
call fcn.004a7e92
mov ecx, dword [edi + 0xfc]
mov edx, dword [0x50cf1c]
mov eax, dword [esi]
mov dword [esp + 0x44], ecx
add esp, 4
lea ecx, [esp + 0x38]
push ecx
mov dword [esp + 0x3c], 0x30
mov dword [esp + 0x40], 0x4008
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], edx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], 6
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], ebx
call dword [sym.imp.USER32.dll_RegisterClassExA]
push 0x4c8804
mov word [edi + 0xf0], ax
call dword [sym.imp.KERNEL32.DLL_LoadLibraryA]
mov esi, eax
push 0x4c895c
push esi
mov dword [esp + 0x24], esi
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
mov ebp, eax
cmp ebp, ebx
je 0x420798
lea esi, [esp + 0x20]
call fcn.00420360
mov edx, dword [eax]
push edx
lea eax, [esp + 0x14]
push eax
call fcn.0043b8d0
mov ecx, dword [esp + 0x28]
push ecx
call fcn.004a7e92
mov eax, dword [esp + 0xb4]
add esp, 0xc
cmp eax, ebx
jne 0x4206ed
mov eax, dword [esp + 0x10]
push eax
lea ecx, [esp + 0x18]
mov dword [esp + 0x18], ebx
call fcn.0041f7a0
mov edx, dword [esp + 0x14]
lea esi, [edi + 0xf8]
push edx
mov ecx, esi
call fcn.0041f7a0
mov eax, dword [esp + 0x14]
push eax
call fcn.004a7e92
mov ecx, dword [edi + 0xfc]
mov edx, dword [0x50cf1c]
mov eax, dword [esi]
mov dword [esp + 0x74], ecx
add esp, 4
lea ecx, [esp + 0x68]
push ecx
mov dword [esp + 0x6c], 0x30
mov dword [esp + 0x70], 0x4008
mov dword [esp + 0x78], ebx
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x80], edx
mov dword [esp + 0x84], ebx
mov dword [esp + 0x88], ebx
mov dword [esp + 0x8c], 6
mov dword [esp + 0x90], ebx
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], ebx
call ebp
mov edx, dword [esp + 0x10]
push edx
mov word [edi + 0xf2], ax
call fcn.004a7e92
mov esi, dword [esp + 0x20]
add esp, 4
push esi
call dword [sym.imp.KERNEL32.DLL_FreeLibrary]
mov eax, dword [esp + 0x18]
push eax
call fcn.004a7e92
add esp, 4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x88
ret 0x10