Function at 0x4055d0
Capabilities:
Check if file exists
Copy file

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x51b66b
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x148
mov eax, dword [0x54735c]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [ebx + 0xc]
mov edi, dword [ebx + 8]
mov dword [ebp - 0x158], esi
cmp dword [esi + 0x10], 0
je 0x405de8
cmp dword [edi + 0x10], 0
je 0x405de8
cmp dword [edi + 0x14], 8
mov eax, edi
jb 0x40563b
mov eax, dword [edi]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x405de8
mov ecx, edi
call fcn.00403fa0
test al, al
je 0x405688
cmp dword [esi + 0x10], 0
je 0x40567f
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x405665
mov eax, dword [esi]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x40567f
mov ecx, esi
call fcn.00403fa0
test al, al
je 0x405de8
push esi
call fcn.004044d0
add esp, 4
xor eax, eax
mov dword [ebp - 0xc4], 0
mov dword [ebp - 0xc0], 7
mov word [ebp - 0xd4], ax
mov dword [ebp - 4], eax
mov dword [ebp - 0xac], eax
mov dword [ebp - 0xa8], 7
mov word [ebp - 0xbc], ax
lea eax, [ebp - 0xbc]
mov byte [ebp - 4], 1
push eax
lea eax, [ebp - 0xd4]
push eax
sub esp, 0x18
mov ecx, esp
push edi
call fcn.004031b0
call fcn.00405140
add esp, 0x20
test al, al
jne 0x4056f3
mov byte [ebp - 0x135], al
jmp 0x405dca
xor eax, eax
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x90], 7
mov word [ebp - 0xa4], ax
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x78], 7
mov word [ebp - 0x8c], ax
lea eax, [ebp - 0x8c]
mov byte [ebp - 4], 3
push eax
lea eax, [ebp - 0xa4]
push eax
sub esp, 0x18
mov ecx, esp
push esi
call fcn.004031b0
call fcn.00405140
add esp, 0x20
test al, al
je 0x405dad
mov ecx, edi
call fcn.00403fa0
test al, al
jne 0x405992
lea eax, [ebp - 0xa4]
push eax
call fcn.004044d0
add esp, 4
test al, al
je 0x405dad
cmp dword [ebp - 0x7c], 0
lea ecx, [ebp - 0x8c]
lea eax, [ebp - 0xbc]
cmovne eax, ecx
lea edx, [ebp - 0xa4]
push eax
lea ecx, [ebp - 0x2c]
call fcn.00408170
add esp, 4
lea eax, [ebp - 0x2c]
mov byte [ebp - 4], 4
push eax
call fcn.00404110
add esp, 4
test al, al
je 0x4057ca
cmp dword [edi + 0x10], 0
je 0x405829
cmp dword [edi + 0x14], 8
mov eax, edi
jb 0x4057bd
mov eax, dword [edi]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
push eax
call esi
test eax, eax
je 0x40582f
push 0x536234
lea ecx, [ebp - 0x5c]
call fcn.00402260
lea eax, [ebp - 0x5c]
mov byte [ebp - 4], 6
push eax
mov dl, 1
lea ecx, [ebp - 0x2c]
call fcn.00404f30
mov edx, dword [ebp - 0x48]
add esp, 4
cmp edx, 8
jb 0x405929
mov ecx, dword [ebp - 0x5c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40591f
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e08
jmp 0x40591f
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
cmp dword [ebp - 0x1c], 0
je 0x405847
cmp dword [ebp - 0x18], 8
lea eax, [ebp - 0x2c]
cmovae eax, dword [ebp - 0x2c]
push eax
call esi
test eax, eax
jne 0x4057ca
lea edx, [ebp - 0x2c]
lea ecx, [ebp - 0x5c]
call fcn.00403d00
mov esi, eax
mov edx, edi
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x44]
call fcn.00403d00
cmp dword [esi + 0x14], 0x10
mov edx, esi
jb 0x40586c
mov edx, dword [esi]
cmp dword [eax + 0x14], 0x10
mov ecx, eax
jb 0x405876
mov ecx, dword [eax]
push dword [esi + 0x10]
push edx
mov edx, dword [eax + 0x10]
call fcn.00408970
mov edx, dword [ebp - 0x30]
add esp, 8
mov byte [ebp - 0x135], al
cmp edx, 0x10
jb 0x4058bf
mov ecx, dword [ebp - 0x44]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4058b5
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e0d
push edx
push ecx
call fcn.004f2ead
add esp, 8
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x48]
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 0xf
mov byte [ebp - 0x44], 0
cmp edx, 0x10
jb 0x405909
mov ecx, dword [ebp - 0x5c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4058ff
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e12
push edx
push ecx
call fcn.004f2ead
add esp, 8
cmp byte [ebp - 0x135], 0
je 0x4057ca
mov byte [ebp - 0x135], 1
jmp 0x40594f
push edx
push ecx
call fcn.004f2ead
add esp, 8
cmp dword [ebp - 0x18], 8
lea eax, [ebp - 0x2c]
cmovae eax, dword [ebp - 0x2c]
cmp dword [edi + 0x14], 8
jb 0x40593c
mov edi, dword [edi]
push 0
push eax
push edi
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
setne byte [ebp - 0x135]
mov edx, dword [ebp - 0x18]
cmp edx, 8
jb 0x405db4
mov ecx, dword [ebp - 0x2c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x405983
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e17
push edx
push ecx
call fcn.004f2ead
add esp, 8
jmp 0x405db4
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
push 0
push 1
lea edx, [ebp - 0x20]
mov byte [ebp - 4], 7
mov ecx, edi
call fcn.004061f0
xor ecx, ecx
mov eax, 0x2aaaaaab
mov dword [ebp - 0x13c], ecx
add esp, 8
mov ecx, dword [ebp - 0x1c]
sub ecx, dword [ebp - 0x20]
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x405c0c
xor eax, eax
mov dword [ebp - 0x140], eax
nop dword [eax]
mov ecx, dword [ebp - 0x20]
mov edx, dword [edi + 0x10]
add ecx, eax
mov eax, dword [ecx + 0x10]
sub eax, edx
dec eax
push eax
lea eax, [edx + 1]
push eax
lea eax, [ebp - 0xec]
push eax
call fcn.00406710
push esi
lea ecx, [ebp - 0x44]
mov byte [ebp - 4], 8
call fcn.004031b0
mov edx, 0x5c
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x44]
call fcn.0040a140
mov edx, 0x2f
lea ecx, [ebp - 0x44]
call fcn.0040a140
push 0x536230
lea ecx, [ebp - 0x134]
call fcn.00402260
mov esi, eax
push 0x536230
lea ecx, [ebp - 0x11c]
mov byte [ebp - 4], 0xa
call fcn.00402260
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x44]
cmp dword [ebp - 0x30], 8
push dword [ebp - 0x34]
cmovae ecx, dword [ebp - 0x44]
push ecx
push ecx
mov ecx, eax
call fcn.004079c0
mov dword [ebp - 0x4c], 0
xor ecx, ecx
mov dword [ebp - 0x48], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x5c], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x4c], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
lea eax, [ebp - 0xec]
mov byte [ebp - 4], 0xc
push eax
lea edx, [ebp - 0x5c]
lea ecx, [ebp - 0x104]
call fcn.00408110
add esp, 4
mov edx, eax
mov byte [ebp - 4], 0xd
mov ecx, dword [esi + 0x10]
mov dword [ebp - 0x154], ecx
mov ecx, dword [edx + 0x14]
sub ecx, dword [edx + 0x10]
mov eax, dword [ebp - 0x154]
cmp eax, ecx
jbe 0x405b1b
mov eax, dword [esi + 0x14]
sub eax, dword [ebp - 0x154]
mov ecx, dword [edx + 0x10]
cmp eax, ecx
jb 0x405b15
cmp dword [edx + 0x14], 8
jb 0x405b00
mov edx, dword [edx]
push ecx
push edx
push ecx
mov ecx, esi
call fcn.004079c0
push eax
lea ecx, [ebp - 0x74]
call fcn.00403c60
jmp 0x405b5e
mov eax, dword [ebp - 0x154]
cmp dword [esi + 0x14], 8
jb 0x405b23
mov esi, dword [esi]
push eax
push esi
mov ecx, edx
call fcn.00407f10
mov dword [ebp - 0x64], 0
xor ecx, ecx
mov dword [ebp - 0x60], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x74], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x64], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
lea ecx, [ebp - 0x104]
call fcn.00403ca0
lea ecx, [ebp - 0x5c]
call fcn.00403ca0
lea ecx, [ebp - 0x11c]
call fcn.00403ca0
lea ecx, [ebp - 0x134]
mov byte [ebp - 4], 0x12
call fcn.00403ca0
lea eax, [ebp - 0x74]
push eax
call fcn.004044d0
mov esi, dword [ebp - 0x140]
lea eax, [ebp - 0x74]
add esp, 4
push eax
mov eax, dword [ebp - 0x20]
add eax, esi
push eax
call fcn.004055d0
add esp, 8
lea ecx, [ebp - 0x74]
call fcn.00403ca0
lea ecx, [ebp - 0x44]
call fcn.00403ca0
lea ecx, [ebp - 0xec]
mov byte [ebp - 4], 7
call fcn.00403ca0
mov ecx, dword [ebp - 0x1c]
mov eax, 0x2aaaaaab
sub ecx, dword [ebp - 0x20]
add esi, 0x18
inc dword [ebp - 0x13c]
imul ecx
mov dword [ebp - 0x140], esi
mov esi, dword [ebp - 0x158]
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [ebp - 0x13c], eax
mov eax, dword [ebp - 0x140]
jb 0x4059f0
mov dword [ebp - 0x150], 0
mov dword [ebp - 0x14c], 0
mov dword [ebp - 0x148], 0
push 0
push 0
lea edx, [ebp - 0x150]
mov byte [ebp - 4], 0x13
mov ecx, edi
call fcn.004061f0
mov edi, dword [ebp - 0x14c]
xor ecx, ecx
mov esi, dword [ebp - 0x150]
mov eax, 0x2aaaaaab
mov dword [ebp - 0x140], ecx
add esp, 8
mov ecx, edi
sub ecx, esi
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x405cce
mov edi, dword [ebp - 0x158]
xor eax, eax
mov dword [ebp - 0x13c], eax
nop dword [eax + eax]
add eax, esi
push edi
push eax
call fcn.004055d0
mov ecx, dword [ebp - 0x14c]
mov eax, 0x2aaaaaab
mov esi, dword [ebp - 0x150]
add esp, 8
inc dword [ebp - 0x140]
sub ecx, esi
add dword [ebp - 0x13c], 0x18
imul ecx
mov ecx, dword [ebp - 0x140]
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ecx, eax
mov eax, dword [ebp - 0x13c]
jb 0x405c80
mov edi, dword [ebp - 0x14c]
test esi, esi
je 0x405d4a
push ecx
mov edx, edi
mov ecx, esi
call fcn.00402fe0
mov ecx, dword [ebp - 0x148]
mov eax, 0x2aaaaaab
mov esi, dword [ebp - 0x150]
add esp, 4
sub ecx, esi
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
mov eax, esi
shl ecx, 3
cmp ecx, 0x1000
jb 0x405d22
mov esi, dword [esi - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e1c
push ecx
push esi
call fcn.004f2ead
add esp, 8
mov dword [ebp - 0x150], 0
mov dword [ebp - 0x14c], 0
mov dword [ebp - 0x148], 0
mov ecx, dword [ebp - 0x20]
test ecx, ecx
je 0x405da4
mov edx, dword [ebp - 0x1c]
push ecx
call fcn.00402fe0
mov ecx, dword [ebp - 0x18]
mov eax, 0x2aaaaaab
mov esi, dword [ebp - 0x20]
add esp, 4
sub ecx, esi
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
mov eax, esi
shl ecx, 3
cmp ecx, 0x1000
jb 0x405d9a
mov esi, dword [esi - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e21
push ecx
push esi
call fcn.004f2ead
add esp, 8
mov byte [ebp - 0x135], 1
jmp 0x405db4
mov byte [ebp - 0x135], 0
lea ecx, [ebp - 0x8c]
call fcn.00403ca0
lea ecx, [ebp - 0xa4]
call fcn.00403ca0
lea ecx, [ebp - 0xbc]
call fcn.00403ca0
lea ecx, [ebp - 0xd4]
call fcn.00403ca0
mov al, byte [ebp - 0x135]
jmp 0x405dea
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004f313b
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
call fcn.004f855c
call fcn.004f855c
call fcn.004f855c
call fcn.004f855c
call fcn.004f855c
call fcn.004f855c
int3