Function at 0x140001690
Capabilities:
Get common file path

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r12
push r14
push r15
sub rsp, 0x60
mov rax, qword [section..data]
xor rax, rsp
mov qword [rsp + 0x50], rax
mov rdi, rcx
mov qword [rsp + 0x28], rcx
xor ebp, ebp
lea r9, [rsp + 0x28]
xor r8d, r8d
xor edx, edx
lea rcx, [0x1400033a0]
call qword [sym.imp.SHELL32.dll_SHGetKnownFolderPath]
xorps xmm0, xmm0
test eax, eax
js 0x140001957
mov r14, qword [rsp + 0x28]
movups xmmword [rsp + 0x30], xmm0
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x40], xmm1
mov rbx, 0xffffffffffffffff
nop dword [rax + rax]
inc rbx
cmp word [r14 + rbx*2], bp
jne 0x140001700
movabs r15, 0x7ffffffffffffffe
cmp rbx, r15
ja 0x14000199f
movabs r12, 0x7fffffffffffffff
cmp rbx, 7
ja 0x140001758
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x48], 7
add rbx, rbx
mov r8, rbx
mov rdx, r14
lea rcx, [rsp + 0x30]
call sub.VCRUNTIME140.dll_memcpy
mov word [rsp + rbx + 0x30], bp
jmp 0x1400017f9
mov rax, rbx
or rax, 7
cmp rax, r15
jbe 0x14000176a
lea rcx, [r12 + r12]
jmp 0x140001792
mov r15, rax
mov ecx, 0xa
cmp rax, rcx
cmovb r15, rcx
lea rcx, [r15 + 1]
cmp rcx, r12
ja 0x140001993
add rcx, rcx
cmp rcx, 0x1000
jb 0x1400017be
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x140001993
mov rcx, rax
call fcn.140001ee0
test rax, rax
je 0x140001946
lea rsi, [rax + 0x27]
and rsi, 0xffffffffffffffe0
mov qword [rsi - 8], rax
jmp 0x1400017d0
test rcx, rcx
je 0x1400017cd
call fcn.140001ee0
mov rsi, rax
jmp 0x1400017d0
mov rsi, rbp
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x48], r15
add rbx, rbx
mov r8, rbx
mov rdx, r14
mov rcx, rsi
call sub.VCRUNTIME140.dll_memcpy
mov word [rsi + rbx], bp
mov r14, qword [rsp + 0x28]
mov rcx, r14
call qword [sym.imp.ole32.dll_CoTaskMemFree]
lea rcx, [rsp + 0x30]
mov r8, qword [rsp + 0x30]
mov rdx, qword [rsp + 0x48]
cmp rdx, 7
cmova rcx, r8
mov rax, qword [rsp + 0x40]
lea r14, [rcx + rax*2]
lea rsi, [rsp + 0x30]
cmova rsi, r8
xorps xmm0, xmm0
movups xmmword [rdi], xmm0
mov qword [rdi + 0x10], rbp
mov ebx, 0xf
mov qword [rdi + 0x18], rbx
cmp rsi, r14
jne 0x14000184b
mov byte [rdi], 0
jmp 0x140001917
sub r14, rsi
sar r14, 1
cmp r14, r12
ja 0x1400019a5
cmp r14, rbx
jbe 0x1400018da
mov rbx, r14
or rbx, 0xf
cmp rbx, r12
jbe 0x140001897
mov rbx, r12
movabs rax, 0x8000000000000000
add rax, 0x27
mov rcx, rax
call fcn.140001ee0
test rax, rax
je 0x1400018bf
lea rbp, [rax + 0x27]
and rbp, 0xffffffffffffffe0
mov qword [rbp - 8], rax
jmp 0x1400018d3
mov eax, 0x16
cmp rbx, rax
cmovb rbx, rax
lea rcx, [rbx + 1]
cmp rcx, 0x1000
jb 0x1400018c6
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x140001999
jmp 0x14000187c
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
test rcx, rcx
je 0x1400018d3
call fcn.140001ee0
mov rbp, rax
mov qword [rdi], rbp
mov qword [rdi + 0x18], rbx
mov r8, rdi
cmp rbx, 0xf
jbe 0x1400018e6
mov r8, qword [rdi]
mov rcx, r8
mov rdx, r14
test r14, r14
je 0x140001904
movzx eax, byte [rsi]
mov byte [rcx], al
lea rcx, [rcx + 1]
lea rsi, [rsi + 2]
sub rdx, 1
jne 0x1400018f1
mov qword [rdi + 0x10], r14
mov byte [r8 + r14], 0
mov rdx, qword [rsp + 0x48]
mov r8, qword [rsp + 0x30]
cmp rdx, 7
jbe 0x14000196a
lea rdx, [rdx*2 + 2]
mov rax, r8
cmp rdx, 0x1000
jb 0x14000194d
add rdx, 0x27
mov r8, qword [r8 - 8]
sub rax, r8
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x14000194d
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
mov rcx, r8
call fcn.140001f24
jmp 0x14000196a
movups xmmword [rdi], xmm0
mov qword [rdi + 0x10], rbp
mov ebx, 0xf
mov qword [rdi + 0x18], rbx
mov byte [rdi], bpl
mov rax, rdi
mov rcx, qword [rsp + 0x50]
xor rcx, rsp
call fcn.140001ec0
lea r11, [rsp + 0x60]
mov rbx, qword [r11 + 0x38]
mov rbp, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rsi
ret
call fcn.140001100
nop
call fcn.140001100
nop
call fcn.1400011a0
nop
call fcn.1400011a0
int3