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

Disassembly:
sub esp, 0x800
push ebx
push ebp
push esi
xor ebp, ebp
push edi
push ebp
call fcn.0041aad0
mov esi, dword [esp + 0x818]
add esp, 4
cmp esi, ebp
je 0x422d25
cmp word [esi], bp
je 0x422d25
mov ebx, dword [esp + 0x818]
cmp ebx, ebp
je 0x422d25
cmp word [ebx], bp
je 0x422d25
cmp dword [0x52ddb4], ebp
jne 0x422549
push 0x3288
push 2
jmp 0x422d2c
mov edi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
push esi
call edi
test al, 0x10
mov dword [esp + 0x60], eax
je 0x422566
push 0x3290
push 0x1d
jmp 0x422d2c
push ebx
call edi
cmp eax, 0xffffffff
mov dword [esp + 0x14], eax
je 0x422582
test al, 0x10
je 0x422582
push 0x329a
push 0x1e
jmp 0x422d2c
push ebp
push 0x80
push 3
push ebp
push 5
push SysReAllocStringLen
push esi
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x54], ebp
or ebx, 0xffffffff
call fcn.0041faa0
add esp, 0x1c
cmp eax, 0xffffffff
mov dword [esp + 0x1c], eax
je 0x422c0b
mov esi, dword [esp + 0x1c]
lea eax, [esp + 0x58]
lea ecx, [esp + 0x48]
push eax
lea edx, [esp + 0x54]
push ecx
xor edi, edi
push edx
push esi
mov dword [esp + 0x60], edi
mov dword [esp + 0x64], edi
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], edi
mov dword [esp + 0x68], edi
mov dword [esp + 0x6c], edi
call dword [sym.imp.KERNEL32.dll_GetFileTime]
mov ebp, dword [sym.imp.KERNEL32.dll_SetFilePointer]
push edi
push edi
push edi
push esi
call ebp
mov ecx, 0xf7
xor eax, eax
lea edi, [esp + 0x431]
mov byte [esp + 0x430], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x430]
push 0x3e0
push eax
push esi
call fcn.0041f580
add esp, 0xc
test eax, eax
je 0x422c29
lea ecx, [esp + 0x430]
push ecx
call fcn.0041f680
mov esi, eax
add esp, 4
test esi, esi
mov dword [esp + 0x18], esi
je 0x422c32
mov ecx, 0xf
xor eax, eax
lea edi, [esp + 0x69]
mov byte [esp + 0x68], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0xe1
xor eax, eax
lea edi, [esp + 0xa9]
mov byte [esp + 0xa8], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
cmp esi, 3
mov dword [esp + 0x34], 0
stosb byte es:[edi], al
jne 0x42270f
lea edx, [esp + 0xa8]
lea eax, [esp + 0x430]
push edx
push eax
call fcn.0041eee0
add esp, 8
test eax, eax
je 0x422c39
lea ecx, [esp + 0xa8]
push ecx
call fcn.00425bc0
add esp, 4
test eax, eax
je 0x422c42
lea edx, [esp + 0x34]
lea eax, [esp + 0x68]
push edx
push 0x40
lea ecx, [esp + 0x4c]
push eax
lea edx, [esp + 0xb4]
push ecx
push edx
mov dword [esp + 0x58], 0
call fcn.00426420
add esp, 0x14
test eax, eax
je 0x422c4b
mov eax, dword [esp + 0x44]
push eax
call fcn.00410a20
add esp, 4
mov dword [esp + 0x28], eax
test eax, eax
je 0x422c54
jmp 0x422784
cmp esi, 1
jne 0x42272b
push esi
call fcn.00410a20
add esp, 4
mov dword [esp + 0x28], eax
test eax, eax
je 0x422c5d
jmp 0x422784
cmp esi, 2
jne 0x422ca8
push esi
call fcn.00410a20
add esp, 4
mov dword [esp + 0x28], eax
test eax, eax
je 0x422c66
mov edi, str.ocularsd
or ecx, 0xffffffff
xor eax, eax
mov esi, str.ocularsd
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edi, [esp + 0x68]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.ocularsd
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov esi, dword [esp + 0x18]
not ecx
dec ecx
mov dword [esp + 0x34], ecx
mov eax, dword [esp + 0x14]
cmp eax, 0xffffffff
je 0x4227a2
test al, 1
je 0x4227a2
and al, 0xfe
push eax
mov eax, dword [esp + 0x81c]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov ecx, dword [esp + 0x818]
xor edi, edi
push edi
push 0x80
push 4
push edi
push 1
push 0xc0000000
push ecx
call fcn.0041faa0
mov ebx, eax
add esp, 0x1c
cmp ebx, 0xffffffff
mov dword [esp + 0x20], ebx
je 0x422c6f
mov ecx, dword [esp + 0x14]
xor edx, edx
cmp ecx, 0xffffffff
sete dl
cmp esi, 3
mov dword [esp + 0x38], edx
jne 0x422a40
mov eax, dword [esp + 0xc4]
mov ecx, dword [esp + 0xc0]
push eax
push ecx
push ebx
call fcn.00412ac0
add esp, 0xc
test eax, eax
je 0x422c78
mov edx, dword [esp + 0xe0]
mov eax, dword [esp + 0x1c]
push edi
push edi
push edx
push eax
mov dword [esp + 0x48], 1
call ebp
push edi
push edi
push edi
push ebx
call ebp
mov eax, dword [esp + 0xe4]
mov dword [esp + 0x10], edi
cmp eax, edi
mov dword [esp + 0x14], edi
jne 0x422849
mov esi, 1
jmp 0x4229f7
mov ecx, dword [esp + 0xe8]
cmp eax, 1
mov dword [esp + 0x3c], ecx
jne 0x422864
mov ecx, dword [esp + 0xec]
mov dword [esp + 0x3c], ecx
push ecx
call fcn.004d2462
mov ebp, eax
add esp, 4
cmp ebp, edi
je 0x422c81
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x3c]
push eax
mov edx, dword [ecx]
call dword [edx + 0xc]
push eax
mov dword [esp + 0x28], eax
call fcn.004d2462
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x422c8a
mov dword [esp + 0x2c], 0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0xe4]
mov esi, dword [esp + 0xe8]
inc eax
cmp eax, ecx
mov dword [esp + 0x2c], eax
jne 0x4228ce
mov esi, dword [esp + 0xec]
mov dword [esp + 0x14], 1
mov ecx, dword [esp + 0x3c]
xor eax, eax
mov edx, ecx
mov edi, ebp
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
push 0
and ecx, 3
mov dword [esp + 0x68], 0
rep stosb byte es:[edi], al
mov ecx, dword [esp + 0x28]
xor eax, eax
mov edx, ecx
mov edi, ebx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0x68]
push eax
push esi
push ebp
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x4229a3
mov edx, dword [ebp]
add esi, 0xfffffffc
lea edi, [ebp + 4]
push edx
push esi
push edi
call fcn.00429370
add esp, 0xc
test eax, eax
je 0x4229ac
mov ecx, dword [esp + 0x28]
lea edx, [esp + 0x40]
push edx
mov edx, dword [esp + 0x28]
mov eax, dword [ecx]
push edx
mov edx, dword [esp + 0x3c]
push ebx
push esi
push edi
push edx
lea edx, [esp + 0x80]
push edx
mov dword [esp + 0x5c], 0
call dword [eax + 0x14]
test eax, eax
je 0x4229b5
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x20]
lea eax, [esp + 0x18]
push 0
push eax
push ecx
push ebx
push edx
mov dword [esp + 0x2c], 0
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x4229be
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x40]
cmp eax, ecx
jb 0x4229c5
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4228a4
jmp 0x4229dc
push 0x336e
push 0xd
jmp 0x4229cc
push 0x3376
push 0x1c
jmp 0x4229cc
push 0x337f
push 0x12
jmp 0x4229cc
push 0x3387
jmp 0x4229ca
push 0x338e
push 0xe
call fcn.0041aab0
add esp, 8
mov dword [esp + 0x10], 1
push ebp
call fcn.004d248b
push ebx
call fcn.004d248b
mov esi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x18]
add esp, 8
push ebx
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
test esi, esi
je 0x422cb7
test edi, edi
jne 0x422cb7
mov al, byte [esp + 0x81c]
mov dword [esp + 0x30], 1
test al, 1
je 0x422cb7
lea ecx, [esp + 0x58]
lea edx, [esp + 0x48]
push ecx
lea eax, [esp + 0x54]
push edx
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_SetFileTime]
jmp 0x422cb7
cmp esi, 1
je 0x422a4e
cmp esi, 2
jne 0x422cb7
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x18]
push ecx
push edx
mov dword [esp + 0x20], 0
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov ecx, dword [esp + 0x18]
push ecx
push eax
push ebx
call fcn.00412ac0
add esp, 0xc
test eax, eax
je 0x422c9f
mov edx, dword [esp + 0x1c]
push 0
push 0
push 0x100
push edx
mov dword [esp + 0x48], 1
call ebp
push 0
push 0
push 0
push ebx
call ebp
push 0x10000
call fcn.004d2462
mov esi, eax
add esp, 4
test esi, esi
je 0x422cb7
push 0x10000
call fcn.004d2462
mov ebp, eax
add esp, 4
test ebp, ebp
je 0x422cb7
xor eax, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x10], eax
mov ecx, 0x4000
xor eax, eax
mov edi, esi
mov dword [esp + 0x24], eax
rep stosd dword es:[edi], eax
mov ecx, 0x4000
mov edi, ebp
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x1c]
push eax
lea eax, [esp + 0x28]
push eax
push 0x10000
push esi
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x422b71
mov eax, dword [esp + 0x24]
test eax, eax
je 0x422b7a
mov ecx, dword [esp + 0x28]
lea edi, [esp + 0x14]
push edi
push 0x10000
mov edx, dword [ecx]
push ebp
push eax
mov eax, dword [esp + 0x44]
push esi
push eax
lea eax, [esp + 0x80]
mov dword [esp + 0x2c], 0
push eax
call dword [edx + 0x14]
test eax, eax
je 0x422b84
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x2c]
push 0
push ecx
push edx
push ebp
push ebx
mov dword [esp + 0x40], 0
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x422b8d
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
cmp eax, ecx
jb 0x422b94
jmp 0x422ad6
push 0x33d2
push 0xd
jmp 0x422b9b
mov dword [esp + 0x20], 1
jmp 0x422bab
push 0x33e1
push 0x12
jmp 0x422b9b
push 0x33e9
jmp 0x422b99
push 0x33f0
push 0xe
call fcn.0041aab0
add esp, 8
mov dword [esp + 0x10], 1
push esi
call fcn.004d248b
push ebp
call fcn.004d248b
add esp, 8
push ebx
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
mov eax, dword [esp + 0x20]
test eax, eax
je 0x422cb7
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x422cb7
mov al, byte [esp + 0x81c]
mov dword [esp + 0x30], 1
test al, 1
je 0x422cb7
lea ecx, [esp + 0x58]
lea edx, [esp + 0x48]
push ecx
lea eax, [esp + 0x54]
push edx
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_SetFileTime]
jmp 0x422cb7
push 0x32b2
push 3
call fcn.0041aab0
mov eax, dword [esp + 0x38]
add esp, 8
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x800
ret
push 0x32c2
push 0xf
jmp 0x422caf
push 0x32c9
jmp 0x422cad
push 0x32d8
push 0x14
jmp 0x422caf
push 0x32e1
push 0x1f
jmp 0x422caf
push 0x32ea
push 0xb
jmp 0x422caf
push 0x32f3
push 0xc
jmp 0x422caf
push 0x32fe
push 0xc
jmp 0x422caf
push 0x3309
push 0xc
jmp 0x422caf
push 0x3326
push 4
jmp 0x422caf
push 0x3332
push 0x25
jmp 0x422caf
push 0x334d
push 0x21
jmp 0x422caf
push 0x3355
push 0x21
call fcn.0041aab0
mov ebx, dword [esp + 0x28]
add esp, 8
jmp 0x422cb7
push 0x33b4
push 0x25
jmp 0x422caf
push 0x3313
push 0x22
call fcn.0041aab0
add esp, 8
mov ecx, dword [esp + 0x1c]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push ecx
call esi
cmp ebx, 0xffffffff
je 0x422ccc
push ebx
call esi
mov eax, dword [esp + 0x30]
test eax, eax
je 0x422d00
test byte [esp + 0x81c], 2
je 0x422d16
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x818]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov eax, dword [esp + 0x30]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x800
ret
mov eax, dword [esp + 0x38]
test eax, eax
je 0x422d16
mov ecx, dword [esp + 0x818]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov eax, dword [esp + 0x30]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x800
ret
push 0x3282
push 1
call fcn.0041aab0
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x800
ret