Function at 0x409750
Capabilities:
Check if file exists
Get disk information
Get file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x5c
mov eax, dword [0x51a448]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
xor eax, eax
mov dword [ebp - 0x58], ecx
lea ecx, [ebp - 0x45]
push esi
mov dword [ebp - 0x50], edx
mov esi, eax
mov dword [ebx], eax
mov byte [ebp - 0x45], al
call fcn.004044e8
cmp byte [ebp - 0x45], 0
je 0x409935
push edi
xor edi, edi
lea ecx, [ebp - 0x54]
mov dword [ebp - 0x54], edi
call fcn.00404d1a
push 0x1000
push edi
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edi, eax
test edi, edi
je 0x409934
xor eax, eax
mov ecx, edi
mov byte [edi], al
call fcn.00404c9d
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x409923
mov esi, dword [ebp - 0x58]
xor eax, eax
inc eax
cmp dword [ebp - 0x54], 0
mov dword [ebp - 0x5c], eax
mov esi, dword [esi]
je 0x4097e6
mov dword [ebp - 0x4c], 0x1000081
jmp 0x4097ef
mov dword [ebp - 0x4c], 0x1000007
mov dword [ebx], eax
push 0xfa0
lea ebx, [esi + 0x10]
xor eax, eax
push ebx
push 0xffffffffffffffff
push edi
push eax
push eax
mov word [ebx], ax
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
xor eax, eax
cmp word [ebx], ax
je 0x409838
push ebx
call fcn.004c96f6
mov edx, dword [ebp - 0x4c]
mov dword [esi + 0xc], eax
pop ecx
lea ecx, [eax*2 + 0x12]
mov dword [esi + 4], 0x4b374558
mov eax, dword [ebp - 0x50]
mov dword [esi], ecx
mov dword [esi + 8], edx
add esi, ecx
inc dword [eax]
xor eax, eax
mov ecx, edi
mov byte [edi], al
call fcn.004096ae
cmp byte [edi], 0
je 0x40991b
lea eax, [ebp - 0x44]
push eax
push 0x40
call dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsA]
test eax, eax
je 0x4098d4
cmp byte [ebp - 0x44], 0
lea ebx, [ebp - 0x44]
je 0x40991b
push ebx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 3
jne 0x4098c3
mov al, byte [ebx]
xor ecx, ecx
push 0xfa0
mov byte [edi], al
lea eax, [esi + 0x10]
push eax
push 0xffffffffffffffff
mov word [eax], cx
xor eax, eax
push edi
push eax
push eax
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea eax, [esi + 0x10]
xor ecx, ecx
cmp word [eax], cx
je 0x4098c3
push eax
call fcn.004c96f6
mov edx, dword [ebp - 0x4c]
pop ecx
mov dword [esi + 0xc], eax
lea ecx, [eax*2 + 0x12]
mov dword [esi + 4], 0x4b374558
mov eax, dword [ebp - 0x50]
mov dword [esi], ecx
mov dword [esi + 8], edx
add esi, ecx
inc dword [eax]
push ebx
call fcn.004c8d20
inc ebx
add ebx, eax
pop ecx
cmp byte [ebx], 0
jne 0x409867
jmp 0x40991b
push 0xfa0
lea ebx, [esi + 0x10]
xor eax, eax
push ebx
push 0xffffffffffffffff
push edi
push eax
push eax
mov word [ebx], ax
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
xor eax, eax
cmp word [ebx], ax
je 0x40991b
push ebx
call fcn.004c96f6
mov edx, dword [ebp - 0x4c]
pop ecx
mov dword [esi + 0xc], eax
lea ecx, [eax*2 + 0x12]
mov dword [esi + 4], 0x4b374558
mov eax, dword [ebp - 0x50]
mov dword [esi], ecx
mov dword [esi + 8], edx
add esi, ecx
inc dword [eax]
mov eax, dword [ebp - 0x58]
mov dword [eax], esi
mov esi, dword [ebp - 0x5c]
push edi
xor eax, eax
push eax
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
pop edi
mov ecx, dword [ebp - 4]
mov eax, esi
pop esi
xor ecx, ebp
pop ebx
call fcn.0049d307
leave
ret