Function at 0x408d80
Capabilities:
Get common file path
Get disk information
Get disk size

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4426dd
mov eax, dword fs:[0]
push eax
sub esp, 0x36c
mov eax, dword [0x45c070]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x360], edx
mov dword [ebp - 0x35c], ecx
xor eax, eax
mov dword [ebp - 0x324], 7
mov dword [ebp - 0x328], 0
mov word [ebp - 0x338], ax
push 0xa2
push eax
mov dword [ebp - 4], eax
lea eax, [ebp - 0xb8]
push eax
call fcn.00421ce0
add esp, 0xc
lea eax, [ebp - 0xb8]
push eax
push 0xa1
call dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsW]
push 0x104
lea eax, [ebp - 0x2c0]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
xor eax, eax
mov dword [ebp - 0x30c], 7
mov dword [ebp - 0x310], 0
mov word [ebp - 0x320], ax
cmp word [ebp - 0x2c0], ax
jne 0x408e3d
xor ecx, ecx
jmp 0x408e55
lea ecx, [ebp - 0x2c0]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x408e46
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x2c0]
push eax
lea ecx, [ebp - 0x320]
call fcn.00406ac0
push 2
push 0
push 0x453274
lea ecx, [ebp - 0x320]
call fcn.00405f00
mov esi, 7
mov dword [ebp - 0x2d4], 0
xor ecx, ecx
mov dword [ebp - 0x2d0], esi
mov word [ebp - 0x2e4], cx
mov byte [ebp - 4], 2
test eax, eax
jle 0x408f56
push eax
push ecx
lea eax, [ebp - 0x378]
push eax
lea ecx, [ebp - 0x320]
call fcn.00405b00
mov esi, eax
lea eax, [ebp - 0x2e4]
cmp eax, esi
je 0x408f0d
mov eax, dword [ebp - 0x2d0]
cmp eax, 8
jb 0x408ee4
inc eax
lea ecx, [ebp - 0x2e4]
push eax
push dword [ebp - 0x2e4]
call fcn.00407820
xor eax, eax
mov dword [ebp - 0x2d0], 7
push esi
lea ecx, [ebp - 0x2e4]
mov dword [ebp - 0x2d4], 0
mov word [ebp - 0x2e4], ax
call fcn.00407620
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x364]
cmp eax, 8
jb 0x408f2f
inc eax
lea ecx, [ebp - 0x378]
push eax
push dword [ebp - 0x378]
call fcn.00407820
push 2
push 0x453274
lea ecx, [ebp - 0x2e4]
call fcn.00406050
mov esi, dword [ebp - 0x2d0]
cmp esi, 8
jb 0x408f56
mov edi, dword [ebp - 0x2e4]
mov ebx, edi
jmp 0x408f62
mov edi, dword [ebp - 0x2e4]
lea ebx, [ebp - 0x2e4]
mov eax, dword [ebp - 0x2d4]
lea ecx, [ebp - 0x2e4]
cmp esi, 8
mov dword [ebp - 0x34c], 0x42daf2
cmovae ecx, edi
lea edx, [ecx + eax*2]
lea eax, [ebp - 0x34c]
push eax
lea ecx, [ebp - 0x2e4]
cmovae ecx, edi
push ebx
call fcn.0040cb80
mov esi, dword [ebp - 0x35c]
lea eax, [ebp - 0x2e4]
add esp, 8
cmp esi, eax
je 0x408fb6
push 0xffffffffffffffff
push 0
push eax
mov ecx, esi
call fcn.00406f70
xorps xmm0, xmm0
push 0
movq qword [ebp - 0x2cc], xmm0
push 0
mov dword [ebp - 0x2cc], 0
mov dword [ebp - 0x2c8], 0
call fcn.0040bb80
mov dword [ebp - 0x2cc], eax
mov byte [ebp - 4], 4
xor ebx, ebx
mov edi, dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
mov dword [ebp - 0x34c], ebx
nop word [eax + eax]
movzx eax, word [ebp + ebx*2 - 0xb8]
test ax, ax
je 0x409219
push eax
lea eax, [ebp - 0x308]
push str._c:_
push eax
call fcn.0040e4d0
add esp, 0xc
mov byte [ebp - 4], 5
lea eax, [ebp - 0x308]
cmp dword [ebp - 0x2f4], 8
cmovae eax, dword [ebp - 0x308]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 3
jne 0x4091e5
mov edi, dword [ebp - 0x2f4]
lea ecx, [ebp - 0x308]
mov esi, dword [ebp - 0x308]
lea ebx, [ebp - 0x308]
mov eax, dword [ebp - 0x2f8]
cmp edi, 8
mov dword [ebp - 0x354], 0x42daf2
cmovae ecx, esi
cmovae ebx, esi
lea edx, [ecx + eax*2]
lea eax, [ebp - 0x354]
push eax
lea ecx, [ebp - 0x308]
cmovae ecx, esi
push ebx
call fcn.0040cb80
mov edi, dword [ebp - 0x2f8]
lea edx, [ebp - 0x308]
mov ebx, dword [ebp - 0x2d4]
lea eax, [ebp - 0x2e4]
add esp, 8
mov esi, edi
cmp dword [ebp - 0x2f4], 8
cmovae edx, dword [ebp - 0x308]
cmp dword [ebp - 0x2d0], 8
cmovae eax, dword [ebp - 0x2e4]
cmp ebx, edi
cmovb esi, ebx
test esi, esi
jne 0x4090f0
xor esi, esi
test esi, esi
jne 0x40910f
cmp edi, ebx
jbe 0x40910b
or esi, 0xffffffff
jmp 0x40910f
mov cx, word [eax]
cmp cx, word [edx]
jne 0x409103
add eax, 2
add edx, 2
sub esi, 1
jmp 0x4090d8
sbb esi, esi
and esi, 0xfffffffe
inc esi
jmp 0x4090dc
sbb esi, esi
neg esi
cmp dword [ebp - 0x2f4], 8
lea ecx, [ebp - 0x340]
mov edi, dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
lea eax, [ebp - 0x308]
cmovae eax, dword [ebp - 0x308]
push ecx
lea ecx, [ebp - 0x348]
push ecx
lea ecx, [ebp - 0x2f0]
push ecx
push eax
call edi
test eax, eax
je 0x409153
mov ecx, dword [ebp - 0x2f0]
mov eax, dword [ebp - 0x2ec]
jmp 0x40916a
xorps xmm0, xmm0
movlpd qword [ebp - 0x358], xmm0
mov eax, dword [ebp - 0x354]
mov ecx, dword [ebp - 0x358]
mov edx, dword [ebp - 0x360]
shrd ecx, eax, 0xa
shr eax, 0xa
cmp eax, dword [edx + 4]
jb 0x4091df
ja 0x409182
cmp ecx, dword [edx]
jbe 0x4091df
push 0xffffffffffffffff
push 0
lea eax, [ebp - 0x308]
push eax
lea ecx, [ebp - 0x338]
call fcn.00406f70
test esi, esi
je 0x4091df
mov edi, dword [ebp - 0x2cc]
lea eax, [ebp - 0x308]
push eax
push dword [edi + 4]
push edi
call fcn.0040ca20
mov edx, dword [ebp - 0x2c8]
mov ecx, 0x7fffffe
sub ecx, edx
mov esi, eax
cmp ecx, 1
jb 0x409275
inc edx
mov dword [ebp - 0x2c8], edx
mov dword [edi + 4], esi
mov eax, dword [esi + 4]
mov edi, dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
mov dword [eax], esi
mov ebx, dword [ebp - 0x34c]
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x2f4]
cmp eax, 8
jb 0x409207
inc eax
lea ecx, [ebp - 0x308]
push eax
push dword [ebp - 0x308]
call fcn.00407820
add ebx, 4
mov dword [ebp - 0x34c], ebx
cmp ebx, 0x50
jl 0x409000
mov ecx, dword [ebp - 0x2c8]
test ecx, ecx
je 0x40927f
mov al, byte [ebp - 0x2c4]
push ecx
mov byte [ebp - 0x2c4], al
lea ecx, [ebp - 0x2c4]
mov eax, dword [ebp - 0x2cc]
push ecx
push eax
lea ecx, [ebp - 0x2cc]
push dword [eax]
lea eax, [ebp - 0x354]
push eax
call fcn.0040c8a0
mov eax, dword [ebp - 0x2cc]
mov esi, dword [ebp - 0x35c]
mov eax, dword [eax]
add eax, 8
cmp esi, eax
je 0x409285
push 0xffffffffffffffff
push 0
push eax
mov ecx, esi
call fcn.00406f70
jmp 0x409285
push str.list_T__too_long
call fcn.0041caec
mov esi, dword [ebp - 0x35c]
cmp dword [esi + 0x10], 0
je 0x4092df
cmp dword [esi + 0x14], 8
jb 0x409293
mov esi, dword [esi]
lea eax, [ebp - 0x348]
push eax
lea eax, [ebp - 0x340]
push eax
lea eax, [ebp - 0x2f0]
push eax
push esi
call edi
test eax, eax
jne 0x4092ba
xorps xmm0, xmm0
movlpd qword [ebp - 0x2f0], xmm0
mov ecx, dword [ebp - 0x2f0]
mov esi, 1
mov eax, dword [ebp - 0x2ec]
mov edx, dword [ebp - 0x360]
shrd ecx, eax, 0xa
shr eax, 0xa
mov dword [edx], ecx
mov dword [edx + 4], eax
jmp 0x4092e1
xor esi, esi
lea ecx, [ebp - 0x2cc]
call fcn.0040aae0
push dword [ebp - 0x2cc]
call fcn.0041e8a1
mov eax, dword [ebp - 0x2d0]
add esp, 4
cmp eax, 8
jb 0x409318
inc eax
lea ecx, [ebp - 0x2e4]
push eax
push dword [ebp - 0x2e4]
call fcn.00407820
xor eax, eax
mov dword [ebp - 0x2d0], 7
mov word [ebp - 0x2e4], ax
mov eax, dword [ebp - 0x30c]
mov dword [ebp - 0x2d4], 0
cmp eax, 8
jb 0x409353
inc eax
lea ecx, [ebp - 0x320]
push eax
push dword [ebp - 0x320]
call fcn.00407820
mov ecx, dword [ebp - 0x324]
xor eax, eax
mov dword [ebp - 0x30c], 7
mov dword [ebp - 0x310], 0
mov word [ebp - 0x320], ax
cmp ecx, 8
jb 0x40938e
inc ecx
push ecx
push dword [ebp - 0x338]
lea ecx, [ebp - 0x338]
call fcn.00407820
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0041e8a6
mov esp, ebp
pop ebp
ret