Function at 0x100cf2d4
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::h6554fb9d4853597e
pop ecx
test al, al
je 0x100cf3bb
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 0x100cfac2
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::hd25ddf935b56b580
test eax, eax
je 0x100cf8dc
lea ecx, [esp + 0x20]
lea edx, [esp + 0xc0]
push 0
push eax
call sym.rayon_core::join::join_context::__u7b__u7b_closure_u7d__u7d_::hcf9395f7143da5b6
pop eax
pop ecx
jmp 0x100cf9f0
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 0x100cf877
mov eax, dword [esp + 0x9c]
mov eax, dword [eax]
bt eax, esi
jae 0x100cf79d
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 0x100cf795
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 0x100cf791
xor eax, eax
mov ecx, 0x20a
test ecx, ecx
je 0x100cf4aa
cmp word [esp + eax*2 + 0x180], 0
je 0x100cf4b1
inc eax
add ecx, 0xfffffffe
jmp 0x100cf495
mov eax, 0x105
jmp 0x100cf4bc
cmp eax, 0x106
jae 0x100cfaa2
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 0x100cf508
cmp word [esp + ebx*2 + 0x120], 0
je 0x100cf50d
inc ebx
add eax, 0xfffffffe
jmp 0x100cf4f3
push 0x20
pop ebx
jmp 0x100cf516
cmp ebx, 0x21
jae 0x100cfab3
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::h5ff8300083a355d2
pop eax
mov ecx, esi
call sym.alloc::raw_vec::handle_reserve::h25b37d4abb8f209b
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::h974554ac4bb331e0
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x28]
test ebx, ebx
je 0x100cf562
lea eax, [esp + 0x120]
mov cl, byte [eax]
add eax, 2
mov byte [esi + edi], cl
inc edi
dec ebx
jne 0x100cf556
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 0x100cf768
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 0x100cf765
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
mov eax, ecx
or eax, edx
je 0x100cf765
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::h040b4d157c0b3537
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::h1e5525d36bc8aa47
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::h5bf4e74882597c41
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::h5bf4e74882597c41
cmp ebx, 3
mov dword [esp], ebx
je 0x100cf78a
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 0x100cf7a3
lea ecx, [esp + 0x180]
call sym.alloc::raw_vec::RawVec_LT_T_C_A_GT_::reserve_for_push::hfdc719b513721dcc
mov eax, dword [esp + 0x188]
mov edi, dword [esp + 0x180]
mov edx, dword [esp + 0x184]
jmp 0x100cf7a9
push ebx
jmp 0x100cf76a
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::h5bf4e74882597c41
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::h5bf4e74882597c41
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 0x100cf3d1
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 0x100cf79d
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 0x100cf96e
push 4
pop ecx
push 0x14
pop edx
call sym.__ZN63__LT_alloc..alloc..Global_u20_as_u20_core..alloc..Allocator_GT_8allocate17hf6ea05e3b69cdf8fE.1434
test eax, eax
je 0x100cfad4
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 0x100cfa6b
call sym.rayon_core::registry::global_registry::h19eae39de96b13ce
mov esi, dword [eax]
lea edi, [esi + 0x40]
call sym.rayon_core::registry::WorkerThread::current::hd25ddf935b56b580
test eax, eax
je 0x100cf98b
cmp dword [eax + 0x8c], esi
mov ebx, eax
je 0x100cfa8f
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::h65facfa1546c9328
push esi
call sym.rayon_core::registry::Registry::inject::hd5d5502b24992e8f
pop eax
mov ecx, ebx
lea edx, [esp + 0x168]
call sym.rayon_core::registry::WorkerThread::wait_until::hf5d5af410d9f2e15
push 0x16
pop ecx
lea edi, [esp + 0x180]
lea edx, [esp + 0x1ac]
jmp 0x100cf9e5
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_::h257e81c52a2eb475
jmp 0x100cfa6b
xor ecx, ecx
mov ebx, edi
call sym.rayon_core::registry::Registry::in_worker_cold::LOCK_LATCH::__getit::h4ed30cb3b64ad3a2
test eax, eax
je 0x100cfadf
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::h8e85bfd506fe87af
push esi
call sym.rayon_core::registry::Registry::inject::hd5d5502b24992e8f
pop eax
mov ecx, dword [esi]
call sym.rayon_core::latch::LockLatch::wait_and_reset::hff144d7f926a6ea6
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::h8e55106c41956ccb
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 0x100cfa73
mov ecx, dword [esp + 0x38]
and dword [esp + 0x38], 0
test ecx, ecx
je 0x100cfa4d
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_4drop17hca5fe627178438
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
push 0xfffffffffffffff4
pop eax
test eax, eax
je 0x100cfa4d
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 0x100cfa76
lea ecx, [esp + 0x20]
lea edx, [esp + 0xc0]
push 0
push ebx
jmp 0x100cf3af
mov ecx, eax
mov edx, 0x105
push 0x101bff78
call dbg.slice_end_index_len_fail
push 0x20
pop edx
mov ecx, ebx
push 0x101bff88
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 0x101b4538
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, 0x101c04a8
push 0x101c0540
push 0x101bfaa4
push eax
call sym.core::result::unwrap_failed::hb9c5ac622931d85d