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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x119c
call fcn.00449500
mov eax, dword [0x4a8068]
xor eax, esp
mov dword [esp + 0x1198], eax
push ebx
push esi
mov esi, dword [ebp + 8]
xor ebx, ebx
push edi
mov edi, dword [ebp + 0xc]
cmp dword [ebp + 0x14], ebx
jne 0x40ba66
cmp dword [esi + 0x247c], ebx
jne 0x40ba66
mov eax, dword [esi]
push ebx
push ebx
push esi
call dword [eax + 0x10]
test eax, eax
jne 0x40be30
xor ecx, ecx
inc ecx
call fcn.0040e3a8
test eax, eax
je 0x40ba66
mov eax, 0x80070204
jmp 0x40be30
push 0x10
call fcn.004103e3
pop ecx
call fcn.00453bad
push ebx
lea ecx, [esi + 8]
call fcn.00453bad
test eax, eax
je 0x40ba89
push 2
mov ecx, eax
call fcn.0040cdb9
mov eax, dword [esi]
push edi
push esi
call dword [eax + 0x20]
mov dword [esp + 0x10], eax
cmp dword [ebp + 0x10], ebx
je 0x40bb9e
xor edx, edx
mov ecx, edi
call fcn.00414bc5
test eax, eax
jne 0x40bab4
cmp dword [esp + 0x10], ebx
jge 0x40bb9e
mov esi, dword [sym.imp.kernel32.dll_GetModuleHandleA]
cmp eax, 0xfffffffc
push 0xf
pop ecx
lea eax, [esp + 0x14]
mov dword [esp + 0x3c], ebx
push eax
push ecx
lea eax, [esp + 0x88]
mov dword [esp + 0x48], ecx
push eax
mov byte [esp + 0x38], bl
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ecx
mov byte [esp + 0x20], bl
push ebx
jne 0x40bb36
call esi
push ecx
push eax
push 0x88
lea ecx, [esp + 0x5c]
call fcn.0040a36f
pop ecx
mov ecx, eax
call fcn.0042a59a
push eax
lea ecx, [esp + 0x30]
call fcn.00453bad
lea ecx, [esp + 0x80]
call fcn.004049c7
lea ecx, [esp + 0x60]
call fcn.004049c7
lea ecx, [esp + 0x44]
call fcn.004049c7
lea ecx, [esp + 0x14]
call fcn.004049c7
jmp 0x40bb85
call esi
push ecx
push eax
push 0x74
lea ecx, [esp + 0x5c]
call fcn.0040a36f
pop ecx
mov ecx, eax
call fcn.0042a59a
push eax
lea ecx, [esp + 0x30]
call fcn.00453bad
lea ecx, [esp + 0x80]
call fcn.004049c7
lea ecx, [esp + 0x60]
call fcn.004049c7
lea ecx, [esp + 0x44]
call fcn.004049c7
lea ecx, [esp + 0x14]
call fcn.004049c7
push edi
call dword [sym.imp.kernel32.dll_DeleteFileA]
lea ecx, [esp + 0x44]
call fcn.0042a0be
push ebx
mov dword [esp + 0x7c], 0x10
call esi
jmp 0x40bde7
push 0x800
lea eax, [esp + 0x9a4]
push ebx
push eax
call fcn.0044b900
add esp, 0xc
lea eax, [esp + 0x1a0]
push 0x800
push ebx
push eax
call fcn.0044b900
add esp, 0xc
push edi
call dword [sym.imp.kernel32.dll_lstrlenA]
cmp eax, 4
jle 0x40bc6b
push str..msi
push edi
call dword [sym.imp.kernel32.dll_lstrlenA]
add eax, 0xfffffffc
add eax, edi
push eax
call dword [sym.imp.kernel32.dll_lstrcmpiA]
test eax, eax
jne 0x40bc6b
push 0x104
lea eax, [esp + 0x9c]
push ebx
push eax
call fcn.0044b900
add esp, 0xc
lea eax, [esp + 0x98]
push eax
push ebx
push ebx
push 0x25
push ebx
call dword [sym.imp.shell32.dll_SHGetFolderPathA]
test eax, eax
js 0x40bca8
push edi
lea eax, [esp + 0x9c]
mov edi, 0x800
push eax
push str.__smsiexec.exe___i__s
push 0xffffffffffffffff
lea eax, [esp + 0x9b0]
push edi
push eax
call fcn.00453bad
lea eax, [esi + 0xfec]
push eax
push 0x489cc8
push 0xffffffffffffffff
lea eax, [esp + 0x1c4]
push edi
push eax
call fcn.00453bad
add esp, 0x2c
jmp 0x40bca8
push edi
push str.__s_
push 0xffffffffffffffff
mov edi, 0x800
lea eax, [esp + 0x9ac]
push edi
push eax
call fcn.00453bad
add esp, 0x14
lea eax, [esi + 0xfec]
push eax
push 0x489cc8
push 0xffffffffffffffff
lea eax, [esp + 0x1ac]
push edi
push eax
call fcn.00453bad
add esp, 0x14
push ebx
lea eax, [esp + 0x1a4]
push eax
lea eax, [esp + 0x9a8]
push eax
call fcn.00453bad
mov esi, eax
test esi, esi
je 0x40be2e
cmp esi, 0xbc2
je 0x40be2e
mov edi, dword [sym.imp.kernel32.dll_GetModuleHandleA]
lea eax, [esp + 0x14]
push 0xf
pop ecx
push eax
push ecx
lea eax, [esp + 0x88]
mov dword [esp + 0x44], ebx
push eax
push ebx
mov dword [esp + 0x50], ecx
mov byte [esp + 0x3c], bl
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ecx
mov byte [esp + 0x24], bl
call edi
push ecx
lea ecx, [esp + 0x54]
push eax
cmp esi, 0xffffffff
jne 0x40bd56
push 0x89
call fcn.0040a36f
pop ecx
mov ecx, eax
call fcn.0042a59a
push eax
lea ecx, [esp + 0x30]
call fcn.00453bad
lea ecx, [esp + 0x80]
call fcn.004049c7
lea ecx, [esp + 0x60]
call fcn.004049c7
lea ecx, [esp + 0x44]
call fcn.004049c7
lea ecx, [esp + 0x14]
call fcn.004049c7
jmp 0x40bdd3
push 0x73
call fcn.0040a36f
pop ecx
mov ecx, eax
call fcn.0042a59a
push eax
lea ecx, [esp + 0x30]
call fcn.00453bad
lea ecx, [esp + 0x80]
call fcn.004049c7
lea ecx, [esp + 0x60]
call fcn.004049c7
lea ecx, [esp + 0x44]
call fcn.004049c7
lea ecx, [esp + 0x14]
call fcn.004049c7
push ebx
push ebx
lea eax, [esp + 0x18]
push eax
push 0x400
push esi
push ebx
push 0x1300
call dword [sym.imp.kernel32.dll_FormatMessageA]
test eax, eax
je 0x40bdd3
mov esi, dword [esp + 0x10]
push esi
call fcn.00451490
pop ecx
push eax
push esi
lea ecx, [esp + 0x34]
call fcn.00453bad
push dword [esp + 0x10]
call dword [sym.imp.kernel32.dll_LocalFree]
lea ecx, [esp + 0x44]
call fcn.0042a0be
push ebx
mov dword [esp + 0x7c], 0x10
call edi
push eax
push 0x72
lea ecx, [esp + 0x4c]
call fcn.0042a0e0
mov esi, eax
lea eax, [esp + 0x2c]
push eax
lea ecx, [esi + 0x18]
call fcn.00403d9a
mov ecx, esi
call fcn.0042a1c5
lea ecx, [esp + 0x5c]
call fcn.004049c7
lea ecx, [esp + 0x44]
call fcn.004049c7
lea ecx, [esp + 0x2c]
call fcn.004049c7
call fcn.00410470
mov ebx, 0x80004005
mov eax, ebx
mov ecx, dword [esp + 0x11a4]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004484c4
mov esp, ebp
pop ebp
ret 0x10