Function at 0x10116d90
Capabilities:
Get disk information
Get disk information via ioctl

Disassembly:
sub esp, 0x440
push ebx
push ebp
push esi
push edi
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x41]
mov byte [esp + 0x40], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov cx, word [0x1027b494]
mov dl, byte [0x1027b496]
stosb byte es:[edi], al
mov eax, dword [0x102667c0]
mov word [esp + 0x10], cx
mov cx, word [0x10266854]
mov dword [esp + 0x1c], eax
mov eax, dword [str..X:]
mov byte [esp + 0x12], dl
mov dl, byte [0x10266856]
mov dword [esp + 0x20], eax
mov eax, dword [0x107947e8]
or ebx, 0xffffffff
test eax, eax
mov word [esp + 0x24], cx
mov byte [esp + 0x26], dl
je 0x10117025
push 0x10266994
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
test edi, edi
mov dword [esp + 0x2c], edi
jne 0x10116e31
push eax
push str.LoadLibrary:_setupapi.DLL_not_found_r_n
push 1
mov ecx, 0x10788728
call fcn.10113950
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x440
ret
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.CM_Get_Parent
push edi
call esi
mov ebp, eax
test ebp, ebp
jne 0x10116e59
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x440
ret
push str.CM_Request_Device_EjectW
push edi
call esi
test eax, eax
mov dword [esp + 0x28], eax
jne 0x10116e7d
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x440
ret
mov al, byte [esp + 0x454]
push 0
push 0
push 3
mov byte [esp + 0x28], al
mov byte [esp + 0x1c], al
mov byte [esp + 0x30], al
push 0
push 3
lea eax, [esp + 0x34]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
je 0x10117025
lea ecx, [esp + 0x30]
push 0
push ecx
lea edx, [esp + 0x3c]
push 0xc
push edx
push 0
push 0
push 0x2d1080
push esi
mov dword [esp + 0x50], 0
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x10116ee0
mov ebx, dword [esp + 0x38]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp ebx, 0xffffffff
je 0x10117025
lea eax, [esp + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
mov esi, eax
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x144]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x144]
push 0x104
lea edx, [esp + 0x14]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceA]
test eax, eax
je 0x10117025
lea eax, [esp + 0x144]
push eax
push esi
push ebx
call fcn.10117040
xor ebx, ebx
add esp, 0xc
cmp eax, ebx
je 0x10117025
push ebx
lea ecx, [esp + 0x18]
push eax
push ecx
mov dword [esp + 0x24], 6
mov dword [esp + 0x20], ebx
call ebp
mov ebp, dword [sym.imp.KERNEL32.dll_Sleep]
mov esi, 1
mov eax, dword [esp + 0x14]
push ebx
push ebx
lea edx, [esp + 0x20]
push ebx
push edx
push eax
mov word [esp + 0x25c], bx
call dword [esp + 0x3c]
mov edi, eax
cmp edi, ebx
jne 0x10116f8e
cmp dword [esp + 0x18], ebx
je 0x10116f9d
push 0xfa
call ebp
inc esi
cmp esi, 3
jg 0x10116fbf
jmp 0x10116f69
push ebx
push str.Success__r_n
push 1
mov ecx, 0x10788728
call fcn.10113950
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x440
ret
push edi
lea ecx, [esp + 0x44]
push str.fail_r_nResult0x_2X_r_n
push ecx
call fcn.1003399c
add esp, 0xc
lea edx, [esp + 0x40]
mov ecx, 0x10788728
push ebx
push edx
push 1
call fcn.10113950
cmp word [esp + 0x248], bx
je 0x1011701a
lea eax, [esp + 0x248]
lea ecx, [esp + 0x40]
push eax
push str.VetoName_ws___r_n
push ecx
call fcn.1003399c
add esp, 0xc
lea edx, [esp + 0x40]
mov ecx, 0x10788728
push ebx
push edx
push 1
call fcn.10113950
mov eax, dword [esp + 0x2c]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x440
ret