Function at 0x1402c1688
Capabilities:
Check if file exists

Disassembly:
mov rax, rsp
mov qword [rax + 0x20], r9
mov qword [rax + 0x18], r8
mov qword [rax + 8], rcx
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x110
mov qword [rsp + 0x100], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov r13, r9
mov rdi, rdx
mov r14, rcx
lea rcx, section..data
mov rax, qword [section..data]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x38], rax
mov rax, qword [rdi]
mov qword [rsp + 0xf0], rax
lea rcx, [rsp + 0xf0]
mov qword [rsp + 0xa8], rcx
mov rax, qword [rdi + 8]
mov qword [rsp + 0xe0], rax
lea rax, [rsp + 0xe0]
mov qword [rsp + 0x90], rax
mov r15b, 1
lea rdi, vtable.CppSQLite3DB.0
or r12, 0xffffffffffffffff
test r15b, r15b
je 0x1402c1eec
mov rdx, qword [rcx]
cmp rdx, qword [rax]
je 0x1402c1eec
xor r15b, r15b
mov byte [rsp + 0x20], r15b
lea rcx, [rsp + 0x38]
call fcn.14000c244
test r15b, r15b
jne 0x1402c1ed3
mov rbx, qword [rsp + 0x38]
mov rdx, rbx
lea rcx, [rsp + 0x40]
call fcn.14000cb18
nop
lea rdx, str.extensions.sqlite
lea rcx, [rsp + 0x40]
call fcn.14000f884
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x1402c1e68
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x10]
test al, al
jne 0x1402c1e68
lea rcx, section..data
mov rax, qword [section..data]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x58], rax
lea rcx, section..data
mov rax, qword [section..data]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x50], rax
lea r8, [rsp + 0x50]
lea rdx, [rsp + 0x58]
mov rcx, rbx
call fcn.14022d344
mov rdx, rbx
lea rcx, [rsp + 0x48]
call fcn.14022cff4
nop
mov rax, qword [rsp + 0x150]
mov qword [r14 + 0x28], rax
mov qword [r14 + 0x30], r13
mov qword [rsp + 0xc0], rdi
and qword [rsp + 0xc8], 0
mov dword [rsp + 0xd0], 0x32
mov rdx, qword [rsp + 0x40]
lea rcx, [rsp + 0xc0]
call fcn.1401a9e20
lea rdx, str.Select_addon.id__locale.name__locale.description__addon.active__addon.userDisabled__addon.appDisabled__locale.creator__addon.type__addon.defaultLocale__addon.descriptor__addon.location__addon.version__addon.pendingUninstall__addon.installDate__addon.updateDate_t_t_t_t_t_t_t_t_tFrom_addon_Inner_Join_locale_On_addon.defaultLocale__locale.id_t_t_t_t_t_t_t_t_tWhere_addon.type__extension
lea rcx, [rsp + 0x88]
call fcn.14000cb18
nop
mov r8, qword [rsp + 0x88]
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0xc0]
call fcn.1401aa200
nop
lea rcx, [rsp + 0x60]
call fcn.1401a94e0
cmp byte [rsp + 0x78], 0
jne 0x1402c1d9b
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x10]
test al, al
jne 0x1402c1d9b
xor r8d, r8d
lea rdx, str.pendingUninstall
lea rcx, [rsp + 0x60]
call fcn.1401a9ab0
cmp eax, 1
sete al
test al, al
jne 0x1402c1d80
lea rdx, str.descriptor
lea rcx, [rsp + 0x60]
call fcn.1401a9b20
mov rdx, rax
lea rcx, [rsp + 0xa0]
call fcn.14000cb18
nop
mov ecx, 0xa8
call fcn.1400be454
test rax, rax
je 0x1402c18df
mov rcx, rax
call fcn.140090f38
mov r13, rax
jmp 0x1402c18e2
xor r13d, r13d
mov qword [rsp + 0x28], r13
and qword [rsp + 0x30], 0
mov rdx, r13
lea rcx, [rsp + 0xd8]
call fcn.1400916a8
mov rdx, qword [rsp + 0x30]
mov rcx, qword [rax]
mov qword [rsp + 0x30], rcx
mov qword [rax], rdx
mov rdi, qword [rsp + 0xd8]
test rdi, rdi
je 0x1402c194b
mov eax, r12d
lock xadd dword [rdi + 8], eax
add eax, r12d
jne 0x1402c1946
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, r12d
lock xadd dword [rdi + 0xc], eax
add eax, r12d
jne 0x1402c1946
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x10]
mov rbx, qword [rsp + 0x38]
mov r8, r13
mov rdx, r13
lea rcx, [rsp + 0x28]
call fcn.1400020a0
nop
mov r13, qword [rsp + 0x28]
lea rdx, [0x140362054]
lea rcx, [rsp + 0x60]
call fcn.1401a9b20
mov rdx, rax
test rax, rax
jne 0x1402c197e
xor ecx, ecx
jmp 0x1402c198f
xor eax, eax
mov rcx, r12
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
dec rcx
mov r8d, ecx
mov rcx, r13
call fcn.14000c9f8
mov rdi, qword [rsp + 0x28]
lea rdx, [0x14037c2d8]
lea rcx, [rsp + 0x60]
call fcn.1401a9b20
mov rdx, rax
lea r9, [rdi + 0x10]
test rax, rax
jne 0x1402c19c0
xor ecx, ecx
jmp 0x1402c19d1
xor eax, eax
mov rcx, r12
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
dec rcx
mov r8d, ecx
mov rcx, r9
call fcn.14000c9f8
mov rdi, qword [rsp + 0x28]
lea rdx, [0x14037c2e8]
lea rcx, [rsp + 0x60]
call fcn.1401a9b20
mov rdx, rax
lea r9, [rdi + 0x20]
test rax, rax
jne 0x1402c1a02
xor ecx, ecx
jmp 0x1402c1a13
xor eax, eax
mov rcx, r12
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
dec rcx
mov r8d, ecx
mov rcx, r9
call fcn.14000c9f8
mov rdi, qword [rsp + 0x28]
xor r8d, r8d
lea rdx, str.userDisabled
lea rcx, [rsp + 0x60]
call fcn.1401a9ab0
cmp eax, 1
setne al
mov byte [rdi + 0x30], al
mov rdi, qword [rsp + 0x28]
xor r8d, r8d
lea rdx, str.appDisabled
lea rcx, [rsp + 0x60]
call fcn.1401a9ab0
test eax, eax
setne al
mov byte [rdi + 0x33], al
mov rdi, qword [rsp + 0x28]
cmp byte [rdi + 0x33], 0
je 0x1402c1a75
mov byte [rdi + 0x30], 0
mov rdi, qword [rsp + 0x28]
lea rdx, str.creator
lea rcx, [rsp + 0x60]
call fcn.1401a9b20
mov rdx, rax
lea r9, [rdi + 0x28]
test rax, rax
jne 0x1402c1a96
xor ecx, ecx
jmp 0x1402c1aa7
xor eax, eax
mov rcx, r12
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
dec rcx
mov r8d, ecx
mov rcx, r9
call fcn.14000c9f8
mov rax, qword [rsp + 0x28]
mov dword [rax + 8], 0x10000
mov rcx, qword [rsp + 0x28]
add rcx, 0x40
lea rdx, [rsp + 0x40]
call fcn.14000c244
mov rcx, qword [rsp + 0x28]
add rcx, 0x38
lea rdx, [rsp + 0xa0]
call fcn.14000c244
mov edx, 0x2e
mov rcx, rbx
call fcn.1400c3734
test rax, rax
je 0x1402c1b51
sub rax, rbx
sar rax, 1
cmp eax, r12d
jle 0x1402c1b51
lea r8d, [rax + 1]
lea rdx, [rsp + 0xf8]
lea rcx, [rsp + 0x38]
call fcn.14000b630
nop
mov rcx, qword [rsp + 0x28]
add rcx, 0x48
mov rdx, rax
call fcn.14000c244
nop
mov rdx, qword [rsp + 0xf8]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, r12d
test eax, eax
jg 0x1402c1b51
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, str.location
lea rcx, [rsp + 0x60]
call fcn.1401a9b20
mov rdx, rax
lea rcx, [rsp + 0x98]
call fcn.14000cb18
nop
mov rdi, qword [rsp + 0x28]
lea r8, [rdi + 0x38]
lea rdx, [rsp + 0x38]
lea rcx, [rsp + 0x98]
call fcn.1402c0f68
mov byte [rdi + 0x31], al
lea rdx, str.installDate
lea rcx, [rsp + 0x60]
call fcn.1401a9b20
mov rdx, rax
lea rcx, [rsp + 0xb0]
call fcn.14000cb18
nop
mov rcx, qword [rsp + 0xb0]
call fcn.1400bead8
mov rdi, rax
lea rdx, str.updateDate
lea rcx, [rsp + 0x60]
call fcn.1401a9b20
mov rdx, rax
lea rcx, [rsp + 0xb8]
call fcn.14000cb18
nop
mov rcx, qword [rsp + 0xb8]
call fcn.1400bead8
cmp rdi, rax
cmovg rax, rdi
mov rcx, qword [rsp + 0x28]
mov qword [rcx + 0x50], rax
mov rcx, qword [rsp + 0x28]
mov rax, qword [rcx + 0x28]
cmp dword [rax - 0x10], 0
jne 0x1402c1c62
mov r8, rcx
lea rdx, [rsp + 0x38]
lea rcx, [rsp + 0xe8]
call fcn.1402c0ff8
nop
mov rcx, qword [rsp + 0x28]
add rcx, 0x28
mov rdx, rax
call fcn.14000c244
nop
mov rdx, qword [rsp + 0xe8]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, r12d
test eax, eax
jg 0x1402c1c5d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rcx, qword [rsp + 0x28]
add rcx, 0x68
lea rdx, [rsp + 0x58]
call fcn.14000c244
mov rcx, qword [rsp + 0x28]
add rcx, 0x70
lea rdx, [rsp + 0x50]
call fcn.14000c244
mov rax, qword [rsp + 0x48]
cmp dword [rax - 0x10], 0
je 0x1402c1ca1
mov rcx, qword [rsp + 0x28]
add rcx, 0x48
lea rdx, [rsp + 0x48]
call fcn.14000c244
lea rcx, [r14 + 0x20]
mov rax, qword [rcx]
lea rdx, [rsp + 0x28]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xb8]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, r12d
test eax, eax
jg 0x1402c1cd6
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xb0]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, r12d
test eax, eax
jg 0x1402c1cfb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x98]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, r12d
test eax, eax
jg 0x1402c1d20
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdi, qword [rsp + 0x30]
test rdi, rdi
je 0x1402c1d57
mov eax, r12d
lock xadd dword [rdi + 8], eax
add eax, r12d
jne 0x1402c1d57
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, r12d
lock xadd dword [rdi + 0xc], eax
add eax, r12d
jne 0x1402c1d57
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x10]
nop
mov rdx, qword [rsp + 0xa0]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, r12d
test eax, eax
jg 0x1402c1d7b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rsp + 0x38]
lea rcx, [rsp + 0x60]
call fcn.1401aa0c0
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x10]
test al, al
je 0x1402c1859
lea rcx, [rsp + 0x60]
call fcn.1401a9f00
nop
mov rdx, qword [rsp + 0x88]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, r12d
test eax, eax
jg 0x1402c1dcb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
jmp 0x1402c1dde
lea rdi, vtable.CppSQLite3DB.0
mov qword [rsp + 0xc0], rdi
lea rcx, [rsp + 0xc0]
call fcn.1401a9d90
nop
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, r12d
test eax, eax
jg 0x1402c1e1d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, r12d
test eax, eax
jg 0x1402c1e3f
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, r12d
test eax, eax
jg 0x1402c1e60
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov r13, qword [rsp + 0x158]
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x10]
test al, al
je 0x1402c1ea5
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, r12d
test eax, eax
jg 0x1402c1e96
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test r15b, r15b
jne 0x1402c1ed3
mov rcx, qword [rsp + 0xa8]
jmp 0x1402c1edf
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, r12d
test eax, eax
jg 0x1402c1ec6
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov r15b, 1
mov byte [rsp + 0x20], r15b
jmp 0x1402c1746
mov rcx, qword [rsp + 0xa8]
add qword [rcx], 8
mov rax, qword [rsp + 0x90]
jmp 0x1402c171f
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, r12d
lock xadd dword [rdx + 0x10], eax
add eax, r12d
test eax, eax
jg 0x1402c1f0d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rsp + 0x148]
add rsp, 0x110
pop r15
pop r14
pop r13
pop r12
pop rdi
ret
mov r9, r8
add rcx, 0xffffffffffffffe8
xor r8d, r8d
jmp 0x1402c1688