Function at 0x45cac0
Capabilities:
Check if file exists
Copy file
Delete file
Get common file path
Get file attributes
Get file size
Read file on windows
Set file attributes
Timestomp file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
lea ebx, [ebp - 0x318]
mov edi, dword fs:[0x18]
sub esp, 0x360
mov dword [esp + 4], ebx
mov dword [esp], 0x104
call dword [sym.imp.kernel32.dll_GetTempPathA]
sub esp, 8
mov dword [ebp - 0x338], eax
mov eax, 0x2b4
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x598124
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x338]
xor eax, eax
test edx, edx
setne al
mov dword [esp], eax
call fcn.0045bef0
mov eax, 0x2b5
call fcn.0045b740
mov dword [esp + 4], 0x59813c
xor eax, eax
cmp dword [ebp - 0x338], 0x103
setbe al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x214]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
mov eax, dword [sym.imp.kernel32.dll_GetTempFileNameA]
mov dword [esp + 4], 0x59ee3c
mov dword [esp], ebx
mov dword [ebp - 0x350], eax
call eax
sub esp, 0x10
mov dword [ebp - 0x338], eax
mov eax, 0x2b8
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x598160
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0x338]
xor eax, eax
test ecx, ecx
setne al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x214]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], eax
mov eax, dword [sym.imp.kernel32.dll_CopyFileA]
mov dword [ebp - 0x33c], eax
call eax
sub esp, 0xc
mov esi, eax
mov eax, 0x2bc
call fcn.0045b740
mov edx, dword [edi + 0x34]
xor eax, eax
test esi, esi
jne 0x45cc03
mov eax, 1
cmp edx, 0x20
je 0x45cc03
mov eax, dword [0x8f0770]
test eax, eax
sete cl
xor eax, eax
cmp edx, 0x50
sete al
and eax, ecx
mov dword [esp + 0xc], edx
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.copying_a_file_to_itself_didnt_fail__ret_d__err_ld__n
call fcn.0045bef0
lea eax, [ebp - 0x214]
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 - 0x340], eax
call eax
sub esp, 0x1c
mov esi, eax
mov eax, 0x2c1
call fcn.0045b740
xor eax, eax
cmp esi, 0xffffffff
mov dword [esp + 4], str.failed_to_open_source_file_n
setne al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x338]
mov dword [esp], esi
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 4
mov dword [esp + 4], 0x59ee3c
call dword [sym.imp.kernel32.dll_WriteFile]
sub esp, 0x14
mov edi, eax
mov eax, 0x2c3
call fcn.0045b740
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
test edi, edi
je 0x45ccdd
xor ecx, ecx
cmp dword [ebp - 0x338], 4
sete cl
mov edi, ecx
mov dword [esp + 8], eax
mov dword [esp], edi
mov dword [esp + 4], 0x5981d0
call fcn.0045bef0
mov eax, 0x2c5
call fcn.0045b740
mov eax, dword [sym.imp.kernel32.dll_GetFileSize]
mov dword [esp], esi
mov dword [esp + 4], 0
mov dword [ebp - 0x34c], eax
call eax
sub esp, 8
cmp eax, 4
sete al
mov dword [esp + 4], str.source_file_has_wrong_size_n
movzx eax, al
mov dword [esp], eax
mov edi, dword fs:[0x18]
call fcn.0045bef0
lea eax, [ebp - 0x334]
mov dword [esp], esi
mov dword [esp + 0xc], eax
mov eax, dword [sym.imp.kernel32.dll_GetFileTime]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [ebp - 0x348], eax
call eax
sub esp, 0x10
mov dword [ebp - 0x338], eax
mov eax, 0x2c8
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetFileTime_error__ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x338]
mov dword [esp], eax
call fcn.0045bef0
lea ecx, [ebp - 0x334]
sub dword [ebp - 0x334], 0x23c34600
mov dword [esp + 0xc], ecx
mov dword [esp], esi
mov dword [esp + 8], 0
mov dword [esp + 4], 0
call dword [sym.imp.kernel32.dll_SetFileTime]
sub esp, 0x10
mov dword [ebp - 0x338], eax
mov eax, 0x2cb
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.SetFileTime_error__ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x338]
mov dword [esp], eax
call fcn.0045bef0
lea ecx, [ebp - 0x334]
mov dword [esp], esi
mov dword [esp + 0xc], ecx
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x348]
call eax
mov eax, dword [sym.imp.kernel32.dll_CloseHandle]
sub esp, 0x10
mov dword [esp], esi
mov dword [ebp - 0x344], eax
call eax
lea eax, [ebp - 0x110]
sub esp, 4
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0x59ee3c
mov dword [esp], ebx
mov eax, dword [ebp - 0x350]
call eax
sub esp, 0x10
mov dword [ebp - 0x338], eax
mov eax, 0x2d0
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x598160
mov dword [esp + 8], eax
mov esi, dword [ebp - 0x338]
xor eax, eax
test esi, esi
setne al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x110]
mov dword [edi + 0x34], 0xdeadbeef
mov dword [esp + 4], eax
lea eax, [ebp - 0x214]
mov dword [esp + 8], 1
mov dword [esp], eax
mov eax, dword [ebp - 0x33c]
call eax
mov dword [ebp - 0x338], eax
sub esp, 0xc
mov eax, 0x2d4
call fcn.0045b740
mov edx, dword [edi + 0x34]
mov edi, dword [ebp - 0x338]
xor eax, eax
test edi, edi
jne 0x45ced8
xor eax, eax
cmp edx, 0x50
sete al
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.CopyFileA:_unexpected_error__ld_n
mov esi, dword fs:[0x18]
call fcn.0045bef0
lea eax, [ebp - 0x110]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
lea eax, [ebp - 0x214]
mov dword [esp], eax
mov ebx, dword [ebp - 0x33c]
call ebx
sub esp, 0xc
mov dword [ebp - 0x338], eax
mov eax, 0x2d8
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CopyFileA:_error__ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x338]
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x110]
mov dword [esp + 8], 1
mov dword [esp + 4], eax
mov dword [esp], 0
call ebx
sub esp, 0xc
mov ebx, eax
mov eax, 0x2dc
call fcn.0045b740
mov edx, dword [esi + 0x34]
xor eax, eax
test ebx, ebx
jne 0x45cf81
xor eax, eax
cmp edx, 3
sete al
mov dword [esp + 0xc], edx
mov dword [esp + 8], ebx
mov dword [esp], eax
mov dword [esp + 4], str.CopyFileA:_ret___d__unexpected_error__ld_n
call fcn.0045bef0
lea eax, [ebp - 0x214]
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, dword [ebp - 0x33c]
call eax
sub esp, 0xc
mov ebx, eax
mov eax, 0x2df
call fcn.0045b740
xor eax, eax
mov edx, dword fs:[0x18]
mov ecx, dword [edx + 0x34]
test ebx, ebx
jne 0x45cfe1
xor eax, eax
cmp ecx, 3
sete al
mov dword [esp + 0xc], ecx
mov dword [esp + 8], ebx
mov dword [esp], eax
mov dword [esp + 4], str.CopyFileA:_ret___d__unexpected_error__ld_n
mov edi, dword fs:[0x18]
call fcn.0045bef0
lea eax, [ebp - 0x214]
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 2
mov dword [esp + 4], 0x80000000
mov dword [esp], eax
mov eax, dword [ebp - 0x340]
call eax
sub esp, 0x1c
mov ebx, eax
mov eax, 0x2e4
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.failed_to_open_source_file__error__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 - 0x110]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
lea eax, [ebp - 0x214]
mov dword [esp], eax
mov eax, dword [ebp - 0x33c]
call eax
sub esp, 0xc
mov esi, eax
mov eax, 0x2e6
call fcn.0045b740
xor eax, eax
test esi, esi
jne 0x45d0b0
xor eax, eax
cmp dword [edi + 0x34], 0x20
sete al
mov dword [esp], eax
mov dword [esp + 4], str.copying_from_a_read_locked_file_succeeded_when_it_shouldnt_have_n
call fcn.0045bef0
lea eax, [ebp - 0x110]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], str.25f99d3b_4ba4_4f66_88f5_2906886993cc
mov eax, dword [ebp - 0x33c]
call eax
sub esp, 0xc
mov esi, eax
mov eax, 0x2ea
call fcn.0045b740
xor eax, eax
mov edx, dword fs:[0x18]
mov ecx, dword [edx + 0x34]
test esi, esi
jne 0x45d108
xor eax, eax
cmp ecx, 2
sete al
mov dword [esp + 0xc], ecx
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.copying_from_a_file_that_doesnt_exist_failed_in_an_unexpected_way__ret_d__err_ld__n
call fcn.0045bef0
mov dword [esp], ebx
mov eax, dword [ebp - 0x344]
call eax
lea ecx, [ebp - 0x214]
sub esp, 4
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], 0xc0000000
mov dword [esp], ecx
mov ecx, dword [ebp - 0x340]
call ecx
sub esp, 0x1c
mov esi, eax
mov eax, 0x2f0
call fcn.0045b740
mov ebx, dword fs:[0x18]
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.failed_to_open_source_file__error__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp esi, 0xffffffff
setne al
mov dword [esp], eax
call fcn.0045bef0
lea edx, [ebp - 0x110]
mov dword [esp + 8], 0
mov dword [esp + 4], edx
lea edx, [ebp - 0x214]
mov dword [esp], edx
mov edx, dword [ebp - 0x33c]
call edx
sub esp, 0xc
mov edi, eax
mov eax, 0x2f2
call fcn.0045b740
mov eax, dword [ebx + 0x34]
mov dword [esp + 8], edi
mov dword [esp], edi
mov dword [esp + 0xc], eax
mov dword [esp + 4], str.copying_from_an_rw_opened_and_r_shared_file_failed__ret_d__err_ld__n
call fcn.0045bef0
mov dword [esp], esi
mov eax, dword [ebp - 0x344]
call eax
lea eax, [ebp - 0x214]
sub esp, 4
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], 0x10000
mov dword [esp], eax
mov ecx, dword [ebp - 0x340]
call ecx
sub esp, 0x1c
mov esi, eax
mov eax, 0x2f8
call fcn.0045b740
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.failed_to_open_source_file__error__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp esi, 0xffffffff
setne al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x110]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
lea eax, [ebp - 0x214]
mov dword [esp], eax
mov edx, dword [ebp - 0x33c]
call edx
sub esp, 0xc
mov edi, eax
mov eax, 0x2fa
call fcn.0045b740
mov edx, dword [ebx + 0x34]
mov eax, 1
test edi, edi
jne 0x45d2b7
xor eax, eax
cmp edx, 0x20
je 0x45e1d0
mov dword [esp + 0xc], edx
mov dword [esp + 8], edi
mov dword [esp], eax
mov dword [esp + 4], str.copying_from_a_delete_locked_file_failed__ret_d__err_ld__n
mov edi, dword fs:[0x18]
call fcn.0045bef0
mov dword [esp], esi
mov eax, dword [ebp - 0x344]
call eax
lea eax, [ebp - 0x110]
sub esp, 4
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], 0x40000000
mov dword [esp], eax
mov eax, dword [ebp - 0x340]
call eax
sub esp, 0x1c
mov ebx, eax
mov eax, 0x300
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.failed_to_open_destination_file__error__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 - 0x110]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
lea eax, [ebp - 0x214]
mov dword [esp], eax
mov eax, dword [ebp - 0x33c]
call eax
sub esp, 0xc
mov esi, eax
mov eax, 0x302
call fcn.0045b740
mov edx, dword [edi + 0x34]
xor eax, eax
test esi, esi
jne 0x45d396
xor eax, eax
cmp edx, 0x20
sete al
mov dword [esp + 0xc], edx
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.copying_to_a_write_locked_file_didnt_fail__ret_d__err_ld__n
mov edi, dword fs:[0x18]
call fcn.0045bef0
mov dword [esp], ebx
mov eax, dword [ebp - 0x344]
call eax
lea eax, [ebp - 0x110]
sub esp, 4
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 2
mov dword [esp + 4], 0xc0000000
mov dword [esp], eax
mov eax, dword [ebp - 0x340]
call eax
sub esp, 0x1c
mov ebx, eax
mov eax, 0x308
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.failed_to_open_destination_file__error__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 - 0x110]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
lea eax, [ebp - 0x214]
mov dword [esp], eax
mov eax, dword [ebp - 0x33c]
call eax
sub esp, 0xc
mov esi, eax
mov eax, 0x30a
call fcn.0045b740
mov edx, dword [edi + 0x34]
mov eax, 1
test esi, esi
jne 0x45d47b
xor eax, eax
cmp edx, 0x20
je 0x45e1e8
mov dword [esp + 0xc], edx
mov dword [esp], eax
mov dword [esp + 8], esi
mov dword [esp + 4], str.copying_to_a_rw_opened_and_w_shared_file_failed__ret_d__err_ld__n
mov edi, dword fs:[0x18]
call fcn.0045bef0
mov dword [esp], ebx
mov eax, dword [ebp - 0x344]
call eax
lea eax, [ebp - 0x110]
sub esp, 4
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 7
mov dword [esp + 4], 0x10000
mov dword [esp], eax
mov eax, dword [ebp - 0x340]
call eax
sub esp, 0x1c
mov ebx, eax
mov eax, 0x310
call fcn.0045b740
mov eax, dword [edi + 0x34]
cmp ebx, 0xffffffff
je 0x45e180
mov dword [esp + 8], eax
mov dword [esp + 4], str.failed_to_open_destination_file__error__ld_n
mov dword [esp], 1
call fcn.0045bef0
lea eax, [ebp - 0x110]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
lea eax, [ebp - 0x214]
mov dword [esp], eax
mov eax, dword [ebp - 0x33c]
call eax
sub esp, 0xc
mov esi, eax
mov eax, 0x315
call fcn.0045b740
xor eax, eax
test esi, esi
je 0x45e170
mov edx, dword [edi + 0x34]
mov dword [esp], eax
mov dword [esp + 8], esi
mov dword [esp + 0xc], edx
mov dword [esp + 4], str.copying_to_a_delete_locked_shared_file_didnt_fail__ret_d__err_ld__n
call fcn.0045bef0
mov dword [esp], ebx
mov eax, dword [ebp - 0x344]
call eax
sub esp, 4
lea eax, [ebp - 0x110]
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 3
mov dword [esp + 4], 0x80000000
mov dword [esp], eax
mov eax, dword [ebp - 0x340]
call eax
sub esp, 0x1c
mov ebx, eax
mov eax, 0x31c
call fcn.0045b740
mov edi, dword fs:[0x18]
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.failed_to_open_destination_file__error__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 - 0x110]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
lea eax, [ebp - 0x214]
mov dword [esp], eax
mov eax, dword [ebp - 0x33c]
call eax
sub esp, 0xc
mov esi, eax
mov eax, 0x31e
call fcn.0045b740
mov edx, dword [edi + 0x34]
mov eax, 1
test esi, esi
jne 0x45d64a
mov edi, dword [0x8f0770]
cmp edx, 0x20
sete al
xor ecx, ecx
test edi, edi
sete cl
and eax, ecx
mov dword [esp + 0xc], edx
lea edi, [ebp - 0x32c]
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.copying_to_a_file_opened_the_way_Wine_opens_the_source_failed__ret_d__err_ld__n
call fcn.0045bef0
mov dword [esp], ebx
mov eax, dword [ebp - 0x344]
call eax
lea eax, [ebp - 0x110]
sub esp, 4
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 - 0x340]
call eax
sub esp, 0x1c
mov ebx, eax
mov eax, 0x324
call fcn.0045b740
xor eax, eax
cmp ebx, 0xffffffff
mov dword [esp + 4], str.failed_to_open_destination_file_n
setne al
mov dword [esp], eax
call fcn.0045bef0
mov dword [esp + 4], 0
mov dword [esp], ebx
mov eax, dword [ebp - 0x34c]
call eax
sub esp, 8
mov dword [ebp - 0x338], eax
mov eax, 0x326
call fcn.0045b740
mov eax, dword [ebp - 0x338]
mov dword [esp + 4], str.destination_file_has_wrong_size__ld_n
cmp eax, 4
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
mov esi, dword fs:[0x18]
call fcn.0045bef0
mov dword [esp + 0xc], edi
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], ebx
mov eax, dword [ebp - 0x348]
call eax
sub esp, 0x10
mov dword [ebp - 0x338], eax
mov eax, 0x32a
call fcn.0045b740
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.GetFileTime_error__ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x338]
mov dword [esp], eax
call fcn.0045bef0
mov eax, 0x32b
call fcn.0045b740
lea eax, [ebp - 0x334]
mov dword [esp + 4], edi
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CompareFileTime]
sub esp, 8
test eax, eax
sete al
mov dword [esp + 4], str.destination_file_has_wrong_filetime_n
movzx eax, al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x110]
mov dword [esi + 0x34], 0xdeadbeef
mov dword [esp + 4], eax
lea eax, [ebp - 0x214]
mov dword [esp + 8], 0
mov dword [esp], eax
mov eax, dword [ebp - 0x33c]
call eax
mov dword [ebp - 0x338], eax
sub esp, 0xc
mov eax, 0x32f
call fcn.0045b740
mov eax, dword [ebp - 0x338]
mov ecx, dword [esi + 0x34]
xor edx, edx
test eax, eax
jne 0x45d809
xor edx, edx
cmp ecx, 0x20
sete dl
mov dword [esp + 0xc], ecx
mov dword [esp], edx
mov dword [esp + 8], eax
mov dword [esp + 4], str.CopyFileA:_ret___ld__unexpected_error__ld_n
call fcn.0045bef0
mov dword [esp + 4], 0
mov dword [esp], ebx
mov eax, dword [ebp - 0x34c]
call eax
sub esp, 8
mov dword [ebp - 0x338], eax
mov eax, 0x334
call fcn.0045b740
mov eax, dword [ebp - 0x338]
mov dword [esp + 4], str.destination_file_has_wrong_size__ld_n
cmp eax, 4
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x338]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x322]
mov dword [esp + 8], 0xa
mov dword [esp + 4], eax
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_ReadFile]
sub esp, 0x14
mov esi, eax
mov eax, 0x336
call fcn.0045b740
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
test esi, esi
je 0x45d8c1
xor ecx, ecx
cmp dword [ebp - 0x338], 4
sete cl
mov esi, ecx
mov dword [esp + 8], eax
mov dword [esp], esi
mov dword [esp + 4], str.ReadFile:_error__ld_n
call fcn.0045bef0
mov eax, 0x338
call fcn.0045b740
mov dword [esp + 4], str.buffer_contents_mismatch_n
xor eax, eax
cmp dword [ebp - 0x322], 0x786670
sete al
mov dword [esp], eax
call fcn.0045bef0
mov dword [esp + 0x14], 0
mov edi, dword [sym.imp.kernel32.dll_CreateFileMappingW]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x8000002
mov dword [esp + 4], 0
mov dword [esp], ebx
call edi
sub esp, 0x18
mov esi, eax
mov eax, 0x33c
call fcn.0045b740
mov edx, dword fs:[0x18]
mov eax, dword [edx + 0x34]
mov dword [ebp - 0x348], edx
mov dword [esp + 4], str.CreateFileMapping:_error__ld_n
mov dword [esp + 8], eax
xor eax, eax
test esi, esi
setne al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x110]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
lea eax, [ebp - 0x214]
mov dword [esp], eax
mov eax, dword [ebp - 0x33c]
call eax
mov dword [ebp - 0x338], eax
sub esp, 0xc
mov eax, 0x33f
call fcn.0045b740
mov edx, dword [ebp - 0x348]
xor eax, eax
mov ecx, dword [edx + 0x34]
mov edx, dword [ebp - 0x338]
test edx, edx
jne 0x45d9be
xor eax, eax
cmp ecx, 0x20
sete al
mov dword [esp + 8], ecx
mov dword [esp], eax
mov dword [esp + 4], str.CopyFileA_with_mapped_dest_file:_expected_ERROR_SHARING_VIOLATION__got__ld_n
call fcn.0045bef0
mov dword [esp], esi
mov esi, dword [ebp - 0x344]
mov eax, esi
call eax
mov eax, esi
sub esp, 4
mov dword [esp], ebx
call eax
lea eax, [ebp - 0x110]
sub esp, 4
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 3
mov dword [esp + 4], 0x80000000
mov dword [esp], eax
mov eax, dword [ebp - 0x340]
call eax
sub esp, 0x1c
mov ebx, eax
mov eax, 0x346
call fcn.0045b740
xor eax, eax
cmp ebx, 0xffffffff
mov dword [esp + 4], str.failed_to_open_destination_file_n
setne al
mov dword [esp], eax
call fcn.0045bef0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x8000002
mov dword [esp + 4], 0
mov dword [esp], ebx
call edi
sub esp, 0x18
mov esi, eax
mov eax, 0x34a
call fcn.0045b740
mov edi, dword fs:[0x18]
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.CreateFileMapping:_error__ld_n
mov dword [esp + 8], eax
xor eax, eax
test esi, esi
setne al
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x110]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
lea eax, [ebp - 0x214]
mov dword [esp], eax
mov eax, dword [ebp - 0x33c]
call eax
sub esp, 0xc
mov dword [ebp - 0x338], eax
mov eax, 0x34d
call fcn.0045b740
mov dword [esp + 4], str.CopyFileA:_expected_failure_n
xor eax, eax
mov edx, dword [ebp - 0x338]
test edx, edx
sete al
mov dword [esp], eax
call fcn.0045bef0
mov eax, 0x34e
call fcn.0045b740
mov edx, dword [edi + 0x34]
mov eax, 1
cmp edx, 0x4c8
je 0x45db36
mov eax, dword [0x8f0770]
test eax, eax
sete cl
xor eax, eax
cmp edx, 0x20
sete al
and eax, ecx
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.CopyFileA_with_mapped_dest_file:_expected_ERROR_USER_MAPPED_FILE__got__ld_n
mov edi, dword fs:[0x18]
call fcn.0045bef0
mov dword [esp], esi
mov esi, dword [ebp - 0x344]
mov eax, esi
call eax
mov eax, esi
sub esp, 4
mov dword [esp], ebx
call eax
lea eax, [ebp - 0x214]
mov ebx, dword [sym.imp.kernel32.dll_GetFileAttributesA]
sub esp, 4
mov dword [esp], eax
call ebx
sub esp, 4
mov dword [ebp - 0x338], eax
mov eax, 0x357
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetFileAttributesA:_error__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [ebp - 0x338], 0xffffffff
setne al
mov dword [esp], eax
call fcn.0045bef0
mov eax, 0x358
call fcn.0045b740
mov dword [esp + 4], str.source_is_read_only_n
mov eax, dword [ebp - 0x338]
not eax
and eax, 1
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x110]
mov dword [esp], eax
call ebx
sub esp, 4
mov dword [ebp - 0x338], eax
mov eax, 0x35a
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetFileAttributesA:_error__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [ebp - 0x338], 0xffffffff
setne al
mov dword [esp], eax
call fcn.0045bef0
mov eax, 0x35b
call fcn.0045b740
mov dword [esp + 4], str.dest_is_read_only_n
mov eax, dword [ebp - 0x338]
not eax
and eax, 1
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x214]
mov esi, dword [sym.imp.kernel32.dll_SetFileAttributesA]
mov dword [esp + 4], 1
mov dword [esp], eax
call esi
sub esp, 8
mov dword [ebp - 0x338], eax
mov eax, 0x35f
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.SetFileAttributesA:_error__ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x338]
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x214]
mov dword [esp], eax
call ebx
sub esp, 4
mov dword [ebp - 0x338], eax
mov eax, 0x361
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetFileAttributesA:_error__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [ebp - 0x338], 0xffffffff
setne al
mov dword [esp], eax
call fcn.0045bef0
mov eax, 0x362
call fcn.0045b740
mov dword [esp + 4], str.source_is_not_read_only_n
mov eax, dword [ebp - 0x338]
and eax, 1
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x110]
mov dword [esp], eax
call ebx
sub esp, 4
mov dword [ebp - 0x338], eax
mov eax, 0x364
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetFileAttributesA:_error__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [ebp - 0x338], 0xffffffff
setne al
mov dword [esp], eax
call fcn.0045bef0
mov eax, 0x365
call fcn.0045b740
mov dword [esp + 4], str.dest_is_read_only_n
mov eax, dword [ebp - 0x338]
not eax
and eax, 1
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x214]
mov dword [esp + 4], 1
mov dword [esp], eax
call esi
sub esp, 8
mov dword [ebp - 0x338], eax
mov eax, 0x369
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.SetFileAttributesA:_error__ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x338]
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x214]
mov dword [esp], eax
call ebx
sub esp, 4
mov dword [ebp - 0x338], eax
mov eax, 0x36b
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetFileAttributesA:_error__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [ebp - 0x338], 0xffffffff
setne al
mov dword [esp], eax
call fcn.0045bef0
mov eax, 0x36c
call fcn.0045b740
mov dword [esp + 4], str.source_is_not_read_only_n
mov eax, dword [ebp - 0x338]
and eax, 1
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x110]
mov dword [esp], eax
call ebx
sub esp, 4
mov dword [ebp - 0x338], eax
mov eax, 0x36e
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetFileAttributesA:_error__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [ebp - 0x338], 0xffffffff
setne al
mov dword [esp], eax
call fcn.0045bef0
mov eax, 0x36f
call fcn.0045b740
mov dword [esp + 4], str.dest_is_read_only_n
mov eax, dword [ebp - 0x338]
not eax
and eax, 1
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x110]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
lea eax, [ebp - 0x214]
mov dword [esp], eax
mov eax, dword [ebp - 0x33c]
call eax
sub esp, 0xc
mov dword [ebp - 0x338], eax
mov eax, 0x372
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.CopyFileA:_error__ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x338]
mov dword [esp], eax
call fcn.0045bef0
lea ecx, [ebp - 0x110]
mov dword [esp], ecx
call ebx
sub esp, 4
mov dword [ebp - 0x338], eax
mov eax, 0x374
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetFileAttributesA:_error__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [ebp - 0x338], 0xffffffff
setne al
mov dword [esp], eax
call fcn.0045bef0
mov eax, 0x375
call fcn.0045b740
mov dword [esp + 4], str.dest_is_not_read_only_n
mov ecx, dword [ebp - 0x338]
and ecx, 1
mov dword [esp], ecx
call fcn.0045bef0
lea ecx, [ebp - 0x110]
mov dword [esp + 4], pe_nt_image_headers32
mov dword [esp], ecx
call esi
sub esp, 8
mov dword [ebp - 0x338], eax
mov eax, 0x379
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.SetFileAttributesA:_error__ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x338]
mov dword [esp], eax
call fcn.0045bef0
mov edx, dword [sym.imp.kernel32.dll_DeleteFileA]
lea ecx, [ebp - 0x110]
mov dword [esp], ecx
mov dword [ebp - 0x340], edx
call edx
sub esp, 4
mov dword [ebp - 0x338], eax
mov eax, 0x37b
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x59878f
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x338]
mov dword [esp], eax
call fcn.0045bef0
lea ecx, [ebp - 0x110]
mov dword [esp + 8], 1
mov dword [esp + 4], ecx
lea ecx, [ebp - 0x214]
mov dword [esp], ecx
mov eax, dword [ebp - 0x33c]
call eax
sub esp, 0xc
mov dword [ebp - 0x338], eax
mov eax, 0x37d
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.CopyFileA:_error__ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x338]
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x110]
mov dword [esp], eax
call ebx
sub esp, 4
mov dword [ebp - 0x338], eax
mov eax, 0x37f
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetFileAttributesA:_error__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [ebp - 0x338], 0xffffffff
setne al
mov dword [esp], eax
call fcn.0045bef0
mov eax, 0x380
call fcn.0045b740
mov dword [esp + 4], str.dest_is_not_read_only_n
mov eax, dword [ebp - 0x338]
and eax, 1
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x214]
mov dword [esp + 4], pe_nt_image_headers32
mov dword [esp], eax
call esi
sub esp, 8
mov dword [ebp - 0x338], eax
mov eax, 0x383
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.SetFileAttributesA:_error__ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x338]
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x110]
mov dword [esp + 4], pe_nt_image_headers32
mov dword [esp], eax
call esi
sub esp, 8
mov dword [ebp - 0x338], eax
mov eax, 0x385
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.SetFileAttributesA:_error__ld_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x338]
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x214]
mov dword [esp], eax
mov edx, dword [ebp - 0x340]
mov dword [ebp - 0x33c], edx
call edx
sub esp, 4
mov dword [ebp - 0x338], eax
mov eax, 0x388
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x59878f
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x338]
mov dword [esp], eax
call fcn.0045bef0
lea eax, [ebp - 0x110]
mov dword [esp], eax
mov edx, dword [ebp - 0x33c]
call edx
sub esp, 4
mov dword [ebp - 0x338], eax
mov eax, 0x38a
call fcn.0045b740
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x59878f
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x338]
mov dword [esp], eax
call fcn.0045bef0
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
xor eax, eax
cmp dword [edi + 0x34], 0x20
sete al
jmp 0x45d558
mov edx, dword [0x8f0770]
test edx, edx
jne 0x45e1b0
cmp eax, 0x57
jne 0x45e1b0
mov dword [esp + 8], 0x57
mov dword [esp + 4], str.failed_to_open_destination_file__error__ld_n
mov dword [esp], 1
call fcn.0045bef0
jmp 0x45d581
mov dword [esp + 8], eax
mov dword [esp + 4], str.failed_to_open_destination_file__error__ld_n
mov dword [esp], 0
call fcn.0045bef0
jmp 0x45d581
mov ebx, dword [0x8f0770]
xor eax, eax
test ebx, ebx
sete al
jmp 0x45d2b7
mov ecx, dword [0x8f0770]
xor eax, eax
test ecx, ecx
sete al
jmp 0x45d47b