Function at 0x402080
Capabilities:
Get storage device properties

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2cf4
call fcn.0057ab90
mov eax, dword [0x632a40]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0x20
mov dword [ebp - 0x2cec], ecx
lea ecx, [ebp - 0x2b30]
push str.7b114fce349568976c1b34c85efbef70
mov dword [ebp - 0x2b1c], 0xf
mov dword [ebp - 0x2b20], 0
mov byte [ebp - 0x2b30], 0
call fcn.00408580
cmp dword [ebp - 0x2b20], 0x100
mov eax, dword [ebp - 0x2b1c]
jbe 0x402113
cmp eax, 0x10
jb 0x4020f7
inc eax
lea ecx, [ebp - 0x2b30]
push eax
push dword [ebp - 0x2b30]
call fcn.00408a70
push edi
pop esp
push esp
pop edi
push esi
pop edx
push ecx
pop edx
push esi
pop edx
push esi
push eax
push esp
pop ebx
pop ebp
push ebx
pop ebx
push edx
push esp
pop ebp
push ebp
push edi
push ebp
pop esi
push ebx
pop ebx
jmp 0x40212b
cmp eax, 0x10
jb 0x40212b
inc eax
lea ecx, [ebp - 0x2b30]
push eax
push dword [ebp - 0x2b30]
call fcn.00408a70
push 0x20
push str.c32e6ab5c73d16ddf5444a6f28c9e536
lea ecx, [ebp - 0x2b30]
mov dword [ebp - 0x2b1c], 0xf
mov dword [ebp - 0x2b20], 0
mov byte [ebp - 0x2b30], 0
call fcn.00408580
cmp dword [ebp - 0x2b20], 0x100
mov eax, dword [ebp - 0x2b1c]
jbe 0x402195
cmp eax, 0x10
jb 0x402182
inc eax
lea ecx, [ebp - 0x2b30]
push eax
push dword [ebp - 0x2b30]
call fcn.00408a70
pop ebp
push esi
pop eax
pop esp
push ecx
pop ebp
push ebx
pop ebp
pop ecx
pop edi
push edi
pop ecx
push ecx
pop eax
pop ebx
push esp
pop edx
jmp 0x4021ad
cmp eax, 0x10
jb 0x4021ad
inc eax
lea ecx, [ebp - 0x2b30]
push eax
push dword [ebp - 0x2b30]
call fcn.00408a70
push 0x20
push str.b6ea6fafeab598d20dcee0a4135d2933
lea ecx, [ebp - 0x2b30]
mov dword [ebp - 0x2b1c], 0xf
mov dword [ebp - 0x2b20], 0
mov byte [ebp - 0x2b30], 0
call fcn.00408580
cmp dword [ebp - 0x2b20], 0x100
mov eax, dword [ebp - 0x2b1c]
jbe 0x402218
cmp eax, 0x10
jb 0x402204
inc eax
lea ecx, [ebp - 0x2b30]
push eax
push dword [ebp - 0x2b30]
call fcn.00408a70
pop ecx
push esp
pop ebp
push esi
pop esp
pop eax
pop edi
push ebp
push esp
pop edi
push ecx
pop ecx
push edx
push ecx
pop ecx
push eax
push esp
push ecx
jmp 0x402230
cmp eax, 0x10
jb 0x402230
inc eax
lea ecx, [ebp - 0x2b30]
push eax
push dword [ebp - 0x2b30]
call fcn.00408a70
mov edi, dword [sym.imp.KERNEL32.dll_DeviceIoControl]
xor esi, esi
mov dword [ebp - 0x2ce8], esi
nop
push esi
lea eax, [ebp - 0x408]
push 0x6237a8
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [ebp - 0x408]
push 0
push 0
push 3
push 0
push 3
push 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x402562
push 0x2710
xorps xmm0, xmm0
mov dword [ebp - 0x2ce4], 0
lea eax, [ebp - 0x2b18]
movq qword [ebp - 0x2b24], xmm0
push 0
push eax
mov dword [ebp - 0x2b1c], 0
mov dword [ebp - 0x2b24], 0
mov dword [ebp - 0x2b20], 0
call fcn.0057ff70
add esp, 0xc
lea eax, [ebp - 0x2ce4]
push 0
push eax
push 0x2710
lea eax, [ebp - 0x2b18]
push eax
push 0xc
lea eax, [ebp - 0x2b24]
push eax
push 0x2d1400
push ebx
call edi
test eax, eax
je 0x402547
push 0x80
lea eax, [ebp - 0x208]
push 0
push eax
call fcn.0057ff70
add esp, 0xc
lea eax, [ebp - 0x108]
push 0x80
push 0
push eax
call fcn.0057ff70
add esp, 0xc
lea eax, [ebp - 0x88]
push 0x80
push 0
push eax
call fcn.0057ff70
add esp, 0xc
lea eax, [ebp - 0x188]
push 0x80
push 0
push eax
call fcn.0057ff70
add esp, 0xc
lea eax, [ebp - 0x88]
push eax
push 0
push dword [ebp - 0x2b0c]
lea eax, [ebp - 0x2b18]
push eax
call fcn.00401b60
lea eax, [ebp - 0x108]
push eax
push 0
push dword [ebp - 0x2b08]
lea eax, [ebp - 0x2b18]
push eax
call fcn.00401b60
lea eax, [ebp - 0x188]
push eax
push 0
push dword [ebp - 0x2b04]
lea eax, [ebp - 0x2b18]
push eax
call fcn.00401b60
lea eax, [ebp - 0x208]
push eax
push 1
push dword [ebp - 0x2b00]
lea eax, [ebp - 0x2b18]
push eax
call fcn.00401b60
push 0x1a0
lea eax, [ebp - 0x2cd8]
mov dword [ebp - 0x2b38], 0
xorps xmm0, xmm0
push 0
push eax
movlpd qword [ebp - 0x2ce0], xmm0
call fcn.0057ff70
lea ecx, [ebp - 0x88]
add esp, 0xc
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4023f0
sub ecx, edx
je 0x402415
xor ecx, ecx
nop dword [eax]
mov al, byte [ebp + ecx - 0x88]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x2cb9], al
test al, al
jne 0x402400
lea ecx, [ebp - 0x108]
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x402420
sub ecx, edx
je 0x402465
lea edx, [ebp - 0x108]
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x402433
lea edi, [ebp - 0x2cb8]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x402443
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 esi, dword [ebp - 0x2ce8]
mov edi, dword [sym.imp.KERNEL32.dll_DeviceIoControl]
xor ecx, ecx
nop word [eax + eax]
mov al, byte [ebp + ecx - 0x188]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x2bb9], al
test al, al
jne 0x402470
xor eax, eax
nop word [eax + eax]
mov cl, byte [ebp + eax - 0x208]
lea eax, [eax + 1]
mov byte [ebp + eax - 0x2c39], cl
test cl, cl
jne 0x402490
lea eax, [ebp - 0x2c38]
push eax
call fcn.00402860
lea eax, [ebp - 0x2cb8]
push eax
call fcn.00402860
lea eax, [ebp - 0x2bb8]
push eax
call fcn.00402860
push 0x2710
lea eax, [ebp - 0x2b18]
push 0
push eax
call fcn.0057ff70
add esp, 0xc
lea eax, [ebp - 0x2ce4]
push 0
push eax
push 0x2710
lea eax, [ebp - 0x2b18]
push eax
push 0
push 0
push 0x700a0
push ebx
call edi
test eax, eax
je 0x402562
mov eax, dword [ebp - 0x2b00]
mov ecx, 2
mov dword [ebp - 0x2ce0], eax
mov eax, dword [ebp - 0x2afc]
mov dword [ebp - 0x2cdc], eax
xor eax, eax
cmp dword [ebp - 0x2b10], 0xc
cmove eax, ecx
mov ecx, dword [ebp - 0x2cec]
mov dword [ebp - 0x2b38], eax
lea eax, [ebp - 0x2ce0]
push eax
call fcn.004032a0
jmp 0x40255b
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._nDeviceIOControl_IOCTL_STORAGE_QUERY_PROPERTY_error___d_n
call fcn.00401a10
add esp, 8
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
inc esi
mov dword [ebp - 0x2ce8], esi
cmp esi, 0x10
jl 0x402240
push 0x20
push str.ce3654ede8fbcf5dd9f4fd78a0805872
lea ecx, [ebp - 0x2b30]
mov dword [ebp - 0x2b1c], 0xf
mov dword [ebp - 0x2b20], 0
mov byte [ebp - 0x2b30], 0
call fcn.00408580
cmp dword [ebp - 0x2b20], 0x100
mov eax, dword [ebp - 0x2b1c]
jbe 0x40260e
cmp eax, 0x10
jb 0x4025f7
mov ecx, dword [ebp - 0x2b30]
inc eax
cmp eax, 0x1000
jb 0x4025ee
test cl, 0x1f
jne 0x40267c
mov eax, dword [ecx - 4]
cmp eax, ecx
jae 0x402681
sub ecx, eax
cmp ecx, 4
jb 0x402686
cmp ecx, 0x23
ja 0x40268b
mov ecx, eax
push ecx
call fcn.00579ec4
add esp, 4
pop esi
pop ecx
pop edi
push ebx
pop ecx
push edi
push eax
pop edi
push ebp
push edi
push eax
pop eax
push esp
push edx
push ebx
pop eax
pop edi
push ebp
pop ebp
push ecx
pop edx
jmp 0x402626
cmp eax, 0x10
jb 0x402626
inc eax
lea ecx, [ebp - 0x2b30]
push eax
push dword [ebp - 0x2b30]
call fcn.00408a70
call fcn.0043b350
test al, al
je 0x402642
push esp
pop esp
push edi
pop ecx
pop ebp
push esp
push esp
pop eax
push esi
push esi
push ebp
pop esp
pop ebx
pop ebx
push edi
pop esp
push esp
pop edi
push edx
call fcn.0043b9e0
test al, al
je 0x402669
push edx
push edi
pop eax
pop esp
push edi
pop ebx
pop esi
pop ebp
push esi
pop edi
push esp
push ecx
pop eax
push eax
push ecx
push ebp
push ecx
push ebp
pop esp
push esp
pop edx
pop esp
pop ebp
pop eax
pop esp
pop ebx
pop esi
push edi
push edi
pop ebp
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00579ec9
mov esp, ebp
pop ebp
ret
call fcn.005864c3
call fcn.005864c3
call fcn.005864c3
call fcn.005864c3
int3