Function at 0x40ca69
Capabilities:
Delete file
Get common file path

Disassembly:
mov eax, 0x1198
call fcn.00450f80
mov eax, dword [0x4b34c4]
xor eax, esp
mov dword [esp + 0x1194], eax
push ebx
mov ebx, dword [esp + 0x11a4]
push esi
xor esi, esi
push edi
mov edi, dword [esp + 0x11a8]
cmp dword [esp + 0x11b4], esi
jne 0x40cacb
cmp dword [edi + 0x247c], esi
jne 0x40cacb
mov eax, dword [edi]
push esi
push esi
push edi
call dword [eax + 0x10]
test eax, eax
jne 0x40d058
push 1
call fcn.004109e6
pop ecx
test eax, eax
je 0x40cacb
mov eax, 0x80070204
jmp 0x40d058
push 0x10
push str.PreDownldStatus
push esi
call fcn.0041210d
add esp, 0xc
call fcn.00474cc0
push esi
lea ecx, [edi + 8]
call fcn.0040d695
test eax, eax
je 0x40caf4
mov ecx, eax
call fcn.0040df14
mov eax, dword [edi]
push ebp
push ebx
push edi
call dword [eax + 0x20]
mov ebp, eax
cmp dword [esp + 0x11b4], esi
je 0x40cd12
push esi
push ebx
call fcn.0041626a
pop ecx
pop ecx
mov ecx, eax
test ecx, ecx
jne 0x40cb22
test ebp, ebp
jns 0x40cd12
mov dword [esp + 0x34], esi
mov edi, 0x1000
mov dword [esp + 0x44], esi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x2c], esi
push 0xf
pop eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x30], eax
push esi
cmp ecx, 0xfffffffc
jne 0x40cbeb
call dword [sym.imp.kernel32.dll_GetModuleHandleA]
push eax
push 6
push 0x88
lea ecx, [esp + 0x58]
call fcn.00434712
lea eax, [esp + 0x1c]
push eax
push 0x494e68
lea eax, [esp + 0x90]
push eax
lea ecx, [esp + 0x58]
call fcn.00434a79
push eax
lea ecx, [esp + 0x38]
call fcn.00404268
lea ecx, [esp + 0x88]
call fcn.004063d7
lea ecx, [esp + 0x68]
call fcn.004063d7
lea ecx, [esp + 0x4c]
call fcn.004063d7
mov eax, dword [esp + 0x30]
cmp eax, 0x10
jb 0x40cc85
mov ecx, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], ecx
cmp eax, edi
jb 0x40cbdd
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x14]
push eax
call fcn.004055a1
mov eax, dword [esp + 0x1c]
pop ecx
pop ecx
mov ecx, dword [esp + 0x10]
push eax
push ecx
call fcn.00474cc0
pop ecx
pop ecx
jmp 0x40cc85
call dword [sym.imp.kernel32.dll_GetModuleHandleA]
push eax
push 6
push 0x74
lea ecx, [esp + 0x58]
call fcn.00434712
lea eax, [esp + 0x1c]
push eax
push 0x494e68
lea eax, [esp + 0x90]
push eax
lea ecx, [esp + 0x58]
call fcn.00434a79
push eax
lea ecx, [esp + 0x38]
call fcn.00404268
lea ecx, [esp + 0x88]
call fcn.004063d7
lea ecx, [esp + 0x68]
call fcn.004063d7
lea ecx, [esp + 0x4c]
call fcn.004063d7
mov eax, dword [esp + 0x30]
cmp eax, 0x10
jb 0x40cc7e
mov ecx, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
cmp eax, edi
jb 0x40cc75
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x18]
push eax
call fcn.004055a1
mov eax, dword [esp + 0x18]
pop ecx
pop ecx
mov ecx, dword [esp + 0x14]
push eax
push ecx
call fcn.00474cc0
pop ecx
pop ecx
push ebx
call dword [sym.imp.kernel32.dll_DeleteFileA]
lea ecx, [esp + 0x4c]
call fcn.0043078e
lea ecx, [esp + 0x4c]
call fcn.00430a04
lea eax, [esp + 0x34]
push eax
call fcn.0042c575
push eax
push 0x72
lea ecx, [esp + 0x58]
call fcn.00430907
mov ecx, eax
call fcn.00474cc0
mov ecx, eax
call fcn.00430a71
lea ecx, [esp + 0x64]
call fcn.004063fd
lea ecx, [esp + 0x4c]
call fcn.004063fd
mov eax, dword [esp + 0x48]
mov esi, 0x80004005
cmp eax, 0x10
jb 0x40d050
mov ecx, dword [esp + 0x34]
inc eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
cmp eax, edi
jb 0x40d047
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x18]
push eax
call fcn.004055a1
mov eax, dword [esp + 0x18]
pop ecx
pop ecx
mov ecx, dword [esp + 0x14]
jmp 0x40d047
mov ebp, 0x800
lea eax, [esp + 0x9a4]
push ebp
push esi
push eax
call fcn.004541a0
push ebp
lea eax, [esp + 0x1b4]
push esi
push eax
call fcn.004541a0
mov ebp, dword [sym.imp.kernel32.dll_lstrlenA]
add esp, 0x18
push ebx
call ebp
cmp eax, 4
jle 0x40cdd3
push str..msi
push ebx
call ebp
add eax, 0xfffffffc
add eax, ebx
push eax
call dword [sym.imp.kernel32.dll_lstrcmpiA]
test eax, eax
jne 0x40cdd3
push 0x104
lea eax, [esp + 0xa4]
push esi
push eax
call fcn.004541a0
add esp, 0xc
lea eax, [esp + 0xa0]
push eax
push esi
push esi
push 0x25
push esi
call dword [sym.imp.shell32.dll_SHGetFolderPathA]
test eax, eax
js 0x40ce0d
push ebx
lea eax, [esp + 0xa4]
mov ebx, 0x800
push eax
push str.__smsiexec.exe___i__s
push 0xffffffffffffffff
lea eax, [esp + 0x9b4]
push ebx
push eax
call fcn.00474cc0
lea eax, [edi + 0xfec]
push eax
push 0x487478
push 0xffffffffffffffff
lea eax, [esp + 0x1c8]
push ebx
push eax
call fcn.00474cc0
add esp, 0x2c
jmp 0x40ce0d
push ebx
push str.__s_
push 0xffffffffffffffff
mov ebx, 0x800
lea eax, [esp + 0x9b0]
push ebx
push eax
call fcn.00474cc0
lea eax, [edi + 0xfec]
push eax
push 0x487478
push 0xffffffffffffffff
lea eax, [esp + 0x1c4]
push ebx
push eax
call fcn.00474cc0
add esp, 0x28
push esi
lea eax, [esp + 0x1a8]
mov ecx, edi
push eax
lea eax, [esp + 0x9ac]
push eax
call fcn.00474cc0
mov ebx, eax
test ebx, ebx
je 0x40d055
cmp ebx, 0xbc2
je 0x40d055
push 0xf
pop eax
push esi
mov dword [esp + 0x38], esi
mov edi, 0x1000
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], eax
mov dword [esp + 0x20], esi
mov dword [esp + 0x30], esi
mov dword [esp + 0x34], eax
call dword [sym.imp.kernel32.dll_GetModuleHandleA]
lea ecx, [esp + 0x4c]
push eax
push 6
cmp ebx, 0xffffffff
jne 0x40cf04
push 0x89
call fcn.00434712
lea eax, [esp + 0x1c]
push eax
push 0x494e68
lea eax, [esp + 0x90]
push eax
lea ecx, [esp + 0x58]
call fcn.00434a79
push eax
lea ecx, [esp + 0x38]
call fcn.00404268
lea ecx, [esp + 0x88]
call fcn.004063d7
lea ecx, [esp + 0x68]
call fcn.004063d7
lea ecx, [esp + 0x4c]
call fcn.004063d7
mov eax, dword [esp + 0x30]
cmp eax, 0x10
jb 0x40cfc7
mov ecx, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
cmp eax, edi
jb 0x40cef6
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x18]
push eax
call fcn.004055a1
mov eax, dword [esp + 0x18]
pop ecx
pop ecx
mov ecx, dword [esp + 0x14]
push eax
push ecx
call fcn.00474cc0
pop ecx
pop ecx
jmp 0x40cfc7
push 0x73
call fcn.00434712
lea eax, [esp + 0x1c]
push eax
push 0x494e68
lea eax, [esp + 0x90]
push eax
lea ecx, [esp + 0x58]
call fcn.00434a79
push eax
lea ecx, [esp + 0x38]
call fcn.00404268
lea ecx, [esp + 0x88]
call fcn.004063d7
lea ecx, [esp + 0x68]
call fcn.004063d7
lea ecx, [esp + 0x4c]
call fcn.004063d7
mov eax, dword [esp + 0x30]
cmp eax, 0x10
jb 0x40cf8a
mov ecx, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
cmp eax, edi
jb 0x40cf81
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x18]
push eax
call fcn.004055a1
mov eax, dword [esp + 0x18]
pop ecx
pop ecx
mov ecx, dword [esp + 0x14]
push eax
push ecx
call fcn.00474cc0
pop ecx
pop ecx
push esi
push esi
lea eax, [esp + 0x20]
push eax
push 0x400
push ebx
push esi
push 0x1300
call dword [sym.imp.kernel32.dll_FormatMessageA]
test eax, eax
je 0x40cfc7
mov esi, dword [esp + 0x18]
push esi
call fcn.00456520
pop ecx
push eax
push esi
lea ecx, [esp + 0x3c]
call fcn.00474cc0
push dword [esp + 0x18]
call dword [sym.imp.kernel32.dll_LocalFree]
lea ecx, [esp + 0x4c]
call fcn.0043078e
lea ecx, [esp + 0x4c]
call fcn.00430a04
lea eax, [esp + 0x34]
push eax
call fcn.0042c575
push eax
push 0x72
lea ecx, [esp + 0x58]
call fcn.00430907
mov ecx, eax
call fcn.00474cc0
mov ecx, eax
call fcn.00430a71
lea ecx, [esp + 0x64]
call fcn.004063fd
lea ecx, [esp + 0x4c]
call fcn.004063fd
mov eax, dword [esp + 0x48]
mov esi, 0x80004005
cmp eax, 0x10
jb 0x40d050
mov ecx, dword [esp + 0x34]
inc eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], ecx
cmp eax, edi
jb 0x40d047
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x14]
push eax
call fcn.004055a1
mov eax, dword [esp + 0x20]
pop ecx
pop ecx
mov ecx, dword [esp + 0x10]
push eax
push ecx
call fcn.00474cc0
pop ecx
pop ecx
call fcn.00411a99
mov eax, esi
pop ebp
mov ecx, dword [esp + 0x11a0]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00450e68
add esp, 0x1198
ret 0x10