Function at 0x180002d70
Capabilities:
Get common file path

Disassembly:
mov rax, rsp
mov dword [rax + 0x10], edx
mov qword [rax + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
mov qword [rax - 0x48], 0xfffffffffffffffe
mov qword [rax + 0x20], rbx
mov r15, rcx
call fcn.1800029b0
mov rcx, rax
test rax, rax
je 0x18000309e
mov rax, qword [rax]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x80], rbx
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, 0x200
or eax, ecx
jge 0x180002de9
mov edx, 0x200
lea rcx, [rsp + 0x80]
call fcn.180004250
mov rbx, qword [rsp + 0x80]
xor r9d, r9d
lea r8d, [r9 + 0x1a]
mov rdx, rbx
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
call fcn.18000d370
test eax, eax
js 0x180003093
cmp eax, dword [rbx - 0xc]
jg 0x180003093
mov dword [rbx - 0x10], eax
cdqe
xor ecx, ecx
mov word [rbx + rax*2], cx
mov esi, dword [rbx - 0x10]
test esi, esi
jne 0x180002ebb
call fcn.1800029b0
mov rcx, rax
test rax, rax
je 0x1800030a9
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [r15], rax
lea rdx, [0x1800228b8]
mov rdi, 0xffffffffffffffff
cmp rdx, 0x10000
jae 0x180002e70
movzx edx, dx
mov rcx, r15
call fcn.180003790
jmp 0x180002e89
mov rax, rdi
inc rax
cmp word [rdx + rax*2], 0
jne 0x180002e73
mov r8d, eax
mov rcx, r15
call fcn.180004be0
nop
lea rdx, [rbx - 0x18]
lock xadd dword [rdx + 0x10], edi
sub edi, 1
jg 0x180002ea0
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
mov rax, r15
mov rbx, qword [rsp + 0x88]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
lea eax, [rsi - 1]
test eax, eax
js 0x180003088
cmp eax, esi
jg 0x180003088
movsxd rax, esi
mov rdi, 0xffffffffffffffff
mov ebp, 0x7fffffff
cmp word [rbx + rax*2 - 2], 0x5c
je 0x180002f9f
lea rbp, [0x1800228bc]
mov rax, rdi
inc rax
cmp word [rbp + rax*2], cx
jne 0x180002ef3
mov r12, rbp
sub r12, rbx
sar r12, 1
test eax, eax
js 0x1800030b4
movsxd rdx, eax
mov rcx, rbp
call fcn.18000d370
mov r13, rax
mov ecx, 0x7fffffff
sub ecx, eax
cmp ecx, esi
jl 0x1800030bf
lea r14d, [rsi + rax]
test r14d, r14d
js 0x1800030ca
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, r14d
or eax, ecx
jge 0x180002f62
mov edx, r14d
lea rcx, [rsp + 0x80]
call fcn.180004250
mov rbx, qword [rsp + 0x80]
cmp r12, rsi
ja 0x180002f6b
lea rbp, [rbx + r12*2]
movsxd rdx, r13d
add rdx, rdx
lea rcx, [rbx + rsi*2]
mov r9, rdx
mov r8, rbp
call fcn.1800057a0
cmp r14d, dword [rbx - 0xc]
jg 0x1800030e0
mov dword [rbx - 0x10], r14d
movsxd rax, r14d
xor ecx, ecx
mov word [rbx + rax*2], cx
mov esi, dword [rbx - 0x10]
mov ebp, 0x7fffffff
lea r14, str.SmallTreesPDF_
mov rax, rdi
nop dword [rax]
inc rax
cmp word [r14 + rax*2], 0
jne 0x180002fb0
mov r12, r14
sub r12, rbx
sar r12, 1
test eax, eax
js 0x1800030d5
movsxd rdx, eax
mov rcx, r14
call fcn.18000d370
mov r13, rax
sub ebp, eax
cmp ebp, esi
jl 0x1800030eb
lea ebp, [rsi + rax]
test ebp, ebp
js 0x1800030f6
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, ebp
or eax, ecx
jge 0x180003017
mov edx, ebp
lea rcx, [rsp + 0x80]
call fcn.180004250
mov rbx, qword [rsp + 0x80]
mov eax, esi
cmp r12, rax
ja 0x180003022
lea r14, [rbx + r12*2]
movsxd rdx, r13d
add rdx, rdx
lea rcx, [rbx + rax*2]
mov r9, rdx
mov r8, r14
call fcn.1800057a0
cmp ebp, dword [rbx - 0xc]
jg 0x180003101
mov dword [rbx - 0x10], ebp
movsxd rax, ebp
xor ecx, ecx
mov word [rbx + rax*2], cx
cmp dword [rsp + 0x78], ecx
je 0x18000305a
mov rcx, rbx
call fcn.1800019f0
lea rcx, [rbx - 0x18]
call fcn.180001660
add rax, 0x18
mov qword [r15], rax
lock xadd dword [rbx - 8], edi
sub edi, 1
jg 0x180002ea0
mov rcx, qword [rbx - 0x18]
mov rax, qword [rcx]
lea rdx, [rbx - 0x18]
jmp 0x180002e9d
mov ecx, 0x80070057
call fcn.180001600
int3
mov ecx, 0x80070057
call fcn.180001600
nop
mov ecx, 0x80004005
call fcn.180001600
nop
mov ecx, 0x80004005
call fcn.180001600
int3
mov ecx, 0x80070057
call fcn.180001600
int3
mov ecx, 0x80070057
call fcn.180001600
int3
mov ecx, 0x80070057
call fcn.180001600
int3
mov ecx, 0x80070057
call fcn.180001600
int3
mov ecx, 0x80070057
call fcn.180001600
int3
mov ecx, 0x80070057
call fcn.180001600
int3
mov ecx, 0x80070057
call fcn.180001600
int3
mov ecx, 0x80070057
call fcn.180001600
int3