Function at 0x18012e6f0
Capabilities:
Get disk information
Get disk size
Get storage device properties

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x438
movdqa xmmword [rsp + 0x420], xmm7
movaps xmmword [rsp + 0x410], xmm6
mov rsi, rdx
mov r14, rcx
mov rbx, qword [rsp + 0x4b8]
mov r12d, dword [rsp + 0x4b0]
mov r15d, dword [rsp + 0x4a8]
mov rax, qword [rsp + 0x4a0]
mov qword [rsp + 0x130], rdx
mov qword [rsp + 0x1f8], rax
shr rsi, 1
cmp rsi, rax
jae 0x18012f224
cmp r15d, r12d
jae 0x18012f25e
mov qword [rsp + 0xd8], r14
mov rax, qword [rbx]
mov qword [rsp + 0x128], rax
mov r13d, 8
lea r14, [rsp + 0x50]
xorps xmm6, xmm6
movdqa xmm7, xmmword [0x1801a92e0]
xor ebx, ebx
xor esi, esi
mov dword [rsp + 0x58], r12d
jmp 0x18012e7cd
lea rcx, [rbx + rbx*8]
shl rcx, 4
add rcx, r13
mov r8d, 0x90
lea rdx, [rsp + 0x148]
call fcn.180199330
inc rbx
inc r15d
cmp r15d, r12d
je 0x18012f274
mov rax, qword [rsp + 0x128]
mov eax, dword [rax]
bt eax, r15d
jae 0x18012e7c1
lea edi, [r15 + 0x41]
mov word [rsp + 0x50], di
mov dword [rsp + 0x52], 0x5c003a
mov word [rsp + 0x56], 0
mov rcx, r14
call sub.KERNEL32.dll_GetDriveTypeW
mov ecx, eax
and ecx, 0xfffffffe
cmp ecx, 2
jne 0x18012e8c0
mov dword [rsp + 0xd4], eax
mov r8d, 0x20a
lea rbp, [rsp + 0x200]
mov rcx, rbp
xor edx, edx
call sub.VCRUNTIME140.dll_memset
movaps xmmword [rsp + 0x90], xmm6
movaps xmmword [rsp + 0x80], xmm6
movaps xmmword [rsp + 0x70], xmm6
movaps xmmword [rsp + 0x60], xmm6
lea rax, [rsp + 0x60]
mov qword [rsp + 0x30], rax
movups xmmword [rsp + 0x20], xmm6
mov dword [rsp + 0x38], 0x20
mov rcx, r14
mov rdx, rbp
mov r8d, 0x105
xor r9d, r9d
call sub.KERNEL32.dll_GetVolumeInformationW
test eax, eax
je 0x18012e8c0
mov ecx, 2
nop dword [rax + rax]
cmp word [rsp + rcx*2 + 0x1fc], 0
je 0x18012e8d1
cmp word [rsp + rcx*2 + 0x1fe], 0
je 0x18012e8d7
cmp word [rsp + rcx*2 + 0x200], 0
je 0x18012e8da
add rcx, 3
cmp rcx, 0x107
jne 0x18012e880
mov ecx, 0x105
jmp 0x18012e8e7
mov qword [rsp + 0x148], 3
jmp 0x18012f13d
add rcx, 0xfffffffffffffffe
jmp 0x18012e8da
dec rcx
cmp rcx, 0x106
jae 0x18012f5a2
lea rax, [rsp + rcx*2]
add rax, 0x200
lea rcx, [rsp + 0x200]
mov qword [rsp + 0xb0], rcx
mov qword [rsp + 0xb8], rax
mov word [rsp + 0xc0], 0
lea rcx, [rsp + 0x1d8]
lea rdx, [rsp + 0xb0]
call fcn.1801310a0
mov rbp, qword [rsp + 0x1d8]
mov rax, qword [rsp + 0x1e8]
mov qword [rsp + 0xe8], rax
movzx eax, word [rsp + 0x60]
test ax, ax
mov qword [rsp + 0xf8], r13
mov qword [rsp + 0xf0], rsi
mov word [rsp + 0x4e], ax
je 0x18012eb10
cmp word [rsp + 0x62], 0
je 0x18012eb1d
cmp word [rsp + 0x64], 0
je 0x18012eb28
cmp word [rsp + 0x66], 0
je 0x18012eb33
cmp word [rsp + 0x68], 0
je 0x18012eb3e
cmp word [rsp + 0x6a], 0
je 0x18012eb49
cmp word [rsp + 0x6c], 0
je 0x18012eb54
cmp word [rsp + 0x6e], 0
je 0x18012eb5f
cmp word [rsp + 0x70], 0
je 0x18012eb6a
cmp word [rsp + 0x72], 0
je 0x18012eb75
cmp word [rsp + 0x74], 0
je 0x18012eb80
cmp word [rsp + 0x76], 0
je 0x18012eb8b
cmp word [rsp + 0x78], 0
je 0x18012eb96
cmp word [rsp + 0x7a], 0
je 0x18012eba1
cmp word [rsp + 0x7c], 0
je 0x18012ebac
cmp word [rsp + 0x7e], 0
je 0x18012ebb4
cmp word [rsp + 0x80], 0
je 0x18012ebbc
cmp word [rsp + 0x82], 0
je 0x18012ebc4
cmp word [rsp + 0x84], 0
je 0x18012ebcc
cmp word [rsp + 0x86], 0
je 0x18012ebd4
cmp word [rsp + 0x88], 0
je 0x18012ebdc
cmp word [rsp + 0x8a], 0
je 0x18012ebe4
cmp word [rsp + 0x8c], 0
je 0x18012ebec
cmp word [rsp + 0x8e], 0
je 0x18012ebf4
cmp word [rsp + 0x90], 0
je 0x18012ebfc
cmp word [rsp + 0x92], 0
je 0x18012ec04
cmp word [rsp + 0x94], 0
je 0x18012ec0c
cmp word [rsp + 0x96], 0
je 0x18012ec14
cmp word [rsp + 0x98], 0
je 0x18012ec1c
cmp word [rsp + 0x9a], 0
je 0x18012ec24
cmp word [rsp + 0x9c], 0
je 0x18012ec2c
cmp word [rsp + 0x9e], 1
mov r12d, 0x20
sbb r12, 0
jmp 0x18012ec32
mov esi, 1
xor r13d, r13d
jmp 0x18012ece3
mov r12d, 1
jmp 0x18012ec32
mov r12d, 2
jmp 0x18012ec32
mov r12d, 3
jmp 0x18012ec32
mov r12d, 4
jmp 0x18012ec32
mov r12d, 5
jmp 0x18012ec32
mov r12d, 6
jmp 0x18012ec32
mov r12d, 7
jmp 0x18012ec32
mov r12d, 8
jmp 0x18012ec32
mov r12d, 9
jmp 0x18012ec32
mov r12d, 0xa
jmp 0x18012ec32
mov r12d, 0xb
jmp 0x18012ec32
mov r12d, 0xc
jmp 0x18012ec32
mov r12d, 0xd
jmp 0x18012ec32
mov r12d, 0xe
jmp 0x18012ec32
mov r12d, 0xf
jmp 0x18012ec32
mov r12d, 0x10
jmp 0x18012ec32
mov r12d, 0x11
jmp 0x18012ec32
mov r12d, 0x12
jmp 0x18012ec32
mov r12d, 0x13
jmp 0x18012ec32
mov r12d, 0x14
jmp 0x18012ec32
mov r12d, 0x15
jmp 0x18012ec32
mov r12d, 0x16
jmp 0x18012ec32
mov r12d, 0x17
jmp 0x18012ec32
mov r12d, 0x18
jmp 0x18012ec32
mov r12d, 0x19
jmp 0x18012ec32
mov r12d, 0x1a
jmp 0x18012ec32
mov r12d, 0x1b
jmp 0x18012ec32
mov r12d, 0x1c
jmp 0x18012ec32
mov r12d, 0x1d
jmp 0x18012ec32
mov r12d, 0x1e
movzx eax, byte [0x180247060]
mov rax, qword [0x180246f98]
test rax, rax
jne 0x18012ec5b
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
je 0x18012f593
mov qword [0x180246f98], rax
mov rcx, rax
xor edx, edx
mov r8, r12
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
test rax, rax
je 0x18012f593
mov rsi, rax
lea rcx, [r12 - 1]
movabs rax, 0x7fffffffffffffff
and rcx, rax
cmp rcx, 0x17
jb 0x18012ecbd
lea rax, [rsi + rcx]
inc rax
lea rdx, [rsp + 0x62]
lea rdx, [rdx + r12*2]
add rdx, 0xfffffffffffffffe
lea r8, [rsp + 0x60]
cmp r8, rax
setb al
cmp rsi, rdx
jae 0x18012f1d1
test al, al
je 0x18012f1d1
xor r13d, r13d
lea rax, [rsp + 0x60]
lea rcx, [rsp + r12*2]
add rcx, 0x60
nop dword [rax]
movzx edx, byte [rax]
add rax, 2
mov byte [rsi + r13], dl
inc r13
cmp rax, rcx
jne 0x18012ecd0
movabs rax, 0x5c002e005c005c
mov qword [rsp + 0x100], rax
mov word [rsp + 0x108], di
mov dword [rsp + 0x10a], 0x3a
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], 3
lea rcx, [rsp + 0x100]
xor edx, edx
mov r8d, 3
xor r9d, r9d
call qword [sym.imp.KERNEL32.dll_CreateFileW]
cmp rax, 0xffffffffffffffff
je 0x18012f19a
mov r12, rax
mov qword [rsp + 0xa0], 0
mov qword [rsp + 0xb0], 0
mov rcx, r14
xor edx, edx
lea r8, [rsp + 0xa0]
lea r9, [rsp + 0xb0]
call sub.KERNEL32.dll_GetDiskFreeSpaceExW
test eax, eax
je 0x18012f0dc
mov rax, qword [rsp + 0xa0]
test rax, rax
je 0x18012f0dc
mov qword [rsp + 0x120], rax
mov qword [rsp + 0xe0], rbp
mov rax, qword [rsp + 0xb0]
mov qword [rsp + 0x118], rax
mov qword [rsp + 0x138], 7
mov byte [rsp + 0x140], 0
mov dword [rsp + 0xa8], 0
mov qword [rsp + 0xa0], 0
mov dword [rsp + 0x5c], 0
lea rax, [rsp + 0x5c]
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0xa0]
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x38], 0
mov dword [rsp + 0x28], 0xc
mov rcx, r12
mov edx, 0x2d1400
lea r8, [rsp + 0x138]
mov r9d, 0xc
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
xor ebp, ebp
cmp byte [rsp + 0xa8], 0
sete bpl
cmp dword [rsp + 0x5c], 0xc
mov ecx, 2
cmovne rbp, rcx
test eax, eax
cmove rbp, rcx
mov eax, 1
mov qword [rsp + 0xc8], rax
mov rdi, qword [rsp + 0xe8]
test rdi, rdi
je 0x18012eeab
js 0x18012f5c6
movzx eax, byte [0x180247060]
mov rax, qword [0x180246f98]
test rax, rax
jne 0x18012ee94
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
je 0x18012f5cd
mov qword [0x180246f98], rax
mov rcx, rax
xor edx, edx
mov r8, rdi
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
test rax, rax
je 0x18012f5cd
mov qword [rsp + 0x110], rax
mov rcx, rax
mov rdx, qword [rsp + 0xe0]
mov r8, rdi
call fcn.180199330
test r13, r13
je 0x18012ef19
js 0x18012f5c6
movzx eax, byte [0x180247060]
mov rax, qword [0x180246f98]
test rax, rax
jne 0x18012eefa
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
je 0x18012f5dc
mov qword [0x180246f98], rax
mov rcx, rax
xor edx, edx
mov r8, r13
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov qword [rsp + 0xc8], rax
test rax, rax
je 0x18012f5dc
mov rcx, qword [rsp + 0xc8]
mov rdx, rsi
mov r8, r13
call fcn.180199330
movzx eax, byte [0x180247060]
mov rax, qword [0x180246f98]
test rax, rax
jne 0x18012ef55
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
je 0x18012f5b5
mov qword [0x180246f98], rax
mov r8d, 8
mov rcx, rax
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
test rax, rax
je 0x18012f5b5
mov rdi, rax
mov rax, qword [rsp + 0x50]
mov qword [rdi], rax
mov qword [rsp + 0xb0], r14
lea rax, [rsp + 0x56]
mov qword [rsp + 0xb8], rax
mov word [rsp + 0xc0], 0
lea r14, [rsp + 0x1a8]
mov rcx, r14
lea rdx, [rsp + 0xb0]
call fcn.1801310a0
cmp dword [rsp + 0xd4], 2
mov rax, qword [rsp + 0x110]
mov qword [rsp + 0x158], rax
mov rax, qword [rsp + 0xe8]
mov qword [rsp + 0x160], rax
mov qword [rsp + 0x168], rax
mov byte [rsp + 0x170], 0
mov eax, dword [rsp + 0xb0]
mov ecx, dword [rsp + 0xb3]
mov dword [r14 - 0x34], ecx
mov dword [r14 - 0x37], eax
mov qword [rsp + 0x148], rbp
mov qword [rsp + 0x150], 0xffffffffffffffff
mov rax, qword [rsp + 0xc8]
mov qword [rsp + 0x178], rax
mov qword [rsp + 0x180], r13
mov qword [rsp + 0x188], r13
mov qword [rsp + 0x190], rdi
mov qword [rsp + 0x198], 4
mov qword [rsp + 0x1a0], 4
mov rax, qword [rsp + 0x120]
mov qword [rsp + 0x1c0], rax
mov rax, qword [rsp + 0x118]
mov qword [rsp + 0x1c8], rax
sete byte [rsp + 0x1d0]
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_CloseHandle]
cmp word [rsp + 0x4e], 0
je 0x18012f09e
mov rcx, qword [0x180246f98]
xor edx, edx
mov r8, rsi
call qword [sym.imp.KERNEL32.dll_HeapFree]
cmp qword [rsp + 0x1e0], 0
mov r12d, dword [rsp + 0x58]
mov r13, qword [rsp + 0xf8]
mov r8, qword [rsp + 0xe0]
je 0x18012f0cd
mov rcx, qword [0x180246f98]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov rsi, qword [rsp + 0xf0]
lea r14, [rsp + 0x50]
jmp 0x18012f13d
mov qword [rsp + 0x148], 3
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_CloseHandle]
cmp word [rsp + 0x4e], 0
mov r12d, dword [rsp + 0x58]
mov r13, qword [rsp + 0xf8]
je 0x18012f118
mov rcx, qword [0x180246f98]
xor edx, edx
mov r8, rsi
call qword [sym.imp.KERNEL32.dll_HeapFree]
cmp qword [rsp + 0x1e0], 0
je 0x18012f135
mov rcx, qword [0x180246f98]
xor edx, edx
mov r8, rbp
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov rsi, qword [rsp + 0xf0]
cmp qword [rsp + 0x148], 3
je 0x18012e7c1
mov qword [rsp + 0x200], r13
mov qword [rsp + 0x208], rsi
mov qword [rsp + 0x210], rbx
cmp rbx, rsi
jne 0x18012e7a0
lea rcx, [rsp + 0x200]
mov rdx, rbx
call fcn.18012f6b0
mov rbx, qword [rsp + 0x210]
mov r13, qword [rsp + 0x200]
mov rsi, qword [rsp + 0x208]
jmp 0x18012e7a0
mov rcx, 0xffffffffffffffff
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rsp + 0x148], 3
cmp word [rsp + 0x4e], 0
mov r12d, dword [rsp + 0x58]
mov r13, qword [rsp + 0xf8]
jne 0x18012f106
jmp 0x18012f118
inc rcx
mov r13, rcx
and r13, 0xfffffffffffffff0
lea rax, [rsp + r13*2]
add rax, 0x60
xor edx, edx
nop word cs:[rax + rax]
movdqu xmm0, xmmword [rsp + rdx*2 + 0x60]
movdqu xmm1, xmmword [rsp + rdx*2 + 0x70]
pand xmm0, xmm7
pand xmm1, xmm7
packuswb xmm0, xmm1
movdqu xmmword [rsi + rdx], xmm0
add rdx, 0x10
cmp r13, rdx
jne 0x18012f1f0
cmp rcx, r13
jne 0x18012ecc5
jmp 0x18012ece3
mov rdi, r9
test r8b, r8b
je 0x18012f2f0
mov eax, dword [0x180247064]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov rax, qword [rax + 0x50]
test rax, rax
je 0x18012f355
add rax, 0x110
jmp 0x18012f35a
pxor xmm0, xmm0
movdqu xmmword [r14], xmm0
mov qword [r14 + 0x10], 0
jmp 0x18012f53b
test rbx, rbx
je 0x18012f2fe
movzx eax, byte [0x180247060]
mov rcx, qword [0x180246f98]
test rcx, rcx
jne 0x18012f2a9
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
test rax, rax
je 0x18012f605
mov rcx, rax
mov qword [0x180246f98], rax
mov r8d, 0x28
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
test rax, rax
je 0x18012f605
mov qword [rax], r13
mov qword [rax + 8], rsi
mov qword [rax + 0x10], rbx
pxor xmm0, xmm0
movdqu xmmword [rax + 0x18], xmm0
mov rcx, qword [rsp + 0xd8]
mov qword [rcx], rax
mov qword [rcx + 8], rax
mov qword [rcx + 0x10], 1
jmp 0x18012f53b
test rdi, rdi
je 0x18012e756
shr rdi, 1
jmp 0x18012f36e
pxor xmm0, xmm0
mov rax, qword [rsp + 0xd8]
movdqu xmmword [rax], xmm0
mov qword [rax + 0x10], 0
test rsi, rsi
je 0x18012f53b
mov rcx, qword [0x180246f98]
xor edx, edx
mov r8, r13
movaps xmm6, xmmword [rsp + 0x410]
movaps xmm7, xmmword [rsp + 0x420]
add rsp, 0x438
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp qword [sym.imp.KERNEL32.dll_HeapFree]
call fcn.180082200
mov rax, qword [rax]
mov rax, qword [rax + 0x1f0]
shr rdi, 1
cmp rax, rdi
cmova rdi, rax
mov qword [rsp + 0x1f0], rdi
mov qword [rsp + 0x60], rsi
xor eax, eax
mov ecx, r12d
sub ecx, r15d
cmovb ecx, eax
cmp rsi, rcx
ja 0x18012f5eb
add esi, r15d
lea rax, [rsp + 0x130]
mov qword [rsp + 0x200], rax
lea rax, [rsp + 0x60]
mov qword [rsp + 0x208], rax
lea rcx, [rsp + 0x1f0]
mov qword [rsp + 0x210], rcx
mov qword [rsp + 0x218], rbx
mov dword [rsp + 0x220], esi
mov dword [rsp + 0x224], r12d
mov qword [rsp + 0x228], rax
mov qword [rsp + 0x230], rcx
mov qword [rsp + 0x238], rbx
mov dword [rsp + 0x240], r15d
mov dword [rsp + 0x244], esi
mov eax, dword [0x180247064]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov r8, qword [rax + 0x50]
test r8, r8
jne 0x18012f45b
call fcn.180082200
mov rax, qword [rax]
lea rdx, [rax + 0x80]
mov ecx, dword [0x180247064]
mov r8, qword gs:[0x58]
mov rcx, qword [r8 + rcx*8]
mov r8, qword [rcx + 0x50]
test r8, r8
je 0x18012f55f
cmp qword [r8 + 0x110], rax
jne 0x18012f579
lea rcx, [rsp + 0x148]
lea rdx, [rsp + 0x200]
xor r9d, r9d
call fcn.18012f780
mov rsi, qword [rsp + 0x148]
mov r8, qword [rsp + 0x150]
mov r9, qword [rsp + 0x160]
mov rax, qword [rsp + 0x168]
mov rdx, qword [rsp + 0x170]
test r8, r8
je 0x18012f4be
mov rcx, qword [rsp + 0x158]
test r9, r9
je 0x18012f52d
mov qword [r8 + 0x18], r9
mov qword [r9 + 0x20], r8
add rcx, rdx
jmp 0x18012f530
mov qword [r14], r9
mov qword [r14 + 8], rax
mov qword [r14 + 0x10], rdx
test rsi, rsi
je 0x18012f53b
mov rbx, qword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x18012f4f6
mov rcx, qword [0x180246f98]
xor edx, edx
mov r8, rsi
call rbx
mov rsi, r14
test r14, r14
je 0x18012f53b
mov r14, qword [rsi + 0x18]
test r14, r14
je 0x18012f507
mov qword [r14 + 0x20], 0
mov rdi, qword [rsi]
mov rdx, qword [rsi + 0x10]
mov rcx, rdi
call fcn.18012f620
cmp qword [rsi + 8], 0
je 0x18012f4e0
mov rcx, qword [0x180246f98]
xor edx, edx
mov r8, rdi
call rbx
jmp 0x18012f4e0
mov rax, r8
mov qword [r14], rsi
mov qword [r14 + 8], rax
mov qword [r14 + 0x10], rcx
movaps xmm6, xmmword [rsp + 0x410]
movaps xmm7, xmmword [rsp + 0x420]
add rsp, 0x438
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rcx, [rsp + 0x148]
lea r8, [rsp + 0x200]
call fcn.1801a3ab0
jmp 0x18012f473
lea rcx, [rsp + 0x148]
lea r9, [rsp + 0x200]
call fcn.1801a3bd0
jmp 0x18012f473
mov ecx, 1
mov rdx, r12
call fcn.18019a870
ud2
lea r8, str.C:UsersDadoodze.cargo_registry_srcindex.crates.io_6f17d22bba15001f_sysinfo_0.29.11_srcwindowsdisk.rs
mov edx, 0x105
call fcn.18019ad00
ud2
mov ecx, 2
mov edx, 8
call fcn.18019a870
ud2
call fcn.18001e850
ud2
mov ecx, 1
mov rdx, rdi
call fcn.18019a870
ud2
mov ecx, 1
mov rdx, r13
call fcn.18019a870
ud2
lea rcx, str.assertion_failed:_index___self.range.len__C:UsersDadoodze.cargo_registry_srcindex.crates.io_6f17d22bba15001f_rayon_1.7.0_src_range.rs
lea r8, [0x180200538]
mov edx, 0x2b
call fcn.18019ad80
ud2
mov ecx, 8
mov edx, 0x28
call fcn.18019a870
ud2