Function at 0x406ec0
Capabilities:
Copy file
Get file attributes
Set file attributes

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x410256
push eax
mov dword fs:[0], esp
sub esp, 0x490
mov ecx, 0x88
xor eax, eax
push esi
mov esi, dword [esp + 0x4a8]
push edi
lea edi, [esp + 0x278]
test esi, esi
rep stosd dword es:[edi], eax
je 0x407166
mov edi, dword [esp + 0x4b0]
test edi, edi
je 0x407166
mov eax, dword [esp + 0x4b4]
test eax, eax
je 0x407166
push ebx
push ebp
push esi
push eax
lea ecx, [esp + 0x18]
call fcn.00401000
push esi
push edi
lea ecx, [esp + 0x150]
mov dword [esp + 0x4b0], 0
call fcn.00401000
lea ecx, [esp + 0x148]
mov byte [esp + 0x4a8], 1
call fcn.004011f0
mov ebp, eax
test ebp, ebp
jne 0x4070c1
lea ecx, [esp + 0x10]
call fcn.004011f0
lea ecx, [esp + 0x148]
mov ebx, eax
call fcn.004011b0
lea ecx, [esp + 0x10]
mov edi, eax
mov esi, edx
call fcn.004011b0
cmp esi, edx
jg 0x406fe0
jl 0x406f8c
cmp edi, eax
ja 0x406fe0
lea ecx, [esp + 0x148]
call fcn.004011b0
lea ecx, [esp + 0x10]
mov esi, eax
mov edi, edx
call fcn.004011b0
cmp esi, eax
jne 0x407123
cmp edi, edx
jne 0x407123
lea ecx, [esp + 0x148]
call fcn.004011c0
lea ecx, [esp + 0x10]
mov edi, eax
mov esi, edx
call fcn.004011c0
cmp esi, edx
jl 0x407123
jg 0x406fe0
cmp edi, eax
jbe 0x407123
cmp ebx, 0x20
je 0x407123
cmp ebx, 5
je 0x407123
push 0
lea ecx, [esp + 0x14]
call fcn.004011e0
push eax
lea ecx, [esp + 0x150]
call fcn.004011e0
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
je 0x40703d
lea ecx, [esp + 0x10]
call fcn.004011e0
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
and al, 0xfe
lea ecx, [esp + 0x10]
push eax
call fcn.004011e0
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
jmp 0x407123
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
cmp ebp, 0x20
je 0x4070bd
cmp ebp, 5
je 0x4070bd
lea ecx, [esp + 0x148]
call fcn.004011e0
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x284]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x10]
call fcn.004011e0
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x389]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov dword [esp + 0x280], 0xc39d
jmp 0x4070fe
xor ebp, ebp
jmp 0x407123
lea ecx, [esp + 0x148]
call fcn.004011e0
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x284]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov dword [esp + 0x280], 0xc39c
test ebp, ebp
je 0x407123
cmp ebp, 0xbc2
je 0x407123
mov edx, dword [esp + 0x4b0]
lea ecx, [esp + 0x280]
push ecx
push ebp
push edx
call fcn.004078d0
add esp, 0xc
lea ecx, [esp + 0x148]
mov byte [esp + 0x4a8], 0
call fcn.00401110
lea ecx, [esp + 0x10]
mov dword [esp + 0x4a8], 0xffffffff
call fcn.00401110
mov eax, ebp
pop ebp
pop ebx
pop edi
pop esi
mov ecx, dword [esp + 0x490]
mov dword fs:[0], ecx
add esp, 0x49c
ret
mov ecx, dword [esp + 0x498]
pop edi
mov eax, 0x57
pop esi
mov dword fs:[0], ecx
add esp, 0x49c
ret