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

Disassembly:
mov eax, 0x1198
call fcn.0044f450
mov eax, dword [0x4b4294]
xor eax, esp
mov dword [esp + 0x1194], eax
push ebx
push ebp
mov ebp, dword [esp + 0x11a8]
xor ebx, ebx
push esi
mov esi, dword [esp + 0x11a8]
cmp dword [esp + 0x11b4], ebx
jne 0x40c285
cmp dword [esi + 0x247c], ebx
jne 0x40c285
mov eax, dword [esi]
push ebx
push ebx
push esi
call dword [eax + 0x10]
test eax, eax
jne 0x40c7c6
push 1
call fcn.0041016c
pop ecx
test eax, eax
je 0x40c285
mov eax, 0x80070204
jmp 0x40c7c6
push 0x10
push str.PreDownldStatus
push ebx
call fcn.00411870
add esp, 0xc
call fcn.0041131c
push ebx
lea ecx, [esi + 8]
call fcn.0040ce03
test eax, eax
je 0x40c2ae
mov ecx, eax
call fcn.0040d683
mov eax, dword [esi]
push edi
push ebp
push esi
call dword [eax + 0x20]
mov edi, eax
cmp dword [esp + 0x11b4], ebx
je 0x40c46e
push ebx
push ebp
call fcn.004156f7
mov edx, eax
pop ecx
pop ecx
test edx, edx
jne 0x40c2dc
test edi, edi
jns 0x40c46e
xor eax, eax
lea edi, [esp + 0x34]
stosd dword es:[edi], eax
push 0xf
pop ecx
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
xor eax, eax
mov dword [esp + 0x44], ebx
lea edi, [esp + 0x1c]
stosd dword es:[edi], eax
mov dword [esp + 0x48], ecx
mov byte [esp + 0x34], bl
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], ecx
mov byte [esp + 0x1c], bl
cmp edx, 0xfffffffc
jne 0x40c377
call fcn.0042b478
push eax
push 6
push 0x88
lea ecx, [esp + 0x58]
call fcn.004332ab
lea eax, [esp + 0x1c]
push eax
push 0x496038
lea eax, [esp + 0x90]
push eax
lea ecx, [esp + 0x58]
call fcn.00433632
push eax
lea ecx, [esp + 0x38]
call fcn.00403b02
lea ecx, [esp + 0x88]
call fcn.00405bc4
lea ecx, [esp + 0x68]
call fcn.00405bc4
lea ecx, [esp + 0x4c]
call fcn.00405bc4
lea ecx, [esp + 0x1c]
call fcn.00405bc4
jmp 0x40c413
call fcn.0042b478
push eax
push 6
push 0x74
lea ecx, [esp + 0x58]
call fcn.004332ab
lea eax, [esp + 0x1c]
push eax
push 0x496038
lea eax, [esp + 0x90]
push eax
lea ecx, [esp + 0x58]
call fcn.00433632
push eax
lea ecx, [esp + 0x38]
call fcn.00403b02
lea ecx, [esp + 0x88]
call fcn.00405bc4
lea ecx, [esp + 0x68]
call fcn.00405bc4
lea ecx, [esp + 0x4c]
call fcn.00405bc4
mov eax, dword [esp + 0x30]
cmp eax, 0x10
jb 0x40c40c
mov ecx, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], ecx
cmp eax, 0x1000
jb 0x40c403
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x14]
push eax
call fcn.00404e58
mov eax, dword [esp + 0x1c]
pop ecx
pop ecx
mov ecx, dword [esp + 0x10]
push eax
push ecx
call fcn.0044f0ce
pop ecx
pop ecx
push ebp
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
lea ecx, [esp + 0x4c]
call fcn.0042f64f
lea ecx, [esp + 0x4c]
call fcn.0042f8dd
lea eax, [esp + 0x34]
push eax
call fcn.0042b478
push eax
push 0x72
lea ecx, [esp + 0x58]
call fcn.0042f7da
mov ecx, eax
call fcn.0042f980
mov ecx, eax
call fcn.0042f94a
lea ecx, [esp + 0x64]
call fcn.00405bea
lea ecx, [esp + 0x4c]
call fcn.00405bea
lea ecx, [esp + 0x34]
mov ebx, 0x80004005
call fcn.00405bc4
jmp 0x40c7be
mov edi, 0x800
lea eax, [esp + 0x9a4]
push edi
push ebx
push eax
call fcn.00452680
push edi
lea eax, [esp + 0x1b4]
push ebx
push eax
call fcn.00452680
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenA]
add esp, 0x18
push ebp
call edi
cmp eax, 4
jle 0x40c52f
push str..msi
push ebp
call edi
add eax, 0xfffffffc
add eax, ebp
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x40c52f
push 0x104
lea eax, [esp + 0xa4]
push ebx
push eax
call fcn.00452680
add esp, 0xc
lea eax, [esp + 0xa0]
push eax
push ebx
push ebx
push 0x25
push ebx
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
test eax, eax
js 0x40c569
push ebp
lea eax, [esp + 0xa4]
mov edi, 0x800
push eax
push str.__smsiexec.exe___i__s
push 0xffffffffffffffff
lea eax, [esp + 0x9b4]
push edi
push eax
call fcn.0040cb09
lea eax, [esi + 0xfec]
push eax
push 0x488480
push 0xffffffffffffffff
lea eax, [esp + 0x1c8]
push edi
push eax
call fcn.0040cb09
add esp, 0x2c
jmp 0x40c569
push ebp
push str.__s_
push 0xffffffffffffffff
mov edi, 0x800
lea eax, [esp + 0x9b0]
push edi
push eax
call fcn.0040cb09
lea eax, [esi + 0xfec]
push eax
push 0x488480
push 0xffffffffffffffff
lea eax, [esp + 0x1c4]
push edi
push eax
call fcn.0040cb09
add esp, 0x28
push ebx
lea eax, [esp + 0x1a8]
mov ecx, esi
push eax
lea eax, [esp + 0x9ac]
push eax
call fcn.0040b70d
mov esi, eax
test esi, esi
je 0x40c7c3
cmp esi, 0xbc2
je 0x40c7c3
xor eax, eax
lea edi, [esp + 0x34]
stosd dword es:[edi], eax
mov ebp, 0x1000
push 0xf
pop ecx
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
xor eax, eax
lea edi, [esp + 0x1c]
mov dword [esp + 0x44], ebx
stosd dword es:[edi], eax
mov dword [esp + 0x48], ecx
mov byte [esp + 0x34], bl
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], ecx
mov byte [esp + 0x1c], bl
call fcn.0042b478
lea ecx, [esp + 0x4c]
push eax
push 6
cmp esi, 0xffffffff
jne 0x40c672
push 0x89
call fcn.004332ab
lea eax, [esp + 0x1c]
push eax
push 0x496038
lea eax, [esp + 0x90]
push eax
lea ecx, [esp + 0x58]
call fcn.00433632
push eax
lea ecx, [esp + 0x38]
call fcn.00403b02
lea ecx, [esp + 0x88]
call fcn.00405bc4
lea ecx, [esp + 0x68]
call fcn.00405bc4
lea ecx, [esp + 0x4c]
call fcn.00405bc4
mov eax, dword [esp + 0x30]
cmp eax, 0x10
jb 0x40c735
mov ecx, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
cmp eax, ebp
jb 0x40c664
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x18]
push eax
call fcn.00404e58
mov eax, dword [esp + 0x18]
pop ecx
pop ecx
mov ecx, dword [esp + 0x14]
push eax
push ecx
call fcn.0044f0ce
pop ecx
pop ecx
jmp 0x40c735
push 0x73
call fcn.004332ab
lea eax, [esp + 0x1c]
push eax
push 0x496038
lea eax, [esp + 0x90]
push eax
lea ecx, [esp + 0x58]
call fcn.00433632
push eax
lea ecx, [esp + 0x38]
call fcn.00403b02
lea ecx, [esp + 0x88]
call fcn.00405bc4
lea ecx, [esp + 0x68]
call fcn.00405bc4
lea ecx, [esp + 0x4c]
call fcn.00405bc4
mov eax, dword [esp + 0x30]
cmp eax, 0x10
jb 0x40c6f8
mov ecx, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
cmp eax, ebp
jb 0x40c6ef
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x18]
push eax
call fcn.00404e58
mov eax, dword [esp + 0x18]
pop ecx
pop ecx
mov ecx, dword [esp + 0x14]
push eax
push ecx
call fcn.0044f0ce
pop ecx
pop ecx
push ebx
push ebx
lea eax, [esp + 0x20]
push eax
push 0x400
push esi
push ebx
push 0x1300
call dword [sym.imp.KERNEL32.dll_FormatMessageA]
test eax, eax
je 0x40c735
mov esi, dword [esp + 0x18]
push esi
call fcn.00454b60
pop ecx
push eax
push esi
lea ecx, [esp + 0x3c]
call fcn.00405ca3
push dword [esp + 0x18]
call dword [sym.imp.KERNEL32.dll_LocalFree]
lea ecx, [esp + 0x4c]
call fcn.0042f64f
lea ecx, [esp + 0x4c]
call fcn.0042f8dd
lea eax, [esp + 0x34]
push eax
call fcn.0042b478
push eax
push 0x72
lea ecx, [esp + 0x58]
call fcn.0042f7da
mov ecx, eax
call fcn.0042f980
mov ecx, eax
call fcn.0042f94a
lea ecx, [esp + 0x64]
call fcn.00405bea
lea ecx, [esp + 0x4c]
call fcn.00405bea
mov eax, dword [esp + 0x48]
mov ebx, 0x80004005
cmp eax, 0x10
jb 0x40c7be
mov ecx, dword [esp + 0x34]
inc eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], ecx
cmp eax, ebp
jb 0x40c7b5
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x14]
push eax
call fcn.00404e58
mov eax, dword [esp + 0x20]
pop ecx
pop ecx
mov ecx, dword [esp + 0x10]
push eax
push ecx
call fcn.0044f0ce
pop ecx
pop ecx
call fcn.004111fc
mov eax, ebx
pop edi
mov ecx, dword [esp + 0x11a0]
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0044f332
add esp, 0x1198
ret 0x10