Function at 0x4058e0
Capabilities:
Access peb ldr_data
Get kernel32 base address
Link many functions at runtime

Disassembly:
push 0xffffffffffffffff
push 0x415746
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x18
mov al, byte [esp + 3]
push ebx
push esi
mov esi, ecx
xor ebx, ebx
push edi
mov dword [esp + 0x14], esi
mov byte [esi + 4], al
mov dword [esi + 8], ebx
mov dword [esi + 0xc], ebx
mov dword [esi + 0x10], ebx
mov dl, byte [esp + 0xf]
lea ecx, [esi + 0x24]
mov dword [esi + 0x14], ebx
mov dword [esi + 0x18], ebx
mov dword [esi + 0x1c], ebx
mov dword [esi + 0x20], ebx
push ebx
mov dword [esp + 0x30], ebx
mov byte [ecx], dl
call fcn.004049d0
mov dword [esi + 0x34], ebx
mov dword [esi], 0x416214
mov eax, dword [0x41f2b4]
mov byte [esp + 0x2c], 1
cmp eax, ebx
jne 0x40594e
mov eax, 0x4161e8
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp eax, ebx
mov dword [esi + 0x34], eax
jne 0x405989
lea eax, [esp + 0x10]
lea ecx, [esp + 0x18]
push eax
mov dword [esp + 0x14], str._MSI__Failed_to_load_MSIDLL_
call fcn.0040d764
lea ecx, [esp + 0x18]
push 0x417120
push ecx
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.MsiCloseAllHandles
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x38], eax
jne 0x4059d5
mov edx, dword [esi + 0x34]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [esp + 0x10]
lea ecx, [esp + 0x18]
push eax
mov dword [esp + 0x14], str._MSI__Failed_to_load_function_MsiCloseAllHandles_from_DLL_
call fcn.0040d764
lea ecx, [esp + 0x18]
push 0x417120
push ecx
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov edx, dword [esi + 0x34]
push str.MsiCloseHandle
push edx
call edi
cmp eax, ebx
mov dword [esi + 0x3c], eax
jne 0x405a1e
mov eax, dword [esi + 0x34]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea ecx, [esp + 0x10]
mov dword [esp + 0x10], str._MSI__Failed_to_load_function_MsiCloseHandle_from_DLL_
push ecx
lea ecx, [esp + 0x1c]
call fcn.0040d764
lea edx, [esp + 0x18]
push 0x417120
push edx
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov eax, dword [esi + 0x34]
push str.MsiVerifyPackageA
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x40], eax
jne 0x405a67
mov ecx, dword [esi + 0x34]
push ecx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea edx, [esp + 0x10]
lea ecx, [esp + 0x18]
push edx
mov dword [esp + 0x14], str._MSI__Failed_to_load_function_MsiVerifyPackage_from_DLL_
call fcn.0040d764
lea eax, [esp + 0x18]
push 0x417120
push eax
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov ecx, dword [esi + 0x34]
push str.MsiOpenDatabaseA
push ecx
call edi
cmp eax, ebx
mov dword [esi + 0x44], eax
jne 0x405ab0
mov edx, dword [esi + 0x34]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [esp + 0x10]
lea ecx, [esp + 0x18]
push eax
mov dword [esp + 0x14], str._MSI__Failed_to_load_function_MsiOpenDatabase_from_DLL_
call fcn.0040d764
lea ecx, [esp + 0x18]
push 0x417120
push ecx
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov edx, dword [esi + 0x34]
push str.MsiDatabaseOpenViewA
push edx
call edi
cmp eax, ebx
mov dword [esi + 0x48], eax
jne 0x405af9
mov eax, dword [esi + 0x34]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea ecx, [esp + 0x10]
mov dword [esp + 0x10], str._MSI__Failed_to_load_function_MsiDatabaseOpenView_from_DLL_
push ecx
lea ecx, [esp + 0x1c]
call fcn.0040d764
lea edx, [esp + 0x18]
push 0x417120
push edx
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov eax, dword [esi + 0x34]
push str.MsiCreateRecord
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x4c], eax
jne 0x405b42
mov ecx, dword [esi + 0x34]
push ecx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea edx, [esp + 0x10]
lea ecx, [esp + 0x18]
push edx
mov dword [esp + 0x14], str._MSI__Failed_to_load_function_MsiCreateRecord_from_DLL_
call fcn.0040d764
lea eax, [esp + 0x18]
push 0x417120
push eax
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov ecx, dword [esi + 0x34]
push str.MsiRecordSetStreamA
push ecx
call edi
cmp eax, ebx
mov dword [esi + 0x50], eax
jne 0x405b8b
mov edx, dword [esi + 0x34]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [esp + 0x10]
lea ecx, [esp + 0x18]
push eax
mov dword [esp + 0x14], str._MSI__Failed_to_load_function_MsiRecordSetStream_from_DLL_
call fcn.0040d764
lea ecx, [esp + 0x18]
push 0x417120
push ecx
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov edx, dword [esi + 0x34]
push str.MsiViewExecute
push edx
call edi
cmp eax, ebx
mov dword [esi + 0x54], eax
jne 0x405bd4
mov eax, dword [esi + 0x34]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea ecx, [esp + 0x10]
mov dword [esp + 0x10], str._MSI__Failed_to_load_function_MsiViewExecute_from_DLL_
push ecx
lea ecx, [esp + 0x1c]
call fcn.0040d764
lea edx, [esp + 0x18]
push 0x417120
push edx
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov eax, dword [esi + 0x34]
push str.MsiViewClose
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x58], eax
jne 0x405c1d
mov ecx, dword [esi + 0x34]
push ecx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea edx, [esp + 0x10]
lea ecx, [esp + 0x18]
push edx
mov dword [esp + 0x14], str._MSI__Failed_to_load_function_MsiViewClose_from_DLL_
call fcn.0040d764
lea eax, [esp + 0x18]
push 0x417120
push eax
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov ecx, dword [esi + 0x34]
push str.MsiDatabaseCommit
push ecx
call edi
cmp eax, ebx
mov dword [esi + 0x5c], eax
jne 0x405c66
mov edx, dword [esi + 0x34]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [esp + 0x10]
lea ecx, [esp + 0x18]
push eax
mov dword [esp + 0x14], str._MSI__Failed_to_load_function_MsiDatabaseCommit_from_DLL_
call fcn.0040d764
lea ecx, [esp + 0x18]
push 0x417120
push ecx
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov edx, dword [esi + 0x34]
push str.MsiViewFetch
push edx
call edi
cmp eax, ebx
mov dword [esi + 0x60], eax
jne 0x405caf
mov eax, dword [esi + 0x34]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea ecx, [esp + 0x10]
mov dword [esp + 0x10], str._MSI__Failed_to_load_function_MsiViewFetch_from_DLL_
push ecx
lea ecx, [esp + 0x1c]
call fcn.0040d764
lea edx, [esp + 0x18]
push 0x417120
push edx
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov eax, dword [esi + 0x34]
push str.MsiRecordGetFieldCount
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x64], eax
jne 0x405cf8
mov ecx, dword [esi + 0x34]
push ecx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea edx, [esp + 0x10]
lea ecx, [esp + 0x18]
push edx
mov dword [esp + 0x14], str._MSI__Failed_to_load_function_MsiRecordGetFieldCount_from_DLL_
call fcn.0040d764
lea eax, [esp + 0x18]
push 0x417120
push eax
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov ecx, dword [esi + 0x34]
push str.MsiRecordGetStringA
push ecx
call edi
cmp eax, ebx
mov dword [esi + 0x68], eax
jne 0x405d41
mov edx, dword [esi + 0x34]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [esp + 0x10]
lea ecx, [esp + 0x18]
push eax
mov dword [esp + 0x14], str._MSI__Failed_to_load_function_MsiRecordGetString_from_DLL_
call fcn.0040d764
lea ecx, [esp + 0x18]
push 0x417120
push ecx
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov edx, dword [esi + 0x34]
push str.MsiGetSummaryInformationA
push edx
call edi
cmp eax, ebx
mov dword [esi + 0x6c], eax
jne 0x405d8a
mov eax, dword [esi + 0x34]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea ecx, [esp + 0x10]
mov dword [esp + 0x10], str._MSI__Failed_to_load_function_MsiGetSummaryInformation_from_DLL_
push ecx
lea ecx, [esp + 0x1c]
call fcn.0040d764
lea edx, [esp + 0x18]
push 0x417120
push edx
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov eax, dword [esi + 0x34]
push str.MsiSummaryInfoGetPropertyCount
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x70], eax
jne 0x405dd3
mov ecx, dword [esi + 0x34]
push ecx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea edx, [esp + 0x10]
lea ecx, [esp + 0x18]
push edx
mov dword [esp + 0x14], str._MSI__Failed_to_load_function_MsiSummaryInfoGetPropertyCount_from_DLL_
call fcn.0040d764
lea eax, [esp + 0x18]
push 0x417120
push eax
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov ecx, dword [esi + 0x34]
push str.MsiSummaryInfoGetPropertyA
push ecx
call edi
cmp eax, ebx
mov dword [esi + 0x74], eax
jne 0x405e1c
mov edx, dword [esi + 0x34]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [esp + 0x10]
lea ecx, [esp + 0x18]
push eax
mov dword [esp + 0x14], str._MSI__Failed_to_load_function_MsiSummaryInfoGetProperty_from_DLL_
call fcn.0040d764
lea ecx, [esp + 0x18]
push 0x417120
push ecx
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov edx, dword [esi + 0x34]
push str.MsiSummaryInfoSetPropertyA
push edx
call edi
cmp eax, ebx
mov dword [esi + 0x78], eax
jne 0x405e65
mov eax, dword [esi + 0x34]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea ecx, [esp + 0x10]
mov dword [esp + 0x10], str._MSI__Failed_to_load_function_MsiSummaryInfoSetProperty_from_DLL_
push ecx
lea ecx, [esp + 0x1c]
call fcn.0040d764
lea edx, [esp + 0x18]
push 0x417120
push edx
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov eax, dword [esi + 0x34]
push str.MsiSummaryInfoPersist
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x7c], eax
jne 0x405eae
mov ecx, dword [esi + 0x34]
push ecx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea edx, [esp + 0x10]
lea ecx, [esp + 0x18]
push edx
mov dword [esp + 0x14], str._MSI__Failed_to_load_function_MsiSummaryInfoPersist_from_DLL_
call fcn.0040d764
lea eax, [esp + 0x18]
push 0x417120
push eax
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov ecx, dword [esi + 0x34]
push str.MsiInstallProductA
push ecx
call edi
cmp eax, ebx
mov dword [esi + 0x80], eax
jne 0x405efa
mov edx, dword [esi + 0x34]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [esp + 0x10]
lea ecx, [esp + 0x18]
push eax
mov dword [esp + 0x14], str._MSI__Failed_to_load_function_MsiInstallProduct_from_DLL_
call fcn.0040d764
lea ecx, [esp + 0x18]
push 0x417120
push ecx
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov edx, dword [esi + 0x34]
push str.MsiSetInternalUI
push edx
call edi
cmp eax, ebx
mov dword [esi + 0x84], eax
jne 0x405f46
mov eax, dword [esi + 0x34]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea ecx, [esp + 0x10]
mov dword [esp + 0x10], str._MSI__Failed_to_load_function_MsiSetInternalUI_from_DLL_
push ecx
lea ecx, [esp + 0x1c]
call fcn.0040d764
lea edx, [esp + 0x18]
push 0x417120
push edx
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov eax, dword [esi + 0x34]
push str.MsiConfigureProductA
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x88], eax
jne 0x405f92
mov ecx, dword [esi + 0x34]
push ecx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea edx, [esp + 0x10]
lea ecx, [esp + 0x18]
push edx
mov dword [esp + 0x14], str._MSI__Failed_to_load_function_MsiConfigureProduct_from_DLL_
call fcn.0040d764
lea eax, [esp + 0x18]
push 0x417120
push eax
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov ecx, dword [esi + 0x34]
push str.MsiEnumProductsA
push ecx
call edi
cmp eax, ebx
mov dword [esi + 0x8c], eax
jne 0x405fde
mov edx, dword [esi + 0x34]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [esp + 0x10]
lea ecx, [esp + 0x18]
push eax
mov dword [esp + 0x14], str._MSI__Failed_to_load_function_MsiEnumProducts_from_DLL_
call fcn.0040d764
lea ecx, [esp + 0x18]
push 0x417120
push ecx
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov edx, dword [esi + 0x34]
push str.MsiGetProductInfoA
push edx
call edi
cmp eax, ebx
mov dword [esi + 0x90], eax
jne 0x40602a
mov eax, dword [esi + 0x34]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea ecx, [esp + 0x10]
mov dword [esp + 0x10], str._MSI__Failed_to_load_function_MsiGetProductInfo_from_DLL_
push ecx
lea ecx, [esp + 0x1c]
call fcn.0040d764
lea edx, [esp + 0x18]
push 0x417120
push edx
mov dword [esp + 0x20], 0x416208
call fcn.0040d80e
mov ecx, dword [esp + 0x24]
mov eax, esi
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x24
ret