Function at 0x54d0d0
Capabilities:
Check if file exists
Create directory
Get file attributes
Write file on windows

Disassembly:
sub esp, 0x8a4
push ebx
push ebp
mov ebx, ecx
xor ebp, ebp
test ebx, ebx
push edi
mov edi, eax
je 0x54d0fd
test edi, edi
je 0x54d0fd
mov eax, dword [esp + 0x8b8]
test eax, eax
je 0x54d0fd
mov eax, dword [esp + 0x8bc]
test eax, eax
jne 0x54d10e
pop edi
pop ebp
mov eax, 0x57
pop ebx
add esp, 0x8a4
ret 0xc
push esi
push 0x80
lea esi, [esp + 0x18]
call fcn.00553330
mov eax, esi
push eax
push ebx
lea ecx, [esp + 0x1a8]
push str._s_s_
push ecx
call fcn.0061ed33
mov edx, esi
push edx
lea eax, [esp + 0x1b4]
push eax
lea ecx, [esp + 0xb0]
push 0x66582c
push ecx
call fcn.0061ed33
mov edx, esi
push edx
lea eax, [esp + 0x4dc]
push str.Name_s_n
push eax
call fcn.0061ed33
push 0x80
lea eax, [esp + 0x2d8]
lea edi, [esp + 0x4e8]
call fcn.00553370
mov ecx, esi
push ecx
push ebx
lea edx, [esp + 0x3e8]
push str._s_s
push edx
call fcn.0061ed33
mov esi, dword [sym.imp.kernel32.dll_GetFileAttributesA]
add esp, 0x44
push ebx
call esi
cmp eax, 0xffffffff
jne 0x54d1c5
push 0
push ebx
mov ebx, dword [sym.imp.kernel32.dll_CreateDirectoryA]
call ebx
test eax, eax
jne 0x54d1cb
pop esi
pop edi
pop ebp
mov eax, 0x80004005
pop ebx
add esp, 0x8a4
ret 0xc
mov ebx, dword [sym.imp.kernel32.dll_CreateDirectoryA]
lea eax, [esp + 0x3ac]
push eax
call esi
cmp eax, 0xffffffff
je 0x54d1df
mov ebp, 1
mov eax, dword [esp + 0x8b8]
dec eax
je 0x54d23f
sub eax, 2
je 0x54d203
dec eax
je 0x54d23f
pop esi
pop edi
pop ebp
mov eax, 0x57
pop ebx
add esp, 0x8a4
ret 0xc
test ebp, ebp
je 0x54d1b3
push 0
push 0x80
push 2
push 0
push 0
push 0
lea ecx, [esp + 0xac]
push ecx
call dword [sym.imp.kernel32.dll_CreateFileA]
cmp eax, 0xffffffff
je 0x54d1b3
push eax
call dword [sym.imp.kernel32.dll_CloseHandle]
pop esi
pop edi
pop ebp
xor eax, eax
pop ebx
add esp, 0x8a4
ret 0xc
test ebp, ebp
jne 0x54d2bd
push ebp
lea edx, [esp + 0x1a0]
push edx
call ebx
test eax, eax
je 0x54d1b3
xor eax, eax
jmp 0x54d260
mov cl, byte [esp + eax + 0x19c]
mov byte [esp + eax + 0x2a4], cl
inc eax
test cl, cl
jne 0x54d260
lea edi, [esp + 0x2a4]
dec edi
jmp 0x54d280
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x54d280
mov eax, dword [str.checkpoints_]
mov ecx, dword [0x66a524]
mov edx, dword [0x66a528]
mov dword [edi], eax
mov al, byte [0x66a52c]
mov dword [edi + 4], ecx
push 0
lea ecx, [esp + 0x2a8]
mov dword [edi + 8], edx
push ecx
mov byte [edi + 0xc], al
call ebx
test eax, eax
je 0x54d1b3
push 0
push 0x80
push 2
push 0
push 0
push 0xc0000000
lea edx, [esp + 0xac]
push edx
call dword [sym.imp.kernel32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
je 0x54d1b3
lea eax, [esp + 0x94]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x54d2f2
sub eax, edx
push 0
mov edi, eax
lea eax, [esp + 0x14]
push eax
push edi
lea ecx, [esp + 0xa0]
push ecx
push esi
call dword [sym.imp.kernel32.dll_WriteFile]
push esi
call dword [sym.imp.kernel32.dll_CloseHandle]
cmp edi, dword [esp + 0x10]
jne 0x54d1b3
mov edx, dword [esp + 0x8c0]
mov ecx, dword [esp + 0x8bc]
push edx
lea eax, [esp + 0x1a0]
push eax
push ecx
call fcn.0061f130
add esp, 0xc
pop esi
pop edi
pop ebp
xor eax, eax
pop ebx
add esp, 0x8a4
ret 0xc