Function at 0x10056c00
Capabilities:
Get storage device properties

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100bd2cf
mov eax, dword fs:[0]
push eax
sub esp, 0x834
mov eax, dword [0x100f51d4]
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 dword [ebp - 0x828], ecx
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
mov dword [ebp - 0x834], eax
xor ebx, ebx
mov dword [ebp - 0x83c], ebx
mov dword [ebp - 4], ebx
mov dword [ebp - 0x838], ebx
mov dword [ebp - 4], 1
push eax
push str..PhysicalDrive_d
lea eax, [ebp - 0x6fc]
push 0x200
push eax
call fcn.10021810
add esp, 0x10
lea eax, [ebp - 0x6fc]
push ebx
push ebx
push 3
push ebx
push 3
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
jne 0x10056ca7
call fcn.1000ff80
xor esi, esi
test eax, eax
je 0x10056caf
mov dword [ebp - 4], 0xffffffff
jmp 0x10057075
mov ebx, esi
mov dword [ebp - 0x83c], ebx
push 0x3e8
lea eax, [ebp - 0x4fc]
push 0
push eax
call fcn.10097030
add esp, 0xc
mov dword [ebp - 0x700], 0
lea eax, [ebp - 0x840]
mov dword [ebp - 0x708], 0
mov dword [ebp - 0x704], 0
mov dword [ebp - 0x840], 0
push 0
push eax
push 0x3e8
lea eax, [ebp - 0x4fc]
push eax
push 0xc
lea eax, [ebp - 0x708]
push eax
push 0x2d1400
push ebx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x1005705d
test esi, esi
je 0x10056d2e
push ebx
call edi
xor ebx, ebx
mov dword [ebp - 0x83c], ebx
cmp byte [ebp - 0x4f2], 0
jne 0x1005705d
mov eax, dword [ebp - 0x4e0]
cmp eax, 1
je 0x1005705d
cmp eax, 0xa
je 0x1005705d
cmp eax, 4
je 0x1005705d
cmp eax, 7
je 0x1005705d
cmp eax, 0xe
je 0x1005705d
cmp eax, 0xf
je 0x1005705d
lea ecx, [ebp - 0x830]
call fcn.10014460
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x82c]
call fcn.10014460
mov byte [ebp - 4], 4
lea eax, [ebp - 0x82c]
mov cl, byte [ebp - 0x834]
lea edx, [ebp - 0x830]
push eax
call fcn.10056620
add esp, 4
test eax, eax
je 0x10056dc4
mov eax, dword [ebp - 0x830]
cmp dword [eax - 0xc], 0
jne 0x100570b8
mov byte [ebp - 4], 3
or edi, 0xffffffff
mov ecx, dword [ebp - 0x82c]
mov eax, edi
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x10056e01
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x100571a6
mov eax, dword [edx + 4]
push 0
push dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov byte [ebp - 4], 1
mov eax, edi
mov ecx, dword [ebp - 0x830]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x10056e3b
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x100571af
mov eax, dword [edx + 4]
push 0
push dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov edi, dword [ebp - 0x4e4]
mov eax, dword [ebp - 0x4f8]
cmp edi, eax
jae 0x100570a9
mov esi, dword [ebp - 0x4f0]
cmp esi, eax
jae 0x100570a9
cmp dword [ebp - 0x4ec], eax
jae 0x100570a9
push 0x104
lea eax, [ebp - 0x114]
push 0
push eax
call fcn.10097030
add esp, 0xc
test edi, edi
je 0x10056f18
lea ecx, [ebp - 0x824]
mov dword [ebp - 0x824], 0x11c
mov edi, 1
call fcn.10015f60
test eax, eax
je 0x10056ebb
cmp dword [ebp - 0x820], 6
ja 0x10056eb9
jne 0x10056ebb
cmp dword [ebp - 0x81c], 2
jb 0x10056ebb
xor edi, edi
lea esi, [ebp - 0x4fc]
mov edx, 0x104
add esi, dword [ebp - 0x4e4]
lea ecx, [ebp - 0x114]
mov eax, ecx
sub esi, eax
lea eax, [edx + 0x7ffffefa]
test eax, eax
je 0x10056ef1
mov al, byte [ecx + esi]
test al, al
je 0x10056ef1
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x10056ed6
jmp 0x10056ef5
test edx, edx
jne 0x10056ef6
dec ecx
push edi
mov edi, dword [ebp - 0x828]
mov edx, edi
mov byte [ecx], 0
lea ecx, [ebp - 0x114]
call fcn.100563d0
mov esi, dword [ebp - 0x4f0]
add esp, 4
jmp 0x10056f1e
mov edi, dword [ebp - 0x828]
mov eax, dword [edi]
cmp dword [eax - 0xc], 0
jne 0x10056f38
mov dword [ebp - 4], 0xffffffff
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x10057064
push 0x104
lea eax, [ebp - 0x114]
push 0
push eax
call fcn.10097030
add esp, 0xc
test esi, esi
je 0x10056f9e
lea edx, [ebp - 0x4fc]
mov ecx, 0x104
add edx, esi
lea eax, [ebp - 0x114]
cmp byte [eax], 0
je 0x10056f70
inc eax
sub ecx, 1
jne 0x10056f65
mov eax, 0x104
mov esi, ecx
sub eax, ecx
neg esi
sbb esi, esi
and esi, eax
test ecx, ecx
je 0x10056f9e
push SysReAllocString
push edx
push ecx
mov edx, 0x104
lea ecx, [ebp - 0x114]
sub edx, esi
add ecx, esi
call fcn.10050d20
cmp byte [ebp - 0x114], 0
je 0x10056fb9
push 0x100e5500
lea eax, [ebp - 0x114]
push eax
call dword [sym.imp.SHLWAPI.dll_StrTrimA]
mov eax, dword [ebp - 0x4ec]
test eax, eax
je 0x1005700f
lea edx, [ebp - 0x4fc]
mov ecx, 0x104
add edx, eax
lea eax, [ebp - 0x114]
cmp byte [eax], 0
je 0x10056fe1
inc eax
sub ecx, 1
jne 0x10056fd6
mov eax, 0x104
mov esi, ecx
sub eax, ecx
neg esi
sbb esi, esi
and esi, eax
test ecx, ecx
je 0x1005700f
push SysReAllocString
push edx
push ecx
mov edx, 0x104
lea ecx, [ebp - 0x114]
sub edx, esi
add ecx, esi
call fcn.10050d20
cmp byte [ebp - 0x114], 0
je 0x1005704b
push 0x100e5500
lea eax, [ebp - 0x114]
push eax
call dword [sym.imp.SHLWAPI.dll_StrTrimA]
lea ecx, [ebp - 0x114]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10057033
sub ecx, edx
lea eax, [ebp - 0x114]
push ecx
push eax
mov ecx, edi
call fcn.100546f0
mov eax, dword [edi]
cmp dword [eax - 0xc], 0
jne 0x10057180
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 4], 0xffffffff
test ebx, ebx
je 0x10057075
push ebx
call edi
mov dword [ebp - 0x83c], 0
mov eax, dword [ebp - 0x834]
inc eax
mov dword [ebp - 0x834], eax
cmp eax, 0x10
jl 0x10056c42
xor eax, eax
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.10071699
mov esp, ebp
pop ebp
ret
mov dword [ebp - 4], 0xffffffff
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x10057064
mov esi, dword [ebp - 0x828]
lea edx, [eax - 0x10]
mov edi, dword [esi]
sub edi, 0x10
cmp edx, edi
je 0x100570fe
cmp dword [edi + 0xc], 0
jl 0x100570f3
mov ecx, dword [edx]
cmp ecx, dword [edi]
jne 0x100570f3
mov ecx, edx
call fcn.10050b30
mov ecx, edi
mov esi, eax
call fcn.10012730
lea eax, [esi + 0x10]
mov esi, dword [ebp - 0x828]
mov dword [esi], eax
jmp 0x100570fe
push dword [eax - 0xc]
mov ecx, esi
push eax
call fcn.10050ba0
mov eax, dword [ebp - 0x82c]
mov ecx, esi
push dword [eax - 0xc]
push eax
call fcn.100546f0
mov byte [ebp - 4], 3
or edi, 0xffffffff
mov ecx, dword [ebp - 0x82c]
mov eax, edi
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x1005714c
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x100571b8
mov eax, dword [edx + 4]
push 0
push dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x830]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], edi
dec edi
test edi, edi
jg 0x10057180
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x100571be
mov eax, dword [edx + 4]
push 0
push dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov dword [ebp - 4], 0xffffffff
test ebx, ebx
je 0x1005719c
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x83c], 0
mov eax, 1
jmp 0x1005708d
mov ecx, edx
call esi
jmp 0x10056e01
mov ecx, edx
call esi
jmp 0x10056e3b
mov ecx, edx
call esi
jmp 0x1005714c
mov ecx, edx
call esi
jmp 0x10057180