Function at 0x18003cc60
Capabilities:
Get disk information

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x920
mov qword [rsp + 0x60], 0xfffffffffffffffe
mov qword [rsp + 0x970], rbx
mov rax, qword [0x1800fca30]
xor rax, rsp
mov qword [rsp + 0x910], rax
mov rbp, rdx
mov r15, rcx
mov qword [rsp + 0x68], rdx
xor r14d, r14d
mov qword [rsp + 0x30], r14
mov qword [rsp + 0x38], r14
mov qword [rsp + 0x40], r14
lea rdx, [rsp + 0x110]
mov ecx, 0x3fe
call qword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsW]
test eax, eax
je 0x18003d248
mov r8d, eax
lea rdx, [rsp + 0x110]
lea rcx, [rsp + 0x28]
call fcn.18003c130
test al, al
je 0x18003d248
mov qword [rsp + 0x90], 7
mov qword [rsp + 0x88], r14
mov word [rsp + 0x78], r14w
mov qword [rsp + 0xb8], 7
mov qword [rsp + 0xb0], r14
mov word [rsp + 0xa0], r14w
mov qword [rsp + 0xe0], 7
mov qword [rsp + 0xd8], r14
mov word [rsp + 0xc8], r14w
mov dword [rsp + 0xe8], r14d
mov qword [rsp + 0xf0], r14
mov qword [rsp + 0xf8], r14
mov byte [rsp + 0x100], r14b
mov rax, r14
mov qword [rsp + 0x58], rax
xor r13b, r13b
mov byte [rsp + 0x20], r13b
mov r8d, r14d
mov dword [rsp + 0x48], r14d
mov rsi, r14
mov qword [rsp + 0x50], r14
mov r12, r14
movabs rbx, 0x6666666666666667
mov rdi, qword [rsp + 0x30]
test rdi, rdi
je 0x18003d0e4
mov rcx, qword [rsp + 0x38]
sub rcx, rdi
mov rax, rbx
imul rcx
sar rdx, 4
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cmp r8d, edx
jae 0x18003d0e4
cmp rsi, rdx
jb 0x18003cdce
call fcn.1800a2200
mov rdi, qword [rsp + 0x30]
cmp qword [r12 + rdi + 0x20], 8
jb 0x18003cddd
mov rcx, qword [r12 + rdi + 8]
jmp 0x18003cde2
lea rcx, [r12 + rdi + 8]
call qword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 3
jne 0x18003d0a6
mov r13d, r14d
mov rcx, rbp
call fcn.180009520
test eax, eax
je 0x18003cf42
xor esi, esi
mov rdi, qword [rsp + 0x30]
jmp 0x18003ce1a
movabs rbx, 0x6666666666666667
mov rax, qword [rbp + 8]
test rax, rax
je 0x18003ce43
mov rcx, qword [rbp + 0x10]
sub rcx, rax
mov rax, rbx
imul rcx
sar rdx, 4
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cmp r14, rdx
jb 0x18003ce4d
call fcn.1800a2200
mov rdi, qword [rsp + 0x30]
mov rbx, qword [rbp + 8]
test rdi, rdi
je 0x18003ce80
mov rcx, qword [rsp + 0x38]
sub rcx, rdi
movabs rax, 0x6666666666666667
imul rcx
sar rdx, 4
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cmp qword [rsp + 0x50], rdx
jb 0x18003ce8a
call fcn.1800a2200
mov rdi, qword [rsp + 0x30]
mov r10, qword [rsi + rbx + 0x18]
cmp qword [rsi + rbx + 0x20], 8
jb 0x18003ce9e
mov rdx, qword [rsi + rbx + 8]
jmp 0x18003cea3
lea rdx, [rsi + rbx + 8]
mov r9, qword [r12 + rdi + 0x18]
cmp r9, r9
cmovb r9, r9
cmp qword [r12 + rdi + 0x20], 8
jb 0x18003cebe
mov rcx, qword [r12 + rdi + 8]
jmp 0x18003cec3
lea rcx, [r12 + rdi + 8]
mov r8, r10
cmp r9, r10
cmovb r8, r9
test r8, r8
je 0x18003cefe
movzx eax, word [rdx]
cmp word [rcx], ax
jne 0x18003ceea
add rcx, 2
add rdx, 2
sub r8, 1
jne 0x18003ced2
jmp 0x18003cefe
mov r8d, 1
cmp word [rcx], ax
mov eax, 0xffffffff
cmovb r8d, eax
jmp 0x18003cf01
xor r8d, r8d
movsxd rax, r8d
test r8d, r8d
jne 0x18003cf16
cmp r9, r10
jb 0x18003cf1e
xor eax, eax
cmp r9, r10
setne al
test eax, eax
je 0x18003d0ad
add r13d, 1
add r14, 1
add rsi, 0x28
mov rcx, rbp
call fcn.180009520
cmp r13d, eax
jb 0x18003ce10
mov rsi, qword [rsp + 0x50]
jmp 0x18003cf47
mov rdi, qword [rsp + 0x30]
mov ebx, dword [rsp + 0x48]
test rdi, rdi
je 0x18003cf7d
mov rcx, qword [rsp + 0x38]
sub rcx, rdi
movabs r13, 0x6666666666666667
mov rax, r13
imul rcx
sar rdx, 4
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cmp rbx, rdx
jb 0x18003cf91
jmp 0x18003cf87
movabs r13, 0x6666666666666667
call fcn.1800a2200
mov rdi, qword [rsp + 0x30]
lea rax, [rbx + rbx*4]
lea rcx, [rdi + rax*8]
lea rdx, [rsp + 0x70]
call fcn.18003c380
test al, al
je 0x18003d093
cmp byte [rsp + 0x100], 0
je 0x18003d09a
lea rcx, [rsp + 0xc0]
call fcn.18003d540
test al, al
je 0x18003d0a1
mov rax, qword [rsp + 0xf8]
cmp qword [rsp + 0x58], rax
jae 0x18003d08b
mov qword [rsp + 0x58], rax
mov r8, qword [rsp + 0x30]
test r8, r8
je 0x18003d011
mov rcx, qword [rsp + 0x38]
sub rcx, r8
mov rax, r13
imul rcx
sar rdx, 4
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cmp rsi, rdx
jb 0x18003d01b
call fcn.1800a2200
mov r8, qword [rsp + 0x30]
cmp qword [r12 + r8 + 0x20], 8
jb 0x18003d02a
mov rax, qword [r12 + r8 + 8]
jmp 0x18003d02f
lea rax, [r12 + r8 + 8]
movzx ebx, word [rax]
cmp qword [r15 + 0x20], 1
jae 0x18003d04a
mov r8, qword [r15 + 0x18]
mov edx, 1
mov rcx, r15
call fcn.180003710
cmp qword [r15 + 0x20], 8
jb 0x18003d05a
lea rax, [r15 + 8]
mov rcx, qword [rax]
jmp 0x18003d061
lea rax, [r15 + 8]
mov rcx, rax
mov word [rcx], bx
mov qword [r15 + 0x18], 1
cmp qword [r15 + 0x20], 8
jb 0x18003d076
mov rax, qword [rax]
mov word [rax + 2], 0
mov r13b, 1
mov byte [rsp + 0x20], r13b
mov rdi, qword [rsp + 0x30]
jmp 0x18003d0b7
movzx r13d, byte [rsp + 0x20]
jmp 0x18003d0a6
mov r13b, byte [rsp + 0x20]
jmp 0x18003d0a6
mov r13b, byte [rsp + 0x20]
jmp 0x18003d0a6
mov r13b, byte [rsp + 0x20]
mov rdi, qword [rsp + 0x30]
jmp 0x18003d0b7
mov rsi, qword [rsp + 0x50]
mov r13b, byte [rsp + 0x20]
mov r8d, dword [rsp + 0x48]
add r8d, 1
mov dword [rsp + 0x48], r8d
add rsi, 1
mov qword [rsp + 0x50], rsi
add r12, 0x28
xor r14d, r14d
movabs rbx, 0x6666666666666667
jmp 0x18003cd91
cmp qword [rsp + 0xe0], 8
jb 0x18003d101
mov rcx, qword [rsp + 0xc8]
call fcn.1800a2030
mov rdi, qword [rsp + 0x30]
mov qword [rsp + 0xe0], 7
mov qword [rsp + 0xd8], r14
mov word [rsp + 0xc8], 0
cmp qword [rsp + 0xb8], 8
jb 0x18003d13c
mov rcx, qword [rsp + 0xa0]
call fcn.1800a2030
mov rdi, qword [rsp + 0x30]
mov qword [rsp + 0xb8], 7
mov qword [rsp + 0xb0], r14
mov word [rsp + 0xa0], 0
cmp qword [rsp + 0x90], 8
jb 0x18003d174
mov rcx, qword [rsp + 0x78]
call fcn.1800a2030
mov rdi, qword [rsp + 0x30]
mov qword [rsp + 0x90], 7
mov qword [rsp + 0x88], r14
mov word [rsp + 0x78], 0
test rdi, rdi
je 0x18003d1dc
mov rsi, qword [rsp + 0x38]
cmp rdi, rsi
je 0x18003d1d4
lea rbx, [rdi + 0x20]
cmp qword [rbx], 8
jb 0x18003d1b1
mov rcx, qword [rbx - 0x18]
call fcn.1800a2030
mov qword [rbx], 7
mov qword [rbx - 8], r14
mov word [rbx - 0x18], 0
add rbx, 0x28
lea rax, [rbx - 0x20]
cmp rax, rsi
jne 0x18003d1a2
mov rdi, qword [rsp + 0x30]
mov rcx, rdi
call fcn.1800a2030
mov qword [rsp + 0x30], r14
mov qword [rsp + 0x38], r14
mov qword [rsp + 0x40], r14
mov rbx, qword [rbp + 8]
test rbx, rbx
je 0x18003d234
mov rdi, qword [rbp + 0x10]
cmp rbx, rdi
je 0x18003d22b
nop
cmp qword [rbx + 0x20], 8
jb 0x18003d210
mov rcx, qword [rbx + 8]
call fcn.1800a2030
mov qword [rbx + 0x20], 7
mov qword [rbx + 0x18], r14
mov word [rbx + 8], 0
add rbx, 0x28
cmp rbx, rdi
jne 0x18003d200
mov rcx, qword [rbp + 8]
call fcn.1800a2030
mov qword [rbp + 8], r14
mov qword [rbp + 0x10], r14
mov qword [rbp + 0x18], r14
mov al, r13b
jmp 0x18003d2fa
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x18003d297
mov rdi, qword [rsp + 0x38]
cmp rcx, rdi
je 0x18003d292
lea rbx, [rcx + 0x20]
cmp qword [rbx], 8
jb 0x18003d26f
mov rcx, qword [rbx - 0x18]
call fcn.1800a2030
mov qword [rbx], 7
mov qword [rbx - 8], r14
mov word [rbx - 0x18], 0
add rbx, 0x28
lea rax, [rbx - 0x20]
cmp rax, rdi
jne 0x18003d260
mov rcx, qword [rsp + 0x30]
call fcn.1800a2030
mov qword [rsp + 0x30], r14
mov qword [rsp + 0x38], r14
mov qword [rsp + 0x40], r14
mov rbx, qword [rbp + 8]
test rbx, rbx
je 0x18003d2ec
mov rdi, qword [rbp + 0x10]
cmp rbx, rdi
je 0x18003d2e3
cmp qword [rbx + 0x20], 8
jb 0x18003d2c8
mov rcx, qword [rbx + 8]
call fcn.1800a2030
mov qword [rbx + 0x20], 7
mov qword [rbx + 0x18], r14
mov word [rbx + 8], 0
add rbx, 0x28
cmp rbx, rdi
jne 0x18003d2b8
mov rcx, qword [rbp + 8]
call fcn.1800a2030
mov qword [rbp + 8], r14
mov qword [rbp + 0x10], r14
mov qword [rbp + 0x18], r14
xor al, al
mov rcx, qword [rsp + 0x910]
xor rcx, rsp
call fcn.1800a3210
mov rbx, qword [rsp + 0x970]
add rsp, 0x920
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret