Function at 0x402190
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xea4
mov eax, dword [0x422004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0x58
lea eax, [ebp - 0xe78]
mov edi, ecx
push 0
push eax
mov dword [ebp - 0xe80], edi
call fcn.00403ee0
add esp, 0xc
lea eax, [ebp - 0x420]
push 0x208
push 0
push eax
call fcn.00403ee0
add esp, 0xc
lea eax, [ebp - 0x218]
push 0x20c
push 0
push eax
call fcn.00403ee0
add esp, 0xc
mov dword [ebp - 0xe78], 0x58
lea eax, [ebp - 0x420]
mov dword [ebp - 0xe74], edi
mov dword [ebp - 0xe5c], eax
xor esi, esi
lea eax, [ebp - 0xe78]
mov dword [ebp - 0xe58], 0x208
push eax
mov dword [ebp - 0xe6c], str.Vlnk_File
mov dword [ebp - 0xe60], 1
mov dword [ebp - 0xe54], esi
mov dword [ebp - 0xe50], esi
mov dword [ebp - 0xe4c], esi
mov dword [ebp - 0xe44], 0x1800
call dword [sym.imp.COMDLG32.dll_GetOpenFileNameW]
cmp eax, 1
jne 0x402492
lea eax, [ebp - 0x420]
push eax
push str.Parse_vlnk_for___ls__n
call fcn.00401270
add esp, 8
lea edx, [ebp - 0xe20]
lea ecx, [ebp - 0x420]
call fcn.00401660
test eax, eax
jne 0x4022ac
mov eax, dword [0x423640]
cmp word [0x423d58], si
je 0x40229f
cmp word [0x423f68], si
jne 0x402492
push 0x10
push dword [eax]
push dword [eax + 0x34]
push edi
jmp 0x40248c
xor ecx, ecx
nop
lea eax, [ebp - 0xdff]
add eax, ecx
mov bl, byte [eax - 1]
lea edx, [eax - 1]
test bl, bl
je 0x40231f
cmp bl, 0x2e
cmove esi, edx
mov dl, byte [eax]
test dl, dl
je 0x40231f
mov bl, byte [eax + 1]
cmp dl, 0x2e
lea edx, [eax + 1]
cmove esi, eax
test bl, bl
je 0x40231f
cmp bl, 0x2e
mov bl, byte [eax + 2]
cmove esi, edx
lea edx, [eax + 2]
test bl, bl
je 0x40231f
cmp bl, 0x2e
mov bl, byte [eax + 3]
cmove esi, edx
lea edx, [eax + 3]
test bl, bl
je 0x40231f
cmp bl, 0x2e
cmove esi, edx
mov dl, byte [eax + 4]
add eax, 4
test dl, dl
je 0x40231f
cmp dl, 0x2e
cmove esi, eax
add ecx, 6
cmp ecx, 0x180
jb 0x4022b0
mov ecx, esi
call fcn.00402ac0
test eax, eax
jne 0x402354
cmp word [0x423d58], 0
mov eax, dword [0x423640]
je 0x402347
cmp word [0x423f68], 0
jne 0x402492
push 0x10
push dword [eax]
push dword [eax + 0x1c]
push edi
jmp 0x40248c
mov esi, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea eax, [ebp - 0x214]
push 0
push eax
push 0xffffffffffffffff
lea eax, [ebp - 0xe00]
push eax
push 0
push 0xfde9
call esi
inc eax
push eax
lea eax, [ebp - 0x214]
push eax
push 0xffffffffffffffff
lea eax, [ebp - 0xe00]
push eax
push 0
push 0xfde9
call esi
mov eax, 2
lea edx, [eax + 0x5a]
nop dword [eax + eax]
movzx ecx, word [ebp + eax*2 - 0x218]
test cx, cx
je 0x4023c2
cmp ecx, 0x2f
jne 0x4023ba
mov word [ebp + eax*2 - 0x218], dx
inc eax
cmp eax, 0x104
jl 0x4023a0
mov eax, dword [ebp - 0xe04]
mov edi, dword [ebp - 0xe08]
mov esi, dword [ebp - 0xe0c]
mov dword [ebp - 0xe88], eax
mov byte [ebp - 0xe79], 0x41
call dword [sym.imp.KERNEL32.dll_GetLogicalDrives]
mov ebx, eax
push ebx
push str.Logic_Drives:_0x_x
call fcn.00401370
add esp, 8
test ebx, ebx
je 0x402466
mov al, byte [ebp - 0xe79]
test bl, 1
je 0x40245a
lea ecx, [ebp - 0xea0]
mov dword [ebp - 0xe84], 0
xorps xmm0, xmm0
lea edx, [ebp - 0xe84]
push ecx
mov cl, al
movlpd qword [ebp - 0xe98], xmm0
call fcn.00401450
add esp, 4
test eax, eax
jne 0x402454
cmp dword [ebp - 0xe84], esi
jne 0x402454
cmp dword [ebp - 0xe98], edi
jne 0x402454
mov eax, dword [ebp - 0xe88]
cmp dword [ebp - 0xe94], eax
je 0x4024a8
mov al, byte [ebp - 0xe79]
inc al
shr ebx, 1
mov byte [ebp - 0xe79], al
jne 0x402401
cmp word [0x423d58], 0
mov eax, dword [0x423640]
je 0x40247f
cmp word [0x423f68], 0
jne 0x402492
push 0x10
push dword [eax]
push dword [eax + 0x3c]
push dword [ebp - 0xe80]
call dword [sym.imp.USER32.dll_MessageBoxW]
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00403088
mov esp, ebp
pop ebp
ret
mov al, byte [ebp - 0xe79]
test al, al
je 0x402466
movsx eax, al
push eax
call fcn.00407a81
mov word [ebp - 0x218], ax
add esp, 4
mov eax, 0x3a
mov word [ebp - 0x216], ax
lea eax, [ebp - 0x218]
push eax
push str.vlnk_dst_is__ls_n
call fcn.00401270
add esp, 8
lea eax, [ebp - 0x218]
push 0
push 0
push 3
push 0
push 1
push 8
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
cmp eax, 0xffffffff
je 0x402466
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [ebp - 0x218]
push eax
mov eax, dword [0x423640]
push dword [eax + 0x38]
lea eax, [ebp - 0xc20]
push str._ls__ls
push 0x400
push eax
call fcn.004011c0
mov eax, dword [0x423640]
add esp, 0x14
cmp word [0x423d58], 0
je 0x40254f
cmp word [0x423f68], 0
jne 0x402567
push 0x40
push dword [eax + 4]
lea eax, [ebp - 0xc20]
push eax
push dword [ebp - 0xe80]
call dword [sym.imp.USER32.dll_MessageBoxW]
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00403088
mov esp, ebp
pop ebp
ret