Function at 0x426140
Capabilities:
Copy file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x520390
mov eax, dword fs:[0]
push eax
sub esp, 0x28
push ebx
push esi
push edi
mov eax, dword [0x595cb8]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, edx
mov edi, ecx
call fcn.004259c0
test al, al
jne 0x4262e5
push str.file_not_exists:
lea ecx, [ebp - 0x20]
call fcn.0041f870
push str.CopyFile
lea ecx, [ebp - 0x1c]
mov dword [ebp - 4], 0
call fcn.0041f910
mov byte [ebp - 4], 1
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x4261b3
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x20]
mov byte [ebp - 4], 2
push eax
lea edx, [ebp - 0x18]
lea ecx, [ebp - 0x28]
call fcn.00420f70
push edi
mov edx, eax
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x24]
call fcn.00420f70
add esp, 8
mov esi, eax
push 0x56d330
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 4
call fcn.0041f910
push 2
push esi
lea eax, [ebp - 0x1c]
mov byte [ebp - 4], 5
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.004210a0
mov byte [ebp - 4], 4
or ebx, 0xffffffff
mov edx, dword [ebp - 0x14]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x42622b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, ebx
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x426249
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, ebx
mov edx, dword [ebp - 0x28]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x426267
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov eax, ebx
mov edx, dword [ebp - 0x18]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x426285
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
mov eax, ebx
mov edx, dword [ebp - 0x1c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4262a3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x20]
lea edx, [eax - 0x10]
lock xadd dword [edx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x4262c2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp + 0xc]
push 0x14
push str.file_does_not_exists
call fcn.0041fd40
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 0xc]
mov ecx, esi
push 1
call fcn.00425a90
add esp, 4
test al, al
jne 0x426456
push str.directory_create_error:
lea ecx, [ebp - 0x18]
call fcn.0041f870
push str.CopyFile
lea ecx, [ebp - 0x1c]
mov dword [ebp - 4], 6
call fcn.0041f910
mov byte [ebp - 4], 7
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x426336
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x28], edi
lea eax, [ebp - 0x18]
mov byte [ebp - 4], 8
push eax
lea edx, [ebp - 0x28]
lea ecx, [ebp - 0x14]
call fcn.00420f70
push esi
mov edx, eax
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x24]
call fcn.00420f70
add esp, 8
mov esi, eax
push 0x56d330
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 0xa
call fcn.0041f910
push 2
push esi
lea eax, [ebp - 0x1c]
mov byte [ebp - 4], 0xb
push eax
lea eax, [ebp - 0x20]
push eax
call fcn.004210a0
mov byte [ebp - 4], 0xa
or ebx, 0xffffffff
mov edx, dword [ebp - 0x20]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4263ae
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 9
mov eax, ebx
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4263cc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 8
mov eax, ebx
mov edx, dword [ebp - 0x14]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4263ea
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
lea edx, [edi - 0x10]
mov eax, ebx
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x426405
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
mov eax, ebx
mov edx, dword [ebp - 0x1c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x426423
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x18]
lea edx, [eax - 0x10]
lock xadd dword [edx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x426442
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.0040f350
mov ecx, eax
test ecx, ecx
jne 0x42646b
push 0x80004005
call fcn.0041f2a0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 4], 0xc
push dword [eax]
lea eax, [ebp - 0x20]
push dword [esi]
push str._s_s
push eax
call fcn.00420c20
mov esi, dword [ebp - 0x20]
add esp, 0x10
push 0
push esi
push dword [edi]
call dword [sym.imp.KERNEL32.dll_CopyFileW]
or ebx, 0xffffffff
test eax, eax
jne 0x426550
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0x34]
call fcn.00421010
mov edi, eax
push str.copyfile_failed_
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0xd
call fcn.0041f870
push edi
mov edx, eax
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0x2c]
call fcn.00420f70
add esp, 4
mov ecx, dword [ebp + 0xc]
push eax
mov byte [ebp - 4], 0xf
call fcn.00421a50
mov byte [ebp - 4], 0xe
mov eax, ebx
mov edx, dword [ebp - 0x2c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x42650e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xd
mov eax, ebx
mov edx, dword [ebp - 0x30]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x42652c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xc
mov eax, ebx
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x42654a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 0xd], 0
jmp 0x426554
mov byte [ebp - 0xd], 1
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x426570
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov al, byte [ebp - 0xd]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret