Function at 0x180003a20
Capabilities:
Check if file exists

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
mov qword [rsp + 0x20], 0xfffffffffffffffe
mov qword [rsp + 0x80], rbx
call fcn.180002c40
mov rcx, rax
test rax, rax
je 0x1800040e5
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x70], rax
xor edx, edx
lea rcx, [rsp + 0x78]
call fcn.1800021a0
nop
mov rdx, qword [rax]
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x70]
call fcn.180001600
nop
mov rdx, qword [rsp + 0x78]
add rdx, 0xffffffffffffffe8
mov r13, 0xffffffffffffffff
mov eax, r13d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x180003aa6
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
lea rdi, str.ApTest
mov rax, r13
inc rax
cmp word [rdi + rax*2], 0
jne 0x180003ab0
mov rbp, rdi
mov rbx, qword [rsp + 0x70]
sub rbp, rbx
sar rbp, 1
mov r14d, dword [rbx - 0x10]
test eax, eax
js 0x1800040f0
movsxd rdx, eax
mov rcx, rdi
call fcn.18000e100
mov r15, rax
mov ecx, 0x7fffffff
sub ecx, eax
cmp ecx, r14d
jl 0x1800040fb
lea esi, [r14 + rax]
test esi, esi
js 0x180004106
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, esi
or eax, ecx
jge 0x180003b20
mov edx, esi
lea rcx, [rsp + 0x70]
call fcn.180004d30
mov rbx, qword [rsp + 0x70]
cmp rbp, r14
ja 0x180003b29
lea rdi, [rbx + rbp*2]
movsxd rdx, r15d
add rdx, rdx
lea rcx, [rbx + r14*2]
mov r9, rdx
mov r8, rdi
call fcn.180006110
cmp esi, dword [rbx - 0xc]
jg 0x1800040da
mov dword [rbx - 0x10], esi
movsxd rax, esi
xor ecx, ecx
mov word [rbx + rax*2], cx
lea rdi, [0x180021a58]
mov rax, r13
nop dword [rax]
inc rax
cmp word [rdi + rax*2], cx
jne 0x180003b60
mov r12, rdi
mov rbp, rdi
sub rbp, rbx
sar rbp, 1
mov r14d, dword [rbx - 0x10]
test eax, eax
js 0x180004111
movsxd rdx, eax
mov rcx, rdi
call fcn.18000e100
mov r15, rax
mov ecx, 0x7fffffff
sub ecx, eax
cmp ecx, r14d
jl 0x18000411c
lea esi, [r14 + rax]
test esi, esi
js 0x180004127
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, esi
or eax, ecx
jge 0x180003bcd
mov edx, esi
lea rcx, [rsp + 0x70]
call fcn.180004d30
mov rbx, qword [rsp + 0x70]
cmp rbp, r14
ja 0x180003bd6
lea r12, [rbx + rbp*2]
movsxd rdx, r15d
add rdx, rdx
lea rcx, [rbx + r14*2]
mov r9, rdx
mov r8, r12
call fcn.180006110
cmp esi, dword [rbx - 0xc]
jg 0x1800040cf
mov dword [rbx - 0x10], esi
movsxd rax, esi
xor ecx, ecx
mov word [rbx + rax*2], cx
mov rax, r13
inc rax
cmp word [rdi + rax*2], cx
jne 0x180003c03
mov rbp, rdi
sub rbp, rbx
sar rbp, 1
mov r14d, dword [rbx - 0x10]
test eax, eax
js 0x180004132
movsxd rdx, eax
mov rcx, rdi
call fcn.18000e100
mov r15, rax
mov ecx, 0x7fffffff
sub ecx, eax
cmp ecx, r14d
jl 0x18000413d
lea esi, [r14 + rax]
test esi, esi
js 0x180004148
mov r12d, 1
mov ecx, r12d
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, esi
or eax, ecx
jge 0x180003c71
mov edx, esi
lea rcx, [rsp + 0x70]
call fcn.180004d30
mov rbx, qword [rsp + 0x70]
cmp rbp, r14
ja 0x180003c7a
lea rdi, [rbx + rbp*2]
movsxd rdx, r15d
add rdx, rdx
lea rcx, [rbx + r14*2]
mov r9, rdx
mov r8, rdi
call fcn.180006110
cmp esi, dword [rbx - 0xc]
jg 0x18000425b
mov dword [rbx - 0x10], esi
movsxd rax, esi
xor ecx, ecx
mov word [rbx + rax*2], cx
lea rdi, [0x180021a5c]
mov rax, r13
nop
inc rax
cmp word [rdi + rax*2], cx
jne 0x180003cb0
mov rbp, rdi
sub rbp, rbx
sar rbp, 1
mov r14d, dword [rbx - 0x10]
test eax, eax
js 0x180004153
movsxd rdx, eax
mov rcx, rdi
call fcn.18000e100
mov r15, rax
mov ecx, 0x7fffffff
sub ecx, eax
cmp ecx, r14d
jl 0x18000415e
lea esi, [rax + r14]
test esi, esi
js 0x180004169
mov ecx, r12d
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, esi
or eax, ecx
jge 0x180003d18
mov edx, esi
lea rcx, [rsp + 0x70]
call fcn.180004d30
mov rbx, qword [rsp + 0x70]
cmp rbp, r14
ja 0x180003d21
lea rdi, [rbx + rbp*2]
movsxd rdx, r15d
add rdx, rdx
lea rcx, [rbx + r14*2]
mov r9, rdx
mov r8, rdi
call fcn.180006110
cmp esi, dword [rbx - 0xc]
jg 0x180004250
mov dword [rbx - 0x10], esi
movsxd rax, esi
xor ecx, ecx
mov word [rbx + rax*2], cx
lea rdi, [0x180021a60]
mov rax, r13
inc rax
cmp word [rdi + rax*2], cx
jne 0x180003d55
mov rbp, rdi
sub rbp, rbx
sar rbp, 1
mov r14d, dword [rbx - 0x10]
test eax, eax
js 0x180004174
movsxd rdx, eax
mov rcx, rdi
call fcn.18000e100
mov r15, rax
mov ecx, 0x7fffffff
sub ecx, eax
cmp ecx, r14d
jl 0x18000417f
lea esi, [rax + r14]
test esi, esi
js 0x18000418a
mov ecx, r12d
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, esi
or eax, ecx
jge 0x180003dbd
mov edx, esi
lea rcx, [rsp + 0x70]
call fcn.180004d30
mov rbx, qword [rsp + 0x70]
cmp rbp, r14
ja 0x180003dc6
lea rdi, [rbx + rbp*2]
movsxd rdx, r15d
add rdx, rdx
lea rcx, [rbx + r14*2]
mov r9, rdx
mov r8, rdi
call fcn.180006110
cmp esi, dword [rbx - 0xc]
jg 0x180004245
mov dword [rbx - 0x10], esi
movsxd rax, esi
xor ecx, ecx
mov word [rbx + rax*2], cx
lea rdi, [0x180021a64]
mov rax, r13
nop word [rax + rax]
inc rax
cmp word [rdi + rax*2], cx
jne 0x180003e00
mov rbp, rdi
sub rbp, rbx
sar rbp, 1
mov r14d, dword [rbx - 0x10]
test eax, eax
js 0x180004195
movsxd rdx, eax
mov rcx, rdi
call fcn.18000e100
mov r15, rax
mov ecx, 0x7fffffff
sub ecx, eax
cmp ecx, r14d
jl 0x1800041a0
lea esi, [rax + r14]
test esi, esi
js 0x1800041ab
mov ecx, r12d
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, esi
or eax, ecx
jge 0x180003e68
mov edx, esi
lea rcx, [rsp + 0x70]
call fcn.180004d30
mov rbx, qword [rsp + 0x70]
cmp rbp, r14
ja 0x180003e71
lea rdi, [rbx + rbp*2]
movsxd rdx, r15d
add rdx, rdx
lea rcx, [rbx + r14*2]
mov r9, rdx
mov r8, rdi
call fcn.180006110
cmp esi, dword [rbx - 0xc]
jg 0x18000423a
mov dword [rbx - 0x10], esi
movsxd rax, esi
xor ecx, ecx
mov word [rbx + rax*2], cx
lea rdi, [0x180021a68]
mov rax, r13
inc rax
cmp word [rdi + rax*2], cx
jne 0x180003ea5
mov rbp, rdi
sub rbp, rbx
sar rbp, 1
mov r14d, dword [rbx - 0x10]
test eax, eax
js 0x1800041b6
movsxd rdx, eax
mov rcx, rdi
call fcn.18000e100
mov r15, rax
mov ecx, 0x7fffffff
sub ecx, eax
cmp ecx, r14d
jl 0x1800041c1
lea esi, [rax + r14]
test esi, esi
js 0x1800041cc
mov ecx, r12d
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, esi
or eax, ecx
jge 0x180003f0d
mov edx, esi
lea rcx, [rsp + 0x70]
call fcn.180004d30
mov rbx, qword [rsp + 0x70]
cmp rbp, r14
ja 0x180003f16
lea rdi, [rbx + rbp*2]
movsxd rdx, r15d
add rdx, rdx
lea rcx, [rbx + r14*2]
mov r9, rdx
mov r8, rdi
call fcn.180006110
cmp esi, dword [rbx - 0xc]
jg 0x18000422f
mov dword [rbx - 0x10], esi
movsxd rax, esi
xor ecx, ecx
mov word [rbx + rax*2], cx
lea rdi, [0x180021a6c]
mov rax, r13
nop word [rax + rax]
inc rax
cmp word [rdi + rax*2], cx
jne 0x180003f50
mov rbp, rdi
sub rbp, rbx
sar rbp, 1
mov r14d, dword [rbx - 0x10]
test eax, eax
js 0x1800041d7
movsxd rdx, eax
mov rcx, rdi
call fcn.18000e100
mov r15, rax
mov ecx, 0x7fffffff
sub ecx, eax
cmp ecx, r14d
jl 0x1800041e2
lea esi, [rax + r14]
test esi, esi
js 0x1800041ed
mov ecx, r12d
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, esi
or eax, ecx
jge 0x180003fb8
mov edx, esi
lea rcx, [rsp + 0x70]
call fcn.180004d30
mov rbx, qword [rsp + 0x70]
cmp rbp, r14
ja 0x180003fc1
lea rdi, [rbx + rbp*2]
movsxd rdx, r15d
add rdx, rdx
lea rcx, [rbx + r14*2]
mov r9, rdx
mov r8, rdi
call fcn.180006110
cmp esi, dword [rbx - 0xc]
jg 0x180004224
mov dword [rbx - 0x10], esi
movsxd rax, esi
xor ecx, ecx
mov word [rbx + rax*2], cx
lea rdi, [0x180021a74]
mov rax, r13
inc rax
cmp word [rdi + rax*2], cx
jne 0x180003ff5
mov rbp, rdi
sub rbp, rbx
sar rbp, 1
mov r14d, dword [rbx - 0x10]
test eax, eax
js 0x1800041f8
movsxd rdx, eax
mov rcx, rdi
call fcn.18000e100
mov r15, rax
mov eax, 0x7fffffff
sub eax, r15d
cmp eax, r14d
jl 0x180004203
lea esi, [r15 + r14]
test esi, esi
js 0x18000420e
sub r12d, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, esi
or eax, r12d
jge 0x18000405d
mov edx, esi
lea rcx, [rsp + 0x70]
call fcn.180004d30
mov rbx, qword [rsp + 0x70]
cmp rbp, r14
ja 0x180004066
lea rdi, [rbx + rbp*2]
movsxd rdx, r15d
add rdx, rdx
lea rcx, [rbx + r14*2]
mov r9, rdx
mov r8, rdi
call fcn.180006110
cmp esi, dword [rbx - 0xc]
jg 0x180004219
mov dword [rbx - 0x10], esi
movsxd rax, esi
xor ecx, ecx
mov word [rbx + rax*2], cx
mov rcx, rbx
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
mov edi, eax
lea rdx, [rbx - 0x18]
lock xadd dword [rdx + 0x10], r13d
sub r13d, 1
jg 0x1800040b5
mov rcx, qword [rdx]
mov r8, qword [rcx]
call qword [r8 + 8]
mov eax, edi
mov rbx, qword [rsp + 0x80]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
nop
mov ecx, 0x80004005
call fcn.1800016f0
nop
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3
mov ecx, 0x80070057
call fcn.1800016f0
int3