Function at 0x4dcd00
Capabilities:
Get storage device properties

Disassembly:
push ebp
mov ebp, esp
push eax
mov eax, 2
add esp, 0xfffff004
push eax
dec eax
jne 0x4dcd09
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 0x4dd17d
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [ebp - 0x2714], 0
jne 0x4dcd90
lea edx, [ebp - 0x27b4]
mov eax, dword [ebp - 0x271c]
call fcn.00411860
mov ecx, dword [ebp - 0x27b4]
lea eax, [ebp - 0x2718]
mov edx, 0x4dd198
call fcn.00406d58
jmp 0x4dcda6
lea eax, [ebp - 0x2718]
mov ecx, dword [ebp - 0x2714]
mov edx, 0x4dd1c8
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 0x4dcde8
mov ecx, 0x4dd1e0
mov dl, 1
mov eax, dword [0x40d448]
call fcn.0041667c
call fcn.00405870
xor edi, edi
push ebp
push 0x4dd148
push dword fs:[edi]
mov dword fs:[edi], esp
xor eax, eax
mov dword [ebp - 0x2724], eax
mov eax, 0x500304
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 0x4dcf46
movzx eax, byte [ebp - 0x2708]
mov word [0x500304], ax
mov ebx, 1
mov eax, dword [ebp - 0x2700]
mov ecx, eax
mov esi, eax
add esi, 0x27
sub esi, ecx
jl 0x4dcebc
inc esi
lea eax, [ebp + ecx - 0x2710]
movzx edx, byte [eax]
test dl, dl
je 0x4dcebc
cmp dl, 0x20
jb 0x4dceb8
mov byte [ebx + 0x500339], dl
inc ebx
inc eax
dec esi
jne 0x4dcea5
mov ebx, 1
mov eax, dword [ebp - 0x26fc]
mov ecx, eax
mov esi, eax
add esi, 7
sub esi, ecx
jl 0x4dceec
inc esi
lea eax, [ebp + ecx - 0x2710]
movzx edx, byte [eax]
test dl, dl
je 0x4dceec
mov byte [ebx + 0x500331], dl
inc ebx
inc eax
dec esi
jne 0x4dceda
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 0x4dcf2f
inc esi
lea eax, [ebp + ecx - 0x2710]
movzx edx, byte [eax]
test dl, dl
je 0x4dcf2f
mov byte [ebp + ebx - 0x27b0], dl
inc ebx
inc eax
dec esi
jne 0x4dcf1c
mov edx, 0x500318
lea eax, [ebp - 0x27af]
mov ecx, 0x14
call fcn.004dcb7c
jmp 0x4dcf5c
mov ecx, 0x4dd224
mov dl, 1
mov eax, dword [0x40d448]
call fcn.0041667c
call fcn.00405870
cmp dword [ebp - 0x2714], 0
je 0x4dd024
mov dword [ebp - 0x271c], 0xff
mov eax, dword [ebp - 0x2714]
test eax, eax
je 0x4dcf99
mov edx, eax
sub edx, 0xa
cmp word [edx], 2
je 0x4dcf99
lea eax, [ebp - 0x2714]
mov edx, dword [ebp - 0x2714]
call fcn.004061e8
mov ebx, eax
test ebx, ebx
je 0x4dcfa4
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.00410c90
mov eax, dword [ebp - 0x27b8]
mov edx, 0x4dd268
call fcn.00406f5c
jne 0x4dd024
mov eax, dword [ebp - 0x2714]
test eax, eax
je 0x4dd007
mov edx, eax
sub edx, 0xa
cmp word [edx], 2
je 0x4dd007
lea eax, [ebp - 0x2714]
mov edx, dword [ebp - 0x2714]
call fcn.004061e8
test eax, eax
je 0x4dd010
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 0x4dd12e
cmp dword [ebp - 0x271c], 3
jg 0x4dd12e
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 0x4dd0ac
cmp byte [0x50033a], 0
jne 0x4dd0a2
mov ecx, 0x4dd224
mov dl, 1
mov eax, dword [0x40d448]
call fcn.0041667c
call fcn.00405870
jmp 0x4dd12e
call fcn.00405964
jmp 0x4dd14f
movzx eax, byte [ebp - 0x2708]
cmp al, 0xc
jne 0x4dd0c2
mov word [0x500304], 0x40
jmp 0x4dd0cf
cmp al, 0xb
jne 0x4dd0cf
mov word [0x500304], 0x80
movzx eax, word [ebp - 0x2710]
mov word [0x500306], 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 [0x50037c], eax
movzx eax, word [ebp - 0x26fc]
mov word [0x50030e], ax
movzx edx, word [ebp - 0x2700]
mov word [0x500310], dx
movzx ecx, word [ebp - 0x2704]
mov word [0x50030a], cx
imul dx
mov word [0x50030c], ax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4dd14f
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 0x4dd184
lea eax, [ebp - 0x27bc]
mov edx, 3
call fcn.0040686c
lea eax, [ebp - 0x2718]
mov edx, 2
call fcn.0040686c
ret