Function at 0x180002220
Capabilities:
Get disk information

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
sub rsp, 0x80
mov rax, qword [section..data]
xor rax, rsp
mov qword [rsp + 0x70], rax
mov rbx, rcx
lea rcx, [rsp + 0x68]
movzx edi, dl
lea rdx, [0x180000000]
xor ebp, ebp
mov esi, r8d
mov eax, dword [rdx + 0x3e7c0]
mov dword [rsp + 0x44], ebp
mov dword [rcx], eax
movzx eax, word [rdx + 0x3e7c4]
mov word [rcx + 4], ax
movzx eax, byte [rdx + 0x3e7c6]
mov byte [rcx + 6], al
movzx eax, word [rdx + 0x3e7c8]
lea rcx, [rsp + 0x40]
mov word [rcx], ax
movzx eax, byte [rdx + 0x3e7ca]
mov byte [rcx + 2], al
test rbx, rbx
je 0x180002364
lea rcx, [rbx + 0x893]
lea rdx, [0x18003e7cc]
movsx r8d, dil
mov byte [rsp + 0x6c], dil
mov byte [rsp + 0x40], dil
mov qword [rbx + 0x28], rbp
call qword [sym.imp.USER32.dll_wsprintfA]
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_GetDriveTypeA]
bt dword [rbx + 0x10], 0x1f
mov dword [rbx + 0x14], eax
jb 0x1800023ee
test esi, esi
jne 0x1800022e2
mov edi, ebp
cmp eax, 5
jne 0x1800022e7
mov edi, 0x40000000
lea rdx, str.CachedDrive_Open:_Opening_drive_on_NT_family._n
mov rcx, rbx
call fcn.180001970
xor r9d, r9d
mov qword [rsp + 0x30], rbp
bts edi, 0x1f
lea rcx, [rsp + 0x68]
lea r8d, [r9 + 3]
mov edx, edi
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileA]
mov rcx, rbx
mov qword [rbx + 0x30], rax
cmp rax, 0xffffffffffffffff
jne 0x18000236b
lea rdx, str.CachedDrive_Open:_Create_file_error._n
mov edi, 0x20000002
call fcn.180001970
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 5
jne 0x18000235c
lea rdx, str.CachedDrive_Open:_Access_denied._n
mov rcx, rbx
call fcn.180001970
mov edi, 0x20000003
mov ecx, edi
call qword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
jmp 0x18000256a
lea rdx, [rsp + 0x6c]
call fcn.180001fc0
mov qword [rbx + 0x18], rax
mov qword [rbx + 0x20], rax
test rax, rax
jne 0x1800023aa
mov rcx, qword [rbx + 0x30]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rbx + 0x30], 0xffffffffffffffff
lea rdx, str.CachedDrive_Open:_Unable_to_determine_drive_size._n
mov rcx, rbx
call fcn.180001970
xor eax, eax
jmp 0x18000256a
mov rcx, rbx
call fcn.180002180
test eax, eax
jne 0x1800023cf
mov rcx, qword [rbx + 0x30]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rbx + 0x30], 0xffffffffffffffff
xor eax, eax
jmp 0x18000256a
cmp dword [rbx + 0x14], 5
jne 0x1800023e4
mov dword [rbx + 0x73], 0x10000
mov qword [rbx + 0x6b], 0xfffffffffffeffff
mov eax, 1
jmp 0x18000256a
lea rdx, str.CachedDrive_Open:_Opening_drive_on_9x_family._n
mov rcx, rbx
call fcn.180001970
lea rdx, [rsp + 0x40]
mov rcx, rbx
call fcn.180001fc0
mov qword [rbx + 0x18], rax
test rax, rax
je 0x180002394
mov qword [rsp + 0x30], rbp
lea rcx, str.._vwin32
xor r9d, r9d
xor r8d, r8d
mov edx, 0x80000000
mov dword [rsp + 0x28], 0x4000000
mov dword [rsp + 0x20], ebp
call qword [sym.imp.KERNEL32.dll_CreateFileA]
sub dil, 0x40
mov rcx, rax
mov qword [rbx + 0x30], rax
mov byte [rbx + 0x38], dil
cmp rax, 0xffffffffffffffff
jne 0x180002472
lea rdx, str.CachedDrive_Open:_Create_file_error._n
mov rcx, rbx
call fcn.180001970
mov ecx, 0x20000002
call qword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
jmp 0x18000256a
xor eax, eax
mov qword [rsp + 0x38], rbp
mov r9d, 0x1c
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], rax
mov dword [rsp + 0x60], eax
mov qword [rsp + 0x58], rax
movzx eax, dil
lea r8, [rsp + 0x48]
mov dword [rsp + 0x48], eax
lea eax, [rbx + 0x39]
lea edx, [r9 - 0x1b]
mov dword [rsp + 0x4c], eax
lea rax, [rsp + 0x44]
mov dword [rsp + 0x50], 0x860
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x48]
mov dword [rsp + 0x28], 0x1c
mov dword [rsp + 0x54], 0x440d
mov dword [rsp + 0x60], 1
mov byte [rbx + 0x39], bpl
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x18000254c
test byte [rsp + 0x60], 1
jne 0x18000254c
lea rdx, str.CachedDrive_Open:_Caching_drive_track._n
mov rcx, rbx
call fcn.180001970
movzx ecx, word [rbx + 0x40]
movzx eax, word [rbx + 0x4d]
imul ecx, eax
movsxd rdx, ecx
xor ecx, ecx
mov r8d, 0x1000
lea r9d, [rcx + 4]
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
movzx r9d, word [rbx + 0x4d]
xor r8d, r8d
mov rdx, rax
mov rcx, rbx
mov qword [rbx + 0x5f], rax
call fcn.180001d90
or ecx, 0xffffffff
test eax, eax
mov esi, eax
cmovne ecx, ebp
mov dword [rbx + 0x67], ecx
test eax, eax
jne 0x180002568
jmp 0x18000254e
mov esi, ebp
lea rdx, str.CachedDrive_Open:_Error_caching_track._n
mov rcx, rbx
call fcn.180001970
mov ecx, 0x20000002
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, esi
mov rcx, qword [rsp + 0x70]
xor rcx, rsp
call fcn.18002d590
mov rbx, qword [rsp + 0xb0]
add rsp, 0x80
pop rdi
pop rsi
pop rbp
ret