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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x8b0
mov eax, dword [0x574a28]
xor eax, ebp
mov dword [ebp - 8], eax
mov dword [ebp - 0x420], 0
push 8
push 0x30
lea eax, [ebp - 0x44c]
push eax
call fcn.004cb660
add esp, 0xc
push 4
mov ecx, dword [ebp + 0xc]
add ecx, 6
push ecx
lea edx, [ebp - 0x44c]
push edx
call fcn.004cb2f0
add esp, 0xc
push 4
push str.8610
mov eax, dword [ebp + 0xc]
push eax
call fcn.004cd0c1
add esp, 0xc
test eax, eax
jne 0x4755ba
push 8
push 0x578b6c
mov ecx, dword [ebp + 0xc]
add ecx, 6
push ecx
call fcn.004cd0c1
add esp, 0xc
test eax, eax
je 0x47559f
push 8
push 0x578b6c
lea edx, [ebp - 0x44c]
push edx
call fcn.004cd0c1
add esp, 0xc
test eax, eax
je 0x47559f
mov dword [ebp - 0x8b0], 0
jmp 0x4755a9
mov dword [ebp - 0x8b0], 1
mov eax, dword [ebp - 0x8b0]
mov dword [ebp - 0x420], eax
jmp 0x4756e3
push 4
push str.8611
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.004cd0c1
add esp, 0xc
test eax, eax
je 0x475616
push 4
push str.8612
mov edx, dword [ebp + 0xc]
push edx
call fcn.004cd0c1
add esp, 0xc
test eax, eax
je 0x475616
push 4
push str.8613
mov eax, dword [ebp + 0xc]
push eax
call fcn.004cd0c1
add esp, 0xc
test eax, eax
je 0x475616
push 4
push str.8623
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.004cd0c1
add esp, 0xc
test eax, eax
jne 0x47563e
push 8
push 0x578b6c
mov edx, dword [ebp + 0xc]
add edx, 6
push edx
call fcn.004cd0c1
add esp, 0xc
neg eax
sbb eax, eax
add eax, 1
mov dword [ebp - 0x420], eax
jmp 0x4756e3
push 4
push str.8614
mov eax, dword [ebp + 0xc]
push eax
call fcn.004cd0c1
add esp, 0xc
test eax, eax
jne 0x47567a
push 8
push 0x578b6c
mov ecx, dword [ebp + 0xc]
add ecx, 6
push ecx
call fcn.004cd0c1
add esp, 0xc
neg eax
sbb eax, eax
add eax, 1
mov dword [ebp - 0x420], eax
jmp 0x4756e3
push 4
push str.8615
mov edx, dword [ebp + 0xc]
push edx
call fcn.004cd0c1
add esp, 0xc
test eax, eax
jne 0x4756e3
push 8
push 0x578b6c
mov eax, dword [ebp + 0xc]
add eax, 6
push eax
call fcn.004cd0c1
add esp, 0xc
test eax, eax
jne 0x4756b7
mov dword [ebp - 0x420], 1
jmp 0x4756c1
mov dword [ebp - 0x420], 0
push str.00000000
call fcn.004cbac0
add esp, 4
push eax
push str.00000000
mov ecx, dword [ebp + 0xc]
add ecx, 0x38
push ecx
call fcn.004cd0c1
add esp, 0xc
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov dword [ebp - 0x428], eax
cmp dword [ebp - 0x428], 0xffffffff
jne 0x475706
mov dword [ebp - 0x428], 0x82
push 0
mov eax, dword [ebp - 0x428]
push eax
push 3
push 0
push 3
push SysReAllocString
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x424], eax
cmp dword [ebp - 0x424], 0xffffffff
jne 0x47573a
xor eax, eax
jmp 0x475e4e
mov edx, dword [ebp - 0x424]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileType]
cmp eax, 1
je 0x475760
mov eax, dword [ebp - 0x424]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
jmp 0x475e4e
lea ecx, [ebp - 0x440]
push ecx
lea edx, [ebp - 0x41c]
push edx
lea eax, [ebp - 0x410]
push eax
mov ecx, dword [ebp - 0x424]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileTime]
mov edx, dword [ebp + 0x10]
push edx
lea eax, [ebp - 0x408]
push eax
call fcn.004cbaa1
add esp, 8
push str..t__
lea ecx, [ebp - 0x408]
push ecx
call fcn.004cba73
add esp, 8
push 0
push 0x80
push 2
push 0
push 0
push 0x40010000
lea edx, [ebp - 0x408]
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x438], eax
cmp dword [ebp - 0x438], 0xffffffff
jne 0x4757eb
mov eax, dword [ebp - 0x424]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
jmp 0x475e4e
push 0
mov ecx, dword [ebp - 0x424]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [ebp - 0x430], eax
push 4
push str.8615
mov edx, dword [ebp + 0xc]
push edx
call fcn.004cd0c1
add esp, 0xc
test eax, eax
jne 0x47582f
push 0
push 0
push 0x400
mov eax, dword [ebp - 0x424]
push eax
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
jmp 0x475848
push 0
push 0
mov ecx, dword [ebp + 0xc]
movzx edx, byte [ecx + 0x56]
push edx
mov eax, dword [ebp - 0x424]
push eax
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push 0x2800
call fcn.00485e90
add esp, 4
mov dword [ebp - 0x8a4], eax
mov ecx, dword [ebp - 0x8a4]
mov dword [ebp - 0x450], ecx
push 0
lea edx, [ebp - 0x444]
push edx
push 0x2800
mov eax, dword [ebp - 0x450]
push eax
mov ecx, dword [ebp - 0x424]
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov dword [ebp - 0x454], eax
cmp dword [ebp - 0x454], 0
je 0x4758a1
cmp dword [ebp - 0x444], 0
ja 0x4758ea
mov edx, dword [ebp - 0x450]
mov dword [ebp - 0x8a8], edx
mov eax, dword [ebp - 0x8a8]
push eax
call fcn.00485e9b
add esp, 4
mov ecx, dword [ebp - 0x438]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edx, dword [ebp - 0x424]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [ebp - 0x408]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
xor eax, eax
jmp 0x475e4e
push 0
push 0
push 0
mov ecx, dword [ebp - 0x438]
push ecx
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov dword [ebp - 0x434], 0
mov dword [ebp - 4], 0
cmp dword [ebp - 0x454], 0
je 0x475cbf
cmp dword [ebp - 0x444], 0
jbe 0x475cbf
push 4
push str.8610
mov edx, dword [ebp + 0xc]
push edx
call fcn.004cd0c1
add esp, 0xc
test eax, eax
jne 0x4759e1
mov dword [ebp - 0x458], 0
jmp 0x47595e
mov eax, dword [ebp - 0x458]
add eax, 1
mov dword [ebp - 0x458], eax
mov ecx, dword [ebp - 0x458]
cmp ecx, dword [ebp - 0x444]
jae 0x4759dc
mov edx, dword [ebp + 0xc]
add edx, dword [ebp - 0x434]
movzx eax, byte [edx + 0xe]
mov ecx, dword [ebp - 0x450]
add ecx, dword [ebp - 0x458]
movzx edx, byte [ecx]
xor edx, eax
mov eax, dword [ebp - 0x450]
add eax, dword [ebp - 0x458]
mov byte [eax], dl
mov ecx, dword [ebp + 0xc]
movzx edx, byte [ecx + 0x2c]
mov eax, dword [ebp - 0x450]
add eax, dword [ebp - 0x458]
movzx ecx, byte [eax]
sub ecx, edx
mov edx, dword [ebp - 0x450]
add edx, dword [ebp - 0x458]
mov byte [edx], cl
mov eax, dword [ebp - 0x434]
add eax, 1
mov ecx, dword [ebp + 0xc]
movzx ecx, byte [ecx + 0x2d]
cdq
idiv ecx
mov dword [ebp - 0x434], edx
jmp 0x47594f
jmp 0x475c6e
push 4
push str.8613
mov edx, dword [ebp + 0xc]
push edx
call fcn.004cd0c1
add esp, 0xc
test eax, eax
je 0x475a26
push 4
push str.8614
mov eax, dword [ebp + 0xc]
push eax
call fcn.004cd0c1
add esp, 0xc
test eax, eax
je 0x475a26
push 4
push str.8623
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.004cd0c1
add esp, 0xc
test eax, eax
jne 0x475a9b
mov dword [ebp - 0x45c], 0
jmp 0x475a41
mov edx, dword [ebp - 0x45c]
add edx, 1
mov dword [ebp - 0x45c], edx
mov eax, dword [ebp - 0x45c]
cmp eax, dword [ebp - 0x444]
jae 0x475a96
mov ecx, dword [ebp + 0xc]
add ecx, dword [ebp - 0x434]
movzx edx, byte [ecx + 0xe]
mov eax, dword [ebp - 0x450]
add eax, dword [ebp - 0x45c]
movzx ecx, byte [eax]
xor ecx, edx
mov edx, dword [ebp - 0x450]
add edx, dword [ebp - 0x45c]
mov byte [edx], cl
mov eax, dword [ebp - 0x434]
add eax, 1
mov ecx, dword [ebp + 0xc]
movzx ecx, byte [ecx + 0x2d]
cdq
idiv ecx
mov dword [ebp - 0x434], edx
jmp 0x475a32
jmp 0x475c6e
push 4
push str.8611
mov edx, dword [ebp + 0xc]
push edx
call fcn.004cd0c1
add esp, 0xc
test eax, eax
je 0x475acd
push 4
push str.8612
mov eax, dword [ebp + 0xc]
push eax
call fcn.004cd0c1
add esp, 0xc
test eax, eax
jne 0x475c0a
mov dword [ebp - 0x488], 0
jmp 0x475ae8
mov ecx, dword [ebp - 0x488]
add ecx, 1
mov dword [ebp - 0x488], ecx
mov edx, dword [ebp - 0x488]
cmp edx, dword [ebp - 0x444]
jae 0x475c08
mov dword [ebp - 0x490], 0
mov eax, dword [ebp - 4]
mov dword [ebp - 0x48c], eax
cmp dword [ebp - 0x48c], 0
je 0x475b56
mov eax, dword [ebp - 0x48c]
cdq
mov ecx, 0xa
idiv ecx
mov eax, dword [ebp - 0x490]
mov dword [ebp + eax*4 - 0x484], edx
mov ecx, dword [ebp - 0x490]
add ecx, 1
mov dword [ebp - 0x490], ecx
mov eax, dword [ebp - 0x48c]
cdq
mov ecx, 0xa
idiv ecx
mov dword [ebp - 0x48c], eax
jmp 0x475b0d
mov edx, dword [ebp - 4]
add edx, 1
mov dword [ebp - 4], edx
mov dword [ebp - 0x494], 0
jmp 0x475b7a
mov eax, dword [ebp - 0x494]
add eax, 1
mov dword [ebp - 0x494], eax
mov ecx, dword [ebp - 0x494]
cmp ecx, dword [ebp - 0x490]
jge 0x475bbe
mov edx, dword [ebp - 0x494]
mov eax, dword [ebp + edx*4 - 0x484]
mov ecx, dword [ebp + 0xc]
movzx edx, byte [ecx + eax + 0x2e]
mov eax, dword [ebp - 0x450]
add eax, dword [ebp - 0x488]
movzx ecx, byte [eax]
sub ecx, edx
mov edx, dword [ebp - 0x450]
add edx, dword [ebp - 0x488]
mov byte [edx], cl
jmp 0x475b6b
mov eax, dword [ebp + 0xc]
add eax, dword [ebp - 0x434]
movzx ecx, byte [eax + 0xe]
mov edx, dword [ebp - 0x450]
add edx, dword [ebp - 0x488]
movzx eax, byte [edx]
xor eax, ecx
mov ecx, dword [ebp - 0x450]
add ecx, dword [ebp - 0x488]
mov byte [ecx], al
mov eax, dword [ebp - 0x434]
add eax, 1
mov edx, dword [ebp + 0xc]
movzx ecx, byte [edx + 0x2d]
cdq
idiv ecx
mov dword [ebp - 0x434], edx
jmp 0x475ad9
jmp 0x475c6e
push 4
push str.8615
mov edx, dword [ebp + 0xc]
push edx
call fcn.004cd0c1
add esp, 0xc
test eax, eax
jne 0x475c6e
mov dword [ebp - 0x498], 0
jmp 0x475c3c
mov eax, dword [ebp - 0x498]
add eax, 1
mov dword [ebp - 0x498], eax
mov ecx, dword [ebp - 0x498]
cmp ecx, dword [ebp - 0x444]
jae 0x475c6e
mov edx, dword [ebp - 0x450]
add edx, dword [ebp - 0x498]
movzx eax, byte [edx]
xor eax, 0xa9
mov ecx, dword [ebp - 0x450]
add ecx, dword [ebp - 0x498]
mov byte [ecx], al
jmp 0x475c2d
push 0
lea edx, [ebp - 0x414]
push edx
mov eax, dword [ebp - 0x444]
push eax
mov ecx, dword [ebp - 0x450]
push ecx
mov edx, dword [ebp - 0x438]
push edx
call dword [sym.imp.KERNEL32.dll_WriteFile]
push 0
lea eax, [ebp - 0x444]
push eax
push 0x2800
mov ecx, dword [ebp - 0x450]
push ecx
mov edx, dword [ebp - 0x424]
push edx
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov dword [ebp - 0x454], eax
jmp 0x47590e
mov eax, dword [ebp - 0x450]
mov dword [ebp - 0x8ac], eax
mov ecx, dword [ebp - 0x8ac]
push ecx
call fcn.00485e9b
add esp, 4
push 0
mov edx, dword [ebp - 0x438]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [ebp - 0x42c], eax
mov eax, dword [ebp - 0x430]
sub eax, 0x400
cmp dword [ebp - 0x42c], eax
je 0x475d1d
mov ecx, dword [ebp + 0xc]
movzx edx, byte [ecx + 0x56]
mov eax, dword [ebp - 0x430]
sub eax, edx
cmp dword [ebp - 0x42c], eax
jne 0x475e25
lea ecx, [ebp - 0x440]
push ecx
lea edx, [ebp - 0x41c]
push edx
lea eax, [ebp - 0x410]
push eax
mov ecx, dword [ebp - 0x438]
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileTime]
mov edx, dword [ebp - 0x424]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x438]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp + 0x10]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov dword [ebp - 0x49c], eax
push 0x400
push 0
lea edx, [ebp - 0x8a0]
push edx
call fcn.004cb660
add esp, 0xc
mov eax, dword [ebp + 0x10]
push eax
lea ecx, [ebp - 0x8a0]
push ecx
call fcn.004cbaa1
add esp, 8
push str..div1
lea edx, [ebp - 0x8a0]
push edx
call fcn.004cba73
add esp, 8
push 3
push 0
push 0
lea eax, [ebp - 0x8a0]
push eax
mov ecx, dword [ebp + 0x10]
push ecx
call dword [sym.imp.KERNEL32.dll_MoveFileWithProgressW]
push 3
push 0
push 0
mov edx, dword [ebp + 0x10]
push edx
lea eax, [ebp - 0x408]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileWithProgressW]
test eax, eax
je 0x475dfb
push 0
lea ecx, [ebp - 0x8a0]
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
lea edx, [ebp - 0x8a0]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov eax, 1
jmp 0x475e4e
push 3
push 0
push 0
mov eax, dword [ebp + 0x10]
push eax
lea ecx, [ebp - 0x8a0]
push ecx
call dword [sym.imp.KERNEL32.dll_MoveFileWithProgressW]
lea edx, [ebp - 0x408]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
xor eax, eax
jmp 0x475e4e
mov eax, dword [ebp - 0x438]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp - 0x424]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea edx, [ebp - 0x408]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
xor eax, eax
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004ca80c
mov esp, ebp
pop ebp
ret