Function at 0x14000385c
Capabilities:
Get common file path

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x2a0
mov rax, qword [0x140071010]
xor rax, rsp
mov qword [rsp + 0x298], rax
mov r12, rcx
mov qword [rsp + 0x48], rcx
xor r15d, r15d
mov edi, r15d
mov dword [rsp + 0x30], r15d
lea rax, [rsp + 0x180]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetFolderPathA]
or r14, 0xffffffffffffffff
test eax, eax
js 0x140003906
mov qword [rsp + 0x140], r15
mov qword [rsp + 0x150], r15
mov qword [rsp + 0x158], r15
lea rax, [rsp + 0x180]
mov r8, r14
inc r8
cmp byte [rax + r8], r15b
jne 0x1400038e3
lea rdx, [rsp + 0x180]
lea rcx, [rsp + 0x140]
call fcn.14000e5d8
mov edi, 0x80
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x110], xmm1
mov qword [rsp + 0x120], r15
cmp qword [rsp + 0x150], r15
jne 0x140003937
mov qword [r12], r15
mov qword [r12 + 8], r15
mov qword [r12 + 0x10], r15
jmp 0x140003ed4
lea rax, [rsp + 0x140]
cmp qword [rsp + 0x158], 0x10
cmovae rax, qword [rsp + 0x140]
mov qword [rsp + 0xb0], rax
mov rax, qword [rsp + 0x150]
mov qword [rsp + 0xb8], rax
lea rdx, [rsp + 0xb0]
lea rcx, [rsp + 0xd0]
call fcn.140010048
bts edi, 8
mov dword [rsp + 0x30], edi
xorps xmm0, xmm0
movdqa xmmword [rsp + 0x130], xmm0
lea rdx, [rsp + 0xd0]
lea rcx, [rsp + 0x130]
call fcn.14000dc30
test eax, eax
jne 0x140003fc8
lea rcx, [rsp + 0xd0]
call fcn.14000c8d4
xorps xmm0, xmm0
movups xmmword [rsp + 0x160], xmm0
mov rbx, qword [rsp + 0x138]
test rbx, rbx
je 0x1400039e4
lock inc dword [rbx + 8]
mov rbx, qword [rsp + 0x138]
mov edi, dword [rsp + 0x30]
movaps xmm0, xmmword [rsp + 0x130]
movdqa xmmword [rsp + 0x160], xmm0
test rbx, rbx
je 0x140003a0a
lock inc dword [rbx + 8]
mov rbx, qword [rsp + 0x138]
mov edi, dword [rsp + 0x30]
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x170], xmm1
test rbx, rbx
je 0x140003a64
mov eax, r14d
lock xadd dword [rbx + 8], eax
add eax, r14d
jne 0x140003a58
mov rbx, qword [rsp + 0x138]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
mov eax, r14d
lock xadd dword [rbx + 0xc], eax
add eax, r14d
jne 0x140003a58
mov rbx, qword [rsp + 0x138]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 8]
jmp 0x140003a60
mov rbx, qword [rsp + 0x138]
mov edi, dword [rsp + 0x30]
mov rsi, qword [rsp + 0x160]
cmp rsi, qword [rsp + 0x170]
je 0x140003e23
mov r8d, 3
lea rdx, [rsp + 0x50]
mov rcx, rsi
call fcn.1400028d8
mov edx, dword [rsp + 0x58]
mov rax, qword [rsp + 0x50]
test edx, edx
je 0x140003aa9
lea ecx, [rax - 1]
test ecx, 0xfffffff7
jne 0x140003fdf
cmp eax, 2
jne 0x140003d90
lea rax, str..lnk
mov qword [rsp + 0xc0], rax
mov qword [rsp + 0xc8], 4
lea rdx, [rsp + 0xc0]
lea rcx, [rsp + 0x88]
call fcn.140010048
or edi, 8
or edi, 2
mov dword [rsp + 0x30], edi
add rsi, 0x20
mov rcx, rsi
cmp qword [rsi + 0x18], 8
jb 0x140003afd
mov rcx, qword [rsi]
mov rax, qword [rsi + 0x10]
lea rdx, [rcx + rax*2]
mov r15, rdx
call fcn.140001a98
jmp 0x140003b1f
cmp word [rax], 0x5c
je 0x140003b1b
cmp word [rax], 0x2f
jne 0x140003b24
add rax, 2
cmp rax, rdx
jne 0x140003b0f
cmp rax, rdx
je 0x140003b41
lea rcx, [r15 - 2]
cmp word [rcx], 0x5c
je 0x140003b41
cmp word [rcx], 0x2f
je 0x140003b41
mov r15, rcx
cmp rax, rcx
jne 0x140003b29
mov r8d, 0x3a
mov rcx, r15
call fcn.140010f80
cmp r15, rax
je 0x140003b83
lea rdx, [rax - 2]
cmp r15, rdx
je 0x140003b83
cmp word [rdx], 0x2e
jne 0x140003b7a
lea rcx, [rdx - 2]
cmp r15, rcx
jne 0x140003b86
cmp word [rcx], 0x2e
jne 0x140003b86
jmp 0x140003b83
cmp word [rdx], 0x2e
je 0x140003b86
sub rdx, 2
cmp r15, rdx
jne 0x140003b74
mov rdx, rax
sub rax, rdx
sar rax, 1
xor ecx, ecx
mov qword [rsp + 0x60], rcx
mov qword [rsp + 0x70], rcx
mov qword [rsp + 0x78], rcx
mov r8, rax
lea rcx, [rsp + 0x60]
call fcn.14000e37c
or edi, 0x74
mov dword [rsp + 0x30], edi
lea r15, [rsp + 0x88]
cmp qword [rsp + 0xa0], 8
cmovae r15, qword [rsp + 0x88]
mov r11, qword [rsp + 0x98]
lea rcx, [rsp + 0x60]
cmp qword [rsp + 0x78], 8
cmovae rcx, qword [rsp + 0x60]
mov qword [rsp + 0x80], rcx
mov rax, qword [rsp + 0x70]
lea r13, [rcx + rax*2]
mov rdx, r13
call fcn.140001a98
mov qword [rsp + 0x40], rax
lea r11, [r15 + r11*2]
mov rdx, r11
mov rcx, r15
call fcn.140001a98
mov qword [rsp + 0x38], rax
mov r8, rax
sub r8, r15
sar r8, 1
mov r10, qword [rsp + 0x40]
mov r9, r10
mov rcx, qword [rsp + 0x80]
sub r9, rcx
sar r9, 1
mov rdx, r9
cmp r8, r9
cmovb rdx, r8
test rdx, rdx
je 0x140003c65
sub rcx, r15
movzx eax, word [rcx + r15]
cmp ax, word [r15]
jne 0x140003d8b
add r15, 2
sub rdx, 1
jne 0x140003c47
mov rax, qword [rsp + 0x38]
cmp r9, r8
jb 0x140003d8b
ja 0x140003d8b
mov rdx, r10
cmp r10, r13
je 0x140003c91
cmp word [rdx], 0x5c
je 0x140003c88
cmp word [rdx], 0x2f
jne 0x140003c91
add rdx, 2
cmp rdx, r13
jne 0x140003c7c
mov r8, rax
cmp rax, r11
je 0x140003cb0
cmp word [r8], 0x5c
je 0x140003ca7
cmp word [r8], 0x2f
jne 0x140003cb0
add r8, 2
cmp r8, r11
jne 0x140003c99
xor r15d, r15d
mov ecx, r15d
cmp rax, r8
setne cl
mov eax, r15d
cmp r10, rdx
setne al
cmp eax, ecx
jne 0x140003d94
mov ecx, r15d
cmp r8, r11
sete cl
mov eax, r15d
cmp rdx, r13
sete al
sub ecx, eax
cmp rdx, r13
je 0x140003d53
mov r10w, 0x5c
test ecx, ecx
jne 0x140003d94
cmp word [rdx], r10w
je 0x140003d02
cmp word [rdx], 0x2f
mov r9b, r15b
jne 0x140003d05
mov r9b, 1
cmp word [r8], r10w
je 0x140003d15
cmp word [r8], 0x2f
mov ecx, r15d
jne 0x140003d1a
mov ecx, 1
movzx eax, r9b
cmp ecx, eax
jne 0x140003d94
test r9b, r9b
jne 0x140003d68
movzx eax, word [r8]
movzx ecx, word [rdx]
cmp ecx, eax
jne 0x140003d94
add rdx, 2
add r8, 2
mov ecx, r15d
cmp r8, r11
sete cl
mov eax, r15d
cmp rdx, r13
sete al
sub ecx, eax
cmp rdx, r13
jne 0x140003ceb
test ecx, ecx
jne 0x140003d94
mov r15b, 1
jmp 0x140003d94
cmp word [rdx], r10w
je 0x140003d68
cmp word [rdx], 0x2f
jne 0x140003d80
add rdx, 2
cmp rdx, r13
jne 0x140003d5c
jmp 0x140003d80
cmp word [r8], r10w
je 0x140003d80
cmp word [r8], 0x2f
jne 0x140003d3a
add r8, 2
cmp r8, r11
jne 0x140003d73
jmp 0x140003d3a
xor r15d, r15d
jmp 0x140003d94
add rsi, 0x20
test dil, 4
je 0x140003dac
and edi, 0xfffffffb
mov dword [rsp + 0x30], edi
lea rcx, [rsp + 0x60]
call fcn.14000c8d4
nop
test dil, 2
je 0x140003dc6
and edi, 0xfffffffd
mov dword [rsp + 0x30], edi
lea rcx, [rsp + 0x88]
call fcn.14000c8d4
test r15b, r15b
je 0x140003e06
mov rax, qword [rsp + 0x118]
cmp rax, qword [rsp + 0x120]
je 0x140003df3
mov rdx, rsi
mov rcx, rax
call fcn.14000c96c
add qword [rsp + 0x118], 0x20
jmp 0x140003e06
mov r8, rsi
mov rdx, rax
lea rcx, [rsp + 0x110]
call fcn.14000f6ec
lea rcx, [rsp + 0x160]
call fcn.1400029b4
xor r15d, r15d
test eax, eax
jne 0x140003fef
jmp 0x140003a64
mov rcx, qword [rsp + 0x168]
test rcx, rcx
je 0x140003e70
mov eax, r14d
lock xadd dword [rcx + 8], eax
add eax, r14d
jne 0x140003e68
mov rbx, qword [rsp + 0x168]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
mov eax, r14d
lock xadd dword [rbx + 0xc], eax
add eax, r14d
jne 0x140003e68
mov rcx, qword [rsp + 0x168]
mov rax, qword [rcx]
call qword [rax + 8]
mov rbx, qword [rsp + 0x138]
test rbx, rbx
je 0x140003eae
mov eax, r14d
lock xadd dword [rbx + 8], eax
add eax, r14d
jne 0x140003eae
mov rbx, qword [rsp + 0x138]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
mov eax, r14d
lock xadd dword [rbx + 0xc], eax
add eax, r14d
jne 0x140003eae
mov rcx, qword [rsp + 0x138]
mov rax, qword [rcx]
call qword [rax + 8]
nop
mov rdx, qword [rsp + 0x120]
mov rcx, qword [rsp + 0x118]
mov rax, qword [rsp + 0x110]
mov qword [r12], rax
mov qword [r12 + 8], rcx
mov qword [r12 + 0x10], rdx
mov qword [rsp + 0x110], r15
mov qword [rsp + 0x118], r15
mov qword [rsp + 0x120], r15
lea rcx, [rsp + 0x110]
call fcn.14000c330
nop
mov rdx, qword [rsp + 0x158]
cmp rdx, 0x10
jb 0x140003f98
inc rdx
mov rcx, qword [rsp + 0x140]
cmp rdx, 0x1000
mov rax, rcx
jb 0x140003f38
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140003f87
call fcn.140011100
jmp 0x140003f98
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
mov rax, r12
mov rcx, qword [rsp + 0x298]
xor rcx, rsp
call fcn.1400110e0
lea r11, [rsp + 0x2a0]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret
lea r8, [rsp + 0xd0]
mov edx, eax
lea rcx, str.directory_iterator::directory_iterator
call fcn.1400026cc
nop
lea r8, [rsi + 0x20]
lea rcx, str.directory_entry::status
call fcn.1400026cc
mov edx, eax
call fcn.1400025e8
int3