Function at 0x402d90
Capabilities:
Copy file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x550d68
mov eax, dword fs:[0]
push eax
sub esp, 0x10
push ebx
push esi
push edi
mov eax, dword [0x5aa170]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov byte [ebp - 0xd], 0
call fcn.00407e43
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x402dd8
push 0x80004005
call fcn.004041c0
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.00407e43
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x402e08
push 0x80004005
call fcn.004041c0
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
mov byte [ebp - 4], 1
mov esi, dword [ebp + 0x10]
push esi
push dword [ebp + 8]
lea eax, [ebp - 0x18]
push 0x585da8
push eax
call fcn.004039d0
push esi
push dword [ebp + 0xc]
lea eax, [ebp - 0x14]
push 0x585da8
push eax
call fcn.004039d0
add esp, 0x20
call fcn.00407e43
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x402e5f
push 0x80004005
call fcn.004041c0
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.004040f0
lea edi, [eax + 0x10]
mov dword [ebp + 8], edi
push 0x5c
push edi
mov byte [ebp - 4], 3
call fcn.0052a276
add esp, 0xc
test eax, eax
jne 0x402e9d
or eax, 0xffffffff
jmp 0x402ea1
sub eax, edi
sar eax, 1
inc eax
test eax, eax
jle 0x402ee6
push eax
push 0
lea eax, [ebp + 0xc]
push eax
lea ecx, [ebp + 8]
call fcn.00403390
push eax
lea ecx, [ebp + 0x10]
mov byte [ebp - 4], 4
call fcn.004038e0
mov byte [ebp - 4], 3
mov edx, dword [ebp + 0xc]
add edx, 0xfffffff0
or ecx, 0xffffffff
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x402ee3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp + 0x10]
push esi
call fcn.00402fa0
push 0
push ebx
mov ebx, dword [ebp - 0x18]
push ebx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
movzx ecx, byte [ebp - 0xd]
mov edx, 1
test eax, eax
cmovne ecx, edx
lea edx, [edi - 0x10]
or edi, 0xffffffff
mov dword [ebp + 8], ecx
mov byte [ebp - 4], 2
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x402f2a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov byte [ebp - 4], 1
lea eax, [esi + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x402f47
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x1c]
mov byte [ebp - 4], 0
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x402f64
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 0x402f82
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