Function at 0x1801101e0
Capabilities:
Get disk information

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x170]
sub rsp, 0x270
mov qword [rsp + 0x38], 0xfffffffffffffffe
mov qword [rsp + 0x2c0], rbx
mov rax, qword [0x1801903f8]
xor rax, rsp
mov qword [rbp + 0x160], rax
mov r15, rdx
mov r14, rcx
or r8, 0xffffffffffffffff
xor edx, edx
call fcn.18011ac90
or r8, 0xffffffffffffffff
xor edx, edx
mov rcx, r15
call fcn.18011ac90
call qword [sym.imp.KERNEL32.dll_GetLogicalDrives]
mov dword [rsp + 0x30], eax
xor ebx, ebx
mov r13d, 1
mov r12d, ebx
test eax, r13d
je 0x18011059f
mov eax, dword [0x18015baf8]
mov dword [rsp + 0x40], eax
movzx eax, word [0x18015bafc]
mov word [rsp + 0x44], ax
xor eax, eax
mov word [rsp + 0x46], ax
add word [rsp + 0x40], r12w
call fcn.180032e40
mov ecx, ebx
test rax, rax
setne cl
test ecx, ecx
je 0x1801105fd
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + reloc.OLEAUT32.dll_SafeArrayGetElement]
lea r10, [rax + 0x18]
mov qword [rsp + 0x28], r10
lea rcx, [rsp + 0x40]
lea rax, [rsp + 0x40]
test rax, 0xffffffffffff0000
jne 0x1801102de
movzx edi, cx
mov ecx, edi
call fcn.180035ed8
test rax, rax
je 0x1801103dc
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x28]
call fcn.1800155c0
jmp 0x1801103dc
xor eax, eax
or rcx, 0xffffffffffffffff
lea rdi, [rsp + 0x40]
repne scasw ax, word [rdi]
not rcx
dec rcx
mov rdi, rcx
test ecx, ecx
jne 0x180110357
lea rdx, [r10 - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], eax
je 0x1801103dc
cmp dword [rdx + 0x10], eax
jge 0x180110329
cmp dword [r10 - 0xc], eax
jl 0x1801105b0
mov dword [r10 - 0x10], ebx
mov rax, qword [rsp + 0x28]
mov word [rax], bx
jmp 0x1801103dc
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x180110340
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 0x1801103dc
mov esi, dword [r10 - 0x10]
lea rbx, [rsp + 0x40]
sub rbx, r10
sar rbx, 1
test ecx, ecx
js 0x1801105f2
mov ecx, 1
sub ecx, dword [r10 - 8]
mov eax, dword [r10 - 0xc]
sub eax, edi
or eax, ecx
jge 0x180110392
mov edx, edi
lea rcx, [rsp + 0x28]
call fcn.180004860
mov r10, qword [rsp + 0x28]
movsxd rax, edi
movsxd rdx, dword [r10 - 0xc]
mov rcx, r10
add rdx, rdx
cmp rbx, rsi
lea rsi, [rax + rax]
mov r9, rsi
ja 0x1801103b6
lea r8, [r10 + rbx*2]
call fcn.18007f2bc
jmp 0x1801103c0
lea r8, [rsp + 0x40]
call fcn.18007f224
mov rax, qword [rsp + 0x28]
cmp edi, dword [rax - 0xc]
jg 0x1801105e7
mov dword [rax - 0x10], edi
mov rax, qword [rsp + 0x28]
xor ebx, ebx
mov word [rsi + rax], bx
lea r8, [rsp + 0x28]
mov rdx, qword [r14 + 0x10]
mov rcx, r14
call fcn.18011b5a0
call fcn.180032e40
mov ecx, ebx
test rax, rax
setne cl
test ecx, ecx
je 0x1801105dc
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x20], rax
mov word [rsp + 0x50], bx
xor edx, edx
mov r8d, 0x206
lea rcx, [rsp + 0x52]
call fcn.18007ead0
mov r8d, 0x104
lea rdx, [rsp + 0x50]
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
mov word [rbp + 0x156], bx
xor eax, eax
or rcx, 0xffffffffffffffff
lea rdi, [rsp + 0x50]
repne scasw ax, word [rdi]
not rcx
dec rcx
mov rdi, rcx
test ecx, ecx
jne 0x1801104c4
mov rax, qword [rsp + 0x20]
lea rdx, [rax - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], ecx
je 0x180110548
cmp dword [rdx + 0x10], ecx
jge 0x180110496
cmp dword [rax - 0xc], ecx
jl 0x1801105bb
mov dword [rax - 0x10], ebx
mov rax, qword [rsp + 0x20]
mov word [rax], bx
jmp 0x180110548
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1801104ad
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 + 0x20], rax
jmp 0x180110548
mov rcx, qword [rsp + 0x20]
mov esi, dword [rcx - 0x10]
lea rbx, [rsp + 0x50]
sub rbx, rcx
sar rbx, 1
test edi, edi
js 0x1801105d1
mov edx, 1
sub edx, dword [rcx - 8]
mov eax, dword [rcx - 0xc]
sub eax, edi
or eax, edx
jge 0x180110501
mov edx, edi
lea rcx, [rsp + 0x20]
call fcn.180004860
mov rcx, qword [rsp + 0x20]
movsxd rax, edi
movsxd rdx, dword [rcx - 0xc]
add rdx, rdx
cmp rbx, rsi
lea rsi, [rax + rax]
mov r9, rsi
ja 0x180110522
lea r8, [rcx + rbx*2]
call fcn.18007f2bc
jmp 0x18011052c
lea r8, [rsp + 0x50]
call fcn.18007f224
mov rax, qword [rsp + 0x20]
cmp edi, dword [rax - 0xc]
jg 0x1801105c6
mov dword [rax - 0x10], edi
mov rax, qword [rsp + 0x20]
xor ebx, ebx
mov word [rsi + rax], bx
lea r8, [rsp + 0x20]
mov rdx, qword [r15 + 0x10]
mov rcx, r15
call fcn.18011b5a0
nop
mov rdx, qword [rsp + 0x20]
add rdx, 0xffffffffffffffe8
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x18011057b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x28]
add rdx, 0xffffffffffffffe8
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x18011059b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, dword [rsp + 0x30]
inc r12d
add r13d, r13d
cmp r12d, 0x1a
jae 0x180110608
jmp 0x180110251
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 + 0x160]
xor rcx, rsp
call fcn.18007e1e0
mov rbx, qword [rsp + 0x2c0]
add rsp, 0x270
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret