Function at 0x140032880
Capabilities:
Get common file path

Disassembly:
push r15
push r14
push rsi
push rdi
push rbx
sub rsp, 0x100
mov rax, qword [0x14019ac40]
xor rax, rsp
mov qword [rsp + 0xf8], rax
mov r8, qword [rcx + 8]
test r8, r8
je 0x140032dfb
mov r15, rcx
mov rcx, qword [rcx]
lea rax, [rcx + r8]
cmp edx, 1
jne 0x1400328e5
test r8, r8
jle 0x140032dfb
lea r8, [rcx + 1]
cmp rax, r8
cmova r8, rax
sub r8, rcx
cmp r8, 0x10
jae 0x140032be7
mov rdx, rcx
jmp 0x140032d89
cmp r8, 0x10
jae 0x1400328f3
mov rdx, rcx
jmp 0x140032bdd
mov rbx, r8
and rbx, 0xfffffffffffffff0
lea rdx, [rcx + rbx]
xor esi, esi
movdqa xmm0, xmmword [0x14016f780]
jmp 0x14003291d
add rsi, 0x10
cmp rbx, rsi
je 0x140032a7a
movq xmm1, qword [rcx + rsi]
pcmpeqb xmm1, xmm0
movd edi, xmm1
test dil, 1
je 0x140032934
mov byte [rcx + rsi], 0x5c
movdqa xmm2, xmm1
pslld xmm2, 8
movd edi, xmm2
shr edi, 0x10
test dil, 1
je 0x14003294f
mov byte [rcx + rsi + 1], 0x5c
pextrw edi, xmm1, 1
test dil, 1
je 0x14003295f
mov byte [rcx + rsi + 2], 0x5c
movdqa xmm2, xmm1
psllq xmm2, 0x18
pextrw edi, xmm2, 3
test dil, 1
je 0x140032978
mov byte [rcx + rsi + 3], 0x5c
pextrw edi, xmm1, 2
test dil, 1
je 0x140032988
mov byte [rcx + rsi + 4], 0x5c
movdqa xmm2, xmm1
pslldq xmm2, 5
pextrw edi, xmm2, 5
test dil, 1
je 0x1400329a1
mov byte [rcx + rsi + 5], 0x5c
pextrw edi, xmm1, 3
test dil, 1
je 0x1400329b1
mov byte [rcx + rsi + 6], 0x5c
pslldq xmm1, 7
pextrw edi, xmm1, 7
test dil, 1
je 0x1400329c6
mov byte [rcx + rsi + 7], 0x5c
movq xmm1, qword [rcx + rsi + 8]
pcmpeqb xmm1, xmm0
movd edi, xmm1
test dil, 1
je 0x1400329df
mov byte [rcx + rsi + 8], 0x5c
movdqa xmm2, xmm1
pslld xmm2, 8
movd edi, xmm2
shr edi, 0x10
test dil, 1
je 0x1400329fa
mov byte [rcx + rsi + 9], 0x5c
pextrw edi, xmm1, 1
test dil, 1
je 0x140032a0a
mov byte [rcx + rsi + 0xa], 0x5c
movdqa xmm2, xmm1
psllq xmm2, 0x18
pextrw edi, xmm2, 3
test dil, 1
je 0x140032a23
mov byte [rcx + rsi + 0xb], 0x5c
pextrw edi, xmm1, 2
test dil, 1
je 0x140032a33
mov byte [rcx + rsi + 0xc], 0x5c
movdqa xmm2, xmm1
pslldq xmm2, 5
pextrw edi, xmm2, 5
test dil, 1
je 0x140032a4c
mov byte [rcx + rsi + 0xd], 0x5c
pextrw edi, xmm1, 3
test dil, 1
je 0x140032a5c
mov byte [rcx + rsi + 0xe], 0x5c
pslldq xmm1, 7
pextrw edi, xmm1, 7
test dil, 1
je 0x140032910
mov byte [rcx + rsi + 0xf], 0x5c
jmp 0x140032910
cmp r8, rbx
jne 0x140032bdd
mov rax, qword [r15]
cmp byte [rax], 0x7e
jne 0x140032dfb
cmp qword [r15 + 8], 1
je 0x140032aa5
mov al, byte [rax + 1]
cmp al, 0x5c
je 0x140032aa5
cmp al, 0x2f
jne 0x140032dfb
lea r14, [rsp + 0x60]
mov qword [rsp + 0x48], r14
movaps xmm0, xmmword [0x14016ddb0]
movups xmmword [rsp + 0x50], xmm0
movdqu xmm0, xmmword [0x140192ae8]
movdqa xmmword [rsp + 0xe0], xmm0
mov qword [rsp + 0x40], 0
lea rcx, [rsp + 0xe0]
lea r9, [rsp + 0x40]
mov edx, 0x8000
xor r8d, r8d
call sub.SHELL32.dll_SHGetKnownFolderPath
test eax, eax
jne 0x140032b2b
mov rdi, qword [rsp + 0x40]
mov rcx, rdi
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcslen]
lea rcx, [rsp + 0x48]
mov qword [rsp + 0x20], rcx
lea rcx, [rsp + 0x30]
mov edx, 0xfde9
mov r8, rdi
mov r9, rax
call fcn.140039f50
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.ole32.dll_CoTaskMemFree]
mov rdi, qword [r15]
mov rsi, qword [r15 + 8]
lea rbx, [rsi - 1]
mov r8, qword [rsp + 0x50]
add r8, rbx
cmp qword [rsp + 0x58], r8
jae 0x140032b58
lea rcx, [rsp + 0x48]
mov r9d, 1
mov rdx, r14
call fcn.1400291c0
cmp rsi, 1
je 0x140032b77
add rdi, 1
mov rcx, qword [rsp + 0x48]
add rcx, qword [rsp + 0x50]
mov rdx, rdi
mov r8, rbx
call sub.VCRUNTIME140.dll_memcpy
add rbx, qword [rsp + 0x50]
mov qword [rsp + 0x50], rbx
lea rax, [rsp + 0x48]
cmp rax, r15
je 0x140032deb
mov rdi, qword [r15 + 8]
cmp rdi, rbx
jae 0x140032d93
cmp qword [r15 + 0x10], rbx
jae 0x140032daa
mov qword [r15 + 8], 0
lea rdx, [r15 + 0x18]
mov r9d, 1
mov rcx, r15
mov r8, rbx
call fcn.1400291c0
jmp 0x140032dc1
add rdx, 1
cmp rax, rdx
je 0x140032a83
cmp byte [rdx], 0x2f
jne 0x140032bd0
mov byte [rdx], 0x5c
jmp 0x140032bd0
mov rbx, r8
and rbx, 0xfffffffffffffff0
lea rdx, [rcx + rbx]
xor esi, esi
movdqa xmm0, xmmword [str._]
jmp 0x140032c0d
add rsi, 0x10
cmp rbx, rsi
je 0x140032d6a
movq xmm1, qword [rcx + rsi]
pcmpeqb xmm1, xmm0
movd edi, xmm1
test dil, 1
je 0x140032c24
mov byte [rcx + rsi], 0x2f
movdqa xmm2, xmm1
pslld xmm2, 8
movd edi, xmm2
shr edi, 0x10
test dil, 1
je 0x140032c3f
mov byte [rcx + rsi + 1], 0x2f
pextrw edi, xmm1, 1
test dil, 1
je 0x140032c4f
mov byte [rcx + rsi + 2], 0x2f
movdqa xmm2, xmm1
psllq xmm2, 0x18
pextrw edi, xmm2, 3
test dil, 1
je 0x140032c68
mov byte [rcx + rsi + 3], 0x2f
pextrw edi, xmm1, 2
test dil, 1
je 0x140032c78
mov byte [rcx + rsi + 4], 0x2f
movdqa xmm2, xmm1
pslldq xmm2, 5
pextrw edi, xmm2, 5
test dil, 1
je 0x140032c91
mov byte [rcx + rsi + 5], 0x2f
pextrw edi, xmm1, 3
test dil, 1
je 0x140032ca1
mov byte [rcx + rsi + 6], 0x2f
pslldq xmm1, 7
pextrw edi, xmm1, 7
test dil, 1
je 0x140032cb6
mov byte [rcx + rsi + 7], 0x2f
movq xmm1, qword [rcx + rsi + 8]
pcmpeqb xmm1, xmm0
movd edi, xmm1
test dil, 1
je 0x140032ccf
mov byte [rcx + rsi + 8], 0x2f
movdqa xmm2, xmm1
pslld xmm2, 8
movd edi, xmm2
shr edi, 0x10
test dil, 1
je 0x140032cea
mov byte [rcx + rsi + 9], 0x2f
pextrw edi, xmm1, 1
test dil, 1
je 0x140032cfa
mov byte [rcx + rsi + 0xa], 0x2f
movdqa xmm2, xmm1
psllq xmm2, 0x18
pextrw edi, xmm2, 3
test dil, 1
je 0x140032d13
mov byte [rcx + rsi + 0xb], 0x2f
pextrw edi, xmm1, 2
test dil, 1
je 0x140032d23
mov byte [rcx + rsi + 0xc], 0x2f
movdqa xmm2, xmm1
pslldq xmm2, 5
pextrw edi, xmm2, 5
test dil, 1
je 0x140032d3c
mov byte [rcx + rsi + 0xd], 0x2f
pextrw edi, xmm1, 3
test dil, 1
je 0x140032d4c
mov byte [rcx + rsi + 0xe], 0x2f
pslldq xmm1, 7
pextrw edi, xmm1, 7
test dil, 1
je 0x140032c00
mov byte [rcx + rsi + 0xf], 0x2f
jmp 0x140032c00
cmp r8, rbx
jne 0x140032d89
jmp 0x140032dfb
add rdx, 1
cmp rdx, rax
jae 0x140032dfb
cmp byte [rdx], 0x5c
jne 0x140032d80
mov byte [rdx], 0x2f
jmp 0x140032d80
test rbx, rbx
je 0x140032de7
mov rcx, qword [r15]
mov rdx, qword [rsp + 0x48]
mov r8, rbx
call sub.VCRUNTIME140.dll_memmove
jmp 0x140032de7
test rdi, rdi
je 0x140032dc1
mov rcx, qword [r15]
mov rdx, qword [rsp + 0x48]
mov r8, rdi
call sub.VCRUNTIME140.dll_memmove
jmp 0x140032dc3
xor edi, edi
mov r8, qword [rsp + 0x50]
cmp rdi, r8
je 0x140032de7
mov rax, qword [rsp + 0x48]
lea rdx, [rax + rdi]
add r8, rax
add rdi, qword [r15]
sub r8, rdx
mov rcx, rdi
call sub.VCRUNTIME140.dll_memcpy
mov qword [r15 + 8], rbx
mov rcx, qword [rsp + 0x48]
cmp rcx, r14
je 0x140032dfb
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov rcx, qword [rsp + 0xf8]
xor rcx, rsp
call fcn.14016a260
nop
add rsp, 0x100
pop rbx
pop rdi
pop rsi
pop r14
pop r15
ret