Function at 0x10015c9d0
Capabilities:
Check if file exists

Disassembly:
mov rax, rsp
push r15
sub rsp, 0x800
mov qword [rax - 0x730], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
mov qword [rax + 0x20], r14
mov rax, qword [0x10022f440]
xor rax, rsp
mov qword [rsp + 0x7f0], rax
cmp qword [0x10029b478], 0
jne 0x10015d2c4
mov rcx, qword [0x100246638]
mov rax, qword [rcx]
mov byte [rsp + 0x20], 6
mov r9d, 0xb8
lea r8, [0x100043cc0]
mov edx, 0xd20
call qword [rax + 0x48]
mov rbx, rax
test rax, rax
jne 0x10015ca4b
lea ecx, [rax + 0x7b]
call fcn.1000574d0
mov qword [rsp + 0x30], rbx
mov rcx, rbx
call fcn.10015c410
mov r14, rax
mov qword [rsp + 0x30], rax
mov rdx, qword [0x10029b488]
add rdx, 0x230
mov qword [rsp + 0xb8], rdx
lea rax, [rsp + 0x390]
mov qword [rsp + 0x490], rax
mov esi, 0x80
mov qword [rsp + 0x498], rsi
xor r15d, r15d
mov qword [rsp + 0x4a0], r15
lea rcx, [rsp + 0x390]
call fcn.1001527f0
nop
lea rax, [rsp + 0x150]
mov qword [rsp + 0x250], rax
mov qword [rsp + 0x258], rsi
mov qword [rsp + 0x260], r15
mov rdx, qword [rsp + 0x250]
test rdx, rdx
je 0x10015cb77
lea rax, [rsp + 0x150]
cmp rdx, rax
je 0x10015cb77
mov rax, rdx
and rax, 0xffffffffffffe000
mov qword [rsp + 0x88], rax
mov edi, 0x200
je 0x10015cb18
cmp word [rax + 4], di
jne 0x10015cb18
mov rax, qword [rax + 0x28]
mov qword [rsp + 0x88], rax
mov rax, qword [rax + 8]
mov qword [rsp + 0x118], rax
mov rcx, qword [rax + 0x10]
mov qword [rsp + 0xc8], rcx
dec rcx
not rcx
and rcx, rdx
mov qword [rsp + 0xa0], rcx
je 0x10015cb55
cmp word [rcx + 4], di
jne 0x10015cb55
mov rcx, qword [rcx + 0x28]
mov qword [rsp + 0xa0], rcx
mov rcx, qword [rcx + 8]
mov qword [rsp + 0x138], rcx
test byte [rcx + 0x28], 8
jne 0x10015cb6d
mov rax, qword [rcx]
call qword [rax + 0x28]
mov qword [rsp + 0x250], r15
jmp 0x10015cb7c
mov edi, 0x200
mov rdx, r15
mov qword [rsp + 0x260], rdx
mov rax, rsi
mov qword [rsp + 0x258], rax
lea rcx, [rsp + 0x150]
mov qword [rsp + 0x250], rcx
lea rbx, [0x100043d18]
mov qword [rsp + 0x48], rbx
nop
cmp word [rbx], 0
je 0x10015cc05
cmp rax, rdx
jne 0x10015cbd0
lea rcx, [rsp + 0x150]
call fcn.1000577e0
mov rdx, qword [rsp + 0x260]
movzx ecx, word [rbx]
mov rax, qword [rsp + 0x250]
mov word [rax + rdx*2], cx
mov rdx, qword [rsp + 0x260]
inc rdx
mov qword [rsp + 0x260], rdx
add rbx, 2
mov qword [rsp + 0x48], rbx
mov rax, qword [rsp + 0x258]
jmp 0x10015cbb0
cmp rax, rdx
jne 0x10015cc1f
lea rcx, [rsp + 0x150]
call fcn.1000577e0
mov rdx, qword [rsp + 0x260]
mov rax, qword [rsp + 0x250]
mov word [rax + rdx*2], r15w
inc qword [rsp + 0x260]
lea rdx, [rsp + 0x150]
lea rcx, [rsp + 0x390]
call fcn.100152470
nop
mov rdx, qword [rsp + 0x250]
test rdx, rdx
je 0x10015ccde
lea rax, [rsp + 0x150]
cmp rdx, rax
je 0x10015ccde
mov rax, rdx
and rax, 0xffffffffffffe000
mov qword [rsp + 0x78], rax
je 0x10015cc87
cmp word [rax + 4], di
jne 0x10015cc87
mov rax, qword [rax + 0x28]
mov qword [rsp + 0x78], rax
mov rax, qword [rax + 8]
mov qword [rsp + 0xa8], rax
mov rcx, qword [rax + 0x10]
mov qword [rsp + 0x128], rcx
dec rcx
not rcx
and rcx, rdx
mov qword [rsp + 0x58], rcx
je 0x10015ccbe
cmp word [rcx + 4], di
jne 0x10015ccbe
mov rcx, qword [rcx + 0x28]
mov qword [rsp + 0x58], rcx
mov rcx, qword [rcx + 8]
mov qword [rsp + 0xe8], rcx
test byte [rcx + 0x28], 8
jne 0x10015ccd6
mov rax, qword [rcx]
call qword [rax + 0x28]
mov qword [rsp + 0x250], r15
mov rcx, qword [rsp + 0x490]
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x10015cfc5
lea rcx, [rsp + 0x6d0]
call fcn.10015d300
mov qword [rsp + 0x148], rax
mov rdx, rax
lea rcx, [rsp + 0x390]
call fcn.1001527f0
nop
mov rdx, qword [rsp + 0x7d0]
test rdx, rdx
je 0x10015cdb4
lea rax, [rsp + 0x6d0]
cmp rdx, rax
je 0x10015cdb4
mov rax, rdx
and rax, 0xffffffffffffe000
mov qword [rsp + 0x98], rax
je 0x10015cd5d
cmp word [rax + 4], di
jne 0x10015cd5d
mov rax, qword [rax + 0x28]
mov qword [rsp + 0x98], rax
mov rax, qword [rax + 8]
mov qword [rsp + 0xf8], rax
mov rcx, qword [rax + 0x10]
mov qword [rsp + 0x140], rcx
dec rcx
not rcx
and rcx, rdx
mov qword [rsp + 0x68], rcx
je 0x10015cd94
cmp word [rcx + 4], di
jne 0x10015cd94
mov rcx, qword [rcx + 0x28]
mov qword [rsp + 0x68], rcx
mov rcx, qword [rcx + 8]
mov qword [rsp + 0x108], rcx
test byte [rcx + 0x28], 8
jne 0x10015cdac
mov rax, qword [rcx]
call qword [rax + 0x28]
mov qword [rsp + 0x7d0], r15
lea rax, [rsp + 0x270]
mov qword [rsp + 0x370], rax
mov qword [rsp + 0x378], rsi
mov qword [rsp + 0x380], r15
mov rdx, qword [rsp + 0x370]
test rdx, rdx
je 0x10015ce68
lea rax, [rsp + 0x270]
cmp rdx, rax
je 0x10015ce68
mov rax, rdx
and rax, 0xffffffffffffe000
mov qword [rsp + 0x38], rax
je 0x10015ce11
cmp word [rax + 4], di
jne 0x10015ce11
mov rax, qword [rax + 0x28]
mov qword [rsp + 0x38], rax
mov rax, qword [rax + 8]
mov qword [rsp + 0x130], rax
mov rcx, qword [rax + 0x10]
mov qword [rsp + 0xb0], rcx
dec rcx
not rcx
and rcx, rdx
mov qword [rsp + 0x40], rcx
je 0x10015ce48
cmp word [rcx + 4], di
jne 0x10015ce48
mov rcx, qword [rcx + 0x28]
mov qword [rsp + 0x40], rcx
mov rcx, qword [rcx + 8]
mov qword [rsp + 0xc0], rcx
test byte [rcx + 0x28], 8
jne 0x10015ce60
mov rax, qword [rcx]
call qword [rax + 0x28]
mov qword [rsp + 0x370], r15
mov rax, r15
mov qword [rsp + 0x380], rax
mov qword [rsp + 0x378], rsi
lea rcx, [rsp + 0x270]
mov qword [rsp + 0x370], rcx
lea rbx, [0x100043d28]
mov qword [rsp + 0x50], rbx
cmp word [rbx], 0
je 0x10015ceec
cmp rsi, rax
jne 0x10015ceb7
lea rcx, [rsp + 0x270]
call fcn.1000577e0
mov rax, qword [rsp + 0x380]
movzx edx, word [rbx]
mov rcx, qword [rsp + 0x370]
mov word [rcx + rax*2], dx
mov rax, qword [rsp + 0x380]
inc rax
mov qword [rsp + 0x380], rax
add rbx, 2
mov qword [rsp + 0x50], rbx
mov rsi, qword [rsp + 0x378]
jmp 0x10015ce97
cmp rsi, rax
jne 0x10015cf06
lea rcx, [rsp + 0x270]
call fcn.1000577e0
mov rax, qword [rsp + 0x380]
mov rcx, qword [rsp + 0x370]
mov word [rcx + rax*2], r15w
inc qword [rsp + 0x380]
lea rdx, [rsp + 0x270]
lea rcx, [rsp + 0x390]
call fcn.100152470
nop
mov rdx, qword [rsp + 0x370]
test rdx, rdx
je 0x10015cfc5
lea rax, [rsp + 0x270]
cmp rdx, rax
je 0x10015cfc5
mov rax, rdx
and rax, 0xffffffffffffe000
mov qword [rsp + 0x60], rax
je 0x10015cf6e
cmp word [rax + 4], di
jne 0x10015cf6e
mov rax, qword [rax + 0x28]
mov qword [rsp + 0x60], rax
mov rax, qword [rax + 8]
mov qword [rsp + 0xd0], rax
mov rcx, qword [rax + 0x10]
mov qword [rsp + 0xe0], rcx
dec rcx
not rcx
and rcx, rdx
mov qword [rsp + 0x70], rcx
je 0x10015cfa5
cmp word [rcx + 4], di
jne 0x10015cfa5
mov rcx, qword [rcx + 0x28]
mov qword [rsp + 0x70], rcx
mov rcx, qword [rcx + 8]
mov qword [rsp + 0xf0], rcx
test byte [rcx + 0x28], 8
jne 0x10015cfbd
mov rax, qword [rcx]
call qword [rax + 0x28]
mov qword [rsp + 0x370], r15
lea rcx, [rsp + 0x4b0]
call fcn.10015e0b0
nop
mov rdx, qword [rsp + 0x490]
lea rcx, [rsp + 0x4b0]
call fcn.10015e160
mov ecx, eax
call fcn.10015ed00
lea r9, [r14 + 0x9d8]
lea r8, [0x100016dc0]
lea rdx, [0x100043d40]
lea rcx, [rsp + 0x4b0]
call fcn.10015e480
mov ecx, eax
call fcn.10015eed0
lea r9, [r14 + 0x460]
lea r8, [0x100016dc0]
lea rdx, [0x100043de0]
lea rcx, [rsp + 0x4b0]
call fcn.10015e480
mov ecx, eax
call fcn.10015eed0
lea r9, [r14 + 0x578]
lea r8, [0x100016dc0]
lea rdx, [0x100043e40]
lea rcx, [rsp + 0x4b0]
call fcn.10015e480
mov ecx, eax
call fcn.10015eed0
lea r9, [r14 + 0x7a8]
lea r8, [0x100016dc0]
lea rdx, [0x100043eb0]
lea rcx, [rsp + 0x4b0]
call fcn.10015e480
mov ecx, eax
call fcn.10015eed0
lea r9, [r14 + 0x8c0]
lea r8, [0x100016dc0]
lea rdx, [0x100043f20]
lea rcx, [rsp + 0x4b0]
call fcn.10015e480
mov ecx, eax
call fcn.10015eed0
lea r9, [r14 + 0x230]
lea r8, [0x100016dc0]
lea rdx, [0x100043f90]
lea rcx, [rsp + 0x4b0]
call fcn.10015e480
mov ecx, eax
call fcn.10015eed0
lea r9, [r14 + 0x118]
lea r8, [0x100016dc0]
lea rdx, [0x100043ff0]
lea rcx, [rsp + 0x4b0]
call fcn.10015e480
mov ecx, eax
call fcn.10015eed0
lea r9, [r14 + 0x690]
lea r8, [0x100016dc0]
lea rdx, [0x100044060]
lea rcx, [rsp + 0x4b0]
call fcn.10015e480
mov ecx, eax
call fcn.10015eed0
lea r9, [r14 + 0xaf0]
lea r8, [0x100016dc0]
lea rdx, [0x1000440d0]
lea rcx, [rsp + 0x4b0]
call fcn.10015e480
mov ecx, eax
call fcn.10015eed0
lea r9, [r14 + 0xc08]
lea r8, [0x100016dc0]
lea rdx, [0x100044140]
lea rcx, [rsp + 0x4b0]
call fcn.10015e480
mov ecx, eax
call fcn.10015eed0
lea r9, [r14 + 0x348]
lea r8, [0x100016dc0]
lea rdx, [0x1000441b0]
lea rcx, [rsp + 0x4b0]
call fcn.10015e480
mov ecx, eax
call fcn.10015eed0
nop
lea rcx, [rsp + 0x4b0]
call fcn.10015e120
nop
mov rdx, qword [rsp + 0x490]
test rdx, rdx
je 0x10015d265
lea rax, [rsp + 0x390]
cmp rdx, rax
je 0x10015d265
mov rax, rdx
and rax, 0xffffffffffffe000
mov qword [rsp + 0x80], rax
je 0x10015d208
cmp word [rax + 4], di
jne 0x10015d208
mov rax, qword [rax + 0x28]
mov qword [rsp + 0x80], rax
mov rax, qword [rax + 8]
mov qword [rsp + 0x100], rax
mov rcx, qword [rax + 0x10]
mov qword [rsp + 0x110], rcx
dec rcx
not rcx
and rcx, rdx
mov qword [rsp + 0x90], rcx
je 0x10015d245
cmp word [rcx + 4], di
jne 0x10015d245
mov rcx, qword [rcx + 0x28]
mov qword [rsp + 0x90], rcx
mov rcx, qword [rcx + 8]
mov qword [rsp + 0x120], rcx
test byte [rcx + 0x28], 8
jne 0x10015d25d
mov rax, qword [rcx]
call qword [rax + 0x28]
mov qword [rsp + 0x490], r15
xor eax, eax
lock cmpxchg qword [0x10029b478], r14
je 0x10015d2c4
test r14, r14
je 0x10015d2c4
mov rcx, r14
call fcn.10015c820
mov rax, r14
and rax, 0xffffffffffffe000
je 0x10015d294
cmp word [rax + 4], di
jne 0x10015d294
mov rax, qword [rax + 0x28]
mov rax, qword [rax + 8]
mov rcx, qword [rax + 0x10]
dec rcx
not rcx
and rcx, r14
je 0x10015d2b1
cmp word [rcx + 4], di
jne 0x10015d2b1
mov rcx, qword [rcx + 0x28]
mov rcx, qword [rcx + 8]
test byte [rcx + 0x28], 8
jne 0x10015d2c4
mov rax, qword [rcx]
mov rdx, r14
call qword [rax + 0x28]
mov rax, qword [0x10029b478]
mov rcx, qword [rsp + 0x7f0]
xor rcx, rsp
call fcn.10005f420
lea r11, [rsp + 0x800]
mov rbx, qword [r11 + 0x10]
mov rsi, qword [r11 + 0x18]
mov rdi, qword [r11 + 0x20]
mov r14, qword [r11 + 0x28]
mov rsp, r11
pop r15
ret