Function at 0x140028670
Capabilities:
Get disk information

Disassembly:
mov byte [rsp + 0x20], r9b
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
push rbx
push rbp
push rsi
push rdi
sub rsp, 0x2a8
mov al, r9b
mov dil, r9b
mov rbx, rcx
and al, 0xf
mov byte [rsp + 0x2d0], al
mov eax, 1
mov ebp, eax
mov dword [rsp + 0x24], eax
call fcn.1400b9a24
xor ecx, ecx
lea esi, [rax + 0x20d]
mov qword [rsp + 0x38], rax
test dil, 0xf0
jne 0x1400286e1
cmp eax, 4
jle 0x1400286e1
cdqe
lea rdx, [0x1400d90b0]
lea rcx, [rbx + rax*2 - 8]
call fcn.1400b9c48
xor ecx, ecx
mov dword [rsp + 0x20], ebp
cmp eax, ecx
je 0x1400286e5
mov dword [rsp + 0x20], ecx
lea edx, [rsi + 0x325]
lea rcx, [rsp + 0x40]
call fcn.14004bedc
mov rdi, qword [rsp + 0x40]
movsxd rax, esi
mov r11d, 0x5c
lea rsi, [rdi + rax*2]
cmp word [rbx], r11w
jne 0x140028773
mov rdx, rsi
mov ecx, 0x324
call qword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsW]
jmp 0x140028767
lea r9, [rbx + 2]
lea rdx, str._s_s
mov r8, rsi
mov rcx, rdi
call fcn.1400118ec
mov r9b, byte [rsp + 0x2e8]
mov r8, qword [rsp + 0x2e0]
mov rdx, qword [rsp + 0x2d8]
mov rcx, rdi
call fcn.140028670
neg eax
sbb ecx, ecx
and ebp, ecx
mov rcx, rsi
call fcn.1400b9a24
inc eax
lea rsi, [rsi + rax*2]
xor eax, eax
cmp word [rsi], ax
jne 0x14002871d
jmp 0x140028ac4
mov r10, qword [rsp + 0x38]
mov rdx, rbx
mov rcx, rdi
lea esi, [r10 + 1]
movsxd r8, esi
add r8, r8
call fcn.1400177f8
xor eax, eax
cmp dword [rsp + 0x20], eax
jne 0x1400287cb
xor ebx, ebx
movsxd rax, r10d
lea r8d, [rbx + 0x16]
lea rcx, [rdi + rax*2]
cmp byte [rsp + 0x2d0], bl
jne 0x1400287bd
lea rdx, str.INF.INF
call fcn.1400177f8
lea esi, [r10 + 5]
jmp 0x1400287f5
lea rdx, str..INF
call fcn.1400177f8
jmp 0x1400287f5
mov r8d, r11d
xor edx, edx
mov rcx, rbx
call qword [sym.imp.SHLWAPI.dll_StrRChrW]
mov rsi, rax
xor eax, eax
cmp rsi, rax
je 0x1400287f1
sub rsi, rbx
add rsi, 2
sar rsi, 1
xor ebx, ebx
jmp 0x1400287f5
xor ebx, ebx
mov esi, ebx
lea rcx, [rsp + 0x54]
xor edx, edx
mov r8d, 0x24c
mov dword [rsp + 0x50], ebx
call fcn.1400b93b0
lea r8, [rsp + 0x50]
lea rcx, [rsp + 0x28]
mov rdx, rdi
mov qword [rsp + 0x28], rbx
call fcn.1400b8aa4
cmp qword [rsp + 0x28], rbx
je 0x1400289b3
movzx eax, word [0x1400f1d50]
lea rcx, [rsp + 0x7c]
shl eax, 0x10
mov dword [rsp + 0x30], eax
call qword [sym.imp.KERNEL32.dll_lstrlenW]
lea rdx, [rsp + 0x7c]
inc eax
movsxd r8, eax
movsxd rax, esi
lea rcx, [rdi + rax*2]
add r8, r8
call fcn.1400177f8
mov rax, qword [rsp + 0x2e0]
cmp rax, rbx
je 0x14002887b
mov rdx, rdi
mov rcx, rax
call fcn.140013d78
cmp al, bl
je 0x1400288d3
mov rcx, qword [rsp + 0x2d8]
mov rdx, rdi
call fcn.140028370
xor r8d, r8d
mov rbx, rax
cmp byte [0x1400f1cb4], r8b
jne 0x1400288be
cmp rax, r8
je 0x1400288c7
mov eax, r8d
mov dword [rsp + 0x20], eax
cmp byte [0x1400f1cb6], r8b
je 0x140028910
mov edx, dword [rsp + 0x30]
mov rcx, rdi
call fcn.14001ad00
xor r8d, r8d
cmp rbx, r8
je 0x1400288c7
mov word [rbx], r8w
mov eax, dword [rsp + 0x24]
neg eax
sbb ecx, ecx
and ebp, ecx
xor ebx, ebx
mov rcx, qword [rsp + 0x28]
lea rdx, [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_FindNextFileW]
cmp eax, ebx
jne 0x14002882d
mov rcx, qword [rsp + 0x28]
xor esi, esi
cmp rcx, rsi
je 0x1400289b5
cmp rcx, 0xffffffffffffffff
je 0x1400289b5
call qword [sym.imp.KERNEL32.dll_FindClose]
jmp 0x1400289b5
mov cl, byte [0x1400f1d53]
cmp cl, 3
je 0x140028924
cmp byte [0x1400f1d52], r8b
je 0x140028973
mov edx, dword [rsp + 0x24]
cmp byte [0x1400f1d52], r8b
je 0x14002893e
mov rdx, rbx
mov rcx, rdi
call fcn.140013e84
jmp 0x14002894e
cmp cl, 3
jne 0x14002895b
mov rdx, rbx
mov rcx, rdi
call fcn.140013f9c
mov edx, eax
mov dword [rsp + 0x24], eax
mov eax, dword [rsp + 0x20]
xor r8d, r8d
inc eax
cmp eax, 2
mov dword [rsp + 0x20], eax
jge 0x1400288be
cmp edx, r8d
je 0x1400288be
mov r8d, dword [rsp + 0x30]
mov rdx, rdi
mov rcx, rbx
call fcn.14001abd8
mov edx, eax
mov dword [rsp + 0x24], eax
mov eax, dword [rsp + 0x20]
inc eax
cmp eax, 2
mov dword [rsp + 0x20], eax
jge 0x1400288bb
xor r8d, r8d
cmp edx, r8d
je 0x1400288be
mov cl, byte [0x1400f1d53]
jmp 0x140028928
xor esi, esi
cmp byte [rsp + 0x2d0], 1
mov qword [rsp + 0x28], rsi
je 0x1400289cb
mov ebp, esi
jmp 0x140028abf
mov r10, qword [rsp + 0x38]
lea rdx, str..
mov r8d, 0xc
movsxd rax, r10d
lea rcx, [rdi + rax*2]
call fcn.1400177f8
lea r8, [rsp + 0x50]
lea rcx, [rsp + 0x28]
mov rdx, rdi
lea ebx, [r10 + 1]
mov word [rsp + 0x80], si
call fcn.1400b8aa4
cmp qword [rsp + 0x28], rsi
je 0x1400289c4
mov ecx, 0x2e
test byte [rsp + 0x50], 0x10
je 0x140028a8c
cmp cx, word [rsp + 0x7c]
jne 0x140028a3a
movzx eax, word [rsp + 0x7e]
cmp ax, si
je 0x140028a8c
cmp cx, ax
jne 0x140028a3a
cmp word [rsp + 0x80], si
je 0x140028a8c
lea rcx, [rsp + 0x7c]
call qword [sym.imp.KERNEL32.dll_lstrlenW]
lea rdx, [rsp + 0x7c]
inc eax
movsxd r8, eax
movsxd rax, ebx
lea rcx, [rdi + rax*2]
add r8, r8
call fcn.1400177f8
mov r9b, byte [rsp + 0x2e8]
mov r8, qword [rsp + 0x2e0]
mov rdx, qword [rsp + 0x2d8]
mov rcx, rdi
call fcn.140028670
mov word [rsp + 0x80], si
neg eax
sbb ecx, ecx
and ebp, ecx
mov rcx, qword [rsp + 0x28]
lea rdx, [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_FindNextFileW]
mov ecx, 0x2e
cmp eax, esi
jne 0x140028a13
mov rcx, qword [rsp + 0x28]
cmp rcx, rsi
je 0x140028abf
cmp rcx, 0xffffffffffffffff
je 0x140028abf
call qword [sym.imp.KERNEL32.dll_FindClose]
mov qword [rsp + 0x28], rsi
lea rcx, [rsp + 0x40]
call fcn.140044f24
mov eax, ebp
add rsp, 0x2a8
pop rdi
pop rsi
pop rbp
pop rbx
ret