Function at 0x14012ae00
Capabilities:
Check if file exists

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x420]
sub rsp, 0x520
mov rax, qword [0x1402a76c0]
xor rax, rsp
mov qword [rbp + 0x410], rax
mov qword [rsp + 0x78], rcx
xor r15d, r15d
mov dword [rsp + 0x30], r15d
lea rdx, str.CBaseInfoCustomDrv::CheckCustomFolder
lea rcx, [rbp - 0x80]
call fcn.14001abe0
nop
lea rax, [0x1402a8360]
mov rcx, qword [0x1402a8360]
cmp rcx, rax
je 0x14012ae9a
test byte [rcx + 0x1c], 1
je 0x14012ae9a
lea r9, [0x1402bbdb0]
cmp qword [0x1402bbdc8], 8
cmovae r9, qword [0x1402bbdb0]
lea edx, [r15 + 0x4f]
lea r8, [0x140261908]
mov rcx, qword [rcx + 0x10]
call fcn.140001ad0
mov r13d, r15d
xor edx, edx
mov r8d, 0x208
lea rcx, [rbp - 0x10]
call fcn.1401e7e40
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp - 0x30], xmm0
mov qword [rbp - 0x20], rax
lea rdx, [rbp - 0x10]
call fcn.1400d96d0
call fcn.14018d2c0
mov rcx, rax
call fcn.14018c0c0
mov ecx, eax
test eax, eax
je 0x14012afa4
sub ecx, 1
je 0x14012af5c
cmp ecx, 1
jne 0x14012b01c
mov rcx, qword [0x1402bbf50]
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x1400136d6.0]
mov rcx, rax
mov rax, qword [rax]
mov rax, qword [rax + 0x38]
call qword [case.0x1400136d6.0]
mov qword [rbp - 0x30], rax
mov rcx, qword [0x1402bbf50]
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x1400136d6.0]
mov rcx, rax
mov rax, qword [rax]
mov rax, qword [rax + 0x28]
call qword [case.0x1400136d6.0]
mov qword [rbp - 0x28], rax
mov rcx, qword [0x1402bbf50]
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x1400136d6.0]
mov rcx, rax
mov rax, qword [rax]
mov rax, qword [rax + 0x30]
jmp 0x14012b012
mov rcx, qword [0x1402bbf50]
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x1400136d6.0]
mov rcx, rax
mov rax, qword [rax]
mov rax, qword [rax + 0x30]
call qword [case.0x1400136d6.0]
mov qword [rbp - 0x30], rax
mov rcx, qword [0x1402bbf50]
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x1400136d6.0]
mov rcx, rax
mov rax, qword [rax]
mov rax, qword [rax + 0x28]
jmp 0x14012afea
mov rcx, qword [0x1402bbf50]
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x1400136d6.0]
mov rcx, rax
mov rax, qword [rax]
mov rax, qword [rax + 0x28]
call qword [case.0x1400136d6.0]
mov qword [rbp - 0x30], rax
mov rcx, qword [0x1402bbf50]
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x1400136d6.0]
mov rcx, rax
mov rax, qword [rax]
mov rax, qword [rax + 0x30]
call qword [case.0x1400136d6.0]
mov qword [rbp - 0x28], rax
mov rcx, qword [0x1402bbf50]
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x1400136d6.0]
mov rcx, rax
mov rax, qword [rax]
mov rax, qword [rax + 0x38]
call qword [case.0x1400136d6.0]
mov qword [rbp - 0x20], rax
mov r12d, r15d
mov rbx, r15
mov qword [rsp + 0x70], rbx
mov edi, 0x5c
nop dword [rax]
mov rbx, qword [rbp + rbx*8 - 0x30]
test rbx, rbx
je 0x14012b8df
call fcn.1401bb0c4
mov rcx, rax
test rax, rax
je 0x14012b9fa
mov rax, qword [rax]
mov rax, qword [rax + 0x18]
call qword [case.0x1400136d6.0]
add rax, 0x18
mov qword [rsp + 0x38], rax
lea rax, [rbp - 0x10]
cmp rax, 0x10000
jae 0x14012b084
lea rax, [rbp - 0x10]
movzx edx, ax
lea rcx, [rsp + 0x38]
call fcn.1400041d0
jmp 0x14012b0ac
lea rcx, [rbp - 0x10]
mov rax, 0xffffffffffffffff
nop
inc rax
cmp word [rcx + rax*2], 0
jne 0x14012b090
mov r8d, eax
lea rdx, [rbp - 0x10]
lea rcx, [rsp + 0x38]
call fcn.140004e60
nop
call fcn.1401bb0c4
mov rcx, rax
test rax, rax
je 0x14012b9ef
mov rax, qword [rax]
mov rax, qword [rax + 0x18]
call qword [case.0x1400136d6.0]
add rax, 0x18
mov qword [rsp + 0x40], rax
cmp rbx, 0x10000
jae 0x14012b0eb
movzx edx, bx
lea rcx, [rsp + 0x40]
call fcn.1400041d0
jmp 0x14012b10d
mov rax, 0xffffffffffffffff
inc rax
cmp word [rbx + rax*2], 0
jne 0x14012b0f2
mov r8d, eax
mov rdx, rbx
lea rcx, [rsp + 0x40]
call fcn.140004e60
nop
xor edx, edx
mov r8d, 0x208
lea rcx, [rbp + 0x200]
call fcn.1401e7e40
mov edx, edi
mov rdi, qword [rsp + 0x38]
mov rcx, rdi
call fcn.1401e768c
test rax, rax
jne 0x14012b13c
mov eax, 0xffffffff
jmp 0x14012b142
sub rax, rdi
sar rax, 1
mov r14d, r15d
test eax, eax
cmovns r14d, eax
cmp r14d, dword [rdi - 0x10]
jl 0x14012b16b
lea rcx, [rdi - 0x18]
call fcn.140004d00
lea rbx, [rax + 0x18]
mov qword [rsp + 0x48], rbx
mov rsi, rbx
jmp 0x14012b20f
mov rcx, qword [rdi - 0x18]
test rcx, rcx
je 0x14012b189
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x1400136d6.0]
mov rcx, rax
test rax, rax
jne 0x14012b1aa
call fcn.1401bb0c4
mov rcx, rax
mov rax, qword [rax]
mov rax, qword [rax + 0x20]
call qword [case.0x1400136d6.0]
mov rcx, rax
test rax, rax
je 0x14012ba2c
lfence
mov rax, qword [rcx]
mov r8d, 2
mov edx, r14d
mov rax, qword [rax]
call qword [case.0x1400136d6.0]
test rax, rax
je 0x14012ba26
lea rbx, [rax + 0x18]
mov rsi, rbx
mov qword [rsp + 0x48], rbx
test r14d, r14d
js 0x14012ba1b
cmp r14d, dword [rbx - 0xc]
jg 0x14012ba1b
mov dword [rbx - 0x10], r14d
movsxd rax, r14d
lea r8, [rax + rax]
mov word [rbx + r8], r15w
mov rdi, qword [rsp + 0x38]
test r8, r8
je 0x14012b20f
mov rdx, rdi
mov rcx, rbx
call fcn.1401e7770
or dword [rsp + 0x30], 4
lea rcx, [rsi - 0x18]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x14012b27e
cmp dword [rdi + 0x10], 0
jl 0x14012b26c
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x14012b26c
call fcn.140004d00
mov rbx, rax
mov eax, 0xffffffff
lock xadd dword [rdi + 0x10], eax
sub eax, 1
jg 0x14012b25c
lfence
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
mov rax, qword [rax + 8]
call qword [case.0x1400136d6.0]
lea rax, [rbx + 0x18]
mov qword [rsp + 0x38], rax
mov rbx, qword [rsp + 0x48]
jmp 0x14012b27e
mov r8d, dword [rsi - 0x10]
mov rdx, rsi
lea rcx, [rsp + 0x38]
call fcn.140004e60
nop
lea rdx, [rbx - 0x18]
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14012b2b0
lfence
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x1400136d6.0]
nop dword [rax]
nop dword [rax + rax]
mov rbx, qword [rsp + 0x40]
cmp dword [rbx - 0x10], 0
jl 0x14012b508
lea rdx, [0x140255530]
mov rcx, rbx
call fcn.1401e7270
test rax, rax
je 0x14012b508
sub rax, rbx
sar rax, 1
test eax, eax
jne 0x14012b508
lea edx, [rax + 0x5c]
mov rdi, qword [rsp + 0x38]
mov rcx, rdi
call fcn.1401e768c
test rax, rax
jne 0x14012b301
mov eax, 0xffffffff
jmp 0x14012b307
sub rax, rdi
sar rax, 1
mov r14d, r15d
test eax, eax
cmovns r14d, eax
cmp r14d, dword [rdi - 0x10]
jl 0x14012b330
lea rcx, [rdi - 0x18]
call fcn.140004d00
lea rbx, [rax + 0x18]
mov qword [rsp + 0x50], rbx
mov rsi, rbx
jmp 0x14012b3d4
mov rcx, qword [rdi - 0x18]
test rcx, rcx
je 0x14012b34e
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x1400136d6.0]
mov rcx, rax
test rax, rax
jne 0x14012b36f
call fcn.1401bb0c4
mov rcx, rax
mov rax, qword [rax]
mov rax, qword [rax + 0x20]
call qword [case.0x1400136d6.0]
mov rcx, rax
test rax, rax
je 0x14012ba2c
lfence
mov rax, qword [rcx]
mov r8d, 2
mov edx, r14d
mov rax, qword [rax]
call qword [case.0x1400136d6.0]
test rax, rax
je 0x14012ba26
lea rbx, [rax + 0x18]
mov rsi, rbx
mov qword [rsp + 0x50], rbx
test r14d, r14d
js 0x14012ba1b
cmp r14d, dword [rbx - 0xc]
jg 0x14012ba1b
mov dword [rbx - 0x10], r14d
movsxd rax, r14d
lea r8, [rax + rax]
mov word [r8 + rbx], r15w
mov rdi, qword [rsp + 0x38]
test r8, r8
je 0x14012b3d4
mov rdx, rdi
mov rcx, rbx
call fcn.1401e7770
or dword [rsp + 0x30], 2
lea rcx, [rsi - 0x18]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x14012b443
cmp dword [rdi + 0x10], 0
jl 0x14012b431
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x14012b431
call fcn.140004d00
mov rbx, rax
mov eax, 0xffffffff
lock xadd dword [rdi + 0x10], eax
sub eax, 1
jg 0x14012b421
lfence
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
mov rax, qword [rax + 8]
call qword [case.0x1400136d6.0]
lea rax, [rbx + 0x18]
mov qword [rsp + 0x38], rax
mov rbx, qword [rsp + 0x50]
jmp 0x14012b443
mov r8d, dword [rsi - 0x10]
mov rdx, rsi
lea rcx, [rsp + 0x38]
call fcn.140004e60
nop
lea rdx, [rbx - 0x18]
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14012b469
lfence
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x1400136d6.0]
mov rbx, qword [rsp + 0x40]
mov r9d, dword [rbx - 0x10]
add r9d, 0xfffffffd
mov r8d, 3
lea rdx, [rsp + 0x58]
lea rcx, [rsp + 0x40]
call fcn.14002eaa0
or dword [rsp + 0x30], 1
mov rdi, qword [rsp + 0x58]
lea rcx, [rdi - 0x18]
add rbx, 0xffffffffffffffe8
cmp rcx, rbx
je 0x14012b4ff
cmp dword [rbx + 0x10], 0
jl 0x14012b4ed
mov rax, qword [rbx]
cmp qword [rcx], rax
jne 0x14012b4ed
call fcn.140004d00
mov rdi, rax
mov eax, 0xffffffff
lock xadd dword [rbx + 0x10], eax
sub eax, 1
jg 0x14012b4dd
lfence
mov rcx, qword [rbx]
mov rax, qword [rcx]
mov rdx, rbx
mov rax, qword [rax + 8]
call qword [case.0x1400136d6.0]
lea rax, [rdi + 0x18]
mov qword [rsp + 0x40], rax
mov rdi, qword [rsp + 0x58]
jmp 0x14012b4ff
mov r8d, dword [rdi - 0x10]
mov rdx, rdi
lea rcx, [rsp + 0x40]
call fcn.140004e60
nop
lea rdx, [rdi - 0x18]
jmp 0x14012b282
mov rcx, qword [rbx - 0x18]
test rcx, rcx
je 0x14012b526
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x1400136d6.0]
mov rcx, rax
test rax, rax
jne 0x14012b547
call fcn.1401bb0c4
mov rcx, rax
mov rax, qword [rax]
mov rax, qword [rax + 0x20]
call qword [case.0x1400136d6.0]
mov rcx, rax
test rax, rax
je 0x14012ba10
mov rax, qword [rcx]
mov rax, qword [rax + 0x18]
call qword [case.0x1400136d6.0]
lea rdi, [rax + 0x18]
mov qword [rsp + 0x60], rdi
mov esi, dword [rsp + 0x30]
or esi, 8
mov dword [rsp + 0x30], esi
movsxd r15, dword [rbx - 0x10]
lea r14d, [r15 + 1]
test r14d, r14d
js 0x14012ba05
mov ecx, 1
sub ecx, dword [rdi - 8]
mov eax, dword [rdi - 0xc]
sub eax, r14d
or eax, ecx
jge 0x14012b5a9
lfence
mov edx, r14d
lea rcx, [rsp + 0x60]
call fcn.140004e00
mov rbx, qword [rsp + 0x40]
mov rdi, qword [rsp + 0x60]
mov esi, dword [rsp + 0x30]
test rdi, rdi
jne 0x14012b5c0
call fcn.1401ec568
mov dword [rax], socket
call fcn.1401ec3fc
jmp 0x14012b5c8
mov eax, 0x5c
mov word [rdi], ax
mov r8, r15
add r8, r8
lea rcx, [rdi + 2]
je 0x14012b5f3
test rcx, rcx
jne 0x14012b5eb
call fcn.1401ec568
mov dword [rax], socket
call fcn.1401ec3fc
jmp 0x14012b5f3
mov rdx, rbx
call fcn.1401e7770
cmp r14d, dword [rdi - 0xc]
jg 0x14012ba05
mov dword [rdi - 0x10], r14d
mov rax, r15
xor r15d, r15d
mov word [rdi + rax*2 + 2], r15w
mov r8d, dword [rdi - 0x10]
mov rdx, rdi
lea rcx, [rsp + 0x38]
call fcn.140007390
and esi, 0xfffffff7
mov dword [rsp + 0x30], esi
lea rdx, [rdi - 0x18]
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14012b64b
lfence
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x1400136d6.0]
mov rcx, qword [0x1402bbf50]
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x1400136d6.0]
cmp dword [rax + 0xa64], 2
je 0x14012b7f2
mov edx, 0x5c
mov rdi, qword [rsp + 0x38]
mov rcx, rdi
call fcn.1401e768c
test rax, rax
jne 0x14012b68a
mov eax, 0xffffffff
jmp 0x14012b690
sub rax, rdi
sar rax, 1
mov r14d, r15d
test eax, eax
cmovns r14d, eax
cmp r14d, dword [rdi - 0x10]
jl 0x14012b6b9
lea rcx, [rdi - 0x18]
call fcn.140004d00
lea rbx, [rax + 0x18]
mov qword [rsp + 0x68], rbx
mov rsi, rbx
jmp 0x14012b75d
mov rcx, qword [rdi - 0x18]
test rcx, rcx
je 0x14012b6d7
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x1400136d6.0]
mov rcx, rax
test rax, rax
jne 0x14012b6f8
call fcn.1401bb0c4
mov rcx, rax
mov rax, qword [rax]
mov rax, qword [rax + 0x20]
call qword [case.0x1400136d6.0]
mov rcx, rax
test rax, rax
je 0x14012ba2c
lfence
mov rax, qword [rcx]
mov r8d, 2
mov edx, r14d
mov rax, qword [rax]
call qword [case.0x1400136d6.0]
test rax, rax
je 0x14012ba26
lea rbx, [rax + 0x18]
mov rsi, rbx
mov qword [rsp + 0x68], rbx
test r14d, r14d
js 0x14012ba1b
cmp r14d, dword [rbx - 0xc]
jg 0x14012ba1b
mov dword [rbx - 0x10], r14d
movsxd rax, r14d
lea r8, [rax + rax]
mov word [rbx + r8], r15w
mov rdi, qword [rsp + 0x38]
test r8, r8
je 0x14012b75d
mov rdx, rdi
mov rcx, rbx
call fcn.1401e7770
or dword [rsp + 0x30], 0x10
lea rcx, [rsi - 0x18]
add rdi, 0xffffffffffffffe8
cmp rcx, rdi
je 0x14012b7cc
cmp dword [rdi + 0x10], 0
jl 0x14012b7ba
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x14012b7ba
call fcn.140004d00
mov rbx, rax
mov eax, 0xffffffff
lock xadd dword [rdi + 0x10], eax
sub eax, 1
jg 0x14012b7aa
lfence
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
mov rax, qword [rax + 8]
call qword [case.0x1400136d6.0]
lea rax, [rbx + 0x18]
mov qword [rsp + 0x38], rax
mov rbx, qword [rsp + 0x68]
jmp 0x14012b7cc
mov r8d, dword [rsi - 0x10]
mov rdx, rsi
lea rcx, [rsp + 0x38]
call fcn.140004e60
nop
lea rdx, [rbx - 0x18]
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14012b7f2
lfence
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x1400136d6.0]
mov r8d, 7
lea rdx, str.Custom
lea rcx, [rsp + 0x38]
call fcn.140007390
mov rdx, qword [rsp + 0x38]
lea rcx, [rbp + 0x200]
call qword [sym.imp.KERNEL32.dll_lstrcpyW]
lea rcx, [rbp + 0x200]
call qword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
lea rcx, [rbp + 0x200]
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x14012b883
lea rax, [rbp + 0x200]
mov r8, 0xffffffffffffffff
nop word [rax + rax]
inc r8
cmp word [rax + r8*2], 0
jne 0x14012b850
movsxd rcx, r12d
add rcx, 8
shl rcx, 5
add rcx, qword [rsp + 0x78]
lea rdx, [rbp + 0x200]
call fcn.140004b70
test r12d, r12d
mov eax, 1
cmove r13d, eax
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14012b8af
lfence
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x1400136d6.0]
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14012b8da
lfence
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x1400136d6.0]
mov edi, 0x5c
inc r12d
mov rbx, qword [rsp + 0x70]
inc rbx
mov qword [rsp + 0x70], rbx
cmp r12d, 3
jb 0x14012b030
mov cl, 1
mov byte [rbp - 0x78], cl
mov rax, qword [0x1402a8360]
lea rdi, [0x1402a8360]
lea rbx, [0x1402bbdb0]
cmp rax, rdi
je 0x14012b955
test byte [rax + 0x1c], cl
je 0x14012b955
mov r9, rbx
cmp qword [0x1402bbdc8], 8
cmovae r9, qword [0x1402bbdb0]
mov edx, 0x50
mov dword [rsp + 0x20], r13d
lea r8, [0x140261908]
mov rcx, qword [rax + 0x10]
call fcn.140001b40
movzx ecx, byte [rbp - 0x78]
mov rax, qword [0x1402a8360]
lea rdx, vtable.WppTrace.0
mov qword [rbp - 0x80], rdx
test cl, cl
jne 0x14012b9aa
cmp rax, rdi
je 0x14012b9aa
test byte [rax + 0x1c], 1
je 0x14012b9aa
lea rcx, [rbp - 0x70]
cmp qword [rbp - 0x58], 8
cmovae rcx, qword [rbp - 0x70]
cmp qword [0x1402bbdc8], 8
cmovae rbx, qword [0x1402bbdb0]
mov edx, 0xa
mov qword [rsp + 0x20], rcx
mov r9, rbx
lea r8, [0x140252818]
mov rcx, qword [rax + 0x10]
call fcn.140006c90
lea rcx, [rbp - 0x50]
call fcn.1400048a0
lea rcx, [rbp - 0x70]
call fcn.1400048a0
mov eax, r13d
mov rcx, qword [rbp + 0x410]
xor rcx, rsp
call fcn.1401e2900
lea r11, [rsp + 0x520]
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
mov ecx, 0x80004005
call fcn.140001470
nop
mov ecx, 0x80004005
call fcn.140001470
nop
mov ecx, 0x80070057
call fcn.140001470
int3
mov ecx, 0x80004005
call fcn.140001470
nop
mov ecx, 0x80070057
call fcn.140001470
int3
call fcn.1400051f0
int3
mov ecx, 0x80004005
call fcn.140001470
int3