Function at 0x479d90
Capabilities:
Get storage device properties

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
mov eax, 0x1090
call fcn.0040ab00
mov edi, edx
mov ebx, ecx
sub esp, 0x1c
movaps xmm0, xmmword [0x4f9820]
movups 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 esi, eax
cmp eax, 0xffffffff
je 0x47a514
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov byte [esp + 0x2c], 0
lea edx, [esp + 0x1c]
lea eax, [esp + 0x8c]
lea ecx, [esp + 0x24]
push 0
push edx
push 0x1000
push eax
push 0xc
push ecx
push 0x2d1400
push esi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x47a514
cmp dword [esp + 0x1c], 0
je 0x47a514
mov eax, dword [edi]
mov ecx, dword [edi + 8]
cmp ecx, dword [edi + 0xc]
jne 0x479e56
lea edx, [ecx + ecx]
test ecx, ecx
mov ecx, 0x10
cmovne ecx, edx
mov dword [edi + 0xc], ecx
imul ecx, dword [edi + 4]
push ecx
push eax
call sub.api_ms_win_crt_heap_l1_1_0.dll_realloc
add esp, 8
mov dword [edi], eax
mov ecx, dword [edi + 8]
lea edx, [ecx + 1]
mov dword [edi + 8], edx
imul ecx, dword [edi + 4]
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 + 0x98]
test eax, eax
mov dword [esp + 0x10], ebx
mov dword [esp + 4], edx
mov dword [esp + 0x18], esi
mov dword [esp + 0xc], edi
je 0x479fa9
lea ecx, [esp + eax]
add ecx, 0x8c
mov eax, dword [0x5052b0]
mov dword [edx + 8], eax
mov dword [esp + 8], ecx
push ecx
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
xor esi, esi
test eax, eax
je 0x479fbf
mov edi, eax
inc eax
mov ecx, 0x20
nop dword [eax + eax]
mov ebx, ecx
add ecx, ecx
cmp eax, ebx
ja 0x479ed0
push ebx
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
mov byte [eax], 0
mov esi, dword [esp + 4]
mov dword [esi + 8], eax
mov dword [esi], ebx
push edi
push dword [esp + 0xc]
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, esi
add esp, 0xc
mov eax, dword [esi + 4]
add eax, edi
mov dword [esi + 4], eax
mov ecx, dword [esi + 8]
mov byte [ecx + eax], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x479fcc
mov edi, dword [edx + 8]
cmp byte [eax + edi - 1], 0x20
mov esi, 0
jne 0x479fdb
inc eax
nop dword [eax + eax]
mov ebx, eax
add eax, 0xfffffffe
mov dword [edx + 4], eax
cmp ebx, 2
je 0x479fe5
lea eax, [ebx - 1]
cmp byte [edi + ebx - 3], 0x20
je 0x479f30
cmp dword [edx], 0
jne 0x479fea
lea ecx, [eax - 1]
mov dword [esp + 8], ecx
mov dword [edx + 4], 0
mov ecx, 0x20
nop word [eax + eax]
mov esi, ecx
add ecx, ecx
cmp eax, esi
ja 0x479f70
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 + 4]
mov dword [ecx + 8], eax
mov dword [ecx], 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 + 0x10]
add esp, 0xc
mov dword [edx + 4], esi
xor esi, esi
jmp 0x479fea
mov eax, dword [esp + 0x9c]
xor esi, esi
test eax, eax
jne 0x47a134
jmp 0x47a2d5
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 4]
jmp 0x47a07d
mov edi, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
xor esi, esi
jmp 0x47a07d
mov edi, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
jmp 0x479ffe
cmp dword [edx], 0
je 0x47a060
mov byte [edi + ebx - 2], 0
mov eax, dword [edx + 4]
test eax, eax
mov edi, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
je 0x47a07d
mov ecx, dword [edx + 8]
xor esi, esi
nop word cs:[eax + eax]
cmp byte [ecx + esi], 0x20
jne 0x47a01d
inc esi
cmp eax, esi
jne 0x47a010
mov esi, eax
test esi, esi
je 0x47a04e
cmp dword [edx], 0
je 0x47a052
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 + 0x10]
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 esi, dword [edx + 4]
jmp 0x47a07d
mov esi, eax
jmp 0x47a07d
sub eax, esi
mov dword [edx + 4], eax
add ecx, esi
mov dword [edx + 8], ecx
mov esi, eax
jmp 0x47a07d
mov dword [edx], 0
mov dword [edx + 4], 0
mov eax, dword [0x5052b0]
mov dword [edx + 8], eax
mov edi, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x9c]
test eax, eax
je 0x47a2d1
test esi, esi
je 0x47a0dc
mov eax, dword [edx]
test eax, eax
je 0x47a09d
lea ebx, [esi + 1]
cmp eax, ebx
jne 0x47a0e0
cmp eax, 2
mov ecx, 0x20
cmovae ecx, eax
mov dword [esp + 8], esi
lea edx, [esi + 2]
nop
mov esi, ecx
add ecx, ecx
cmp edx, esi
ja 0x47a0b0
test eax, eax
je 0x47a0e5
push esi
mov edi, dword [esp + 8]
push dword [edi + 8]
call sub.api_ms_win_crt_heap_l1_1_0.dll_realloc
mov edx, edi
add esp, 8
mov edi, eax
mov eax, dword [edx + 4]
mov dword [esp + 8], eax
lea ebx, [eax + 1]
jmp 0x47a10c
xor esi, esi
jmp 0x47a134
mov edi, dword [edx + 8]
jmp 0x47a115
push esi
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
mov edi, eax
mov eax, dword [esp + 8]
lea ebx, [eax + 1]
push ebx
mov eax, dword [esp + 8]
push dword [eax + 8]
push edi
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, dword [esp + 0x10]
add esp, 0xc
mov dword [edx + 8], edi
mov dword [edx], esi
mov esi, dword [esp + 8]
mov dword [edx + 4], ebx
mov byte [edi + esi], 0x20
mov eax, dword [edx + 4]
mov ecx, dword [edx + 8]
mov byte [ecx + eax], 0
mov eax, dword [esp + 0x9c]
mov esi, dword [edx + 4]
mov edi, dword [esp + 0xc]
lea ebx, [esp + eax]
add ebx, 0x8c
push ebx
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
test eax, eax
je 0x47a1a6
mov dword [esp + 8], ebx
mov ebx, dword [esp + 4]
mov edx, dword [ebx]
test edx, edx
je 0x47a162
mov ecx, esi
not ecx
add ecx, edx
cmp ecx, eax
jae 0x47a1ac
cmp edx, 2
mov ecx, 0x20
mov ebx, edx
cmovae ecx, edx
mov dword [esp + 0x14], eax
lea edx, [eax + esi]
inc edx
nop word [eax + eax]
mov edi, ecx
add ecx, ecx
cmp edx, edi
ja 0x47a180
test ebx, ebx
je 0x47a1b1
push edi
mov ebx, dword [esp + 8]
push dword [ebx + 8]
call sub.api_ms_win_crt_heap_l1_1_0.dll_realloc
add esp, 8
mov edx, eax
mov dword [ebx + 8], eax
mov esi, dword [ebx + 4]
jmp 0x47a1e8
mov edx, dword [esp + 4]
jmp 0x47a218
mov edx, dword [ebx + 8]
jmp 0x47a1f2
push edi
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
mov edx, eax
test esi, esi
je 0x47a1de
lea eax, [esi + 1]
push eax
mov ebx, dword [esp + 8]
push dword [ebx + 8]
push edx
mov dword [esp + 0x2c], edx
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, dword [esp + 0x2c]
add esp, 0xc
jmp 0x47a1e5
mov byte [edx], 0
mov ebx, dword [esp + 4]
mov dword [ebx + 8], edx
mov eax, dword [esp + 0x14]
mov dword [ebx], edi
mov edi, dword [esp + 0xc]
add esi, edx
push eax
push dword [esp + 0xc]
push esi
mov esi, eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov eax, dword [ebx + 4]
add eax, esi
mov dword [ebx + 4], eax
mov ecx, dword [ebx + 8]
mov byte [ecx + eax], 0
mov esi, dword [ebx + 4]
mov edx, ebx
test esi, esi
mov ebx, dword [esp + 0x10]
je 0x47a2d5
mov ecx, dword [edx + 8]
cmp byte [esi + ecx - 1], 0x20
jne 0x47a32f
inc esi
nop word cs:[eax + eax]
mov edi, esi
lea eax, [esi - 2]
mov dword [edx + 4], eax
cmp esi, 2
je 0x47a2c0
lea esi, [edi - 1]
cmp byte [ecx + edi - 3], 0x20
je 0x47a240
cmp dword [edx], 0
jne 0x47a2c5
mov dword [esp + 8], ecx
lea eax, [esi - 1]
mov dword [esp + 0x14], eax
mov dword [edx + 4], 0
mov eax, 0x20
nop word cs:[eax + eax]
mov ebx, eax
add eax, eax
cmp esi, ebx
ja 0x47a280
push ebx
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
mov esi, eax
mov byte [eax], 0
mov eax, dword [esp + 4]
mov dword [eax + 8], esi
mov dword [eax], ebx
mov ebx, dword [esp + 0x14]
push ebx
push dword [esp + 0xc]
push esi
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, dword [esp + 0x10]
add esp, 0xc
mov dword [edx + 4], ebx
mov ecx, esi
mov ebx, dword [esp + 0x10]
jmp 0x47a2c5
cmp dword [edx], 0
je 0x47a2f6
mov byte [ecx + edi - 2], 0
mov esi, dword [edx + 4]
mov edi, dword [esp + 0xc]
test esi, esi
jne 0x47a32f
test ebx, ebx
je 0x47a313
push ebx
call sub.api_ms_win_crt_string_l1_1_0.dll_wcslen
add esp, 4
push ebx
push eax
push dword [esp + 0xc]
call fcn.00485cd0
mov edx, dword [esp + 0x10]
add esp, 0xc
jmp 0x47a32f
mov dword [edx], 0
mov dword [edx + 4], 0
mov eax, dword [0x5052b0]
mov dword [edx + 8], eax
mov edi, dword [esp + 0xc]
test ebx, ebx
jne 0x47a2d9
cmp dword [edx], 0
je 0x47a320
mov eax, dword [edx + 8]
mov byte [eax], 0
jmp 0x47a328
mov eax, dword [0x5052b0]
mov dword [edx + 8], eax
mov dword [edx + 4], 0
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x4c]
test eax, eax
je 0x47a38a
cmp dword [edx + 4], eax
jb 0x47a355
push eax
push dword [ecx + 0x50]
push dword [edx + 8]
call sub.api_ms_win_crt_private_l1_1_0.dll_memcmp
mov edx, dword [esp + 0x10]
add esp, 0xc
test eax, eax
je 0x47a38a
cmp dword [edx], 0
mov dword [edx + 4], 0
je 0x47a376
mov dword [edx], 0
push dword [edx + 8]
call sub.api_ms_win_crt_heap_l1_1_0.dll_free
mov edx, dword [esp + 8]
add esp, 4
mov eax, dword [0x5052b0]
mov dword [edx + 8], eax
dec dword [edi + 8]
mov esi, dword [esp + 0x18]
jmp 0x47a514
test ebx, ebx
je 0x47a3de
push ebx
call sub.api_ms_win_crt_string_l1_1_0.dll_wcslen
add esp, 4
test eax, eax
mov esi, dword [esp + 0x18]
je 0x47a3fa
mov ecx, ebx
mov ebx, eax
sub esp, 0x20
xorps xmm0, xmm0
movups xmmword [esp + 0x10], xmm0
mov dword [esp + 0xc], eax
mov dword [esp + 8], ecx
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 + 4]
mov dword [ecx + 0xc], eax
jne 0x47a416
mov eax, dword [0x5052b0]
jmp 0x47a426
mov dword [edx + 0xc], 0
mov dword [edx + 0x10], 0
mov eax, dword [0x5052b0]
mov dword [edx + 0x14], eax
mov esi, dword [esp + 0x18]
jmp 0x47a458
mov ecx, dword [esp + 4]
mov dword [ecx + 0xc], 0
mov dword [ecx + 0x10], 0
mov eax, dword [0x5052b0]
mov dword [ecx + 0x14], eax
jmp 0x47a458
push eax
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
mov ecx, dword [esp + 8]
add esp, 4
mov byte [eax], 0
mov dword [ecx + 0x14], eax
mov dword [ecx + 0x10], 0
push 0
push 0
push edi
push eax
push ebx
push dword [esp + 0x24]
push 0
push 0xfde9
mov ebx, ecx
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov dword [ebx + 0x10], edi
mov eax, dword [ebx + 0x14]
mov byte [eax + edi], 0
mov edi, dword [esp + 0xc]
xorps xmm0, xmm0
movaps xmmword [esp + 0x70], xmm0
movaps xmmword [esp + 0x60], xmm0
movaps xmmword [esp + 0x50], xmm0
movaps xmmword [esp + 0x40], xmm0
movaps xmmword [esp + 0x30], xmm0
mov dword [esp + 0x84], 0
mov dword [esp + 0x80], 0
lea eax, [esp + 0x30]
push 0
lea ecx, [esp + 0x20]
push ecx
push 0x58
push eax
push 0
push 0
push 0x70020
push esi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x47a4e4
movsd xmm0, qword [esp + 0x30]
mov ecx, dword [esp + 4]
movsd qword [ecx + 0x18], xmm0
mov eax, dword [esp + 0x58]
mov dword [ecx + 0x20], eax
mov dword [ecx + 0x24], 0
movsd xmm0, qword [esp + 0x38]
movsd qword [ecx + 0x28], xmm0
mov eax, dword [esp + 0x5c]
mov dword [ecx + 0x30], eax
mov dword [ecx + 0x34], 0
jmp 0x47a514
mov ecx, dword [esp + 4]
cmp dword [ecx], 0
mov dword [ecx + 4], 0
je 0x47a509
mov dword [ecx], 0
push dword [ecx + 8]
call sub.api_ms_win_crt_heap_l1_1_0.dll_free
mov ecx, dword [esp + 8]
add esp, 4
mov eax, dword [0x5052b0]
mov dword [ecx + 8], eax
dec dword [edi + 8]
lea eax, [esi + 1]
cmp eax, 2
jb 0x47a523
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp esi, 0xffffffff
setne al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret