Function at 0x40ec64
Capabilities:
Get common file path
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x214
mov al, byte [ebp - 2]
push ebx
push esi
mov esi, ecx
xor ebx, ebx
push edi
mov byte [esi], al
mov dword [esi + 4], ebx
mov dword [esi + 8], ebx
mov dword [esi + 0xc], ebx
lea eax, [ebp - 9]
mov dword [esi + 0x10], ebx
mov dword [esi + 0x14], ebx
push eax
mov dword [esi + 0x18], ebx
lea eax, [ebp - 1]
mov dword [esi + 0x1c], ebx
push ebx
mov dword [esi + 0x20], ebx
lea ecx, [esi + 0x30]
push eax
mov dword [esi + 0x2c], ebx
call fcn.0040f5e0
lea eax, [ebp - 1]
lea ecx, [esi + 0x40]
push eax
lea eax, [ebp - 9]
push ebx
push eax
call fcn.0040f73a
mov al, byte [ebp - 1]
lea edi, [esi + 0x60]
mov byte [esi + 0x50], al
mov al, byte [ebp - 1]
mov cl, byte [ebp - 1]
mov dword [esi + 0x54], ebx
mov dword [esi + 0x58], ebx
mov dword [esi + 0x5c], ebx
mov byte [edi], al
mov al, byte [ebp - 1]
mov dword [edi + 4], ebx
mov dword [edi + 8], ebx
mov dword [edi + 0xc], ebx
mov byte [esi + 0x70], al
lea eax, [esi + 0x80]
mov dword [esi + 0x74], ebx
mov dword [esi + 0x78], ebx
mov dword [esi + 0x7c], ebx
mov byte [eax], cl
mov cl, byte [ebp - 1]
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebx
lea eax, [esi + 0x94]
mov dword [esi + 0x90], ebx
mov byte [eax], cl
mov cl, byte [ebp - 1]
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebx
lea eax, [esi + 0xa4]
mov byte [eax], cl
mov cl, byte [ebp - 1]
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebx
lea eax, [esi + 0xb4]
mov byte [eax], cl
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebx
lea ecx, [esi + 0xd4]
mov dword [esi + 0xc4], ebx
mov byte [esi + 0xc8], bl
mov dword [esi + 0xd0], ebx
call fcn.0041eda0
lea ecx, [esi + 0xd8]
call fcn.0040efdd
mov cl, byte [ebp - 1]
lea eax, [esi + 0xdc]
mov byte [eax], cl
fldz
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebx
lea ecx, [esi + 0x104]
fstp dword [esi + 0xec]
mov byte [esi + 0xf0], 1
mov dword [esi + 0xf4], 1
mov dword [esi + 0xf8], ebx
mov dword [esi + 0xfc], ebx
mov byte [esi + 0x100], bl
call fcn.0040fe10
lea eax, [ebp - 1]
lea ecx, [esi + 0x124]
push eax
lea eax, [ebp - 9]
push ebx
push eax
call fcn.0040ff48
lea eax, [ebp - 0x110]
push 0x104
push eax
call fcn.00415a2a
lea eax, [ebp - 0x110]
push eax
call fcn.00414e40
add esp, 0xc
cmp eax, ebx
je 0x40edf8
cmp byte [ebp + eax - 0x111], 0x5c
je 0x40edf8
mov byte [ebp + eax - 0x110], 0x5c
inc eax
push str.SOURCE_DIR
lea ecx, [ebp - 8]
mov byte [ebp + eax - 0x110], bl
call fcn.0040168c
lea eax, [ebp - 0x110]
lea ecx, [esi + 0x30]
push eax
lea eax, [ebp - 8]
push eax
call fcn.0040f10f
mov ecx, eax
call fcn.00407845
lea ecx, [ebp - 8]
call fcn.0040178c
push str.TARGET_DIR
lea ecx, [ebp - 8]
call fcn.0040168c
lea eax, [ebp - 8]
push ebx
push eax
lea ecx, [esi + 0x30]
call fcn.0040f10f
mov ecx, eax
call fcn.00407845
lea ecx, [ebp - 8]
call fcn.0040178c
push str.LANGUAGE
lea ecx, [ebp - 8]
call fcn.0040168c
lea eax, [ebp - 8]
push ebx
push eax
lea ecx, [esi + 0x30]
call fcn.0040f10f
mov ecx, eax
call fcn.00407845
lea ecx, [ebp - 8]
call fcn.0040178c
push str.APP_NAME
lea ecx, [ebp - 8]
call fcn.0040168c
lea eax, [ebp - 8]
push ebx
push eax
lea ecx, [esi + 0x30]
call fcn.0040f10f
mov ecx, eax
call fcn.00407845
lea ecx, [ebp - 8]
call fcn.0040178c
push str.SETUP_TYPE
lea ecx, [ebp - 8]
call fcn.0040168c
lea eax, [ebp - 8]
push 0x429c3c
push eax
lea ecx, [esi + 0x30]
call fcn.0040f10f
mov ecx, eax
call fcn.00407845
lea ecx, [ebp - 8]
call fcn.0040178c
push str.PROGRAM_FILES_DIR
lea ecx, [ebp - 8]
call fcn.0040168c
lea eax, [ebp - 8]
push ebx
push eax
lea ecx, [esi + 0x30]
call fcn.0040f10f
mov ecx, eax
call fcn.00407845
lea ecx, [ebp - 8]
call fcn.0040178c
mov ebx, 0x104
lea eax, [ebp - 0x214]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
push str.WINSYS_DIR
lea ecx, [ebp - 8]
call fcn.0040168c
lea eax, [ebp - 0x214]
lea ecx, [esi + 0x30]
push eax
lea eax, [ebp - 8]
push eax
call fcn.0040f10f
mov ecx, eax
call fcn.00407845
lea ecx, [ebp - 8]
call fcn.0040178c
lea eax, [ebp - 0x214]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
push str.WIN_DIR
lea ecx, [ebp - 8]
call fcn.0040168c
lea eax, [ebp - 0x214]
lea ecx, [esi + 0x30]
push eax
lea eax, [ebp - 8]
push eax
call fcn.0040f10f
mov ecx, eax
call fcn.00407845
lea ecx, [ebp - 8]
call fcn.0040178c
mov byte [ebp - 2], 0x61
movsx eax, byte [ebp - 2]
push eax
lea eax, [ebp - 8]
push 0x429c10
push eax
call fcn.00407807
add esp, 0xc
mov ecx, eax
call fcn.00408d41
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
lea ecx, [ebp - 8]
mov ebx, eax
call fcn.0040178c
cmp ebx, 2
jb 0x40efcd
cmp ebx, 4
jbe 0x40efbf
cmp ebx, 6
jne 0x40efcd
lea eax, [ebp - 2]
mov ecx, edi
push eax
push dword [edi + 8]
call fcn.0040f98b
inc byte [ebp - 2]
cmp byte [ebp - 2], 0x7a
jle 0x40ef82
mov eax, esi
pop edi
pop esi
pop ebx
leave
ret