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

Disassembly:
mov rax, rsp
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x478]
sub rsp, 0x550
mov qword [rbp - 0x68], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov rax, qword [0x1400c2688]
xor rax, rsp
mov qword [rbp + 0x440], rax
mov r15d, edx
mov rsi, rcx
call fcn.1400279a4
mov rcx, rax
xor r12d, r12d
test rax, rax
je 0x140021fa4
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x48], rax
mov edx, 0x449
mov rcx, rsi
call fcn.140032178
mov r14, rax
xor r9d, r9d
xor r8d, r8d
mov edx, 0x14b
mov rcx, qword [rax + 0x40]
call qword [sym.imp.USER32.dll_SendMessageW]
lea edi, [r12 + 0x43]
lea r13d, [r12 + 1]
movzx ecx, di
call fcn.140002d60
test eax, eax
je 0x140021cda
movabs rax, 0x5c003a0020
mov qword [rbp - 0x10], rax
mov word [rbp - 0x10], di
mov dword [rbp - 0x2c], r12d
mov qword [rbp - 0x28], r12
lea rdx, [rbp - 0x30]
movzx ecx, di
call fcn.1400620e0
cmp dword [rbp - 0x2c], r13d
jne 0x140021ba9
lea rcx, [0x14008be2c]
call fcn.1400675ec
mov r8d, eax
lea rdx, [0x14008be2c]
lea rcx, [rsp + 0x48]
call fcn.1400054b4
lea rcx, [rbp - 0x10]
call fcn.1400675ec
mov r8d, eax
lea rdx, [rbp - 0x10]
lea rcx, [rsp + 0x48]
call fcn.1400054b4
xor edx, edx
mov r8d, 0x208
lea rcx, [rbp + 0x230]
call fcn.140064220
xor edx, edx
lea r8d, [rdx + 0x20]
lea rcx, [rbp - 8]
call fcn.140064220
mov dword [rsp + 0x38], reloc.OLEAUT32.dll_SafeArrayGetDim
lea rax, [rbp - 8]
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], r12
xor r9d, r9d
mov r8d, 0x104
lea rdx, [rbp + 0x230]
lea rcx, [rbp - 0x10]
call qword [sym.imp.KERNEL32.dll_GetVolumeInformationW]
call fcn.1400279a4
test rax, rax
je 0x140021faf
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x18]
add rax, 0x18
mov qword [rsp + 0x50], rax
movzx r9d, di
lea rax, [rbp - 8]
mov qword [rsp + 0x20], rax
lea r8, [rbp + 0x230]
lea rdx, str._s___c:___s
lea rcx, [rsp + 0x50]
call fcn.140004f88
mov dword [rsp + 0x60], InitCommonControls
mov rbx, qword [rsp + 0x50]
mov qword [rsp + 0x70], rbx
mov eax, dword [rbx - 0x10]
mov dword [rsp + 0x78], eax
or qword [rsp + 0x68], 0xffffffffffffffff
cmp dword [rbp - 0x2c], r13d
jne 0x140021c8f
mov dword [rsp + 0x40], r12d
lea rdx, [rsp + 0x40]
movzx ecx, di
call fcn.140061f10
mov al, byte [rsp + 0x40]
and al, r13b
neg al
sbb ecx, ecx
neg ecx
add ecx, r13d
jmp 0x140021c92
mov ecx, r12d
mov dword [rsp + 0x7c], ecx
mov dword [rbp - 0x80], ecx
mov dword [rbp - 0x7c], ecx
lea rdx, [rsp + 0x60]
mov rcx, r14
call fcn.1400434f4
movzx r9d, di
movsxd r8, eax
mov edx, 0x151
mov rcx, qword [r14 + 0x40]
call qword [sym.imp.USER32.dll_SendMessageW]
nop
lea rdx, [rbx - 0x18]
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140021cda
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
add di, r13w
cmp di, 0x5a
jbe 0x140021b33
xor r9d, r9d
xor r8d, r8d
mov edx, 0x14e
mov rcx, qword [r14 + 0x40]
call qword [sym.imp.USER32.dll_SendMessageW]
mov rcx, rsi
call fcn.140020a84
call fcn.1400293ac
mov r8d, 0x2711
lea rdx, [rsp + 0x58]
mov rcx, qword [rax + 8]
call fcn.14000d8dc
nop
mov rbx, qword [rax]
mov edx, 0x40f
mov rcx, rsi
call fcn.140032178
mov rcx, rax
mov rdx, rbx
call fcn.140032d38
nop
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
or rdi, 0xffffffffffffffff
mov eax, edi
lock xadd dword [rdx + 0x10], eax
add eax, edi
test eax, eax
jg 0x140021d5e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test r15d, r15d
jne 0x140021d7e
call fcn.1400293ac
mov rdx, qword [rax + 8]
mov eax, dword [rdx + 0x17c]
cmp dword [rsi + 0x138], eax
je 0x140021f55
call fcn.1400293ac
mov r8, qword [rax + 8]
mov eax, dword [r8 + 0x17c]
mov dword [rsi + 0x138], eax
mov edx, 0x3ed
mov rcx, rsi
call fcn.140032178
mov r13, rax
xor r9d, r9d
xor r8d, r8d
mov edx, 0x1009
mov rcx, qword [rax + 0x40]
call qword [sym.imp.USER32.dll_SendMessageW]
mov edx, 0x104
lea rcx, [rbp + 0x20]
call qword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
lea r8, [0x140085174]
mov ebx, 0x105
mov edx, ebx
lea rcx, [rbp + 0x20]
call fcn.1400673e8
lea r8, str.diskpt.dat
mov edx, ebx
lea rcx, [rbp + 0x20]
call fcn.1400673e8
mov dword [rbp - 0x1c], r12d
lea rdx, [rbp - 0x20]
movzx ecx, word [rbp + 0x20]
call fcn.1400620e0
lea rcx, [rbp - 0x58]
call fcn.140037358
nop
xor r9d, r9d
mov r8d, 0x8040
lea rdx, [rbp + 0x20]
lea rcx, [rbp - 0x58]
call fcn.140037998
test eax, eax
je 0x140021f4b
lea rcx, [rbp - 0x58]
call fcn.140037884
mov rsi, rax
movsxd rcx, eax
movabs rax, 0x5197f7d73404147
mul rcx
mov rbx, rcx
sub rbx, rdx
shr rbx, 1
add rbx, rdx
shr rbx, 9
imul rax, rbx, 0x3ec
sub rcx, rax
jne 0x140021f4b
mov eax, 0x3ec
mul rbx
cmovo rax, rdi
mov rcx, rax
call fcn.14002700c
mov rdi, rax
test rax, rax
je 0x140021f47
mov r8d, esi
mov rdx, rax
lea rcx, [rbp - 0x58]
call fcn.140037bdc
cmp esi, eax
jne 0x140021f3f
test ebx, ebx
jle 0x140021f3f
mov r15, r12
mov r14, rdi
lea rsi, [rdi + 4]
mov ebx, ebx
cmp dword [r14], 1
jne 0x140021f20
mov word [r14 + 0x3ea], r12w
mov rcx, rsi
call fcn.1400675ec
add rax, r15
cmp word [rdi + rax*2 + 2], 0x2a
jne 0x140021ee4
mov rcx, rsi
call fcn.1400675ec
add rax, r15
cmp word [rdi + rax*2], 0x3a
je 0x140021f20
xor r9d, r9d
xor r8d, r8d
mov edx, 0x1004
mov rcx, qword [r13 + 0x40]
call qword [sym.imp.USER32.dll_SendMessageW]
mov qword [rsp + 0x38], r12
mov dword [rsp + 0x30], r12d
mov dword [rsp + 0x28], r12d
mov dword [rsp + 0x20], r12d
mov r9, rsi
mov r8d, eax
mov edx, 1
mov rcx, r13
call fcn.1400368bc
add rsi, 0x3ec
add r14, 0x3ec
add r15, 0x1f6
sub rbx, 1
jne 0x140021eb1
mov rcx, rdi
call fcn.140027004
or rdi, 0xffffffffffffffff
lea rcx, [rbp - 0x58]
call fcn.1400373b0
nop
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
add eax, edi
test eax, eax
jg 0x140021f74
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rcx, qword [rbp + 0x440]
xor rcx, rsp
call fcn.14005ef50
lea r11, [rsp + 0x550]
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.140003bc0
nop
mov ecx, 0x80004005
call fcn.140003bc0
int3