Function at 0x164c9d460
Capabilities:
Get common file path
Get disk information

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
mov qword [rsp + 8], rcx
push rbp
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x60
mov rax, qword [0x164cf5010]
xor rax, rsp
mov qword [rbp - 8], rax
mov r13, qword [rbp + 0x30]
xor r14d, r14d
mov qword [rbp - 0x20], r14
call fcn.164ca23d0
mov rcx, rax
test rax, rax
je 0x164c9d8c5
mov rax, qword [rax]
mov rax, qword [rax + 0x18]
call qword [0x164cdeeb8]
lea rdi, [rax + 0x18]
mov qword [rbp - 0x20], rdi
mov qword [rbp - 0x28], r14
call fcn.164ca23d0
mov rcx, rax
test rax, rax
je 0x164c9d8d0
mov rax, qword [rax]
mov rax, qword [rax + 0x18]
call qword [0x164cdeeb8]
lea rsi, [rax + 0x18]
mov qword [rbp - 0x28], rsi
mov qword [rbp - 0x38], r14
call fcn.164ca23d0
mov rcx, rax
test rax, rax
je 0x164c9d8db
mov rax, qword [rax]
mov rax, qword [rax + 0x18]
call qword [0x164cdeeb8]
lea rbx, [rax + 0x18]
mov qword [rbp - 0x38], rbx
mov qword [rbp - 0x30], r14
call fcn.164ca23d0
mov rcx, rax
test rax, rax
je 0x164c9d8af
mov rax, qword [rax]
mov rax, qword [rax + 0x18]
call qword [0x164cdeeb8]
add rax, 0x18
mov qword [rbp - 0x30], rax
lea rdx, str._Volume
lea r15, [r14 - 1]
cmp rdx, 0x10000
jae 0x164c9d563
movzx edx, dx
lea rcx, [rbp - 0x30]
call fcn.164ca0a10
jmp 0x164c9d57d
mov rax, r15
inc rax
cmp word [rdx + rax*2], 0
jne 0x164c9d566
mov r8d, eax
lea rcx, [rbp - 0x30]
call fcn.164ca1110
nop
mov r12d, 1
mov ecx, r12d
sub ecx, dword [rdi - 8]
mov eax, dword [rdi - 0xc]
sub eax, 0x105
or eax, ecx
jge 0x164c9d5a7
mov edx, 0x105
lea rcx, [rbp - 0x20]
call fcn.164ca0c00
mov rdi, qword [rbp - 0x20]
mov edx, 0x104
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
test eax, eax
jne 0x164c9d5c2
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r14d, eax
movsxd rdx, dword [rdi - 0xc]
mov rcx, rdi
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcsnlen]
test eax, eax
js 0x164c9d8ba
cmp eax, dword [rdi - 0xc]
jg 0x164c9d8ba
mov dword [rdi - 0x10], eax
cdqe
xor ecx, ecx
mov word [rdi + rax*2], cx
test r14d, r14d
jne 0x164c9d7ec
mov ecx, r12d
sub ecx, dword [rsi - 8]
mov eax, dword [rsi - 0xc]
sub eax, 0x105
or eax, ecx
jge 0x164c9d618
mov edx, 0x105
lea rcx, [rbp - 0x28]
call fcn.164ca0c00
mov rsi, qword [rbp - 0x28]
mov r8d, 0x104
mov rdx, rsi
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GetVolumePathNameW]
test eax, eax
jne 0x164c9d637
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r14d, eax
movsxd rdx, dword [rsi - 0xc]
mov rcx, rsi
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcsnlen]
test eax, eax
js 0x164c9d8ba
cmp eax, dword [rsi - 0xc]
jg 0x164c9d8ba
mov dword [rsi - 0x10], eax
cdqe
xor ecx, ecx
mov word [rsi + rax*2], cx
test r14d, r14d
jne 0x164c9d7ec
mov ecx, r12d
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, 0x105
or eax, ecx
jge 0x164c9d68d
mov edx, 0x105
lea rcx, [rbp - 0x38]
call fcn.164ca0c00
mov rbx, qword [rbp - 0x38]
mov r8d, 0x104
mov rdx, rbx
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetVolumeNameForVolumeMountPointW]
test eax, eax
jne 0x164c9d6ac
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r14d, eax
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcsnlen]
test eax, eax
js 0x164c9d8ba
cmp eax, dword [rbx - 0xc]
jg 0x164c9d8ba
mov dword [rbx - 0x10], eax
cdqe
xor edx, edx
mov word [rbx + rax*2], dx
test r14d, r14d
jne 0x164c9d7ec
mov rcx, rbx
mov edi, edx
movzx eax, word [rbx]
test ax, ax
je 0x164c9d759
nop dword [rax + rax]
cmp ax, 0x5c
jne 0x164c9d705
mov rax, rcx
test rdi, rdi
cmovne rax, rdi
mov rdi, rax
jmp 0x164c9d708
mov rdi, rdx
add rcx, 2
movzx eax, word [rcx]
test ax, ax
jne 0x164c9d6f0
test rdi, rdi
je 0x164c9d759
sub rdi, rbx
sar rdi, 1
test edi, edi
js 0x164c9d8ba
sub r12d, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, edi
or eax, r12d
jge 0x164c9d746
mov edx, edi
lea rcx, [rbp - 0x38]
call fcn.164ca0c00
mov rbx, qword [rbp - 0x38]
xor edx, edx
cmp edi, dword [rbx - 0xc]
jg 0x164c9d8ba
mov dword [rbx - 0x10], edi
movsxd rax, edi
mov word [rbx + rax*2], dx
mov rbx, qword [rbp - 0x30]
lea rsi, [rbx - 0x10]
mov r8d, dword [rsi]
lea rdx, [rbp - 0x40]
lea rcx, [rbp - 0x38]
call fcn.164ca0150
nop
mov rcx, qword [rax]
sub rbx, rcx
nop dword [rax + rax]
movzx edi, word [rcx]
movzx eax, word [rcx + rbx]
sub edi, eax
jne 0x164c9d793
add rcx, 2
test eax, eax
jne 0x164c9d780
mov rdx, qword [rbp - 0x40]
add rdx, 0xffffffffffffffe8
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x164c9d7b8
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [0x164cdeeb8]
test edi, edi
je 0x164c9d7c4
mov r14d, 0x32
jmp 0x164c9d7ec
movsxd rcx, dword [rsi]
mov rax, qword [rbp - 0x38]
lea rcx, [rax + rcx*2]
lea rdx, [rbp - 0x18]
call qword [sym.imp.ole32.dll_CLSIDFromString]
test eax, eax
je 0x164c9d7e3
movzx r14d, ax
jmp 0x164c9d7ec
movups xmm0, xmmword [rbp - 0x18]
movups xmmword [r13], xmm0
mov rdx, qword [rbp - 0x30]
add rdx, 0xffffffffffffffe8
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x164c9d812
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [0x164cdeeb8]
nop
mov rdx, qword [rbp - 0x38]
add rdx, 0xffffffffffffffe8
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x164c9d838
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [0x164cdeeb8]
nop
mov rdx, qword [rbp - 0x28]
add rdx, 0xffffffffffffffe8
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x164c9d85e
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [0x164cdeeb8]
nop
mov rdx, qword [rbp - 0x20]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r15d
sub r15d, 1
jg 0x164c9d882
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [0x164cdeeb8]
mov eax, r14d
mov rcx, qword [rbp - 8]
xor rcx, rsp
call fcn.164cd6f70
lea r11, [rsp + 0x60]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
mov ecx, 0x80004005
call fcn.164ca2080
nop
mov ecx, 0x80070057
call fcn.164ca2080
nop
mov ecx, 0x80004005
call fcn.164ca2080
nop
mov ecx, 0x80004005
call fcn.164ca2080
nop
mov ecx, 0x80004005
call fcn.164ca2080
int3