Function at 0x407ce0
Capabilities:
Check if file exists
Copy file
Get file attributes

Disassembly:
push 0xffffffffffffffff
push 0x477b86
mov eax, dword fs:[0]
push eax
sub esp, 0x864
mov eax, dword [0x4eec64]
xor eax, esp
mov dword [esp + 0x860], eax
push ebx
push ebp
push edi
mov eax, dword [0x4eec64]
xor eax, esp
push eax
lea eax, [esp + 0x874]
mov dword fs:[0], eax
xor ebx, ebx
cmp byte [0x4f0c99], 0xff
jne 0x407e24
lea eax, [esp + 0x76b]
push eax
lea ecx, [esp + 0x66f]
push ecx
lea edx, [esp + 0x573]
push edx
lea eax, [esp + 0x574]
push eax
push str.res_
mov dword [esp + 0x880], ebx
mov byte [esp + 0x478], bl
mov byte [esp + 0x57c], bl
mov byte [esp + 0x57f], bl
mov byte [esp + 0x67f], bl
mov byte [esp + 0x77f], bl
call fcn.0045f3f7
lea ecx, [esp + 0x478]
push ecx
mov dword [esp + 0x894], ebx
call fcn.00403b20
lea edx, [esp + 0x783]
push edx
lea eax, [esp + 0x687]
push eax
lea ecx, [esp + 0x58b]
push ecx
lea edx, [esp + 0x58c]
push edx
lea eax, [esp + 0x48c]
push eax
call fcn.0045f443
add esp, 0x2c
lea ecx, [esp + 0x464]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
mov dword [esp + 0x87c], 0xffffffff
mov ecx, dword [esp + 0x86c]
setne byte [0x4f0c99]
cmp ecx, ebx
je 0x407e24
mov eax, dword [ecx]
and eax, 0xff
cmp eax, 0x80
jae 0x407e10
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
mov ecx, dword [esp + 0x86c]
and eax, 0xff
cmp eax, ebx
jne 0x407e1d
push ecx
call fcn.00402770
add esp, 4
mov dword [esp + 0x86c], ebx
cmp byte [0x4f0c99], 0
je 0x40800e
lea edx, [esp + 0x58]
push edx
mov eax, 0x4f8650
call fcn.004073f0
mov eax, esi
call fcn.00419850
push pe_nt_image_headers32
push eax
lea eax, [esp + 0x267]
push eax
call fcn.0045e4a0
lea ecx, [esp + 0x36b]
push ecx
lea edx, [esp + 0x26f]
push edx
lea eax, [esp + 0x173]
push eax
lea ecx, [esp + 0x174]
push ecx
lea edx, [esp + 0x74]
push edx
call fcn.0045f443
mov edi, dword [sym.imp.KERNEL32.dll_GetFileAttributesExA]
add esp, 0x20
lea eax, [esp + 0x34]
push eax
push ebx
lea ecx, [esp + 0x60]
push ecx
call edi
test eax, eax
je 0x407f19
lea edx, [esi + 0x307]
push edx
lea eax, [esi + 0x207]
push eax
lea ecx, [esi + 0x107]
push ecx
lea edx, [esi + 0x104]
push edx
push esi
call fcn.0045f443
add esp, 0x14
lea eax, [esp + 0x10]
push eax
push ebx
push esi
call edi
test eax, eax
je 0x407f19
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x4c]
push edx
call dword [sym.imp.KERNEL32.dll_CompareFileTime]
test eax, eax
jne 0x407efd
lea ecx, [esp + 0x58]
mov dword [esp + 0x87c], 0xffffffff
call fcn.004032b0
jmp 0x40800e
test byte [esp + 0x10], 1
je 0x407f19
push 0x80
mov ecx, esi
call fcn.004196d0
push eax
call fcn.0045ef52
add esp, 8
lea edi, [esi + 0x307]
push edi
lea ebp, [esi + 0x207]
push ebp
lea ebx, [esi + 0x107]
lea eax, [esi + 0x104]
push ebx
push eax
push esi
call fcn.0045f443
lea eax, [esp + 0x373]
push eax
lea ecx, [esp + 0x277]
push ecx
lea edx, [esp + 0x17b]
push edx
lea eax, [esp + 0x17c]
push eax
lea ecx, [esp + 0x7c]
push ecx
call fcn.0045f443
add esp, 0x28
push 0
push esi
lea edx, [esp + 0x60]
push edx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
jne 0x407fca
push edi
push ebp
push ebx
lea eax, [esi + 0x104]
push eax
push esi
call fcn.0045f443
lea eax, [esp + 0x373]
push eax
lea ecx, [esp + 0x277]
push ecx
lea edx, [esp + 0x17b]
push edx
lea eax, [esp + 0x17c]
push eax
lea ecx, [esp + 0x7c]
push ecx
call fcn.0045f443
push esi
lea edx, [esp + 0x84]
push edx
push str.WARNING:_COULD_NOT_COPY__s_to__s_n
call fcn.00402b20
add esp, 0x34
mov dword [esp + 0x87c], 0xffffffff
mov ecx, dword [esp + 0x460]
test ecx, ecx
je 0x40800e
mov eax, dword [ecx]
and eax, 0xff
cmp eax, 0x80
jae 0x408001
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
mov ecx, dword [esp + 0x460]
and eax, 0xff
test eax, eax
jne 0x40800e
push ecx
call fcn.00402770
add esp, 4
xor eax, eax
mov ecx, dword [esp + 0x874]
mov dword fs:[0], ecx
pop ecx
pop edi
pop ebp
pop ebx
mov ecx, dword [esp + 0x860]
xor ecx, esp
call fcn.0045c0ce
add esp, 0x870
ret