Function at 0x1400b4ac0
Capabilities:
Check if file exists

Disassembly:
mov rax, rsp
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x3f8]
sub rsp, 0x4d0
mov qword [rbp - 0x70], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov rax, qword [0x140398250]
xor rax, rsp
mov qword [rbp + 0x3c0], rax
mov qword [rsp + 0x60], rcx
xor r8d, r8d
lea rdx, str.CBaseInfoCustomDrv::CheckCustomFolder
lea rcx, [rbp - 0x80]
call fcn.1400075a0
nop
xor r15d, r15d
mov r14d, r15d
mov dword [rsp + 0x34], r15d
mov word [rbp - 0x60], r15w
xor edx, edx
mov r8d, 0x206
lea rcx, [rbp - 0x5e]
call fcn.14024b970
xor edx, edx
mov qword [rsp + 0x48], rdx
mov rcx, qword [0x1403b9750]
mov rax, qword [rcx]
call qword [rax + 0x50]
mov rdi, qword [rax]
mov r8d, 0x104
lea rdx, [rbp - 0x60]
mov rcx, rax
call qword [rdi + 0xe8]
mov rcx, qword [0x1403b9750]
mov rax, qword [rcx]
call qword [rax + 0x50]
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0xd0]
mov rcx, qword [0x1403b9750]
test eax, eax
mov rax, qword [rcx]
je 0x1400b4bb3
call qword [rax + 0x20]
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + VarBstrFromDisp]
mov qword [rsp + 0x40], rax
mov rcx, qword [0x1403b9750]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x60]
jmp 0x1400b4bda
call qword [rax + 0x20]
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x60]
mov qword [rsp + 0x40], rax
mov rcx, qword [0x1403b9750]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + VarBstrFromDisp]
mov qword [rsp + 0x48], rax
mov esi, r15d
mov dword [rsp + 0x30], r15d
mov r12, r15
mov qword [rsp + 0x38], r15
nop
mov r13, qword [rsp + r12*8 + 0x40]
test r13, r13
je 0x1400b5387
call fcn.140102a14
mov rdx, rax
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
je 0x1400b5427
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x20], rbx
lea rcx, [rbp - 0x60]
lea rax, [rbp - 0x60]
test rax, 0xffffffffffff0000
jne 0x1400b4c66
movzx edi, cx
mov ecx, edi
call fcn.1401027e8
test rax, rax
je 0x1400b4d4c
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x20]
call fcn.140005b00
mov rbx, qword [rsp + 0x20]
jmp 0x1400b4d4c
xor eax, eax
or rcx, 0xffffffffffffffff
lea rdi, [rbp - 0x60]
repne scasw ax, word [rdi]
not rcx
dec rcx
mov rdi, rcx
test ecx, ecx
jne 0x1400b4cd6
lea rdx, [rbx - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], eax
je 0x1400b4d4c
cmp dword [rdx + 0x10], eax
jge 0x1400b4cab
cmp dword [rbx - 0xc], eax
jl 0x1400b53a3
mov dword [rbx - 0x10], r15d
mov word [rbx], r15w
jmp 0x1400b4d4c
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b4cc2
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x20], rbx
jmp 0x1400b4d4c
mov r12d, dword [rbx - 0x10]
lea rsi, [rbp - 0x60]
sub rsi, rbx
sar rsi, 1
test ecx, ecx
js 0x1400b541c
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, edi
or eax, ecx
jge 0x1400b4d0e
mov edx, edi
lea rcx, [rsp + 0x20]
call fcn.140005e40
mov rbx, qword [rsp + 0x20]
movsxd rax, edi
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
add rdx, rdx
cmp rsi, r12
lea r12, [rax + rax]
mov r9, r12
ja 0x1400b4d32
lea r8, [rbx + rsi*2]
call fcn.1402457b4
jmp 0x1400b4d3b
lea r8, [rbp - 0x60]
call fcn.1402471ac
cmp edi, dword [rbx - 0xc]
jg 0x1400b5411
mov dword [rbx - 0x10], edi
mov word [r12 + rbx], r15w
call fcn.140102a14
mov rdx, rax
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
je 0x1400b5406
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x28], rax
test r13, 0xffffffffffff0000
jne 0x1400b4da2
movzx edi, r13w
mov ecx, edi
call fcn.1401027e8
test rax, rax
je 0x1400b4dc3
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x28]
call fcn.140005b00
jmp 0x1400b4dc3
xor eax, eax
or rcx, 0xffffffffffffffff
mov rdi, r13
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
mov rdx, r13
lea rcx, [rsp + 0x28]
call fcn.140005d50
nop
mov word [rbp + 0x1b0], r15w
xor edx, edx
mov r8d, 0x206
lea rcx, [rbp + 0x1b2]
call fcn.14024b970
mov edx, 0x5c
mov rcx, rbx
call fcn.140249468
test rax, rax
jne 0x1400b4df6
or eax, 0xffffffff
jmp 0x1400b4dfc
sub rax, rbx
sar rax, 1
mov r8d, eax
lea rdx, [rsp + 0x70]
lea rcx, [rsp + 0x20]
call fcn.14000d770
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
add rbx, 0xffffffffffffffe8
cmp rcx, rbx
je 0x1400b4e69
cmp dword [rbx + 0x10], 0
jl 0x1400b4e5a
mov rax, qword [rbx]
cmp qword [rcx], rax
jne 0x1400b4e5a
call fcn.140006190
mov rdi, rax
or eax, 0xffffffff
lock xadd dword [rbx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b4e4f
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 + 0x20], rax
jmp 0x1400b4e69
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x20]
call fcn.140005d50
nop
mov rdx, qword [rsp + 0x70]
add rdx, 0xffffffffffffffe8
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b4e90
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop dword [rax]
mov rbx, qword [rsp + 0x28]
cmp dword [rbx - 0x10], 0
jl 0x1400b51a9
lea rdx, [0x1402f5b20]
mov rcx, rbx
call fcn.140245e24
test rax, rax
je 0x1400b51a9
sub rax, rbx
sar rax, 1
test eax, eax
jne 0x1400b51a9
lea edx, [rax + 0x5c]
mov rdi, qword [rsp + 0x20]
mov rcx, rdi
call fcn.140249468
test rax, rax
jne 0x1400b4edf
or eax, 0xffffffff
jmp 0x1400b4ee5
sub rax, rdi
sar rax, 1
mov r8d, eax
lea rdx, [rsp + 0x78]
lea rcx, [rsp + 0x20]
call fcn.14000d770
nop
mov r14, qword [rax]
lea rcx, [r14 - 0x18]
lea rsi, [rdi - 0x18]
cmp rcx, rsi
je 0x1400b5031
cmp dword [rsi + 0x10], 0
jl 0x1400b4f4a
mov rax, qword [rsi]
cmp qword [rcx], rax
jne 0x1400b4f4a
call fcn.140006190
mov rdi, rax
or eax, 0xffffffff
lock xadd dword [rsi + 0x10], eax
dec eax
test eax, eax
jg 0x1400b4f3c
mov rcx, qword [rsi]
mov rax, qword [rcx]
mov rdx, rsi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rdi + 0x18]
mov qword [rsp + 0x20], rax
jmp 0x1400b5031
movsxd r12, dword [r14 - 0x10]
test r12d, r12d
jne 0x1400b4faf
mov r12, qword [rsi]
cmp dword [rsi + 8], 0
je 0x1400b5031
cmp dword [rsi + 0x10], 0
jge 0x1400b4f7d
cmp dword [rdi - 0xc], 0
jl 0x1400b53ae
mov dword [rdi - 0x10], r15d
mov word [rdi], r15w
jmp 0x1400b5031
or eax, 0xffffffff
lock xadd dword [rsi + 0x10], eax
dec eax
test eax, eax
jg 0x1400b4f97
mov rcx, qword [rsi]
mov rax, qword [rcx]
mov rdx, rsi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [r12]
mov rcx, r12
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x20], rax
jmp 0x1400b5031
test r14, r14
je 0x1400b53cf
mov r15d, dword [rdi - 0x10]
mov r13, r14
sub r13, rdi
sar r13, 1
test r12d, r12d
js 0x1400b53c4
mov ecx, 1
sub ecx, dword [rsi + 0x10]
mov eax, dword [rsi + 0xc]
sub eax, r12d
or eax, ecx
jge 0x1400b4ff2
mov edx, r12d
lea rcx, [rsp + 0x20]
call fcn.140005e40
mov rdi, qword [rsp + 0x20]
lea rsi, [r12 + r12]
movsxd rdx, dword [rdi - 0xc]
mov rcx, rdi
mov r9, rsi
add rdx, rdx
cmp r13, r15
ja 0x1400b5013
lea r8, [rdi + r13*2]
call fcn.1402457b4
jmp 0x1400b501b
mov r8, r14
call fcn.1402471ac
cmp r12d, dword [rdi - 0xc]
jg 0x1400b53b9
mov dword [rdi - 0x10], r12d
xor r15d, r15d
mov word [rsi + rdi], r15w
mov rdx, qword [rsp + 0x78]
add rdx, 0xffffffffffffffe8
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b5051
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov r8d, 3
lea rdx, [rsp + 0x50]
lea rcx, [rsp + 0x28]
call fcn.1400475a0
nop
mov r13, qword [rax]
lea rcx, [r13 - 0x18]
mov rdi, qword [rsp + 0x28]
lea rsi, [rdi - 0x18]
cmp rcx, rsi
je 0x1400b519f
cmp dword [rsi + 0x10], 0
jl 0x1400b50be
mov rax, qword [rsi]
cmp qword [rcx], rax
jne 0x1400b50be
call fcn.140006190
mov rdi, rax
or eax, 0xffffffff
lock xadd dword [rsi + 0x10], eax
dec eax
test eax, eax
jg 0x1400b50b0
mov rcx, qword [rsi]
mov rax, qword [rcx]
mov rdx, rsi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rdi + 0x18]
mov qword [rsp + 0x28], rax
jmp 0x1400b519f
movsxd r12, dword [r13 - 0x10]
test r12d, r12d
jne 0x1400b5120
mov r12, qword [rsi]
cmp dword [rsi + 8], 0
je 0x1400b519f
cmp dword [rsi + 0x10], 0
jge 0x1400b50f1
cmp dword [rdi - 0xc], 0
jl 0x1400b53da
mov dword [rbx - 0x10], r15d
mov word [rdi], r15w
jmp 0x1400b519f
or eax, 0xffffffff
lock xadd dword [rsi + 0x10], eax
dec eax
test eax, eax
jg 0x1400b510b
mov rcx, qword [rsi]
mov rax, qword [rcx]
mov rdx, rsi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [r12]
mov rcx, r12
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x28], rax
jmp 0x1400b519f
test r13, r13
je 0x1400b53fb
mov r14d, dword [rbx - 0x10]
mov rbx, r13
sub rbx, rdi
sar rbx, 1
test r12d, r12d
js 0x1400b53f0
mov ecx, 1
sub ecx, dword [rsi + 0x10]
mov eax, dword [rsi + 0xc]
sub eax, r12d
or eax, ecx
jge 0x1400b5163
mov edx, r12d
lea rcx, [rsp + 0x28]
call fcn.140005e40
mov rdi, qword [rsp + 0x28]
lea rsi, [r12 + r12]
movsxd rdx, dword [rdi - 0xc]
mov rcx, rdi
mov r9, rsi
add rdx, rdx
cmp rbx, r14
ja 0x1400b5184
lea r8, [rdi + rbx*2]
call fcn.1402457b4
jmp 0x1400b518c
mov r8, r13
call fcn.1402471ac
cmp r12d, dword [rdi - 0xc]
jg 0x1400b53e5
mov dword [rdi - 0x10], r12d
mov word [rsi + rdi], r15w
mov rdx, qword [rsp + 0x50]
jmp 0x1400b4e6e
lea r8, [rsp + 0x28]
lea rdx, [0x1402e5094]
lea rcx, [rsp + 0x68]
call fcn.14000d810
nop
mov rdx, qword [rax]
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x20]
call fcn.140005f90
nop
mov rdx, qword [rsp + 0x68]
add rdx, 0xffffffffffffffe8
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b51f2
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov edx, 0x5c
mov rdi, qword [rsp + 0x20]
mov rcx, rdi
call fcn.140249468
test rax, rax
jne 0x1400b520e
or eax, 0xffffffff
jmp 0x1400b5214
sub rax, rdi
sar rax, 1
mov r8d, eax
lea rdx, [rsp + 0x58]
lea rcx, [rsp + 0x20]
call fcn.14000d770
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x1400b5281
cmp dword [rdi + 0x10], 0
jl 0x1400b5272
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x1400b5272
call fcn.140006190
mov rbx, rax
or eax, 0xffffffff
lock xadd dword [rdi + 0x10], eax
dec eax
test eax, eax
jg 0x1400b5267
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbx + 0x18]
mov qword [rsp + 0x20], rax
jmp 0x1400b5281
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x20]
call fcn.140005d50
nop
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b52a1
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov r8d, 7
lea rdx, str.Custom
lea rcx, [rsp + 0x20]
call fcn.140005f90
mov rdx, qword [rsp + 0x20]
lea rcx, [rbp + 0x1b0]
call qword [sym.imp.KERNEL32.dll_lstrcpyW]
lea rcx, [rbp + 0x1b0]
call qword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
lea rcx, [rbp + 0x1b0]
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x1400b5338
xor eax, eax
or rcx, 0xffffffffffffffff
lea rdi, [rbp + 0x1b0]
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
movsxd rsi, dword [rsp + 0x30]
lea rax, [rsi + rsi*4 + 0x28]
mov r15, qword [rsp + 0x60]
lea rcx, [r15 + rax*8]
lea rdx, [rbp + 0x1b0]
call fcn.140001f40
mov r14d, dword [rsp + 0x34]
test esi, esi
mov eax, 1
cmove r14d, eax
mov dword [rsp + 0x34], r14d
xor r15d, r15d
jmp 0x1400b5341
mov esi, dword [rsp + 0x30]
mov r14d, dword [rsp + 0x34]
mov rdx, qword [rsp + 0x28]
add rdx, 0xffffffffffffffe8
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b5362
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x20]
add rdx, 0xffffffffffffffe8
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400b5382
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov r12, qword [rsp + 0x38]
inc esi
mov dword [rsp + 0x30], esi
inc r12
mov qword [rsp + 0x38], r12
cmp esi, 2
jge 0x1400b5432
jmp 0x1400b4bf0
mov ecx, 0x80070057
call fcn.140005210
nop
mov ecx, 0x80070057
call fcn.140005210
int3
mov ecx, 0x80070057
call fcn.140005210
int3
mov ecx, 0x80070057
call fcn.140005210
int3
mov ecx, 0x80070057
call fcn.140005210
nop
mov ecx, 0x80070057
call fcn.140005210
int3
mov ecx, 0x80070057
call fcn.140005210
int3
mov ecx, 0x80070057
call fcn.140005210
int3
mov ecx, 0x80070057
call fcn.140005210
nop
mov ecx, 0x80004005
call fcn.140005210
nop
mov ecx, 0x80070057
call fcn.140005210
int3
mov ecx, 0x80070057
call fcn.140005210
nop
mov ecx, 0x80004005
call fcn.140005210
int3
mov r9d, r14d
lea r8, str.return___08x
mov edx, 2
lea rcx, [rbp - 0x80]
call fcn.140007780
nop
lea rcx, [rbp - 0x80]
call fcn.140007730
mov eax, r14d
mov rcx, qword [rbp + 0x3c0]
xor rcx, rsp
call fcn.140245660
lea r11, [rsp + 0x4d0]
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