Function at 0x1002e12
Capabilities:
Get disk information
Get volume information via ioctl

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x17c
mov eax, dword [0x1009024]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push esi
push edi
mov edi, dword [ebp + 0xc]
push 0x64
lea ecx, [ebp - 0xcc]
xor esi, esi
push ecx
push eax
mov dword [ebp - 0xd8], edi
mov dword [ebp - 0xec], esi
mov dword [ebp - 0xe8], esi
mov dword [ebp - 0xd4], esi
call dword [sym.imp.KERNEL32.dll_GetVolumeNameForVolumeMountPointW]
test eax, eax
jne 0x1002e68
call dword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x1003160
lea eax, [ebp - 0xcc]
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
cmp cx, si
jne 0x1002e71
sub eax, edx
push esi
sar eax, 1
xor ecx, ecx
mov word [ebp + eax*2 - 0xce], cx
lea eax, [ebp - 0xf4]
push eax
push 0x60
lea eax, [ebp - 0x17c]
push eax
push esi
push esi
push 0x90064
push edi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
jne 0x1002ebd
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0xd4], eax
jmp 0x100315a
mov eax, dword [ebp - 0x164]
or eax, dword [ebp - 0x160]
jne 0x1002edd
mov eax, dword [ebp - 0x15c]
or eax, dword [ebp - 0x158]
je 0x1003160
push esi
push 0x20000000
push 3
push esi
push 7
push 0x40000080
lea eax, [ebp - 0xcc]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0xf0], eax
cmp eax, 0xffffffff
je 0x1002eac
push esi
push 8
pop edi
push edi
push dword [ebp - 0x168]
push dword [ebp - 0x16c]
call fcn.010074c0
add eax, 0x18
adc edx, esi
mov dword [ebp - 0xe4], eax
mov dword [ebp - 0xe0], edx
js 0x1002f44
jg 0x1002f35
cmp eax, 0xffffffff
jbe 0x1002f44
mov dword [ebp - 0xd4], 0x57
jmp 0x100314e
push ebx
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov ebx, eax
cmp ebx, esi
jne 0x1002f65
mov dword [ebp - 0xd4], edi
jmp 0x100313a
push esi
mov ecx, edi
xor eax, eax
lea edi, [ebp - 0x11c]
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0xd8]
lea eax, [ebp - 0xf4]
push eax
push dword [ebp - 0xe4]
lea eax, [ebp - 0xfc]
push ebx
push 8
push eax
push 0x9006f
push dword [ebp - 0xf0]
mov dword [ebp - 0xfc], esi
mov dword [ebp - 0xf8], esi
mov dword [ebp - 0x11c], edi
mov dword [ebp - 0x114], esi
mov dword [ebp - 0x110], esi
mov dword [ebp - 0x104], 1
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
jne 0x1002fdd
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0xd4], eax
jmp 0x100313a
push esi
push esi
push dword [ebp - 0x150]
push edi
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
cmp eax, 0xffffffff
je 0x1002fcc
push edi
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
test eax, eax
je 0x1002fcc
cmp dword [ebp - 0x168], esi
mov eax, dword [ebx]
mov dword [ebp - 0xe4], eax
mov eax, dword [ebx + 4]
mov byte [ebp - 0xcd], 1
mov dword [ebp - 0xe0], eax
mov dword [ebp - 0xdc], esi
mov dword [ebp - 0xd8], esi
jl 0x100313a
jg 0x100303a
cmp dword [ebp - 0x16c], esi
jbe 0x100313a
push esi
push 8
push dword [ebp - 0xd8]
push dword [ebp - 0xdc]
call fcn.010074c0
lea edi, [eax + ebx + 0x10]
mov al, byte [ebp - 0xcd]
test byte [edi], al
jne 0x10030eb
mov eax, dword [ebp - 0xe4]
mov dword [ebp - 0x10c], eax
mov eax, dword [ebp - 0xe0]
push esi
mov dword [ebp - 0x108], eax
lea eax, [ebp - 0xf4]
push eax
push esi
push esi
push 0x20
lea eax, [ebp - 0x11c]
push eax
push 0x90074
push dword [ebp - 0xf0]
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
jne 0x10030af
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, esi
je 0x10030af
cmp eax, 5
jne 0x10030b7
mov al, byte [ebp - 0xcd]
or byte [edi], al
add dword [ebp - 0xec], 1
push esi
push 0xc8
adc dword [ebp - 0xe8], esi
push dword [ebp - 0xe8]
push dword [ebp - 0xec]
call fcn.01007440
or eax, edx
jne 0x10030eb
push 0x10014c8
call dword [sym.imp.msvcrt.dll_printf]
pop ecx
add dword [ebp - 0xe4], 1
adc dword [ebp - 0xe0], esi
shl byte [ebp - 0xcd], 1
jne 0x1003107
mov byte [ebp - 0xcd], 1
add dword [ebp - 0xdc], 1
adc dword [ebp - 0xd8], esi
mov eax, dword [ebp - 0xd8]
cmp eax, dword [ebp - 0x168]
jl 0x100303a
jg 0x100313a
mov eax, dword [ebp - 0x16c]
cmp dword [ebp - 0xdc], eax
jb 0x100303a
cmp ebx, esi
je 0x100314d
push ebx
push esi
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
pop ebx
push dword [ebp - 0xf0]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0xd4]
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.0100741c
leave
ret 8