Function at 0x406190
Capabilities:
Get disk information

Disassembly:
sub esp, 0x260
push ebx
push ebp
mov ebp, dword [esp + 0x26c]
push esi
push edi
push 0x408a14
push ebp
call fcn.00406980
add esp, 8
test eax, eax
je 0x4061d0
mov eax, 2
mov dword [0x40c340], eax
mov dword [0x40c344], eax
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x260
ret
mov al, byte [ebp + 1]
xor ebx, ebx
cmp al, 0x3a
jne 0x406213
mov al, byte [ebp]
cmp al, bl
je 0x406202
cmp byte [ebp + 2], bl
jne 0x406202
mov eax, 2
mov dword [0x40c340], eax
mov dword [0x40c344], eax
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x260
ret
movsx eax, al
push eax
call fcn.004068f0
add esp, 4
sub eax, 0x60
jmp 0x406218
call fcn.004068a0
lea ecx, [esp + 0x2c]
mov dword [esp + 0x20], eax
push ecx
push ebp
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov edi, eax
cmp edi, 0xffffffff
jne 0x4062eb
push 0x408a10
push ebp
call fcn.00406980
add esp, 8
test eax, eax
je 0x4062ce
push 0x104
lea edx, [esp + 0x170]
push ebp
push edx
call fcn.004067d0
mov esi, eax
add esp, 0xc
cmp esi, ebx
je 0x4062ce
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, 3
je 0x406283
push esi
call fcn.00406500
add esp, 4
test eax, eax
je 0x4062ce
push esi
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 1
jbe 0x4062ce
push 0xffffffffffffffff
push ebx
push ebx
push ebx
push 1
push 1
push 0x7bc
mov dword [esp + 0x48], 0x10
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], ebx
mov byte [esp + 0x74], bl
call fcn.00402c80
mov esi, dword [esp + 0x294]
add esp, 0x1c
mov dword [esi + 0x1c], eax
mov dword [esi + 0x18], eax
mov dword [esi + 0x20], eax
jmp 0x406494
mov eax, 2
mov dword [0x40c340], eax
mov dword [0x40c344], eax
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x260
ret
lea eax, [esp + 0x24]
lea ecx, [esp + 0x40]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
test eax, eax
je 0x4064d6
lea edx, [esp + 0x10]
lea eax, [esp + 0x24]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
test eax, eax
je 0x4064d6
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x1a]
mov eax, dword [esp + 0x18]
and ecx, 0xffff
push 0xffffffffffffffff
and edx, 0xffff
push ecx
mov ecx, dword [esp + 0x1e]
and eax, 0xffff
push edx
mov edx, dword [esp + 0x1e]
push eax
mov eax, dword [esp + 0x20]
and ecx, 0xffff
and edx, 0xffff
push ecx
and eax, 0xffff
push edx
push eax
call fcn.00402c80
mov esi, dword [esp + 0x294]
mov ecx, dword [esp + 0x54]
add esp, 0x1c
cmp ecx, ebx
mov dword [esi + 0x1c], eax
jne 0x40637d
cmp dword [esp + 0x3c], ebx
je 0x4063f7
lea ecx, [esp + 0x24]
lea edx, [esp + 0x38]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
test eax, eax
je 0x4064d6
lea eax, [esp + 0x10]
lea ecx, [esp + 0x24]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
test eax, eax
je 0x4064d6
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x1a]
mov ecx, dword [esp + 0x18]
and edx, 0xffff
push 0xffffffffffffffff
and eax, 0xffff
push edx
mov edx, dword [esp + 0x1e]
and ecx, 0xffff
push eax
mov eax, dword [esp + 0x1e]
push ecx
mov ecx, dword [esp + 0x20]
and edx, 0xffff
and eax, 0xffff
push edx
and ecx, 0xffff
push eax
push ecx
call fcn.00402c80
add esp, 0x1c
mov dword [esi + 0x18], eax
mov eax, dword [esp + 0x30]
cmp eax, ebx
jne 0x406410
cmp dword [esp + 0x34], ebx
jne 0x406410
mov edx, dword [esi + 0x1c]
mov dword [esi + 0x20], edx
jmp 0x40648d
lea eax, [esp + 0x24]
lea ecx, [esp + 0x30]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
test eax, eax
je 0x4064d6
lea edx, [esp + 0x10]
lea eax, [esp + 0x24]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
test eax, eax
je 0x4064d6
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x1a]
mov eax, dword [esp + 0x18]
and ecx, 0xffff
push 0xffffffffffffffff
and edx, 0xffff
push ecx
mov ecx, dword [esp + 0x1e]
and eax, 0xffff
push edx
mov edx, dword [esp + 0x1e]
push eax
mov eax, dword [esp + 0x20]
and ecx, 0xffff
and edx, 0xffff
push ecx
and eax, 0xffff
push edx
push eax
call fcn.00402c80
add esp, 0x1c
mov dword [esi + 0x20], eax
push edi
call dword [sym.imp.KERNEL32.dll_FindClose]
mov ecx, dword [esp + 0x2c]
push ebp
push ecx
call fcn.004060c0
mov edx, dword [esp + 0x54]
mov word [esi + 6], ax
mov eax, dword [esp + 0x28]
add esp, 8
dec eax
mov word [esi + 8], 1
mov dword [esi], eax
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], edx
mov word [esi + 4], bx
mov word [esi + 0xc], bx
mov word [esi + 0xa], bx
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x260
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.00406760
add esp, 4
push edi
call dword [sym.imp.KERNEL32.dll_FindClose]
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x260
ret