Function at 0x14004b4a0
Capabilities:
Copy file
Delete file

Disassembly:
mov rax, rsp
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x348]
sub rsp, 0x420
mov qword [rbp + 0xa0], 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 + 0x310], rax
mov r15, rcx
xor esi, esi
mov dword [rsp + 0x30], esi
lea rcx, [rbp - 0x68]
call qword [sym.imp.SetupXML.dll_public:_void___cdecl_CXMLFileManagerInterface::constructor_void____ptr64]
lea r12, vtable.CUtlX.0
mov qword [rbp - 0x68], r12
lea rcx, [rbp]
call qword [sym.imp.SetupXML.dll_public:_void___cdecl_CXMLFileManagerInterface::constructor_void____ptr64]
nop
lea rax, vtable.CUtlXIca.0
mov qword [rbp], rax
lea rax, [rbp + 0x20]
mov qword [rsp + 0x60], rax
lea r13, vtable.CUtlXProperty.0
mov qword [rbp + 0x20], r13
lea rcx, [rbp + 0x28]
call qword [sym.imp.SetupXML.dll_public:_void___cdecl_CXMLFileManagerInterface::constructor_void____ptr64]
mov qword [rbp + 0x28], r12
lea edx, [rsi + 2]
lea rcx, [rbp + 0x28]
call qword [sym.imp.SetupXML.dll_public:_void___cdecl_CXMLFileManagerInterface::SetFileIndex_enum_XMLFILENAMES____ptr64]
nop
mov qword [rbp + 0x48], rsi
lea rax, vtable.CUtlXSetupMsi.0
mov qword [rbp], rax
mov qword [rsp + 0x70], r13
lea rcx, [rsp + 0x78]
call qword [sym.imp.SetupXML.dll_public:_void___cdecl_CXMLFileManagerInterface::constructor_void____ptr64]
mov qword [rsp + 0x78], r12
lea edx, [rsi + 2]
lea rcx, [rsp + 0x78]
call qword [sym.imp.SetupXML.dll_public:_void___cdecl_CXMLFileManagerInterface::SetFileIndex_enum_XMLFILENAMES____ptr64]
nop
call fcn.140069614
mov rcx, rax
mov eax, esi
test rcx, rcx
setne al
test eax, eax
jne 0x14004b598
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x50], rax
lea r8, str.managed
lea rdx, str.__ICA_Setups_Msi___s_1__
lea rcx, [rsp + 0x50]
call fcn.140011640
mov rbx, qword [rsp + 0x50]
mov rdx, rbx
lea rcx, [rbp]
call fcn.1400409c0
nop
lea rdx, [rbx - 0x18]
or r14, 0xffffffffffffffff
lock add dword [rdx + 0x10], r14d
jg 0x14004b5e9
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, [rbp - 0x20]
lea rcx, [rbp]
mov rax, qword [rbp]
call qword [rax + MsiGetFeatureCostA]
xor bl, bl
mov rcx, qword [rax]
call qword [sym.imp.msi.dll_MsiRecordGetStringA]
cmp eax, 5
je 0x14004b60d
cmp eax, 2
jne 0x14004b60f
mov bl, 1
mov rdx, qword [rbp - 0x20]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004b627
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test bl, bl
jne 0x14004bcfa
lea r8, str.CACHE_SETUP_SOURCE
lea rdx, [rbp - 0x10]
lea rcx, [rsp + 0x70]
call fcn.140053520
nop
mov edx, 1
mov dword [rsp + 0x30], edx
mov rcx, qword [rax]
movzx eax, word [rcx]
cmp ax, word [reloc.msi.dll_MsiGetFeatureCostA]
jne 0x14004b66e
movzx eax, word [rcx + 2]
cmp ax, word [0x1402964f6]
jne 0x14004b66e
mov eax, esi
jmp 0x14004b672
sbb eax, eax
or eax, edx
test eax, eax
jne 0x14004b6d7
lea r8, str.CACHE_SETUP_SOURCE_OPTION
lea rdx, [rbp - 0x40]
lea rcx, [rsp + 0x70]
call fcn.140053520
mov edx, 3
mov dword [rsp + 0x30], edx
mov r8, qword [rax]
mov rcx, rsi
lea r9, str.Disable
nop dword [rax]
nop word [rax + rax]
movzx eax, word [r8 + rcx*2]
inc rcx
cmp ax, word [r9 + rcx*2 - 2]
jne 0x14004b6ca
cmp rcx, 8
jne 0x14004b6b0
mov eax, esi
jmp 0x14004b6cf
sbb eax, eax
or eax, 1
test eax, eax
je 0x14004b6d7
xor bl, bl
jmp 0x14004b6d9
mov bl, 1
test dl, 2
je 0x14004b701
and edx, 0xfffffffd
mov dword [rsp + 0x30], edx
mov rdx, qword [rbp - 0x40]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004b6fd
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov edx, dword [rsp + 0x30]
test dl, 1
je 0x14004b71e
mov rdx, qword [rbp - 0x10]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004b71e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test bl, bl
jne 0x14004bcfa
lea rdx, str.__ICA_SourceFiles_SrcFile
lea rcx, [rbp - 0x68]
call qword [sym.imp.SetupXML.dll_public:_long_int___cdecl_CXMLFileManagerInterface::Select_wchar_t_const____ptr64____ptr64]
mov ebx, eax
test eax, eax
jle 0x14004bcfa
call fcn.140069614
mov rcx, rax
mov eax, esi
test rcx, rcx
setne al
test eax, eax
jne 0x14004b760
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rbp + 0x58], rax
lea rax, vtable.CUtlCommonPath.0
mov qword [rbp + 0x50], rax
mov dword [rbp + 0x60], esi
call fcn.140069614
mov rcx, rax
mov eax, esi
test rcx, rcx
setne al
test eax, eax
jne 0x14004b79b
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x40], rax
call fcn.140069614
mov rcx, rax
mov eax, esi
test rcx, rcx
setne al
test eax, eax
jne 0x14004b7c9
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x48], rax
call fcn.140069614
mov rcx, rax
mov eax, esi
test rcx, rcx
setne al
test eax, eax
jne 0x14004b7f7
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x60], rax
call fcn.140069614
mov rcx, rax
mov eax, esi
test rcx, rcx
setne al
test eax, eax
jne 0x14004b825
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rbp - 0x38], rax
call fcn.140069614
mov rcx, rax
mov eax, esi
test rcx, rcx
setne al
test eax, eax
jne 0x14004b852
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x38], rax
lea rdx, [rbp - 0x18]
call fcn.140040ae0
nop
mov rdx, qword [rax]
mov dword [rbp + 0x60], esi
test rdx, rdx
jne 0x14004b87a
mov eax, esi
jmp 0x14004b88a
mov rax, r14
nop dword [rax]
inc rax
cmp word [rdx + rax*2], 0
jne 0x14004b880
mov r8d, eax
lea rcx, [rbp + 0x58]
call fcn.140011b80
nop
mov rdx, qword [rbp - 0x18]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004b8af
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, [rsp + 0x58]
lea rcx, [rbp + 0x50]
call fcn.14003c180
nop
lea r8, [0x140296860]
lea rdx, [rbp - 0x48]
lea rcx, [rsp + 0x70]
call fcn.140053520
nop
mov rdx, qword [rax]
mov dword [rbp + 0x60], esi
test rdx, rdx
jne 0x14004b8e3
mov eax, esi
jmp 0x14004b8f0
mov rax, r14
inc rax
cmp word [rdx + rax*2], 0
jne 0x14004b8e6
mov r8d, eax
lea rcx, [rbp + 0x58]
call fcn.140011b80
nop
mov rdx, qword [rbp - 0x48]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004b915
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, [0x140296930]
lea rcx, [rbp + 0x50]
call fcn.14003c240
lea rdx, [rsp + 0x68]
lea rcx, [rbp + 0x50]
call fcn.14003c180
nop
cmp qword [r15], 0
je 0x14004ba02
lea r8, str.Str.CacheSetupSource.Progress.text
lea rdx, [rbp - 0x30]
lea rcx, [rsp + 0x70]
call fcn.140053520
nop
mov r8, qword [rax]
lea rdx, str.Str.ProgressTotalText.Complete
lea rcx, [rsp + 0x70]
call fcn.1400536a0
nop
mov rdx, qword [rbp - 0x30]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004b981
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, str.SetupCacheSource_CopyAllFilesICACustom0
mov ecx, 0x93000000
call qword [r15]
lea rdx, str.1:_0_2:_0_3:_0_4:_1
lea rcx, [rsp + 0x38]
call fcn.140011640
mov r8, qword [rsp + 0x38]
lea rdx, [0x1402962b4]
mov ecx, 0xa000000
call qword [r15]
mov r8d, ebx
lea rdx, str.1:_0_2:__d_3:_0_4:_0
lea rcx, [rsp + 0x38]
call fcn.140011640
mov r8, qword [rsp + 0x38]
lea rdx, [0x1402962b4]
mov ecx, 0xa000000
call qword [r15]
lea rdx, str.1:_1_2:_1_3:_1_4:_0
lea rcx, [rsp + 0x38]
call fcn.140011640
mov r8, qword [rsp + 0x38]
lea rdx, [0x1402962b4]
mov ecx, 0xa000000
call qword [r15]
lea rcx, [rbp + 0xa8]
call fcn.140070fe4
nop
xorps xmm0, xmm0
movdqa xmmword [rbp + 0xe0], xmm0
mov qword [rbp + 0xf0], rsi
mov dword [rbp + 0x100], esi
mov rbx, qword [rsp + 0x40]
nop dword [rax]
lea r8, str.file
lea rdx, [rbp - 0x28]
lea rcx, [rbp - 0x68]
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]
lea rcx, [rdx - 0x18]
add rbx, 0xffffffffffffffe8
cmp rcx, rbx
je 0x14004ba99
cmp dword [rbx + 0x10], 0
jl 0x14004ba8a
mov rax, qword [rbx]
cmp qword [rcx], rax
jne 0x14004ba8a
call fcn.1400116e0
mov rdi, rax
lock add dword [rbx + 0x10], 0xffffffff
jg 0x14004ba7f
mov rcx, qword [rbx]
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rdi + 0x18]
mov qword [rsp + 0x40], rax
jmp 0x14004ba99
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x40]
call fcn.140011b80
nop
mov rdx, qword [rbp - 0x28]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004bab1
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov dword [rbp + 0x60], esi
mov rbx, qword [rsp + 0x40]
test rbx, rbx
jne 0x14004bac2
mov eax, esi
jmp 0x14004bacf
mov rax, r14
inc rax
cmp word [rbx + rax*2], 0
jne 0x14004bac5
mov r8d, eax
mov rdx, rbx
lea rcx, [rbp + 0x58]
call fcn.140011b80
mov r8, qword [rsp + 0x68]
mov rdx, qword [rsp + 0x58]
lea rcx, [rbp + 0x58]
call fcn.1400109d0
mov rdi, qword [rbp + 0x58]
test rdi, rdi
jne 0x14004bafe
mov eax, esi
jmp 0x14004bb0b
mov rax, r14
inc rax
cmp word [rdi + rax*2], 0
jne 0x14004bb01
mov r8d, eax
mov rdx, rdi
lea rcx, [rsp + 0x48]
call fcn.140011b80
mov rdx, rdi
lea rcx, [rbp + 0x50]
call fcn.14003cd40
mov rax, qword [r15]
mov rdi, qword [rsp + 0x48]
test rax, rax
je 0x14004bb45
mov r8, rdi
lea rdx, [0x1402962b4]
mov ecx, 0x9000000
call rax
xor r8d, r8d
mov rdx, rdi
lea rcx, [rbp + 0xa8]
call fcn.140071200
test eax, eax
je 0x14004bb82
lea rcx, [rbp + 0xa8]
call fcn.1400711a0
xor r8d, r8d
lea rdx, [rbp + 0xe0]
mov rcx, rdi
call fcn.14007254c
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_DeleteFileW]
mov dword [rsp + 0x28], esi
mov qword [rsp + 0x20], rsi
mov r9, qword [r15]
lea r8, [0x140049c10]
mov rdx, rdi
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CopyFileExW]
test eax, eax
je 0x14004bbf0
lea r8, [0x140297184]
lea rdx, str.result
lea rcx, [rbp - 0x68]
call qword [sym.imp.SetupXML.dll_public:_bool___cdecl_CXMLFileManagerInterface::SetAttribute_wchar_t_const____ptr64__wchar_t_const____ptr64____ptr64]
mov r8, rdi
lea rdx, str.file
lea rcx, [rbp - 0x68]
call qword [sym.imp.SetupXML.dll_public:_bool___cdecl_CXMLFileManagerInterface::SetAttribute_wchar_t_const____ptr64__wchar_t_const____ptr64____ptr64]
mov r8, rdi
mov rdx, rbx
call fcn.14004c4c0
lea rcx, [rbp - 0x68]
call qword [sym.imp.SetupXML.dll_public:_long_int___cdecl_CXMLFileManagerInterface::CounterNext_void____ptr64]
test eax, eax
jne 0x14004ba30
jmp 0x14004bc05
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, 0x642
cmp eax, 0x4d3
cmove eax, ecx
mov esi, eax
mov rax, qword [r15]
test rax, rax
je 0x14004bc1f
mov r8d, esi
lea rdx, [0x14029709c]
mov ecx, 0x94000000
call rax
nop
lea rcx, [rbp + 0xa8]
call fcn.14007112c
nop
mov rdx, qword [rsp + 0x68]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004bc46
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004bc60
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004bc7a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp - 0x38]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004bc93
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004bcad
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004bcc7
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004bce1
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rbp + 0x58]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14004bcfa
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov qword [rsp + 0x70], r13
mov qword [rsp + 0x78], r12
lea rcx, [rsp + 0x78]
call qword [sym.imp.SetupXML.dll_public_virtual:_void___cdecl_CXMLFileManagerInterface::destructor_void____ptr64]
nop
lea rax, vtable.CUtlXIca.0
mov qword [rbp], rax
mov qword [rbp + 0x20], r13
mov qword [rbp + 0x28], r12
lea rcx, [rbp + 0x28]
call qword [sym.imp.SetupXML.dll_public_virtual:_void___cdecl_CXMLFileManagerInterface::destructor_void____ptr64]
nop
mov qword [rbp], r12
lea rcx, [rbp]
call qword [sym.imp.SetupXML.dll_public_virtual:_void___cdecl_CXMLFileManagerInterface::destructor_void____ptr64]
nop
mov qword [rbp - 0x68], r12
lea rcx, [rbp - 0x68]
call qword [sym.imp.SetupXML.dll_public_virtual:_void___cdecl_CXMLFileManagerInterface::destructor_void____ptr64]
mov eax, esi
mov rcx, qword [rbp + 0x310]
xor rcx, rsp
call fcn.1401f3080
lea r11, [rsp + 0x420]
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