Function at 0x403900
Capabilities:
Copy file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x547d28
mov eax, dword fs:[0]
push eax
sub esp, 0x10
push ebx
push esi
push edi
mov eax, dword [0x5ac1b8]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov byte [ebp - 0xd], 0
call fcn.00408a45
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x403948
push 0x80004005
call fcn.00404d40
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], 0
call fcn.00408a45
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x403978
push 0x80004005
call fcn.00404d40
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
mov byte [ebp - 4], 1
lea eax, [ebp - 0x18]
mov esi, dword [ebp + 0x10]
push esi
push dword [ebp + 8]
push 0x58be58
push eax
call fcn.00404540
push esi
push dword [ebp + 0xc]
lea eax, [ebp - 0x14]
push 0x58be58
push eax
call fcn.00404540
add esp, 0x20
call fcn.00408a45
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4039cf
push 0x80004005
call fcn.00404d40
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp + 0x10], esi
mov byte [ebp - 4], 2
mov ebx, dword [ebp - 0x14]
lea eax, [ebx - 0x10]
push eax
mov dword [ebp - 0x1c], eax
call fcn.00404c70
lea edi, [eax + 0x10]
mov dword [ebp + 8], edi
push 0x5c
push edi
mov byte [ebp - 4], 3
call fcn.0052fcbc
add esp, 0xc
test eax, eax
jne 0x403a0d
or eax, 0xffffffff
jmp 0x403a11
sub eax, edi
sar eax, 1
inc eax
test eax, eax
jle 0x403a56
push eax
push 0
lea eax, [ebp + 0xc]
push eax
lea ecx, [ebp + 8]
call fcn.00403f00
push eax
lea ecx, [ebp + 0x10]
mov byte [ebp - 4], 4
call fcn.00404450
mov byte [ebp - 4], 3
or ecx, 0xffffffff
mov edx, dword [ebp + 0xc]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x403a53
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp + 0x10]
push esi
call fcn.00403b10
push 0
push ebx
mov ebx, dword [ebp - 0x18]
push ebx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
movzx ecx, byte [ebp - 0xd]
test eax, eax
mov edx, 1
mov byte [ebp - 4], 2
cmovne ecx, edx
lea edx, [edi - 0x10]
or edi, 0xffffffff
mov dword [ebp + 8], ecx
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x403a9a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov byte [ebp - 4], 1
mov ecx, edi
lea eax, [esi + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x403ab7
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x1c]
mov ecx, edi
mov byte [ebp - 4], 0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x403ad4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add ebx, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea eax, [ebx + 0xc]
lock xadd dword [eax], edi
dec edi
test edi, edi
jg 0x403af2
mov ecx, dword [ebx]
push ebx
mov edx, dword [ecx]
call dword [edx + 4]
mov al, byte [ebp + 8]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc