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

Disassembly:
push 0xffffffffffffffff
push 0x5a6496
mov eax, dword fs:[0]
push eax
sub esp, 0xb0
push ebx
push ebp
push esi
push edi
mov eax, dword [0x5f13cc]
xor eax, esp
push eax
lea eax, [esp + 0xc4]
mov dword fs:[0], eax
mov esi, dword [esp + 0xdc]
lea eax, [esp + 0x1c]
push eax
mov ecx, esi
call fcn.00404460
test esi, esi
mov dword [esp + 0xcc], 0
mov eax, dword [esp + 0x1c]
je 0x4ceb0b
cmp dword [eax - 0xc], 0
je 0x4ceb0b
mov ecx, dword [esp + 0xd4]
add ecx, 0xc
push ecx
lea edx, [esp + 0x38]
push edx
mov ebx, str.Skin_
call fcn.00412480
push eax
lea eax, [esp + 0x3c]
push eax
mov ebx, esi
mov byte [esp + 0xdc], 1
call fcn.00412480
add esp, 0x10
lea edi, [esp + 0x1c]
mov byte [esp + 0xcc], 2
call fcn.004035d0
mov byte [esp + 0xcc], 1
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ce47c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xcc], 0
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ce4a4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.00528b80
mov edi, eax
xor ebp, ebp
cmp edi, ebp
mov dword [esp + 0x30], edi
jne 0x4ce4c9
mov dword [esp + 0xcc], 0xffffffff
mov eax, dword [esp + 0x1c]
jmp 0x4ceb16
mov dword [esp + 0x24], ebp
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x4c], 0xffffffff
mov dword [esp + 0x50], ebp
mov dword [esp + 0x54], ebp
mov dword [esp + 0x58], ebp
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x64], ebp
mov dword [esp + 0x6c], ebp
lea ecx, [esp + 0x4c]
mov byte [esp + 0xcc], 4
push ecx
mov ecx, dword [esp + 0x20]
mov eax, 1
call fcn.004d0930
test eax, eax
jne 0x4ce5a4
mov edx, dword [0x5fcd20]
mov eax, dword [edx + 0xc]
mov ecx, 0x5fcd20
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
lea ecx, [esp + 0x18]
push ecx
lea eax, [esp + 0x50]
mov byte [esp + 0xd0], 5
call fcn.004d05c0
test eax, eax
je 0x4ce57a
lea esp, [esp]
mov edx, dword [esp + 0x18]
cmp dword [edx - 0xc], ebp
je 0x4ce568
lea ebx, [esp + 0x18]
lea esi, [esp + 0x20]
call fcn.00428c20
xor ebp, ebp
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x50]
call fcn.004d05c0
test eax, eax
jne 0x4ce550
lea esi, [esp + 0x64]
call fcn.004d04e0
lea ecx, [esp + 0x18]
mov dword [esp + 0x4c], 0xffffffff
mov dword [esp + 0x50], ebp
mov dword [esp + 0x54], ebp
mov byte [esp + 0xcc], 4
call fcn.00404510
mov edx, dword [0x5fcd20]
mov eax, dword [edx + 0xc]
mov ecx, 0x5fcd20
call eax
add eax, 0x10
mov dword [esp + 0x44], eax
lea esi, [esp + 0x44]
mov byte [esp + 0xcc], 6
call fcn.00403f60
mov edx, dword [0x5fcd20]
mov eax, dword [edx + 0xc]
mov ecx, 0x5fcd20
call eax
add eax, 0x10
mov dword [esp + 0x40], eax
mov byte [esp + 0xcc], 7
mov edx, dword [0x5fcd20]
mov eax, dword [edx + 0xc]
mov ecx, 0x5fcd20
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0xd8]
mov byte [esp + 0xcc], 8
mov eax, dword [ecx + 4]
mov eax, dword [eax]
mov dword [esp + 0x3c], eax
lea ebx, [ebx]
cmp eax, dword [ecx + 4]
je 0x4ce874
mov eax, dword [esp + 0x3c]
add eax, 8
lea edi, [esp + 0x40]
call fcn.004035d0
lea esi, [esp + 0x18]
call fcn.00403f60
push 0x34
lea ecx, [esp + 0x90]
push ebp
push ecx
call fcn.00580260
add esp, 0xc
mov edx, dword [esp + 0xd4]
mov byte [esp + 0xcc], 9
mov eax, dword [edx + 4]
mov ebx, dword [esp + 0x40]
mov edi, dword [esp + 0x30]
push ebx
push eax
lea eax, [esp + 0x94]
push eax
lea ecx, [esp + 0x40]
push ecx
mov dword [esp + 0x44], ebp
call fcn.00529aa0
test eax, eax
je 0x4ce6a9
cmp dword [esp + 0x34], ebp
je 0x4ce6a9
mov edx, dword [esp + 0x98]
mov edi, esi
call fcn.004040f0
mov edx, str.__1__
call fcn.00412930
mov edx, dword [esp + 0x18]
cmp dword [edx - 0xc], ebp
je 0x4ce725
mov esi, dword [esp + 0x24]
cmp esi, dword [esp + 0x28]
jbe 0x4ce6c1
call fcn.00578ff3
mov edi, dword [esp + 0x28]
cmp dword [esp + 0x24], edi
jbe 0x4ce6d0
call fcn.00578ff3
cmp esi, edi
je 0x4ce725
cmp esi, dword [esp + 0x28]
jb 0x4ce6df
call fcn.00578ff3
mov ecx, dword [esp + 0x98]
cmp ecx, ebp
je 0x4ce705
mov eax, dword [esi]
cmp dword [eax - 0xc], ebp
jl 0x4ce705
push ecx
push eax
call fcn.0057880c
add esp, 8
cmp eax, ebp
je 0x4ce705
sub eax, dword [esi]
sar eax, 1
je 0x4ce715
cmp esi, dword [esp + 0x28]
jb 0x4ce710
call fcn.00578ff3
add esi, 4
jmp 0x4ce6c1
cmp esi, dword [esp + 0x28]
jb 0x4ce720
call fcn.00578ff3
call fcn.00403f60
push 0x40
push ebx
call fcn.0057b53f
add esp, 8
cmp eax, ebp
je 0x4ce81d
sub eax, ebx
sar eax, 1
cmp eax, 0xffffffff
je 0x4ce81d
push 0x40
push ebx
call fcn.0057b53f
add esp, 8
cmp eax, ebp
jne 0x4ce759
or eax, 0xffffffff
jmp 0x4ce75d
sub eax, ebx
sar eax, 1
lea ecx, [esp + 0x48]
lea edx, [esp + 0x40]
call fcn.00403560
mov eax, dword [eax]
push 0xa
push ebp
push eax
call fcn.00578c22
mov edi, eax
mov eax, dword [esp + 0x54]
add eax, 0xfffffff0
add esp, 0xc
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ce79a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x18]
cmp dword [ecx - 0xc], ebp
je 0x4ce835
mov ecx, dword [esp + 0x24]
cmp ecx, ebp
je 0x4ce826
mov edx, dword [esp + 0x28]
mov eax, edx
sub eax, ecx
sar eax, 2
cmp edi, eax
jae 0x4ce826
cmp edi, ebp
jne 0x4ce7d1
lea eax, [esp + 0x18]
lea edi, [esp + 0x44]
call fcn.004035d0
jmp 0x4ce835
cmp ecx, edx
mov esi, ecx
jbe 0x4ce7dc
call fcn.00578ff3
lea eax, [edi - 1]
cmp eax, ebp
lea ebx, [esp + 0x20]
jbe 0x4ce803
mov edi, eax
lea esp, [esp]
cmp esi, dword [esp + 0x28]
jb 0x4ce7fb
call fcn.00578ff3
add esi, 4
sub edi, 1
jne 0x4ce7f0
push esi
push ebx
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 0x90]
push eax
lea eax, [esp + 0x30]
call fcn.00428f70
jmp 0x4ce835
mov ecx, dword [esp + 0x18]
cmp dword [ecx - 0xc], ebp
je 0x4ce835
lea ebx, [esp + 0x18]
lea esi, [esp + 0x20]
call fcn.00428c20
xor ebp, ebp
lea esi, [esp + 0x8c]
mov byte [esp + 0xcc], 8
call fcn.004405a0
mov esi, dword [esp + 0x3c]
mov edx, dword [esp + 0xd8]
cmp esi, dword [edx + 4]
jne 0x4ce85e
call fcn.00578ff3
mov eax, dword [esi]
mov ecx, dword [esp + 0xd8]
mov edi, dword [esp + 0x30]
mov dword [esp + 0x3c], eax
jmp 0x4ce620
mov edx, dword [edi]
mov eax, dword [edx]
push 1
mov ecx, edi
call eax
mov ebp, dword [esp + 0x44]
cmp dword [ebp - 0xc], 0
je 0x4ce8b1
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x28]
mov esi, eax
jbe 0x4ce899
call fcn.00578ff3
push esi
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x90]
push edx
call fcn.00428f70
mov eax, dword [esp + 0x1c]
push eax
xor ebx, ebx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x4ce8c7
mov ebx, 1
xor edi, edi
mov dword [esp + 0x38], edi
push 1
lea ecx, [esp + 0x3c]
mov byte [esp + 0xd0], 0xa
push ecx
mov ecx, dword [esp + 0x24]
lea edx, [edi + 2]
lea eax, [edi + 1]
call fcn.004d0980
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x4ce958
mov eax, edx
sub eax, ecx
sar eax, 2
cmp edi, eax
jae 0x4ce958
mov eax, dword [ecx + edi*4]
cmp dword [eax - 0xc], 0
je 0x4ce953
test ecx, ecx
je 0x4ce918
sub edx, ecx
sar edx, 2
cmp edi, edx
jb 0x4ce921
call fcn.00578ff3
mov ecx, dword [esp + 0x24]
mov ecx, dword [ecx + edi*4]
mov eax, ecx
lea esi, [eax + 2]
lea esp, [esp]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x4ce930
sub eax, esi
sar eax, 1
push ecx
mov ecx, eax
lea esi, [esp + 0x3c]
call fcn.004d0b10
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
add edi, 1
jmp 0x4ce8f3
mov esi, dword [esp + 0x38]
test esi, esi
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
je 0x4ce96f
push esi
call edi
xor esi, esi
mov dword [esp + 0x38], esi
test ebx, ebx
je 0x4ce9c4
mov ecx, dword [esp + 0xd4]
mov ebx, dword [esp + 0xdc]
add ecx, 0x10
push ecx
lea edx, [esp + 0x34]
push edx
call fcn.00412480
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x24]
add esp, 8
push 0
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4ce9c4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test esi, esi
je 0x4ce9cb
push esi
call edi
mov byte [esp + 0xcc], 7
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ce9f3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xcc], 6
mov eax, dword [esp + 0x40]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4cea1b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebp - 0x10]
mov byte [esp + 0xcc], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4cea3f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [esp + 0x64]
mov ebp, dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
xor ebx, ebx
test esi, esi
je 0x4cea5f
push esi
call ebp
test eax, eax
jne 0x4cea5d
call fcn.004129d0
mov ebx, eax
xor esi, esi
mov edi, dword [esp + 0x6c]
test edi, edi
je 0x4cea7d
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
jne 0x4cea7b
test ebx, ebx
jl 0x4cea7b
call fcn.004129d0
xor edi, edi
xor ebx, ebx
test esi, esi
je 0x4cea91
push esi
call ebp
test eax, eax
jne 0x4cea91
call fcn.004129d0
mov ebx, eax
test edi, edi
je 0x4ceaad
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
jne 0x4ceaad
xor esi, esi
cmp ebx, esi
jl 0x4ceaaf
call fcn.004129d0
jmp 0x4ceaaf
xor esi, esi
mov eax, dword [esp + 0x24]
cmp eax, esi
je 0x4ceacd
mov edi, dword [esp + 0x28]
call fcn.00429c20
mov ecx, dword [esp + 0x24]
push ecx
call fcn.00578327
add esp, 4
mov dword [esp + 0xcc], 0xffffffff
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], esi
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4ceb04
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
jmp 0x4ceb34
mov dword [esp + 0xcc], 0xffffffff
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ceb32
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0xc4]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xbc
ret 0xc