Function at 0x551500
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 0x551526
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 0x551538
lea esi, [edi + 8]
test esi, esi
je 0x551561
push esi
call dword [sym.imp.KERNEL32.DLL_lstrlenA]
test eax, eax
je 0x551561
push esi
call dword [sym.imp.KERNEL32.DLL_GetFileAttributesA]
mov ebp, dword [sym.imp.MSVCRT.dll__strdup]
cmp eax, 0xffffffff
je 0x551570
and eax, 0x10
cmp al, 0x10
sete al
test al, al
jne 0x5515cc
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 0x5515c6
push edi
mov byte [eax], 0
call fcn.00551bb0
add esp, 4
test al, al
push edi
jne 0x5515b0
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 0x551561
mov edi, dword [esp + 0x10]
jmp 0x5515d2
mov ebx, dword [sym.imp.MSVCRT.dll_strrchr]
lea eax, [esp + 0x240]
mov ecx, edi
push eax
call fcn.005513f0
mov al, byte [esp + 0x470]
test al, al
je 0x5516bd
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 0x551812
lea ecx, [esp + 0x38]
push ecx
call dword [sym.imp.KERNEL32.DLL_lstrlenA]
test eax, eax
je 0x551812
lea edx, [esp + 0x38]
push edx
call dword [sym.imp.KERNEL32.DLL_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x551652
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 0x5516ae
push esi
mov byte [eax], 0
call fcn.00551bb0
add esp, 4
test al, al
push esi
jne 0x551690
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 0x551812
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 0x55170b
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 0x551794
test esi, esi
mov byte [eax], bl
je 0x551792
push esi
call dword [sym.imp.KERNEL32.DLL_lstrlenA]
test eax, eax
je 0x551792
push esi
call dword [sym.imp.KERNEL32.DLL_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x551763
and eax, 0x10
cmp al, 0x10
sete bl
jmp 0x551794
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 0x5517c7
push edi
mov byte [eax], 0
call fcn.00551bb0
add esp, 4
test al, al
push edi
jne 0x5517b1
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 0x5517cb
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 0x551792
mov bl, 1
jmp 0x551794
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 0x551801
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.0055b4b0
test eax, eax
je 0x551821
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.0055ae20
mov esi, eax
test esi, esi
jle 0x55186b
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 0x551868
cmp dword [esp + 0x10], esi
je 0x551827
or esi, 0xffffffff
mov ebp, dword [sym.imp.KERNEL32.DLL_CloseHandle]
push edi
call ebp
mov edx, dword [ebx + 4]
push edx
call fcn.0055b020
test esi, esi
jne 0x551919
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 0x551919
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 0x551916
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 0x551916
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 0x551916
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