Function at 0x300f1158
Capabilities:
Get disk information via ioctl

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x128c
call fcn.301374d4
mov eax, dword [0x3002450c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov eax, 0x30274458
mov edi, eax
mov esi, 0x30005a90
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push 0x12
xor ebx, ebx
push ebx
movsd dword es:[edi], dword [esi]
push ebx
push eax
mov dword [ebp - 0x1264], ecx
movsd dword es:[edi], dword [esi]
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsW]
cmp eax, 0xffffffff
mov dword [ebp - 0x1254], eax
je 0x300f143a
lea ecx, [ebp - 0x1234]
push ecx
push ebx
push 0x30274458
push ebx
mov dword [ebp - 0x1260], ebx
mov dword [ebp - 0x1234], 0x1c
push eax
jmp 0x300f1420
mov edi, dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInterfaceDetailW]
push ebx
lea eax, [ebp - 0x1258]
push eax
push ebx
push ebx
lea eax, [ebp - 0x1234]
push eax
push dword [ebp - 0x1254]
mov dword [ebp - 0x1258], ebx
call edi
push dword [ebp - 0x1258]
call fcn.301089da
mov esi, eax
cmp esi, ebx
mov dword [ebp - 0x1270], esi
je 0x300f144b
lea eax, [ebp - 0x1250]
push eax
lea eax, [ebp - 0x1258]
push eax
mov dword [ebp - 0x1250], 0x1c
mov dword [esi], 6
push dword [ebp - 0x1258]
lea eax, [ebp - 0x1234]
push esi
push eax
push dword [ebp - 0x1254]
call edi
test eax, eax
je 0x300f13ea
push ebx
push ebx
push ebx
push 3
push ebx
push ebx
push 0xc0000000
add esi, 4
push esi
call fcn.3012b1b5
mov edi, eax
cmp edi, 0xffffffff
je 0x300f13ea
push ebx
lea eax, [ebp - 0x126c]
push eax
push 0xc
lea eax, [ebp - 0x128c]
push eax
push ebx
push ebx
push 0x2d1080
push edi
mov dword [ebp - 0x126c], ebx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x300f13ea
mov eax, dword [ebp - 0x1288]
push 0xa
push eax
mov dword [ebp - 0x125c], eax
push 0xa
lea eax, [ebp - 0x18]
push eax
mov word [ebp - 0x218], bx
call fcn.30125aa1
mov esi, dword [ebp - 0x1264]
push 0x100
lea eax, [ebp - 0x218]
push eax
push dword [ebp - 0x125c]
mov ecx, esi
push edi
call fcn.300f099e
push edi
call fcn.300f04e1
test al, al
je 0x300f13bd
lea eax, [ebp - 0x218]
push eax
push dword [ebp - 0x125c]
mov ecx, esi
push edi
call fcn.300f0597
test al, al
je 0x300f1370
push 0x400
lea eax, [ebp - 0xa18]
push eax
push 0x69
mov byte [esi + 9], 1
mov dword [ebp - 0x1268], 0x44c
call fcn.300f2db4
push eax
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
jne 0x300f1337
push ebx
push 0x33766376
call fcn.3010aa60
mov word [ebp - 0xa18], bx
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x18]
push eax
push 2
lea eax, [ebp - 0xa18]
push eax
lea eax, [ebp - 0x1218]
push 0x400
push eax
call fcn.301259ca
mov ecx, dword [esi + 4]
mov eax, dword [ecx]
add esp, 0x18
lea edx, [ebp - 0x1218]
push edx
call dword [eax + 0xc]
jmp 0x300f137a
mov dword [ebp - 0x1268], 0x44d
mov ecx, dword [esi + 4]
lea eax, [ebp - 0x18]
push 2
mov dword [ebp - 0x1278], eax
lea edx, [ebp - 0x1278]
lea eax, [ebp - 0x218]
push edx
push dword [ebp - 0x1268]
mov dword [ebp - 0x1274], eax
mov eax, dword [ecx]
call dword [eax + 0x10]
lea eax, [ebp - 0x218]
push eax
push dword [ebp - 0x125c]
mov ecx, esi
push edi
call fcn.300f0d96
jmp 0x300f13f0
mov ecx, dword [esi + 4]
lea eax, [ebp - 0x18]
mov dword [ebp - 0x1280], eax
push 2
lea edx, [ebp - 0x1280]
lea eax, [ebp - 0x218]
push edx
mov dword [ebp - 0x127c], eax
mov eax, dword [ecx]
push 0x44e
call dword [eax + 0x10]
jmp 0x300f13f0
mov esi, dword [ebp - 0x1264]
push dword [ebp - 0x1270]
inc dword [ebp - 0x1260]
call fcn.300ee73d
cmp byte [esi + 8], bl
pop ecx
jne 0x300f142e
lea eax, [ebp - 0x1234]
push eax
push dword [ebp - 0x1260]
push 0x30274458
push ebx
push dword [ebp - 0x1254]
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInterfaces]
test eax, eax
jne 0x300f11c8
push dword [ebp - 0x1254]
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
mov al, 1
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.30136bd1
leave
ret
push dword [ebp - 0x1254]
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
xor al, al
jmp 0x300f143c