Function at 0x86c7b0
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x19
push 0
push 0
dec ecx
jne 0x86c7b8
push ecx
push ebx
push esi
push edi
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x86cb4d
push dword fs:[eax]
mov dword fs:[eax], esp
xor edx, edx
push ebp
push 0x86cade
push dword fs:[edx]
mov dword fs:[edx], esp
call fcn.008b0830
test al, al
je 0x86c86c
mov eax, dword [ebp - 4]
cmp dword [eax + 0x3fc], 0
je 0x86c86c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3fc]
call fcn.00863758
test al, al
je 0x86c915
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3fc]
call fcn.008634f4
mov ebx, eax
dec ebx
test ebx, ebx
jl 0x86c915
inc ebx
xor esi, esi
lea ecx, [ebp - 0xa8]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3fc]
mov edx, esi
call fcn.00863494
mov edx, dword [ebp - 0xa4]
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3a8]
mov edx, 0x86cb60
mov ecx, dword [eax]
call dword [ecx + 0x38]
inc esi
dec ebx
jne 0x86c82c
jmp 0x86c915
xor eax, eax
push ebp
push 0x86c89c
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x370]
call fcn.00624a6c
mov edx, dword [eax]
call dword [edx + 0x40]
call fcn.005c2f24
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x86c8a6
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x370]
call fcn.00624a6c
mov edx, dword [eax]
call dword [edx + 0x40]
call fcn.005c3288
mov ebx, eax
dec ebx
test ebx, ebx
jl 0x86c915
inc ebx
xor esi, esi
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x370]
call fcn.00624a6c
mov edx, dword [eax]
call dword [edx + 0x40]
mov edx, esi
call fcn.005c3248
mov edx, dword [eax + 4]
lea eax, [ebp - 0xac]
call fcn.00405594
mov edx, dword [ebp - 0xac]
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3a8]
mov edx, 0x86cb7c
mov ecx, dword [eax]
call dword [ecx + 0x38]
inc esi
dec ebx
jne 0x86c8c8
xor eax, eax
push ebp
push 0x86c93e
push dword fs:[eax]
mov dword fs:[eax], esp
mov word [ebp - 0x12], 0x2710
push 1
call sub.kernel32.dll_SetErrorMode
mov word [ebp - 0x12], ax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x86c948
lea eax, [ebp - 0x93]
push eax
push 0x81
call sub.kernel32.dll_GetLogicalDriveStringsA
test eax, eax
je 0x86c964
cmp eax, 0x81
jbe 0x86c96e
call fcn.004046a4
jmp 0x86cae5
lea ebx, [ebp - 0x93]
jmp 0x86ca93
push ebx
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 2
jne 0x86ca90
lea eax, [ebp - 0xb0]
mov edx, ebx
call fcn.00404e7c
mov edx, dword [ebp - 0xb0]
mov eax, 0x86cb9c
call fcn.00405280
test eax, eax
jne 0x86ca90
lea eax, [ebp - 0xb4]
mov edx, ebx
call fcn.00404e7c
mov edx, dword [ebp - 0xb4]
mov eax, 0x86cba8
call fcn.00405280
test eax, eax
jne 0x86ca90
lea eax, [ebp - 0xb8]
mov edx, ebx
call fcn.00404e7c
mov edx, dword [ebp - 0xb8]
lea eax, [ebp - 0xc]
mov ecx, 0x86cbb4
call fcn.00404f90
mov eax, dword [ebp - 0xc]
call fcn.0040bb60
test al, al
je 0x86ca90
lea eax, [ebp - 0xbc]
mov edx, ebx
call fcn.00404e7c
mov eax, dword [ebp - 0xbc]
lea edx, [ebp - 0x10]
call fcn.0086c6e0
lea edx, [ebp - 0xc0]
mov eax, dword [ebp - 0x10]
call fcn.0040b254
cmp dword [ebp - 0xc0], 0
je 0x86ca90
push dword [ebp - 0x10]
push 0x86cbc4
push dword [ebp - 0xc]
lea eax, [ebp - 0xc8]
mov edx, 3
call fcn.00405004
mov edx, dword [ebp - 0xc8]
lea eax, [ebp - 0xc4]
call fcn.00405594
mov edx, dword [ebp - 0xc4]
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 0x38]
lea eax, [ebp - 0xcc]
mov edx, dword [ebp - 0xc]
call fcn.00405594
mov edx, dword [ebp - 0xcc]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3a8]
mov ecx, dword [eax]
call dword [ecx + 0x38]
add ebx, 4
cmp byte [ebx], 0
jne 0x86c979
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x86cae5
xor eax, eax
push ebp
push 0x86cad3
push dword fs:[eax]
mov dword fs:[eax], esp
cmp word [ebp - 0x12], 0x2710
je 0x86cac9
movzx eax, word [ebp - 0x12]
push eax
call sub.kernel32.dll_SetErrorMode
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x86cadd
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x86cb54
lea eax, [ebp - 0xcc]
call fcn.004053b0
lea eax, [ebp - 0xc8]
call fcn.00404c7c
lea eax, [ebp - 0xc4]
call fcn.004053b0
lea eax, [ebp - 0xc0]
mov edx, 5
call fcn.00404ca0
lea eax, [ebp - 0xac]
call fcn.004053b0
lea eax, [ebp - 0xa8]
mov edx, dword [0x861ad8]
call fcn.00405ab8
lea eax, [ebp - 0x10]
mov edx, 2
call fcn.00404ca0
ret