Function at 0x403120
Capabilities:
Get storage device properties
Resolve function by parsing pe exports

Disassembly:
mov eax, 0x1104
call fcn.0042d980
mov eax, dword [0x4629b4]
xor eax, esp
mov dword [esp + 0x1100], eax
mov eax, dword [esp + 0x110c]
push ebx
push ebp
mov ebp, dword [esp + 0x1110]
push esi
push edi
push 0x200
push 0
push eax
mov dword [esp + 0x1c], eax
call fcn.0042f620
mov esi, dword [esp + 0x112c]
add esp, 0xc
mov edi, dword [sym.imp.KERNEL32.dll_DeviceIoControl]
cmp esi, 0x11
jne 0x403243
push 0x1010
lea eax, [esp + 0x48]
push 0
push eax
call fcn.0042f620
add esp, 0xc
mov dword [esp + 0x2c], 3
lea eax, [esp + 0x18]
mov dword [esp + 0x30], 2
mov dword [esp + 0x34], 2
mov dword [esp + 0x38], 0
push 0
push eax
push 0x1030
lea eax, [esp + 0x30]
mov dword [esp + 0x48], 0x28
push eax
push 0x1030
push eax
push 0x2d1400
push ebp
mov dword [esp + 0x60], 0x1000
mov dword [esp + 0x44], 0x31
mov dword [esp + 0x48], 0
mov dword [esp + 0x38], 0
call edi
mov ebx, eax
test ebx, ebx
jne 0x403221
push eax
lea eax, [esp + 0x1c]
mov dword [esp + 0x3c], 0xffffffff
push eax
push 0x1030
lea eax, [esp + 0x30]
push eax
push 0x1030
push eax
push 0x2d1400
push ebp
call edi
mov ebx, eax
test ebx, ebx
je 0x403243
push 0x200
lea eax, [esp + 0x58]
push eax
push 0x200
push dword [esp + 0x1c]
call fcn.004047a0
add esp, 0x10
mov eax, ebx
jmp 0x4037d4
push 0
lea eax, [esp + 0x18]
mov dword [esp + 0x18], 0
push eax
push 8
lea eax, [esp + 0x28]
xorps xmm0, xmm0
push eax
push 0
push 0
push 0x41018
push ebp
movlpd qword [esp + 0x3c], xmm0
call edi
test eax, eax
je 0x4037d2
push 0x48
lea eax, [esp + 0x10cc]
push 0
push eax
call fcn.0042f620
movzx eax, byte [esp + 0x2c]
push eax
push str..Scsi_d:
lea eax, [esp + 0x10dc]
push 0xffffffffffffffff
push eax
call fcn.00401410
add esp, 0x1c
lea eax, [esp + 0x10c8]
push 0
push 0
push 3
push 0
push 3
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x4037d2
cmp esi, 0x10
jne 0x4034b6
push 0x1098
lea eax, [esp + 0x28]
push 0
push eax
call fcn.0042f620
mov eax, dword [str.NvmeRAID]
add esp, 0xc
movzx ecx, byte [esp + 0x21]
mov dword [esp + 0x28], eax
add ecx, 0x8600
mov eax, dword [0x446ec4]
mov dword [esp + 0x2c], eax
movzx eax, byte [esp + 0x22]
shl ecx, 8
add ecx, eax
mov dword [esp + 0x34], 0xe0002000
movzx eax, byte [esp + 0x23]
push 0
shl ecx, 8
add ecx, eax
mov dword [esp + 0x34], 0x28
lea eax, [esp + 0x18]
mov dword [esp + 0x28], 0x1c
push eax
push 0x1098
lea eax, [esp + 0x30]
mov dword [esp + 0x48], 0x107c
push eax
push 0x1098
push eax
push 0x4d008
push ebx
mov dword [esp + 0x58], ecx
mov dword [esp + 0xc8], 2
mov dword [esp + 0xcc], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd0], 0x1000
mov dword [esp + 0xd8], 0x1098
mov dword [esp + 0x78], 2
mov dword [esp + 0x7c], 0xffffffff
mov dword [esp + 0xa0], 0x7f0002
mov byte [esp + 0xdc], 1
call edi
push ebx
mov esi, eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp esi, 1
jne 0x4037d2
xor ecx, ecx
xorps xmm3, xmm3
xorps xmm2, xmm2
nop dword [eax]
nop word [eax + eax]
movd xmm1, dword [esp + ecx + 0xbc]
xorps xmm0, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm1, xmm0
paddd xmm3, xmm1
movd xmm1, dword [esp + ecx + 0xc0]
punpcklbw xmm1, xmm0
add ecx, 8
punpcklwd xmm1, xmm0
paddd xmm2, xmm1
cmp ecx, 0x1f8
jl 0x4033e0
paddd xmm2, xmm3
xor edx, edx
movaps xmm0, xmm2
xor esi, esi
psrldq xmm0, 8
paddd xmm2, xmm0
movups xmm0, xmm2
psrldq xmm0, 4
paddd xmm2, xmm0
movd edi, xmm2
cmp ecx, 0x1fe
jge 0x403486
mov eax, 0x1fe
sub eax, ecx
cmp eax, 2
jl 0x40346f
movzx eax, byte [esp + ecx + 0xbc]
add edx, eax
movzx eax, byte [esp + ecx + 0xbd]
add ecx, 2
add esi, eax
cmp ecx, 0x1fd
jl 0x403450
cmp ecx, 0x1fe
jge 0x403481
movzx eax, byte [esp + ecx + 0xbc]
add edi, eax
lea eax, [edx + esi]
add edi, eax
test edi, edi
je 0x4037d2
lea eax, [esp + 0xbc]
push 0x200
push eax
push 0x200
push dword [esp + 0x1c]
call fcn.004047a0
add esp, 0x10
mov eax, 1
jmp 0x4037d4
cmp esi, 0x15
jne 0x403599
push 0x10a4
lea eax, [esp + 0x28]
push 0
push eax
call fcn.0042f620
mov eax, dword [str.IntelNvm]
add esp, 0xc
mov dword [esp + 0x28], eax
mov eax, dword [0x446ed0]
mov dword [esp + 0x2c], eax
mov al, byte [esp + 0x21]
mov byte [esp + 0x41], al
mov eax, dword [esp + 0x44]
and eax, 0xffffff02
mov dword [esp + 0x24], 0x1c
or eax, 2
mov dword [esp + 0x30], 0xa
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x6c]
and eax, 0xf07fff02
mov dword [esp + 0x34], 0xf0002808
push 0
or eax, 0x7f0002
mov dword [esp + 0x40], 0x1088
mov dword [esp + 0x70], eax
lea eax, [esp + 0x1c]
push eax
push 0x10a4
lea eax, [esp + 0x30]
mov byte [esp + 0x4c], 1
push eax
push 0x10a4
push eax
push 0x4d008
push ebx
mov dword [esp + 0x68], 0xffffffff
mov dword [esp + 0xb8], 0xa4
mov dword [esp + 0xbc], 0x1000
mov dword [esp + 0xa4], 0
call edi
push ebx
mov esi, eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test esi, esi
je 0x4037d2
lea eax, [esp + 0xc8]
jmp 0x403495
cmp esi, 0x16
jne 0x40372c
push 0x1098
lea eax, [esp + 0x28]
mov dword [esp + 0x18], 0
push 0
push eax
call fcn.0042f620
mov eax, dword [str.NvmeMini]
add esp, 0xc
mov dword [esp + 0x28], eax
mov eax, dword [0x446edc]
mov dword [esp + 0x2c], eax
movzx eax, byte [esp + 0x21]
push 0
mov dword [esp + 0xb0], eax
lea eax, [esp + 0x18]
push eax
push 0x1098
lea eax, [esp + 0x30]
mov dword [esp + 0x40], 0xe0002000
push eax
push 0x1098
push eax
push 0x4d008
push ebx
mov dword [esp + 0x44], 0x1c
mov dword [esp + 0x50], 0x28
mov dword [esp + 0x5c], 0x107c
mov dword [esp + 0xd0], 0x1000
mov dword [esp + 0xd8], 0x1098
mov dword [esp + 0xc8], 2
mov dword [esp + 0x78], 2
mov dword [esp + 0x7c], 0xffffffff
mov dword [esp + 0xa0], 0x7f0002
call edi
push ebx
mov esi, eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp esi, 1
jne 0x4037d2
xor ecx, ecx
xorps xmm3, xmm3
xorps xmm2, xmm2
nop dword [eax]
nop word [eax + eax]
movd xmm1, dword [esp + ecx + 0xbc]
xorps xmm0, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm1, xmm0
paddd xmm3, xmm1
movd xmm1, dword [esp + ecx + 0xc0]
punpcklbw xmm1, xmm0
add ecx, 8
punpcklwd xmm1, xmm0
paddd xmm2, xmm1
cmp ecx, 0x1f8
jl 0x403680
paddd xmm2, xmm3
xor edx, edx
movaps xmm0, xmm2
xor esi, esi
psrldq xmm0, 8
paddd xmm2, xmm0
movups xmm0, xmm2
psrldq xmm0, 4
paddd xmm2, xmm0
movd edi, xmm2
cmp ecx, 0x1fe
jge 0x403486
mov eax, 0x1fe
sub eax, ecx
cmp eax, 2
jl 0x403713
movzx eax, byte [esp + ecx + 0xbc]
add edx, eax
movzx eax, byte [esp + ecx + 0xbd]
add ecx, 2
add esi, eax
cmp ecx, 0x1fd
jl 0x4036f4
cmp ecx, 0x1fe
jge 0x403481
movzx eax, byte [esp + ecx + 0xbc]
jmp 0x40347f
cmp esi, 0xf
jne 0x4037d2
push 0x1044
lea eax, [esp + 0x28]
push 0
push eax
call fcn.0042f620
add esp, 0xc
mov dword [esp + 0x27], 0x10000000
mov eax, 0x2c
mov word [esp + 0x2b], 0x18
mov word [esp + 0x24], ax
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x14]
push 0
push eax
push 0x244
lea eax, [esp + 0x30]
mov dword [esp + 0x3c], 0x200
push eax
push 0x244
push eax
push 0x4d004
push ebp
mov dword [esp + 0x54], 2
mov dword [esp + 0x58], 0x44
mov dword [esp + 0x60], 0x600feb5
mov dword [esp + 0x64], 0
mov word [esp + 0x68], 0x4000
mov byte [esp + 0x88], 2
mov dword [esp + 0x8c], 0xffffffff
call edi
test eax, eax
jne 0x4037ed
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
mov ecx, dword [esp + 0x1110]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0042d960
add esp, 0x1104
ret
push 0
lea eax, [esp + 0x18]
mov byte [esp + 0x2e], 0x10
push eax
push 0x244
lea eax, [esp + 0x30]
mov dword [esp + 0x4c], 0x600fea2
push eax
push 0x244
push eax
push 0x4d004
push ebp
mov dword [esp + 0x64], 0
mov word [esp + 0x68], 1
mov byte [esp + 0x4c], 1
mov byte [esp + 0x88], 0
call edi
push ebx
mov esi, eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp esi, 1
jne 0x4037d2
xor ecx, ecx
xorps xmm3, xmm3
xorps xmm2, xmm2
nop dword [eax + eax]
movd xmm1, dword [esp + ecx + 0x68]
xorps xmm0, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm1, xmm0
paddd xmm3, xmm1
movd xmm1, dword [esp + ecx + 0x6c]
punpcklbw xmm1, xmm0
add ecx, 8
punpcklwd xmm1, xmm0
paddd xmm2, xmm1
cmp ecx, 0x1f8
jl 0x403850
paddd xmm2, xmm3
xor edx, edx
movaps xmm0, xmm2
xor esi, esi
psrldq xmm0, 8
paddd xmm2, xmm0
movups xmm0, xmm2
psrldq xmm0, 4
paddd xmm2, xmm0
movd edi, xmm2
cmp ecx, 0x1fe
jge 0x4038ed
mov eax, 0x1fe
sub eax, ecx
cmp eax, 2
jl 0x4038d9
nop word [eax + eax]
movzx eax, byte [esp + ecx + 0x68]
add edx, eax
movzx eax, byte [esp + ecx + 0x69]
add ecx, 2
add esi, eax
cmp ecx, 0x1fd
jl 0x4038c0
cmp ecx, 0x1fe
jge 0x4038e8
movzx eax, byte [esp + ecx + 0x68]
add edi, eax
lea eax, [esi + edx]
add edi, eax
test edi, edi
je 0x4037d2
lea eax, [esp + 0x68]
jmp 0x403495