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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x858
mov eax, dword [0x10067bf0]
xor eax, ebp
mov dword [ebp - 0x38], eax
cmp dword [0x1011fd7c], 5
je 0x100106e8
cmp dword [0x1011fd7c], 0x91
jne 0x10010700
mov eax, dword [ebp + 0xc]
push eax
movsx ecx, byte [ebp + 8]
push ecx
push str.IsSpecUSB_:___c___s_
push 0
call fcn.1003b7a0
add esp, 0x10
mov dl, byte [ebp + 8]
mov byte [ebp - 1], dl
mov eax, dword [0x10059474]
mov dword [ebp - 0x20], eax
mov cx, word [0x10059478]
mov word [ebp - 0x1c], cx
mov dl, byte [0x1005947a]
mov byte [ebp - 0x1a], dl
mov eax, dword [str..x:]
mov dword [ebp - 0x858], eax
mov cx, word [0x10059480]
mov word [ebp - 0x854], cx
mov dl, byte [0x10059482]
mov byte [ebp - 0x852], dl
mov al, byte [ebp - 1]
mov byte [ebp - 0x20], al
mov cl, byte [ebp - 1]
mov byte [ebp - 0x1c], cl
mov dl, byte [ebp - 1]
mov byte [ebp - 0x854], dl
mov dword [ebp - 0x28], 0xffffffff
push 0
push 0
push 3
push 0
push 3
push 0
lea eax, [ebp - 0x858]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0xffffffff
jne 0x100107b0
cmp dword [0x1011fd7c], 5
je 0x1001079a
cmp dword [0x1011fd7c], 0x91
jne 0x100107a9
push str.ret_IsSpecUSB_false1
push 0
call fcn.1003b7a0
add esp, 8
xor al, al
jmp 0x10010b1c
mov dword [ebp - 0x644], 0
push 0
lea ecx, [ebp - 0x644]
push ecx
push 0xc
lea edx, [ebp - 0x34]
push edx
push 0
push 0
push 0x2d1080
mov eax, dword [ebp - 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
je 0x100107eb
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x28], ecx
mov edx, dword [ebp - 0x14]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x28], 0xffffffff
jne 0x10010826
cmp dword [0x1011fd7c], 5
je 0x10010810
cmp dword [0x1011fd7c], 0x91
jne 0x1001081f
push str.ret_IsSpecUSB_false2
push 0
call fcn.1003b7a0
add esp, 8
xor al, al
jmp 0x10010b1c
lea eax, [ebp - 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
mov dword [ebp - 0x43c], eax
push 0x200
lea ecx, [ebp - 0x850]
push ecx
lea edx, [ebp - 0x1c]
push edx
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceA]
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jne 0x10010880
cmp dword [0x1011fd7c], 5
je 0x1001086a
cmp dword [0x1011fd7c], 0x91
jne 0x10010879
push str.ret_IsSpecUSB_false3
push 0
call fcn.1003b7a0
add esp, 8
xor al, al
jmp 0x10010b1c
lea eax, [ebp - 0x850]
push eax
mov ecx, dword [ebp - 0x43c]
push ecx
mov edx, dword [ebp - 0x28]
push edx
call fcn.100103e0
add esp, 0xc
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
jne 0x100108ce
cmp dword [0x1011fd7c], 5
je 0x100108b8
cmp dword [0x1011fd7c], 0x91
jne 0x100108c7
push str.ret_IsSpecUSB_false4
push 0
call fcn.1003b7a0
add esp, 8
xor al, al
jmp 0x10010b1c
mov dword [ebp - 8], 0
xor eax, eax
mov word [ebp - 0x438], ax
mov byte [ebp - 0x21], 0
mov dword [ebp - 0x64c], 0
push 0
mov ecx, dword [ebp - 0x10]
push ecx
lea edx, [ebp - 0x64c]
push edx
call dword [sym.imp.SETUPAPI.dll_CM_Get_Parent]
mov dword [ebp - 0xc], eax
push 0
push 0x200
lea eax, [ebp - 0x640]
push eax
mov ecx, dword [ebp - 0x64c]
push ecx
call dword [sym.imp.SETUPAPI.dll_CM_Get_Device_IDA]
cmp dword [0x1011fd7c], 5
je 0x10010932
cmp dword [0x1011fd7c], 0x91
jne 0x10010948
lea edx, [ebp - 0x640]
push edx
push str.buf__s_
push 0
call fcn.1003b7a0
add esp, 0xc
push 0x5c
lea eax, [ebp - 0x640]
push eax
call fcn.10003a50
add esp, 8
mov dword [ebp - 0x648], eax
cmp dword [ebp - 0x648], 0
jne 0x10010993
cmp dword [0x1011fd7c], 5
je 0x1001097d
cmp dword [0x1011fd7c], 0x91
jne 0x1001098c
push str.ret_IsSpecUSB_false5
push 0
call fcn.1003b7a0
add esp, 8
xor al, al
jmp 0x10010b1c
push 0x5c
mov ecx, dword [ebp - 0x648]
add ecx, 1
push ecx
call fcn.10003a50
add esp, 8
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
jne 0x100109db
cmp dword [0x1011fd7c], 5
je 0x100109c5
cmp dword [0x1011fd7c], 0x91
jne 0x100109d4
push str.ret_IsSpecUSB_false6
push 0
call fcn.1003b7a0
add esp, 8
xor al, al
jmp 0x10010b1c
mov edx, dword [ebp - 0x18]
mov byte [edx], 0
cmp dword [0x1011fd7c], 5
je 0x100109f6
cmp dword [0x1011fd7c], 0x91
jne 0x10010a13
mov eax, dword [ebp - 0x648]
add eax, 1
push eax
mov ecx, dword [ebp + 0xc]
push ecx
push str.sHWID__s_pFound11__s_
push 0
call fcn.1003b7a0
add esp, 0x10
mov edx, dword [ebp - 0x648]
add edx, 1
push edx
mov eax, dword [ebp + 0xc]
push eax
call dword [sym.imp.SHLWAPI.dll_StrStrIA]
test eax, eax
je 0x10010a56
cmp dword [0x1011fd7c], 5
je 0x10010a40
cmp dword [0x1011fd7c], 0x91
jne 0x10010a4f
push str.ret_IsSpecUSB_true1
push 0
call fcn.1003b7a0
add esp, 8
mov al, 1
jmp 0x10010b1c
mov ecx, dword [ebp - 0x18]
add ecx, 1
mov dword [ebp - 0x18], ecx
mov edx, dword [ebp - 0x18]
push edx
call fcn.1003e420
add esp, 4
cmp eax, 0xa
jbe 0x10010af6
mov eax, dword [ebp - 0x18]
push eax
call fcn.1003e420
add esp, 4
mov ecx, dword [ebp - 0x18]
lea edx, [ecx + eax - 0xa]
mov dword [ebp - 0x18], edx
cmp dword [0x1011fd7c], 5
je 0x10010a9f
cmp dword [0x1011fd7c], 0x91
jne 0x10010ab6
mov eax, dword [ebp - 0x18]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
push str.sHWID__s_pFound2__s_
push 0
call fcn.1003b7a0
add esp, 0x10
cmp dword [ebp - 0x18], 0
je 0x10010af6
mov edx, dword [ebp - 0x18]
push edx
mov eax, dword [ebp + 0xc]
push eax
call dword [sym.imp.SHLWAPI.dll_StrStrIA]
test eax, eax
je 0x10010af6
cmp dword [0x1011fd7c], 5
je 0x10010ae3
cmp dword [0x1011fd7c], 0x91
jne 0x10010af2
push str.ret_IsSpecUSB_true2
push 0
call fcn.1003b7a0
add esp, 8
mov al, 1
jmp 0x10010b1c
cmp dword [0x1011fd7c], 5
je 0x10010b0b
cmp dword [0x1011fd7c], 0x91
jne 0x10010b1a
push str.ret_IsSpecUSB_false7
push 0
call fcn.1003b7a0
add esp, 8
xor al, al
mov ecx, dword [ebp - 0x38]
xor ecx, ebp
call fcn.1003e4ab
mov esp, ebp
pop ebp
ret