Function at 0x18010fdb0
Capabilities:
Get disk information

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x70]
sub rsp, 0x170
mov qword [rsp + 0x40], 0xfffffffffffffffe
mov qword [rsp + 0x1c0], rbx
mov rax, qword [0x1801903f8]
xor rax, rsp
mov qword [rbp + 0x60], rax
mov r15, rdx
mov r14, rcx
or r8, 0xffffffffffffffff
xor edx, edx
call fcn.18011a890
or r8, 0xffffffffffffffff
xor edx, edx
mov rcx, r15
call fcn.18011a890
call qword [sym.imp.KERNEL32.dll_GetLogicalDrives]
mov dword [rsp + 0x38], eax
mov r13d, 1
xor r12d, r12d
nop dword [rax]
test eax, r13d
je 0x180110148
movzx eax, word [0x18015bb28]
mov word [rsp + 0x20], ax
movzx eax, byte [0x18015bb2a]
mov byte [rsp + 0x22], al
xor eax, eax
mov byte [rsp + 0x23], al
add byte [rsp + 0x20], r12b
call fcn.180032e40
xor ecx, ecx
test rax, rax
setne cl
test ecx, ecx
je 0x1801101a6
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + reloc.OLEAUT32.dll_SafeArrayGetElement]
lea r10, [rax + 0x18]
mov qword [rsp + 0x30], r10
lea rcx, [rsp + 0x20]
lea rax, [rsp + 0x20]
test rax, 0xffffffffffff0000
jne 0x18010feac
movzx edi, cx
mov ecx, edi
call fcn.180035ed8
test rax, rax
je 0x18010ff99
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.180037a70
jmp 0x18010ff99
xor eax, eax
or rcx, 0xffffffffffffffff
lea rdi, [rsp + 0x20]
repne scasb al, byte [rdi]
not rcx
dec rcx
mov rdi, rcx
test ecx, ecx
jne 0x18010ff20
lea rdx, [r10 - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], eax
je 0x18010ff99
cmp dword [rdx + 0x10], eax
jge 0x18010fef5
cmp dword [r10 - 0xc], eax
jl 0x180110159
mov dword [r10 - 0x10], eax
mov rax, qword [rsp + 0x30]
mov byte [rax], cl
jmp 0x18010ff99
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x18010ff0c
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x30], rax
jmp 0x18010ff99
mov esi, dword [r10 - 0x10]
lea rbx, [rsp + 0x20]
sub rbx, r10
test ecx, ecx
js 0x18011019b
mov ecx, 1
sub ecx, dword [r10 - 8]
mov eax, dword [r10 - 0xc]
sub eax, edi
or eax, ecx
jge 0x18010ff58
mov edx, edi
lea rcx, [rsp + 0x30]
call fcn.180033628
mov r10, qword [rsp + 0x30]
movsxd rdx, dword [r10 - 0xc]
mov rcx, r10
cmp rbx, rsi
movsxd rsi, edi
mov r9, rsi
ja 0x18010ff75
lea r8, [rbx + r10]
call fcn.18007f2bc
jmp 0x18010ff7f
lea r8, [rsp + 0x20]
call fcn.18007f224
mov rax, qword [rsp + 0x30]
cmp edi, dword [rax - 0xc]
jg 0x180110190
mov dword [rax - 0x10], edi
mov rax, qword [rsp + 0x30]
mov byte [rsi + rax], 0
lea r8, [rsp + 0x30]
mov rdx, qword [r14 + 0x10]
mov rcx, r14
call fcn.18011b2c0
call fcn.180032e40
xor ecx, ecx
test rax, rax
setne cl
test ecx, ecx
je 0x180110185
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x28], rax
mov byte [rsp + 0x50], 0
xor edx, edx
mov r8d, 0x103
lea rcx, [rsp + 0x51]
call fcn.18007ead0
mov r8d, 0x104
lea rdx, [rsp + 0x50]
lea rcx, [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_QueryDosDeviceA]
mov byte [rbp + 0x53], 0
xor eax, eax
or rcx, 0xffffffffffffffff
lea rdi, [rsp + 0x50]
repne scasb al, byte [rdi]
not rcx
dec rcx
mov rdi, rcx
test ecx, ecx
jne 0x180110079
mov rax, qword [rsp + 0x28]
lea rdx, [rax - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], ecx
je 0x1801100f1
cmp dword [rdx + 0x10], ecx
jge 0x18011004e
cmp dword [rax - 0xc], ecx
jl 0x180110164
mov dword [rax - 0x10], ecx
mov rax, qword [rsp + 0x28]
mov byte [rax], cl
jmp 0x1801100f1
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x180110065
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x28], rax
jmp 0x1801100f1
mov rcx, qword [rsp + 0x28]
mov esi, dword [rcx - 0x10]
lea rbx, [rsp + 0x50]
sub rbx, rcx
test edi, edi
js 0x18011017a
mov edx, 1
sub edx, dword [rcx - 8]
mov eax, dword [rcx - 0xc]
sub eax, edi
or eax, edx
jge 0x1801100b3
mov edx, edi
lea rcx, [rsp + 0x28]
call fcn.180033628
mov rcx, qword [rsp + 0x28]
movsxd rdx, dword [rcx - 0xc]
cmp rbx, rsi
movsxd rsi, edi
mov r9, rsi
ja 0x1801100cd
lea r8, [rbx + rcx]
call fcn.18007f2bc
jmp 0x1801100d7
lea r8, [rsp + 0x50]
call fcn.18007f224
mov rax, qword [rsp + 0x28]
cmp edi, dword [rax - 0xc]
jg 0x18011016f
mov dword [rax - 0x10], edi
mov rax, qword [rsp + 0x28]
mov byte [rsi + rax], 0
lea r8, [rsp + 0x28]
mov rdx, qword [r15 + 0x10]
mov rcx, r15
call fcn.18011b2c0
nop
mov rdx, qword [rsp + 0x28]
add rdx, 0xffffffffffffffe8
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x180110124
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x180110144
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, dword [rsp + 0x38]
inc r12d
add r13d, r13d
cmp r12d, 0x1a
jae 0x1801101b1
jmp 0x18010fe20
mov ecx, 0x80070057
call fcn.180004010
nop
mov ecx, 0x80070057
call fcn.180004010
int3
mov ecx, 0x80070057
call fcn.180004010
int3
mov ecx, 0x80070057
call fcn.180004010
nop
mov ecx, 0x80004005
call fcn.180004010
nop
mov ecx, 0x80070057
call fcn.180004010
int3
mov ecx, 0x80070057
call fcn.180004010
nop
mov ecx, 0x80004005
call fcn.180004010
int3
mov eax, 1
mov rcx, qword [rbp + 0x60]
xor rcx, rsp
call fcn.18007e1e0
mov rbx, qword [rsp + 0x1c0]
add rsp, 0x170
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret