Function at 0x100dbb45
Capabilities:
Get disk information
Get disk size
Get storage device properties
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x390
mov eax, dword [ebp + 0xc]
lea ebx, [esp + 0x178]
mov edi, dword [ebp + 0x1c]
mov esi, edx
mov dword [esp + 0xc], ecx
mov dword [esp + 0xa0], edx
mov ecx, ebx
mov dword [ebx], eax
mov eax, dword [ebp + 0x10]
mov dword [ebx + 4], eax
mov al, byte [ebp + 8]
movzx eax, al
push eax
call sym.rayon::iter::plumbing::LengthSplitter::try_split::he01c424c4b1858cc
pop ecx
test al, al
je 0x100dbc2c
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x14]
shr esi, 1
xor eax, eax
mov dword [esp + 0x78], esi
sub ecx, edx
cmovb ecx, eax
cmp ecx, esi
jb 0x100dc333
mov ecx, dword [ebp + 0x18]
lea eax, [esp + 0xa0]
add esi, edx
mov dword [esp + 0xc0], eax
lea eax, [esp + 0x78]
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc8], ebx
mov dword [esp + 0xcc], edi
mov dword [esp + 0xd0], esi
mov dword [esp + 0xd4], ecx
mov dword [esp + 0xd8], eax
mov dword [esp + 0xdc], ebx
mov dword [esp + 0xe0], edi
mov dword [esp + 0xe4], edx
mov dword [esp + 0xe8], esi
call sym.rayon_core::registry::WorkerThread::current::h322c6e62d80b6db0
test eax, eax
je 0x100dc14d
lea ecx, [esp + 0x20]
lea edx, [esp + 0xc0]
push 0
push eax
call sym.rayon_core::join::join_context::__u7b__u7b_closure_u7d__u7d_::h2021b39997bcf6f9
pop eax
pop ecx
jmp 0x100dc261
mov eax, dword [edi]
mov dword [esp + 0x9c], eax
push 8
pop edx
mov esi, dword [ebp + 0x14]
mov ebx, dword [ebp + 0x18]
xor edi, edi
xor ecx, ecx
cmp esi, ebx
jae 0x100dc0e8
mov eax, dword [esp + 0x9c]
mov eax, dword [eax]
bt eax, esi
jae 0x100dc00e
lea eax, [esi + 0x41]
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
mov word [esp + 0x48], ax
mov dword [esp + 0x4a], 0x5c003a
and word [esp + 0x4e], 0
mov dword [esp], eax
lea eax, [esp + 0x48]
push eax
call sub.kernel32.dll_GetDriveTypeW
mov ecx, eax
and ecx, 0xfffffffe
cmp ecx, 2
jne 0x100dc006
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], edi
push 0x20a
push 0
lea edi, [esp + 0x188]
push edi
call sub.msvcrt.dll_memset
add esp, 0xc
xorps xmm0, xmm0
movaps xmmword [esp + 0x150], xmm0
movaps xmmword [esp + 0x140], xmm0
movaps xmmword [esp + 0x130], xmm0
movaps xmmword [esp + 0x120], xmm0
push 0x20
lea eax, [esp + 0x124]
push eax
push 0
push 0
push 0
push 0x105
push edi
lea eax, [esp + 0x64]
push eax
call sub.kernel32.dll_GetVolumeInformationW
test eax, eax
je 0x100dc002
xor eax, eax
mov ecx, 0x20a
test ecx, ecx
je 0x100dbd1b
cmp word [esp + eax*2 + 0x180], 0
je 0x100dbd22
inc eax
add ecx, 0xfffffffe
jmp 0x100dbd06
mov eax, 0x105
jmp 0x100dbd2d
cmp eax, 0x106
jae 0x100dc313
lea ecx, [esp + 0xa4]
lea edx, [esp + 0x180]
push eax
call sym.alloc::string::String::from_utf16_lossy::h862bb771cdf4452c
pop eax
mov ecx, dword [esp + 0xa8]
mov edx, dword [esp + 0xac]
xor ebx, ebx
push 0x40
pop eax
mov dword [esp + 0x14], esi
mov dword [esp + 0x18], ecx
mov dword [esp + 0x98], edx
test eax, eax
je 0x100dbd79
cmp word [esp + ebx*2 + 0x120], 0
je 0x100dbd7e
inc ebx
add eax, 0xfffffffe
jmp 0x100dbd64
push 0x20
pop ebx
jmp 0x100dbd87
cmp ebx, 0x21
jae 0x100dc324
lea esi, [esp + 0x20]
mov edx, ebx
mov ecx, esi
push 0
call sym.alloc::raw_vec::RawVec_LT_T_C_A_GT_::try_allocate_in::hdb64a16c007707c3
pop eax
mov ecx, esi
call sym.alloc::raw_vec::handle_reserve::h0810750adb436351
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
and dword [esp + 0x28], 0
mov ecx, esi
mov edx, ebx
call sym.alloc::vec::Vec_LT_T_C_A_GT_::reserve::h42e923c4efa668e7
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x28]
test ebx, ebx
je 0x100dbdd3
lea eax, [esp + 0x120]
mov cl, byte [eax]
add eax, 2
mov byte [esi + edi], cl
inc edi
dec ebx
jne 0x100dbdc7
mov eax, dword [esp + 0x20]
mov dword [esp + 0xb2], 0x5c005c
mov dword [esp + 0xb6], 0x5c002e
mov dword [esp + 0x70], eax
mov eax, dword [esp]
mov word [esp + 0xba], ax
mov dword [esp + 0xbc], 0x3a
push 0
push 0
push 3
pop eax
push eax
push 0
push eax
push 0
lea eax, [esp + 0xca]
push eax
call sub.kernel32.dll_CreateFileW
cmp eax, 0xffffffff
je 0x100dbfd9
and dword [esp + 0x64], 0
and dword [esp + 0x60], 0
and dword [esp + 0x24], 0
and dword [esp + 0x20], 0
mov ebx, eax
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x64]
push eax
push 0
lea eax, [esp + 0x54]
push eax
call sub.kernel32.dll_GetDiskFreeSpaceExW
test eax, eax
je 0x100dbfd6
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
mov eax, ecx
or eax, edx
je 0x100dbfd6
mov eax, dword [esp + 0x20]
mov dword [esp + 0x90], edx
mov dword [esp + 0x94], ecx
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x88], eax
push 2
pop eax
cmp dword [esp + 0x10], eax
mov dword [esp + 0xec], 7
xorps xmm0, xmm0
movsd qword [esp + 0x60], xmm0
sete byte [esp + 0x10]
and dword [esp + 0xf0], 0
and dword [esp + 0x68], 0
and dword [esp + 0x74], 0
mov byte [esp + 0xf4], 0
push 0
lea eax, [esp + 0x78]
push eax
push 0xc
pop ecx
push ecx
lea eax, [esp + 0x6c]
push eax
push ecx
lea eax, [esp + 0x100]
push eax
push 0x2d1400
push ebx
call sub.kernel32.dll_DeviceIoControl
mov dword [esp], ebx
xor ebx, ebx
cmp byte [esp + 0x68], 0
sete bl
push 0xc
pop ecx
cmp dword [esp + 0x74], ecx
push 2
pop ecx
mov edx, dword [esp + 0x18]
cmovne ebx, ecx
test eax, eax
cmove ebx, ecx
lea ecx, [esp + 0x20]
push dword [esp + 0x98]
call sym.std::sys::os_str::wtf8::Slice::to_owned::hf448ab547384432d
pop eax
lea ecx, [esp + 0x108]
mov edx, esi
push edi
call sym.__LT_T_u20_as_u20_alloc..slice..hack..ConvertVec_GT_::to_vec::hf4887128e02f5a9f
pop eax
lea edi, [esp + 0x48]
lea ecx, [esp + 0x114]
mov edx, edi
push 4
call sym.__LT_T_u20_as_u20_alloc..slice..hack..ConvertVec_GT_::to_vec::h370db997ade34bd5
pop eax
lea ecx, [esp + 0xf8]
mov edx, edi
push 3
call sym.alloc::string::String::from_utf16_lossy::h862bb771cdf4452c
pop eax
push dword [esp]
call sub.kernel32.dll_CloseHandle
mov ecx, dword [esp + 0x70]
mov edx, esi
call sym.__LT_alloc..raw_vec..RawVec_LT_T_C_A_GT__u20_as_u20_core..ops..drop..Drop_GT_::drop::h1d621a182bf039a7
mov ecx, dword [esp + 0xa4]
mov edx, dword [esp + 0x18]
call sym.__LT_alloc..raw_vec..RawVec_LT_T_C_A_GT__u20_as_u20_core..ops..drop..Drop_GT_::drop::h1d621a182bf039a7
cmp ebx, 3
mov dword [esp], ebx
je 0x100dbffb
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x14]
mov ebx, dword [ebp + 0x18]
mov dword [esp + 0x180], edx
mov dword [esp + 0x184], eax
mov eax, dword [esp + 4]
cmp eax, edx
mov dword [esp + 0x188], eax
jne 0x100dc014
lea ecx, [esp + 0x180]
call sym.alloc::raw_vec::RawVec_LT_T_C_A_GT_::reserve_for_push::h47cfd980f1a4aabb
mov eax, dword [esp + 0x188]
mov edi, dword [esp + 0x180]
mov edx, dword [esp + 0x184]
jmp 0x100dc01a
push ebx
jmp 0x100dbfdb
push 0xffffffffffffffff
call sub.kernel32.dll_CloseHandle
mov ecx, dword [esp + 0x70]
mov edx, esi
call sym.__LT_alloc..raw_vec..RawVec_LT_T_C_A_GT__u20_as_u20_core..ops..drop..Drop_GT_::drop::h1d621a182bf039a7
mov ecx, dword [esp + 0xa4]
mov edx, dword [esp + 0x18]
call sym.__LT_alloc..raw_vec..RawVec_LT_T_C_A_GT__u20_as_u20_core..ops..drop..Drop_GT_::drop::h1d621a182bf039a7
mov esi, dword [esp + 0x14]
mov ebx, dword [ebp + 0x18]
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 8]
mov ecx, dword [esp + 4]
inc esi
jmp 0x100dbc42
mov edi, edx
mov edx, dword [esp + 8]
mov ecx, dword [esp]
mov dword [esp + 4], eax
imul eax, eax, 0x50
mov dword [edx + eax], ecx
or dword [edx + eax + 4], 0xffffffff
mov ecx, dword [esp + 0x94]
movsd xmm0, qword [esp + 0x20]
movsd xmm1, qword [esp + 0x28]
movsd qword [edx + eax + 8], xmm0
movsd qword [edx + eax + 0x10], xmm1
mov dword [edx + eax + 0x18], ecx
mov ecx, dword [esp + 0x90]
mov dword [edx + eax + 0x1c], ecx
mov ecx, dword [esp + 0x8c]
mov dword [edx + eax + 0x20], ecx
mov ecx, dword [esp + 0x88]
mov dword [edx + eax + 0x24], ecx
mov ecx, dword [esp + 0x110]
mov dword [edx + eax + 0x30], ecx
movsd xmm0, qword [esp + 0x108]
movsd qword [edx + eax + 0x28], xmm0
movsd xmm0, qword [esp + 0x114]
movsd qword [edx + eax + 0x34], xmm0
mov ecx, dword [esp + 0x11c]
mov dword [edx + eax + 0x3c], ecx
mov ecx, dword [esp + 0x100]
mov dword [edx + eax + 0x48], ecx
mov cl, byte [esp + 0x10]
movsd xmm0, qword [esp + 0xf8]
movsd qword [edx + eax + 0x40], xmm0
mov byte [edx + eax + 0x4c], cl
movzx ecx, word [esp + 0x120]
mov word [edx + eax + 0x4d], cx
mov cl, byte [esp + 0x122]
mov byte [edx + eax + 0x4f], cl
mov ecx, dword [esp + 4]
inc ecx
jmp 0x100dc00e
mov eax, dword [ebp + 0x1c]
test ecx, ecx
mov dword [esp + 0x78], edi
mov dword [esp + 0x7c], edx
mov dword [esp + 0x80], ecx
mov dword [esp + 0x84], eax
je 0x100dc1df
push 4
pop ecx
push 0x14
pop edx
call sym.__ZN63__LT_alloc..alloc..Global_u20_as_u20_core..alloc..Allocator_GT_8allocate17hf6ea05e3b69cdf8fE.1423
test eax, eax
je 0x100dc345
mov ecx, dword [esp + 0x80]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0xc]
movsd xmm0, qword [esp + 0x78]
movsd qword [eax], xmm0
and dword [eax + 0xc], 0
and dword [eax + 0x10], 0
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov dword [ecx + 8], 1
jmp 0x100dc2dc
call sym.rayon_core::registry::global_registry::h3b5e4e12d4cacf9a
mov esi, dword [eax]
lea edi, [esi + 0x40]
call sym.rayon_core::registry::WorkerThread::current::h322c6e62d80b6db0
test eax, eax
je 0x100dc1fc
cmp dword [eax + 0x8c], esi
mov ebx, eax
je 0x100dc300
mov eax, ebx
mov ecx, dword [ebx + 0x88]
lea edx, [esp + 0x168]
add eax, 0x8c
mov dword [edx], eax
and dword [edx + 4], 0
mov dword [edx + 8], ecx
mov byte [edx + 0xc], 1
push 0xb
pop ecx
lea edx, [esp + 0x120]
mov eax, edi
lea esi, [esp + 0xc0]
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov esi, edx
mov ecx, eax
and dword [edx + 0x2c], 0
mov edx, sym.__LT_rayon_core..job..StackJob_LT_L_C_F_C_R_GT__u20_as_u20_rayon_core..job..Job_GT_::execute::hbc7d4db644d0352f
push esi
call sym.rayon_core::registry::Registry::inject::h21570cf8a6457bcb
pop eax
mov ecx, ebx
lea edx, [esp + 0x168]
call sym.rayon_core::registry::WorkerThread::wait_until::hc99072657a013ce3
push 0x16
pop ecx
lea edi, [esp + 0x180]
lea edx, [esp + 0x1ac]
jmp 0x100dc256
mov eax, dword [esp + 0xc]
lea ecx, [esp + 0x78]
and dword [eax], 0
and dword [eax + 4], 0
and dword [eax + 8], 0
call sym.core::ptr::drop_in_place_LT_alloc..vec..Vec_LT_sysinfo..windows..disk..Disk_GT__GT_::had1ca5e0940b2d47
jmp 0x100dc2dc
xor ecx, ecx
mov ebx, edi
call sym.rayon_core::registry::Registry::in_worker_cold::LOCK_LATCH::__getit::hb505b6219e0b2240
test eax, eax
je 0x100dc350
lea edx, [esp + 0x124]
mov dword [edx - 4], eax
push 0xb
pop ecx
lea esi, [esp + 0xc0]
mov edi, edx
rep movsd dword es:[edi], dword [esi]
lea esi, [esp + 0x120]
mov ecx, ebx
and dword [edx + 0x2c], 0
mov edx, sym.__LT_rayon_core..job..StackJob_LT_L_C_F_C_R_GT__u20_as_u20_rayon_core..job..Job_GT_::execute::h6d2b76d53f747db1
push esi
call sym.rayon_core::registry::Registry::inject::h21570cf8a6457bcb
pop eax
mov ecx, dword [esi]
call sym.rayon_core::latch::LockLatch::wait_and_reset::hd1d0e8a568f55a99
push 0x13
pop ecx
lea edi, [esp + 0x180]
lea edx, [esp + 0x1b0]
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x20]
call sym.rayon_core::job::JobResult_LT_T_GT_::into_return_value::h7d92a9bea9a1e421
mov eax, dword [esp + 0x28]
movsd xmm0, qword [esp + 0x20]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x34]
movsd qword [esp + 0x50], xmm0
movsd xmm0, qword [esp + 0x2c]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x54]
movsd qword [esp + 0x38], xmm0
test eax, eax
je 0x100dc2e4
mov ecx, dword [esp + 0x38]
and dword [esp + 0x38], 0
test ecx, ecx
je 0x100dc2be
mov dword [eax + 0xc], ecx
mov dword [ecx + 0x10], eax
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
and dword [esp + 0x3c], 0
and dword [esp + 0x40], 0
mov dword [esp + 0x54], eax
add dword [esp + 0x58], ecx
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0xc]
movsd xmm0, qword [esp + 0x50]
mov dword [ecx + 8], eax
movsd qword [ecx], xmm0
lea ecx, [esp + 0x38]
call sym.__ZN98__LT_alloc..collections..linked_list..LinkedList_LT_T_C_A_GT__u20_as_u20_core..ops..drop..Drop_GT_4drop17h542917437ea410
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
push 0xfffffffffffffff4
pop eax
test eax, eax
je 0x100dc2be
mov ecx, dword [esp + eax + 0x5c]
mov edx, dword [esp + eax + 0x44]
mov dword [esp + eax + 0x5c], edx
mov dword [esp + eax + 0x44], ecx
add eax, 4
jmp 0x100dc2e7
lea ecx, [esp + 0x20]
lea edx, [esp + 0xc0]
push 0
push ebx
jmp 0x100dbc20
mov ecx, eax
mov edx, 0x105
push 0x101cf878
call dbg.slice_end_index_len_fail
push 0x20
pop edx
mov ecx, ebx
push 0x101cf888
call dbg.slice_end_index_len_fail
push 0x2b
pop edx
mov ecx, str.assertion_failed:_index___self.range.len___home_lanbyshell_.cargo_registry_src_index.crates.io_6f17d22bba15001f_rayon_1.10.0_src_range.rs
push 0x101c3760
call dbg.panic
push 4
pop ecx
push 0x14
pop edx
call dbg.handle_alloc_error
lea eax, [esp + 0x180]
push 0x46
pop edx
mov ecx, 0x101cfda8
push 0x101cfe40
push 0x101cf324
push eax
call sym.core::result::unwrap_failed::hb9c5ac622931d85d