Function at 0x401180
Capabilities:
Check if file exists
Delete file
Download and write a file
Download url
Extract resource via kernel32 functions
Get common file path
Get file attributes
Link many functions at runtime
Receive and write data from server to client
Receive data
Reference sql statements
Shutdown system
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x370c
call fcn.00405b00
xor eax, eax
push ebx
xor ebx, ebx
push esi
push edi
mov byte [esp + 0xa8], bl
mov ecx, 0x3f
lea edi, [esp + 0xa9]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [esp + 0x400], bl
mov ecx, 0x3f
lea edi, [esp + 0x401]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [esp + 0xf18], bl
mov ecx, 0xff
lea edi, [esp + 0xf19]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [esp + 0x718], bl
mov ecx, 0xff
lea edi, [esp + 0x719]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [esp + 0x1318], bl
mov ecx, 0xff
lea edi, [esp + 0x1319]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [esp + 0x2c0], bl
mov ecx, 9
lea edi, [esp + 0x2c1]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [esp + 0xb18], bl
mov ecx, 0xff
lea edi, [esp + 0xb19]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor esi, esi
mov byte [esp + 0x2f8], bl
xor eax, eax
mov ecx, 0x40
lea edi, [esp + 0x2f9]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov dword [esp + 0x28], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x64], ebx
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x80], ebx
stosb byte es:[edi], al
mov dword [esp + 0x30], ebx
mov dword [esp + 0x9c], ebx
mov dword [esp + 0xa0], 0x28
mov dword [esp + 0x88], ebx
mov byte [esp + 0x1b], bl
lea eax, [esp + 0x1718]
push eax
push 0x1000
mov byte [esp + 0x50], bl
mov byte [esp + 0x17], bl
mov dword [esp + 0x58], ebx
mov dword [esp + 0x80], ebx
mov dword [esp + 0x64], ebx
mov dword [esp + 0x78], ebx
mov dword [esp + 0x74], ebx
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea ecx, [esp + 0x1a8]
call fcn.00402ac0
mov edi, dword [ebp + 8]
push 0x100
lea ecx, [esp + 0xac]
push ecx
push 0xb
push edi
call dword [sym.imp.USER32.dll_LoadStringA]
push 0x104
lea edx, [esp + 0x2fc]
push edx
push edi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x401338
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
jmp 0x401394
push ebx
lea eax, [esp + 0x2fc]
push eax
push str._Info__we_are_running_from______s_n
call fcn.00404e60
mov edi, dword [ebp + 0x10]
push edi
call fcn.00404850
add esp, 0x10
cmp eax, 2
mov dword [esp + 0x4c], eax
jne 0x4014ed
lea ecx, [esp + 0x2f8]
push edi
push ecx
call fcn.00404780
mov esi, eax
add esp, 8
cmp esi, 0xa0
jne 0x401394
mov eax, dword [ebp + 8]
lea edx, [esp + 0xa8]
push edx
push ebx
push eax
call fcn.00404330
add esp, 0xc
mov eax, dword [esp + 0x28]
cmp eax, ebx
je 0x4013a5
push eax
call fcn.00405af6
add esp, 4
mov eax, dword [esp + 0x40]
cmp eax, ebx
je 0x4013b6
push eax
call fcn.00405af6
add esp, 4
mov eax, dword [esp + 0x1c]
cmp eax, ebx
je 0x4013c7
push eax
call fcn.00405af6
add esp, 4
mov edi, dword [esp + 0x38]
cmp edi, ebx
je 0x4013df
push edi
call dword [sym.imp.WININET.dll_DeleteUrlCacheEntry]
push edi
call fcn.00405af6
add esp, 4
mov eax, dword [esp + 0x44]
cmp eax, ebx
je 0x4013f0
push eax
call fcn.00405af6
add esp, 4
mov eax, dword [esp + 0x58]
cmp eax, ebx
je 0x401401
push eax
call fcn.00405af6
add esp, 4
mov eax, dword [esp + 0x14]
cmp eax, ebx
je 0x401412
push eax
call fcn.00405af6
add esp, 4
mov eax, dword [esp + 0x20]
cmp eax, ebx
je 0x401423
push eax
call fcn.00405af6
add esp, 4
mov eax, dword [esp + 0x7c]
cmp eax, ebx
je 0x401434
push eax
call fcn.00405af6
add esp, 4
mov eax, dword [esp + 0x54]
cmp eax, ebx
je 0x401445
push eax
call fcn.00405af6
add esp, 4
mov eax, dword [esp + 0x10]
cmp eax, ebx
je 0x401456
push eax
call fcn.00405af6
add esp, 4
mov eax, dword [esp + 0x8c]
cmp eax, ebx
je 0x401468
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x50]
cmp eax, ebx
je 0x401477
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push esi
push str._Info__Setup_exit_code_is__d_n
call fcn.00404d80
mov al, byte [esp + 0x23]
add esp, 8
cmp al, bl
je 0x4014d6
mov edx, dword [ebp + 8]
push 0x400
lea ecx, [esp + 0x71c]
push ecx
push 0x1e
push edx
call dword [sym.imp.USER32.dll_LoadStringA]
push 0x24
lea eax, [esp + 0xac]
push eax
lea ecx, [esp + 0x720]
push ecx
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 6
jne 0x4014d6
call fcn.00404660
push 0x84040002
push 2
call dword [sym.imp.USER32.dll_ExitWindowsEx]
lea ecx, [esp + 0x1a8]
call fcn.00402b00
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp eax, 1
je 0x40137f
mov edi, dword [ebp + 8]
lea edx, [esp + 0xa8]
push edx
push ebx
push edi
lea ecx, [esp + 0x1b4]
call fcn.00403220
call fcn.00404530
test al, al
jne 0x401542
push 0x24
lea eax, [esp + 0xac]
push eax
lea ecx, [esp + 0x1b0]
call fcn.00402c00
push eax
push edi
call fcn.00404290
add esp, 0x10
mov esi, 0x643
jmp 0x401394
lea ecx, [esp + 0x8c]
push ecx
mov dword [esp + 0x90], ebx
call fcn.00404300
add esp, 4
test al, al
je 0x401567
mov esi, 0x652
jmp 0x401394
push ebx
lea edx, [esp + 0x14]
push edx
push str.OPERATION
push edi
call fcn.00405000
mov esi, eax
add esp, 0x10
cmp esi, 0xe
je 0x402492
cmp esi, ebx
je 0x401626
mov eax, dword [esp + 0x10]
cmp eax, ebx
je 0x40159f
push eax
call fcn.00405af6
add esp, 4
push str.DEFAULT
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
call fcn.00405ae8
add esp, 4
cmp eax, ebx
mov dword [esp + 0x10], eax
jne 0x4015dc
lea ecx, [esp + 0xa8]
push ecx
lea ecx, [esp + 0x1ac]
call fcn.00402c00
push eax
push edi
call fcn.00404380
jmp 0x401391
push str.DEFAULT
push str.DEFAULT
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edx, dword [esp + 0x14]
inc eax
push eax
push edx
call fcn.004010b0
test eax, eax
jge 0x401626
push 0x25
lea eax, [esp + 0xac]
push eax
lea ecx, [esp + 0x1b0]
call fcn.00402c00
push eax
push edi
call fcn.00404290
add esp, 0x10
mov esi, 0x643
jmp 0x401394
push ebx
lea ecx, [esp + 0x48]
push ecx
push str.PRODUCTNAME
push edi
call fcn.00405000
mov esi, eax
add esp, 0x10
cmp esi, 0xe
jne 0x401661
lea edx, [esp + 0xa8]
push edx
lea ecx, [esp + 0x1ac]
call fcn.00402c00
push eax
push edi
call fcn.00404380
jmp 0x401391
cmp esi, ebx
je 0x40169e
mov eax, dword [esp + 0x44]
cmp eax, ebx
je 0x401676
push eax
call fcn.00405af6
add esp, 4
push 0x100
call fcn.00405ae8
add esp, 4
cmp eax, ebx
mov dword [esp + 0x44], eax
je 0x402492
push 0x100
push eax
push 0x11
push edi
call dword [sym.imp.USER32.dll_LoadStringA]
push 0x100
lea ecx, [esp + 0x404]
push ecx
push 0x10
push edi
call dword [sym.imp.USER32.dll_LoadStringA]
mov edx, dword [esp + 0x44]
push edx
lea eax, [esp + 0x404]
push eax
lea ecx, [esp + 0xf20]
push 0x400
push ecx
call fcn.004010d0
add esp, 0x10
lea edx, [esp + 0xf18]
push edx
lea ecx, [esp + 0x1ac]
call fcn.00402c30
cmp eax, 1
jne 0x401703
lea eax, [esp + 0xa8]
push eax
lea ecx, [esp + 0x1ac]
jmp 0x401f28
push ebx
lea ecx, [esp + 0x2c]
push ecx
push 0x40b2fc
push edi
call fcn.00405000
mov esi, eax
add esp, 0x10
cmp esi, 0xe
jne 0x40173e
lea edx, [esp + 0xa8]
push edx
lea ecx, [esp + 0x1ac]
call fcn.00402c00
push eax
push edi
call fcn.00404380
jmp 0x401391
cmp esi, ebx
je 0x401798
push ebx
lea eax, [esp + 0x2c]
push eax
push str.PATCH
push edi
call fcn.00405000
mov esi, eax
add esp, 0x10
cmp esi, 0xe
jne 0x40177d
lea ecx, [esp + 0xa8]
push ecx
lea ecx, [esp + 0x1ac]
call fcn.00402c00
push eax
push edi
call fcn.00404380
jmp 0x401391
cmp esi, ebx
je 0x401793
push str.DATABASE
lea edx, [esp + 0xac]
push edx
jmp 0x401959
mov byte [esp + 0x48], 1
cmp dword [esp + 0x4c], 3
jne 0x4017da
mov ecx, dword [ebp + 0x10]
mov edx, dword [esp + 0x48]
lea eax, [esp + 0x6c]
push eax
push ecx
push edx
call fcn.00404160
mov esi, eax
add esp, 0xc
cmp esi, 0xa0
jne 0x4017da
lea eax, [esp + 0xa8]
push eax
lea ecx, [esp + 0x1ac]
call fcn.00402c00
push eax
push edi
jmp 0x40138c
push ebx
lea ecx, [esp + 0x5c]
push ecx
push 0x40b31c
push edi
call fcn.00405000
mov esi, eax
add esp, 0x10
cmp esi, 0xe
jne 0x401815
lea edx, [esp + 0xa8]
push edx
lea ecx, [esp + 0x1ac]
call fcn.00402c00
push eax
push edi
call fcn.00404380
jmp 0x401391
cmp esi, ebx
je 0x40182b
push str.MINIMUM_MSI
lea eax, [esp + 0xac]
push eax
jmp 0x401959
mov edx, dword [esp + 0x58]
push 0xa
lea ecx, [esp + 0x8c]
push ecx
push edx
call fcn.00405ad1
mov ecx, dword [esp + 0x64]
mov esi, eax
mov eax, dword [esp + 0x94]
add esp, 0xc
cmp eax, ebx
mov dword [esp + 0x34], esi
je 0x402a8c
cmp eax, ecx
je 0x402a8c
cmp byte [eax], bl
jne 0x402a8c
cmp esi, 0x96
jb 0x402a8c
push esi
push str._Resource__Minimum_Msi_Value___d_n
call fcn.00404d80
push esi
call fcn.00403590
add esp, 0xc
test al, al
je 0x401a0f
push ebx
push ebx
push str._Info__Upgrade_of_Windows_Installer_is_requested_n
call fcn.00404e60
add esp, 0xc
call fcn.004045b0
test al, al
jne 0x4018d5
push 0x1a
lea eax, [esp + 0xac]
push eax
lea ecx, [esp + 0x1b0]
call fcn.00402c00
push eax
push edi
call fcn.00404290
add esp, 0x10
mov esi, 0x643
jmp 0x401394
push 0x400
lea ecx, [esp + 0x131c]
push ecx
push 0x21
push edi
call dword [sym.imp.USER32.dll_LoadStringA]
push 0x24
lea edx, [esp + 0xac]
push edx
lea eax, [esp + 0x1320]
push eax
lea ecx, [esp + 0x1b4]
call fcn.00402c00
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 6
je 0x401929
lea ecx, [esp + 0xa8]
push ecx
lea ecx, [esp + 0x1ac]
jmp 0x401f28
push ebx
lea edx, [esp + 0x58]
push edx
push 0x40b38c
push edi
call fcn.00405000
mov esi, eax
add esp, 0x10
cmp esi, 0xe
je 0x402492
cmp esi, ebx
je 0x401974
push str.UPDATE
lea ecx, [esp + 0xac]
push ecx
lea ecx, [esp + 0x1b0]
call fcn.00402c00
push eax
push edi
call fcn.00404940
add esp, 0x10
jmp 0x401394
push ebx
lea edx, [esp + 0x80]
push edx
push str.UPDATELOCATION
push edi
call fcn.00405000
mov esi, eax
add esp, 0x10
cmp esi, 0xe
je 0x402492
cmp esi, ebx
mov ecx, dword [esp + 0x34]
push ecx
jne 0x4019cf
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x80]
lea edx, [esp + 0x2fc]
push edx
push eax
push ecx
lea edx, [esp + 0xb8]
push edx
lea eax, [esp + 0x1bc]
push eax
push edi
call fcn.00403cf0
add esp, 0x1c
jmp 0x4019f5
mov edx, dword [esp + 0x58]
push edx
lea eax, [esp + 0x300]
push eax
lea ecx, [esp + 0xb4]
push ecx
lea edx, [esp + 0x1b8]
push edx
push edi
call fcn.00403b00
add esp, 0x18
mov esi, eax
cmp esi, ebx
je 0x401a0f
cmp esi, 0xbc2
jne 0x401394
mov edi, dword [ebp + 8]
mov byte [esp + 0x1b], 1
push ebx
push ebx
push str._Info__Windows_Installer_has_been_upgraded__or_was_already_correct_version_n
call fcn.00404e60
mov al, byte [esp + 0x54]
mov esi, dword [sym.imp.KERNEL32.dll_CompareStringA]
add esp, 0xc
cmp al, bl
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
je 0x401a99
push str.MINPATCH
push 0xffffffffffffffff
push eax
push 1
push 0x409
call esi
cmp eax, 2
je 0x401b29
mov ecx, dword [esp + 0x10]
push 0xffffffffffffffff
push str.MAJPATCH
push 0xffffffffffffffff
push ecx
push 1
push 0x409
call esi
cmp eax, 2
je 0x401b29
mov edx, dword [esp + 0x10]
push 0xffffffffffffffff
push str.DEFAULT
push 0xffffffffffffffff
push edx
push 1
push 0x409
call esi
cmp eax, 2
je 0x401b29
mov eax, dword [esp + 0x10]
push ebx
push eax
push str._Error__Operation__s_is_not_valid_for_a_patch_n
jmp 0x401af2
push str.INSTALL
push 0xffffffffffffffff
push eax
push 1
push 0x409
call esi
cmp eax, 2
je 0x401b29
mov ecx, dword [esp + 0x10]
push 0xffffffffffffffff
push str.INSTALLUPD
push 0xffffffffffffffff
push ecx
push 1
push 0x409
call esi
cmp eax, 2
je 0x401b29
mov edx, dword [esp + 0x10]
push 0xffffffffffffffff
push str.DEFAULT
push 0xffffffffffffffff
push edx
push 1
push 0x409
call esi
cmp eax, 2
je 0x401b29
mov eax, dword [esp + 0x10]
push ebx
push eax
push str._Error__Operation__s_is_not_valid_for_a_package_n
call fcn.00404e60
mov ecx, dword [esp + 0x1c]
add esp, 0xc
push ecx
push 0x22
lea edx, [esp + 0xb0]
push edx
lea ecx, [esp + 0x1b4]
call fcn.00402c00
push eax
push edi
call fcn.00404b90
add esp, 0x14
mov esi, 0x57
jmp 0x401394
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
push str.MINPATCH
push 0xffffffffffffffff
push eax
push 1
push 0x409
call esi
cmp eax, 2
je 0x401b83
mov ecx, dword [esp + 0x10]
push 0xffffffffffffffff
push str.INSTALLUPD
push 0xffffffffffffffff
push ecx
push 1
push 0x409
call esi
cmp eax, 2
je 0x401b83
cmp byte [esp + 0x48], bl
je 0x401b88
mov edx, dword [esp + 0x10]
push 0xffffffffffffffff
push str.DEFAULT
push 0xffffffffffffffff
push edx
push 1
push 0x409
call esi
cmp eax, 2
jne 0x401b88
mov byte [esp + 0xf], 1
push ebx
lea eax, [esp + 0x44]
push eax
push str.BASEURL
push edi
call fcn.00405000
mov esi, eax
add esp, 0x10
cmp esi, 0xe
jne 0x401bc3
lea ecx, [esp + 0xa8]
push ecx
lea ecx, [esp + 0x1ac]
call fcn.00402c00
push eax
push edi
call fcn.00404380
jmp 0x401391
cmp esi, ebx
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenA]
jne 0x401fbb
mov edx, dword [esp + 0x40]
push edx
call esi
mov ecx, dword [esp + 0x28]
push ecx
mov dword [esp + 0x30], eax
call esi
mov ecx, dword [esp + 0x2c]
lea esi, [ecx + eax + 2]
push esi
call fcn.00405ae8
add esp, 4
cmp eax, ebx
mov dword [esp + 0x20], eax
jne 0x401c21
lea edx, [esp + 0xa8]
push edx
lea ecx, [esp + 0x1ac]
call fcn.00402c00
push eax
push edi
call fcn.00404380
mov esi, 0xe
jmp 0x401391
mov ecx, dword [esp + 0x40]
push ecx
push esi
push eax
call fcn.004010b0
test eax, eax
jge 0x401c5b
push 0x25
lea edx, [esp + 0xac]
push edx
lea ecx, [esp + 0x1b0]
call fcn.00402c00
push eax
push edi
call fcn.00404290
add esp, 0x10
mov esi, 0x643
jmp 0x401394
mov eax, dword [esp + 0x40]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [esp + 0x40]
lea eax, [eax + ecx + 1]
push eax
push ecx
call dword [sym.imp.USER32.dll_CharPrevA]
cmp byte [eax], 0x2f
je 0x401c8f
mov ecx, dword [esp + 0x20]
push 0x40b1f0
push esi
push ecx
call fcn.00401160
test eax, eax
jl 0x401c31
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
push eax
push esi
push ecx
call fcn.00401160
test eax, eax
jl 0x401c31
lea eax, [esi + esi]
push eax
mov dword [esp + 0x34], eax
call fcn.00405ae8
mov esi, eax
add esp, 4
cmp esi, ebx
mov dword [esp + 0x1c], esi
jne 0x401ce2
lea eax, [esp + 0xa8]
push eax
lea ecx, [esp + 0x1ac]
call fcn.00402c00
push eax
push edi
call fcn.00404380
mov esi, 0xe
jmp 0x401391
mov edx, dword [esp + 0x20]
push ebx
lea ecx, [esp + 0x34]
push ecx
push esi
push edx
call dword [sym.imp.WININET.dll_InternetCanonicalizeUrlA]
test eax, eax
jne 0x401da1
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
mov dword [esp + 0x24], eax
jne 0x401d6d
push esi
call fcn.00405af6
mov eax, dword [esp + 0x34]
push eax
call fcn.00405ae8
mov esi, eax
add esp, 8
cmp esi, ebx
mov dword [esp + 0x1c], esi
jne 0x401d4d
lea ecx, [esp + 0xa8]
push ecx
lea ecx, [esp + 0x1ac]
call fcn.00402c00
push eax
push edi
call fcn.00404380
mov esi, 0xe
jmp 0x401391
mov eax, dword [esp + 0x20]
push ebx
lea edx, [esp + 0x34]
push edx
push esi
push eax
call dword [sym.imp.WININET.dll_InternetCanonicalizeUrlA]
test eax, eax
jne 0x401da1
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp + 0x24], eax
cmp dword [esp + 0x24], ebx
je 0x401da1
mov ecx, dword [esp + 0x20]
push ecx
push 0x17
lea edx, [esp + 0xb0]
push edx
lea ecx, [esp + 0x1b4]
call fcn.00402c00
push eax
push edi
call fcn.00404b90
mov esi, dword [esp + 0x38]
add esp, 0x14
jmp 0x401394
push 0x100
lea eax, [esp + 0x404]
push eax
push 0x12
push edi
call dword [sym.imp.USER32.dll_LoadStringA]
mov ecx, dword [esp + 0x28]
push ecx
lea edx, [esp + 0x404]
push edx
lea eax, [esp + 0x720]
push 0x400
push eax
call fcn.004010d0
add esp, 0x10
lea ecx, [esp + 0x718]
push ecx
lea ecx, [esp + 0x1ac]
call fcn.00402c70
cmp eax, 1
jne 0x401dfe
lea ecx, [esp + 0x1a8]
jmp 0x401f20
push ebx
push esi
push str._Info__Downloading_msi_file__s_for_WinVerifyTrust_check_n
call fcn.00404e60
push 0x104
call fcn.00405ae8
add esp, 0x10
cmp eax, ebx
mov dword [esp + 0x38], eax
jne 0x401e44
lea eax, [esp + 0xa8]
push eax
lea ecx, [esp + 0x1ac]
call fcn.00402c00
push eax
push edi
call fcn.00404380
mov esi, 0xe
jmp 0x401391
lea ecx, [esp + 0x1a8]
push ecx
lea ecx, [esp + 0x2ec]
call fcn.00403440
mov edx, dword [esp + 0x38]
push eax
push ebx
push 0x104
push edx
push esi
push ebx
call sub.urlmon.dll_URLDownloadToCacheFileA
lea ecx, [esp + 0x2e8]
mov dword [esp + 0x2c], eax
call fcn.00402e10
lea ecx, [esp + 0x1a8]
call fcn.00402c20
test al, al
je 0x401e9f
lea eax, [esp + 0xa8]
push eax
lea ecx, [esp + 0x1ac]
jmp 0x401f28
cmp dword [esp + 0x2c], ebx
jge 0x401eb5
push esi
push 0xd
lea ecx, [esp + 0xb0]
push ecx
jmp 0x4022bb
mov edx, dword [esp + 0x38]
push ebx
push edx
push str._Info__Msi_file_was_cached_to__s_n
call fcn.00404e60
add esp, 0xc
push 0x100
lea eax, [esp + 0x404]
push eax
push 0x13
push edi
call dword [sym.imp.USER32.dll_LoadStringA]
mov ecx, dword [esp + 0x28]
push ecx
lea edx, [esp + 0x404]
push edx
lea eax, [esp + 0x720]
push 0x400
push eax
call fcn.004010d0
add esp, 0x10
lea ecx, [esp + 0x718]
push ecx
lea ecx, [esp + 0x1ac]
call fcn.00402c70
cmp eax, 1
lea ecx, [esp + 0x1a8]
jne 0x401f3e
lea edx, [esp + 0xa8]
push edx
call fcn.00402c00
push eax
push edi
call fcn.00404230
mov esi, 0x642
jmp 0x401391
call fcn.00402c00
push eax
mov eax, dword [esp + 0x3c]
push eax
lea ecx, [esp + 0x300]
push ecx
call fcn.00405330
add esp, 0xc
cmp eax, ebx
jne 0x401f87
push 0x15
lea edx, [esp + 0xac]
push edx
lea ecx, [esp + 0x1b0]
call fcn.00402c00
push eax
push edi
call fcn.00404290
add esp, 0x10
mov esi, 0x78
jmp 0x401394
cmp eax, 2
jne 0x4022db
push esi
push 0x16
lea eax, [esp + 0xb0]
push eax
lea ecx, [esp + 0x1b4]
call fcn.00402c00
push eax
push edi
call fcn.00404b90
add esp, 0x14
mov esi, 4
jmp 0x401394
mov ecx, dword [esp + 0x28]
push ecx
call esi
lea edx, [esp + 0x2f8]
push edx
mov dword [esp + 0x30], eax
call esi
mov ecx, dword [esp + 0x2c]
lea esi, [ecx + eax + 2]
push esi
call fcn.00405ae8
add esp, 4
cmp eax, ebx
mov dword [esp + 0x20], eax
jne 0x40200e
lea eax, [esp + 0xa8]
push eax
lea ecx, [esp + 0x1ac]
call fcn.00402c00
push eax
push edi
call fcn.00404380
mov esi, 0xe
jmp 0x401391
lea ecx, [esp + 0x64]
push ecx
push eax
push esi
lea edx, [esp + 0x304]
push edx
call dword [sym.imp.KERNEL32.dll_GetFullPathNameA]
test eax, eax
jne 0x402059
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov eax, dword [esp + 0x20]
push eax
push 0x17
lea ecx, [esp + 0xb0]
push ecx
lea ecx, [esp + 0x1b4]
call fcn.00402c00
push eax
push edi
call fcn.00404b90
add esp, 0x14
jmp 0x401394
mov eax, dword [esp + 0x64]
cmp eax, ebx
je 0x402063
mov byte [eax], bl
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
push edx
push esi
push eax
call fcn.00401160
test eax, eax
jge 0x402086
push 0x25
lea ecx, [esp + 0xac]
push ecx
jmp 0x401c3b
lea eax, [esi + esi]
push eax
mov dword [esp + 0x34], eax
call fcn.00405ae8
mov esi, eax
add esp, 4
cmp esi, ebx
mov dword [esp + 0x1c], esi
jne 0x4020c5
lea edx, [esp + 0xa8]
push edx
lea ecx, [esp + 0x1ac]
call fcn.00402c00
push eax
push edi
call fcn.00404380
mov esi, 0xe
jmp 0x401391
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x20]
lea eax, [esp + 0x64]
push eax
push esi
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_GetFullPathNameA]
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x24], eax
jbe 0x402145
push esi
call fcn.00405af6
mov eax, dword [esp + 0x28]
push eax
mov dword [esp + 0x38], eax
call fcn.00405ae8
mov esi, eax
add esp, 8
cmp esi, ebx
mov dword [esp + 0x1c], esi
jne 0x40212b
lea eax, [esp + 0xa8]
push eax
lea ecx, [esp + 0x1ac]
call fcn.00402c00
push eax
push edi
call fcn.00404380
mov esi, 0xe
jmp 0x401391
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x20]
lea ecx, [esp + 0x64]
push ecx
push esi
push edx
push eax
call dword [sym.imp.KERNEL32.dll_GetFullPathNameA]
mov dword [esp + 0x24], eax
cmp dword [esp + 0x24], ebx
jne 0x402177
mov ecx, dword [esp + 0x20]
push ecx
push 0x17
lea edx, [esp + 0xb0]
push edx
lea ecx, [esp + 0x1b4]
call fcn.00402c00
push eax
push edi
call fcn.00404b90
add esp, 0x14
xor esi, esi
jmp 0x401394
push 0x28
push str.BINARY
push edi
call dword [sym.imp.KERNEL32.dll_FindResourceA]
cmp eax, ebx
mov dword [esp + 0x34], eax
je 0x4022a0
push eax
push edi
call dword [sym.imp.KERNEL32.dll_LoadResource]
cmp eax, ebx
jne 0x4021a4
push str.Could_not_load_resource.
jmp 0x402219
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
cmp eax, ebx
mov dword [esp + 0x2c], eax
jne 0x4021ba
push str.Could_not_lock_resource.
jmp 0x402219
push 0x104
lea ecx, [esp + 0x171c]
push ecx
lea edx, [esp + 0x508]
push edx
call fcn.00405800
mov eax, dword [esp + 0x34]
push 0xf4
push eax
lea ecx, [esp + 0x514]
push ecx
call fcn.004056c0
add esp, 0x18
push ebx
push 0x80
push 2
push ebx
push ebx
push 0xc0000000
lea edx, [esp + 0x518]
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
mov dword [esp + 0x3c], eax
jne 0x402238
push str.Could_not_create_temporary_file.
call fcn.00405680
add esp, 4
lea ecx, [esp + 0x1a8]
call fcn.00402b00
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [esp + 0x34]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov dword [esp + 0x68], eax
mov esi, eax
lea ebx, [ebx]
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x3c]
push ebx
lea ecx, [esp + 0x64]
push ecx
mov ecx, dword [esp + 0x70]
sub edx, esi
push esi
add edx, ecx
push edx
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
sub esi, dword [esp + 0x60]
jne 0x402250
mov ecx, dword [esp + 0x3c]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edx, dword [esp + 0x1c]
push edx
call fcn.00405648
lea eax, [esp + 0x504]
push eax
call fcn.0040a940
add esp, 8
mov dword [esp + 0x1c], eax
mov esi, eax
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x4022db
mov ecx, dword [esp + 0x1c]
push ecx
push 0xd
lea edx, [esp + 0xb0]
push edx
lea ecx, [esp + 0x1b4]
call fcn.00402c00
push eax
push edi
call fcn.00404b90
add esp, 0x14
mov esi, 2
jmp 0x401394
push ebx
lea eax, [esp + 0x18]
push eax
push str.PROPERTIES
push edi
call fcn.00405000
add esp, 0x10
cmp eax, 0xe
jne 0x402319
lea ecx, [esp + 0xa8]
push ecx
lea ecx, [esp + 0x1ac]
call fcn.00402c00
push eax
push edi
call fcn.00404380
mov esi, 0xe
jmp 0x401391
cmp eax, ebx
je 0x402332
mov eax, dword [esp + 0x14]
cmp eax, ebx
je 0x40232e
push eax
call fcn.00405af6
add esp, 4
mov dword [esp + 0x14], ebx
lea ecx, [esp + 0x1a8]
call fcn.00402bc0
push 0x40b538
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
cmp edi, ebx
mov dword [esp + 0x50], edi
je 0x402a85
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.MsiSetInternalUI
push edi
call esi
push str.MsiInstallProductA
push edi
mov dword [esp + 0x9c], eax
call esi
push str.MsiApplyPatchA
push edi
mov dword [esp + 0x44], eax
call esi
push str.MsiReinstallProductA
push edi
mov dword [esp + 0x3c], eax
call esi
push str.MsiQueryProductStateA
push edi
mov dword [esp + 0x7c], eax
call esi
push str.MsiOpenDatabaseA
push edi
mov dword [esp + 0x34], eax
call esi
push str.MsiDatabaseOpenViewA
push edi
mov dword [esp + 0xa0], eax
call esi
push str.MsiViewExecute
push edi
mov dword [esp + 0x98], eax
call esi
push str.MsiViewFetch
push edi
mov dword [esp + 0x8c], eax
call esi
push str.MsiRecordGetStringA
push edi
mov dword [esp + 0x68], eax
call esi
push str.MsiCloseHandle
push edi
mov dword [esp + 0x70], eax
call esi
push str.MsiGetProductInfoA
push edi
mov dword [esp + 0x2c], eax
call esi
cmp dword [esp + 0x94], ebx
mov dword [esp + 0xa4], eax
je 0x402a85
cmp dword [esp + 0x3c], ebx
je 0x402a85
cmp dword [esp + 0x34], ebx
je 0x402a85
cmp dword [esp + 0x74], ebx
je 0x402a85
cmp dword [esp + 0x2c], ebx
je 0x402a85
cmp dword [esp + 0x90], ebx
je 0x402a85
cmp dword [esp + 0x84], ebx
je 0x402a85
cmp dword [esp + 0x60], ebx
je 0x402a85
cmp dword [esp + 0x68], ebx
je 0x402a85
cmp dword [esp + 0x24], ebx
je 0x402a85
cmp eax, ebx
je 0x402a85
mov edi, dword [ebp + 8]
push ebx
lea edx, [esp + 0x84]
push edx
push str.LOGGING
push edi
call fcn.00405000
mov esi, eax
add esp, 0x10
cmp esi, 0xe
jne 0x4024b2
lea eax, [esp + 0xa8]
push eax
lea ecx, [esp + 0x1ac]
call fcn.00402c00
push eax
push edi
call fcn.00404380
jmp 0x401391
cmp esi, ebx
jne 0x40254e
push 0x104
lea ecx, [esp + 0x171c]
push ecx
lea edx, [esp + 0x508]
push edx
call fcn.00405800
push 0xf8
lea eax, [esp + 0x510]
push str.install.log
push eax
call fcn.004056c0
mov eax, dword [esp + 0x98]
add esp, 0x18
mov edi, str.verbose
mov esi, eax
mov ecx, 8
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40250e
mov eax, 0x1000
jmp 0x40253e
mov edi, str.error
mov esi, eax
mov ecx, 6
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x402527
mov eax, 2
jmp 0x40253e
mov esi, eax
mov edi, str.info
mov ecx, 5
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x40254e
mov eax, 0x10
push 2
lea ecx, [esp + 0x504]
push ecx
push eax
call sub.msi.dll_MsiGetComponentPathA
push ebx
push ebx
push str._Info__Setting_Internal_UI_level_to_FULL..._n
call fcn.00404e60
add esp, 0xc
push ebx
push 5
call dword [esp + 0x9c]
cmp byte [esp + 0x48], bl
jne 0x4028f4
mov esi, dword [esp + 0x1c]
push ebx
push esi
push str._Info__Calling_MsiInstallProduct_with_szInstallPath___s
call fcn.00404e60
mov eax, dword [esp + 0x20]
add esp, 0xc
cmp eax, ebx
jne 0x402591
mov eax, 0x40b6c4
push ebx
push eax
push 0x40b6cc
call fcn.00404e60
mov al, byte [esp + 0x1b]
add esp, 0xc
cmp al, bl
je 0x4026cf
mov eax, dword [esp + 0x38]
cmp eax, ebx
jne 0x4025b6
mov eax, esi
lea edx, [esp + 0x78]
push edx
push ebx
push eax
call dword [esp + 0xa4]
test eax, eax
jne 0x402677
mov ecx, dword [esp + 0x78]
lea eax, [esp + 0x5c]
push eax
push str.SELECT__Value__FROM__Property__WHERE__Property_ProductCode
push ecx
call dword [esp + 0x9c]
test eax, eax
jne 0x402677
mov edx, dword [esp + 0x5c]
push ebx
push edx
call dword [esp + 0x8c]
test eax, eax
jne 0x402677
mov ecx, dword [esp + 0x5c]
lea eax, [esp + 0x70]
push eax
push ecx
call dword [esp + 0x68]
test eax, eax
jne 0x402677
mov ecx, dword [esp + 0x70]
lea edx, [esp + 0xa0]
push edx
lea eax, [esp + 0x2c4]
push eax
push 1
push ecx
call dword [esp + 0x78]
test eax, eax
jne 0x402677
lea edx, [esp + 0x2c0]
push edx
call dword [esp + 0x30]
mov esi, eax
push esi
push str._Info__MsiQueryProductState_returned__d_n
call fcn.00404d80
add esp, 8
cmp esi, 1
je 0x402662
cmp esi, 5
je 0x402662
push ebx
lea eax, [esp + 0x2c4]
push eax
push str._Info__The_product_code__s_is_unknown._Will_use_first_time_install_logic..._n
jmp 0x40267e
push ebx
lea ecx, [esp + 0x2c4]
push ecx
push str._Info__The_product_code__s_is_known._Will_use_QFE_recache_and_reinstall_upgrade_logic..._n
call fcn.00404e60
jmp 0x402687
push ebx
push ebx
push str._Info__Unable_to_process_product_code._Will_treat_as_first_time_install..._n
call fcn.00404e60
mov byte [esp + 0x1b], bl
mov eax, dword [esp + 0x84]
mov esi, dword [esp + 0x30]
add esp, 0xc
cmp eax, ebx
je 0x40269c
push eax
call esi
mov eax, dword [esp + 0x5c]
cmp eax, ebx
je 0x4026a7
push eax
call esi
mov eax, dword [esp + 0x70]
cmp eax, ebx
je 0x4026b2
push eax
call esi
cmp byte [esp + 0xf], bl
je 0x4026cf
mov eax, dword [esp + 0x14]
cmp eax, ebx
jne 0x4026d7
push str.REINSTALLALL_REINSTALLMODEvomus
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
jmp 0x4026e9
mov eax, dword [esp + 0x14]
cmp eax, ebx
je 0x4026e2
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
jmp 0x4026e9
mov esi, dword [esp + 0x9c]
cmp dword [esp + 0x4c], 3
jne 0x4026fd
push str._ACTIONADMIN
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add esi, eax
lea edi, [esi + 0x16]
push edi
call fcn.00405ae8
mov esi, eax
add esp, 4
cmp esi, ebx
je 0x40293a
cmp byte [esp + 0xf], bl
mov eax, dword [esp + 0x14]
je 0x402736
cmp eax, ebx
jne 0x40273a
push str.REINSTALLALL_REINSTALLMODEvomus
push edi
push esi
call fcn.004010b0
test eax, eax
jge 0x402775
jmp 0x402872
cmp eax, ebx
je 0x402773
push eax
push edi
push esi
call fcn.004010b0
test eax, eax
jge 0x402775
push 0x25
lea eax, [esp + 0xac]
push eax
lea ecx, [esp + 0x1b0]
call fcn.00402c00
mov ecx, dword [ebp + 8]
push eax
push ecx
call fcn.00404290
add esp, 0x10
mov esi, 0x643
jmp 0x401394
mov byte [esi], bl
cmp dword [esp + 0x4c], 3
jne 0x4027b6
push str._ACTIONADMIN
push edi
push esi
call fcn.00401160
test eax, eax
jge 0x4027b6
push 0x25
lea edx, [esp + 0xac]
push edx
lea ecx, [esp + 0x1b0]
call fcn.00402c00
push eax
mov eax, dword [ebp + 8]
push eax
call fcn.00404290
add esp, 0x10
xor esi, esi
jmp 0x401394
lea ecx, [esp + 0x74]
push ecx
lea edx, [esp + 0x271c]
push edx
push str.InstallLocation
push str.25567ab6_fd8e_49ea_bd09_a75abd9fccea
mov dword [esp + 0x84], 0x1000
call dword [esp + 0xb4]
cmp eax, 0x645
jne 0x40289f
lea ecx, [esp + 0x608]
call fcn.00403110
mov edx, dword [ebp + 8]
lea ecx, [esp + 0xa8]
push ecx
push ebx
push edx
lea ecx, [esp + 0x614]
call fcn.00403140
test al, al
jne 0x40284f
mov ecx, dword [ebp + 8]
push 0x400
lea eax, [esp + 0xb1c]
push eax
push 0x27
push ecx
call dword [sym.imp.USER32.dll_LoadStringA]
push 0x40
lea edx, [esp + 0xac]
push edx
lea eax, [esp + 0xb20]
push eax
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov esi, 0x642
jmp 0x401394
lea ecx, [esp + 0x608]
call fcn.004031a0
cmp eax, 0x419
jne 0x40289f
push str._TRANSFORMS_:ru.mst_
push edi
push esi
call fcn.00401160
test eax, eax
jge 0x40289f
push 0x25
lea ecx, [esp + 0xac]
push ecx
lea ecx, [esp + 0x1b0]
call fcn.00402c00
mov edx, dword [ebp + 8]
push eax
push edx
call fcn.00404290
add esp, 0x10
mov esi, 0x643
jmp 0x401394
mov eax, dword [esp + 0x1c]
push esi
push eax
call dword [esp + 0x44]
mov esi, eax
cmp esi, ebx
je 0x4028d6
push esi
lea ecx, [esp + 0xac]
push ecx
lea ecx, [esp + 0x1b0]
call fcn.00402c00
mov edx, dword [esp + 0x58]
push eax
mov eax, dword [ebp + 8]
push edx
push eax
call fcn.00404c60
add esp, 0x14
mov ecx, dword [esp + 0x1c]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
push esi
push str._Info__MsiInstallProduct_returned__d_n
call fcn.00404d80
add esp, 8
jmp 0x401394
cmp dword [esp + 0x14], ebx
jne 0x4029ab
cmp byte [esp + 0xf], bl
je 0x4029ab
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.00404e60
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenA]
add esp, 0xc
push str.REINSTALLALL_REINSTALLMODEomus
call esi
inc eax
push eax
call fcn.00405ae8
add esp, 4
cmp eax, ebx
mov dword [esp + 0x14], eax
jne 0x402962
lea edx, [esp + 0xa8]
push edx
lea ecx, [esp + 0x1ac]
call fcn.00402c00
push eax
mov eax, dword [ebp + 8]
push eax
call fcn.00404380
mov esi, 0xe
jmp 0x401391
push str.REINSTALLALL_REINSTALLMODEomus
push str.REINSTALLALL_REINSTALLMODEomus
call esi
mov ecx, dword [esp + 0x18]
inc eax
push eax
push ecx
call fcn.004010b0
test eax, eax
jge 0x4029ab
push 0x25
lea edx, [esp + 0xac]
push edx
lea ecx, [esp + 0x1b0]
call fcn.00402c00
push eax
mov eax, dword [ebp + 8]
push eax
call fcn.00404290
add esp, 0x10
mov esi, 0x643
jmp 0x401394
cmp dword [esp + 0x4c], 3
push ebx
jne 0x4029ff
mov esi, dword [esp + 0x3c]
push esi
push 0x40b8f0
call fcn.00404e60
mov ecx, dword [esp + 0x78]
push ebx
push ecx
push str._and_szInstallPackage___s_and_eInstallType__INSTALLTYPE_NETWORK_IMAGE
call fcn.00404e60
mov eax, dword [esp + 0x2c]
add esp, 0x18
cmp eax, ebx
jne 0x4029e2
mov eax, 0x40b970
push ebx
push eax
push 0x40b978
call fcn.00404e60
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x78]
add esp, 0xc
push edx
push 1
push eax
jmp 0x402a40
mov esi, dword [esp + 0x20]
push esi
push str._Info__Calling_MsiApplyPatch_with_szPatchPackage___s
call fcn.00404e60
push ebx
push ebx
push str._and_szInstallPackage__null_and_eInstallType__INSTALLTYPE_DEFAULT
call fcn.00404e60
mov eax, dword [esp + 0x2c]
add esp, 0x18
cmp eax, ebx
jne 0x402a2a
mov eax, str.null
push ebx
push eax
push str._and_szCommandLine___s_n
call fcn.00404e60
mov ecx, dword [esp + 0x20]
add esp, 0xc
push ecx
push ebx
push ebx
push esi
call dword [esp + 0x44]
mov esi, eax
cmp esi, ebx
je 0x402a72
push esi
lea edx, [esp + 0xac]
push edx
lea ecx, [esp + 0x1b0]
call fcn.00402c00
mov ecx, dword [ebp + 8]
push eax
mov eax, dword [esp + 0x5c]
push eax
push ecx
call fcn.00404c60
add esp, 0x14
push esi
push str._Info__MsiApplyPatch_returned__d_n
call fcn.00404d80
add esp, 8
jmp 0x401394
push 0x1d
jmp 0x402980
push 0x96
push ecx
push 0x19
lea ecx, [esp + 0xb4]
push ecx
lea ecx, [esp + 0x1b8]
call fcn.00402c00
push eax
push edi
call fcn.00404a60
add esp, 0x18
mov esi, 0x57
jmp 0x401394