Function at 0x40da00
Capabilities:
Get common file path
Get disk information
Get disk size
Get file attributes
Set file attributes

Disassembly:
sub esp, 0x644
mov eax, dword [0x4ccecc]
xor eax, esp
mov dword [esp + 0x63c], eax
mov edx, dword [0x4b6ac4]
push ebx
push ebp
push esi
xor eax, eax
push edi
xor ecx, ecx
xor ebp, ebp
push 0x200
mov word [esp + 0x34], cx
mov word [esp + 0x24c], ax
mov dword [esp + 0x36], eax
mov dword [esp + 0x3a], eax
mov dword [esp + 0x3e], eax
mov word [esp + 0x42], ax
mov eax, dword [0x4b6ac8]
lea ecx, [esp + 0x4c]
push ebp
push ecx
mov dword [esp + 0x24], ebp
xor edi, edi
xor ebx, ebx
mov dword [esp + 0x4c], edx
mov dword [esp + 0x50], eax
call fcn.00455040
add esp, 0xc
push ebp
push 0x1a
lea edx, [esp + 0x48]
push edx
push ebp
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x30]
push edx
lea eax, [esp + 0x4c]
push eax
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
cmp eax, 1
jne 0x40daef
cmp dword [esp + 0x14], 5
jb 0x40daef
ja 0x40daa7
cmp dword [esp + 0x10], ebp
jbe 0x40daef
lea eax, [esp + 0x40]
lea edx, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
cmp cx, bp
jne 0x40dab0
sub eax, edx
sar eax, 1
push eax
lea eax, [esp + 0x44]
mov esi, 0x4d3458
call fcn.004093f0
push 0xf
mov eax, str.Free_CD_Burner
mov ecx, esi
call fcn.00409310
push 0x10
mov eax, str._free_tmp_backup
mov ecx, esi
call fcn.00409310
jmp 0x40dbe4
lea ecx, [esp + 0x248]
push ecx
push 0x1ff
call dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsW]
mov dword [esp + 0x1c], eax
cmp eax, ebp
jne 0x40db19
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp + 0x18], eax
jmp 0x40dbe4
jle 0x40dbe4
nop
lea esi, [esp + edi*2 + 0x248]
lea edx, [esp + 0x30]
mov eax, esi
sub edx, esi
nop
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x40db30
lea edx, [esp + 0x30]
push edx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 2
je 0x40db59
cmp eax, 3
je 0x40db59
cmp eax, 4
jne 0x40dbbd
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x30]
push edx
lea eax, [esp + 0x3c]
push eax
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
cmp eax, 1
jne 0x40dbbd
mov ecx, dword [esp + 0x14]
cmp ecx, ebp
jb 0x40dbbd
mov eax, dword [esp + 0x10]
ja 0x40db8a
cmp eax, ebx
jbe 0x40dbbd
mov ebx, eax
mov eax, esi
mov ebp, ecx
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40db93
sub eax, edx
sar eax, 1
push eax
mov eax, esi
mov esi, 0x4d3458
call fcn.004093f0
push 0x10
mov eax, str._free_tmp_backup
mov ecx, esi
call fcn.00409310
lea eax, [esp + 0x248]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40dbc7
sub eax, edx
sar eax, 1
lea edi, [edi + eax + 1]
cmp dword [esp + 0x1c], edi
jg 0x40db20
mov eax, dword [0x4d345c]
mov esi, 8
cmp dword [0x4d3470], esi
jae 0x40dbfb
mov eax, 0x4d345c
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectory]
mov eax, dword [0x4d345c]
cmp dword [0x4d3470], esi
jae 0x40dc16
mov eax, 0x4d345c
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov ecx, dword [0x4d345c]
or eax, 2
cmp dword [0x4d3470], esi
jae 0x40dc33
mov ecx, 0x4d345c
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov ecx, dword [esp + 0x64c]
mov eax, dword [esp + 0x18]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0044e200
add esp, 0x644
ret