Function at 0x47c140
Capabilities:
Get storage device properties

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2ce4
call fcn.00501720
mov eax, dword [0x57c54c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
xor esi, esi
lea eax, [ebp - 0x408]
push esi
push 0x5643f0
push eax
mov ebx, edx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [ebp - 0x408]
push esi
push esi
push 3
push esi
push 3
push esi
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
mov dword [ebp - 0x2ce0], edi
cmp edi, 0xffffffff
je 0x47c512
push 0x2710
lea eax, [ebp - 0x2b18]
mov dword [ebp - 0x2cdc], esi
push esi
push eax
mov dword [ebp - 0x2b1c], esi
mov dword [ebp - 0x2b24], esi
mov dword [ebp - 0x2b20], esi
call fcn.00503920
add esp, 0xc
lea eax, [ebp - 0x2cdc]
push esi
push eax
push 0x2710
lea eax, [ebp - 0x2b18]
push eax
push 0xc
lea eax, [ebp - 0x2b24]
push eax
push 0x2d1400
push edi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x47c50b
push 0x80
lea eax, [ebp - 0x208]
push esi
push eax
call fcn.00503920
push 0x80
lea eax, [ebp - 0x108]
push esi
push eax
call fcn.00503920
push 0x80
lea eax, [ebp - 0x88]
push esi
push eax
call fcn.00503920
push 0x80
lea eax, [ebp - 0x188]
push esi
push eax
call fcn.00503920
mov edx, dword [ebp - 0x2b0c]
lea eax, [ebp - 0x88]
add esp, 0x30
push eax
push ecx
lea ecx, [ebp - 0x2b18]
call fcn.0047bf00
mov edx, dword [ebp - 0x2b08]
lea eax, [ebp - 0x108]
add esp, 8
push eax
push ecx
lea ecx, [ebp - 0x2b18]
call fcn.0047bf00
mov edx, dword [ebp - 0x2b04]
lea eax, [ebp - 0x188]
add esp, 8
push eax
push ecx
lea ecx, [ebp - 0x2b18]
call fcn.0047bf00
mov edx, dword [ebp - 0x2b00]
lea eax, [ebp - 0x208]
add esp, 8
push eax
push ecx
lea ecx, [ebp - 0x2b18]
call fcn.0047bf00
push 0x1a0
lea eax, [ebp - 0x2cd0]
mov dword [ebp - 0x2b30], esi
xorps xmm0, xmm0
push esi
push eax
movlpd qword [ebp - 0x2cd8], xmm0
call fcn.00503920
lea ecx, [ebp - 0x88]
add esp, 0x14
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x47c2e0
sub ecx, edx
je 0x47c305
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 0x47c2f0
lea ecx, [ebp - 0x108]
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x47c310
sub ecx, edx
je 0x47c351
lea edx, [ebp - 0x108]
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x47c323
lea edi, [ebp - 0x2cb0]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x47c333
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 edi, dword [ebp - 0x2ce0]
xor esi, esi
xor ecx, ecx
mov al, byte [ebp + ecx - 0x188]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x2bb1], al
test al, al
jne 0x47c353
xor ecx, ecx
nop word [eax + eax]
mov al, byte [ebp + ecx - 0x208]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x2c31], al
test al, al
jne 0x47c370
lea ecx, [ebp - 0x2c30]
call fcn.0047c070
lea ecx, [ebp - 0x2cb0]
call fcn.0047c070
lea ecx, [ebp - 0x2bb0]
call fcn.0047c070
push 0x2710
lea eax, [ebp - 0x2b18]
push 0
push eax
call fcn.00503920
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 edi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x47c50b
cmp dword [ebp - 0x2b10], 0xc
mov eax, dword [ebp - 0x2b00]
mov dword [ebp - 0x2cd8], eax
mov eax, dword [ebp - 0x2afc]
mov dword [ebp - 0x2cd4], eax
jne 0x47c50b
lea edx, [ebp - 0x2c30]
mov dword [ebp - 0x2b30], 2
lea ecx, [edx + 1]
mov al, byte [edx]
inc edx
test al, al
jne 0x47c421
sub edx, ecx
xor eax, eax
test edx, edx
jle 0x47c502
cmp edx, 0x20
jb 0x47c4e2
lea ecx, [ebp + edx - 0x2c31]
lea esi, [ebx - 2]
lea esi, [esi + edx*2]
cmp ebx, ecx
ja 0x47c45c
lea ecx, [ebp - 0x2c30]
cmp esi, ecx
jae 0x47c4e2
mov ecx, edx
and ecx, 0x8000001f
jns 0x47c46b
dec ecx
or ecx, 0xffffffe0
inc ecx
mov esi, edx
sub esi, ecx
lea ecx, [ebx + 0x20]
nop dword [eax]
nop word [eax + eax]
movq xmm0, qword [ebp + eax - 0x2c30]
lea ecx, [ecx + 0x40]
punpcklbw xmm0, xmm0
psraw xmm0, 8
movups xmmword [ecx - 0x60], xmm0
movq xmm0, qword [ebp + eax - 0x2c28]
punpcklbw xmm0, xmm0
psraw xmm0, 8
movups xmmword [ecx - 0x50], xmm0
movq xmm0, qword [ebp + eax - 0x2c20]
punpcklbw xmm0, xmm0
psraw xmm0, 8
movups xmmword [ecx - 0x40], xmm0
movq xmm0, qword [ebp + eax - 0x2c18]
add eax, 0x20
punpcklbw xmm0, xmm0
psraw xmm0, 8
movups xmmword [ecx - 0x30], xmm0
cmp eax, esi
jl 0x47c480
cmp eax, edx
jge 0x47c502
nop word [eax + eax]
movsx cx, byte [ebp + eax - 0x2c30]
mov word [ebx + eax*2], cx
inc eax
cmp eax, edx
jl 0x47c4f0
xor eax, eax
mov word [ebx + edx*2], ax
lea esi, [eax + 1]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00500b45
mov esp, ebp
pop ebp
ret