Function at 0x18005c010
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, 0x260
mov rax, qword [0x180334940]
xor rax, rsp
mov qword [rsp + 0x250], rax
mov r14, rcx
mov qword [rsp + 0x30], rcx
xor edi, edi
mov dword [rsp + 0x28], edi
lea rcx, vtable.CVolObject.0
mov qword [r14], rcx
mov qword [r14 + 8], rdi
mov qword [r14 + 0x10], rdi
lea rax, vtable.CWString.0
mov qword [r14], rax
lea rbx, [r14 + 0x20]
mov qword [rsp + 0x20], rbx
mov qword [rbx], rcx
mov qword [rbx + 8], rdi
mov qword [rbx + 0x10], rdi
lea rax, vtable.CVolMem.0
mov qword [rbx], rax
mov qword [rbx + 0x18], rdi
mov qword [rbx + 0x28], rdi
mov qword [rbx + 0x20], rdi
mov r12d, 0x40
mov qword [rbx + 0x30], r12
mov qword [r14 + 0x18], rdi
mov qword [r14 + 0x50], 0xfe
mov dword [rsp + 0x28], 1
mov word [rsp + 0x40], di
xor r9d, r9d
lea r8d, [rdi + 0x10]
lea rdx, [rsp + 0x40]
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x18005c34c
mov rax, qword [r14 + 0x18]
lea rbp, [rdi - 1]
test rax, rax
jne 0x18005c0eb
cmp qword [r14 + 0x48], rax
je 0x18005c0f5
cmp qword [rbx + 0x28], rax
je 0x18005c0f5
mov rax, qword [rbx + 0x18]
lea rcx, [rsp + 0x40]
cmp rcx, rax
je 0x18005c163
mov qword [r14 + 0x18], rdi
mov rdx, qword [rbx + 0x18]
test rdx, rdx
je 0x18005c10b
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x18]
mov qword [rbx + 0x18], rdi
mov qword [rbx + 0x28], rdi
mov qword [rbx + 0x20], rdi
cmp word [rsp + 0x40], 0
je 0x18005c163
lea rcx, [rsp + 0x40]
mov rax, rbp
nop word [rax + rax]
lea rax, [rax + 1]
cmp word [rcx + rax*2], 0
jne 0x18005c130
lea rsi, [rax*2 + 2]
test rsi, rsi
jle 0x18005c163
mov rdx, rsi
mov rcx, rbx
call fcn.1800a42b0
mov r8, rsi
lea rdx, [rsp + 0x40]
mov rcx, rax
call fcn.180246360
mov rsi, qword [r14 + 0x18]
test rsi, rsi
je 0x18005c17c
mov rax, rbp
nop
inc rax
cmp word [rsi + rax*2], 0
jne 0x18005c170
jmp 0x18005c18f
mov rax, qword [r14 + 0x48]
test rax, rax
je 0x18005c250
shr rax, 1
dec rax
test rax, rax
jle 0x18005c1c8
test rsi, rsi
je 0x18005c19e
mov rcx, rsi
jmp 0x18005c1bc
cmp qword [r14 + 0x48], 0
jne 0x18005c1ae
lea rcx, [0x1802d91d0]
jmp 0x18005c1bc
cmp qword [rbx + 0x28], 0
mov rcx, rdi
je 0x18005c1bc
mov rcx, qword [rbx + 0x18]
cmp word [rcx + rax*2 - 2], 0x5c
je 0x18005c34c
test rsi, rsi
je 0x18005c250
lea rbp, [rbp + 1]
cmp word [rsi + rbp*2], 0
jne 0x18005c1d1
lea rbp, [rbp*2 + 2]
mov qword [rbx + 0x28], rdi
cmp qword [rbx + 0x20], rbp
jl 0x18005c22e
cmp rbp, 2
jne 0x18005c204
mov rcx, qword [rbx + 0x18]
movzx eax, word [rsi]
mov word [rcx], ax
add qword [rbx + 0x28], rbp
jmp 0x18005c24c
cmp rbp, 4
jne 0x18005c218
mov rcx, qword [rbx + 0x18]
mov eax, dword [rsi]
mov dword [rcx], eax
add qword [rbx + 0x28], rbp
jmp 0x18005c24c
cmp rbp, 8
jne 0x18005c22e
mov rcx, qword [rbx + 0x18]
mov rax, qword [rsi]
mov qword [rcx], rax
add qword [rbx + 0x28], rbp
jmp 0x18005c24c
test rbp, rbp
jle 0x18005c24c
mov rdx, rbp
mov rcx, rbx
call fcn.1800a42b0
mov r8, rbp
mov rdx, rsi
mov rcx, rax
call fcn.180246360
mov qword [r14 + 0x18], rdi
mov rsi, qword [rbx + 0x28]
cmp rsi, 2
jb 0x18005c26e
mov rax, qword [rbx + 0x18]
cmp word [rax + rsi - 2], 0
jne 0x18005c26e
add rsi, 0xfffffffffffffffe
mov qword [rbx + 0x28], rsi
mov dword [rsp + 0x20], 0x5c
mov rdx, qword [rbx + 0x20]
mov rax, rdx
sub rax, rsi
cmp rax, 4
jl 0x18005c29b
mov rcx, qword [rbx + 0x18]
mov eax, dword [rsp + 0x20]
mov dword [rsi + rcx], eax
add qword [rbx + 0x28], 4
jmp 0x18005c34c
lea r15, [rsi + 4]
cmp r15, rsi
jne 0x18005c2ad
mov rdi, qword [rbx + 0x18]
jmp 0x18005c345
mov rcx, qword [rbx + 0x18]
test r15, r15
jne 0x18005c2d5
test rcx, rcx
je 0x18005c2c7
mov rax, qword [rbx]
mov rdx, rcx
mov rcx, rbx
call qword [rax + 0x18]
mov qword [rbx + 0x18], rdi
mov qword [rbx + 0x28], rdi
mov qword [rbx + 0x20], rdi
jmp 0x18005c345
mov rbp, qword [rbx + 0x30]
test rcx, rcx
jne 0x18005c300
test rbp, rbp
cmovle rbp, r12
mov rax, r15
cqo
idiv rbp
sub rbp, rdx
add rbp, r15
mov rax, qword [rbx]
mov rdx, rbp
mov rcx, rbx
call qword [rax]
jmp 0x18005c336
test rbp, rbp
cmovle rbp, r12
cmp rdx, r15
jl 0x18005c319
sub rdx, r15
cmp rdx, rbp
jg 0x18005c319
mov rdi, rcx
jmp 0x18005c341
mov rax, r15
cqo
idiv rbp
sub rbp, rdx
add rbp, r15
mov rax, qword [rbx]
mov r8, rbp
mov rdx, rcx
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
mov qword [rbx + 0x20], rbp
mov qword [rbx + 0x18], rax
mov rdi, rax
mov qword [rbx + 0x28], r15
mov eax, dword [rsp + 0x20]
mov dword [rdi + rsi], eax
mov rax, r14
mov rcx, qword [rsp + 0x250]
xor rcx, rsp
call fcn.1802439b0
lea r11, [rsp + 0x260]
mov rbx, qword [r11 + 0x38]
mov rbp, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rsi
ret