Function at 0x100021f6c
Capabilities:
Get disk information

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
sub rsp, 0x60
mov qword [rsp + 0x28], 0xfffffffffffffffe
mov rax, qword [0x100039110]
xor rax, rsp
mov qword [rsp + 0x58], rax
mov rsi, r8
mov rdi, rdx
mov rbp, rcx
xor r12d, r12d
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 3
jne 0x100022063
mov ebx, r12d
mov r8, qword [rbp + 8]
cmp r8, r12
jne 0x100021fbe
mov rdx, r12
jmp 0x100021fe0
mov rcx, qword [rbp + 0x10]
sub rcx, r8
movabs rax, 0x6666666666666667
imul rcx
sar rdx, 4
mov rax, rdx
shr rax, 0x3f
add rdx, rax
mov eax, ebx
cmp rax, rdx
jae 0x100022083
lea rax, [rax + rax*4]
lea rdx, [r8 + rax*8]
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r12
mov word [rsp + 0x38], r12w
or r9, 0xffffffffffffffff
xor r8d, r8d
lea rcx, [rsp + 0x30]
call fcn.100018038
nop
lea rcx, [rsp + 0x38]
cmp qword [rsp + 0x50], 8
cmovae rcx, qword [rsp + 0x38]
mov rdx, rdi
call qword [sym.imp.KERNEL32.dll_lstrcmpW]
cmp eax, r12d
je 0x100022051
cmp qword [rsp + 0x50], 8
jb 0x10002204a
mov rcx, qword [rsp + 0x38]
call fcn.10002deec
inc ebx
jmp 0x100021fb0
cmp qword [rsp + 0x50], 8
jb 0x100022063
mov rcx, qword [rsp + 0x38]
call fcn.10002deec
mov r8d, 0x104
mov rdx, rdi
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FindNextVolumeW]
cmp eax, r12d
je 0x100022158
jmp 0x100021f9b
mov ebx, 0xc105
mov ecx, ebx
call fcn.100029738
cmp eax, r12d
je 0x1000220a6
mov r8, rdi
lea rdx, [0x10000b300]
movzx ecx, bx
call fcn.1000297dc
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FindVolumeClose]
cmp eax, r12d
jne 0x100022151
mov ecx, ebx
call fcn.100029738
cmp eax, r12d
je 0x1000220da
lea r8, [0x10000b3b8]
lea rdx, [0x10000b3f0]
movzx ecx, bx
call fcn.1000297dc
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
movzx edi, ax
or edi, 0x80070000
cmp eax, r12d
cmovle edi, eax
cmp eax, r12d
je 0x100022151
mov ebx, 0x8105
mov ecx, ebx
call fcn.100029738
cmp eax, r12d
je 0x10002211d
lea r8, [0x10000b3b8]
lea rdx, [0x10000b490]
movzx ecx, bx
call fcn.1000297dc
mov ecx, ebx
call fcn.100029738
cmp eax, r12d
je 0x10002213b
mov r8d, esi
lea rdx, [0x10000b520]
movzx ecx, bx
call fcn.1000297dc
mov dword [rsp + 0x20], edi
lea rdx, [0x100036c80]
lea rcx, [rsp + 0x20]
call sub.msvcrt.dll__CxxThrowException
int3
xor al, al
jmp 0x10002220a
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FindVolumeClose]
cmp eax, r12d
jne 0x100022208
mov ebx, 0xc105
mov ecx, ebx
call fcn.100029738
cmp eax, r12d
je 0x100022191
lea r8, [0x10000b3b8]
lea rdx, [0x10000b3f0]
movzx ecx, bx
call fcn.1000297dc
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
movzx edi, ax
or edi, 0x80070000
cmp eax, r12d
cmovle edi, eax
cmp eax, r12d
je 0x100022208
mov ebx, 0x8105
mov ecx, ebx
call fcn.100029738
cmp eax, r12d
je 0x1000221d4
lea r8, [0x10000b3b8]
lea rdx, [0x10000b490]
movzx ecx, bx
call fcn.1000297dc
mov ecx, ebx
call fcn.100029738
cmp eax, r12d
je 0x1000221f2
mov r8d, esi
lea rdx, [0x10000b520]
movzx ecx, bx
call fcn.1000297dc
mov dword [rsp + 0x20], edi
lea rdx, [0x100036c80]
lea rcx, [rsp + 0x20]
call sub.msvcrt.dll__CxxThrowException
int3
mov al, 1
mov rcx, qword [rsp + 0x58]
xor rcx, rsp
call fcn.10002e2d0
add rsp, 0x60
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret