Function at 0x460d90
Capabilities:
Copy file
Delete file
Get common file path
Get file size
Set file attributes
Timestomp file
Write file on windows

Disassembly:
push edi
lea edi, [esp + 8]
and esp, 0xfffffff8
push dword [edi - 4]
push ebp
mov ebp, esp
push edi
push esi
lea eax, [ebp - 0x114]
push ebx
mov ebx, dword fs:[0x18]
sub esp, 0x478
mov dword [esp + 4], eax
mov dword [esp], 0x104
call dword [sym.imp.kernel32.dll_GetTempPathA]
sub esp, 8
mov dword [ebp - 0x440], eax
mov eax, 0xf0c
call fcn.0045b740
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], 0x598124
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x440]
xor eax, eax
test edx, edx
setne al
mov dword [esp], eax
call fcn.0045bef0
mov eax, 0xf0d
call fcn.0045b740
mov dword [esp + 4], 0x59813c
xor eax, eax
cmp dword [ebp - 0x440], 0x103
setbe al
mov dword [esp], eax
call fcn.0045bef0
mov edi, dword [sym.imp.kernel32.dll_GetTempFileNameA]
lea eax, [ebp - 0x420]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x114]
mov dword [esp + 4], 0x59dcd0
mov dword [esp], eax
mov dword [ebp - 0x44c], edi
call edi
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0xf10
call fcn.0045b740
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.GetTempFileNameA_error__replaced___ld_n
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0x440]
xor eax, eax
test ecx, ecx
setne al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x31c]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x114]
mov dword [esp + 4], 0x59dcd0
mov dword [esp], eax
call edi
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0xf13
call fcn.0045b740
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.GetTempFileNameA_error__replacement___ld_n
mov dword [esp + 8], eax
mov esi, dword [ebp - 0x440]
xor eax, eax
test esi, esi
setne al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x218]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x114]
mov dword [esp + 4], 0x59dcd0
mov dword [esp], eax
call edi
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0xf16
call fcn.0045b740
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.GetTempFileNameA_error__backup___ld_n
mov dword [esp + 8], eax
mov edi, dword [ebp - 0x440]
xor eax, eax
test edi, edi
setne al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x420]
mov dword [esp + 0x18], 0
mov dword [esp], eax
mov eax, dword [sym.imp.kernel32.dll_CreateFileA]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x40000000
mov dword [ebp - 0x448], eax
call eax
sub esp, 0x1c
mov esi, eax
mov eax, 0xf1a
call fcn.0045b740
xor eax, eax
cmp esi, 0xffffffff
mov dword [esp + 4], str.failed_to_open_replaced_file_n
setne al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x440]
mov dword [esp], esi
mov edi, dword [sym.imp.kernel32.dll_WriteFile]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10
mov dword [esp + 4], str.file_to_replace
call edi
mov dword [ebp - 0x444], eax
sub esp, 0x14
mov eax, 0xf1d
call fcn.0045b740
mov edx, dword [ebp - 0x444]
mov eax, dword [ebx + 0x34]
test edx, edx
je 0x46100b
xor edx, edx
cmp dword [ebp - 0x440], 0x10
sete dl
mov dword [esp], edx
mov dword [esp + 8], eax
mov dword [esp + 4], str.WriteFile_error__replaced___ld_n
call fcn.0045bef0
mov eax, 0xf1f
call fcn.0045b740
mov eax, dword [sym.imp.kernel32.dll_GetFileSize]
mov dword [esp + 4], 0
mov dword [esp], esi
mov dword [ebp - 0x458], eax
call eax
sub esp, 8
cmp eax, 0x10
sete al
mov dword [esp + 4], str.replaced_file_has_wrong_size_n
movzx eax, al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x31c]
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x40000000
mov dword [esp], eax
mov eax, dword [ebp - 0x448]
call eax
sub esp, 0x1c
mov ebx, eax
mov dword [ebp - 0x444], eax
mov eax, 0xf23
call fcn.0045b740
xor eax, eax
cmp ebx, 0xffffffff
mov dword [esp + 4], str.failed_to_open_replacement_file_n
setne al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x440]
mov dword [esp], ebx
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 9
mov dword [esp + 4], str.new_file
call edi
sub esp, 0x14
mov ebx, eax
mov eax, 0xf26
call fcn.0045b740
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
test ebx, ebx
je 0x46111a
xor ebx, ebx
cmp dword [ebp - 0x440], 9
sete bl
mov dword [esp + 8], eax
mov dword [esp], ebx
mov dword [esp + 4], str.WriteFile_error__replacement___ld_n
call fcn.0045bef0
mov eax, 0xf28
call fcn.0045b740
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x444]
mov dword [esp], eax
mov eax, dword [ebp - 0x458]
call eax
sub esp, 8
cmp eax, 9
sete al
mov dword [esp + 4], str.replacement_file_has_wrong_size_n
movzx eax, al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x218]
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x40000000
mov dword [esp], eax
mov eax, dword [ebp - 0x448]
call eax
sub esp, 0x1c
mov ebx, eax
mov eax, 0xf2c
call fcn.0045b740
xor eax, eax
cmp ebx, 0xffffffff
mov dword [esp + 4], str.failed_to_open_backup_file_n
setne al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x440]
mov dword [esp], ebx
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0xc
mov dword [esp + 4], str.backup_file
call edi
sub esp, 0x14
mov edi, eax
mov eax, 0xf2f
call fcn.0045b740
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
test edi, edi
je 0x461226
xor ecx, ecx
cmp dword [ebp - 0x440], 0xc
sete cl
mov edi, ecx
mov dword [esp + 8], eax
mov dword [esp], edi
lea edi, [ebp - 0x438]
mov dword [esp + 4], str.WriteFile_error__replacement___ld_n
call fcn.0045bef0
mov eax, 0xf31
call fcn.0045b740
mov dword [esp], ebx
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x458]
call eax
sub esp, 8
cmp eax, 0xc
sete al
mov dword [esp + 4], str.backup_file_has_wrong_size_n
movzx eax, al
mov dword [esp], eax
call fcn.0045bef0
mov eax, dword [sym.imp.kernel32.dll_GetFileTime]
mov dword [esp], esi
mov dword [esp + 0xc], edi
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [ebp - 0x454], eax
call eax
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0xf35
call fcn.0045b740
mov edi, dword fs:[0x18]
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetFileTime_error__replaced___ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
lea edx, [ebp - 0x438]
sub dword [ebp - 0x438], 0x23c34600
mov dword [esp + 0xc], edx
mov edx, dword [sym.imp.kernel32.dll_SetFileTime]
mov dword [esp], esi
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [ebp - 0x45c], edx
call edx
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0xf38
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.SetFileTime_error__replaced___ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
lea edx, [ebp - 0x438]
mov dword [esp], esi
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x454]
call eax
mov ecx, dword [sym.imp.kernel32.dll_CloseHandle]
sub esp, 0x10
mov dword [esp], esi
lea esi, [ebp - 0x428]
mov dword [ebp - 0x450], ecx
call ecx
sub esp, 4
mov dword [esp], ebx
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x454]
call eax
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0xf3d
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetFileTime_error__backup___ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
sub dword [ebp - 0x428], 0x47868c00
mov dword [esp], ebx
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov edx, dword [ebp - 0x45c]
call edx
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0xf40
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.SetFileTime_error__backup___ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
mov dword [esp], ebx
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x454]
call eax
sub esp, 0x10
mov dword [esp], ebx
mov ebx, dword [ebp - 0x450]
call ebx
lea eax, [ebp - 0x430]
sub esp, 4
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov edx, dword [ebp - 0x444]
mov dword [esp], edx
mov eax, dword [ebp - 0x454]
call eax
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0xf45
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetFileTime_error__replacement___ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
mov edx, dword [ebp - 0x444]
mov dword [esp], edx
call ebx
lea edx, [ebp - 0x218]
mov dword [edi + 0x34], 0xdeadbeef
sub esp, 4
mov dword [esp + 8], edx
lea edx, [ebp - 0x31c]
mov dword [esp + 4], edx
lea edx, [ebp - 0x420]
mov dword [esp], edx
mov edx, dword [sym.imp.kernel32.dll_ReplaceFileA]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [ebp - 0x444], edx
call edx
sub esp, 0x18
mov dword [ebp - 0x440], eax
mov eax, 0xf4d
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.ReplaceFileA:_unexpected_error__ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
lea edx, [ebp - 0x218]
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], 0x80000000
mov dword [esp], edx
mov edx, dword [ebp - 0x448]
call edx
sub esp, 0x1c
mov ebx, eax
mov eax, 0xf50
call fcn.0045b740
xor eax, eax
cmp ebx, 0xffffffff
mov dword [esp + 4], str.failed_to_open_backup_file_n
setne al
mov dword [esp], eax
call fcn.0045bef0
mov dword [esp + 4], 0
mov dword [ebp - 0x45c], ebx
mov dword [esp], ebx
mov ecx, dword [ebp - 0x458]
call ecx
sub esp, 8
mov dword [ebp - 0x440], eax
mov eax, 0xf53
call fcn.0045b740
mov eax, dword [ebp - 0x440]
mov dword [esp + 4], str.backup_file_has_wrong_size__ld_n
cmp eax, 0x10
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0045bef0
lea ecx, [ebp - 0x420]
mov dword [esp + 0x18], 0
mov dword [esp], ecx
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], 0x80000000
mov edx, dword [ebp - 0x448]
call edx
sub esp, 0x1c
mov ebx, eax
mov dword [ebp - 0x460], eax
mov eax, 0xf57
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.failed_to_open_replaced_file:__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp ebx, 0xffffffff
setne al
mov dword [esp], eax
call fcn.0045bef0
cmp ebx, 0xffffffff
je 0x462810
mov dword [esp], ebx
mov dword [esp + 4], 0
mov ecx, dword [ebp - 0x458]
call ecx
sub esp, 8
mov dword [ebp - 0x440], eax
mov eax, 0xf5c
call fcn.0045b740
mov eax, dword [ebp - 0x440]
mov dword [esp + 4], str.replaced_file_has_wrong_size__ld_n
cmp eax, 9
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0045bef0
lea ecx, [ebp - 0x31c]
mov dword [esp + 0x18], 0
mov dword [esp], ecx
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], 0x80000000
mov edx, dword [ebp - 0x448]
call edx
sub esp, 0x1c
mov ebx, eax
mov eax, 0xf60
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.unexpected_error__replacement_file_should_not_exist__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp ebx, 0xffffffff
sete al
mov dword [esp], eax
call fcn.0045bef0
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov ebx, dword [ebp - 0x45c]
mov dword [esp], ebx
mov eax, dword [ebp - 0x454]
call eax
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0xf64
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetFileTime_error__backup__ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
mov eax, 0xf65
call fcn.0045b740
mov eax, dword [ebp - 0x428]
mov ecx, dword [ebp - 0x438]
mov ebx, dword [ebp - 0x434]
mov edx, dword [ebp - 0x424]
cmp ecx, eax
mov edi, ebx
sbb edi, edx
jb 0x462780
sub ecx, eax
sbb ebx, edx
mov esi, ecx
mov edi, ebx
mov eax, 0x1312d00
mov dword [esp + 4], str.backup_file_has_wrong_filetime_n
cmp eax, esi
mov eax, 0
sbb eax, edi
setae al
movzx eax, al
mov dword [esp], eax
call fcn.0045bef0
mov eax, dword [ebp - 0x45c]
mov dword [esp], eax
mov eax, dword [ebp - 0x450]
call eax
lea eax, [ebp - 0x438]
sub esp, 4
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x460]
mov dword [esp], eax
mov eax, dword [ebp - 0x454]
call eax
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0xf69
call fcn.0045b740
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 4], str.GetFileTime_error__backup__ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
mov eax, 0xf6a
call fcn.0045b740
mov eax, dword [ebp - 0x430]
mov edi, dword [ebp - 0x434]
mov ecx, dword [ebp - 0x430]
mov ebx, dword [ebp - 0x42c]
mov dword [ebp - 0x454], eax
mov eax, dword [ebp - 0x42c]
mov edx, dword [ebp - 0x434]
mov dword [ebp - 0x464], edi
mov edi, ebx
mov dword [ebp - 0x458], eax
mov eax, dword [ebp - 0x438]
mov dword [ebp - 0x45c], eax
mov eax, dword [ebp - 0x438]
cmp ecx, eax
sbb edi, edx
jae 0x462790
sub eax, ecx
sbb edx, ebx
mov esi, eax
mov edi, edx
mov eax, dword [ebp - 0x454]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x458]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x45c]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x464]
mov dword [esp + 4], str.replaced_file_has_wrong_filetime__lx_08lx____lx_08lx_n
mov dword [esp + 8], eax
mov eax, 0x1312d00
cmp eax, esi
mov eax, 0
sbb eax, edi
setae al
movzx eax, al
mov dword [esp], eax
call fcn.0045bef0
mov eax, dword [ebp - 0x460]
mov dword [esp], eax
mov eax, dword [ebp - 0x450]
call eax
sub esp, 4
lea eax, [ebp - 0x31c]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x114]
mov dword [esp + 4], 0x59dcd0
mov dword [esp], eax
mov eax, dword [ebp - 0x44c]
call eax
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0xf75
call fcn.0045b740
mov ebx, dword fs:[0x18]
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.GetTempFileNameA_error__replacement___ld_n
mov dword [esp + 8], eax
mov esi, dword [ebp - 0x440]
xor eax, eax
test esi, esi
setne al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x31c]
mov dword [ebx + 0x34], 0xdeadbeef
mov dword [esp + 4], eax
lea eax, [ebp - 0x420]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp], eax
mov eax, dword [ebp - 0x444]
call eax
mov dword [ebp - 0x440], eax
sub esp, 0x18
mov eax, 0xf7b
call fcn.0045b740
mov edi, dword [ebp - 0x440]
mov edx, dword [ebx + 0x34]
mov eax, 1
test edi, edi
jne 0x4619e5
xor eax, eax
cmp edx, 5
sete al
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.ReplaceFileA:_unexpected_error__ld_n
mov ebx, dword fs:[0x18]
call fcn.0045bef0
lea eax, [ebp - 0x31c]
mov edi, dword [sym.imp.kernel32.dll_DeleteFileA]
mov dword [esp], eax
call edi
lea eax, [ebp - 0x31c]
sub esp, 4
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x114]
mov dword [esp + 8], 0
mov dword [esp + 4], 0x59dcd0
mov dword [esp], eax
mov eax, dword [ebp - 0x44c]
call eax
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0xf81
call fcn.0045b740
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.GetTempFileNameA_error__replacement___ld_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x440]
xor eax, eax
test edx, edx
setne al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x218]
mov dword [esp], eax
call edi
sub esp, 4
mov dword [ebp - 0x440], eax
mov eax, 0xf83
call fcn.0045b740
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.DeleteFileA:_error__backup___ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x218]
mov dword [ebx + 0x34], 0xdeadbeef
mov dword [esp + 8], eax
lea eax, [ebp - 0x31c]
mov dword [esp + 4], eax
lea eax, [ebp - 0x420]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp], eax
mov eax, dword [ebp - 0x444]
call eax
mov dword [ebp - 0x440], eax
sub esp, 0x18
mov eax, 0xf89
call fcn.0045b740
mov ecx, dword [ebp - 0x440]
mov edx, dword [ebx + 0x34]
mov eax, 1
test ecx, ecx
jne 0x461b22
xor eax, eax
cmp edx, 5
sete al
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.ReplaceFileA:_unexpected_error__ld_n
mov esi, dword fs:[0x18]
call fcn.0045bef0
mov eax, dword [ebp - 0x440]
mov dword [ebp - 0x454], eax
lea eax, [ebp - 0x31c]
mov dword [esp], eax
call edi
lea eax, [ebp - 0x31c]
sub esp, 4
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x114]
mov dword [esp + 8], 0
mov dword [esp + 4], 0x59dcd0
mov dword [esp], eax
mov eax, dword [ebp - 0x44c]
call eax
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0xf91
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.GetTempFileNameA_error__replacement___ld_n
mov dword [esp + 8], eax
mov ebx, dword [ebp - 0x440]
xor eax, eax
test ebx, ebx
setne al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x420]
mov dword [esp + 4], 1
mov ebx, dword [sym.imp.kernel32.dll_SetFileAttributesA]
mov dword [esp], eax
call ebx
mov dword [ebp - 0x440], eax
sub esp, 8
mov eax, 0xf93
call fcn.0045b740
mov edx, dword [esi + 0x34]
mov esi, dword [ebp - 0x440]
mov eax, 1
test esi, esi
jne 0x461bff
xor eax, eax
cmp edx, 5
sete al
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.SetFileAttributesA:_error_setting_to_read_only__ld_n
mov esi, dword fs:[0x18]
call fcn.0045bef0
lea eax, [ebp - 0x218]
mov dword [esi + 0x34], 0xdeadbeef
mov dword [esp + 8], eax
lea eax, [ebp - 0x31c]
mov dword [esp + 4], eax
lea eax, [ebp - 0x420]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp], eax
mov eax, dword [ebp - 0x444]
call eax
mov dword [ebp - 0x440], eax
sub esp, 0x18
mov eax, 0xf9a
call fcn.0045b740
mov ecx, dword [ebp - 0x440]
mov edx, dword [esi + 0x34]
xor eax, eax
test ecx, ecx
jne 0x461c88
xor eax, eax
cmp edx, 5
sete al
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.ReplaceFileA:_unexpected_error__ld_n
call fcn.0045bef0
lea eax, [ebp - 0x31c]
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], 0x80000000
mov dword [esp], eax
mov eax, dword [ebp - 0x448]
call eax
sub esp, 0x1c
mov esi, eax
mov eax, 0xf9d
call fcn.0045b740
mov eax, 1
mov ecx, dword fs:[0x18]
mov edx, dword [ecx + 0x34]
cmp esi, 0xffffffff
je 0x4627f0
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.unexpected_error__replacement_file_should_still_exist__ld_n
call fcn.0045bef0
mov dword [esp], esi
mov eax, dword [ebp - 0x450]
call eax
lea eax, [ebp - 0x420]
sub esp, 4
mov dword [esp + 4], pe_nt_image_headers32
mov dword [esp], eax
call ebx
mov dword [ebp - 0x440], eax
sub esp, 8
mov eax, 0xfa2
call fcn.0045b740
mov esi, dword [ebp - 0x440]
mov eax, 1
mov edx, dword fs:[0x18]
mov ecx, dword [edx + 0x34]
test esi, esi
jne 0x461d6d
xor eax, eax
cmp ecx, 5
sete al
mov dword [esp + 8], ecx
mov dword [esp], eax
mov dword [esp + 4], str.SetFileAttributesA:_error_setting_to_normal__ld_n
mov esi, dword fs:[0x18]
call fcn.0045bef0
lea eax, [ebp - 0x31c]
mov dword [esp], eax
call edi
lea eax, [ebp - 0x31c]
sub esp, 4
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x114]
mov dword [esp + 8], 0
mov dword [esp + 4], 0x59dcd0
mov dword [esp], eax
mov eax, dword [ebp - 0x44c]
call eax
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0xfa8
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.GetTempFileNameA_error__replacement___lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x440]
xor eax, eax
test edx, edx
setne al
mov dword [esp], eax
call fcn.0045bef0
lea ecx, [ebp - 0x31c]
mov dword [esp + 4], 1
mov dword [esp], ecx
call ebx
sub esp, 8
mov dword [ebp - 0x440], eax
mov eax, 0xfaa
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.SetFileAttributesA:_error_setting_to_readonly__lx_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
lea ecx, [ebp - 0x31c]
mov dword [esp + 0x14], 0
mov dword [esp + 4], ecx
lea ecx, [ebp - 0x420]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp], ecx
mov ecx, dword [ebp - 0x444]
call ecx
sub esp, 0x18
mov dword [ebp - 0x440], eax
mov eax, 0xfac
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.ReplaceFileA:_unexpected_error__lx_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [esi + 0x34], 5
sete al
mov dword [esp], eax
call fcn.0045bef0
lea edx, [ebp - 0x31c]
mov dword [esp + 4], pe_nt_image_headers32
mov dword [esp], edx
call ebx
sub esp, 8
mov dword [ebp - 0x440], eax
mov eax, 0xfae
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.SetFileAttributesA:_error_setting_to_normal__lx_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
lea edx, [ebp - 0x31c]
mov dword [esp], edx
call edi
lea edx, [ebp - 0x31c]
sub esp, 4
mov dword [esp + 0xc], edx
lea edx, [ebp - 0x114]
mov dword [esp], edx
mov dword [esp + 8], 0
mov dword [esp + 4], 0x59dcd0
mov eax, dword [ebp - 0x44c]
call eax
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0xfb6
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.GetTempFileNameA_error__replacement___ld_n
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0x440]
xor eax, eax
test ecx, ecx
setne al
mov dword [esp], eax
call fcn.0045bef0
lea edx, [ebp - 0x420]
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 5
mov dword [esp + 4], 0x80100000
mov dword [esp], edx
mov edx, dword [ebp - 0x448]
call edx
sub esp, 0x1c
mov ebx, eax
mov eax, 0xfba
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.unexpected_error__replaced_file_should_be_able_to_be_opened__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp ebx, 0xffffffff
setne al
mov dword [esp], eax
call fcn.0045bef0
lea ecx, [ebp - 0x31c]
mov dword [esp + 0x14], 0
mov dword [esp + 4], ecx
lea ecx, [ebp - 0x420]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp], ecx
mov ecx, dword [ebp - 0x444]
call ecx
sub esp, 0x18
mov dword [ebp - 0x440], eax
mov eax, 0xfbe
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.ReplaceFileA:_unexpected_error__ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
mov dword [esp], ebx
mov ebx, dword [ebp - 0x450]
call ebx
lea edx, [ebp - 0x31c]
sub esp, 4
mov dword [esp + 0xc], edx
lea edx, [ebp - 0x114]
mov dword [esp], edx
mov dword [esp + 8], 0
mov dword [esp + 4], 0x59dcd0
mov eax, dword [ebp - 0x44c]
call eax
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0xfc3
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.GetTempFileNameA_error__replacement___ld_n
mov dword [esp + 8], eax
mov ebx, dword [ebp - 0x440]
xor eax, eax
test ebx, ebx
setne al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x31c]
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 5
mov dword [esp + 4], 0x80100000
mov dword [esp], eax
mov edx, dword [ebp - 0x448]
call edx
sub esp, 0x1c
mov ebx, eax
mov eax, 0xfc5
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.unexpected_error__replacement_file_should_be_able_to_be_opened__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp ebx, 0xffffffff
setne al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x31c]
mov dword [esp + 0x14], 0
mov dword [esp + 4], eax
lea eax, [ebp - 0x420]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp], eax
mov ecx, dword [ebp - 0x444]
call ecx
sub esp, 0x18
mov dword [ebp - 0x440], eax
mov eax, 0xfc8
call fcn.0045b740
mov dword [esp + 4], str.expect_failure_n
xor eax, eax
mov edx, dword [ebp - 0x440]
test edx, edx
sete al
mov dword [esp], eax
call fcn.0045bef0
mov eax, 0xfc9
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.expect_ERROR_SHARING_VIOLATION__got__lx._n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [esi + 0x34], 0x20
sete al
mov dword [esp], eax
call fcn.0045bef0
mov dword [esp], ebx
mov ebx, dword [ebp - 0x450]
call ebx
lea eax, [ebp - 0x420]
sub esp, 4
mov dword [esp], eax
call edi
mov dword [ebp - 0x440], eax
sub esp, 4
mov eax, 0xfce
call fcn.0045b740
mov ecx, dword [ebp - 0x440]
mov edx, dword [esi + 0x34]
mov eax, 1
test ecx, ecx
jne 0x4621f0
xor eax, eax
cmp edx, 5
sete al
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.DeleteFileA:_error__replaced___ld_n
mov ebx, dword fs:[0x18]
call fcn.0045bef0
lea eax, [ebp - 0x218]
mov dword [ebx + 0x34], 0xdeadbeef
mov dword [esp + 8], eax
lea eax, [ebp - 0x31c]
mov dword [esp + 4], eax
lea eax, [ebp - 0x420]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp], eax
mov eax, dword [ebp - 0x444]
call eax
mov dword [ebp - 0x440], eax
sub esp, 0x18
mov eax, 0xfd5
call fcn.0045b740
mov edx, dword [ebx + 0x34]
mov ebx, dword [ebp - 0x440]
xor eax, eax
test ebx, ebx
jne 0x462283
mov eax, 1
cmp edx, 2
je 0x462283
xor eax, eax
cmp edx, 5
sete al
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.ReplaceFileA:_unexpected_error__ld_n
mov ebx, dword fs:[0x18]
call fcn.0045bef0
lea eax, [ebp - 0x31c]
mov dword [ebx + 0x34], 0xdeadbeef
mov dword [esp + 4], eax
lea eax, [ebp - 0x420]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp], eax
mov eax, dword [ebp - 0x444]
call eax
mov dword [ebp - 0x440], eax
sub esp, 0x18
mov eax, 0xfde
call fcn.0045b740
mov ecx, dword [ebp - 0x440]
mov edx, dword [ebx + 0x34]
xor eax, eax
test ecx, ecx
jne 0x462314
mov eax, 1
cmp edx, 2
je 0x462314
xor eax, eax
cmp edx, 5
sete al
mov dword [esp], eax
mov dword [esp + 8], edx
mov dword [esp + 4], str.ReplaceFileA:_unexpected_error__ld_n
call fcn.0045bef0
lea eax, [ebp - 0x31c]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x454]
sub esp, 4
test eax, eax
jne 0x4627a0
lea eax, [ebp - 0x420]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x114]
mov dword [esp + 4], 0x59dcd0
mov dword [esp], eax
mov eax, dword [ebp - 0x44c]
call eax
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0xff3
mov esi, dword fs:[0x18]
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], 0x5995e7
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
lea ecx, [ebp - 0x420]
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], ecx
mov ecx, dword [ebp - 0x448]
call ecx
sub esp, 0x1c
mov ebx, eax
mov eax, 0xff5
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], 0x5995e7
mov dword [esp + 8], eax
xor eax, eax
cmp ebx, 0xffffffff
setne al
mov dword [esp], eax
call fcn.0045bef0
lea edx, [ebp - 0x31c]
mov dword [esp + 8], 0
mov dword [esp + 0xc], edx
lea edx, [ebp - 0x114]
mov dword [esp], edx
mov dword [esp + 4], 0x59dcd0
mov eax, dword [ebp - 0x44c]
call eax
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0xff8
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], 0x5995e7
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
lea edx, [ebp - 0x31c]
mov dword [esp + 0x14], 0
mov dword [esp + 4], edx
lea edx, [ebp - 0x420]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp], edx
mov edx, dword [ebp - 0x444]
call edx
sub esp, 0x18
mov dword [ebp - 0x440], eax
mov eax, 0xffb
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], 0x5995e7
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
mov dword [esp], ebx
mov edx, dword [ebp - 0x450]
lea ebx, [ebp - 0x420]
call edx
sub esp, 4
mov dword [esp], ebx
call edi
sub esp, 4
mov dword [ebp - 0x440], eax
mov eax, 0xfff
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], 0x5995e7
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x43c]
mov dword [esp], eax
call fcn.0057d960
mov dword [esp + 4], ebx
mov dword [esp + 8], 0
mov eax, dword [ebp - 0x43c]
mov eax, dword [eax]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CopyFileA]
sub esp, 0xc
mov dword [ebp - 0x440], eax
mov eax, 0x1004
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], 0x5995e7
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
mov dword [esp], ebx
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 5
mov dword [esp + 4], 0x80000000
mov ecx, dword [ebp - 0x448]
call ecx
sub esp, 0x1c
mov ebx, eax
mov eax, 0x1007
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], 0x5995e7
mov dword [esp + 8], eax
xor eax, eax
cmp ebx, 0xffffffff
setne al
mov dword [esp], eax
call fcn.0045bef0
mov dword [esp], ebx
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x1000002
mov dword [esp + 4], 0
call dword [sym.imp.kernel32.dll_CreateFileMappingA]
sub esp, 0x18
mov dword [ebp - 0x448], eax
mov eax, 0x100a
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], 0x5995e7
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x448]
xor eax, eax
test edx, edx
setne al
mov dword [esp], eax
call fcn.0045bef0
lea ecx, [ebp - 0x31c]
mov dword [esp + 8], 0
mov dword [esp + 0xc], ecx
lea ecx, [ebp - 0x114]
mov dword [esp], ecx
mov dword [esp + 4], 0x59dcd0
mov eax, dword [ebp - 0x44c]
call eax
sub esp, 0x10
mov dword [ebp - 0x440], eax
mov eax, 0x100d
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], 0x5995e7
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x31c]
mov dword [esp + 0x14], 0
mov dword [esp + 4], eax
lea eax, [ebp - 0x420]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp], eax
mov eax, dword [ebp - 0x444]
call eax
sub esp, 0x18
mov dword [ebp - 0x440], eax
mov eax, 0x1010
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], 0x5995e7
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
mov ecx, dword [ebp - 0x448]
mov dword [esp], ecx
mov edx, dword [ebp - 0x450]
call edx
sub esp, 4
mov dword [esp], ebx
mov edx, dword [ebp - 0x450]
call edx
lea eax, [ebp - 0x420]
sub esp, 4
mov dword [esp], eax
call edi
sub esp, 4
mov dword [ebp - 0x440], eax
mov eax, 0x1015
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], 0x5995e7
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x440]
mov dword [esp], eax
call fcn.0045bef0
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
lea esp, [edi - 8]
pop edi
ret
sub eax, ecx
sbb edx, ebx
mov esi, eax
mov edi, edx
jmp 0x4617ae
sub ecx, eax
sbb ebx, edx
mov esi, ecx
mov edi, ebx
jmp 0x4618ad
lea eax, [ebp - 0x218]
mov dword [esp], eax
call edi
mov dword [ebp - 0x440], eax
sub esp, 4
mov eax, 0xfed
call fcn.0045b740
mov esi, dword [ebp - 0x440]
mov eax, 1
mov ecx, dword fs:[0x18]
mov edx, dword [ecx + 0x34]
test esi, esi
je 0x462830
mov dword [esp + 8], edx
mov dword [esp + 4], str.DeleteFileA:_error__backup___ld_n
mov dword [esp], eax
call fcn.0045bef0
jmp 0x462344
cmp edx, 2
sete cl
xor eax, eax
cmp dword [0x8f0770], 0
sete al
and eax, ecx
jmp 0x461d04
mov eax, 0xf71
call fcn.0045b740
mov dword [esp], str.couldnt_open_replacement_file__skipping_tests_n
call fcn.0045b8a0
jmp 0x46190d
mov ebx, dword [0x8f0770]
cmp edx, 5
sete cl
xor eax, eax
test ebx, ebx
sete al
and eax, ecx
jmp 0x4627d7