Function at 0x4d8778
Capabilities:
Get storage device properties

Disassembly:
push ebp
mov ebp, esp
push eax
mov eax, 2
add esp, 0xfffff004
push eax
dec eax
jne 0x4d8781
mov eax, dword [ebp - 4]
add esp, 0xfffff848
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x27b8], ecx
mov dword [ebp - 0x27bc], ecx
mov dword [ebp - 0x27b4], ecx
mov dword [ebp - 0x2718], ecx
mov dword [ebp - 0x2714], edx
mov dword [ebp - 0x271c], eax
mov eax, dword [ebp - 0x2714]
call fcn.0040685c
xor eax, eax
push ebp
push 0x4d8bf5
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [ebp - 0x2714], 0
jne 0x4d8808
lea edx, [ebp - 0x27b4]
mov eax, dword [ebp - 0x271c]
call fcn.00411820
mov ecx, dword [ebp - 0x27b4]
lea eax, [ebp - 0x2718]
mov edx, 0x4d8c10
call fcn.00406d58
jmp 0x4d881e
lea eax, [ebp - 0x2718]
mov ecx, dword [ebp - 0x2714]
mov edx, 0x4d8c40
call fcn.00406d58
push 0
push 0
push 3
push 0
push 3
push 0
mov eax, dword [ebp - 0x2718]
call fcn.00406900
push eax
call sub.kernel32.dll_CreateFileW
mov dword [ebp - 0x2720], eax
cmp dword [ebp - 0x2720], 0xffffffff
jne 0x4d8860
mov ecx, 0x4d8c58
mov dl, 1
mov eax, dword [0x40d408]
call fcn.004165fc
call fcn.00405870
xor edi, edi
push ebp
push 0x4d8bc0
push dword fs:[edi]
mov dword fs:[edi], esp
xor eax, eax
mov dword [ebp - 0x2724], eax
mov eax, 0x4f4300
xor ecx, ecx
mov edx, 0x200
call fcn.0040476c
lea eax, [ebp - 0x2730]
xor ecx, ecx
mov edx, 0xc
call fcn.0040476c
lea eax, [ebp - 0x2710]
xor ecx, ecx
mov edx, 0x2710
call fcn.0040476c
xor eax, eax
mov dword [ebp - 0x2730], eax
xor eax, eax
mov dword [ebp - 0x272c], eax
push 0
lea eax, [ebp - 0x2724]
push eax
push 0x2710
lea eax, [ebp - 0x2710]
push eax
push 0xc
lea eax, [ebp - 0x2730]
push eax
push 0x2d1400
mov eax, dword [ebp - 0x2720]
push eax
call sub.kernel32.dll_DeviceIoControl
test eax, eax
je 0x4d89be
movzx eax, byte [ebp - 0x2708]
mov word [0x4f4300], ax
mov ebx, 1
mov eax, dword [ebp - 0x2700]
mov ecx, eax
mov esi, eax
add esi, 0x27
sub esi, ecx
jl 0x4d8934
inc esi
lea eax, [ebp + ecx - 0x2710]
movzx edx, byte [eax]
test dl, dl
je 0x4d8934
cmp dl, 0x20
jb 0x4d8930
mov byte [ebx + 0x4f4335], dl
inc ebx
inc eax
dec esi
jne 0x4d891d
mov ebx, 1
mov eax, dword [ebp - 0x26fc]
mov ecx, eax
mov esi, eax
add esi, 7
sub esi, ecx
jl 0x4d8964
inc esi
lea eax, [ebp + ecx - 0x2710]
movzx edx, byte [eax]
test dl, dl
je 0x4d8964
mov byte [ebx + 0x4f432d], dl
inc ebx
inc eax
dec esi
jne 0x4d8952
mov ebx, 1
lea eax, [ebp - 0x27af]
xor ecx, ecx
mov edx, 0x7f
call fcn.0040476c
mov eax, dword [ebp - 0x26f8]
mov ecx, eax
mov esi, eax
add esi, 0x7f
sub esi, ecx
jl 0x4d89a7
inc esi
lea eax, [ebp + ecx - 0x2710]
movzx edx, byte [eax]
test dl, dl
je 0x4d89a7
mov byte [ebp + ebx - 0x27b0], dl
inc ebx
inc eax
dec esi
jne 0x4d8994
mov edx, 0x4f4314
lea eax, [ebp - 0x27af]
mov ecx, 0x14
call fcn.004d85f4
jmp 0x4d89d4
mov ecx, 0x4d8c9c
mov dl, 1
mov eax, dword [0x40d408]
call fcn.004165fc
call fcn.00405870
cmp dword [ebp - 0x2714], 0
je 0x4d8a9c
mov dword [ebp - 0x271c], 0xff
mov eax, dword [ebp - 0x2714]
test eax, eax
je 0x4d8a11
mov edx, eax
sub edx, 0xa
cmp word [edx], 2
je 0x4d8a11
lea eax, [ebp - 0x2714]
mov edx, dword [ebp - 0x2714]
call fcn.004061e8
mov ebx, eax
test ebx, ebx
je 0x4d8a1c
sub ebx, 4
mov ebx, dword [ebx]
lea eax, [ebp - 0x27bc]
push eax
mov ecx, ebx
dec ecx
mov edx, 1
mov eax, dword [ebp - 0x2714]
call fcn.00406fc4
mov eax, dword [ebp - 0x27bc]
lea edx, [ebp - 0x27b8]
call fcn.00410c50
mov eax, dword [ebp - 0x27b8]
mov edx, 0x4d8ce0
call fcn.00406f5c
jne 0x4d8a9c
mov eax, dword [ebp - 0x2714]
test eax, eax
je 0x4d8a7f
mov edx, eax
sub edx, 0xa
cmp word [edx], 2
je 0x4d8a7f
lea eax, [ebp - 0x2714]
mov edx, dword [ebp - 0x2714]
call fcn.004061e8
test eax, eax
je 0x4d8a88
sub eax, 4
mov eax, dword [eax]
mov edx, dword [ebp - 0x2714]
movzx eax, word [edx + eax*2 - 2]
sub eax, 0x30
mov dword [ebp - 0x271c], eax
cmp dword [ebp - 0x271c], 0
jl 0x4d8ba6
cmp dword [ebp - 0x271c], 3
jg 0x4d8ba6
lea eax, [ebp - 0x2710]
xor ecx, ecx
mov edx, 0x2710
call fcn.0040476c
push 0
lea eax, [ebp - 0x2724]
push eax
push 0x2710
lea eax, [ebp - 0x2710]
push eax
push 0
push 0
push 0x700a0
mov eax, dword [ebp - 0x2720]
push eax
call sub.kernel32.dll_DeviceIoControl
test eax, eax
jne 0x4d8b24
cmp byte [0x4f4336], 0
jne 0x4d8b1a
mov ecx, 0x4d8c9c
mov dl, 1
mov eax, dword [0x40d408]
call fcn.004165fc
call fcn.00405870
jmp 0x4d8ba6
call fcn.00405964
jmp 0x4d8bc7
movzx eax, byte [ebp - 0x2708]
cmp al, 0xc
jne 0x4d8b3a
mov word [0x4f4300], 0x40
jmp 0x4d8b47
cmp al, 0xb
jne 0x4d8b47
mov word [0x4f4300], 0x80
movzx eax, word [ebp - 0x2710]
mov word [0x4f4302], ax
mov eax, dword [ebp - 0x26fc]
xor edx, edx
push edx
push eax
mov eax, dword [ebp - 0x26f8]
mov edx, dword [ebp - 0x26f4]
call fcn.00407be4
mov dword [0x4f4378], eax
movzx eax, word [ebp - 0x26fc]
mov word [0x4f430a], ax
movzx edx, word [ebp - 0x2700]
mov word [0x4f430c], dx
movzx ecx, word [ebp - 0x2704]
mov word [0x4f4306], cx
imul dx
mov word [0x4f4308], ax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4d8bc7
mov eax, dword [ebp - 0x2720]
push eax
call sub.kernel32.dll_CloseHandle_1
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4d8bfc
lea eax, [ebp - 0x27bc]
mov edx, 3
call fcn.0040686c
lea eax, [ebp - 0x2718]
mov edx, 2
call fcn.0040686c
ret