Function at 0x5d0180
Capabilities:
Check if file exists
Delete file
Get file attributes
Read file on windows
Set file attributes
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xb84
push ebx
push esi
push edi
xor eax, eax
mov ecx, 0x280
lea edi, [esp + 0x190]
rep stosd dword es:[edi], eax
movsx eax, word [ebp + 8]
add eax, 0x41
push eax
lea ecx, [esp + 0x2c]
push str._c:_DOSSYS_
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
mov dword [esp + 0x1c], 0
lea eax, [esp + 0x28]
mov byte [esp + 0x390], 0
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x5d01d0
lea edi, [esp + 0x390]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x5d01e1
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x390]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x5d0201
mov dx, word [0x66d1d8]
mov word [edi], dx
lea edi, [esp + 0x390]
dec edi
jmp 0x5d0220
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x5d0220
mov eax, dword [str.DOSVER.TXT]
mov ecx, dword [0x677190]
mov dx, word [0x677194]
mov dword [edi], eax
mov al, byte [0x677196]
mov dword [edi + 4], ecx
mov word [edi + 8], dx
mov byte [edi + 0xa], al
lea eax, [esp + 0x390]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x5d0255
mov edi, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
lea ecx, [esp + 0x390]
sub eax, edx
push ecx
lea ebx, [esp + eax + 0x395]
call edi
cmp eax, 0xffffffff
jne 0x5d0419
cmp word [esp + 0x1c], 1
jne 0x5d0419
lea edx, [esp + 0x28]
push edx
mov byte [esp + 0x37], 0
call edi
mov esi, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
and eax, 0xfffffffd
push eax
lea eax, [esp + 0x2c]
push eax
call esi
lea ecx, [esp + 0x28]
push ecx
mov byte [esp + 0x37], 0x5c
call edi
and eax, 0xfffffffd
push eax
lea edx, [esp + 0x2c]
push edx
call esi
lea eax, [esp + 0x390]
push eax
call edi
and eax, 0xfffffff8
push eax
lea ecx, [esp + 0x394]
push ecx
call esi
lea edx, [esp + 0x390]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov eax, ebx
lea edi, [esp + 0x390]
call fcn.005d0120
mov esi, eax
cmp esi, 0xffffffff
je 0x5d06d8
mov ecx, dword [str.SubSYSATMeABCDe]
mov eax, ebx
mov dword [eax], ecx
mov edx, dword [0x67717c]
mov dword [eax + 4], edx
mov ecx, dword [0x677180]
mov dword [eax + 8], ecx
mov edx, dword [0x677184]
mov dword [eax + 0xc], edx
xor edi, edi
push edi
lea eax, [esp + 0x1c]
push eax
push 0x10
push ebx
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [esp + 0x50]
push ecx
lea edx, [esp + 0x2c]
push edx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov esi, eax
cmp esi, 0xffffffff
je 0x5d0397
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x68]
push ecx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], edi
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x28]
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToDosDateTime]
movzx edi, word [esp + 0x10]
movzx edx, word [esp + 0x14]
shl edi, 0x10
push esi
or edi, edx
call dword [sym.imp.KERNEL32.dll_FindClose]
jmp 0x5d039c
mov edi, 0xadbe0001
push 0
push 0x80
push 4
push 0
push 0
push 0xc0000000
lea eax, [esp + 0x3a8]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
je 0x5d06d8
push 0
lea ecx, [esp + 0x1c]
push ecx
push 0x10
push ebx
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x5d06d1
cmp dword [esp + 0x18], 0x10
jne 0x5d06d1
push 0
push 0
push 0
push esi
mov dword [ebx + 0xb], edi
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push 0
lea edx, [esp + 0x1c]
push edx
push 0x10
push ebx
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
lea eax, [esp + 0x390]
push eax
call edi
cmp eax, 0xffffffff
je 0x5d05bd
lea ecx, [esp + 0x28]
push ecx
call edi
mov esi, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
and eax, 0xfffffffd
push eax
lea edx, [esp + 0x2c]
push edx
call esi
lea eax, [esp + 0x390]
push eax
call edi
mov dword [esp + 0x4c], eax
and eax, 0xfffffff8
push eax
lea ecx, [esp + 0x394]
push ecx
call esi
xor esi, esi
cmp word [esp + 0x1c], si
jne 0x5d04cc
lea edx, [esp + 0x50]
push edx
lea eax, [esp + 0x394]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov edi, eax
cmp edi, 0xffffffff
je 0x5d052d
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x68]
push edx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x18], esi
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x28]
push edx
call dword [sym.imp.KERNEL32.dll_FileTimeToDosDateTime]
movzx esi, word [esp + 0x10]
movzx eax, word [esp + 0x14]
shl esi, 0x10
push edi
or esi, eax
call dword [sym.imp.KERNEL32.dll_FindClose]
jmp 0x5d052d
lea ecx, [esp + 0x50]
push ecx
lea edx, [esp + 0x2c]
push edx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov edi, eax
cmp edi, 0xffffffff
je 0x5d0528
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x68]
push ecx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x18], esi
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x28]
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToDosDateTime]
movzx esi, word [esp + 0x10]
movzx edx, word [esp + 0x14]
shl esi, 0x10
push edi
or esi, edx
call dword [sym.imp.KERNEL32.dll_FindClose]
jmp 0x5d052d
mov esi, 0xadbe0001
push 0
push 0x80
push 4
push 0
push 0
push 0xc0000000
lea eax, [esp + 0x3a8]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
cmp edi, 0xffffffff
je 0x5d05bd
push 0
lea ecx, [esp + 0x1c]
push ecx
push 0x10
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x5d05b6
cmp dword [esp + 0x18], 0x10
jne 0x5d05b6
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebx + 0xb], esi
jne 0x5d05bd
mov eax, dword [esp + 0x4c]
mov edi, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
or eax, 7
push eax
lea ecx, [esp + 0x394]
push ecx
call edi
lea edx, [esp + 0x28]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
or eax, 2
push eax
lea eax, [esp + 0x2c]
push eax
call edi
mov dword [esp + 0x2cc], esi
jmp 0x5d06e3
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp word [esp + 0x1c], 0
jg 0x5d06d8
mov eax, dword [0x677168]
mov edx, dword [str.ADOBEAPPFONTSYS]
mov ecx, dword [0x67716c]
mov dword [esp + 0x2f], eax
mov al, byte [0x677174]
mov dword [esp + 0x2b], edx
mov edx, dword [0x677170]
mov byte [esp + 0x3b], al
lea eax, [esp + 0x28]
mov dword [esp + 0x37], edx
mov dword [esp + 0x33], ecx
mov byte [esp + 0x390], 0
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x5d0607
lea edi, [esp + 0x390]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x5d0618
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x390]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x5d0638
mov cx, word [0x66d1d8]
mov word [edi], cx
lea edi, [esp + 0x390]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x5d0652
mov edx, dword [str._0_1_9_8._7_]
mov eax, dword [0x677158]
mov ecx, dword [0x67715c]
mov dword [edi], edx
mov dl, byte [0x677160]
mov dword [edi + 4], eax
mov dword [edi + 8], ecx
lea eax, [esp + 0x390]
mov byte [edi + 0xc], dl
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x5d0686
sub eax, edx
lea eax, [esp + eax + 0x391]
lea edi, [esp + 0x390]
call fcn.005d0120
cmp eax, 0xffffffff
je 0x5d06ae
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [esp + 0x390]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov eax, dword [esp + 0x1c]
inc eax
cmp ax, 2
mov dword [esp + 0x1c], eax
jl 0x5d01c2
jmp 0x5d06e3
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esp + 0x2cc], 0x7433f4f
mov eax, 0x140
jmp 0x5d06f0
movsx ecx, ax
mov dl, byte [esp + ecx + 0x190]
test dl, dl
lea ecx, [esp + ecx + 0x190]
je 0x5d070c
mov dl, byte [ecx - 1]
test dl, dl
je 0x5d0713
dec eax
cmp ax, 2
jge 0x5d06f0
movsx ecx, ax
mov eax, dword [esp + ecx + 0x190]
add eax, 0x75
lea ecx, [esp + 0x34e]
mov edi, 4
lea esp, [esp]
xor edx, edx
mov esi, 0x10
movsx ebx, byte [ecx]
imul ebx, ebx, 0xb
add edx, ebx
inc ecx
dec esi
jne 0x5d0737
add eax, edx
dec edi
jne 0x5d0730
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret