Function at 0x10031a20
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x34
push 2
push 0x208
call sym.___rust_alloc_zeroed
add esp, 8
test eax, eax
je 0x10031d14
mov ecx, eax
mov esi, 0x104
mov ebx, 0xa
mov dword [ebp - 0x38], 0
jmp 0x10031a6c
mov ecx, dword [ebp - 0x18]
dec ebx
mov esi, edi
je 0x10031b3f
lea eax, [ebp - 0x38]
push eax
push esi
mov dword [ebp - 0x10], ecx
push ecx
push dword [ebp + 0xc]
call sub.kernel32.dll_GetVolumePathNamesForVolumeNameW
test eax, eax
jne 0x10031b37
mov dword [ebp - 0x14], esi
call sym.windows_result::error::Error::from_win32::h7d859e40b596e523
mov esi, edx
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x3c], edx
call sym.windows_result::error::Error::from_win32::h7d859e40b596e523
mov edi, eax
test edx, edx
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], edx
je 0x10031ab5
lea eax, [ebp - 0x20]
push eax
call sym.__LT_windows_result..com..ComPtr_u20_as_u20_core..ops..drop..Drop_GT_::drop::hcb2d3b1bb6a74ba7
add esp, 4
mov esi, dword [ebp - 0x3c]
test esi, esi
je 0x10031ac5
lea eax, [ebp - 0x3c]
push eax
call sym.__LT_windows_result..com..ComPtr_u20_as_u20_core..ops..drop..Drop_GT_::drop::hcb2d3b1bb6a74ba7
add esp, 4
cmp edi, 0x800700ea
jne 0x10031c6a
mov edi, dword [ebp - 0x38]
test edi, edi
je 0x10031b10
cmp edi, 0x3fffffff
ja 0x10031d04
lea esi, [edi + edi]
push 2
push esi
call sym.___rust_alloc_zeroed
add esp, 8
test eax, eax
mov dword [ebp - 0x18], eax
je 0x10031cfa
mov eax, dword [ebp - 0x14]
test eax, eax
jne 0x10031b22
jmp 0x10031a60
mov dword [ebp - 0x18], 2
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x10031a60
add eax, eax
push 2
push eax
push dword [ebp - 0x10]
call sym.___rust_dealloc
add esp, 0xc
jmp 0x10031a60
mov eax, dword [ebp - 0x10]
mov edi, esi
mov dword [ebp - 0x18], eax
test edi, edi
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 4
mov dword [ebp - 0x1c], 0
je 0x10031c9a
mov esi, dword [ebp - 0x18]
mov eax, edi
mov dword [ebp - 0x2c], edi
jmp 0x10031bad
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x20]
sub esi, ebx
lea ecx, [ecx + ecx*2]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x34], ecx
mov dword [eax + ecx*4], edi
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0x34]
mov dword [ecx + edx*4 + 4], eax
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x34]
mov dword [eax + ecx*4 + 8], edi
mov eax, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x30]
sub eax, edi
je 0x10031c47
cmp word [esi], 0
je 0x10031c47
mov dword [ebp - 0x30], eax
add eax, eax
mov ecx, 1
mov ebx, 0xfffffffe
neg eax
nop dword [eax + eax]
cmp eax, ebx
je 0x10031cb6
add ebx, 0xfffffffe
cmp word [esi + ecx*2], 0
lea edi, [ecx + 1]
mov ecx, edi
jne 0x10031bd0
lea eax, [edi - 2]
cmp eax, 0x3ffffffd
ja 0x10031ce9
mov eax, dword [0x101918ac]
mov ecx, ebx
neg ecx
movzx eax, byte [eax]
push 2
mov dword [ebp - 0x10], ecx
push ecx
call sym.___rust_alloc
add esp, 8
test eax, eax
je 0x10031cdf
push dword [ebp - 0x10]
push esi
mov dword [ebp - 0x28], eax
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [ebp - 0x1c]
cmp eax, dword [ebp - 0x24]
mov dword [ebp - 0x14], eax
jne 0x10031b70
lea eax, [ebp - 0x24]
push eax
call sym.alloc::raw_vec::RawVec_LT_T_C_A_GT_::grow_one::h417697026837f9a0
add esp, 4
jmp 0x10031b70
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x1c]
mov esi, dword [ebp + 8]
movsd xmm0, qword [ebp - 0x24]
test ecx, ecx
mov dword [esi + 8], eax
movsd qword [esi], xmm0
je 0x10031cac
add ecx, ecx
push 2
push ecx
push dword [ebp - 0x18]
jmp 0x10031c90
mov eax, dword [ebp - 0x14]
mov esi, dword [ebp + 8]
test eax, eax
mov dword [esi], 0
mov dword [esi + 4], 4
mov dword [esi + 8], 0
je 0x10031cac
add eax, eax
push 2
push eax
push dword [ebp - 0x10]
call sym.___rust_dealloc
add esp, 0xc
jmp 0x10031cac
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x1c]
movsd xmm0, qword [ebp - 0x24]
mov dword [esi + 8], eax
movsd qword [esi], xmm0
mov eax, esi
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [ebp - 0x30]
cmp eax, 0xffffffff
jne 0x10031ccd
push 0x1016f0c4
call sym.core::slice::index::slice_end_index_overflow_fail::h8a79371e2b08837b
add esp, 4
jmp 0x10031d12
push 0x1016f0c4
push eax
inc eax
push eax
call sym.core::slice::index::slice_end_index_len_fail::hb7bcdcb5c84f7e98
add esp, 0xc
jmp 0x10031d12
mov edx, dword [ebp - 0x10]
mov eax, 2
jmp 0x10031cee
mov edx, dword [ebp - 0x28]
xor eax, eax
push edx
push eax
call sym.alloc::raw_vec::handle_error::hfb8b40974975e9a6
add esp, 8
jmp 0x10031d12
mov eax, 2
mov dword [ebp - 0x18], esi
jmp 0x10031d06
xor eax, eax
push dword [ebp - 0x18]
push eax
call sym.alloc::raw_vec::handle_error::hfb8b40974975e9a6
add esp, 8
ud2
push 0x208
push 2
call sym.alloc::raw_vec::handle_error::hfb8b40974975e9a6
mov edi, eax
push 2
push dword [ebp - 0x10]
push dword [ebp - 0x28]
call sym.___rust_dealloc
add esp, 0xc
jmp 0x10031d67
lea ecx, [ebp - 0x24]
call fcn.100317d0
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x2c]
test ecx, ecx
je 0x10031d87
add ecx, ecx
push 2
push ecx
push eax
call sym.___rust_dealloc
add esp, 0xc
push edi
call sym.__Unwind_Resume
nop dword [eax]