Function at 0x408efa
Capabilities:
Check if file exists
Copy file
Create directory
Get disk information
Get disk size
Get file attributes
Get file size
Read file on windows
Set file attributes

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1274
call fcn.0040be80
push 0x427794
lea eax, [ebp - 0x420]
push eax
call fcn.0040c8aa
add esp, 8
push str.System_Volume_Info.ed7ba470_8e54_465e_825c_99712043e01cDOdo.ini
lea ecx, [ebp - 0x420]
push ecx
call fcn.0040c880
add esp, 8
lea edx, [ebp - 0x420]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x408f48
xor eax, eax
jmp 0x409557
push 0
push 0x80
push 3
push 0
push 0
push 0xc0000000
lea eax, [ebp - 0x420]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x10c], eax
cmp dword [ebp - 0x10c], 0xffffffff
jne 0x408f7d
xor eax, eax
jmp 0x409557
push 0
mov ecx, dword [ebp - 0x10c]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0xffffffff
jne 0x408fa9
mov edx, dword [ebp - 0x10c]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
jmp 0x409557
push 0x104
push 0
lea eax, [ebp - 0x108]
push eax
call fcn.0040be20
add esp, 0xc
push 0x104
push 0
lea ecx, [ebp - 0x214]
push ecx
call fcn.0040be20
add esp, 0xc
push 0
lea edx, [ebp - 0x218]
push edx
mov eax, dword [ebp - 4]
push eax
lea ecx, [ebp - 0x108]
push ecx
mov edx, dword [ebp - 0x10c]
push edx
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov eax, dword [ebp - 0x10c]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x424], 0
mov dword [ebp - 0x110], 0
mov ecx, dword [ebp - 0x424]
cmp ecx, dword [ebp - 4]
jge 0x409552
mov edx, dword [ebp - 0x424]
movsx eax, byte [ebp + edx - 0x108]
test eax, eax
jne 0x40903d
jmp 0x409552
mov ecx, dword [ebp - 0x110]
mov edx, dword [ebp - 0x424]
mov al, byte [ebp + edx - 0x108]
mov byte [ebp + ecx - 0x214], al
mov ecx, dword [ebp - 0x110]
add ecx, 1
mov dword [ebp - 0x110], ecx
mov edx, dword [ebp - 0x424]
add edx, 1
mov dword [ebp - 0x424], edx
mov eax, dword [ebp - 0x424]
movsx ecx, byte [ebp + eax - 0x108]
cmp ecx, 0xd
jne 0x40909b
mov edx, dword [ebp - 0x424]
movsx eax, byte [ebp + edx - 0x107]
cmp eax, 0xa
je 0x4090aa
mov ecx, dword [ebp - 0x424]
cmp ecx, dword [ebp - 4]
jne 0x40954d
lea edx, [ebp - 0x214]
push edx
call fcn.0040c940
add esp, 4
movsx eax, byte [ebp + eax - 0x215]
cmp eax, 0x5c
jne 0x409304
lea ecx, [ebp - 0x214]
push ecx
call fcn.0040c940
add esp, 4
mov byte [ebp + eax - 0x215], 0
push 0x104
push 0
lea edx, [ebp - 0x62c]
push edx
call fcn.0040be20
add esp, 0xc
push 0x104
lea eax, [ebp - 0x62c]
push eax
push 0xffffffffffffffff
lea ecx, [ebp - 0x214]
push ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push 0x104
push 0
lea edx, [ebp - 0x834]
push edx
call fcn.0040be20
add esp, 0xc
push 0x104
push 0
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040be20
add esp, 0xc
push 0x427794
lea ecx, [ebp - 0xa3c]
push ecx
call fcn.0040c8aa
add esp, 8
push str.System_Volume_Info.ed7ba470_8e54_465e_825c_99712043e01c
lea edx, [ebp - 0xa3c]
push edx
call fcn.0040c880
add esp, 8
push 0
lea eax, [ebp - 0xa3c]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push 7
lea ecx, [ebp - 0xa3c]
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
lea edx, [ebp - 0x62c]
push edx
lea eax, [ebp - 0xc44]
push eax
call fcn.0040c8aa
add esp, 8
mov dword [ebp - 0xc48], 0
jmp 0x4091b9
mov ecx, dword [ebp - 0xc48]
add ecx, 1
mov dword [ebp - 0xc48], ecx
lea edx, [ebp - 0xc44]
push edx
call fcn.0040be00
add esp, 4
cmp dword [ebp - 0xc48], eax
jge 0x409204
lea eax, [ebp - 0xc44]
push eax
call fcn.0040be00
add esp, 4
sub eax, 1
sub eax, dword [ebp - 0xc48]
xor ecx, ecx
mov cx, word [ebp + eax*2 - 0xc44]
cmp ecx, 0x5c
jne 0x409202
cmp dword [ebp - 0xc48], 0
je 0x409202
jmp 0x409204
jmp 0x4091aa
mov edx, dword [ebp - 0xc48]
push edx
lea eax, [ebp - 0xc44]
push eax
call fcn.0040be00
add esp, 4
lea ecx, [ebp + eax*2 - 0xc44]
mov edx, dword [ebp - 0xc48]
shl edx, 1
sub ecx, edx
push ecx
lea eax, [ebp - 0x834]
push eax
call fcn.0040c39a
add esp, 0xc
lea ecx, [ebp - 0xc44]
push ecx
call fcn.0040be00
add esp, 4
xor edx, edx
mov dx, word [ebp + eax*2 - 0xc46]
cmp edx, 0x5c
jne 0x409272
lea eax, [ebp - 0xc44]
push eax
call fcn.0040be00
add esp, 4
mov word [ebp + eax*2 - 0xc46], 0
push 0x423658
lea ecx, [ebp - 0xa3c]
push ecx
call fcn.0040c880
add esp, 8
lea edx, [ebp - 0x834]
push edx
lea eax, [ebp - 0xa3c]
push eax
call fcn.0040c880
add esp, 8
mov dword [0x427cd8], 0
lea ecx, [ebp - 0xa3c]
push ecx
call fcn.00406cce
add esp, 4
cmp dword [0x427cd8], 0x6400000
jae 0x4092ff
mov dword [0x427cc0], 0
mov dword [0x427cc4], 0
mov dword [0x427cc8], 0
mov dword [0x4220a4], 1
lea edx, [ebp - 0x62c]
push edx
lea eax, [ebp - 0xa3c]
push eax
call fcn.00409f81
add esp, 8
jmp 0x40951e
push 0x104
push 0
lea ecx, [ebp - 0x1064]
push ecx
call fcn.0040be20
add esp, 0xc
lea edx, [ebp - 0x214]
push edx
lea eax, [ebp - 0x1064]
push eax
call fcn.0040bd10
add esp, 8
push 0x104
push 0
lea ecx, [ebp - 0xf54]
push ecx
call fcn.0040be20
add esp, 0xc
push 0x5c
lea edx, [ebp - 0x214]
push edx
call fcn.0040d4e0
add esp, 8
mov dword [ebp - 0x1270], eax
cmp dword [ebp - 0x1270], 0
je 0x40937f
mov eax, dword [ebp - 0x1270]
add eax, 1
push eax
lea ecx, [ebp - 0xf54]
push ecx
call fcn.0040bd10
add esp, 8
push 0x104
push 0
lea edx, [ebp - 0x62c]
push edx
call fcn.0040be20
add esp, 0xc
push 0x104
push 0
lea eax, [ebp - 0x126c]
push eax
call fcn.0040be20
add esp, 0xc
push 0x104
push 0
lea ecx, [ebp - 0xe50]
push ecx
call fcn.0040be20
add esp, 0xc
push 0x427794
lea edx, [ebp - 0xe50]
push edx
call fcn.0040c8aa
add esp, 8
push 0x42365c
lea eax, [ebp - 0xe50]
push eax
call fcn.0040c880
add esp, 8
push 0
lea ecx, [ebp - 0xe50]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push 3
lea edx, [ebp - 0xe50]
push edx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
push 0x104
lea eax, [ebp - 0x62c]
push eax
push 0xffffffffffffffff
lea ecx, [ebp - 0x1064]
push ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push 0x104
lea edx, [ebp - 0x126c]
push edx
push 0xffffffffffffffff
lea eax, [ebp - 0xf54]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea ecx, [ebp - 0xe50]
push ecx
call fcn.0040be00
add esp, 4
xor edx, edx
mov dx, word [ebp + eax*2 - 0xe52]
cmp edx, 0x5c
je 0x409477
push 0x4236d0
lea eax, [ebp - 0xe50]
push eax
call fcn.0040c880
add esp, 8
lea ecx, [ebp - 0x126c]
push ecx
lea edx, [ebp - 0xe50]
push edx
call fcn.0040c880
add esp, 8
push 0x4236d4
lea eax, [ebp - 0xe50]
push eax
call fcn.0040c880
add esp, 8
push 2
lea ecx, [ebp - 0x62c]
push ecx
lea edx, [ebp - 0xf60]
push edx
call fcn.0040c39a
add esp, 0xc
lea eax, [ebp - 0xf60]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 5
jne 0x4094fc
mov dword [ebp - 0x1274], 0
lea ecx, [ebp - 0x1274]
push ecx
push 0
push 0
push 0
lea edx, [ebp - 0xf60]
push edx
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
cmp dword [ebp - 0x1274], 0
ja 0x4094fc
xor eax, eax
jmp 0x409557
push 0
lea eax, [ebp - 0xe50]
push eax
lea ecx, [ebp - 0x62c]
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0xf58], eax
push 0x104
push 0
lea edx, [ebp - 0x214]
push edx
call fcn.0040be20
add esp, 0xc
mov dword [ebp - 0x110], 0
mov eax, dword [ebp - 0x424]
add eax, 2
mov dword [ebp - 0x424], eax
jmp 0x409017
mov eax, 1
mov esp, ebp
pop ebp
ret