Function at 0x14004bd80
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.140069614
mov rcx, rax
xor r14d, r14d
mov edx, r14d
test rax, rax
setne dl
test edx, edx
jne 0x14004bdea
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.140069614
mov rdx, rax
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
jne 0x14004be85
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.1400409c0
nop
lea rdx, [rbx - 0x18]
or r15, 0xffffffffffffffff
lock add dword [rdx + 0x10], r15d
jg 0x14004bed9
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 0x14004befe
cmp eax, 2
jne 0x14004bf00
mov bl, 1
mov rdx, qword [rsp + 0x70]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004bf19
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test bl, bl
jne 0x14004c425
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 0x14004c425
call fcn.140069614
mov rdx, rax
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
jne 0x14004bf72
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 0x14004c009
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.140069614
mov rdx, rax
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
jne 0x14004c029
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.140070fe4
nop
xorps xmm0, xmm0
movdqa xmmword [rbp + 0x80], xmm0
mov qword [rbp + 0x90], r14
mov dword [rbp + 0xa0], r14d
call fcn.140069614
mov rdx, rax
mov ecx, r14d
test rax, rax
setne cl
test ecx, ecx
jne 0x14004c08c
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 0x14004c0c8
mov eax, r14d
jmp 0x14004c0da
mov rax, r15
nop dword [rax + rax]
inc rax
cmp word [rdx + rax*2], 0
jne 0x14004c0d0
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 0x14004c100
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.14003c0d0
nop
mov r13, qword [rax]
lea rcx, [r13 - 0x18]
mov rbx, qword [rsp + 0x20]
lea rdi, [rbx - 0x18]
cmp rcx, rdi
je 0x14004c23b
cmp dword [rdi + 0x10], 0
jl 0x14004c160
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x14004c160
call fcn.1400116e0
mov rbx, rax
lock add dword [rdi + 0x10], 0xffffffff
jg 0x14004c152
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 0x14004c23b
movsxd rsi, dword [r13 - 0x10]
test esi, esi
jne 0x14004c1b9
mov rsi, qword [rdi]
cmp dword [rdi + 8], 0
je 0x14004c236
cmp dword [rdi + 0x10], 0
jge 0x14004c192
cmp dword [rbx - 0xc], 0
jl 0x14004c391
mov dword [rbx - 0x10], r14d
mov word [rbx], r14w
jmp 0x14004c236
lock add dword [rdi + 0x10], 0xffffffff
jg 0x14004c1a5
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 0x14004c236
test r13, r13
je 0x14004c3b2
mov r12d, dword [rbx - 0x10]
mov r14, r13
sub r14, rbx
sar r14, 1
test esi, esi
js 0x14004c3a7
mov ecx, 1
sub ecx, dword [rdi + 0x10]
mov eax, dword [rdi + 0xc]
sub eax, esi
or eax, ecx
jge 0x14004c1f9
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 0x14004c21a
lea r8, [rbx + r14*2]
call fcn.1401f377c
jmp 0x14004c222
mov r8, r13
call fcn.1401f3698
cmp esi, dword [rbx - 0xc]
jg 0x14004c39c
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 0x14004c254
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.140071200
test eax, eax
je 0x14004c2a5
xor r8d, r8d
lea rdx, [rbp + 0x80]
mov rcx, rbx
call fcn.14007254c
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_DeleteFileW]
lea rcx, [rbp - 8]
call fcn.1400711a0
lea rdx, [rsp + 0x30]
lea rcx, [rbp + 0x30]
call fcn.14003c0d0
nop
mov edx, MsiPreviewDialogW
mov rcx, qword [rsp + 0x30]
call fcn.1401f51c0
test rax, rax
jne 0x14004c2cd
mov eax, r15d
jmp 0x14004c2d5
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 0x14004c2fe
mov eax, r14d
jmp 0x14004c30b
mov rax, r15
inc rax
cmp word [rbx + rax*2], 0
jne 0x14004c301
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 0x14004c330
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 0x14004c349
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.14003c0d0
nop
mov rdx, qword [rax]
lea rcx, [rbp + 0x30]
call fcn.14003caa0
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004c37e
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 0x14004c3bd
jmp 0x14004c0a0
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 0x14004c3d7
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rcx, [rbp - 8]
call fcn.14007112c
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 0x14004c405
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 0x14004c41e
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 0x14004c481
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.1401f3080
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