Function at 0x14004bc70
Capabilities:
Delete file

Disassembly:
mov rax, rsp
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x2e8]
sub rsp, 0x3c0
mov qword [rbp - 0x10], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov rax, qword [0x1402fcb80]
xor rax, rsp
mov qword [rbp + 0x2b0], rax
mov rsi, rcx
mov qword [rsp + 0x38], rcx
call fcn.1400694ec
mov rcx, rax
xor r14d, r14d
mov edx, r14d
test rax, rax
setne dl
test edx, edx
jne 0x14004bcda
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rax]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x40], rax
lea rcx, [rbp - 0x30]
call qword [sym.imp.SetupXML.dll_public:_void___cdecl_CXMLFileManagerInterface::constructor_void____ptr64]
lea rdi, vtable.CUtlX.0
mov qword [rbp - 0x30], rdi
lea rcx, [rbp - 0x80]
call qword [sym.imp.SetupXML.dll_public:_void___cdecl_CXMLFileManagerInterface::constructor_void____ptr64]
nop
lea rax, vtable.CUtlXIca.0
mov qword [rbp - 0x80], rax
lea rax, [rbp - 0x60]
mov qword [rsp + 0x50], rax
lea rax, vtable.CUtlXProperty.0
mov qword [rbp - 0x60], rax
lea rcx, [rbp - 0x58]
call qword [sym.imp.SetupXML.dll_public:_void___cdecl_CXMLFileManagerInterface::constructor_void____ptr64]
mov qword [rbp - 0x58], rdi
mov edx, 2
lea rcx, [rbp - 0x58]
call qword [sym.imp.SetupXML.dll_public:_void___cdecl_CXMLFileManagerInterface::SetFileIndex_enum_XMLFILENAMES____ptr64]
nop
mov qword [rbp - 0x38], r14
lea rax, vtable.CUtlXSetupMsi.0
mov qword [rbp - 0x80], rax
call fcn.1400694ec
mov rdx, rax
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
jne 0x14004bd75
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x48], rax
lea r8, str.managed
lea rdx, str.__ICA_Setups_Msi___s_1__
lea rcx, [rsp + 0x48]
call fcn.140011640
mov rbx, qword [rsp + 0x48]
mov rdx, rbx
lea rcx, [rbp - 0x80]
call fcn.1400408b0
nop
lea rdx, [rbx - 0x18]
or r15, 0xffffffffffffffff
lock add dword [rdx + 0x10], r15d
jg 0x14004bdc9
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, [rsp + 0x70]
lea rcx, [rbp - 0x80]
mov rax, qword [rbp - 0x80]
call qword [rax + MsiGetFeatureCostA]
xor bl, bl
mov rcx, qword [rax]
call qword [sym.imp.msi.dll_MsiRecordGetStringA]
cmp eax, 5
je 0x14004bdee
cmp eax, 2
jne 0x14004bdf0
mov bl, 1
mov rdx, qword [rsp + 0x70]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004be09
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test bl, bl
jne 0x14004c315
lea r8, str.result
lea rdx, str.__ICA_SourceFiles_SrcFile___s_0__
lea rcx, [rsp + 0x40]
call fcn.140011640
mov rdx, qword [rsp + 0x40]
lea rcx, [rbp - 0x30]
call qword [sym.imp.SetupXML.dll_public:_long_int___cdecl_CXMLFileManagerInterface::Select_wchar_t_const____ptr64____ptr64]
mov ebx, eax
test eax, eax
jle 0x14004c315
call fcn.1400694ec
mov rdx, rax
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
jne 0x14004be62
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x28], rax
mov rax, qword [rsi]
test rax, rax
je 0x14004bef9
lea rdx, str.SetupCacheSource_DeleteAllFilesICACustom0
mov ecx, 0x93000000
call rax
lea rdx, str.1:_0_2:_0_3:_0_4:_1
lea rcx, [rsp + 0x28]
call fcn.140011640
mov r8, qword [rsp + 0x28]
lea rdx, [0x1402962b4]
mov ecx, 0xa000000
call qword [rsi]
mov r8d, ebx
lea rdx, str.1:_0_2:__d_3:_0_4:_0
lea rcx, [rsp + 0x28]
call fcn.140011640
mov r8, qword [rsp + 0x28]
lea rdx, [0x1402962b4]
mov ecx, 0xa000000
call qword [rsi]
lea rdx, str.1:_1_2:_1_3:_1_4:_0
lea rcx, [rsp + 0x28]
call fcn.140011640
mov r8, qword [rsp + 0x28]
lea rdx, [0x1402962b4]
mov ecx, 0xa000000
call qword [rsi]
call fcn.1400694ec
mov rdx, rax
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
jne 0x14004bf19
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rbp + 0x38], rax
lea rax, vtable.CUtlCommonPath.0
mov qword [rbp + 0x30], rax
mov dword [rbp + 0x40], r14d
lea rcx, [rbp - 8]
call fcn.140070da8
nop
xorps xmm0, xmm0
movdqa xmmword [rbp + 0x80], xmm0
mov qword [rbp + 0x90], r14
mov dword [rbp + 0xa0], r14d
call fcn.1400694ec
mov rdx, rax
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
jne 0x14004bf7c
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x20], rax
nop
lea r8, str.file
lea rdx, [rsp + 0x68]
lea rcx, [rbp - 0x30]
call qword [sym.imp.SetupXML.dll_public:_class_ATL::CStringT_wchar_t__class_StrTraitMFC_wchar_t__class_ATL::ChTraitsCRT_wchar_t______cdecl_CXMLFileManagerInterface::GetAttribute_wchar_t_const____ptr64____ptr64]
nop
mov rdx, qword [rax]
mov dword [rbp + 0x40], r14d
test rdx, rdx
jne 0x14004bfb8
mov eax, r14d
jmp 0x14004bfca
mov rax, r15
nop dword [rax + rax]
inc rax
cmp word [rdx + rax*2], 0
jne 0x14004bfc0
mov r8d, eax
lea rcx, [rbp + 0x38]
call fcn.140011b80
nop
mov rdx, qword [rsp + 0x68]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004bff0
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, [rsp + 0x58]
lea rcx, [rbp + 0x30]
call fcn.14003bfc0
nop
mov r13, qword [rax]
lea rcx, [r13 - 0x18]
mov rbx, qword [rsp + 0x20]
lea rdi, [rbx - 0x18]
cmp rcx, rdi
je 0x14004c12b
cmp dword [rdi + 0x10], 0
jl 0x14004c050
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x14004c050
call fcn.1400116e0
mov rbx, rax
lock add dword [rdi + 0x10], 0xffffffff
jg 0x14004c042
mov rcx, qword [rdi]
mov r8, qword [rcx]
mov rdx, rdi
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
lea rax, [rbx + 0x18]
mov qword [rsp + 0x20], rax
jmp 0x14004c12b
movsxd rsi, dword [r13 - 0x10]
test esi, esi
jne 0x14004c0a9
mov rsi, qword [rdi]
cmp dword [rdi + 8], 0
je 0x14004c126
cmp dword [rdi + 0x10], 0
jge 0x14004c082
cmp dword [rbx - 0xc], 0
jl 0x14004c281
mov dword [rbx - 0x10], r14d
mov word [rbx], r14w
jmp 0x14004c126
lock add dword [rdi + 0x10], 0xffffffff
jg 0x14004c095
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x20], rax
jmp 0x14004c126
test r13, r13
je 0x14004c2a2
mov r12d, dword [rbx - 0x10]
mov r14, r13
sub r14, rbx
sar r14, 1
test esi, esi
js 0x14004c297
mov ecx, 1
sub ecx, dword [rdi + 0x10]
mov eax, dword [rdi + 0xc]
sub eax, esi
or eax, ecx
jge 0x14004c0e9
mov edx, esi
lea rcx, [rsp + 0x20]
call fcn.140011b00
mov rbx, qword [rsp + 0x20]
lea rdi, [rsi + rsi]
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
mov r9, rdi
add rdx, rdx
cmp r14, r12
ja 0x14004c10a
lea r8, [rbx + r14*2]
call fcn.1401f366c
jmp 0x14004c112
mov r8, r13
call fcn.1401f3588
cmp esi, dword [rbx - 0xc]
jg 0x14004c28c
mov dword [rbx - 0x10], esi
xor r14d, r14d
mov word [rdi + rbx], r14w
mov rsi, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004c144
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea r8, [0x140296e0c]
lea rdx, [0x1402962b4]
mov ecx, 0x9000000
call qword [rsi]
xor r8d, r8d
mov rbx, qword [rsp + 0x20]
mov rdx, rbx
lea rcx, [rbp - 8]
call fcn.140070fc4
test eax, eax
je 0x14004c195
xor r8d, r8d
lea rdx, [rbp + 0x80]
mov rcx, rbx
call fcn.140072310
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_DeleteFileW]
lea rcx, [rbp - 8]
call fcn.140070f64
lea rdx, [rsp + 0x30]
lea rcx, [rbp + 0x30]
call fcn.14003bfc0
nop
mov edx, MsiPreviewDialogW
mov rcx, qword [rsp + 0x30]
call fcn.1401f50b0
test rax, rax
jne 0x14004c1bd
mov eax, r15d
jmp 0x14004c1c5
sub rax, qword [rsp + 0x30]
sar rax, 1
mov r9d, eax
xor r8d, r8d
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x30]
call fcn.14001ca30
nop
mov dword [rbp + 0x40], r14d
mov rbx, qword [rsp + 0x60]
test rbx, rbx
jne 0x14004c1ee
mov eax, r14d
jmp 0x14004c1fb
mov rax, r15
inc rax
cmp word [rbx + rax*2], 0
jne 0x14004c1f1
mov r8d, eax
mov rdx, rbx
lea rcx, [rbp + 0x38]
call fcn.140011b80
nop
lea rdx, [rbx - 0x18]
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004c220
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004c239
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, [rsp + 0x50]
lea rcx, [rbp + 0x30]
call fcn.14003bfc0
nop
mov rdx, qword [rax]
lea rcx, [rbp + 0x30]
call fcn.14003c990
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004c26e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rcx, [rbp - 0x30]
call qword [sym.imp.SetupXML.dll_public:_long_int___cdecl_CXMLFileManagerInterface::CounterNext_void____ptr64]
test eax, eax
je 0x14004c2ad
jmp 0x14004bf90
mov ecx, 0x80070057
call fcn.140011b60
int3
mov ecx, 0x80070057
call fcn.140011b60
int3
mov ecx, 0x80070057
call fcn.140011b60
int3
mov ecx, 0x80070057
call fcn.140011b60
nop
mov rdx, qword [rsp + 0x20]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004c2c7
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rcx, [rbp - 8]
call fcn.140070ef0
nop
lea rax, vtable.CUtlCommonPath.0
mov qword [rbp + 0x30], rax
mov rdx, qword [rbp + 0x38]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004c2f5
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x28]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004c30e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdi, vtable.CUtlX.0
lea rax, vtable.CUtlXIca.0
mov qword [rbp - 0x80], rax
lea rax, vtable.CUtlXProperty.0
mov qword [rbp - 0x60], rax
mov qword [rbp - 0x58], rdi
lea rcx, [rbp - 0x58]
call qword [sym.imp.SetupXML.dll_public_virtual:_void___cdecl_CXMLFileManagerInterface::destructor_void____ptr64]
nop
mov qword [rbp - 0x80], rdi
lea rcx, [rbp - 0x80]
call qword [sym.imp.SetupXML.dll_public_virtual:_void___cdecl_CXMLFileManagerInterface::destructor_void____ptr64]
nop
mov qword [rbp - 0x30], rdi
lea rcx, [rbp - 0x30]
call qword [sym.imp.SetupXML.dll_public_virtual:_void___cdecl_CXMLFileManagerInterface::destructor_void____ptr64]
nop
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004c371
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
mov rcx, qword [rbp + 0x2b0]
xor rcx, rsp
call fcn.1401f2f70
lea r11, [rsp + 0x3c0]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret