Function at 0x410a20
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.00408fa0
mov esi, dword [esp + 0x818]
add esp, 4
cmp esi, ebp
je 0x411255
cmp word [esi], bp
je 0x411255
mov ebx, dword [esp + 0x818]
cmp ebx, ebp
je 0x411255
cmp word [ebx], bp
je 0x411255
cmp dword [0x5443c4], ebp
jne 0x410a79
push 0x3230
push 2
jmp 0x41125c
mov edi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
push esi
call edi
test al, 0x10
mov dword [esp + 0x60], eax
je 0x410a96
push 0x3238
push 0x1d
jmp 0x41125c
push ebx
call edi
cmp eax, 0xffffffff
mov dword [esp + 0x14], eax
je 0x410ab2
test al, 0x10
je 0x410ab2
push 0x3242
push 0x1e
jmp 0x41125c
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.0040e010
add esp, 0x1c
cmp eax, 0xffffffff
mov dword [esp + 0x1c], eax
je 0x41113b
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.0040daf0
add esp, 0xc
test eax, eax
je 0x411159
lea ecx, [esp + 0x430]
push ecx
call fcn.0040dbf0
mov esi, eax
add esp, 4
test esi, esi
mov dword [esp + 0x18], esi
je 0x411162
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 0x410c3f
lea edx, [esp + 0xa8]
lea eax, [esp + 0x430]
push edx
push eax
call fcn.0040d4d0
add esp, 8
test eax, eax
je 0x411169
lea ecx, [esp + 0xa8]
push ecx
call fcn.00413fb0
add esp, 4
test eax, eax
je 0x411172
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.00414810
add esp, 0x14
test eax, eax
je 0x41117b
mov eax, dword [esp + 0x44]
push eax
call fcn.00408aa0
add esp, 4
mov dword [esp + 0x28], eax
test eax, eax
je 0x411184
jmp 0x410cb4
cmp esi, 1
jne 0x410c5b
push esi
call fcn.00408aa0
add esp, 4
mov dword [esp + 0x28], eax
test eax, eax
je 0x41118d
jmp 0x410cb4
cmp esi, 2
jne 0x4111d8
push esi
call fcn.00408aa0
add esp, 4
mov dword [esp + 0x28], eax
test eax, eax
je 0x411196
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 0x410cd2
test al, 1
je 0x410cd2
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.0040e010
mov ebx, eax
add esp, 0x1c
cmp ebx, 0xffffffff
mov dword [esp + 0x20], ebx
je 0x41119f
mov ecx, dword [esp + 0x14]
xor edx, edx
cmp ecx, 0xffffffff
sete dl
cmp esi, 3
mov dword [esp + 0x38], edx
jne 0x410f70
mov eax, dword [esp + 0xc4]
mov ecx, dword [esp + 0xc0]
push eax
push ecx
push ebx
call fcn.0040c330
add esp, 0xc
test eax, eax
je 0x4111a8
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 0x410d79
mov esi, 1
jmp 0x410f27
mov ecx, dword [esp + 0xe8]
cmp eax, 1
mov dword [esp + 0x3c], ecx
jne 0x410d94
mov ecx, dword [esp + 0xec]
mov dword [esp + 0x3c], ecx
push ecx
call fcn.004da41d
mov ebp, eax
add esp, 4
cmp ebp, edi
je 0x4111b1
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.004da41d
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x4111ba
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 0x410dfe
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 0x410ed3
mov edx, dword [ebp]
add esi, 0xfffffffc
lea edi, [ebp + 4]
push edx
push esi
push edi
call fcn.004170a0
add esp, 0xc
test eax, eax
je 0x410edc
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 0x410ee5
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 0x410eee
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x40]
cmp eax, ecx
jb 0x410ef5
mov eax, dword [esp + 0x14]
test eax, eax
je 0x410dd4
jmp 0x410f0c
push 0x3316
push 0xd
jmp 0x410efc
push 0x331e
push 0x1c
jmp 0x410efc
push 0x3327
push 0x12
jmp 0x410efc
push 0x332f
jmp 0x410efa
push 0x3336
push 0xe
call fcn.00408f80
add esp, 8
mov dword [esp + 0x10], 1
push ebp
call fcn.004da446
push ebx
call fcn.004da446
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 0x4111e7
test edi, edi
jne 0x4111e7
mov al, byte [esp + 0x81c]
mov dword [esp + 0x30], 1
test al, 1
je 0x4111e7
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 0x4111e7
cmp esi, 1
je 0x410f7e
cmp esi, 2
jne 0x4111e7
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.0040c330
add esp, 0xc
test eax, eax
je 0x4111cf
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.004da41d
mov esi, eax
add esp, 4
test esi, esi
je 0x4111e7
push 0x10000
call fcn.004da41d
mov ebp, eax
add esp, 4
test ebp, ebp
je 0x4111e7
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 0x4110a1
mov eax, dword [esp + 0x24]
test eax, eax
je 0x4110aa
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 0x4110b4
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 0x4110bd
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
cmp eax, ecx
jb 0x4110c4
jmp 0x411006
push 0x337a
push 0xd
jmp 0x4110cb
mov dword [esp + 0x20], 1
jmp 0x4110db
push 0x3389
push 0x12
jmp 0x4110cb
push 0x3391
jmp 0x4110c9
push 0x3398
push 0xe
call fcn.00408f80
add esp, 8
mov dword [esp + 0x10], 1
push esi
call fcn.004da446
push ebp
call fcn.004da446
add esp, 8
push ebx
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4111e7
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x4111e7
mov al, byte [esp + 0x81c]
mov dword [esp + 0x30], 1
test al, 1
je 0x4111e7
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 0x4111e7
push 0x325a
push 3
call fcn.00408f80
mov eax, dword [esp + 0x38]
add esp, 8
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x800
ret
push 0x326a
push 0xf
jmp 0x4111df
push 0x3271
jmp 0x4111dd
push 0x3280
push 0x14
jmp 0x4111df
push 0x3289
push 0x1f
jmp 0x4111df
push 0x3292
push 0xb
jmp 0x4111df
push 0x329b
push 0xc
jmp 0x4111df
push 0x32a6
push 0xc
jmp 0x4111df
push 0x32b1
push 0xc
jmp 0x4111df
push 0x32ce
push 4
jmp 0x4111df
push 0x32da
push 0x25
jmp 0x4111df
push 0x32f5
push 0x21
jmp 0x4111df
push 0x32fd
push 0x21
call fcn.00408f80
mov ebx, dword [esp + 0x28]
add esp, 8
jmp 0x4111e7
push 0x335c
push 0x25
jmp 0x4111df
push 0x32bb
push 0x22
call fcn.00408f80
add esp, 8
mov ecx, dword [esp + 0x1c]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push ecx
call esi
cmp ebx, 0xffffffff
je 0x4111fc
push ebx
call esi
mov eax, dword [esp + 0x30]
test eax, eax
je 0x411230
test byte [esp + 0x81c], 2
je 0x411246
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 0x411246
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 0x322a
push 1
call fcn.00408f80
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x800
ret