Function at 0x180052d70
Capabilities:
Check if file exists

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
sub rsp, 0xac0
mov qword [rsp + 0x48], 0xfffffffffffffffe
mov qword [rsp + 0xaf8], rbx
mov rax, qword [0x18010e350]
xor rax, rsp
mov qword [rsp + 0xab0], rax
mov r13, r9
mov rbx, r8
mov edi, edx
mov rbp, rcx
mov byte [rcx + 0x20], 0
mov rcx, qword [rcx + 0x28]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
xor r12d, r12d
mov qword [rbp + 0x28], r12
mov qword [rsp + 0x20], r12
cmp byte [rsp + 0xb10], r12b
je 0x180052e30
mov r9b, 1
mov r8d, 0x410
lea rdx, str.ACB3FAA1_462D_475C_AC34_B1BD33673C0D
lea rcx, [rsp + 0x50]
call fcn.180024380
nop
lea rcx, [rsp + 0x50]
call fcn.18001cfa0
mov rsi, rax
test rax, rax
je 0x180052e24
xor ecx, ecx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rcx, rsi
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov qword [rsp + 0x20], rax
test rax, rax
jne 0x180052e24
mov ecx, 0x8007000e
call fcn.1800012c4
nop
lea rcx, [rsp + 0x50]
call fcn.180021010
jmp 0x180052e8c
mov word [rsp + 0x490], 0
xor edx, edx
mov r8d, 0x616
lea rcx, [rsp + 0x492]
call fcn.180086e90
mov edx, 0x30c
lea rcx, [rsp + 0x490]
call fcn.180021270
xor ecx, ecx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
lea rcx, [rsp + 0x490]
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov qword [rsp + 0x20], rax
test rax, rax
jne 0x180052e8c
mov ecx, 0x8007000e
call fcn.1800012c4
int3
lea rcx, [0x1800dd748]
call qword [sym.imp.KERNEL32.dll_lstrlenW]
mov r8d, eax
lea rdx, [0x1800dd748]
lea rcx, [rsp + 0x20]
call fcn.18004a4c0
test eax, eax
jns 0x180052eb9
mov ecx, eax
call fcn.1800012c4
int3
sub edi, 1
je 0x180052fe4
sub edi, 1
je 0x180052f87
sub edi, 4
je 0x180052f1e
cmp edi, 1
je 0x180052eed
mov rcx, qword [rsp + 0x20]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rdi, r12
mov qword [rsp + 0x20], r12
jmp 0x180053016
lea rcx, str.System
call qword [sym.imp.KERNEL32.dll_lstrlenW]
mov r8d, eax
lea rdx, str.System
lea rcx, [rsp + 0x20]
call fcn.18004a4c0
test eax, eax
jns 0x180053011
mov ecx, eax
call fcn.1800012c4
int3
lea rcx, str.DLPSettings
call qword [sym.imp.KERNEL32.dll_lstrlenW]
mov r8d, eax
lea rdx, str.DLPSettings
lea rcx, [rsp + 0x20]
call fcn.18004a4c0
test eax, eax
jns 0x180052f4b
mov ecx, eax
call fcn.1800012c4
int3
test rbx, rbx
je 0x180053011
cmp word [rbx], 0
je 0x180053011
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_lstrlenW]
mov r8d, eax
mov rdx, rbx
lea rcx, [rsp + 0x20]
call fcn.18004a4c0
test eax, eax
jns 0x180053011
mov ecx, eax
call fcn.1800012c4
int3
lea rcx, str.Settings
call qword [sym.imp.KERNEL32.dll_lstrlenW]
mov r8d, eax
lea rdx, str.Settings
lea rcx, [rsp + 0x20]
call fcn.18004a4c0
test eax, eax
jns 0x180052fb4
mov ecx, eax
call fcn.1800012c4
int3
test rbx, rbx
je 0x180053011
cmp word [rbx], 0
je 0x180053011
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_lstrlenW]
mov r8d, eax
mov rdx, rbx
lea rcx, [rsp + 0x20]
call fcn.18004a4c0
test eax, eax
jns 0x180053011
mov ecx, eax
call fcn.1800012c4
int3
lea rcx, str.Config
call qword [sym.imp.KERNEL32.dll_lstrlenW]
mov r8d, eax
lea rdx, str.Config
lea rcx, [rsp + 0x20]
call fcn.18004a4c0
test eax, eax
jns 0x180053011
mov ecx, eax
call fcn.1800012c4
int3
mov rdi, qword [rsp + 0x20]
mov rcx, rdi
call qword [sym.imp.OLEAUT32.dll_VariantInit]
test eax, eax
je 0x1800532d8
lea rcx, str..dat
call qword [sym.imp.KERNEL32.dll_lstrlenW]
mov r8d, eax
lea rdx, str..dat
lea rcx, [rsp + 0x20]
call fcn.18004a4c0
test eax, eax
jns 0x180053054
mov ecx, eax
call fcn.1800012c4
int3
lea rcx, [0x18010e058]
mov rax, qword [0x18010e058]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x28], rax
or rsi, 0xffffffffffffffff
test r13, r13
je 0x18005308a
mov rdx, r13
mov rcx, rbp
call fcn.18005f060
mov byte [rbp + 0x20], al
jmp 0x1800532ae
call qword [0x18010e050]
mov word [rsp + 0x80], 0
xor edx, edx
mov r8d, 0x40e
lea rcx, [rsp + 0x82]
call fcn.180086e90
mov rbx, qword [rsp + 0x20]
test rbx, rbx
je 0x180053104
cmp word [rbx], 0
je 0x180053104
mov r8, rbx
lea rdx, str.lpszFile___s_r_n
lea rcx, [rsp + 0x28]
call fcn.18000acf4
mov r9, rsi
mov r8, rbx
mov edx, 0x207
lea rcx, [rsp + 0x80]
call fcn.180088050
lea r8, [rsp + 0x80]
lea rdx, str.szFile___s_r_n
lea rcx, [rsp + 0x28]
call fcn.18000acf4
lea rcx, [rsp + 0x80]
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x180053141
mov edx, 0x208
lea rcx, [rsp + 0x80]
call fcn.18004a370
lea r8, [rsp + 0x80]
lea rdx, str.szFile__converted____s_r_n
lea rcx, [rsp + 0x28]
call fcn.18000acf4
lea rcx, [rsp + 0x80]
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x180053286
xor eax, eax
mov rcx, rsi
lea rdi, str.PathFileExists__true_r_n
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, str.PathFileExists__true_r_n
lea rcx, [rsp + 0x28]
call fcn.18000f954
lea rdx, [rsp + 0x80]
lea rcx, [rsp + 0x30]
call fcn.180020c80
nop
lea rcx, [rsp + 0x30]
call fcn.18001cb70
test al, al
je 0x18005327a
xor eax, eax
mov rcx, rsi
lea rdi, str.lock.LockRead____true_r_n
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, str.lock.LockRead____true_r_n
lea rcx, [rsp + 0x28]
call fcn.18000f954
lea rdx, [rsp + 0x80]
mov rcx, rbp
call fcn.18005f0c0
test eax, eax
setns al
mov byte [rbp + 0x20], al
test al, al
je 0x180053248
lea rax, [rsp + 0x80]
cmp rax, rbx
je 0x18005321f
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
lea rcx, [rsp + 0x80]
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov qword [rsp + 0x20], rax
test rax, rax
jne 0x18005321f
mov ecx, 0x8007000e
call fcn.1800012c4
int3
xor eax, eax
mov rcx, rsi
lea rdi, str.m_bIsXmlLoaded__true_r_n
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, str.m_bIsXmlLoaded__true_r_n
lea rcx, [rsp + 0x28]
call fcn.18000f954
jmp 0x18005326f
xor eax, eax
mov rcx, rsi
lea rdi, str.m_bIsXmlLoaded__false_r_n
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, str.m_bIsXmlLoaded__false_r_n
lea rcx, [rsp + 0x28]
call fcn.18000f954
lea rcx, [rsp + 0x30]
call fcn.18001cbd0
nop
lea rcx, [rsp + 0x30]
call fcn.180020f90
jmp 0x1800532ae
xor eax, eax
mov rcx, rsi
lea rdi, str.PathFileExists__false_r_n
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, str.PathFileExists__false_r_n
lea rcx, [rsp + 0x28]
call fcn.18000f954
nop
mov rdx, qword [rsp + 0x28]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
add esi, 0xffffffff
test esi, esi
jg 0x1800532d3
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdi, qword [rsp + 0x20]
jmp 0x1800532d8
mov rdi, qword [rsp + 0x20]
cmp byte [rbp + 0x20], 0
je 0x180053322
mov rcx, qword [rbp + 0x28]
cmp rcx, rdi
je 0x180053322
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
test rdi, rdi
je 0x180053309
mov rcx, rdi
call qword [sym.imp.OLEAUT32.dll_SysAllocStringByteLen]
mov edx, eax
mov rcx, rdi
call qword [sym.imp.OLEAUT32.dll_DllRegisterServer]
mov r12, rax
mov qword [rbp + 0x28], r12
test rdi, rdi
je 0x180053322
test r12, r12
jne 0x180053322
mov ecx, 0x8007000e
call fcn.1800012c4
int3
movzx ebx, byte [rbp + 0x20]
mov rcx, rdi
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov al, bl
mov rcx, qword [rsp + 0xab0]
xor rcx, rsp
call fcn.180086e60
mov rbx, qword [rsp + 0xaf8]
add rsp, 0xac0
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret