Function at 0x412950
Capabilities:
Get storage device properties

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x453b11
mov eax, dword fs:[0]
push eax
sub esp, 0xd64
mov eax, dword [0x468100]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0xd60], eax
xor al, al
xor ebx, ebx
xor edi, edi
mov dword [ebp - 0xd68], ecx
mov dword [ebp - 0xd70], edx
mov byte [ebp - 0xd55], al
mov dword [ebp - 0xd5c], edi
cmp al, bl
jne 0x412ccd
push 0x200
lea eax, [ebp - 0x510]
push ebx
push eax
call fcn.00442420
push edi
push 0x45dd44
push 0xffffffffffffffff
lea ecx, [ebp - 0x510]
push 0xff
push ecx
call fcn.0043f212
add esp, 0x20
push ebx
push ebx
push 3
push ebx
push 3
push ebx
lea edx, [ebp - 0x510]
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
mov dword [ebp - 0xd64], esi
cmp esi, 0xffffffff
je 0x412cb7
xor eax, eax
mov dword [ebp - 0xd1c], eax
mov dword [ebp - 0xd18], eax
push 0x800
mov dword [ebp - 0xd14], eax
lea eax, [ebp - 0xd10]
push ebx
push eax
mov dword [ebp - 0xd6c], ebx
mov dword [ebp - 0xd1c], ebx
mov dword [ebp - 0xd18], ebx
call fcn.00442420
add esp, 0xc
push ebx
lea ecx, [ebp - 0xd6c]
push ecx
push 0x800
lea edx, [ebp - 0xd10]
push edx
push 0xc
lea eax, [ebp - 0xd1c]
push eax
push 0x2d1400
push esi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x412ca4
push 0xff
lea ecx, [ebp - 0x10f]
push ebx
push ecx
mov byte [ebp - 0x110], bl
call fcn.00442420
push 0xff
lea edx, [ebp - 0x20f]
push ebx
push edx
mov byte [ebp - 0x210], bl
call fcn.00442420
push 0xff
lea eax, [ebp - 0x30f]
push ebx
push eax
mov byte [ebp - 0x310], bl
call fcn.00442420
mov eax, dword [ebp - 0xd00]
push ebx
lea edi, [ebp - 0x210]
lea ecx, [ebp - 0xd10]
call fcn.00412470
mov eax, dword [ebp - 0xcfc]
push ebx
lea edi, [ebp - 0x310]
lea ecx, [ebp - 0xd10]
call fcn.00412470
mov eax, dword [ebp - 0xcf8]
push 1
lea edi, [ebp - 0x110]
lea ecx, [ebp - 0xd10]
call fcn.00412470
movsx ecx, byte [ebp - 0x110]
push ecx
call fcn.0043fb3a
add esp, 0x34
test eax, eax
jne 0x412b2a
movsx edx, byte [ebp - 0xfd]
push edx
call fcn.0043fb3a
add esp, 4
test eax, eax
je 0x412caa
lea eax, [ebp - 0x110]
mov dword [ebp - 0xd24], 0xf
mov dword [ebp - 0xd28], ebx
mov byte [ebp - 0xd38], bl
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x412b50
sub eax, edx
mov edi, eax
lea eax, [ebp - 0x110]
lea esi, [ebp - 0xd38]
call fcn.00412f60
mov edi, esi
mov esi, dword [ebp - 0xd60]
mov dword [ebp - 4], ebx
call fcn.00412e60
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0xd24], 0x10
jb 0x412b9b
mov eax, dword [ebp - 0xd38]
push eax
call fcn.0043e7d7
add esp, 4
lea eax, [ebp - 0x210]
mov dword [ebp - 0xd24], 0xf
mov dword [ebp - 0xd28], ebx
mov byte [ebp - 0xd38], bl
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x412bc0
sub eax, edx
mov edi, eax
lea eax, [ebp - 0x210]
lea esi, [ebp - 0xd38]
call fcn.00412f60
mov edi, esi
mov esi, dword [ebp - 0xd68]
mov dword [ebp - 4], 1
call fcn.00412e60
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0xd24], 0x10
jb 0x412c0f
mov ecx, dword [ebp - 0xd38]
push ecx
call fcn.0043e7d7
add esp, 4
lea eax, [ebp - 0x310]
mov dword [ebp - 0xd40], 0xf
mov dword [ebp - 0xd44], ebx
mov byte [ebp - 0xd54], bl
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x412c30
sub eax, edx
mov edi, eax
lea eax, [ebp - 0x310]
lea esi, [ebp - 0xd54]
call fcn.00412f60
mov edi, esi
mov esi, dword [ebp - 0xd70]
mov dword [ebp - 4], 2
call fcn.00412e60
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0xd40], 0x10
jb 0x412c7f
mov edx, dword [ebp - 0xd54]
push edx
call fcn.0043e7d7
add esp, 4
mov esi, dword [ebp - 0xd64]
mov dword [ebp - 0xd40], 0xf
mov dword [ebp - 0xd44], ebx
mov byte [ebp - 0xd54], bl
mov byte [ebp - 0xd55], 1
jmp 0x412caa
call dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, dword [ebp - 0xd5c]
mov al, byte [ebp - 0xd55]
inc edi
mov dword [ebp - 0xd5c], edi
cmp edi, 0x10
jl 0x4129a5
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0043e1c4
mov esp, ebp
pop ebp
ret