Function at 0x41cf20
Capabilities:
Copy file
Delete file
Get file attributes
Move file
Set current directory
Set file attributes

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x106c
call fcn.00439b40
mov eax, dword [0x4713e0]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
push edi
mov dword [ebp - 0x1008], 0
mov dword [ebp - 0x1064], 0
mov eax, dword [0x469954]
cmp eax, dword [0x474a70]
je 0x41cf74
cmp dword [0x474a70], 0
je 0x41cf68
call fcn.004204c0
mov ecx, dword [0x474a70]
mov dword [0x469954], ecx
cmp dword [0x4850b8], 0
je 0x41cf84
xor eax, eax
jmp 0x41d9f5
push 0x400
mov edx, dword [ebp + 0xc]
push edx
lea eax, [ebp - 0x1004]
push eax
call fcn.00414070
add esp, 0xc
push 0x5ad620
lea ecx, [ebp - 0x404]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea edx, [ebp - 0x404]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea eax, [ebp + eax - 0x405]
mov dword [ebp - 0x100c], eax
lea ecx, [ebp - 0x404]
cmp dword [ebp - 0x100c], ecx
jbe 0x41cfed
mov edx, dword [ebp - 0x100c]
movzx eax, byte [edx]
cmp eax, 0x5c
jne 0x41cfed
mov ecx, dword [ebp - 0x100c]
mov byte [ecx], 0
lea edx, [ebp - 0x404]
push edx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
cmp dword [ebp + 0x14], 0
je 0x41d00b
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x1054], eax
jmp 0x41d015
mov dword [ebp - 0x1054], 0x474a7a
mov ecx, dword [ebp + 0x18]
push ecx
mov edx, dword [ebp - 0x1054]
push edx
lea eax, [ebp - 0x1004]
push eax
mov ecx, dword [ebp + 8]
push ecx
push str.PleaseCopyTheFile__s__s___s____d__r_n
call fcn.004147f0
add esp, 0x14
cmp dword [0x474a74], 0
je 0x41d052
mov edx, dword [ebp + 8]
push edx
push str._r_n_____s
call fcn.00426800
add esp, 8
cmp dword [0x474a70], 0
je 0x41d067
mov dword [ebp - 0x1038], str.Record
jmp 0x41d071
mov dword [ebp - 0x1038], 0x474a7b
lea eax, [ebp - 0x1004]
push eax
mov ecx, dword [ebp + 8]
push ecx
mov edx, dword [ebp - 0x1038]
push edx
push str._sTry_to_copy__s_to__s_r_n
call fcn.004145f0
add esp, 0x10
lea eax, [ebp - 0x1004]
test eax, eax
je 0x41d0ae
mov ecx, 1
imul edx, ecx, 0
movzx eax, byte [ebp + edx - 0x1004]
test eax, eax
jne 0x41d0b5
xor eax, eax
jmp 0x41d9f5
lea ecx, [ebp - 0x1004]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
movzx edx, byte [ebp + eax - 0x1005]
cmp edx, 0x5c
je 0x41d0e1
push 0x4699ac
lea eax, [ebp - 0x1004]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov ecx, dword [ebp + 8]
push ecx
mov edx, dword [0x474a60]
push edx
call fcn.00402f02
add esp, 8
mov dword [ebp - 0x1014], eax
cmp dword [ebp - 0x1014], 0
je 0x41d11b
push 0x5ace20
mov eax, dword [ebp + 8]
push eax
push str._s_taken_from__s_r_n
call fcn.004145f0
add esp, 0xc
jmp 0x41d12c
mov ecx, dword [ebp + 8]
push ecx
push str._s_not_taken_from_a_package_r_n
call fcn.004145f0
add esp, 8
push 0x5c
mov edx, dword [ebp + 8]
push edx
call fcn.0043a8c0
add esp, 8
mov dword [ebp - 0x100c], eax
cmp dword [ebp - 0x100c], 0
je 0x41d15a
mov eax, dword [ebp - 0x100c]
add eax, 1
mov dword [ebp - 0x100c], eax
jmp 0x41d163
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x100c], ecx
push 0x5ad620
lea edx, [ebp - 0xc04]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov eax, dword [ebp + 8]
push eax
lea ecx, [ebp - 0xc04]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea edx, [ebp - 0x1004]
push edx
lea eax, [ebp - 0x804]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
cmp dword [ebp + 0x14], 0
je 0x41d1ab
mov ecx, dword [ebp + 0x14]
mov dword [ebp - 0x105c], ecx
jmp 0x41d1b7
mov edx, dword [ebp - 0x100c]
mov dword [ebp - 0x105c], edx
mov eax, dword [ebp - 0x105c]
push eax
lea ecx, [ebp - 0x804]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea edx, [ebp - 0x1004]
push edx
lea eax, [ebp - 0x404]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea ecx, [ebp - 0x404]
push ecx
call fcn.0041cd50
add esp, 4
cmp dword [ebp + 0x10], 0
je 0x41d205
lea edx, [ebp - 0x804]
push edx
mov eax, dword [ebp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea ecx, [ebp - 0xc04]
push ecx
push str.Source___s__r_n
call fcn.004147f0
add esp, 8
lea edx, [ebp - 0x804]
push edx
push str.Target___s__r_n
call fcn.004147f0
add esp, 8
lea eax, [ebp - 0x404]
push eax
push str.Temp_____s__r_n
call fcn.004147f0
add esp, 8
cmp dword [ebp - 0x1014], 0
jne 0x41d2b5
lea ecx, [ebp - 0xc04]
push ecx
call fcn.004150e0
add esp, 4
test eax, eax
jne 0x41d2b5
mov edx, dword [ebp + 8]
push edx
call fcn.004150e0
add esp, 4
test eax, eax
je 0x41d294
mov eax, dword [ebp + 8]
push eax
lea ecx, [ebp - 0xc04]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea edx, [ebp - 0xc04]
push edx
push str.Real_Source___s__r_n
call fcn.004147f0
add esp, 8
jmp 0x41d2b5
push str.Source_does_not_exists_r_n
call fcn.004145f0
add esp, 4
push str.Source_file_does_not_exists
call fcn.0041c710
add esp, 4
xor eax, eax
jmp 0x41d9f5
lea eax, [ebp - 0xc04]
push eax
push str.Final_Source___s__r_n
call fcn.004147f0
add esp, 8
lea ecx, [ebp - 0x804]
push ecx
push str.Final_Target___s__r_n
call fcn.004147f0
add esp, 8
lea edx, [ebp - 0xc04]
push edx
call fcn.00415060
add esp, 4
mov dword [ebp - 0x1064], eax
lea eax, [ebp - 0x804]
push eax
call fcn.00415060
add esp, 4
mov dword [ebp - 0x1008], eax
mov ecx, dword [ebp - 0x1014]
push ecx
lea edx, [ebp - 0x1024]
push edx
lea eax, [ebp - 0x1020]
push eax
lea ecx, [ebp - 0xc04]
push ecx
call fcn.00424dc0
add esp, 0x10
mov dword [ebp - 0x1030], eax
push 0
lea edx, [ebp - 0x101c]
push edx
lea eax, [ebp - 0x102c]
push eax
lea ecx, [ebp - 0x804]
push ecx
call fcn.00424dc0
add esp, 0x10
mov dword [ebp - 0x1028], eax
cmp dword [ebp - 0x1064], 0
je 0x41d374
lea edx, [ebp - 0xc04]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov dword [ebp - 0x1060], eax
jmp 0x41d37e
mov dword [ebp - 0x1060], 0
mov eax, dword [ebp - 0x1060]
mov dword [ebp - 0x106c], eax
cmp dword [ebp - 0x1008], 0
je 0x41d3a8
lea ecx, [ebp - 0x804]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov dword [ebp - 0x1044], eax
jmp 0x41d3b2
mov dword [ebp - 0x1044], 0
mov edx, dword [ebp - 0x1044]
mov dword [ebp - 0x1010], edx
mov esi, dword [ebp - 0x1024]
xor edi, edi
xor edx, edx
mov eax, dword [ebp - 0x1020]
mov cl, 0x20
call fcn.0043b260
or esi, eax
or edi, edx
mov dword [ebp - 0x1040], esi
mov dword [ebp - 0x103c], edi
mov esi, dword [ebp - 0x101c]
xor edi, edi
xor edx, edx
mov eax, dword [ebp - 0x102c]
mov cl, 0x20
call fcn.0043b260
or esi, eax
or edi, edx
mov dword [ebp - 0x104c], esi
mov dword [ebp - 0x1048], edi
mov eax, dword [ebp - 0x1024]
and eax, 0xffff
movzx ecx, ax
push ecx
mov edx, dword [ebp - 0x1024]
shr edx, 0x10
and edx, 0xffff
movzx eax, dx
push eax
mov ecx, dword [ebp - 0x1020]
and ecx, 0xffff
movzx edx, cx
push edx
mov eax, dword [ebp - 0x1020]
shr eax, 0x10
and eax, 0xffff
movzx ecx, ax
push ecx
mov edx, dword [ebp - 0x1030]
push edx
mov eax, dword [ebp - 0x106c]
push eax
call fcn.00420360
add esp, 4
push eax
lea ecx, [ebp - 0xc04]
push ecx
push str.Version_of_Source__s___s__is___u___u._u._u._u_r_n
call fcn.004145f0
add esp, 0x20
mov edx, dword [ebp - 0x101c]
and edx, 0xffff
movzx eax, dx
push eax
mov ecx, dword [ebp - 0x101c]
shr ecx, 0x10
and ecx, 0xffff
movzx edx, cx
push edx
mov eax, dword [ebp - 0x102c]
and eax, 0xffff
movzx ecx, ax
push ecx
mov edx, dword [ebp - 0x102c]
shr edx, 0x10
and edx, 0xffff
movzx eax, dx
push eax
mov ecx, dword [ebp - 0x1028]
push ecx
mov edx, dword [ebp - 0x1010]
push edx
call fcn.00420360
add esp, 4
push eax
lea eax, [ebp - 0x804]
push eax
push str.Version_of_Target__s___s__is___u___u._u._u._u_r_n
call fcn.004145f0
add esp, 0x20
cmp dword [ebp + 0x18], 4
je 0x41d502
push str.SetRW
call fcn.00425850
add esp, 4
test eax, eax
je 0x41d53b
mov ecx, dword [ebp - 0x1010]
and ecx, 1
je 0x41d53b
cmp dword [ebp - 0x1008], 0
je 0x41d53b
push 0x80
lea edx, [ebp - 0x804]
push edx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
lea eax, [ebp - 0x804]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov dword [ebp - 0x1010], eax
mov ecx, dword [ebp - 0x1010]
and ecx, 0x10
je 0x41d55a
push str.Target_is_a_directory_r_n
call fcn.004145f0
add esp, 4
xor eax, eax
jmp 0x41d9f5
cmp dword [ebp + 0x18], 3
jne 0x41d580
cmp dword [ebp - 0x1008], 0
je 0x41d580
push str.Source_will_not_overwrite_Target__command3__r_n
call fcn.004145f0
add esp, 4
mov eax, 1
jmp 0x41d9f5
mov edx, dword [ebp - 0x1010]
and edx, 1
je 0x41d59f
push str.Target_is_write_protected_r_n
call fcn.004145f0
add esp, 4
xor eax, eax
jmp 0x41d9f5
cmp dword [0x4736dc], 0
je 0x41d669
cmp dword [ebp - 0x1008], 0
je 0x41d669
cmp dword [ebp - 0x1010], 0x80
jne 0x41d5d1
mov dword [ebp - 0x1058], 1
jmp 0x41d5e0
mov eax, dword [ebp - 0x1010]
or eax, 1
mov dword [ebp - 0x1058], eax
mov ecx, dword [ebp - 0x1058]
mov dword [ebp - 0x1068], ecx
mov edx, dword [ebp - 0x1068]
push edx
lea eax, [ebp - 0x804]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
mov dword [ebp - 0x1034], eax
cmp dword [ebp - 0x1034], 0
je 0x41d629
mov ecx, dword [ebp - 0x1010]
push ecx
lea edx, [ebp - 0x804]
push edx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
mov dword [ebp - 0x1034], eax
cmp dword [ebp - 0x1034], 0
jne 0x41d669
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x1018], eax
mov eax, dword [ebp - 0x1018]
push eax
call fcn.0041c640
add esp, 4
push eax
mov ecx, dword [ebp - 0x1018]
push ecx
push str.Target_access_denied__Error_d__r_n_s_r_n
call fcn.004145f0
add esp, 0xc
xor eax, eax
jmp 0x41d9f5
cmp dword [ebp - 0x1008], 0
je 0x41d6ca
mov edx, dword [ebp - 0x1030]
cmp edx, dword [ebp - 0x1028]
jb 0x41d69e
mov eax, dword [ebp - 0x103c]
cmp eax, dword [ebp - 0x1048]
ja 0x41d6ca
jb 0x41d69e
mov ecx, dword [ebp - 0x1040]
cmp ecx, dword [ebp - 0x104c]
jae 0x41d6ca
cmp dword [ebp + 0x18], 2
jne 0x41d6b3
push str.Older_Source_overwrite_Target__command2__r_n
call fcn.004145f0
add esp, 4
jmp 0x41d6ca
push str.Older_Source_will_not_overwrite_Target_r_n
call fcn.004145f0
add esp, 4
mov eax, 1
jmp 0x41d9f5
cmp dword [ebp + 0x18], 5
jne 0x41d71a
cmp dword [ebp - 0x1008], 0
je 0x41d71a
mov edx, dword [ebp - 0x1030]
cmp edx, dword [ebp - 0x1028]
jne 0x41d71a
mov eax, dword [ebp - 0x1040]
cmp eax, dword [ebp - 0x104c]
jne 0x41d71a
mov ecx, dword [ebp - 0x103c]
cmp ecx, dword [ebp - 0x1048]
jne 0x41d71a
push str.Equal_Sourceversion_will_not_overwrite_Target__kind5__r_n
call fcn.004145f0
add esp, 4
mov eax, 1
jmp 0x41d9f5
cmp dword [ebp - 0x1014], 0
je 0x41d72f
mov dword [ebp - 0x1050], str.__from_package
jmp 0x41d739
mov dword [ebp - 0x1050], 0x474a7c
mov edx, dword [ebp - 0x1050]
push edx
lea eax, [ebp - 0x404]
push eax
lea ecx, [ebp - 0xc04]
push ecx
push str.CopyFile__s_to__s__s_r_n
call fcn.004147f0
add esp, 0x10
cmp dword [ebp - 0x1014], 0
je 0x41d796
lea edx, [ebp - 0x404]
push edx
mov eax, dword [ebp - 0x1014]
push eax
push 0x5ace20
call fcn.004029e0
add esp, 0xc
test eax, eax
jne 0x41d794
push 0
call fcn.0041c710
add esp, 4
xor eax, eax
jmp 0x41d9f5
jmp 0x41d7c1
push 1
lea ecx, [ebp - 0x404]
push ecx
lea edx, [ebp - 0xc04]
push edx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
jne 0x41d7c1
push 0
call fcn.0041c710
add esp, 4
xor eax, eax
jmp 0x41d9f5
push 0x80
lea eax, [ebp - 0x404]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
cmp dword [0x474a70], 0
je 0x41d838
cmp dword [ebp - 0x1008], 0
je 0x41d821
lea ecx, [ebp - 0x804]
push ecx
mov edx, dword [0x587490]
push edx
call fcn.00437880
add esp, 8
mov dword [0x587490], eax
lea eax, [ebp - 0x804]
push eax
push str.overwrite_access_recorded_successfully__s_r_n
call fcn.004145f0
add esp, 8
push str._recorded
call fcn.00426800
add esp, 4
lea ecx, [ebp - 0x404]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov eax, 1
jmp 0x41d9f5
lea edx, [ebp - 0x804]
push edx
lea eax, [ebp - 0x404]
push eax
push str.Try_to_move_over__s_to__s_r_n
call fcn.004147f0
add esp, 0xc
push 3
lea ecx, [ebp - 0x804]
push ecx
lea edx, [ebp - 0x404]
push edx
call dword [sym.imp.KERNEL32.dll_MoveFileExA]
test eax, eax
jne 0x41d9e3
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x1018], eax
cmp dword [ebp - 0x1008], 0
je 0x41d8d1
lea eax, [ebp - 0x804]
push eax
lea ecx, [ebp - 0x404]
push ecx
call fcn.004200b0
add esp, 8
test eax, eax
jne 0x41d8d1
lea edx, [ebp - 0x404]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
push str.Copy_failed_but_reboot_not_needed__files_are_identical_r_n
call fcn.004147f0
add esp, 4
push str.copy_failed_but_not_needed__files_are_identical_r_n
call fcn.004145f0
add esp, 4
mov eax, 1
jmp 0x41d9f5
lea eax, [ebp - 0x804]
push eax
lea ecx, [ebp - 0x404]
push ecx
push str.Try_to_delay_move_over__s_to__s_r_n
call fcn.004147f0
add esp, 0xc
mov edx, dword [ebp - 0x1018]
push edx
call fcn.0041c640
add esp, 4
push eax
mov eax, dword [ebp - 0x1018]
push eax
push str.First_move_failed__d_r_n_s_r_n
call fcn.004145f0
add esp, 0xc
cmp dword [0x4736c8], 0
je 0x41d953
push str.Windows_NT_Move_via_Registry_r_n
call fcn.004145f0
add esp, 4
push 5
lea ecx, [ebp - 0x804]
push ecx
lea edx, [ebp - 0x404]
push edx
call dword [sym.imp.KERNEL32.dll_MoveFileExA]
test eax, eax
jne 0x41d951
push 0
call fcn.0041c710
add esp, 4
xor eax, eax
jmp 0x41d9f5
jmp 0x41d9b8
push 0
lea eax, [ebp - 0x804]
push eax
lea ecx, [ebp - 0x404]
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
jne 0x41d997
lea edx, [ebp - 0x804]
push edx
lea eax, [ebp - 0x404]
push eax
call fcn.00420270
add esp, 8
test eax, eax
jne 0x41d995
push 0
call fcn.0041c710
add esp, 4
xor eax, eax
jmp 0x41d9f5
jmp 0x41d9b8
push str.Windows_95_Move_failed_Copy_succeeded_r_n
call fcn.004145f0
add esp, 4
lea ecx, [ebp - 0x404]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov eax, 1
jmp 0x41d9f5
push str.Machine_must_be_rebooted__for_final_copy_r_n
call fcn.004145f0
add esp, 4
mov dword [0x474a68], 1
push str.STP_REBOOTNEEDED1
mov edx, dword [0x474a64]
push edx
call fcn.0041e2f0
add esp, 8
push str.copy_successful_r_n
call fcn.004145f0
add esp, 4
mov eax, 1
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00439b24
mov esp, ebp
pop ebp
ret