Function at 0x4459a7
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push 0x3c
mov eax, 0x517879
call fcn.004d8abf
mov edi, edx
mov dword [ebp - 0x20], edi
mov ebx, ecx
mov dword [ebp - 0x18], ebx
xor eax, eax
mov dword [ebp - 4], eax
lea ecx, [ebp + 0xc]
mov esi, dword [ebp + 0xc]
mov byte [esi], al
call fcn.0040687a
push ecx
mov ecx, esp
mov byte [ebp - 4], 1
push 0x546c14
lea edx, [ebp + 0x10]
call fcn.00409442
pop ecx
lea edx, [ebp + 0xc]
lea ecx, [ebp - 0x3c]
call fcn.004331d0
pop ecx
mov byte [ebp - 4], 2
cmp dword [ebp - 0x3c], 0
jl 0x445a52
mov ecx, dword [ebp + 8]
lea eax, [ebp + 0xc]
push eax
call fcn.00405d6e
mov esi, str.QuietUninstallString
push esi
call fcn.004ddaa2
pop ecx
push eax
push esi
mov ecx, edi
call fcn.00406efb
and dword [ebx], 0
lea ecx, [ebx + 8]
and dword [ebx + 4], 0
call fcn.0040687a
mov ecx, dword [ebp - 0x34]
lea ecx, [ecx - 0x10]
call fcn.00407189
mov ecx, dword [ebp + 0xc]
lea ecx, [ecx - 0x10]
call fcn.00407189
mov ecx, dword [ebp + 0x10]
lea ecx, [ecx - 0x10]
call fcn.00407189
mov eax, ebx
jmp 0x446019
mov ecx, dword [ebp - 0x34]
lea ecx, [ecx - 0x10]
call fcn.00407189
mov ecx, dword [ebp + 0xc]
lea ecx, [ecx - 0x10]
call fcn.00407189
lea ecx, [ebp + 0xc]
call fcn.0040687a
push ecx
mov ecx, esp
mov byte [ebp - 4], 3
push 0x546c6c
lea edx, [ebp + 0x10]
lea edi, [ebp + 0xc]
call fcn.00409442
pop ecx
mov edx, edi
lea ecx, [ebp - 0x3c]
call fcn.004331d0
pop ecx
cmp dword [ebp - 0x3c], 0
jge 0x445b32
lea ecx, [ebp - 0x14]
call fcn.0040687a
push ecx
mov ecx, esp
mov byte [ebp - 4], 5
push str.NoRemove
lea edx, [ebp + 0x10]
lea edi, [ebp - 0x14]
call fcn.00409442
pop ecx
mov edx, edi
lea ecx, [ebp - 0x48]
call fcn.004331d0
pop ecx
mov byte [ebp - 4], 6
cmp dword [ebp - 0x48], 0
jl 0x445b1e
mov edx, 0x53d310
mov ecx, edi
call fcn.004044d6
test al, al
je 0x445b1e
push 0x8c
push 0x80004005
push ecx
mov ecx, esp
mov byte [esi], 1
push str.NoRemove_flag_is_set
call fcn.00406fea
mov ecx, ebx
call fcn.00406620
mov ecx, dword [ebp - 0x40]
lea ecx, [ecx - 0x10]
call fcn.00407189
mov ecx, dword [ebp - 0x14]
lea ecx, [ecx - 0x10]
call fcn.00407189
jmp 0x445a2a
push 0x8f
push 0x80004005
push ecx
mov ecx, esp
push str.Could_not_find_UninstallString
jmp 0x445af7
mov byte [ebp - 4], 3
mov ecx, dword [ebp - 0x34]
add ecx, 0xfffffff0
call fcn.00407189
push ecx
mov esi, esp
mov dword [ebp - 0x24], esi
mov edi, dword [ebp + 0xc]
lea eax, [edi - 0x10]
mov ecx, eax
mov dword [ebp - 0x14], eax
call fcn.004070e7
add eax, 0x10
lea ecx, [ebp - 0x1c]
mov dword [esi], eax
call fcn.004297db
pop ecx
push 0
push str.msiexec
mov ecx, eax
call fcn.004045bb
mov ecx, dword [ebp - 0x1c]
mov esi, eax
add ecx, 0xfffffff0
call fcn.00407189
cmp esi, 0xffffffff
je 0x445cc8
mov ecx, dword [ebp + 0x10]
lea ecx, [ecx - 0x10]
call fcn.004070e7
lea esi, [eax + 0x10]
mov dword [ebp - 0x10], esi
push 0x7b
push esi
mov byte [ebp - 4], 7
call fcn.004da090
mov edi, eax
pop ecx
pop ecx
test edi, edi
je 0x445c95
sub edi, esi
sar edi, 1
cmp edi, 0xffffffff
je 0x445c95
push ecx
mov ecx, esp
push 0x546d20
call fcn.00406fea
xor dl, dl
lea ecx, [ebp - 0x10]
call fcn.0042b044
pop ecx
test al, al
je 0x445c92
mov eax, dword [ebp - 0x10]
lea ecx, [edi + 1]
mov eax, dword [eax - 0xc]
sub eax, ecx
push eax
push ecx
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x10]
call fcn.0040467c
lea eax, [ebp - 0x1c]
mov byte [ebp - 4], 8
push eax
lea ecx, [ebp - 0x10]
call fcn.00405d6e
mov byte [ebp - 4], 7
mov ecx, dword [ebp - 0x1c]
lea ecx, [ecx - 0x10]
call fcn.00407189
lea eax, [ebp - 0x10]
mov edx, str.msiexec.exe__X
push eax
lea ecx, [ebp - 0x24]
call fcn.004093b4
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x1c]
mov edx, eax
mov dword [esp], str.__qn__norestart_REBOOTReallySuppress_ALLUSERS1
call fcn.00409442
pop ecx
mov ecx, dword [ebp + 8]
push eax
mov byte [ebp - 4], 0xa
call fcn.00405d6e
mov ecx, dword [ebp - 0x1c]
lea ecx, [ecx - 0x10]
call fcn.00407189
mov byte [ebp - 4], 7
mov ecx, dword [ebp - 0x24]
lea ecx, [ecx - 0x10]
call fcn.00407189
mov esi, 0x53d558
push esi
call fcn.004ddaa2
pop ecx
mov ecx, dword [ebp - 0x20]
push eax
push esi
call fcn.00406efb
and dword [ebx], 0
lea ecx, [ebx + 8]
and dword [ebx + 4], 0
call fcn.0040687a
mov ecx, dword [ebp - 0x10]
lea ecx, [ecx - 0x10]
jmp 0x445cbb
mov esi, dword [ebp - 0x10]
push 0x97
push 0x80004005
push ecx
lea eax, [ebp + 0x10]
mov ecx, esp
push eax
mov edx, 0x546d24
call fcn.004093b4
pop ecx
mov ecx, ebx
call fcn.00406620
lea ecx, [esi - 0x10]
call fcn.00407189
mov ecx, dword [ebp - 0x14]
jmp 0x445a3b
lea ecx, [edi - 0x10]
call fcn.004070e7
add eax, 0x10
mov dword [ebp - 0x10], eax
push ecx
mov ecx, esp
mov byte [ebp - 4], 0xb
push 0x5447e8
call fcn.00406fea
xor dl, dl
lea ecx, [ebp - 0x10]
call fcn.0042af8e
pop ecx
test al, al
je 0x445d64
push 0
push 0x5447e8
lea ecx, [ebp - 0x10]
call fcn.004045bb
cmp eax, 0xffffffff
jne 0x445d3b
push 0xa4
push 0x80004005
push ecx
mov ecx, esp
push str.Could_not_extract_file_name
call fcn.00406fea
mov ecx, ebx
call fcn.00406620
mov ecx, dword [ebp - 0x10]
lea ecx, [ecx - 0x10]
call fcn.00407189
lea ecx, [edi - 0x10]
jmp 0x445a3b
push eax
lea eax, [ebp - 0x24]
push eax
lea ecx, [ebp - 0x10]
call fcn.0040452e
push eax
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 0xc
call fcn.00405d6e
mov byte [ebp - 4], 0xb
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.00407189
mov esi, dword [ebp - 0x10]
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x445e03
push 0x546e14
lea ecx, [ebp - 0x1c]
call fcn.00406fea
push ecx
mov byte [ebp - 4], 0xd
lea ecx, [esi - 0x10]
mov ebx, esp
mov dword [ebp - 0x24], ebx
call fcn.004070e7
add eax, 0x10
lea ecx, [ebp - 0x24]
mov dword [ebx], eax
call fcn.004297db
pop ecx
push 0
push dword [ebp - 0x1c]
mov ecx, eax
call fcn.004045bb
mov ecx, dword [ebp - 0x24]
mov ebx, eax
add ecx, 0xfffffff0
call fcn.00407189
test ebx, ebx
jle 0x445df1
mov eax, dword [ebp - 0x1c]
lea ecx, [ebp - 0x10]
mov eax, dword [eax - 0xc]
add eax, ebx
push eax
lea eax, [ebp - 0x24]
push eax
call fcn.0040452e
push eax
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 0xe
call fcn.00405d6e
mov ecx, dword [ebp - 0x24]
lea ecx, [ecx - 0x10]
call fcn.00407189
mov esi, dword [ebp - 0x10]
mov byte [ebp - 4], 0xb
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.00407189
mov ebx, dword [ebp - 0x18]
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x445e2c
call fcn.00406710
push 0xb2
push eax
push ecx
mov ecx, esp
push str.Could_not_find_.exe
call fcn.00406fea
jmp 0x445cb1
lea ecx, [ebp - 0x30]
call fcn.0040687a
lea ecx, [ebp - 0x2c]
call fcn.0040687a
push ecx
lea eax, [esi - 0x10]
mov byte [ebp - 4], 0xf
mov ebx, esp
mov ecx, eax
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x1c], eax
call fcn.004070e7
add eax, 0x10
lea edx, [ebp - 0x30]
lea ecx, [ebp - 0x3c]
mov dword [ebx], eax
call fcn.00445720
pop ecx
mov byte [ebp - 4], 0x10
cmp dword [ebp - 0x3c], 0
jge 0x445ef2
cmp dword [ebp - 0x38], 0
mov eax, 0xb5
cmovne eax, dword [ebp - 0x38]
push eax
push dword [ebp - 0x3c]
push ecx
mov esi, esp
mov dword [ebp - 0x24], esi
mov ecx, dword [ebp - 0x34]
lea ecx, [ecx - 0x10]
call fcn.004070e7
add eax, 0x10
lea ecx, [ebp - 0x48]
mov dword [esi], eax
call fcn.00406620
mov ecx, dword [ebp - 0x18]
lea eax, [ebp - 0x48]
push eax
mov byte [ebp - 4], 0x11
call fcn.0040121b
mov ecx, dword [ebp - 0x40]
lea ecx, [ecx - 0x10]
call fcn.00407189
mov ecx, dword [ebp - 0x34]
lea ecx, [ecx - 0x10]
call fcn.00407189
lea ecx, [ebp - 0x30]
call fcn.00407c33
mov ecx, dword [ebp - 0x1c]
call fcn.00407189
mov ecx, dword [ebp - 0x14]
call fcn.00407189
mov ecx, dword [ebp + 0x10]
lea ecx, [ecx - 0x10]
call fcn.00407189
mov eax, dword [ebp - 0x18]
jmp 0x446019
mov byte [ebp - 4], 0xf
mov ecx, dword [ebp - 0x34]
add ecx, 0xfffffff0
call fcn.00407189
mov eax, dword [ebp - 0x2c]
xor ebx, ebx
cmp dword [eax - 0xc], ebx
jne 0x445f2c
push 0xb9
push 0x80004005
push ecx
mov ecx, esp
push str.Could_not_determine_.exe_type
call fcn.00406fea
mov ecx, dword [ebp - 0x18]
call fcn.00406620
jmp 0x445ec7
push ebx
push 0x22
lea ecx, [ebp + 0xc]
call fcn.004aee68
cmp eax, 0xffffffff
jne 0x445f91
push ebx
push 0x2f
lea ecx, [ebp + 0xc]
call fcn.004aee68
cmp eax, 0xffffffff
jne 0x445f91
lea eax, [ebp + 0xc]
push eax
lea ecx, [ebp - 0x14]
call fcn.004aec90
mov edx, eax
mov byte [ebp - 4], 0x12
lea ecx, [ebp - 0x24]
call fcn.004aed04
pop ecx
push eax
lea ecx, [ebp + 0xc]
mov byte [ebp - 4], 0x13
call fcn.00405d6e
mov ecx, dword [ebp - 0x24]
lea ecx, [ecx - 0x10]
call fcn.00407189
mov byte [ebp - 4], 0xf
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
call fcn.00407189
mov edi, dword [ebp + 0xc]
push ecx
lea edx, [ebp + 0xc]
lea ecx, [ebp - 0x14]
call fcn.004aec1d
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 0x14
push ecx
mov edx, eax
lea ecx, [ebp - 0x24]
call fcn.0040a037
pop ecx
pop ecx
mov ecx, dword [ebp + 8]
push eax
mov byte [ebp - 4], 0x15
call fcn.00405d6e
mov ecx, dword [ebp - 0x24]
lea ecx, [ecx - 0x10]
call fcn.00407189
mov byte [ebp - 4], 0xf
mov ecx, dword [ebp - 0x14]
lea ecx, [ecx - 0x10]
call fcn.00407189
mov ecx, dword [ebp - 0x20]
lea eax, [ebp - 0x30]
push eax
call fcn.00405d6e
mov esi, dword [ebp - 0x18]
lea ecx, [esi + 8]
mov dword [esi], ebx
mov dword [esi + 4], ebx
call fcn.0040687a
lea ecx, [ebp - 0x30]
call fcn.00407c33
mov ecx, dword [ebp - 0x1c]
call fcn.00407189
lea ecx, [edi - 0x10]
call fcn.00407189
mov ecx, dword [ebp + 0x10]
lea ecx, [ecx - 0x10]
call fcn.00407189
mov eax, esi
call fcn.004d8a8d
ret