Function at 0x40f9f0
Capabilities:
Get disk information

Disassembly:
sub esp, 0x25c
push ebx
push esi
mov esi, dword [esp + 0x268]
push edi
push ebp
push 0x415f9c
push esi
call fcn.00410ec0
add esp, 8
test eax, eax
je 0x40fa32
mov eax, 2
pop ebp
pop edi
mov dword [0x415f30], eax
pop esi
mov dword [0x415f34], eax
mov eax, 0xffffffff
pop ebx
add esp, 0x25c
ret
cmp byte [esi + 1], 0x3a
jne 0x40fa74
mov al, byte [esi]
test al, al
je 0x40fa63
cmp byte [esi + 2], 0
jne 0x40fa63
mov eax, 2
pop ebp
pop edi
mov dword [0x415f30], eax
pop esi
mov dword [0x415f34], eax
mov eax, 0xffffffff
pop ebx
add esp, 0x25c
ret
movsx eax, al
push eax
call fcn.00410f60
add esp, 4
lea ebp, [eax - 0x60]
jmp 0x40fa7b
call fcn.0040eaa0
mov ebp, eax
lea eax, [esp + 0x28]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
mov ebx, eax
jne 0x40fb3d
push 0x415f98
push esi
call fcn.00410ec0
add esp, 8
test eax, eax
je 0x40fb1e
lea eax, [esp + 0x168]
push 0x104
push esi
xor ebx, ebx
push eax
call fcn.0040f730
add esp, 0xc
mov edx, eax
test edx, edx
je 0x40fb1e
mov edi, edx
mov ecx, 0xffffffff
sub eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, 3
jne 0x40fb1e
push edx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 1
jbe 0x40fb1e
mov edi, dword [esp + 0x274]
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebx
push ebx
mov byte [esp + 0x58], bl
push ebx
mov dword [esp + 0x30], 0x10
push ebx
push 1
push 1
push 0x7bc
call fcn.00410c40
add esp, 0x18
mov dword [edi + 0x1c], eax
mov dword [edi + 0x18], eax
mov dword [edi + 0x20], eax
jmp 0x40fcbf
mov eax, 2
pop ebp
pop edi
mov dword [0x415f30], eax
pop esi
mov dword [0x415f34], eax
mov eax, 0xffffffff
pop ebx
add esp, 0x25c
ret
lea eax, [esp + 0x20]
lea ecx, [esp + 0x3c]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
test eax, eax
je 0x40fd49
lea eax, [esp + 0x10]
lea ecx, [esp + 0x20]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
test eax, eax
je 0x40fd49
mov edi, dword [esp + 0x274]
mov eax, dword [esp + 0x1c]
and eax, 0xffff
push eax
xor eax, eax
mov ax, word [esp + 0x1e]
push eax
mov eax, dword [esp + 0x20]
and eax, 0xffff
push eax
xor eax, eax
mov ax, word [esp + 0x22]
push eax
xor eax, eax
mov ax, word [esp + 0x22]
push eax
mov eax, dword [esp + 0x24]
and eax, 0xffff
push eax
call fcn.00410c40
add esp, 0x18
mov dword [edi + 0x1c], eax
cmp dword [esp + 0x34], 0
jne 0x40fbc3
cmp dword [esp + 0x38], 0
je 0x40fc31
lea eax, [esp + 0x20]
lea ecx, [esp + 0x34]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
test eax, eax
je 0x40fd23
lea eax, [esp + 0x10]
lea ecx, [esp + 0x20]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
test eax, eax
je 0x40fd23
mov eax, dword [esp + 0x1c]
and eax, 0xffff
push eax
xor eax, eax
mov ax, word [esp + 0x1e]
push eax
mov eax, dword [esp + 0x20]
and eax, 0xffff
push eax
xor eax, eax
mov ax, word [esp + 0x22]
push eax
xor eax, eax
mov ax, word [esp + 0x22]
push eax
mov eax, dword [esp + 0x24]
and eax, 0xffff
push eax
call fcn.00410c40
add esp, 0x18
cmp dword [esp + 0x2c], 0
mov dword [edi + 0x18], eax
jne 0x40fc47
cmp dword [esp + 0x30], 0
jne 0x40fc47
mov eax, dword [edi + 0x1c]
jmp 0x40fcb5
lea eax, [esp + 0x20]
lea ecx, [esp + 0x2c]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
test eax, eax
je 0x40fcfd
lea eax, [esp + 0x10]
lea ecx, [esp + 0x20]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
test eax, eax
je 0x40fcfd
mov eax, dword [esp + 0x1c]
and eax, 0xffff
push eax
xor eax, eax
mov ax, word [esp + 0x1e]
push eax
mov eax, dword [esp + 0x20]
and eax, 0xffff
push eax
xor eax, eax
mov ax, word [esp + 0x22]
push eax
xor eax, eax
mov ax, word [esp + 0x22]
push eax
mov eax, dword [esp + 0x24]
and eax, 0xffff
push eax
call fcn.00410c40
add esp, 0x18
push ebx
mov dword [edi + 0x20], eax
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, dword [esp + 0x28]
push esi
push eax
call fcn.0040f910
mov word [edi + 6], ax
add esp, 8
mov word [edi + 8], 1
mov eax, dword [esp + 0x48]
dec ebp
mov dword [edi + 0x14], eax
mov dword [edi], ebp
xor eax, eax
mov dword [edi + 0x10], ebp
mov word [edi + 4], ax
pop ebp
mov word [edi + 0xc], ax
mov word [edi + 0xa], ax
pop edi
pop esi
pop ebx
add esp, 0x25c
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.004101c0
add esp, 4
push ebx
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, 0xffffffff
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x25c
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.004101c0
add esp, 4
push ebx
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, 0xffffffff
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x25c
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.004101c0
add esp, 4
push ebx
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, 0xffffffff
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x25c
ret