Function at 0x409480
Capabilities:
Get disk information
Get disk size

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x340
mov eax, dword [0x452074]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov ebx, edx
mov dword [ebp - 0x33c], eax
push ebx
push 0x448cb8
lea eax, [ebp - 0x114]
mov dword [ebp - 0x328], 0
push 0x104
push eax
mov edi, ecx
call fcn.00401e40
add esp, 0x10
push 0
push 0
push 3
push 0
push 3
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x338], eax
test eax, eax
je 0x409507
cmp eax, 0xffffffff
je 0x409507
mov ecx, eax
call fcn.004119e0
push dword [ebp - 0x338]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test esi, esi
mov eax, ebx
cmovne eax, esi
jmp 0x409509
mov eax, ebx
push 0
push eax
mov edx, str.Path
mov ecx, edi
call fcn.00407d00
push 0
push ebx
mov edx, str.Volume_GUID
mov ecx, edi
call fcn.00407d00
push dword [ebp - 0x33c]
mov edx, ebx
mov ecx, edi
call fcn.004090e0
add esp, 0x14
lea eax, [ebp - 0x324]
push 0x104
push eax
push 0
push 0
push 0
push 0x104
lea eax, [ebp - 0x21c]
push eax
lea eax, [ebp - 0x114]
push eax
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
test eax, eax
je 0x409595
lea eax, [ebp - 0x21c]
mov edx, str.Label
push 0
push eax
mov ecx, edi
call fcn.00407d00
lea eax, [ebp - 0x324]
mov edx, str.Filesystem
push 0
push eax
mov ecx, edi
call fcn.00407d00
add esp, 0x10
mov esi, dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExA]
lea eax, [ebp - 0x334]
push eax
push 0
push 0
lea eax, [ebp - 0x114]
push eax
call esi
test eax, eax
je 0x4095e9
push 0x800
push ecx
push 0
push 0x400
push dword [ebp - 0x330]
mov ecx, 0x456f80
push dword [ebp - 0x334]
call fcn.0040a530
add esp, 0x14
mov edx, str.Free_Space
mov ecx, edi
push eax
call fcn.00407d00
add esp, 8
push 0
lea eax, [ebp - 0x334]
push eax
push 0
lea eax, [ebp - 0x114]
push eax
call esi
test eax, eax
je 0x409637
push 0x800
push ecx
push 0
push 0x400
push dword [ebp - 0x330]
mov ecx, 0x456f80
push dword [ebp - 0x334]
call fcn.0040a530
add esp, 0x14
mov edx, str.Total_Space
mov ecx, edi
push eax
call fcn.00407d00
add esp, 8
mov esi, dword [sym.imp.KERNEL32.dll_GetVolumePathNamesForVolumeNameA]
lea eax, [ebp - 0x328]
push eax
push 0
push 0
lea eax, [ebp - 0x114]
push eax
call esi
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xea
jne 0x409731
mov eax, dword [ebp - 0x328]
test eax, eax
je 0x409731
push eax
call dword [sym.imp.msvcrt.dll_malloc]
mov ebx, eax
add esp, 4
mov dword [ebp - 0x338], ebx
test ebx, ebx
je 0x409731
lea eax, [ebp - 0x328]
push eax
push dword [ebp - 0x328]
lea eax, [ebp - 0x114]
push ebx
push eax
call esi
test eax, eax
je 0x409727
push 2
mov edx, str.Volume_Path_Names
mov ecx, edi
call fcn.00407bf0
add esp, 4
mov dword [ebp - 0x33c], eax
cmp byte [ebx], 0
mov edi, ebx
je 0x409727
mov ebx, eax
nop dword [eax]
push 4
mov edx, str.Mount_Point
mov ecx, ebx
call fcn.00407bf0
mov esi, edi
add esp, 4
lea edx, [esi + 1]
mov cl, byte [esi]
inc esi
test cl, cl
jne 0x4096e6
sub esi, edx
mov ecx, str.Drive_Letter
cmp esi, 3
mov edx, str.Path
push 0
cmovbe edx, ecx
mov ecx, eax
push edi
call fcn.00407d00
mov eax, edi
add esp, 8
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x409711
sub eax, edx
inc edi
add edi, eax
cmp byte [edi], cl
jne 0x4096d0
mov ebx, dword [ebp - 0x338]
push ebx
call dword [sym.imp.msvcrt.dll_free]
add esp, 4
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0041abcf
mov esp, ebp
pop ebp
ret