Function at 0x140066e70
Capabilities:
Get disk information
Get disk size

Disassembly:
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r14
push r15
lea rbp, [rsp - 0x107a8]
mov eax, 0x108a8
call fcn.1400fe470
sub rsp, rax
mov rdi, r8
mov rbx, rdx
mov rsi, rcx
test rdx, rdx
je 0x1400674e6
cmp word [rdx], 0
je 0x1400674e6
lea rdx, str.List
mov rcx, rbx
call fcn.1400e5cc0
test eax, eax
jne 0x140067077
mov rax, qword [0x14014c6e0]
xor r9d, r9d
xor edx, edx
mov qword [rbp + 0x107e8], rax
mov rcx, rax
mov byte [rsp + 0x20], 1
lea r8, [r9 - 1]
call fcn.1400c6a70
xor esi, esi
cmp word [rdi], si
jne 0x140066efa
mov ebx, 0x100
jmp 0x140066f8b
lea rdx, str.CDRom
mov rcx, rdi
call fcn.1400e5cc0
test eax, eax
jne 0x140066f12
lea ebx, [rax + 5]
jmp 0x140066f8b
lea rdx, str.Removable
mov rcx, rdi
call fcn.1400e5cc0
test eax, eax
jne 0x140066f2a
lea ebx, [rax + 2]
jmp 0x140066f8b
lea rdx, str.Fixed
mov rcx, rdi
call fcn.1400e5cc0
test eax, eax
jne 0x140066f42
lea ebx, [rax + 3]
jmp 0x140066f8b
lea rdx, str.Network
mov rcx, rdi
call fcn.1400e5cc0
test eax, eax
jne 0x140066f5a
lea ebx, [rax + 4]
jmp 0x140066f8b
lea rdx, str.Ramdisk
mov rcx, rdi
call fcn.1400e5cc0
test eax, eax
jne 0x140066f72
lea ebx, [rax + 6]
jmp 0x140066f8b
lea rdx, str.Unknown
mov rcx, rdi
call fcn.1400e5cc0
test eax, eax
jne case.0x140067271.1
mov ebx, esi
mov qword [rsp + 0x108f0], r12
lea r15, [rsp + 0x60]
mov qword [rsp + 0x108a0], r13
mov r12d, esi
mov dil, 0x41
nop word [rax + rax]
movzx r13d, dil
lea rcx, [rbp - 0x60]
mov word [rbp - 0x60], r13w
mov dword [rbp - 0x5e], 0x5c003a
mov word [rbp - 0x5a], si
call qword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, ebx
je 0x140066fdf
cmp ebx, 0x100
jne 0x140066fea
cmp eax, 1
je 0x140066fea
inc r12d
mov word [r15], r13w
add r15, 2
inc dil
cmp dil, 0x5a
jbe 0x140066fb0
mov rcx, qword [rbp + 0x107e8]
lea rdx, [rsp + 0x60]
xor r9d, r9d
movsxd rax, r12d
mov byte [rsp + 0x20], 1
lea r8, [r9 - 1]
mov word [rsp + rax*2 + 0x60], si
call fcn.1400c6a70
mov r13, qword [rsp + 0x108a0]
mov r12, qword [rsp + 0x108f0]
cmp word [rsp + 0x60], si
jne 0x140067631
mov rsi, qword [rbp + 0x107e0]
mov rax, qword [0x140145a80]
lea rdx, [0x14012296c]
test byte [rax + 0x140], 1
je 0x140067176
lea r9, [0x14010d28c]
xor r8d, r8d
mov rcx, rsi
call fcn.140050010
add rsp, 0x108a8
pop r15
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret
lea rdx, str.FileSystem
mov rcx, rbx
call fcn.1400e5cc0
test eax, eax
je 0x140067523
lea rdx, [0x14012b0c0]
mov rcx, rbx
call fcn.1400e5cc0
test eax, eax
je 0x140067523
lea rdx, str.Label
mov rcx, rbx
call fcn.1400e5cc0
test eax, eax
jne 0x1400670c0
lea ebx, [rax + 3]
jmp 0x140067528
mov r8d, 9
lea rdx, str.SetLabel:
mov rcx, rbx
call fcn.1400e5e84
test eax, eax
jne 0x14006719e
mov r8d, 0x7ffe
lea rcx, [rbp + 0x7a0]
mov rdx, rdi
call fcn.1400eadcc
xor esi, esi
lea rcx, [rbp + 0x7a0]
mov word [rbp + 0x1079c], si
mov rax, 0xffffffffffffffff
nop dword [rax]
inc rax
cmp word [rcx + rax*2], si
jne 0x140067110
test rax, rax
je 0x140067138
cmp word [rbp + rax*2 + 0x79e], 0x5c
je 0x140067138
mov r14d, 0x5c
mov word [rbp + rax*2 + 0x7a0], r14w
lea rdx, [rbx + 0x12]
nop dword [rax]
movzx eax, word [rdx]
cmp ax, 0x20
je 0x14006714f
cmp ax, 9
jne 0x140067155
add rdx, 2
jmp 0x140067140
lea rcx, [rbp + 0x7a0]
call qword [sym.imp.KERNEL32.dll_SetVolumeLabelW]
test eax, eax
lea rcx, [0x14010d31c]
lea rdx, [0x14012296c]
cmovne rdx, rcx
mov rcx, qword [0x14014a3b0]
xor r9d, r9d
mov byte [rsp + 0x20], 1
lea r8, [r9 - 1]
call fcn.1400c6a70
add rsp, 0x108a8
pop r15
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret
lea rdx, str.Serial
mov rcx, rbx
call fcn.1400e5cc0
test eax, eax
jne 0x1400671b9
lea ebx, [rax + 5]
jmp 0x140067528
lea rdx, str.Type
mov rcx, rbx
call fcn.1400e5cc0
test eax, eax
jne 0x1400672cd
mov rbx, qword [0x14014c6e0]
xor r9d, r9d
xor edx, edx
mov byte [rsp + 0x20], 1
mov rcx, rbx
lea r8, [r9 - 1]
call fcn.1400c6a70
mov r8d, 0x7ffe
lea rcx, [rbp + 0x7a0]
mov rdx, rdi
call fcn.1400eadcc
xor esi, esi
lea rcx, [rbp + 0x7a0]
mov word [rbp + 0x1079c], si
mov rax, 0xffffffffffffffff
nop dword [rax]
inc rax
cmp word [rcx + rax*2], si
jne 0x140067220
test rax, rax
je 0x140067248
cmp word [rbp + rax*2 + 0x79e], 0x5c
je 0x140067248
mov r14d, 0x5c
mov word [rbp + rax*2 + 0x7a0], r14w
lea rcx, [rbp + 0x7a0]
call qword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 6
ja case.0x140067271.1
lea rdx, [0x140000000]
mov eax, eax
mov ecx, dword [rdx + rax*4 + 0x67660]
add rcx, rdx
jmp rcx
lea rdx, str.Unknown
mov rcx, rbx
jmp 0x140067620
lea rdx, str.Removable
mov rcx, rbx
jmp 0x140067620
lea rdx, str.Fixed
mov rcx, rbx
jmp 0x140067620
lea rdx, str.Network
mov rcx, rbx
jmp 0x140067620
lea rdx, str.CDROM
mov rcx, rbx
jmp 0x140067620
lea rdx, str.RAMDisk
mov rcx, rbx
jmp 0x140067620
lea rdx, str.Status
mov rcx, rbx
call fcn.1400e5cc0
test eax, eax
jne 0x1400673e2
mov rbx, qword [0x14014c6e0]
xor r9d, r9d
xor edx, edx
mov byte [rsp + 0x20], 1
mov rcx, rbx
lea r8, [r9 - 1]
call fcn.1400c6a70
mov r8d, 0x7ffe
lea rcx, [rbp + 0x7a0]
mov rdx, rdi
call fcn.1400eadcc
xor esi, esi
lea rcx, [rbp + 0x7a0]
mov word [rbp + 0x1079c], si
mov rax, 0xffffffffffffffff
nop dword [rax]
inc rax
cmp word [rcx + rax*2], si
jne 0x140067330
test rax, rax
je 0x140067358
cmp word [rbp + rax*2 + 0x79e], 0x5c
je 0x140067358
mov r14d, 0x5c
mov word [rbp + rax*2 + 0x7a0], r14w
lea rax, [rbp + 0x107f8]
lea r9, [rsp + 0x40]
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x44]
lea rdx, [rsp + 0x48]
lea rcx, [rbp + 0x7a0]
call qword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
test eax, eax
jne 0x1400673d3
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x1400673d3
cmp eax, 3
je 0x1400673c4
cmp eax, 0x13
je 0x1400673b5
lea rcx, str.NotReady
cmp eax, 0x15
lea rdx, str.Unknown
cmove rdx, rcx
mov rcx, rbx
jmp 0x140067620
lea rdx, str.ReadOnly
mov rcx, rbx
jmp 0x140067620
lea rdx, str.Invalid
mov rcx, rbx
jmp 0x140067620
lea rdx, str.Ready
mov rcx, rbx
jmp 0x140067620
lea rdx, str.StatusCD
mov rcx, rbx
call fcn.1400e5cc0
test eax, eax
jne 0x1400674c0
mov rsi, qword [0x14014c6e0]
xor r9d, r9d
xor edx, edx
mov byte [rsp + 0x20], 1
mov rcx, rsi
lea r8, [r9 - 1]
call fcn.1400c6a70
cmp word [rdi], 0
jne 0x14006743d
xor r9d, r9d
lea rdx, [rbp + 0xa0]
mov r8d, 0x80
lea rcx, str.status_cdaudio_mode
call qword [sym.imp.WINMM.dll_mciSendStringW]
test eax, eax
jmp 0x1400674ab
mov r9, rdi
lea r8, str.open__s_type_cdaudio_alias_cd_wait_shareable
mov edx, 0x100
lea rcx, [rbp + 0x1a0]
call fcn.1400c16a0
xor r9d, r9d
lea rcx, [rbp + 0x1a0]
xor r8d, r8d
xor edx, edx
call qword [sym.imp.WINMM.dll_mciSendStringW]
test eax, eax
jne case.0x140067271.1
xor r9d, r9d
lea rdx, [rbp + 0xa0]
mov r8d, 0x80
lea rcx, str.status_cd_mode
call qword [sym.imp.WINMM.dll_mciSendStringW]
xor r9d, r9d
lea rcx, str.close_cd_wait
xor r8d, r8d
xor edx, edx
mov ebx, eax
call qword [sym.imp.WINMM.dll_mciSendStringW]
test ebx, ebx
jne case.0x140067271.1
lea rdx, [rbp + 0xa0]
mov rcx, rsi
jmp 0x140067620
lea rdx, str.Capacity
mov rcx, rbx
call fcn.1400e5cc0
test eax, eax
je 0x140067505
lea rdx, [0x14012b130]
mov rcx, rbx
call fcn.1400e5cc0
test eax, eax
je 0x140067505
mov rcx, qword [0x14014c6e0]
xor r9d, r9d
xor edx, edx
mov byte [rsp + 0x20], 1
lea r8, [r9 - 1]
call fcn.1400c6a70
jmp 0x14006703a
xor r8d, r8d
mov rdx, rdi
mov rcx, rsi
call fcn.140066900
add rsp, 0x108a8
pop r15
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret
mov ebx, 2
mov r15, qword [0x14014c6e0]
xor esi, esi
mov rcx, r15
mov byte [rsp + 0x20], 1
mov edx, esi
xor r9d, r9d
lea r8, [rsi - 1]
call fcn.1400c6a70
mov r8d, 0x7ffe
lea rcx, [rbp + 0x7a0]
mov rdx, rdi
call fcn.1400eadcc
lea rcx, [rbp + 0x7a0]
mov word [rbp + 0x1079c], si
mov rax, 0xffffffffffffffff
inc rax
cmp word [rcx + rax*2], 0
jne 0x140067571
test rax, rax
je 0x14006759a
cmp word [rbp + rax*2 + 0x79e], 0x5c
je 0x14006759a
mov r14d, 0x5c
mov word [rbp + rax*2 + 0x7a0], r14w
mov dword [rsp + 0x38], 0xff
lea rax, [rbp + 0x5a0]
mov qword [rsp + 0x30], rax
lea r9, [rbp + 0x107e8]
lea rax, [rsp + 0x4c]
mov r8d, 0xff
mov qword [rsp + 0x28], rax
lea rdx, [rbp + 0x3a0]
lea rax, [rsp + 0x50]
lea rcx, [rbp + 0x7a0]
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_GetVolumeInformationW]
test eax, eax
je case.0x140067271.1
sub ebx, 2
je 0x140067616
sub ebx, 1
je 0x14006760d
cmp ebx, 2
jne 0x140067631
mov edx, dword [rbp + 0x107e8]
mov r8b, reloc.OLEAUT32.dll_SafeArrayGetElement
mov rcx, r15
call fcn.140001470
jmp 0x140067631
lea rdx, [rbp + 0x3a0]
jmp 0x14006761d
lea rdx, [rbp + 0x5a0]
mov rcx, r15
xor r9d, r9d
mov byte [rsp + 0x20], 1
lea r8, [r9 - 1]
call fcn.1400c6a70
mov rcx, qword [0x14014a3b0]
lea rdx, [0x14010d31c]
xor r9d, r9d
mov byte [rsp + 0x20], 1
lea r8, [r9 - 1]
call fcn.1400c6a70
add rsp, 0x108a8
pop r15
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret