Function at 0x401a50
Capabilities:
Get storage device properties

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
push edi
call fcn.00437ce0
test al, al
je 0x401a7b
inc ecx
pop esp
fstp xword [ecx - 0x46c33112]
mov byte [ebp + 0x4aa19d5f], al
pop ds
outsd dx, dword [esi]
fild qword [edx]
jae 0x401a84
mov edi, 0x53bcccf4
call fcn.00438450
test al, al
je 0x401a9b
stc
ljmp 0x78e3
call fcn.00437ce0
test al, al
je 0x401abb
and dword [ebp + 0x73], ecx
int3
cmp dword [ebp + 0xc], 0
mov esi, dword [ebp + 0x14]
mov byte [esi], 0
jg 0x401ad2
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
call fcn.00437b90
test al, al
je 0x401af6
or al, 0xd1
or eax, dword [edx + 0x73]
xchg edx, eax
adc bl, byte [0xf5ad04ae]
mov bl, 0xad
pop esi
adc eax, ebp
sub byte [edi], ch
mov eax, 0x844a7db0
jge 0x401a7b
sbb al, ch
push ebp
bound eax, qword [ebx]
add byte [eax + eax*8 - 0x4018e78c], al
call fcn.00437d50
test al, al
je 0x401b17
out 0xbf, eax
xchg esp, eax
out dx, al
popal
cmp ebp, edi
pop edi
mov al, byte [0xa6ee9501]
pop ecx
mov ebx, 0xc3c4dfe
lahf
lds edi, [edi + 0x6154e8d9]
add eax, dword [eax]
call fcn.00437c70
test al, al
je 0x401b34
sbb al, 0x5c
bsf edi, edx
mov esp, 0x15f381c9
or ch, byte [ebx]
sbb ecx, dword [edi - 0x3e]
clc
into
cmp byte [eax + 0x14758be7], dh
mov esi, dword [ebp + 0x14]
xor bh, bh
mov eax, dword [ebp + 8]
xor edi, edi
mov ecx, dword [ebp + 0xc]
add eax, ecx
mov dword [ebp - 4], 1
mov dword [ebp - 8], edi
mov byte [esi], bh
mov dword [ebp + 8], eax
mov dword [ebp + 0xc], eax
mov al, byte [eax]
test al, al
je 0x401beb
movsx eax, al
push eax
call fcn.0057ba3b
mov bl, al
movsx ecx, bl
push ecx
call fcn.0057b564
add esp, 8
movzx ecx, bl
test eax, eax
mov eax, 0x30
cmovne ecx, eax
shl byte [edi + esi], 4
mov dl, byte [edi + esi]
mov al, cl
sub al, 0x30
inc bh
cmp al, 9
ja 0x401b9b
or al, dl
mov byte [edi + esi], al
jmp 0x401bab
mov al, cl
sub al, 0x61
cmp al, 5
ja 0x401be4
sub cl, 0x57
or cl, dl
mov byte [edi + esi], cl
cmp bh, 2
jne 0x401bdb
mov al, byte [edi + esi]
test al, al
je 0x401bd2
cmp al, 0xff
jle 0x401be4
movsx eax, al
cmp eax, 0xff
jge 0x401be4
push eax
call fcn.0057b535
add esp, 4
test eax, eax
je 0x401be4
inc edi
xor bh, bh
mov dword [ebp - 8], edi
mov byte [edi + esi], bh
mov eax, dword [ebp + 0xc]
inc eax
jmp 0x401b52
mov dword [ebp - 4], 0
call fcn.00437b90
test al, al
je 0x401c0f
int1
fst dword [edi + 0xf]
adc eax, 0x9ae559af
sub al, 0xef
test byte [0x873fdc31], bl
pop esi
mov edi, ebx
call 0xfd9fa351
dec esi
add al, ch
cmp al, 0x61
add eax, dword [eax]
call fcn.00437d50
test al, al
je 0x401c30
sub al, 0x99
invalid
call fcn.00437c70
test al, al
je 0x401c4d
loop 0x401c73
inc edi
sti
test byte [edx], bl
cmp byte ss:[ebx + 0x31eb74bc], bh
fisttp word [eax - 0x286dbd7f]
mov byte [ecx + 0x24d79242], al
and al, 0x83
jge 0x401c4c
cmp dword [ebp - 4], 0
jne 0x401c8f
add byte [ebp + 0x3c], dh
mov esi, dword [ebp + 0x14]
xor ebx, ebx
mov edi, dword [ebp + 8]
mov dword [ebp - 4], 1
mov al, byte [edi]
mov dword [ebp - 8], ebx
mov byte [ebp + 0xf], al
test al, al
je 0x401c8f
movsx eax, al
push eax
call fcn.0057b535
add esp, 4
test eax, eax
je 0x401c88
mov esi, 0x83001798
les eax, [eax*4 - 0x75f58b40]
inc ebp
js 0x47834f8a
mov al, byte [ebp + 0xf]
mov byte [ebx + esi], al
inc ebx
inc edi
jmp 0x401c62
mov dword [ebp - 4], 0
call fcn.00437b90
test al, al
je 0x401cb1
in al, 0xdf
xlatb
jle 0x401ca2
int3
aad 0x18
or eax, 0xa1e5e38f
leave
pop eax
call 0x8a03174e
cwde
call fcn.004383e0
test al, al
je 0x401cd3
dec ebx
test byte [edx - 0x16263c9f], ch
jle 0x401c47
jmp 0x401c71
mov ebx, dword [ebp + 0x14]
xor esi, esi
cmp dword [ebp - 4], esi
cmovne esi, dword [ebp - 8]
cmp dword [ebp + 0x10], 0
mov byte [esi + ebx], 0
je 0x401d0a
test esi, esi
jle 0x401d0a
or edi, 0xffffffff
lea edx, [ebx + 1]
sub edi, ebx
mov al, byte [edx]
lea edx, [edx + 2]
mov cl, byte [edx - 3]
mov byte [edx - 3], al
lea eax, [edi + edx]
mov byte [edx - 2], cl
cmp eax, esi
jl 0x401cf5
or edi, 0xffffffff
mov dword [ebp + 0xc], 0xffffffff
xor esi, esi
cmp byte [ebx], 0
je 0x401d75
nop dword [eax + eax]
movsx eax, byte [esi + ebx]
push eax
call fcn.0057b564
add esp, 4
test eax, eax
jne 0x401d3d
test edi, edi
mov edx, esi
mov dword [ebp + 0xc], edx
cmovs edi, esi
jmp 0x401d40
push ebp
or al, 0xf
dec eax
invalid
mov edx, dword [ebp + 0xc]
inc esi
cmp byte [esi + ebx], 0
jne 0x401d20
test edi, edi
js 0x401d75
test edx, edx
js 0x401d75
mov eax, edi
cmp edi, edx
jg 0x401d6f
mov esi, ebx
sub esi, edi
nop dword [eax]
mov cl, byte [eax + ebx]
test cl, cl
je 0x401d6f
mov byte [esi + eax], cl
inc eax
cmp eax, edx
jle 0x401d60
sub eax, edi
mov byte [eax + ebx], 0
call fcn.00438290
test al, al
je 0x401d9e
xchg edx, eax
test dword [ecx], ebx
jge 0x401d9f
adc dword fs:[esi + 0x24057e6a], edx
mov esp, 0xd6c85bdc
or eax, 0x17d0d91c
or al, 0x7e
push 0x96bdcaf6
sbb ecx, dword [ecx + 0x3632de8]
add byte [eax + eax*8 + 0x67801774], al
call fcn.004380d0
test al, al
je 0x401dbe
sub eax, 0x84000363
sal byte [edi + edx - 0x80], 0x67
and byte [edi + 0x50], 0x7f
push esp
push eax
jg 0x401e00
fsub dword [ecx - 0x62]
movsb byte es:[edi], byte [esi]
jl 0x401d36
in al, 0xba
xor eax, 0x86756ec8
inc esi
xchg esi, eax
xchg ebp, eax
jae 0x401ddd
call fcn.00437ea0
test al, al
je 0x401dde
add ah, 6
and eax, 0x8cb1fc6
imul ebx, dword [edx + 0x33], 0x4c95c77b
push ebp
sahf
xchg ebp, eax
xchg dword [ebx + 0x55], esp
insb byte es:[edi], dx
push es
mov eax, dword [ebp + 0x14]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
bound eax, qword [eax]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov dword [ebp - 0x2ce4], ecx
call fcn.00437ce0
test al, al
je 0x401e32
lcall 0x59f0, 0x65347785
jns 0x401e9b
mov edx, edi
inc ebx
push ss
lahf
inc ecx
test eax, 0x4a28920b
mov al, 0x4c
push ds
push 0x6619e81a
add eax, dword [eax]
call fcn.00438450
test al, al
je 0x401e52
outsd dx, dword [esi]
dec esp
inc byte [ecx + 0x259882aa]
add dword [ebp + ebx*2 - 0x3a], 0xcc8a7f04
cmp dword [edx + 0x663ed8fb], esp
jbe 0x401e3b
call fcn.00437ce0
test al, al
je 0x401e72
mov dword [esi + 3], ebx
add byte [eax + eax*8 - 0x3445e88c], al
in al, dx
insb byte es:[edi], dx
fild qword [ecx + edx*4 + 0x32d132b4]
mov edx, 0xdf6ceccb
lodsb al, byte [esi]
xchg ecx, eax
mov ah, 0x32
sal dword [edx], 1
fucomp st(6)
mov esi, 0x219fe43d
sub dword [edx], esp
daa
push edi
arpl word [ebx + 0x5a31f43d], cx
add byte [ebx], dh
test byte [ecx - 0x2cdf4b], 0xff
mov edi, dword [sym.imp.KERNEL32.dll_DeviceIoControl]
xor esi, esi
mov dword [ebp - 0x2ce0], esi
push esi
lea eax, [ebp - 0x408]
push str..PhysicalDrive_d
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [ebp - 0x408]
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 0x4021a2
jmp [edx]
push 0x2710
xorps xmm0, xmm0
mov dword [ebp - 0x2cdc], 0
lea eax, [ebp - 0x2b18]
movq qword [ebp - 0x2b24], xmm0
push 0
push eax
mov dword [ebp - 0x2b1c], 0
mov dword [ebp - 0x2b24], 0
mov dword [ebp - 0x2b20], 0
call fcn.00578b50
add esp, 0xc
lea eax, [ebp - 0x2cdc]
push 0
push eax
push 0x2710
lea eax, [ebp - 0x2b18]
push eax
push 0xc
lea eax, [ebp - 0x2b24]
push eax
push 0x2d1400
push ebx
call edi
test eax, eax
je 0x402187
push 0x80
lea eax, [ebp - 0x208]
push 0
push eax
call fcn.00578b50
add esp, 0xc
lea eax, [ebp - 0x108]
push 0x80
push 0
push eax
call fcn.00578b50
add esp, 0xc
lea eax, [ebp - 0x88]
push 0x80
push 0
push eax
call fcn.00578b50
add esp, 0xc
lea eax, [ebp - 0x188]
push 0x80
push 0
push eax
call fcn.00578b50
add esp, 0xc
lea eax, [ebp - 0x88]
push eax
push 0
push dword [ebp - 0x2b0c]
lea eax, [ebp - 0x2b18]
push eax
call fcn.00401a50
lea eax, [ebp - 0x108]
push eax
push 0
push dword [ebp - 0x2b08]
lea eax, [ebp - 0x2b18]
push eax
call fcn.00401a50
lea eax, [ebp - 0x188]
push eax
push 0
push dword [ebp - 0x2b04]
lea eax, [ebp - 0x2b18]
push eax
call fcn.00401a50
lea eax, [ebp - 0x208]
push eax
push 1
push dword [ebp - 0x2b00]
lea eax, [ebp - 0x2b18]
push eax
call fcn.00401a50
push 0x1a0
lea eax, [ebp - 0x2cd0]
mov dword [ebp - 0x2b30], 0
xorps xmm0, xmm0
push 0
push eax
movlpd qword [ebp - 0x2cd8], xmm0
call fcn.00578b50
lea ecx, [ebp - 0x88]
add esp, 0xc
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x402030
sub ecx, edx
je 0x402055
xor ecx, ecx
nop dword [eax]
mov al, byte [ebp + ecx - 0x88]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x2cb1], al
test al, al
jne 0x402040
lea ecx, [ebp - 0x108]
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x402060
sub ecx, edx
je 0x4020a5
lea edx, [ebp - 0x108]
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x402073
lea edi, [ebp - 0x2cb0]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x402083
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 - 0x2ce0]
mov edi, dword [sym.imp.KERNEL32.dll_DeviceIoControl]
xor ecx, ecx
nop word [eax + eax]
mov al, byte [ebp + ecx - 0x188]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x2bb1], al
test al, al
jne 0x4020b0
xor eax, eax
nop word [eax + eax]
mov cl, byte [ebp + eax - 0x208]
lea eax, [eax + 1]
mov byte [ebp + eax - 0x2c31], cl
test cl, cl
jne 0x4020d0
lea eax, [ebp - 0x2c30]
push eax
call fcn.004023d0
lea eax, [ebp - 0x2cb0]
push eax
call fcn.004023d0
lea eax, [ebp - 0x2bb0]
push eax
call fcn.004023d0
push 0x2710
lea eax, [ebp - 0x2b18]
push 0
push eax
call fcn.00578b50
add esp, 0xc
lea eax, [ebp - 0x2cdc]
push 0
push eax
push 0x2710
lea eax, [ebp - 0x2b18]
push eax
push 0
push 0
push 0x700a0
push ebx
call edi
test eax, eax
je 0x4021a2
mov eax, dword [ebp - 0x2b00]
mov ecx, 2
mov dword [ebp - 0x2cd8], eax
mov eax, dword [ebp - 0x2afc]
mov dword [ebp - 0x2cd4], eax
xor eax, eax
cmp dword [ebp - 0x2b10], 0xc
cmove eax, ecx
mov ecx, dword [ebp - 0x2ce4]
mov dword [ebp - 0x2b30], eax
lea eax, [ebp - 0x2cd8]
push eax
call fcn.00402930
jmp 0x40219b
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._nDeviceIOControl_IOCTL_STORAGE_QUERY_PROPERTY_error___d_n
call fcn.00401910
add esp, 8
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
inc esi
mov dword [ebp - 0x2ce0], esi
cmp esi, 0x10
jl 0x401e80
call fcn.00437e30
test al, al
je 0x4021d5
add byte [eax + eax*8 + 0x72881a74], al
mov bh, 0x52
mov byte [edx - 0x49], dh
push edx
jae 0x4021b6
invalid
call fcn.00438370
test al, al
je 0x4021ef
inc ch
dec eax
invalid
pop ecx
clc
call 0xa3439762
call fcn.00438450
test al, al
je 0x40220f
cdq
cmp bh, al
in eax, 0x74
stosd dword es:[edi], eax
sbb al, 0xed
int1
jle 0x4021e8
movsb byte es:[edi], byte [esi]
dec edi
in eax, 0x96
arpl cx, sp
movsb byte es:[edi], byte [esi]
popal
sbb eax, 0x8b2c09ee
dec ebp
cld
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00572ac9
mov esp, ebp
pop ebp
ret