Function at 0x404a10
Capabilities:
Get storage device properties

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2ce0
call fcn.005cabd0
mov eax, dword [0x69def4]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov dword [ebp - 0x2cd4], ecx
call fcn.0048c3f0
test al, al
je 0x404a53
push edi
pop esp
push esp
pop edi
push esi
pop edx
push ecx
pop edx
push esi
pop edx
push esi
push eax
push esp
pop ebx
pop ebp
push ebx
pop ebx
push edx
push esp
pop ebp
push ebp
push edi
push ebp
pop esi
push ebx
pop ebx
call fcn.0048c230
test al, al
je 0x404a6d
pop ebp
push esi
pop eax
pop esp
push ecx
pop ebp
push ebx
pop ebp
pop ecx
pop edi
push edi
pop ecx
push ecx
pop eax
pop ebx
push esp
pop edx
call fcn.0048bd60
test al, al
je 0x404a88
pop ecx
push esp
pop ebp
push esi
pop esp
pop eax
pop edi
push ebp
push esp
pop edi
push ecx
pop ecx
push edx
push ecx
pop ecx
push eax
push esp
push ecx
xor esi, esi
mov dword [ebp - 0x2cdc], esi
push esi
lea eax, [ebp - 0x404]
push str..PhysicalDrive_d
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [ebp - 0x404]
push 0
push 0
push 3
push 0
push 3
push 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x404db8
push 0x2710
xorps xmm0, xmm0
mov dword [ebp - 0x2cd8], 0
lea eax, [ebp - 0x2b14]
movq qword [ebp - 0x2b20], xmm0
push 0
push eax
mov dword [ebp - 0x2b18], 0
mov dword [ebp - 0x2b20], 0
mov dword [ebp - 0x2b1c], 0
call fcn.005d4b40
add esp, 0xc
lea eax, [ebp - 0x2cd8]
push 0
push eax
push 0x2710
lea eax, [ebp - 0x2b14]
push eax
push 0xc
lea eax, [ebp - 0x2b20]
push eax
push 0x2d1400
push ebx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x404d9d
push 0x80
lea eax, [ebp - 0x204]
push 0
push eax
call fcn.005d4b40
push 0x80
lea eax, [ebp - 0x104]
push 0
push eax
call fcn.005d4b40
push 0x80
lea eax, [ebp - 0x84]
push 0
push eax
call fcn.005d4b40
push 0x80
lea eax, [ebp - 0x184]
push 0
push eax
call fcn.005d4b40
mov edi, dword [ebp - 0x2cd4]
lea eax, [ebp - 0x84]
add esp, 0x30
mov ecx, edi
push eax
push 0
push dword [ebp - 0x2b08]
lea eax, [ebp - 0x2b14]
push eax
call fcn.00405090
lea eax, [ebp - 0x104]
mov ecx, edi
push eax
push 0
push dword [ebp - 0x2b04]
lea eax, [ebp - 0x2b14]
push eax
call fcn.00405090
lea eax, [ebp - 0x184]
mov ecx, edi
push eax
push 0
push dword [ebp - 0x2b00]
lea eax, [ebp - 0x2b14]
push eax
call fcn.00405090
lea eax, [ebp - 0x204]
mov ecx, edi
push eax
push 1
push dword [ebp - 0x2afc]
lea eax, [ebp - 0x2b14]
push eax
call fcn.00405090
push 0x1a0
lea eax, [ebp - 0x2cc8]
mov dword [ebp - 0x2b28], 0
xorps xmm0, xmm0
push 0
push eax
movlpd qword [ebp - 0x2cd0], xmm0
call fcn.005d4b40
lea ecx, [ebp - 0x84]
add esp, 0xc
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x404c42
sub ecx, edx
je 0x404c65
xor ecx, ecx
nop
mov al, byte [ebp + ecx - 0x84]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x2ca9], al
test al, al
jne 0x404c50
lea ecx, [ebp - 0x104]
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x404c70
sub ecx, edx
je 0x404cb5
lea edx, [ebp - 0x104]
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x404c83
lea edi, [ebp - 0x2ca8]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x404c93
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [ebp - 0x2cdc]
mov edi, dword [ebp - 0x2cd4]
xor ecx, ecx
nop word [eax + eax]
mov al, byte [ebp + ecx - 0x184]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x2ba9], al
test al, al
jne 0x404cc0
xor eax, eax
nop word [eax + eax]
mov cl, byte [ebp + eax - 0x204]
lea eax, [eax + 1]
mov byte [ebp + eax - 0x2c29], cl
test cl, cl
jne 0x404ce0
lea eax, [ebp - 0x2c28]
mov ecx, edi
push eax
call fcn.00405550
lea eax, [ebp - 0x2ca8]
mov ecx, edi
push eax
call fcn.00405550
lea eax, [ebp - 0x2ba8]
mov ecx, edi
push eax
call fcn.00405550
push 0x2710
lea eax, [ebp - 0x2b14]
push 0
push eax
call fcn.005d4b40
add esp, 0xc
lea eax, [ebp - 0x2cd8]
push 0
push eax
push 0x2710
lea eax, [ebp - 0x2b14]
push eax
push 0
push 0
push 0x700a0
push ebx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x404db8
mov eax, dword [ebp - 0x2afc]
mov ecx, 2
mov dword [ebp - 0x2cd0], eax
mov eax, dword [ebp - 0x2af8]
mov dword [ebp - 0x2ccc], eax
xor eax, eax
cmp dword [ebp - 0x2b0c], 0xc
cmove eax, ecx
mov ecx, edi
mov dword [ebp - 0x2b28], eax
lea eax, [ebp - 0x2cd0]
push eax
call fcn.00404350
jmp 0x404db1
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._nDeviceIOControl_IOCTL_STORAGE_QUERY_PROPERTY_error___d_n
call fcn.00405670
add esp, 8
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
inc esi
mov dword [ebp - 0x2cdc], esi
cmp esi, 0x10
jl 0x404a90
call fcn.0048beb0
test al, al
je 0x404de6
pop esi
pop ecx
pop edi
push ebx
pop ecx
push edi
push eax
pop edi
push ebp
push edi
push eax
pop eax
push esp
push edx
push ebx
pop eax
pop edi
push ebp
pop ebp
push ecx
pop edx
call fcn.0048c5b0
test al, al
je 0x404e02
push esp
pop esp
push edi
pop ecx
pop ebp
push esp
push esp
pop eax
push esi
push esi
push ebp
pop esp
pop ebx
pop ebx
push edi
pop esp
push esp
pop edi
push edx
call fcn.0048c0e0
test al, al
je 0x404e29
push edx
push edi
pop eax
pop esp
push edi
pop ebx
pop esi
pop ebp
push esi
pop edi
push esp
push ecx
pop eax
push eax
push ecx
push ebp
push ecx
push ebp
pop esp
push esp
pop edx
pop esp
pop ebp
pop eax
pop esp
pop ebx
pop esi
push edi
push edi
pop ebp
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.005cabbc
mov esp, ebp
pop ebp
ret