Function at 0x424370
Capabilities:
Get storage device properties

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5c5049
mov eax, dword fs:[0]
push eax
sub esp, 0x1b8
mov eax, dword [0x645154]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x1ac], eax
xor eax, eax
mov dword [ebp - 0x194], esi
mov dword [ebp - 0x19c], edi
mov dword [ebp - 0x70], 7
mov dword [ebp - 0x74], 0
mov word [ebp - 0x84], ax
push 0x15
push str.GetPhysicalDeviceInfo
lea ecx, [ebp - 0x84]
mov dword [ebp - 4], eax
mov byte [ebp - 0x88], al
call fcn.00407228
push 4
mov dword [ebp - 4], 1
call fcn.00415250
mov ecx, eax
call fcn.004152d0
test al, al
je 0x424457
lea eax, [ebp - 0x84]
mov byte [ebp - 0x88], 1
push eax
push str.Entering:
push 4
call fcn.00415250
mov ecx, eax
call fcn.00414940
push eax
call fcn.00415250
push eax
call fcn.0040e050
add esp, 8
push eax
call fcn.0040dcd0
add esp, 8
push eax
call fcn.0040e050
push eax
call fcn.0040e570
add esp, 0xc
call fcn.00415250
mov ecx, eax
call fcn.00415230
lea ecx, [edi + 4]
call fcn.00402788
mov ecx, edi
call fcn.00402788
push 0
push 0
push 3
push 0
push 3
push 0
push dword [ebp - 0x1ac]
mov word [edi + 0x14], 0
mov byte [edi + 0x16], 0
mov dword [edi + 0x10], esi
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x1a0], eax
cmp eax, 0xffffffff
jne 0x42450c
push 3
call fcn.00415250
mov ecx, eax
call fcn.004152d0
test al, al
je 0x424500
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._with_error:
push esi
push str.Failed_to_open_drive:
push 3
call fcn.00415250
mov ecx, eax
call fcn.00414940
push eax
call fcn.00415250
push eax
call fcn.0040e050
add esp, 8
push eax
call fcn.0040dcd0
add esp, 8
mov ecx, eax
call fcn.0041dec0
push eax
call fcn.0040dcd0
add esp, 8
mov ecx, eax
call fcn.0041dec0
push eax
call fcn.0040e570
add esp, 4
mov byte [ebp - 0x18d], 0
jmp 0x424ec9
push 4
push 0x1000
push 0x21
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
push 4
push 0x1000
push 0x211
mov esi, eax
push 0
mov dword [ebp - 0x1ac], esi
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov byte [ebp - 0x18d], 0
mov ecx, eax
mov eax, dword [sym.imp.KERNEL32.dll_VirtualFree]
mov dword [ebp - 0x1a4], ecx
test esi, esi
je 0x424eaf
mov byte [ebp - 0x18d], 0
test ecx, ecx
je 0x424e9a
mov eax, dword [ebp - 0x194]
xorps xmm0, xmm0
movups xmmword [esi], xmm0
push 0x211
movups xmmword [esi + 0x10], xmm0
mov byte [esi + 0x20], 0
mov byte [esi + 0xc], al
and al, 1
or al, 0xfa
mov dword [esi], 0x200
shl al, 4
push 0
push ecx
mov word [esi + 5], 0x101
mov byte [esi + 9], al
mov byte [esi + 0xa], 0xec
call fcn.0059a520
mov eax, dword [ebp - 0x1a4]
add esp, 0xc
push 3
mov dword [eax], 0x211
call fcn.00415250
mov ecx, eax
call fcn.004152d0
mov esi, dword [ebp - 0x194]
test al, al
je 0x424605
push esi
push str.Looking_for_Drive:
push 3
call fcn.00415250
mov ecx, eax
call fcn.00414940
push eax
call fcn.00415250
push eax
call fcn.0040e050
add esp, 8
push eax
call fcn.0040dcd0
add esp, 8
mov ecx, eax
call fcn.0041dec0
push eax
call fcn.0040e570
add esp, 4
push 0
lea eax, [ebp - 0x198]
push eax
push 0x210
push dword [ebp - 0x1a4]
push 0x20
push dword [ebp - 0x1ac]
push 0x7c088
push dword [ebp - 0x1a0]
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x424806
push 3
call fcn.00415250
mov ecx, eax
call fcn.004152d0
test al, al
je 0x424688
push esi
push str.Got_Drive:
push 3
call fcn.00415250
mov ecx, eax
call fcn.00414940
push eax
call fcn.00415250
push eax
call fcn.0040e050
add esp, 8
push eax
call fcn.0040dcd0
add esp, 8
mov ecx, eax
call fcn.0041dec0
push eax
call fcn.0040e570
add esp, 4
mov eax, dword [ebp - 0x1a4]
add eax, 0x46
push 0x14
push eax
lea eax, [ebp - 0x48]
push eax
call fcn.004242e0
mov eax, dword [ebp - 0x1a4]
add eax, 0x3e
push 8
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.004242e0
mov eax, dword [ebp - 0x1a4]
add eax, 0x24
push 0xa
push eax
lea eax, [ebp - 0x60]
push eax
call fcn.004242e0
add esp, 0x24
mov dword [edi + 0x10], esi
lea eax, [ebp - 0x188]
mov dword [ebp - 0x18c], eax
lea ecx, [ebp - 0x18c]
lea eax, [ebp - 0x1c]
push 3
push eax
call fcn.00413bf0
push dword [ebp - 0x18c]
lea esi, [edi + 4]
mov byte [ebp - 4], 2
mov ecx, esi
call fcn.00423320
mov eax, dword [ebp - 0x18c]
lea ecx, [ebp - 0x188]
mov byte [ebp - 4], 1
cmp eax, ecx
je 0x42471b
push eax
call fcn.005a0545
add esp, 4
lea eax, [ebp - 0x188]
mov dword [ebp - 0x18c], eax
lea ecx, [ebp - 0x18c]
push 3
lea eax, [ebp - 0x48]
push eax
call fcn.00413bf0
push dword [ebp - 0x18c]
mov ecx, edi
mov byte [ebp - 4], 3
call fcn.00423320
mov eax, dword [ebp - 0x18c]
lea ecx, [ebp - 0x188]
mov byte [ebp - 4], 1
cmp eax, ecx
je 0x424766
push eax
call fcn.005a0545
add esp, 4
push 3
call fcn.00415250
mov ecx, eax
call fcn.004152d0
test al, al
je 0x4247b3
push esi
push str.firmwareVersion:
push 3
call fcn.00415250
mov ecx, eax
call fcn.00414940
push eax
call fcn.00415250
push eax
call fcn.0040e050
add esp, 8
push eax
call fcn.0040dcd0
add esp, 8
push eax
call fcn.00414830
push eax
call fcn.0040e570
add esp, 0xc
push 3
call fcn.00415250
mov ecx, eax
call fcn.004152d0
test al, al
je 0x42485c
push edi
push str.model:
push 3
call fcn.00415250
mov ecx, eax
call fcn.00414940
push eax
call fcn.00415250
push eax
call fcn.0040e050
add esp, 8
push eax
call fcn.0040dcd0
add esp, 8
push eax
call fcn.00414830
push eax
call fcn.0040e570
add esp, 0xc
jmp 0x42485c
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 2
mov esi, eax
call fcn.00415250
mov ecx, eax
call fcn.004152d0
test al, al
je 0x42485c
push esi
push str.Error_with_DeviceIoControl:
push 2
call fcn.00415250
mov ecx, eax
call fcn.00414940
push eax
call fcn.00415250
push eax
call fcn.0040e050
add esp, 8
push eax
call fcn.0040dcd0
add esp, 8
mov ecx, eax
call fcn.0041dec0
push eax
call fcn.0040e570
add esp, 4
push 4
push 0x1000
push 0x410
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
push 0
mov esi, eax
mov dword [ebp - 0x198], 0
lea eax, [ebp - 0x198]
push eax
push 0x410
push esi
push 0
push 0
push 0x2d0c04
push dword [ebp - 0x1a0]
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x4248ad
cmp dword [esi], 7
jne 0x4248ad
mov byte [edi + 0x15], 1
push 0
lea eax, [ebp - 0x198]
mov dword [ebp - 0x6c], 0
push eax
push 8
lea eax, [ebp - 0x1bc]
mov dword [ebp - 0x68], 0
push eax
push 0xc
lea eax, [ebp - 0x6c]
mov dword [ebp - 0x1bc], 8
push eax
push 0x2d1400
push dword [ebp - 0x1a0]
mov dword [ebp - 0x1b8], 8
mov esi, 0x28
mov dword [ebp - 0x198], 0
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
cmovne esi, dword [ebp - 0x1b8]
push esi
call fcn.0044fc06
push esi
push 0
push eax
mov dword [ebp - 0x1b4], eax
call fcn.0059a520
mov eax, dword [ebp - 0x1b4]
add esp, 0x10
push 0
mov dword [eax + 4], esi
mov dword [eax], 0x28
lea eax, [ebp - 0x198]
push eax
push esi
mov esi, dword [ebp - 0x1b4]
lea eax, [ebp - 0x6c]
push esi
push 0xc
push eax
push 0x2d1400
push dword [ebp - 0x1a0]
mov dword [ebp - 0x198], 0
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x424a98
mov al, byte [esi + 0x1c]
mov byte [edi + 0xc], al
mov eax, dword [esi + 0xc]
test eax, eax
je 0x4249d8
lea ecx, [ebp - 0x188]
add eax, esi
push 3
mov dword [ebp - 0x18c], ecx
lea ecx, [ebp - 0x18c]
push eax
call fcn.00413bf0
push dword [ebp - 0x18c]
lea ecx, [edi + 8]
mov byte [ebp - 4], 4
call fcn.00423320
mov eax, dword [ebp - 0x18c]
lea ecx, [ebp - 0x188]
mov byte [ebp - 4], 1
cmp eax, ecx
je 0x4249c9
push eax
call fcn.005a0545
add esp, 4
lea ecx, [edi + 8]
call fcn.004103c0
mov ecx, eax
call fcn.00410310
mov eax, dword [esi + 0x10]
test eax, eax
je 0x424a37
lea ecx, [ebp - 0x188]
add eax, esi
push 3
mov dword [ebp - 0x18c], ecx
lea ecx, [ebp - 0x18c]
push eax
call fcn.00413bf0
push dword [ebp - 0x18c]
mov ecx, edi
mov byte [ebp - 4], 5
call fcn.00423320
mov eax, dword [ebp - 0x18c]
lea ecx, [ebp - 0x188]
mov byte [ebp - 4], 1
cmp eax, ecx
je 0x424a29
push eax
call fcn.005a0545
add esp, 4
mov ecx, edi
call fcn.004103c0
mov ecx, eax
call fcn.00410310
mov eax, dword [esi + 0x14]
test eax, eax
je 0x424a98
lea ecx, [ebp - 0x188]
add eax, esi
push 3
mov dword [ebp - 0x18c], ecx
lea ecx, [ebp - 0x18c]
push eax
call fcn.00413bf0
push dword [ebp - 0x18c]
lea ecx, [edi + 4]
mov byte [ebp - 4], 6
call fcn.00423320
mov eax, dword [ebp - 0x18c]
lea ecx, [ebp - 0x188]
mov byte [ebp - 4], 1
cmp eax, ecx
je 0x424a89
push eax
call fcn.005a0545
add esp, 4
lea ecx, [edi + 4]
call fcn.004103c0
mov ecx, eax
call fcn.00410310
mov eax, dword [edi]
sub eax, 0x10
push eax
call fcn.00402643
add eax, 0x10
add esp, 4
mov dword [ebp - 0x1a8], eax
lea ecx, [ebp - 0x1a8]
mov byte [ebp - 4], 7
call fcn.00413ff0
mov esi, dword [ebp - 0x1a8]
cmp dword [esi - 0xc], 0
jl 0x424ae6
push str.INTEL
push esi
call fcn.00599766
add esp, 8
test eax, eax
je 0x424ae6
sub eax, esi
sar eax, 1
js 0x424ae6
mov byte [edi + 0x14], 1
lea eax, [edi + 8]
push eax
lea ecx, [ebp - 0x1a8]
mov dword [ebp - 0x1c0], eax
call fcn.0040269e
lea ecx, [ebp - 0x1a8]
call fcn.00413ff0
mov edi, dword [ebp - 0x1a8]
cmp dword [edi - 0xc], 0
jl 0x424b36
push str.INTEL
push edi
call fcn.00599766
mov esi, dword [ebp - 0x19c]
add esp, 8
test eax, eax
je 0x424b3c
sub eax, edi
sar eax, 1
js 0x424b3c
mov byte [esi + 0x14], 1
jmp 0x424b3c
mov esi, dword [ebp - 0x19c]
push 3
call fcn.00415250
mov ecx, eax
call fcn.004152d0
test al, al
je 0x424b8a
push dword [esi]
push str.Model:
push 3
call fcn.00415250
mov ecx, eax
call fcn.00414940
push eax
call fcn.00415250
push eax
call fcn.0040e050
add esp, 8
push eax
call fcn.0040dcd0
add esp, 8
push eax
call fcn.0040dcd0
push eax
call fcn.0040e570
add esp, 0xc
push 3
call fcn.00415250
mov ecx, eax
call fcn.004152d0
test al, al
je 0x424bd9
push dword [esi + 4]
push str.Firmware:
push 3
call fcn.00415250
mov ecx, eax
call fcn.00414940
push eax
call fcn.00415250
push eax
call fcn.0040e050
add esp, 8
push eax
call fcn.0040dcd0
add esp, 8
push eax
call fcn.0040dcd0
push eax
call fcn.0040e570
add esp, 0xc
push 3
call fcn.00415250
mov ecx, eax
call fcn.004152d0
test al, al
je 0x424c28
push dword [esi + 8]
push str.Vendor:
push 3
call fcn.00415250
mov ecx, eax
call fcn.00414940
push eax
call fcn.00415250
push eax
call fcn.0040e050
add esp, 8
push eax
call fcn.0040dcd0
add esp, 8
push eax
call fcn.0040dcd0
push eax
call fcn.0040e570
add esp, 0xc
push 0
lea eax, [ebp - 0x198]
mov dword [ebp - 0x6c], 1
push eax
push 8
lea eax, [ebp - 0x1bc]
mov dword [ebp - 0x68], 0
push eax
push 0xc
lea eax, [ebp - 0x6c]
mov dword [ebp - 0x198], 0
push eax
push 0x2d1400
push dword [ebp - 0x1a0]
mov esi, 0x20
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
cmovne esi, dword [ebp - 0x1b8]
push esi
call fcn.0044fc06
push esi
mov ecx, eax
push 0
push ecx
mov dword [ebp - 0x194], ecx
call fcn.0059a520
mov eax, dword [ebp - 0x194]
lea ecx, [ebp - 0x198]
add esp, 0x10
mov dword [eax], 0x20
push 0
push ecx
push esi
push eax
mov dword [eax + 4], esi
lea eax, [ebp - 0x6c]
push 0xc
push eax
push 0x2d1400
push dword [ebp - 0x1a0]
mov dword [ebp - 0x198], 0
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
mov ecx, dword [ebp - 0x194]
mov esi, dword [ebp - 0x19c]
test eax, eax
je 0x424ce2
mov al, byte [ecx + 0x18]
mov byte [esi + 0xc], al
push ecx
call fcn.0044fc01
mov eax, dword [esi + 8]
add esp, 4
cmp dword [eax - 0xc], 0
jle 0x424df7
push 0x20
push eax
call fcn.0059b3ec
add esp, 8
test eax, eax
je 0x424df7
sub eax, dword [esi + 8]
sar eax, 1
js 0x424df7
mov eax, dword [esi + 8]
sub eax, 0x10
push eax
call fcn.00402643
add eax, 0x10
add esp, 4
mov dword [ebp - 0x194], eax
mov eax, dword [esi]
lea ecx, [ebp - 0x194]
mov byte [ebp - 4], 8
push dword [eax - 0xc]
push eax
call fcn.00404602
mov esi, dword [ebp - 0x194]
cmp dword [esi - 0xc], 0
jle 0x424dd7
push 0x20
push esi
call fcn.0059b3ec
add esp, 8
test eax, eax
je 0x424dd7
sub eax, esi
sar eax, 1
mov dword [ebp - 0x1b0], eax
test eax, eax
jle 0x424dd7
push eax
lea eax, [ebp - 0x1c4]
push eax
lea ecx, [ebp - 0x194]
call fcn.00424fe0
mov ecx, dword [ebp - 0x1c0]
push eax
mov byte [ebp - 4], 9
call fcn.0040269e
lea ecx, [ebp - 0x1c4]
mov byte [ebp - 4], 8
call fcn.0040ed50
mov eax, dword [ebp - 0x1b0]
lea ecx, [ebp - 0x194]
inc eax
push eax
lea eax, [ebp - 0x1b0]
push eax
call fcn.00425050
mov ecx, dword [ebp - 0x19c]
push eax
mov byte [ebp - 4], 0xa
call fcn.0040269e
lea ecx, [ebp - 0x1b0]
call fcn.0040ed50
lea edx, [esi - 0x10]
mov byte [ebp - 4], 7
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x424dfa
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x424dfa
or esi, 0xffffffff
mov eax, dword [ebp - 0x19c]
mov eax, dword [eax]
cmp dword [eax - 0xc], 3
jl 0x424e59
add eax, 0xfffffff0
push eax
call fcn.00402643
add esp, 4
cmp dword [eax + 4], 0
lea esi, [eax + 0x10]
jl 0x424e3f
push 0x5dc308
push esi
call fcn.00599766
add esp, 8
test eax, eax
je 0x424e3f
sub eax, esi
sar eax, 1
js 0x424e3f
mov eax, dword [ebp - 0x19c]
mov byte [eax + 0x16], 1
lea edx, [esi - 0x10]
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x424e59
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x1b4]
push eax
call fcn.0044fc01
add esp, 4
mov byte [ebp - 4], 1
add edi, 0xfffffff0
mov byte [ebp - 0x18d], 1
lock xadd dword [edi + 0xc], esi
dec esi
test esi, esi
jg 0x424e8f
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 0x18d], 1
mov eax, dword [sym.imp.KERNEL32.dll_VirtualFree]
mov esi, dword [ebp - 0x1ac]
push 0x8000
push 0
push esi
call eax
mov ecx, dword [ebp - 0x1a4]
mov eax, dword [sym.imp.KERNEL32.dll_VirtualFree]
test ecx, ecx
je 0x424ebd
push 0x8000
push 0
push ecx
call eax
push dword [ebp - 0x1a0]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [ebp - 0x88]
call fcn.0040ef80
mov al, byte [ebp - 0x18d]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00595c5d
mov esp, ebp
pop ebp
ret