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

Disassembly:
sub esp, 0xd64
push ebx
push ebp
push esi
push edi
mov edi, ecx
mov dword [esp + 0x10], edi
mov eax, dword [edi + 4]
test eax, eax
jne 0x53e8d6
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0xd64
ret 8
mov esi, dword [esp + 0xd78]
test esi, esi
jne 0x53e8e8
lea esi, [edi + 8]
test esi, esi
je 0x53e911
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
je 0x53e911
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov ebp, dword [sym.imp.MSVCRT.dll__strdup]
cmp eax, 0xffffffff
je 0x53e920
and eax, 0x10
cmp al, 0x10
sete al
test al, al
jne 0x53e97c
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0xd64
ret 8
push esi
call ebp
mov ebx, dword [sym.imp.MSVCRT.dll_strrchr]
mov edi, eax
push 0x5c
push edi
call ebx
add esp, 0xc
test eax, eax
je 0x53e976
push edi
mov byte [eax], 0
call fcn.0053ef60
add esp, 4
test al, al
push edi
jne 0x53e960
call dword [sym.imp.MSVCRT.dll_free]
add esp, 4
xor al, al
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd64
ret 8
call dword [sym.imp.MSVCRT.dll_free]
add esp, 4
push 0
push esi
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
je 0x53e911
mov edi, dword [esp + 0x10]
jmp 0x53e982
mov ebx, dword [sym.imp.MSVCRT.dll_strrchr]
lea eax, [esp + 0x240]
mov ecx, edi
push eax
call fcn.0053e7a0
mov al, byte [esp + 0x470]
test al, al
je 0x53ea6d
lea ecx, [esp + 0x240]
push 0
add edi, 8
push ecx
push edi
lea edx, [esp + 0x44]
push 0
push edx
call dword [sym.imp.MSVCRT.dll__makepath]
lea eax, [esp + 0x4c]
add esp, 0x14
test eax, eax
je 0x53ebc2
lea ecx, [esp + 0x38]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
je 0x53ebc2
lea edx, [esp + 0x38]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x53ea02
and eax, 0x10
pop edi
cmp al, 0x10
pop esi
pop ebp
pop ebx
sete al
add esp, 0xd64
ret 8
lea eax, [esp + 0x38]
push eax
call ebp
mov esi, eax
push 0x5c
push esi
call ebx
add esp, 0xc
test eax, eax
je 0x53ea5e
push esi
mov byte [eax], 0
call fcn.0053ef60
add esp, 4
test al, al
push esi
jne 0x53ea40
call dword [sym.imp.MSVCRT.dll_free]
add esp, 4
xor al, al
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd64
ret 8
call dword [sym.imp.MSVCRT.dll_free]
add esp, 4
lea ecx, [esp + 0x38]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
je 0x53ebc2
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0xd64
ret 8
mov al, byte [esp + 0xd7c]
mov edi, dword [sym.imp.MSVCRT.dll__makepath]
test al, al
je 0x53eabb
lea edx, [esp + 0x474]
lea eax, [esp + 0x38]
push edx
push eax
push 0
lea ecx, [esp + 0x24c]
push 0
push ecx
call dword [sym.imp.MSVCRT.dll__splitpath]
lea edx, [esp + 0x488]
lea eax, [esp + 0x4c]
push edx
push eax
push 0
lea ecx, [esp + 0x260]
push 0
push ecx
call edi
add esp, 0x28
lea edx, [esp + 0x240]
push 0
push edx
push esi
lea eax, [esp + 0x148]
push 0
push eax
call edi
lea ecx, [esp + 0x150]
push ecx
call ebp
mov esi, eax
push 0x5c
push esi
call ebx
add esp, 0x20
xor bl, bl
test eax, eax
je 0x53eb44
test esi, esi
mov byte [eax], bl
je 0x53eb42
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
je 0x53eb42
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x53eb13
and eax, 0x10
cmp al, 0x10
sete bl
jmp 0x53eb44
push esi
call ebp
mov edi, eax
push 0x5c
push edi
call dword [sym.imp.MSVCRT.dll_strrchr]
add esp, 0xc
test eax, eax
je 0x53eb77
push edi
mov byte [eax], 0
call fcn.0053ef60
add esp, 4
test al, al
push edi
jne 0x53eb61
call dword [sym.imp.MSVCRT.dll_free]
add esp, 4
xor bl, bl
push esi
call dword [sym.imp.MSVCRT.dll_free]
add esp, 4
test bl, bl
jne 0x53eb7b
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0xd64
ret 8
call dword [sym.imp.MSVCRT.dll_free]
add esp, 4
push 0
push esi
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
je 0x53eb42
mov bl, 1
jmp 0x53eb44
push 0
push 0x80
push 2
push 0
push 0
lea edx, [esp + 0x150]
push 0x40000000
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
cmp edi, 0xffffffff
jne 0x53ebb1
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0xd64
ret 8
mov ebx, dword [esp + 0x10]
mov eax, dword [ebx + 4]
push eax
call fcn.005460f0
test eax, eax
je 0x53ebd1
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0xd64
ret 8
mov ebp, dword [sym.imp.KERNEL32.dll_WriteFile]
mov edx, dword [ebx + 4]
lea ecx, [esp + 0x574]
push 0x800
push ecx
push edx
call fcn.00545a60
mov esi, eax
test esi, esi
jle 0x53ec1b
lea eax, [esp + 0x10]
push 0
push eax
lea ecx, [esp + 0x57c]
push esi
push ecx
push edi
mov dword [esp + 0x24], 0
call ebp
test eax, eax
je 0x53ec18
cmp dword [esp + 0x10], esi
je 0x53ebd7
or esi, 0xffffffff
mov ebp, dword [sym.imp.KERNEL32.dll_CloseHandle]
push edi
call ebp
mov edx, dword [ebx + 4]
push edx
call fcn.00545c60
test esi, esi
jne 0x53ecc9
mov edi, dword [esp + 0x458]
push esi
push esi
push 3
push esi
push esi
lea eax, [esp + 0x150]
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x53ecc9
lea ecx, [esp + 0x30]
lea edx, [esp + 0x20]
push ecx
lea eax, [esp + 0x2c]
push edx
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileTime]
cmp eax, 1
sete al
test al, al
je 0x53ecc6
lea ecx, [esp + 0x18]
push ecx
push edi
shr edi, 0x10
push edi
call dword [sym.imp.KERNEL32.dll_DosDateTimeToFileTime]
cmp eax, 1
sete al
test al, al
je 0x53ecc6
lea edx, [esp + 0x10]
lea eax, [esp + 0x18]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_LocalFileTimeToFileTime]
cmp eax, 1
sete al
test al, al
je 0x53ecc6
lea ecx, [esp + 0x10]
lea edx, [esp + 0x20]
push ecx
lea eax, [esp + 0x14]
push edx
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_SetFileTime]
push ebx
call ebp
xor eax, eax
pop edi
test esi, esi
pop esi
pop ebp
sete al
pop ebx
add esp, 0xd64
ret 8