Function at 0x401440
Capabilities:
Check http status code
Check if file exists
Check mutex on windows
Download url
Get file attributes
Link many functions at runtime
Query environment variable
Receive data
Reference sql statements
Resolve function by parsing pe exports
Set current directory
Shutdown system

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x220c
call fcn.0040bd30
mov eax, dword [0x417034]
xor eax, esp
mov dword [esp + 0x2208], eax
push ebx
xor ebx, ebx
push esi
mov esi, dword [ebp + 0x10]
push edi
mov edi, dword [ebp + 8]
push 0xff
lea eax, [esp + 0x1dd]
push ebx
push eax
mov dword [esp + 0x18], edi
mov dword [esp + 0x68], esi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x84], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x60], ebx
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x80], ebx
mov dword [esp + 0x64], ebx
mov byte [esp + 0x1e4], bl
call fcn.00409070
add esp, 0xc
push 0xff
lea ecx, [esp + 0x515]
push ebx
push ecx
mov byte [esp + 0x51c], bl
call fcn.00409070
add esp, 0xc
push 0x3ff
lea edx, [esp + 0xe15]
push ebx
push edx
mov byte [esp + 0xe1c], bl
call fcn.00409070
add esp, 0xc
push 0x3ff
lea eax, [esp + 0x615]
push ebx
push eax
mov byte [esp + 0x61c], bl
call fcn.00409070
add esp, 0xc
push 0x3ff
lea ecx, [esp + 0xa15]
push ebx
push ecx
mov byte [esp + 0xa1c], bl
call fcn.00409070
add esp, 0xc
push 0x27
lea edx, [esp + 0x2dd]
push ebx
push edx
mov byte [esp + 0x2e4], bl
call fcn.00409070
add esp, 0xc
push 0x103
lea eax, [esp + 0x305]
push ebx
push eax
mov byte [esp + 0x30c], bl
call fcn.00409070
add esp, 0xc
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x80], ebx
mov dword [esp + 0xa4], 0x28
mov dword [esp + 0x50], ebx
mov byte [esp + 0x17], bl
mov byte [esp + 0x64], bl
mov byte [esp + 0x16], bl
mov dword [esp + 0x4c], ebx
lea eax, [esp + 0xc0]
mov dword [esp + 0x84], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x7c], ebx
call fcn.00404a10
push 0x100
lea ecx, [esp + 0x1dc]
push ecx
push 0xb
push edi
call dword [sym.imp.USER32.dll_LoadStringA]
push 0x104
lea edx, [esp + 0x304]
push edx
push edi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x401605
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp + 0x10], eax
jmp 0x401a53
push ebx
lea eax, [esp + 0x304]
push eax
push str._Info__we_are_running_from______s_n
call fcn.004070f0
add esp, 0xc
push esi
call fcn.00405fc0
add esp, 4
cmp eax, 2
mov dword [esp + 0x40], eax
jne 0x401664
lea ecx, [esp + 0x300]
push esi
push ecx
call fcn.00405eb0
add esp, 8
cmp eax, 0xa0
mov dword [esp + 0x10], eax
jne 0x401a53
push edi
lea ecx, [esp + 0x1dc]
xor esi, esi
call fcn.00406a90
add esp, 4
jmp 0x401a53
cmp eax, 1
je 0x40164d
call fcn.004071c0
cmp dword [0x418b34], ebx
jne 0x40168b
lea edx, [esp + 0x1d8]
push edx
push edi
lea esi, [esp + 0xc8]
call fcn.00404b90
call fcn.00406d20
test al, al
jne 0x4016c6
mov ecx, dword [esp + 0xc4]
cmp ecx, ebx
jne 0x4016a6
mov ecx, dword [esp + 0xc8]
push 0x24
lea ebx, [esp + 0x1dc]
mov esi, edi
call fcn.004065e0
add esp, 4
mov dword [esp + 0x10], 0x643
jmp 0x401a53
push str.Global_MSISETUP_2956EBA1_9B5A_4679_8618_357136DA66CA
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov esi, eax
cmp esi, ebx
mov dword [esp + 0x98], esi
je 0x4016ed
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x4016fa
mov dword [esp + 0x10], 0x652
jmp 0x401a39
mov ebx, dword [esp + 0xc]
lea esi, [esp + 0x20]
mov edi, str.OPERATION
call fcn.004063c0
cmp eax, 0xe
mov dword [esp + 0x10], eax
jne 0x40173b
mov esi, dword [esp + 0xc4]
test esi, esi
jne 0x401727
mov esi, dword [esp + 0xc8]
mov eax, ebx
push eax
lea ecx, [esp + 0x1dc]
call fcn.00406b30
jmp 0x401a18
test eax, eax
je 0x4017f8
mov eax, dword [esp + 0x20]
test eax, eax
je 0x401754
push eax
call fcn.00407d45
add esp, 4
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenA]
push str.DEFAULT
call esi
add eax, 1
push eax
call fcn.0040885b
mov edi, eax
add esp, 4
test edi, edi
mov dword [esp + 0x20], edi
jne 0x4017a0
mov esi, dword [esp + 0xc4]
test esi, esi
jne 0x401789
mov esi, dword [esp + 0xc8]
mov ecx, ebx
push ecx
lea ecx, [esp + 0x1dc]
call fcn.00406b30
add esp, 4
jmp 0x401a1f
push str.DEFAULT
call esi
mov ecx, eax
add ecx, 1
cmp ecx, 0x7fffffff
ja 0x4017c4
mov eax, str.DEFAULT
mov edx, edi
call fcn.004013f0
test eax, eax
jge 0x4017f8
mov ecx, dword [esp + 0xc4]
test ecx, ecx
jne 0x4017d6
mov ecx, dword [esp + 0xc8]
mov esi, dword [esp + 0xc]
push 0x25
lea ebx, [esp + 0x1dc]
call fcn.004065e0
add esp, 4
mov dword [esp + 0x10], 0x643
jmp 0x401a1f
lea esi, [esp + 0x3c]
mov edi, str.PRODUCTNAME
call fcn.004063c0
cmp eax, 0xe
mov dword [esp + 0x10], eax
jne 0x401835
mov esi, dword [esp + 0xc4]
test esi, esi
jne 0x401821
mov esi, dword [esp + 0xc8]
mov edx, ebx
push edx
lea ecx, [esp + 0x1dc]
call fcn.00406b30
jmp 0x40197f
test eax, eax
je 0x401894
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x40184a
push eax
call fcn.00407d45
add esp, 4
push 0x100
call fcn.0040885b
add esp, 4
test eax, eax
mov dword [esp + 0x3c], eax
jne 0x401885
mov esi, dword [esp + 0xc4]
test esi, esi
jne 0x401871
mov esi, dword [esp + 0xc8]
mov eax, ebx
push eax
lea ecx, [esp + 0x1dc]
call fcn.00406b30
jmp 0x40197f
push 0x100
push eax
push 0x11
push ebx
call dword [sym.imp.USER32.dll_LoadStringA]
push 0x100
lea ecx, [esp + 0x514]
push ecx
push 0x10
push ebx
call dword [sym.imp.USER32.dll_LoadStringA]
mov edx, dword [esp + 0x3c]
push edx
lea eax, [esp + 0x514]
push eax
mov eax, 0x400
lea edi, [esp + 0xe18]
call fcn.00401390
add esp, 8
cmp byte [esp + 0x1cc], 0
je 0x4018f6
cmp byte [esp + 0x1cd], 0
jne 0x401b14
mov edx, dword [esp + 0xc4]
mov ecx, edi
push ecx
push 0x67
push edx
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
lea esi, [esp + 0x30]
mov edi, str.DATABASE
call fcn.004063c0
cmp eax, 0xe
mov dword [esp + 0x10], eax
jne 0x401b43
mov esi, dword [esp + 0xc4]
test esi, esi
jne 0x401923
mov esi, dword [esp + 0xc8]
mov eax, dword [esp + 0xc]
push eax
lea ecx, [esp + 0x1dc]
call fcn.00406b30
add esp, 4
mov eax, dword [esp + 0x30]
test eax, eax
je 0x401948
push eax
call fcn.00407d45
add esp, 4
mov eax, dword [esp + 0x38]
test eax, eax
je 0x401959
push eax
call fcn.00407d45
add esp, 4
mov eax, dword [esp + 0x18]
test eax, eax
je 0x40196a
push eax
call fcn.00407d45
add esp, 4
mov esi, dword [esp + 0x24]
test esi, esi
je 0x401982
push esi
call dword [sym.imp.WININET.dll_DeleteUrlCacheEntry]
push esi
call fcn.00407d45
add esp, 4
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x401993
push eax
call fcn.00407d45
add esp, 4
mov eax, dword [esp + 0x68]
test eax, eax
je 0x4019a4
push eax
call fcn.00407d45
add esp, 4
mov eax, dword [esp + 0x78]
test eax, eax
je 0x4019b5
push eax
call fcn.00407d45
add esp, 4
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4019c6
push eax
call fcn.00407d45
add esp, 4
mov eax, dword [esp + 0x34]
test eax, eax
je 0x4019d7
push eax
call fcn.00407d45
add esp, 4
mov eax, dword [esp + 0x70]
test eax, eax
je 0x4019e8
push eax
call fcn.00407d45
add esp, 4
mov eax, dword [esp + 0x74]
test eax, eax
je 0x4019f9
push eax
call fcn.00407d45
add esp, 4
mov eax, dword [esp + 0x60]
test eax, eax
je 0x401a0a
push eax
call fcn.00407d45
add esp, 4
mov eax, dword [esp + 0x58]
test eax, eax
je 0x401a1b
push eax
call fcn.00407d45
add esp, 4
mov edi, dword [esp + 0x20]
test edi, edi
je 0x401a2c
push edi
call fcn.00407d45
add esp, 4
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 0x98]
xor ebx, ebx
cmp esi, ebx
je 0x401a44
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x4c]
cmp eax, ebx
je 0x401a53
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov esi, dword [esp + 0x10]
push esi
mov ebx, str._Info__Setup_exit_code_is__d_n
call fcn.00407010
add esp, 4
cmp byte [esp + 0x17], 0
je 0x4031a6
cmp dword [0x417fb0], 0xffffffff
jne 0x401a7e
call fcn.00406fb0
cmp dword [0x418b34], 0
jne 0x401a90
cmp dword [0x417fb0], 0
je 0x401aa9
push str._Info__Setup_requires_reboot._n
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, str._Info__Setup_requires_reboot._n
call fcn.00407260
mov edi, dword [esp + 0xc]
push 0x400
lea eax, [esp + 0x614]
push eax
push 0x1e
push edi
call dword [sym.imp.USER32.dll_LoadStringA]
cmp dword [0x418b34], 0
jne 0x401af9
push 0x24
lea ecx, [esp + 0x1dc]
push ecx
lea edx, [esp + 0x618]
push edx
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 6
jne 0x401af9
call fcn.00406ee0
push 0x84040002
push 2
call dword [sym.imp.USER32.dll_ExitWindowsEx]
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2208]
xor ecx, esp
call fcn.0040850f
mov esp, ebp
pop ebp
ret 0x10
mov ecx, dword [esp + 0xc4]
test ecx, ecx
jne 0x401b26
mov ecx, dword [esp + 0xc8]
mov esi, dword [esp + 0xc]
lea ebx, [esp + 0x1d8]
call fcn.00406530
mov dword [esp + 0x10], 0x642
jmp 0x401982
test eax, eax
je 0x401bb2
mov ebx, dword [esp + 0xc]
lea esi, [esp + 0x30]
mov edi, str.PATCH
call fcn.004063c0
cmp eax, 0xe
mov dword [esp + 0x10], eax
jne 0x401b7c
mov esi, dword [esp + 0xc4]
test esi, esi
jne 0x401b74
mov esi, dword [esp + 0xc8]
mov ecx, ebx
push ecx
jmp 0x401928
test eax, eax
je 0x401bad
mov eax, dword [esp + 0xc4]
test eax, eax
jne 0x401b92
mov eax, dword [esp + 0xc8]
mov esi, dword [esp + 0xc]
push eax
mov ecx, str.DATABASE
lea ebx, [esp + 0x1dc]
call fcn.00406440
jmp 0x401934
mov byte [esp + 0x64], 1
cmp dword [esp + 0x40], 3
jne 0x401c03
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x64]
lea edx, [esp + 0x7c]
push edx
push eax
push ecx
call fcn.004061d0
add esp, 0xc
cmp eax, 0xa0
mov dword [esp + 0x10], eax
jne 0x401c03
mov esi, dword [esp + 0xc4]
test esi, esi
jne 0x401bed
mov esi, dword [esp + 0xc8]
mov edx, dword [esp + 0xc]
push edx
lea ecx, [esp + 0x1dc]
call fcn.00406a90
jmp 0x401934
mov ebx, dword [esp + 0xc]
lea esi, [esp + 0x68]
mov edi, str.MINIMUM_MSI
call fcn.004063c0
cmp eax, 0xe
mov dword [esp + 0x10], eax
je 0x402044
test eax, eax
je 0x401c53
mov eax, dword [esp + 0xc4]
test eax, eax
jne 0x401c38
mov eax, dword [esp + 0xc8]
mov esi, dword [esp + 0xc]
push eax
mov ecx, str.MINIMUM_MSI
lea ebx, [esp + 0x1dc]
call fcn.00406440
jmp 0x401934
push 4
lea ecx, [esp + 0xac]
push ecx
push 2
push 0
mov dword [esp + 0xb8], 0xea60
call dword [sym.imp.WININET.dll_InternetSetOptionA]
mov edi, dword [esp + 0x68]
push 0xa
lea edx, [esp + 0x54]
push edx
push edi
call fcn.00408b19
mov esi, eax
mov eax, dword [esp + 0x5c]
add esp, 0xc
test eax, eax
mov dword [esp + 0x28], esi
je 0x40316c
cmp eax, edi
je 0x40316c
cmp byte [eax], 0
jne 0x40316c
cmp esi, 0x96
jb 0x40316c
push esi
mov ebx, str._Resource__Minimum_Msi_Value___d_n
call fcn.00407010
add esp, 4
push esi
call fcn.00405080
add esp, 4
test al, al
je 0x401e81
push 0
push 0
push str._Info__Upgrade_of_Windows_Installer_is_requested_n
call fcn.004070f0
add esp, 0xc
call fcn.00406e10
test al, al
jne 0x401d1f
mov ecx, dword [esp + 0xc4]
test ecx, ecx
jne 0x401d00
mov ecx, dword [esp + 0xc8]
push 0x1a
mov esi, dword [esp + 0x10]
lea ebx, [esp + 0x1dc]
call fcn.004065e0
mov dword [esp + 0x14], 0x643
jmp 0x401934
mov ebx, dword [esp + 0xc]
push 0x400
lea eax, [esp + 0xa14]
push eax
push 0x21
push ebx
call dword [sym.imp.USER32.dll_LoadStringA]
cmp dword [0x418b34], 0
jne 0x401da1
mov eax, dword [esp + 0xc4]
test eax, eax
jne 0x401d54
mov eax, dword [esp + 0xc8]
push 0x24
lea ecx, [esp + 0x1dc]
push ecx
lea edx, [esp + 0xa18]
push edx
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 6
je 0x401da1
mov ecx, dword [esp + 0xc4]
test ecx, ecx
jne 0x401d84
mov ecx, dword [esp + 0xc8]
mov esi, dword [esp + 0xc]
lea ebx, [esp + 0x1d8]
call fcn.00406530
mov dword [esp + 0x10], 0x642
jmp 0x401937
lea esi, [esp + 0x60]
mov edi, 0x4138dc
call fcn.004063c0
cmp eax, 0xe
mov dword [esp + 0x10], eax
je 0x402044
test eax, eax
je 0x401ded
mov eax, dword [esp + 0xc4]
test eax, eax
jne 0x401dd2
mov eax, dword [esp + 0xc8]
mov esi, dword [esp + 0xc]
push eax
mov ecx, 0x4138dc
lea ebx, [esp + 0x1dc]
call fcn.00406440
jmp 0x401934
lea esi, [esp + 0x70]
mov edi, 0x4138e4
call fcn.004063c0
cmp eax, 0xe
mov dword [esp + 0x10], eax
je 0x401b62
test eax, eax
jne 0x401e3e
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x70]
push edx
push eax
push ecx
lea edx, [esp + 0xcc]
push edx
mov eax, ebx
push eax
lea edx, [esp + 0x314]
lea ecx, [esp + 0x1ec]
call fcn.004054c0
add esp, 0x14
jmp 0x401e69
mov ecx, dword [esp + 0x28]
push ecx
lea edx, [esp + 0x1dc]
push edx
lea eax, [esp + 0xc8]
push eax
mov eax, dword [esp + 0x6c]
mov ecx, ebx
push ecx
lea ecx, [esp + 0x310]
call fcn.00405280
add esp, 0x10
test eax, eax
mov dword [esp + 0x10], eax
je 0x401e81
cmp eax, 0xbc2
jne 0x401937
mov byte [esp + 0x17], 1
push 0
push 0
push str._Info__Windows_Installer_has_been_upgraded__or_was_already_correct_version_n
call fcn.004070f0
mov ebx, dword [esp + 0x18]
add esp, 0xc
lea esi, [esp + 0x78]
mov edi, str.MINIMUM_CLR
call fcn.004063c0
cmp eax, 0xe
mov dword [esp + 0x10], eax
jne 0x401ec7
mov esi, dword [esp + 0xc4]
test esi, esi
jne 0x401ebf
mov esi, dword [esp + 0xc8]
mov edx, ebx
push edx
jmp 0x401928
test eax, eax
jne 0x4020be
mov edi, dword [esp + 0x78]
push 0xa
lea eax, [esp + 0x54]
push eax
push edi
call fcn.00408b19
mov esi, eax
mov eax, dword [esp + 0x5c]
add esp, 0xc
test eax, eax
mov dword [esp + 0x44], esi
je 0x4021c6
cmp eax, edi
je 0x4021c6
cmp byte [eax], 0
jne 0x4021c6
cmp esi, 0xc8
jb 0x4021c6
push esi
mov ebx, str._Resource__Minimum_CLR_Value___d_n
call fcn.00407010
add esp, 4
call fcn.00403e10
test al, al
je 0x4020ad
push 0
push 0
push str._Info__Upgrade_of_Dot_Net_Framework_is_requested_n
call fcn.004070f0
add esp, 0xc
call fcn.00406e10
test al, al
je 0x401cee
mov ebx, dword [esp + 0xc]
push 0x400
lea ecx, [esp + 0xa14]
push ecx
push 0x27
push ebx
call dword [sym.imp.USER32.dll_LoadStringA]
cmp dword [0x418b34], 0
jne 0x401fa2
mov eax, dword [esp + 0xc4]
test eax, eax
jne 0x401f80
mov eax, dword [esp + 0xc8]
push 0x24
lea edx, [esp + 0x1dc]
push edx
lea ecx, [esp + 0xa18]
push ecx
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 6
jne 0x401d72
call fcn.00406dc0
movzx eax, ax
cmp ax, 6
jne 0x401fbf
mov edi, 0x4139a8
mov dword [esp + 0x28], 0x4139b8
jmp 0x401fea
cmp ax, 9
jne 0x401fd4
mov edi, 0x4139d0
mov dword [esp + 0x28], 0x4139e4
jmp 0x401fea
test ax, ax
jne 0x4021b9
mov edi, str.UPDATE_CLR_X86
mov dword [esp + 0x28], 0x413a10
lea esi, [esp + 0x58]
call fcn.004063c0
cmp eax, 0xe
mov dword [esp + 0x10], eax
je 0x401ead
test eax, eax
je 0x40202e
mov eax, dword [esp + 0xc4]
test eax, eax
jne 0x402016
mov eax, dword [esp + 0xc8]
mov esi, dword [esp + 0xc]
push eax
mov ecx, edi
lea ebx, [esp + 0x1dc]
call fcn.00406440
jmp 0x401934
mov edi, dword [esp + 0x28]
lea esi, [esp + 0x74]
call fcn.004063c0
cmp eax, 0xe
mov dword [esp + 0x10], eax
jne 0x40205d
mov esi, dword [esp + 0xc4]
test esi, esi
jne 0x402056
mov esi, dword [esp + 0xc8]
mov eax, ebx
jmp 0x401927
test eax, eax
jne 0x402178
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x74]
push ecx
push edx
push eax
lea ecx, [esp + 0xcc]
push ecx
mov edx, ebx
push edx
lea edx, [esp + 0x314]
lea ecx, [esp + 0x1ec]
call fcn.004040a0
add esp, 0x14
test eax, eax
mov dword [esp + 0x10], eax
je 0x4020ad
cmp eax, 0xbc2
jne 0x401937
mov byte [esp + 0x17], 1
push 0
push 0
push str._Info__Dot_Net_Framework_has_been_upgraded__or_was_already_correct_version_n
call fcn.004070f0
add esp, 0xc
cmp dword [esp + 0x40], 4
je 0x401937
mov bl, byte [esp + 0x64]
test bl, bl
mov esi, dword [sym.imp.KERNEL32.dll_CompareStringA]
push 0xffffffffffffffff
je 0x4021e2
mov edi, dword [esp + 0x24]
push str.MINPATCH
push 0xffffffffffffffff
push edi
push 1
push 0x409
call esi
cmp eax, 2
je 0x402285
push 0xffffffffffffffff
push str.MAJPATCH
push 0xffffffffffffffff
push edi
push 1
push 0x409
call esi
cmp eax, 2
je 0x402285
push 0xffffffffffffffff
push str.DEFAULT
push 0xffffffffffffffff
push edi
push 1
push 0x409
call esi
cmp eax, 2
je 0x402285
push 0
push edi
push str._Error__Operation__s_is_not_valid_for_a_patch_n
call fcn.004070f0
mov edx, dword [esp + 0xd0]
add esp, 0xc
test edx, edx
jne 0x402155
mov edx, dword [esp + 0xc8]
mov ecx, dword [esp + 0xc]
push edi
push 0x22
lea ebx, [esp + 0x1e0]
call fcn.00406870
add esp, 8
mov dword [esp + 0x10], 0x57
jmp 0x401937
mov eax, dword [esp + 0x44]
push eax
lea ecx, [esp + 0x1dc]
push ecx
lea edx, [esp + 0xc8]
push edx
mov eax, ebx
push eax
mov eax, dword [esp + 0x68]
lea ecx, [esp + 0x310]
call fcn.00403e50
add esp, 0x10
test eax, eax
mov dword [esp + 0x10], eax
je 0x4020ad
cmp eax, 0xbc2
jmp 0x4020a2
mov dword [esp + 0x10], 0x661
jmp 0x401937
mov eax, dword [esp + 0xc4]
test eax, eax
jne 0x4021d8
mov eax, dword [esp + 0xc8]
push 0xc8
jmp 0x403183
mov ecx, dword [esp + 0x24]
push 0x413764
push 0xffffffffffffffff
push ecx
push 1
push 0x409
call esi
cmp eax, 2
je 0x402281
mov edx, dword [esp + 0x20]
push 0xffffffffffffffff
push str.INSTALLUPD
push 0xffffffffffffffff
push edx
push 1
push 0x409
call esi
cmp eax, 2
je 0x402281
mov eax, dword [esp + 0x20]
push 0xffffffffffffffff
push str.DEFAULT
push 0xffffffffffffffff
push eax
push 1
push 0x409
call esi
cmp eax, 2
je 0x402281
mov esi, dword [esp + 0x20]
push 0
push esi
push str._Error__Operation__s_is_not_valid_for_a_package_n
call fcn.004070f0
mov edx, dword [esp + 0xd0]
add esp, 0xc
test edx, edx
jne 0x40225e
mov edx, dword [esp + 0xc8]
mov ecx, dword [esp + 0xc]
push esi
push 0x22
lea ebx, [esp + 0x1e0]
call fcn.00406870
add esp, 8
mov dword [esp + 0x10], 0x57
jmp 0x401937
mov edi, dword [esp + 0x20]
push 0xffffffffffffffff
push str.MINPATCH
push 0xffffffffffffffff
push edi
push 1
push 0x409
call esi
cmp eax, 2
je 0x4022d1
push 0xffffffffffffffff
push str.INSTALLUPD
push 0xffffffffffffffff
push edi
push 1
push 0x409
call esi
cmp eax, 2
je 0x4022d1
test bl, bl
je 0x4022d6
push 0xffffffffffffffff
push str.DEFAULT
push 0xffffffffffffffff
push edi
push 1
push 0x409
call esi
cmp eax, 2
jne 0x4022d6
mov byte [esp + 0x16], 1
mov ebx, dword [esp + 0xc]
lea esi, [esp + 0x38]
mov edi, str.BASEURL
call fcn.004063c0
cmp eax, 0xe
mov dword [esp + 0x10], eax
je 0x401b62
test eax, eax
jne 0x4027bc
mov edx, dword [esp + 0x38]
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenA]
push edx
call edi
mov esi, eax
mov eax, dword [esp + 0x30]
push eax
call edi
lea esi, [esi + eax + 2]
push esi
call fcn.0040885b
mov ebx, eax
add esp, 4
test ebx, ebx
mov dword [esp + 0x34], ebx
jne 0x40235a
mov esi, dword [esp + 0xc4]
test esi, esi
jne 0x40233c
mov esi, dword [esp + 0xc8]
mov ecx, dword [esp + 0xc]
push ecx
lea ecx, [esp + 0x1dc]
call fcn.00406b30
mov dword [esp + 0x14], 0xe
jmp 0x401934
cmp esi, 0x7fffffff
ja 0x402373
mov eax, dword [esp + 0x38]
mov ecx, esi
mov edx, ebx
call fcn.004013f0
test eax, eax
jge 0x40238c
mov ecx, dword [esp + 0xc4]
test ecx, ecx
jne 0x402385
mov ecx, dword [esp + 0xc8]
push 0x25
jmp 0x401d02
mov edx, dword [esp + 0x38]
push edx
call edi
mov ecx, dword [esp + 0x38]
lea eax, [eax + ecx + 1]
push eax
push ecx
call dword [sym.imp.USER32.dll_CharPrevA]
cmp byte [eax], 0x2f
je 0x4023ba
push 0x412d4c
mov ecx, esi
mov edi, ebx
call fcn.00401340
test eax, eax
jl 0x402373
mov eax, dword [esp + 0x30]
push eax
mov ecx, esi
mov edi, ebx
call fcn.00401340
test eax, eax
jl 0x402373
add esi, esi
push esi
mov dword [esp + 0x30], esi
call fcn.0040885b
add esp, 4
test eax, eax
mov dword [esp + 0x18], eax
je 0x40232a
mov edi, dword [sym.imp.WININET.dll_InternetCanonicalizeUrlA]
push 0x20000000
lea edx, [esp + 0x30]
push edx
push eax
push ebx
call edi
test eax, eax
jne 0x4024b7
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
call ebx
mov esi, eax
cmp esi, 0x7a
jne 0x40247e
mov eax, dword [esp + 0x18]
push eax
call fcn.00407d45
mov ecx, dword [esp + 0x30]
add esp, 4
push ecx
call fcn.0040885b
add esp, 4
test eax, eax
mov dword [esp + 0x18], eax
jne 0x402464
mov esi, dword [esp + 0xc4]
test esi, esi
jne 0x402446
mov esi, dword [esp + 0xc8]
mov edx, dword [esp + 0xc]
push edx
lea ecx, [esp + 0x1dc]
call fcn.00406b30
mov dword [esp + 0x14], 0xe
jmp 0x401934
mov edx, dword [esp + 0x34]
push 0x20000000
lea ecx, [esp + 0x30]
push ecx
push eax
push edx
call edi
test eax, eax
jne 0x4024b7
call ebx
mov esi, eax
test esi, esi
je 0x4024b7
mov edx, dword [esp + 0xc4]
test edx, edx
jne 0x402494
mov edx, dword [esp + 0xc8]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0xc]
push eax
push 0x17
lea ebx, [esp + 0x1e0]
call fcn.00406870
add esp, 8
mov dword [esp + 0x10], esi
jmp 0x401937
mov esi, dword [esp + 0xc]
push 0x100
lea ecx, [esp + 0x514]
push ecx
push 0x12
push esi
call dword [sym.imp.USER32.dll_LoadStringA]
mov edx, dword [esp + 0x30]
push edx
lea eax, [esp + 0x514]
push eax
mov eax, 0x400
lea edi, [esp + 0x618]
call fcn.00401390
add esp, 8
mov ecx, edi
lea eax, [esp + 0xc0]
call fcn.00404de0
cmp eax, 1
jne 0x402534
mov ecx, dword [esp + 0xc4]
test ecx, ecx
jne 0x401d88
mov ecx, dword [esp + 0xc8]
lea ebx, [esp + 0x1d8]
call fcn.00406530
mov dword [esp + 0x10], 0x642
jmp 0x401937
mov ebx, dword [esp + 0x18]
push 0
push ebx
push str._Info__Downloading_msi_file__s_for_WinVerifyTrust_check_n
call fcn.004070f0
add esp, 0xc
push 0x104
call fcn.0040885b
add esp, 4
test eax, eax
mov dword [esp + 0x24], eax
jne 0x40258b
mov eax, dword [esp + 0xc4]
test eax, eax
jne 0x40256f
mov eax, dword [esp + 0xc8]
push esi
mov esi, eax
lea ecx, [esp + 0x1dc]
call fcn.00406b30
mov dword [esp + 0x14], 0xe
jmp 0x401934
mov eax, dword [esp + 0x24]
lea edx, [esp + 0xb0]
push edx
push 0
push 0x104
push eax
push ebx
lea ecx, [esp + 0xd4]
push 0
mov dword [esp + 0xc8], vtable.CDownloadBindStatusCallback.0
mov dword [esp + 0xcc], ecx
mov dword [esp + 0xd0], 1
mov dword [esp + 0xd4], 0
call sub.urlmon.dll_URLDownloadToCacheFileA
cmp byte [esp + 0x1cd], 0
mov edi, eax
jne 0x402505
push 6
push str.https:
push ebx
call fcn.00410241
add esp, 0xc
test eax, eax
sete al
test edi, edi
jge 0x4026c5
test al, al
je 0x40268e
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x402610
push 0x800
sub eax, edx
lea ecx, [esp + 0x1214]
push ecx
add eax, 1
push eax
push ebx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov edi, dword [esp + 0x24]
push 0x104
push 0
push edi
call fcn.00409070
add esp, 0xc
push 0x104
push edi
push str.SystemRoot
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
push str.Temp_
mov ecx, 0x104
call fcn.00401340
mov edx, dword [esp + 0x30]
push edx
mov ecx, 0x104
call fcn.00401340
push edi
lea ecx, [esp + 0x1214]
call fcn.00401080
add esp, 4
test eax, eax
jne 0x4026c5
mov edx, dword [esp + 0xc4]
test edx, edx
jne 0x4026a0
mov edx, dword [esp + 0xc8]
mov eax, dword [esp + 0x18]
push eax
push 0xd
lea ebx, [esp + 0x1e0]
mov ecx, esi
call fcn.00406870
add esp, 8
mov dword [esp + 0x10], 2
jmp 0x401937
mov ebx, dword [esp + 0x24]
push 0
push ebx
push str._Info__Msi_file_was_cached_to__s_n
call fcn.004070f0
add esp, 0xc
push 0x100
lea ecx, [esp + 0x514]
push ecx
push 0x13
push esi
call dword [sym.imp.USER32.dll_LoadStringA]
mov edx, dword [esp + 0x30]
push edx
lea eax, [esp + 0x514]
push eax
mov eax, 0x400
lea edi, [esp + 0x618]
call fcn.00401390
add esp, 8
mov ecx, edi
lea eax, [esp + 0xc0]
call fcn.00404de0
cmp eax, 1
je 0x402505
mov eax, dword [esp + 0xc4]
test eax, eax
jne 0x402739
mov eax, dword [esp + 0xc8]
push eax
mov edx, ebx
lea ecx, [esp + 0x304]
call fcn.00407950
add esp, 4
test eax, eax
jne 0x40277c
mov ecx, dword [esp + 0xc4]
test ecx, ecx
jne 0x402761
mov ecx, dword [esp + 0xc8]
push 0x15
lea ebx, [esp + 0x1dc]
call fcn.004065e0
mov dword [esp + 0x14], 0x78
jmp 0x401934
cmp eax, 2
jne 0x4029e6
mov edx, dword [esp + 0xc4]
test edx, edx
jne 0x402797
mov edx, dword [esp + 0xc8]
mov ecx, dword [esp + 0x18]
push ecx
push 0x16
lea ebx, [esp + 0x1e0]
mov ecx, esi
call fcn.00406870
add esp, 8
mov dword [esp + 0x10], 4
jmp 0x401937
mov ebx, dword [esp + 0x30]
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenA]
push ebx
call esi
lea edx, [esp + 0x300]
push edx
mov edi, eax
call esi
lea esi, [edi + eax + 2]
push esi
call fcn.0040885b
mov edi, eax
add esp, 4
test edi, edi
mov dword [esp + 0x34], edi
jne 0x40281c
mov esi, dword [esp + 0xc4]
test esi, esi
jne 0x4027fe
mov esi, dword [esp + 0xc8]
mov eax, dword [esp + 0xc]
push eax
lea ecx, [esp + 0x1dc]
call fcn.00406b30
mov dword [esp + 0x14], 0xe
jmp 0x401934
lea ecx, [esp + 0x54]
push ecx
push edi
push esi
lea edx, [esp + 0x30c]
push edx
call dword [sym.imp.KERNEL32.dll_GetFullPathNameA]
test eax, eax
jne 0x40286c
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, dword [esp + 0xc4]
test edx, edx
mov dword [esp + 0x10], eax
jne 0x402851
mov edx, dword [esp + 0xc8]
mov ecx, dword [esp + 0xc]
push edi
push 0x17
lea ebx, [esp + 0x1e0]
call fcn.00406870
add esp, 8
jmp 0x401937
mov eax, dword [esp + 0x54]
test eax, eax
je 0x402877
mov byte [eax], 0
cmp esi, 0x7fffffff
ja 0x402373
push ebx
mov ecx, esi
call fcn.00401340
test eax, eax
jl 0x402373
add esi, esi
push esi
mov dword [esp + 0x30], esi
call fcn.0040885b
mov ebx, eax
add esp, 4
test ebx, ebx
mov dword [esp + 0x18], ebx
jne 0x4028e0
mov esi, dword [esp + 0xc4]
test esi, esi
jne 0x4027fe
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0xc8]
push eax
lea ecx, [esp + 0x1dc]
call fcn.00406b30
mov dword [esp + 0x14], 0xe
jmp 0x401934
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x34]
lea ecx, [esp + 0x54]
push ecx
push ebx
push edx
push esi
call dword [sym.imp.KERNEL32.dll_GetFullPathNameA]
mov edi, eax
cmp edi, dword [esp + 0x2c]
jbe 0x402968
push ebx
call fcn.00407d45
add esp, 4
push edi
mov dword [esp + 0x30], edi
call fcn.0040885b
add esp, 4
test eax, eax
mov dword [esp + 0x18], eax
jne 0x402950
mov esi, dword [esp + 0xc4]
test esi, esi
jne 0x4027fe
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0xc8]
push eax
lea ecx, [esp + 0x1dc]
call fcn.00406b30
mov dword [esp + 0x14], 0xe
jmp 0x401934
mov edx, dword [esp + 0x2c]
lea ecx, [esp + 0x54]
push ecx
push eax
push edx
push esi
call dword [sym.imp.KERNEL32.dll_GetFullPathNameA]
mov ebx, dword [esp + 0x18]
mov edi, eax
test edi, edi
jne 0x4029a1
mov edx, dword [esp + 0xc4]
test edx, edx
jne 0x40297e
mov edx, dword [esp + 0xc8]
mov ecx, dword [esp + 0xc]
push esi
push 0x17
lea ebx, [esp + 0x1e0]
call fcn.00406870
add esp, 8
mov dword [esp + 0x10], 0
jmp 0x401937
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x4029e6
mov edx, dword [esp + 0xc4]
test edx, edx
jne 0x4029bf
mov edx, dword [esp + 0xc8]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0xc]
push eax
push 0xd
lea ebx, [esp + 0x1e0]
call fcn.00406870
add esp, 8
mov dword [esp + 0x10], 2
jmp 0x401937
mov ebx, dword [esp + 0xc]
lea esi, [esp + 0x1c]
mov edi, str.PROPERTIES
call fcn.004063c0
cmp eax, 0xe
jne 0x402a16
mov esi, dword [esp + 0xc4]
test esi, esi
jne 0x402a0f
mov esi, dword [esp + 0xc8]
mov ecx, ebx
jmp 0x402340
test eax, eax
je 0x402a33
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x402a2b
push eax
call fcn.00407d45
add esp, 4
mov dword [esp + 0x1c], 0
lea esi, [esp + 0xc0]
call fcn.00404da0
push str.msi.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
test edi, edi
mov dword [esp + 0x4c], edi
je 0x403153
mov ebx, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.MsiSetInternalUI
push edi
call ebx
push str.MsiInstallProductA
push edi
mov dword [esp + 0x4c], eax
call ebx
push str.MsiApplyPatchA
mov esi, eax
push edi
mov dword [esp + 0xb4], esi
call ebx
push str.MsiReinstallProductA
push edi
mov dword [esp + 0x18], eax
call ebx
push str.MsiQueryProductStateA
push edi
mov dword [esp + 0xa4], eax
call ebx
push str.MsiOpenDatabaseA
push edi
mov dword [esp + 0x64], eax
call ebx
push str.MsiDatabaseOpenViewA
push edi
mov dword [esp + 0xa8], eax
call ebx
push str.MsiViewExecute
push edi
mov dword [esp + 0x90], eax
call ebx
push str.MsiViewFetch
push edi
mov dword [esp + 0x98], eax
call ebx
push str.MsiRecordGetStringA
push edi
mov dword [esp + 0x9c], eax
call ebx
push str.MsiCloseHandle
push edi
mov dword [esp + 0x94], eax
call ebx
push str.MsiEnableLogA
push edi
mov dword [esp + 0x30], eax
call ebx
cmp dword [esp + 0x44], 0
mov ebx, eax
je 0x403153
test esi, esi
je 0x403153
cmp dword [esp + 0x10], 0
je 0x403153
cmp dword [esp + 0x9c], 0
je 0x403153
cmp dword [esp + 0x5c], 0
je 0x403153
cmp dword [esp + 0x88], 0
je 0x403153
cmp dword [esp + 0x90], 0
je 0x403153
cmp dword [esp + 0x94], 0
je 0x403153
cmp dword [esp + 0x8c], 0
je 0x403153
cmp dword [esp + 0x28], 0
je 0x403153
push 0x105
lea edx, [esp + 0x40c]
push 0
push edx
call fcn.00409070
mov esi, dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
add esp, 0xc
push 0x105
lea eax, [esp + 0x40c]
push eax
push str.SystemRoot
call esi
mov ecx, 0x105
lea eax, [esp + 0x408]
lea ebx, [ebx]
cmp byte [eax], 0
je 0x402bcf
add eax, 1
sub ecx, 1
jne 0x402bc0
jmp 0x402bf2
test ecx, ecx
je 0x402bf2
mov eax, 0x105
sub eax, ecx
mov ecx, 0x105
sub ecx, eax
lea edx, [esp + eax + 0x408]
mov eax, str.Temp
call fcn.004013f0
lea ecx, [esp + 0x408]
push ecx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
push 0
push 0
push str._Info__Setting_Internal_UI_level_to_FULL..._n
call fcn.004070f0
mov edx, dword [0x418b34]
add esp, 0xc
neg edx
sbb edx, edx
and edx, 0xfffffffd
push 0
add edx, 5
push edx
call dword [esp + 0x4c]
test ebx, ebx
je 0x402cd1
push 0x105
lea eax, [esp + 0x40c]
push 0
push eax
call fcn.00409070
add esp, 0xc
push 0x105
lea ecx, [esp + 0x40c]
push ecx
push str.SystemRoot
call esi
mov ecx, 0x105
lea eax, [esp + 0x408]
cmp byte [eax], 0
je 0x402c76
add eax, 1
sub ecx, 1
jne 0x402c67
jmp 0x402c99
test ecx, ecx
je 0x402c99
mov eax, 0x105
sub eax, ecx
mov ecx, 0x105
sub ecx, eax
lea edx, [esp + eax + 0x408]
mov eax, str.TempPtSetup.log
call fcn.004013f0
push 0
push 0x80
push 2
push 0
push 0
push 0x10000000
lea edx, [esp + 0x420]
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 3
lea eax, [esp + 0x40c]
push eax
push 0x1000
call ebx
cmp byte [esp + 0x64], 0
jne 0x402fd8
mov esi, dword [esp + 0x24]
test esi, esi
mov eax, esi
jne 0x402cea
mov eax, dword [esp + 0x18]
push 0
push eax
push str._Info__Calling_MsiInstallProduct_with_szInstallPath___s
call fcn.004070f0
mov eax, dword [esp + 0x28]
add esp, 0xc
test eax, eax
jne 0x402d07
mov eax, str.null
push 0
push eax
push str._and_szCommandLine___s_n
call fcn.004070f0
add esp, 0xc
cmp byte [esp + 0x16], 0
je 0x402e5c
test esi, esi
mov eax, esi
jne 0x402d2c
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x84]
push ecx
push 0
push eax
call dword [esp + 0xac]
test eax, eax
jne 0x402e00
mov eax, dword [esp + 0x84]
lea edx, [esp + 0x48]
push edx
push str.SELECT__Value__FROM__Property__WHERE__Property_ProductCode
push eax
call dword [esp + 0x94]
test eax, eax
jne 0x402e00
mov ecx, dword [esp + 0x48]
push eax
push ecx
call dword [esp + 0x98]
test eax, eax
jne 0x402e00
mov eax, dword [esp + 0x48]
lea edx, [esp + 0x6c]
push edx
push eax
call dword [esp + 0x9c]
test eax, eax
jne 0x402e00
mov eax, dword [esp + 0x6c]
lea ecx, [esp + 0xa4]
push ecx
lea edx, [esp + 0x2dc]
push edx
push 1
push eax
call dword [esp + 0x9c]
test eax, eax
jne 0x402e00
lea ecx, [esp + 0x2d8]
push ecx
call dword [esp + 0x60]
mov esi, eax
push esi
mov ebx, str._Info__MsiQueryProductState_returned__d_n
call fcn.00407010
add esp, 4
cmp esi, 1
je 0x402dea
cmp esi, 5
je 0x402dea
push 0
lea edx, [esp + 0x2dc]
push edx
push str._Info__The_product_code__s_is_unknown._Will_use_first_time_install_logic..._n
jmp 0x402e09
push 0
lea eax, [esp + 0x2dc]
push eax
push str._Info__The_product_code__s_is_known._Will_use_QFE_recache_and_reinstall_upgrade_logic..._n
call fcn.004070f0
jmp 0x402e13
push 0
push 0
push str._Info__Unable_to_process_product_code._Will_treat_as_first_time_install..._n
call fcn.004070f0
mov byte [esp + 0x22], 0
mov eax, dword [esp + 0x90]
mov esi, dword [esp + 0x34]
add esp, 0xc
test eax, eax
je 0x402e28
push eax
call esi
mov eax, dword [esp + 0x48]
test eax, eax
je 0x402e33
push eax
call esi
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x402e3e
push eax
call esi
cmp byte [esp + 0x16], 0
je 0x402e5c
mov ebx, dword [esp + 0x1c]
test ebx, ebx
jne 0x402e64
push str.REINSTALLALL_REINSTALLMODEvomus
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ebx, eax
jmp 0x402e93
mov ebx, dword [esp + 0x1c]
test ebx, ebx
je 0x402e8c
cmp byte [esp + 0x17], 0
je 0x402e6f
xor esi, esi
jmp 0x402e7c
push str._DOTNETREQUIRESREBOOT0
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, esi
mov dword [esp + 0x80], eax
mov ebx, dword [esp + 0x80]
cmp dword [esp + 0x40], 3
jne 0x402ea7
push str._ACTIONADMIN
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add ebx, eax
add ebx, 1
push ebx
call fcn.0040885b
mov esi, eax
add esp, 4
test esi, esi
je 0x40232a
cmp byte [esp + 0x16], 0
je 0x402fa3
cmp dword [esp + 0x1c], 0
jne 0x402faa
cmp ebx, 0x7fffffff
ja 0x402373
mov eax, str.REINSTALLALL_REINSTALLMODEvomus
mov ecx, ebx
mov edx, esi
call fcn.004013f0
test eax, eax
jl 0x402373
cmp ebx, 0x7fffffff
ja 0x402373
push str._DOTNETREQUIRESREBOOT0
mov ecx, ebx
mov edi, esi
call fcn.00401340
test eax, eax
jl 0x402373
mov edi, dword [esp + 0x4c]
cmp dword [esp + 0x40], 3
jne 0x402f48
cmp ebx, 0x7fffffff
ja 0x402373
push str._ACTIONADMIN
mov ecx, ebx
mov edi, esi
call fcn.00401340
test eax, eax
jl 0x402373
mov edi, dword [esp + 0x4c]
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x402f54
mov eax, dword [esp + 0x18]
push esi
push eax
call dword [esp + 0xb4]
mov esi, eax
test esi, esi
mov dword [esp + 0x10], esi
je 0x402f93
mov eax, dword [esp + 0xc4]
test eax, eax
jne 0x402f79
mov eax, dword [esp + 0xc8]
lea edx, [esp + 0x1d8]
push edx
push eax
mov eax, dword [esp + 0x14]
push eax
mov ecx, esi
mov edx, edi
call fcn.00406990
add esp, 0xc
push esi
mov ebx, str._Info__MsiInstallProduct_returned__d_n
call fcn.00407010
jmp 0x401934
cmp dword [esp + 0x1c], 0
je 0x402fd0
cmp ebx, 0x7fffffff
ja 0x402373
mov eax, dword [esp + 0x1c]
mov ecx, ebx
mov edx, esi
call fcn.004013f0
test eax, eax
jge 0x402f1b
jmp 0x402373
mov byte [esi], 0
jmp 0x402f1b
mov ebx, dword [esp + 0x1c]
test ebx, ebx
jne 0x40304e
cmp byte [esp + 0x16], bl
je 0x40304e
push ebx
push str.REINSTALLALL_REINSTALLMODEomus
push str._Info__Patch_is_a_MINPATCH__small_or_minor_update_patch__so_using_default_command_line__s_n
call fcn.004070f0
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
add esp, 0xc
push str.REINSTALLALL_REINSTALLMODEomus
call ebx
add eax, 1
push eax
call fcn.0040885b
mov esi, eax
add esp, 4
test esi, esi
mov dword [esp + 0x1c], esi
je 0x40232a
push str.REINSTALLALL_REINSTALLMODEomus
call ebx
mov ecx, eax
add ecx, 1
cmp ecx, 0x7fffffff
ja 0x402373
mov eax, str.REINSTALLALL_REINSTALLMODEomus
mov edx, esi
call fcn.004013f0
test eax, eax
jl 0x402373
mov ebx, esi
cmp dword [esp + 0x40], 3
mov esi, dword [esp + 0x24]
jne 0x4030b3
push 0
push esi
push str._Info__Calling_MsiApplyPatch_with_szPatchPackage___s
call fcn.004070f0
mov edx, dword [esp + 0x88]
add esp, 0xc
push 0
push edx
push str._and_szInstallPackage___s_and_eInstallType__INSTALLTYPE_NETWORK_IMAGE
call fcn.004070f0
add esp, 0xc
test ebx, ebx
mov eax, ebx
jne 0x40308b
mov eax, str.null
push 0
push eax
push str._and_szCommandLine___s_n
call fcn.004070f0
mov eax, dword [esp + 0x88]
add esp, 0xc
push ebx
push 1
push eax
push esi
call dword [esp + 0x20]
mov esi, eax
mov dword [esp + 0x10], esi
jmp 0x403113
test esi, esi
mov eax, esi
jne 0x4030bd
mov eax, dword [esp + 0x18]
push 0
push eax
push str._Info__Calling_MsiApplyPatch_with_szPatchPackage___s
call fcn.004070f0
add esp, 0xc
push 0
push 0
push str._and_szInstallPackage__null_and_eInstallType__INSTALLTYPE_DEFAULT
call fcn.004070f0
add esp, 0xc
test ebx, ebx
mov eax, ebx
jne 0x4030e9
mov eax, str.null
push 0
push eax
push str._and_szCommandLine___s_n
call fcn.004070f0
add esp, 0xc
test esi, esi
mov eax, esi
jne 0x403103
mov eax, dword [esp + 0x18]
push ebx
push 0
push 0
push eax
call dword [esp + 0x20]
mov dword [esp + 0x10], eax
mov esi, eax
test esi, esi
je 0x403143
mov eax, dword [esp + 0xc4]
test eax, eax
jne 0x403129
mov eax, dword [esp + 0xc8]
mov edx, dword [esp + 0xc]
lea ecx, [esp + 0x1d8]
push ecx
push eax
push edx
mov ecx, esi
mov edx, edi
call fcn.00406990
add esp, 0xc
push esi
mov ebx, str._Info__MsiApplyPatch_returned__d_n
call fcn.00407010
jmp 0x401934
mov ecx, dword [esp + 0xc4]
test ecx, ecx
jne 0x403165
mov ecx, dword [esp + 0xc8]
push 0x1d
jmp 0x401d02
mov eax, dword [esp + 0xc4]
test eax, eax
jne 0x40317e
mov eax, dword [esp + 0xc8]
push 0x96
mov esi, dword [esp + 0x10]
push eax
mov ecx, edi
lea ebx, [esp + 0x1e0]
call fcn.00406690
add esp, 8
mov dword [esp + 0x10], 0x57
jmp 0x401937
mov ecx, dword [esp + 0x2214]
pop edi
mov eax, esi
pop esi
pop ebx
xor ecx, esp
call fcn.0040850f
mov esp, ebp
pop ebp
ret 0x10