Function at 0x478f40
Capabilities:
Get storage device properties

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
mov eax, 0x1150
call fcn.0040ab00
mov esi, edx
mov edi, ecx
sub esp, 0x1c
movapd xmm0, xmmword [0x4f96b0]
movupd xmmword [esp + 4], xmm0
mov dword [esp], ecx
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebx, eax
cmp eax, 0xffffffff
je 0x479c32
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
mov byte [esp + 0x3c], 0
lea edx, [esp + 4]
lea eax, [esp + 0x14c]
lea ecx, [esp + 0x34]
push 0
push edx
push 0x1000
push eax
push 0xc
push ecx
push 0x2d1400
push ebx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x479c32
cmp dword [esp + 4], 0
je 0x479c32
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp ecx, dword [esi + 0xc]
jne 0x479008
lea edx, [ecx + ecx]
test ecx, ecx
mov ecx, 0x10
cmovne ecx, edx
mov dword [esi + 0xc], ecx
imul ecx, dword [esi + 4]
push ecx
push eax
call sub.api_ms_win_crt_heap_l1_1_0.dll_realloc
add esp, 8
mov dword [esi], eax
mov ecx, dword [esi + 8]
lea edx, [ecx + 1]
mov dword [esi + 8], edx
imul ecx, dword [esi + 4]
mov dword [eax + ecx + 0x3c], 0
mov dword [eax + ecx], 0
mov dword [eax + ecx + 4], 0
mov edx, dword [0x5052b0]
mov dword [eax + ecx + 8], edx
lea edx, [eax + ecx]
mov eax, dword [esp + 0x158]
test eax, eax
mov dword [esp + 0x10], ebx
mov dword [esp], edx
mov dword [esp + 8], edi
mov dword [esp + 0x14], esi
je 0x479168
lea ebx, [esp + eax]
add ebx, 0x14c
mov eax, dword [0x5052b0]
mov dword [edx + 8], eax
push ebx
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
xor ecx, ecx
test eax, eax
je 0x47917e
mov esi, eax
mov dword [esp + 0xc], ebx
inc eax
mov ecx, 0x20
nop word cs:[eax + eax]
mov ebx, ecx
add ecx, ecx
cmp eax, ebx
ja 0x479090
push ebx
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
mov byte [eax], 0
mov edi, dword [esp]
mov dword [edi + 8], eax
mov dword [edi], ebx
push esi
push dword [esp + 0x10]
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, edi
add esp, 0xc
mov eax, dword [edi + 4]
add eax, esi
mov dword [edi + 4], eax
mov ecx, dword [edi + 8]
mov byte [ecx + eax], 0
mov eax, dword [edi + 4]
test eax, eax
je 0x479186
mov esi, dword [edx + 8]
cmp byte [eax + esi - 1], 0x20
mov ecx, 0
jne 0x479191
inc eax
nop word [eax + eax]
mov edi, eax
add eax, 0xfffffffe
mov dword [edx + 4], eax
cmp edi, 2
je 0x479197
lea eax, [edi - 1]
cmp byte [esi + edi - 3], 0x20
je 0x4790f0
cmp dword [edx], 0
jne 0x47919c
lea ecx, [eax - 1]
mov dword [esp + 0xc], ecx
mov dword [edx + 4], 0
mov ecx, 0x20
nop word [eax + eax]
mov ebx, ecx
add ecx, ecx
cmp eax, ebx
ja 0x479130
push ebx
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
mov byte [eax], 0
mov ecx, dword [esp]
mov dword [ecx + 8], eax
mov dword [ecx], ebx
mov ebx, dword [esp + 0xc]
push ebx
push esi
push eax
mov esi, eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, dword [esp + 0xc]
add esp, 0xc
mov dword [edx + 4], ebx
xor ecx, ecx
jmp 0x47919c
mov eax, dword [esp + 0x15c]
xor ebx, ebx
test eax, eax
jne 0x4792ef
jmp 0x479474
mov edx, dword [esp]
jmp 0x479229
mov edi, dword [esp + 8]
xor ecx, ecx
jmp 0x479229
mov edi, dword [esp + 8]
jmp 0x4791ac
cmp dword [edx], 0
je 0x479210
mov byte [esi + edi - 2], 0
mov eax, dword [edx + 4]
test eax, eax
mov edi, dword [esp + 8]
je 0x479229
mov ecx, dword [edx + 8]
xor esi, esi
nop word cs:[eax + eax]
cmp byte [ecx + esi], 0x20
jne 0x4791cd
inc esi
cmp eax, esi
jne 0x4791c0
mov esi, eax
test esi, esi
je 0x4791fe
cmp dword [edx], 0
je 0x479202
lea edx, [ecx + esi]
sub eax, esi
push eax
push edx
push ecx
call sub.api_ms_win_crt_private_l1_1_0.dll_memmove
mov edx, dword [esp + 0xc]
add esp, 0xc
mov eax, dword [edx + 4]
mov ecx, dword [edx + 8]
sub eax, esi
mov dword [edx + 4], eax
mov byte [ecx + eax], 0
mov ecx, dword [edx + 4]
jmp 0x479229
mov ecx, eax
jmp 0x479229
sub eax, esi
mov dword [edx + 4], eax
add ecx, esi
mov dword [edx + 8], ecx
mov ecx, eax
jmp 0x479229
mov dword [edx], 0
mov dword [edx + 4], 0
mov eax, dword [0x5052b0]
mov dword [edx + 8], eax
mov edi, dword [esp + 8]
mov eax, dword [esp + 0x15c]
test eax, eax
je 0x479288
test ecx, ecx
je 0x479299
mov eax, dword [edx]
test eax, eax
je 0x479245
lea ebx, [ecx + 1]
cmp eax, ebx
jne 0x47929d
cmp eax, 2
mov edx, ecx
mov ecx, 0x20
cmovae ecx, eax
mov ebx, edx
add edx, 2
nop word [eax + eax]
mov edi, ecx
add ecx, ecx
cmp edx, edi
ja 0x479260
test eax, eax
je 0x4792a2
push edi
mov esi, dword [esp + 4]
push dword [esi + 8]
call sub.api_ms_win_crt_heap_l1_1_0.dll_realloc
mov edx, esi
add esp, 8
mov esi, eax
mov ecx, dword [edx + 4]
lea ebx, [ecx + 1]
jmp 0x4792cb
mov esi, dword [esp + 0x14]
test ecx, ecx
jne 0x4794ce
jmp 0x479474
xor ebx, ebx
jmp 0x4792ef
mov esi, dword [edx + 8]
jmp 0x4792d4
push edi
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
mov esi, eax
mov dword [esp + 0xc], ebx
inc ebx
push ebx
mov eax, dword [esp + 4]
push dword [eax + 8]
push esi
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0xc]
add esp, 0xc
mov dword [edx + 8], esi
mov dword [edx], edi
mov edi, dword [esp + 8]
mov dword [edx + 4], ebx
mov byte [esi + ecx], 0x20
mov eax, dword [edx + 4]
mov ecx, dword [edx + 8]
mov byte [ecx + eax], 0
mov eax, dword [esp + 0x15c]
mov ebx, dword [edx + 4]
add eax, esp
add eax, 0x14c
mov dword [esp + 0xc], eax
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
test eax, eax
je 0x479356
mov esi, eax
mov edi, dword [esp]
mov eax, dword [edi]
test eax, eax
je 0x47931c
mov ecx, ebx
not ecx
add ecx, eax
cmp ecx, esi
jae 0x47935b
cmp eax, 2
mov ecx, 0x20
cmovae ecx, eax
lea edx, [esi + ebx]
inc edx
nop dword [eax + eax]
mov edi, ecx
add ecx, ecx
cmp edx, edi
ja 0x479330
test eax, eax
je 0x479360
push edi
mov ebx, dword [esp + 4]
push dword [ebx + 8]
call sub.api_ms_win_crt_heap_l1_1_0.dll_realloc
mov ecx, ebx
add esp, 8
mov dword [ebx + 8], eax
mov ebx, dword [ebx + 4]
jmp 0x479398
mov edx, dword [esp]
jmp 0x4793c4
mov eax, dword [edi + 8]
jmp 0x47939c
push edi
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
test ebx, ebx
je 0x47938f
lea ecx, [ebx + 1]
push ecx
mov ecx, dword [esp + 4]
push dword [ecx + 8]
push eax
mov dword [esp + 0x24], eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0xc]
add esp, 0xc
jmp 0x479395
mov byte [eax], 0
mov ecx, dword [esp]
mov dword [ecx + 8], eax
mov dword [ecx], edi
mov edi, ecx
add ebx, eax
push esi
push dword [esp + 0x10]
push ebx
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov eax, dword [edi + 4]
add eax, esi
mov dword [edi + 4], eax
mov ecx, dword [edi + 8]
mov byte [ecx + eax], 0
mov ebx, dword [edi + 4]
mov edx, edi
mov edi, dword [esp + 8]
mov esi, dword [esp + 0x14]
test ebx, ebx
je 0x479474
mov ecx, dword [edx + 8]
cmp byte [ebx + ecx - 1], 0x20
jne 0x4794ce
inc ebx
nop
mov edi, ebx
lea eax, [ebx - 2]
mov dword [edx + 4], eax
cmp ebx, 2
je 0x47945f
lea ebx, [edi - 1]
cmp byte [ecx + edi - 3], 0x20
je 0x4793e0
cmp dword [edx], 0
jne 0x479464
mov dword [esp + 0xc], ecx
lea eax, [ebx - 1]
mov dword [esp + 0x18], eax
mov dword [edx + 4], 0
mov eax, 0x20
nop word cs:[eax + eax]
mov esi, eax
add eax, eax
cmp ebx, esi
ja 0x479420
push esi
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
mov ebx, eax
mov byte [eax], 0
mov eax, dword [esp]
mov dword [eax + 8], ebx
mov dword [eax], esi
mov esi, dword [esp + 0x18]
push esi
push dword [esp + 0x10]
push ebx
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, dword [esp + 0xc]
add esp, 0xc
mov dword [edx + 4], esi
mov ecx, ebx
mov esi, dword [esp + 0x14]
jmp 0x479464
cmp dword [edx], 0
je 0x479495
mov byte [ecx + edi - 2], 0
mov ecx, dword [edx + 4]
mov edi, dword [esp + 8]
test ecx, ecx
jne 0x4794ce
test edi, edi
je 0x4794b2
push edi
call sub.api_ms_win_crt_string_l1_1_0.dll_wcslen
add esp, 4
push edi
push eax
push dword [esp + 8]
call fcn.00485cd0
mov edx, dword [esp + 0xc]
add esp, 0xc
jmp 0x4794ce
mov dword [edx], 0
mov dword [edx + 4], 0
mov eax, dword [0x5052b0]
mov dword [edx + 8], eax
mov edi, dword [esp + 8]
test edi, edi
jne 0x479478
cmp dword [edx], 0
je 0x4794bf
mov eax, dword [edx + 8]
mov byte [eax], 0
jmp 0x4794c7
mov eax, dword [0x5052b0]
mov dword [edx + 8], eax
mov dword [edx + 4], 0
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x4c]
test eax, eax
je 0x47952c
cmp dword [edx + 4], eax
jb 0x4794f7
push eax
mov eax, dword [ebp + 8]
push dword [eax + 0x50]
push dword [edx + 8]
call sub.api_ms_win_crt_private_l1_1_0.dll_memcmp
mov edx, dword [esp + 0xc]
add esp, 0xc
test eax, eax
je 0x47952c
cmp dword [edx], 0
mov dword [edx + 4], 0
mov ebx, dword [esp + 0x10]
je 0x47951c
mov dword [edx], 0
push dword [edx + 8]
call sub.api_ms_win_crt_heap_l1_1_0.dll_free
mov edx, dword [esp + 4]
add esp, 4
mov eax, dword [0x5052b0]
mov dword [edx + 8], eax
dec dword [esi + 8]
jmp 0x479c32
test edi, edi
mov ebx, dword [esp + 0x10]
je 0x47957f
push edi
call sub.api_ms_win_crt_string_l1_1_0.dll_wcslen
add esp, 4
test eax, eax
je 0x479597
mov esi, eax
sub esp, 0x20
xorpd xmm0, xmm0
movupd xmmword [esp + 0x10], xmm0
mov dword [esp + 0xc], eax
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov dword [esp], 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov edi, eax
inc eax
mov ecx, dword [esp]
mov dword [ecx + 0x24], eax
jne 0x4795b2
mov eax, dword [0x5052b0]
jmp 0x4795c2
mov dword [edx + 0x24], 0
mov dword [edx + 0x28], 0
mov eax, dword [0x5052b0]
mov dword [edx + 0x2c], eax
jmp 0x4795f6
mov edx, dword [esp]
mov dword [edx + 0x24], 0
mov dword [edx + 0x28], 0
mov eax, dword [0x5052b0]
mov dword [edx + 0x2c], eax
jmp 0x4795f1
push eax
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
mov ecx, dword [esp + 4]
add esp, 4
mov byte [eax], 0
mov dword [ecx + 0x2c], eax
mov dword [ecx + 0x28], 0
push 0
push 0
push edi
push eax
push esi
push dword [esp + 0x1c]
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov edx, dword [esp]
mov dword [edx + 0x28], edi
mov eax, dword [edx + 0x2c]
mov byte [eax + edi], 0
mov eax, dword [0x5052b0]
mov dword [edx + 0x18], 0
mov dword [edx + 0x1c], 0
mov dword [edx + 0x20], eax
mov ecx, dword [esp + 0x164]
test ecx, ecx
je 0x4797a7
lea edi, [esp + ecx]
add edi, 0x14c
mov eax, dword [0x5052b0]
mov dword [edx + 0x20], eax
push edi
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
mov edx, dword [esp + 4]
add esp, 4
test eax, eax
je 0x4797a2
mov esi, eax
mov dword [esp + 8], edi
inc eax
mov ecx, 0x20
nop dword [eax + eax]
mov ebx, ecx
add ecx, ecx
cmp eax, ebx
ja 0x479650
push ebx
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
mov byte [eax], 0
mov edi, dword [esp]
mov dword [edi + 0x20], eax
mov dword [edi + 0x18], ebx
push esi
push dword [esp + 0xc]
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, edi
add esp, 0xc
mov eax, dword [edi + 0x1c]
add eax, esi
mov dword [edi + 0x1c], eax
mov ecx, dword [edi + 0x20]
mov byte [ecx + eax], 0
mov eax, dword [edi + 0x1c]
test eax, eax
mov ebx, dword [esp + 0x10]
je 0x4797a2
mov edi, dword [edx + 0x20]
cmp byte [eax + edi - 1], 0x20
jne 0x47972d
inc eax
nop word [eax + eax]
mov ebx, eax
add eax, 0xfffffffe
mov dword [edx + 0x1c], eax
cmp ebx, 2
je 0x479717
lea eax, [ebx - 1]
cmp byte [edi + ebx - 3], 0x20
je 0x4796b0
cmp dword [edx + 0x18], 0
jne 0x47971d
lea ecx, [eax - 1]
mov dword [esp + 8], ecx
mov dword [edx + 0x1c], 0
mov ecx, 0x20
mov esi, ecx
add ecx, ecx
cmp eax, esi
ja 0x4796e0
push esi
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
mov byte [eax], 0
mov ecx, dword [esp]
mov dword [ecx + 0x20], eax
mov dword [ecx + 0x18], esi
mov esi, dword [esp + 8]
push esi
push edi
push eax
mov edi, eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, dword [esp + 0xc]
add esp, 0xc
mov dword [edx + 0x1c], esi
jmp 0x47971d
cmp dword [edx + 0x18], 0
je 0x479788
mov byte [edi + ebx - 2], 0
mov eax, dword [edx + 0x1c]
test eax, eax
mov ebx, dword [esp + 0x10]
je 0x4797a2
mov ecx, dword [edx + 0x20]
xor esi, esi
nop word cs:[eax + eax]
cmp byte [ecx + esi], 0x20
jne 0x47974d
inc esi
cmp eax, esi
jne 0x479740
mov esi, eax
test esi, esi
je 0x4797a2
cmp dword [edx + 0x18], 0
je 0x47977c
lea edx, [ecx + esi]
sub eax, esi
push eax
push edx
push ecx
call sub.api_ms_win_crt_private_l1_1_0.dll_memmove
mov edx, dword [esp + 0xc]
add esp, 0xc
mov eax, dword [edx + 0x1c]
mov ecx, dword [edx + 0x20]
sub eax, esi
mov dword [edx + 0x1c], eax
mov byte [ecx + eax], 0
jmp 0x4797a2
sub eax, esi
mov dword [edx + 0x1c], eax
add ecx, esi
mov dword [edx + 0x20], ecx
jmp 0x4797a2
mov dword [edx + 0x18], 0
mov dword [edx + 0x1c], 0
mov eax, dword [0x5052b0]
mov dword [edx + 0x20], eax
mov ebx, dword [esp + 0x10]
mov eax, dword [0x5052b0]
mov dword [edx + 0x30], 0
mov dword [edx + 0x34], 0
mov dword [edx + 0x38], eax
mov ecx, dword [esp + 0x160]
test ecx, ecx
je 0x479957
lea edi, [esp + ecx]
add edi, 0x14c
mov eax, dword [0x5052b0]
mov dword [edx + 0x38], eax
push edi
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
mov edx, dword [esp + 4]
add esp, 4
test eax, eax
je 0x479952
mov esi, eax
mov dword [esp + 8], edi
inc eax
mov ecx, 0x20
nop dword [eax]
mov ebx, ecx
add ecx, ecx
cmp eax, ebx
ja 0x479800
push ebx
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
mov byte [eax], 0
mov edi, dword [esp]
mov dword [edi + 0x38], eax
mov dword [edi + 0x30], ebx
push esi
push dword [esp + 0xc]
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, edi
add esp, 0xc
mov eax, dword [edi + 0x34]
add eax, esi
mov dword [edi + 0x34], eax
mov ecx, dword [edi + 0x38]
mov byte [ecx + eax], 0
mov eax, dword [edi + 0x34]
test eax, eax
mov ebx, dword [esp + 0x10]
je 0x479952
mov edi, dword [edx + 0x38]
cmp byte [eax + edi - 1], 0x20
jne 0x4798dd
inc eax
nop word [eax + eax]
mov ebx, eax
add eax, 0xfffffffe
mov dword [edx + 0x34], eax
cmp ebx, 2
je 0x4798c7
lea eax, [ebx - 1]
cmp byte [edi + ebx - 3], 0x20
je 0x479860
cmp dword [edx + 0x30], 0
jne 0x4798cd
lea ecx, [eax - 1]
mov dword [esp + 8], ecx
mov dword [edx + 0x34], 0
mov ecx, 0x20
mov esi, ecx
add ecx, ecx
cmp eax, esi
ja 0x479890
push esi
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
mov byte [eax], 0
mov ecx, dword [esp]
mov dword [ecx + 0x38], eax
mov dword [ecx + 0x30], esi
mov esi, dword [esp + 8]
push esi
push edi
push eax
mov edi, eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, dword [esp + 0xc]
add esp, 0xc
mov dword [edx + 0x34], esi
jmp 0x4798cd
cmp dword [edx + 0x30], 0
je 0x479938
mov byte [edi + ebx - 2], 0
mov eax, dword [edx + 0x34]
test eax, eax
mov ebx, dword [esp + 0x10]
je 0x479952
mov ecx, dword [edx + 0x38]
xor esi, esi
nop word cs:[eax + eax]
cmp byte [ecx + esi], 0x20
jne 0x4798fd
inc esi
cmp eax, esi
jne 0x4798f0
mov esi, eax
test esi, esi
je 0x479952
cmp dword [edx + 0x30], 0
je 0x47992c
lea edx, [ecx + esi]
sub eax, esi
push eax
push edx
push ecx
call sub.api_ms_win_crt_private_l1_1_0.dll_memmove
mov edx, dword [esp + 0xc]
add esp, 0xc
mov eax, dword [edx + 0x34]
mov ecx, dword [edx + 0x38]
sub eax, esi
mov dword [edx + 0x34], eax
mov byte [ecx + eax], 0
jmp 0x479952
sub eax, esi
mov dword [edx + 0x34], eax
add ecx, esi
mov dword [edx + 0x38], ecx
jmp 0x479952
mov dword [edx + 0x30], 0
mov dword [edx + 0x34], 0
mov eax, dword [0x5052b0]
mov dword [edx + 0x38], eax
mov ebx, dword [esp + 0x10]
mov eax, dword [0x5052b0]
xor ecx, ecx
cmp byte [esp + 0x156], 0
setne cl
lea ecx, [ecx*4 + 4]
or dword [edx + 0x3c], ecx
lea ecx, [edx + 0xc]
mov dword [edx + 0xc], 0
mov dword [edx + 0x10], 0
mov dword [edx + 0x14], eax
mov eax, dword [esp + 0x168]
cmp eax, 0x13
ja case.default.0x47998e
jmp dword [eax*4 + 0x4f97c4]
mov edx, 0x4f9740
jmp 0x479a36
push eax
push str.Unknown___d_
push ecx
call fcn.00472810
add esp, 0xc
jmp 0x479a3b
mov edx, str.SCSI
jmp 0x479a36
mov edx, str.ATAPI
jmp 0x479a36
mov edx, 0x4f9753
jmp 0x479a36
mov edx, str.1394
jmp 0x479a36
mov edx, 0x4f975c
jmp 0x479a36
mov edx, str.Fibre
jmp 0x479a36
mov edx, 0x4f9766
jmp 0x479a36
mov edx, str.RAID
jmp 0x479a36
mov edx, str.iSCSI
jmp 0x479a36
mov edx, 0x4f9775
jmp 0x479a36
mov edx, str.SATA
jmp 0x479a36
mov edx, 0x4f977e
jmp 0x479a36
mov edx, 0x4f9781
jmp 0x479a36
mov edx, str.Virtual
jmp 0x479a36
mov edx, str.File_Backed_Virtual
jmp 0x479a36
mov edx, str.Spaces
jmp 0x479a36
mov edx, str.NVMe
jmp 0x479a36
mov edx, 0x4f97ad
jmp 0x479a36
mov edx, 0x4f97b1
call fcn.00479c50
lea ecx, [esp + 4]
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x28], 7
mov dword [esp + 0x2c], 0
mov byte [esp + 0x30], 0
lea esi, [esp + 0x40]
lea eax, [esp + 0x28]
push 0
push ecx
push 0xc
push esi
push 0xc
push eax
push 0x2d1400
push ebx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x479aa4
cmp dword [esp + 4], 0xc
jne 0x479aa4
xor eax, eax
cmp byte [esp + 0x48], 1
adc eax, 1
mov ecx, dword [esp]
or dword [ecx + 0x3c], eax
xorpd xmm0, xmm0
movapd xmmword [esp + 0x50], xmm0
movapd xmmword [esp + 0x40], xmm0
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
push 0
lea edi, [esp + 8]
push edi
push 0x28
push esi
push 0
push 0
push 0x700a0
push ebx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
mov ecx, eax
test eax, eax
mov edi, esi
je 0x479aee
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x58]
mov esi, dword [esp]
mov dword [esi + 0x40], ecx
mov dword [esi + 0x44], eax
push 0x108
push 0
push edi
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
push 0
lea eax, [esp + 8]
push eax
push 0x108
push edi
push 0
push 0
push 0x2d0c04
push ebx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x479ba6
cmp dword [esp + 0x44], 0
je 0x479ba6
cmp dword [esp + 0x40], 0x1f
jne 0x479b48
mov eax, dword [esp + 0x4c]
test al, 4
jne 0x479ba2
test al, 8
je 0x479ba6
or byte [esi + 0x3c], 0x10
jmp 0x479ba6
mov ecx, dword [esp + 0x64]
mov eax, 0x20
test cl, 4
jne 0x479b60
mov eax, 0x10
test cl, 8
je 0x479b63
or dword [esi + 0x3c], eax
mov eax, dword [esi + 0x40]
or eax, dword [esi + 0x44]
jne 0x479ba6
mov eax, dword [esp + 0x54]
mul dword [esp + 0x60]
mov ecx, edx
mov ebx, dword [esp + 0x58]
mul ebx
mov esi, edx
imul ecx, ebx
mov ebx, dword [esp + 0x10]
add esi, ecx
mov ecx, dword [esp + 0x5c]
imul esi, ecx
mul ecx
add edx, esi
mov ecx, dword [esp]
mov dword [ecx + 0x40], eax
mov eax, dword [esp]
mov dword [eax + 0x44], edx
mov esi, dword [esp]
jmp 0x479ba6
or byte [esi + 0x3c], 0x20
mov dword [esi + 0x4c], 0x7ff80000
mov dword [esi + 0x48], 0
mov eax, dword [ebp + 8]
cmp byte [eax + 0x54], 0
je 0x479c32
xorpd xmm0, xmm0
movapd xmmword [esp + 0x50], xmm0
movapd xmmword [esp + 0x40], xmm0
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x1c], 0x34
mov dword [esp + 0x20], 0
mov byte [esp + 0x24], 0
lea eax, [esp + 0x1c]
push 0
lea ecx, [esp + 8]
push ecx
push 0x28
lea ecx, [esp + 0x4c]
push ecx
push 0xc
push eax
push 0x2d1400
push ebx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x479c32
cmp dword [esp + 4], 0x28
jne 0x479c32
movsx eax, word [esp + 0x5a]
xorps xmm0, xmm0
cvtsi2sd xmm0, eax
mov eax, dword [esp]
movsd qword [eax + 0x48], xmm0
lea eax, [ebx + 1]
cmp eax, 2
jb 0x479c41
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp ebx, 0xffffffff
setne al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret