Function at 0x587510
Capabilities:
Copy file
Delete file
Move file

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 0x14
push 0
push 0
dec ecx
jne 0x587519
push ecx
xchg dword [ebp - 4], ecx
push ebx
push esi
push edi
mov dword [ebp - 8], ecx
mov dword [ebp - 4], edx
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 4]
call fcn.004064dc
mov eax, dword [ebp - 8]
call fcn.004064dc
xor eax, eax
push ebp
push 0x587e4e
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x20]
mov ecx, dword [ebp - 0xc]
mov edx, 0x587e70
call fcn.004068c8
mov eax, dword [ebp - 0x20]
mov edx, 0x587ea4
call fcn.0050c8a0
movzx eax, byte [0x587ec4]
push eax
lea eax, [ebp - 0xc]
push eax
mov ecx, 0x587ed4
mov edx, 0x587ee4
mov eax, dword [ebp - 4]
call fcn.00464fc8
movzx eax, byte [0x587ec4]
push eax
lea eax, [ebp - 0x10]
push eax
mov ecx, 0x587ed4
mov edx, 0x587ee4
mov eax, dword [ebp - 8]
call fcn.00464fc8
lea edx, [ebp - 0x14]
mov eax, dword [ebp - 0x10]
call fcn.0045d3c0
mov eax, dword [ebp - 0x14]
call fcn.0045cfbc
test al, al
jne 0x5875e8
xor eax, eax
push ebp
push 0x5875de
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x14]
call fcn.0045cfe0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x5875e8
mov eax, dword [ebp - 0x10]
call fcn.0045cf74
test al, al
jne 0x58764d
push 0
mov eax, dword [ebp - 0x10]
call fcn.00406580
mov esi, eax
push esi
mov eax, dword [ebp - 0xc]
call fcn.00406580
mov ebx, eax
push ebx
call sub.kernel32.dll_CopyFileW
test eax, eax
je 0x58762c
mov eax, dword [ebp - 0xc]
call fcn.00406580
push eax
call sub.kernel32.dll_DeleteFileW
mov byte [ebp - 0x19], 1
jmp 0x587e23
mov byte [ebp - 0x19], 0
cmp byte [ebp + 8], 0
je 0x587e23
push esi
mov eax, ebx
mov ecx, 2
pop edx
call fcn.00578164
jmp 0x587e23
lea edx, [ebp - 0x24]
xor eax, eax
call fcn.00403478
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x10]
call fcn.0045be80
test eax, eax
jne 0x58776c
lea eax, [ebp - 0x28]
mov ecx, 0x587ef4
mov edx, dword [ebp - 0x10]
call fcn.004068c8
mov eax, dword [ebp - 0x28]
call fcn.00406580
push eax
mov eax, dword [ebp - 0x10]
call fcn.00406580
push eax
call sub.kernel32.dll_MoveFileW
cmp eax, 1
sbb eax, eax
inc eax
test al, al
je 0x587731
mov edx, 0x587ea4
mov eax, 0x587f0c
call fcn.0050c8a0
push 0
mov eax, dword [ebp - 0x10]
call fcn.00406580
mov esi, eax
push esi
mov eax, dword [ebp - 0xc]
call fcn.00406580
mov ebx, eax
push ebx
call sub.kernel32.dll_CopyFileW
test eax, eax
je 0x5876f5
mov edx, 0x587ea4
mov eax, 0x587f54
call fcn.0050c8a0
mov eax, dword [ebp - 0xc]
call fcn.00406580
push eax
call sub.kernel32.dll_DeleteFileW
mov byte [ebp - 0x19], 1
jmp 0x587e23
mov edx, 0x587ea4
mov eax, 0x587f54
call fcn.0050c8a0
mov edx, 0x587ea4
mov eax, 0x587fac
call fcn.0050c8a0
mov eax, dword [ebp - 0x18]
mov byte [eax + 4], 1
push esi
mov eax, ebx
mov ecx, 2
pop edx
call fcn.00578164
mov byte [ebp - 0x19], 1
jmp 0x587e23
mov edx, 0x587ea4
mov eax, 0x588000
call fcn.0050c8a0
mov eax, dword [ebp - 0x18]
mov byte [eax + 4], 1
mov eax, dword [ebp - 0x10]
call fcn.00406580
push eax
mov eax, dword [ebp - 0xc]
call fcn.00406580
mov ecx, 2
pop edx
call fcn.00578164
mov byte [ebp - 0x19], 1
jmp 0x587e23
mov byte [ebp - 0x1a], 0
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + 0x70]
mov edx, dword [eax]
call dword [edx + 0x14]
mov esi, eax
dec esi
test esi, esi
jl 0x587835
inc esi
xor ebx, ebx
lea ecx, [ebp - 0x2c]
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + 0x70]
mov edx, ebx
mov edi, dword [eax]
call dword [edi + 0xc]
mov eax, dword [ebp - 0x2c]
push eax
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 0x10]
call fcn.0045d4bc
mov edx, dword [ebp - 0x30]
pop eax
call fcn.0045be80
test eax, eax
jne 0x58782d
lea ecx, [ebp - 0x38]
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + 0x70]
mov edx, ebx
mov esi, dword [eax]
call dword [esi + 0xc]
mov ecx, dword [ebp - 0x38]
lea eax, [ebp - 0x34]
mov edx, 0x588030
call fcn.004068c8
mov eax, dword [ebp - 0x34]
mov edx, 0x587ea4
call fcn.0050c8a0
lea eax, [ebp - 0x3c]
mov ecx, dword [ebp - 0x10]
mov edx, 0x588064
call fcn.004068c8
mov eax, dword [ebp - 0x3c]
mov edx, 0x587ea4
call fcn.0050c8a0
lea edx, [ebp - 0x44]
mov eax, dword [ebp - 0x10]
call fcn.0045d4bc
mov ecx, dword [ebp - 0x44]
lea eax, [ebp - 0x40]
mov edx, 0x588098
call fcn.004068c8
mov eax, dword [ebp - 0x40]
mov edx, 0x587ea4
call fcn.0050c8a0
mov byte [ebp - 0x1a], 1
jmp 0x587835
inc ebx
dec esi
jne 0x587789
cmp byte [ebp - 0x1a], 0
je 0x587ac2
lea edx, [ebp - 0x48]
mov eax, dword [ebp - 0x10]
call fcn.0045d4bc
mov eax, dword [ebp - 0x48]
call fcn.00577fdc
test al, al
je 0x587ac2
cmp byte [ebp + 8], 0
je 0x587ab9
mov edx, 0x587ea4
mov eax, 0x5880cc
call fcn.0050c8a0
lea eax, [ebp - 0x4c]
mov ecx, 0x588104
mov edx, dword [ebp - 0x10]
call fcn.004068c8
mov eax, dword [ebp - 0x4c]
call fcn.0045cf74
test al, al
je 0x5878bc
mov edx, 0x587ea4
mov eax, 0x5880cc
call fcn.0050c8a0
lea eax, [ebp - 0x50]
mov ecx, 0x588104
mov edx, dword [ebp - 0x10]
call fcn.004068c8
mov eax, dword [ebp - 0x50]
call fcn.00406580
push eax
call sub.kernel32.dll_DeleteFileW
lea eax, [ebp - 0x54]
mov ecx, 0x588104
mov edx, dword [ebp - 0x10]
call fcn.004068c8
mov eax, dword [ebp - 0x54]
call fcn.00406580
push eax
mov eax, dword [ebp - 0x10]
call fcn.00406580
push eax
call sub.kernel32.dll_MoveFileW
cmp eax, 1
sbb eax, eax
inc eax
test al, al
je 0x587a8a
mov edx, 0x587ea4
mov eax, 0x58811c
call fcn.0050c8a0
lea eax, [ebp - 0x58]
mov ecx, 0x588104
mov edx, dword [ebp - 0x10]
call fcn.004068c8
mov eax, dword [ebp - 0x58]
call fcn.00406580
push eax
call sub.kernel32.dll_DeleteFileW
cmp eax, 1
sbb eax, eax
inc eax
test al, al
jne 0x587998
xor eax, eax
push ebp
push 0x58798e
push dword fs:[eax]
mov dword fs:[eax], esp
push 0x588150
push dword [ebp - 0x10]
push 0x588104
lea eax, [ebp - 0x5c]
mov edx, 3
call fcn.00406998
mov eax, dword [ebp - 0x5c]
mov edx, 0x587ea4
call fcn.0050c8a0
lea eax, [ebp - 0x60]
mov ecx, 0x588104
mov edx, dword [ebp - 0x10]
call fcn.004068c8
mov eax, dword [ebp - 0x60]
call fcn.00406580
mov edx, 0x588170
mov ecx, 1
call fcn.00578164
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x587998
push 0
mov eax, dword [ebp - 0x10]
call fcn.00406580
push eax
mov eax, dword [ebp - 0xc]
call fcn.00406580
push eax
call sub.kernel32.dll_CopyFileW
cmp eax, 1
sbb eax, eax
inc eax
mov byte [ebp - 0x19], al
cmp byte [ebp - 0x19], 0
jne 0x5879f3
cmp byte [ebp + 8], 0
je 0x5879f3
mov edx, 0x587ea4
mov eax, 0x588180
call fcn.0050c8a0
mov eax, dword [ebp - 0x10]
call fcn.00406580
push eax
mov eax, dword [ebp - 0xc]
call fcn.00406580
mov ecx, 2
pop edx
call fcn.00578164
jmp 0x587a02
mov edx, 0x587ea4
mov eax, 0x5881ac
call fcn.0050c8a0
mov eax, dword [ebp - 0xc]
call fcn.00406580
mov ebx, eax
mov edx, ebx
lea eax, [ebp - 0x64]
call fcn.004066a0
mov eax, dword [ebp - 0x64]
call fcn.00406580
push eax
call sub.kernel32.dll_DeleteFileW
cmp eax, 1
sbb eax, eax
inc eax
test al, al
jne 0x587e23
xor eax, eax
push ebp
push 0x587a7b
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x68]
mov ecx, dword [ebp - 0xc]
mov edx, 0x5881dc
call fcn.004068c8
mov eax, dword [ebp - 0x68]
mov edx, 0x587ea4
call fcn.0050c8a0
mov eax, ebx
mov edx, 0x588170
mov ecx, 1
call fcn.00578164
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x587e23
mov byte [ebp - 0x19], 0
cmp byte [ebp + 8], 0
je 0x587e23
mov eax, dword [ebp - 0x10]
call fcn.00406580
push eax
mov eax, dword [ebp - 0xc]
call fcn.00406580
mov ecx, 2
pop edx
call fcn.00578164
jmp 0x587e23
mov byte [ebp - 0x19], 0
jmp 0x587e23
lea eax, [ebp - 0x6c]
mov ecx, 0x588104
mov edx, dword [ebp - 0x10]
call fcn.004068c8
mov eax, dword [ebp - 0x6c]
call fcn.0045cf74
test al, al
je 0x587b78
lea eax, [ebp - 0x70]
mov ecx, 0x588104
mov edx, dword [ebp - 0x10]
call fcn.004068c8
mov eax, dword [ebp - 0x70]
call fcn.00406580
push eax
call sub.kernel32.dll_DeleteFileW
cmp eax, 1
sbb eax, eax
inc eax
test al, al
je 0x587b38
push 0x588208
push dword [ebp - 0x10]
push 0x588104
push 0x588238
lea eax, [ebp - 0x74]
mov edx, 4
call fcn.00406998
mov eax, dword [ebp - 0x74]
mov edx, 0x587ea4
call fcn.0050c8a0
jmp 0x587b78
push 0x588208
push dword [ebp - 0x10]
push 0x588104
push 0x588258
call sub.kernel32.dll_GetLastError_1
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x7c]
call fcn.0045ca34
push dword [ebp - 0x7c]
lea eax, [ebp - 0x78]
mov edx, 5
call fcn.00406998
mov eax, dword [ebp - 0x78]
mov edx, 0x587ea4
call fcn.0050c8a0
lea eax, [ebp - 0x80]
mov ecx, 0x588104
mov edx, dword [ebp - 0x10]
call fcn.004068c8
mov eax, dword [ebp - 0x80]
call fcn.00406580
push eax
mov eax, dword [ebp - 0x10]
call fcn.00406580
push eax
call sub.kernel32.dll_MoveFileW
cmp eax, 1
sbb eax, eax
inc eax
test al, al
je 0x587dc3
mov edx, 0x587ea4
mov eax, 0x588280
call fcn.0050c8a0
lea eax, [ebp - 0x84]
mov ecx, 0x588104
mov edx, dword [ebp - 0x10]
call fcn.004068c8
mov eax, dword [ebp - 0x84]
call fcn.00406580
push eax
call sub.kernel32.dll_DeleteFileW
cmp eax, 1
sbb eax, eax
inc eax
test al, al
jne 0x587c8b
push 0x5882c4
push dword [ebp - 0x10]
push 0x588104
push 0x588258
call sub.kernel32.dll_GetLastError_1
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x8c]
call fcn.0045ca34
push dword [ebp - 0x8c]
lea eax, [ebp - 0x88]
mov edx, 5
call fcn.00406998
mov eax, dword [ebp - 0x88]
mov edx, 0x587ea4
call fcn.0050c8a0
xor eax, eax
push ebp
push 0x587c7f
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x90]
mov ecx, 0x588104
mov edx, dword [ebp - 0x10]
call fcn.004068c8
mov eax, dword [ebp - 0x90]
call fcn.00406580
mov edx, 0x588170
mov ecx, 1
call fcn.00578164
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x587cbd
push 0x5882c4
push dword [ebp - 0x10]
push 0x588104
push 0x588238
lea eax, [ebp - 0x94]
mov edx, 4
call fcn.00406998
mov eax, dword [ebp - 0x94]
mov edx, 0x587ea4
call fcn.0050c8a0
push 0
mov eax, dword [ebp - 0x10]
call fcn.00406580
push eax
mov eax, dword [ebp - 0xc]
call fcn.00406580
push eax
call sub.kernel32.dll_CopyFileW
cmp eax, 1
sbb eax, eax
inc eax
mov byte [ebp - 0x19], al
cmp byte [ebp - 0x19], 0
je 0x587cf6
mov edx, 0x587ea4
mov eax, 0x588314
call fcn.0050c8a0
jmp 0x587d30
call sub.kernel32.dll_GetLastError_1
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x9c]
call fcn.0045ca34
mov ecx, dword [ebp - 0x9c]
lea eax, [ebp - 0x98]
mov edx, 0x58836c
call fcn.004068c8
mov eax, dword [ebp - 0x98]
mov edx, 0x587ea4
call fcn.0050c8a0
cmp byte [ebp - 0x19], 0
jne 0x587d58
cmp byte [ebp + 8], 0
je 0x587d58
mov eax, dword [ebp - 0x10]
call fcn.00406580
push eax
mov eax, dword [ebp - 0xc]
call fcn.00406580
mov ecx, 2
pop edx
call fcn.00578164
mov eax, dword [ebp - 0xc]
call fcn.00406580
mov ebx, eax
mov edx, ebx
lea eax, [ebp - 0xa0]
call fcn.004066a0
mov eax, dword [ebp - 0xa0]
call fcn.00406580
push eax
call sub.kernel32.dll_DeleteFileW
cmp eax, 1
sbb eax, eax
inc eax
test al, al
jne 0x587e23
xor eax, eax
push ebp
push 0x587db7
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, ebx
mov edx, 0x588170
mov ecx, 1
call fcn.00578164
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x587e23
call sub.kernel32.dll_GetLastError_1
xor edx, edx
push edx
push eax
lea eax, [ebp - 0xa8]
call fcn.0045ca34
mov ecx, dword [ebp - 0xa8]
lea eax, [ebp - 0xa4]
mov edx, 0x5883cc
call fcn.004068c8
mov eax, dword [ebp - 0xa4]
mov edx, 0x587ea4
call fcn.0050c8a0
mov byte [ebp - 0x19], 0
cmp byte [ebp + 8], 0
je 0x587e23
mov eax, dword [ebp - 0x10]
call fcn.00406580
push eax
mov eax, dword [ebp - 0xc]
call fcn.00406580
mov ecx, 2
pop edx
call fcn.00578164
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x587e55
lea eax, [ebp - 0xa8]
mov edx, 0x23
call fcn.004064ec
lea eax, [ebp - 0x14]
mov edx, 5
call fcn.004064ec
ret