Function at 0x435440
Capabilities:
Get storage device properties

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x53ec51
mov eax, dword fs:[0]
push eax
sub esp, 0x24
mov eax, dword [0x596334]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x20]
mov dword [ebp - 0x2c], 0
push eax
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
call fcn.00409d40
mov dword [ebp - 4], 0
call fcn.00407e20
mov ecx, eax
test ecx, ecx
je 0x435798
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x24], eax
push 0x556abc
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 1
call fcn.0040a050
test al, al
jne 0x43552b
mov ebx, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push 0
push 0
push 0xffffffffffffffff
push 0x556abc
push 0
push 3
call ebx
lea edi, [eax - 1]
test edi, edi
jle 0x435523
mov esi, dword [ebp - 0x24]
mov ecx, 1
mov eax, dword [esi - 8]
sub ecx, dword [esi - 4]
sub eax, edi
or eax, ecx
jge 0x435500
push edi
lea ecx, [ebp - 0x24]
call fcn.00408b10
mov esi, dword [ebp - 0x24]
push edi
push esi
push 0xffffffffffffffff
push 0x556abc
push 0
push 3
call ebx
cmp edi, dword [esi - 8]
jg 0x4357a2
xor eax, eax
mov dword [esi - 0xc], edi
mov word [esi + edi*2], ax
jmp 0x43552e
lea ecx, [ebp - 0x24]
call fcn.00414100
mov esi, dword [ebp - 0x24]
mov ecx, dword [esi - 0x10]
lea edi, [esi - 0x10]
mov byte [ebp - 4], 3
test ecx, ecx
je 0x435547
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x43555d
call fcn.00407e20
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
je 0x4357ac
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x2c], 1
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x20]
push dword [eax - 0xc]
push eax
push dword [esi - 0xc]
lea eax, [ebp - 0x28]
push esi
push eax
call fcn.00413dd0
add esp, 0x14
lea eax, [ebp - 0x28]
lea ecx, [ebp - 0x20]
push eax
call fcn.0040f8e0
mov edx, dword [ebp - 0x28]
or ebx, 0xffffffff
mov byte [ebp - 4], 2
add edx, 0xfffffff0
mov eax, ebx
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4355b3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x4355cb
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x20]
xor ebx, ebx
mov esi, dword [eax - 0xc]
lea ecx, [esi - 1]
test ecx, ecx
cmovns ebx, ecx
cmp ebx, 0x7ffffffe
jg 0x43578e
mov edi, esi
lea ecx, [ebx + 1]
sub edi, ebx
cmp ecx, esi
jle 0x435601
mov ecx, edi
mov dword [ebp - 0x28], edi
test ecx, ecx
jle 0x43568f
jmp 0x435609
mov ecx, 1
mov dword [ebp - 0x28], ecx
sub esi, ecx
sub edi, ecx
cmp dword [eax - 4], 1
jle 0x435624
push dword [eax - 0xc]
lea ecx, [ebp - 0x20]
call fcn.00407da0
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x28]
add ecx, ebx
lea edi, [edi*2 + 2]
lea ecx, [eax + ecx*2]
lea eax, [eax + ebx*2]
test edi, edi
je 0x435661
test eax, eax
jne 0x435652
call fcn.004ba4ab
mov dword [eax], 0x16
call fcn.004ba334
mov eax, 0x16
jmp 0x435663
test ecx, ecx
je 0x43563b
push edi
push ecx
push eax
call fcn.004b1050
add esp, 0xc
xor eax, eax
push eax
call fcn.00409fb0
add esp, 4
test esi, esi
js 0x4357a2
mov eax, dword [ebp - 0x20]
cmp esi, dword [eax - 8]
jg 0x4357a2
mov dword [eax - 0xc], esi
xor ecx, ecx
mov eax, dword [ebp - 0x20]
mov word [eax + esi*2], cx
mov eax, dword [ebp - 0x20]
push 0
push 0
push 3
push 0
push 3
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
cmp edi, 0xffffffff
je 0x43574c
push 8
call fcn.004e20c8
mov esi, eax
add esp, 4
test esi, esi
je 0x43574c
push 0
lea eax, [ebp - 0x30]
push eax
push 8
push esi
push 0xc
lea eax, [ebp - 0x1c]
push eax
push 0x2d1400
push edi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
jne 0x4356f5
push esi
call fcn.004e20ad
add esp, 4
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x43574c
push dword [esi + 4]
call fcn.004e20c8
add esp, 4
mov ebx, eax
lea eax, [ebp - 0x30]
push 0
push eax
push dword [esi + 4]
lea eax, [ebp - 0x1c]
push ebx
push 0xc
push eax
push 0x2d1400
push edi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
push esi
call fcn.004e20ad
add esp, 4
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebx + 0x1c], 7
push ebx
jne 0x435744
call fcn.004e20ad
add esp, 4
mov esi, 1
jmp 0x43574e
call fcn.004e20ad
add esp, 4
xor esi, esi
mov eax, dword [ebp - 0x20]
or ecx, 0xffffffff
mov dword [ebp - 4], 0xffffffff
add eax, 0xfffffff0
lock xadd dword [eax + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x435770
mov ecx, dword [eax]
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00455d1a
mov esp, ebp
pop ebp
ret
push 0x80070216
call fcn.00404c40
push 0x80004005
call fcn.00404c40
push 0x80070057
call fcn.00404c40
push 0x80004005
call fcn.00404c40
int3