Function at 0x40d640
Capabilities:
Get storage device properties

Disassembly:
push 0xffffffffffffffff
push 0x467d62
mov eax, dword fs:[0]
push eax
mov eax, 0x38e4
call fcn.00450b30
mov eax, dword [0x487bb0]
xor eax, esp
mov dword [esp + 0x38e0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x487bb0]
xor eax, esp
push eax
lea eax, [esp + 0x38f8]
mov dword fs:[0], eax
mov ebp, ecx
mov esi, dword [esp + 0x3908]
xor ebx, ebx
mov dword [esp + 0x1c], ebx
mov dword [esi + 0x18], 0xf
mov dword [esi + 0x14], ebx
mov dword [esp + 0x20], esi
mov byte [esi + 4], bl
push 0x114
lea eax, [esp + 0x34]
push ebx
push eax
mov dword [esp + 0x390c], ebx
mov dword [esp + 0x28], 1
call fcn.0044fe60
add esp, 0xc
lea ecx, [esp + 0x30]
push ecx
mov dword [esp + 0x34], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [esp + 0x40], 2
jne 0x40d90d
mov dword [esp + 0x14], ebx
push 0xff
lea edx, [esp + 0x149]
push ebx
push edx
mov byte [esp + 0x150], bl
call fcn.0044fe60
mov eax, dword [esp + 0x20]
push eax
lea ecx, [esp + 0x154]
push str..PhysicalDrive_d
push ecx
call fcn.0044ff2b
add esp, 0x18
push ebx
push ebx
push 3
push ebx
push 3
push ebx
lea edx, [esp + 0x15c]
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
cmp edi, 0xffffffff
je 0x40d8fb
xor eax, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
push 0x2710
mov dword [esp + 0x30], eax
lea eax, [esp + 0x11e8]
push ebx
push eax
mov dword [esp + 0x24], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ebx
call fcn.0044fe60
add esp, 0xc
push ebx
lea ecx, [esp + 0x1c]
push ecx
push 0x2710
lea edx, [esp + 0x11f0]
push edx
push 0xc
lea eax, [esp + 0x38]
push eax
push 0x2d1400
push edi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x40d8ef
push 0x3e7
lea ecx, [esp + 0x249]
push ebx
push ecx
mov byte [esp + 0x250], bl
call fcn.0044fe60
push 0x3e7
lea edx, [esp + 0x63d]
push ebx
push edx
mov byte [esp + 0x644], bl
call fcn.0044fe60
push 0x3e7
lea eax, [esp + 0xe19]
push ebx
push eax
mov byte [esp + 0xe20], bl
call fcn.0044fe60
push 0x3e7
lea ecx, [esp + 0xa3d]
push ebx
push ecx
mov byte [esp + 0xa44], bl
call fcn.0044fe60
mov eax, dword [esp + 0x1220]
add esp, 0x30
lea edx, [esp + 0xdfc]
push edx
push ebx
push eax
lea ecx, [esp + 0x11f0]
push ecx
mov ecx, ebp
call fcn.0040d080
mov eax, dword [esp + 0x11f4]
lea edx, [esp + 0x62c]
push edx
push ebx
push eax
lea ecx, [esp + 0x11f0]
push ecx
mov ecx, ebp
call fcn.0040d080
mov eax, dword [esp + 0x11f8]
lea edx, [esp + 0xa14]
push edx
push ebx
push eax
lea ecx, [esp + 0x11f0]
push ecx
mov ecx, ebp
call fcn.0040d080
mov eax, dword [esp + 0x11fc]
lea edx, [esp + 0x244]
push edx
push ebx
push eax
lea ecx, [esp + 0x11f0]
push ecx
mov ecx, ebp
call fcn.0040d080
lea eax, [esp + 0x62c]
lea edx, [eax + 1]
jmp 0x40d890
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x40d890
sub eax, edx
push eax
lea edx, [esp + 0x630]
push edx
mov ecx, esi
call fcn.004035a0
lea eax, [esp + 0xa14]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x40d8b3
sub eax, edx
push eax
lea eax, [esp + 0xa18]
push eax
mov ecx, esi
call fcn.00403100
lea eax, [esp + 0x244]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x40d8d6
sub eax, edx
push eax
lea ecx, [esp + 0x248]
push ecx
mov ecx, esi
call fcn.00403100
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [esi + 0x14], ebx
jne 0x40d90d
mov eax, dword [esp + 0x14]
inc eax
cmp eax, 0x10
mov dword [esp + 0x14], eax
jl 0x40d6e3
mov eax, esi
mov ecx, dword [esp + 0x38f8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x38e0]
xor ecx, esp
call fcn.0044ffb3
add esp, 0x38f0
ret 4