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

Disassembly:
push 0xffffffffffffffff
push 0x604106
mov eax, dword fs:[0]
push eax
sub esp, 0xb0
push ebx
push ebp
push esi
push edi
mov eax, dword [0x6687b8]
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.00409dd0
test esi, esi
mov dword [esp + 0xcc], 0
mov eax, dword [esp + 0x1c]
je 0x4ea82b
cmp dword [eax - 0xc], 0
je 0x4ea82b
mov ecx, dword [esp + 0xd4]
add ecx, 0xc
push ecx
lea edx, [esp + 0x38]
push edx
mov ebx, str.Skin_
call fcn.0040aab0
push eax
lea eax, [esp + 0x3c]
push eax
mov ebx, esi
mov byte [esp + 0xdc], 1
call fcn.0040aab0
add esp, 0x10
lea edi, [esp + 0x1c]
mov byte [esp + 0xcc], 2
call fcn.0040ab90
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 0x4ea19c
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 0x4ea1c4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.0057a8e0
mov edi, eax
xor ebp, ebp
cmp edi, ebp
mov dword [esp + 0x30], edi
jne 0x4ea1e9
mov dword [esp + 0xcc], 0xffffffff
mov eax, dword [esp + 0x1c]
jmp 0x4ea836
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.0050e530
test eax, eax
jne 0x4ea2c4
mov edx, dword [0x677600]
mov eax, dword [edx + 0xc]
mov ecx, 0x677600
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.0050e200
test eax, eax
je 0x4ea29a
lea esp, [esp]
mov edx, dword [esp + 0x18]
cmp dword [edx - 0xc], ebp
je 0x4ea288
lea ebx, [esp + 0x18]
lea esi, [esp + 0x20]
call fcn.00427a70
xor ebp, ebp
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x50]
call fcn.0050e200
test eax, eax
jne 0x4ea270
lea esi, [esp + 0x64]
call fcn.0050df50
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.00403870
mov edx, dword [0x677600]
mov eax, dword [edx + 0xc]
mov ecx, 0x677600
call eax
add eax, 0x10
mov dword [esp + 0x44], eax
lea esi, [esp + 0x44]
mov byte [esp + 0xcc], 6
call fcn.004036c0
mov edx, dword [0x677600]
mov eax, dword [edx + 0xc]
mov ecx, 0x677600
call eax
add eax, 0x10
mov dword [esp + 0x40], eax
mov byte [esp + 0xcc], 7
mov edx, dword [0x677600]
mov eax, dword [edx + 0xc]
mov ecx, 0x677600
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 0x4ea594
mov eax, dword [esp + 0x3c]
add eax, 8
lea edi, [esp + 0x40]
call fcn.0040ab90
lea esi, [esp + 0x18]
call fcn.004036c0
push 0x34
lea ecx, [esp + 0x90]
push ebp
push ecx
call fcn.005da970
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.0057baa0
test eax, eax
je 0x4ea3c9
cmp dword [esp + 0x34], ebp
je 0x4ea3c9
mov edx, dword [esp + 0x98]
mov edi, esi
call fcn.00403760
mov edx, str.__1__
call fcn.0040ae60
mov edx, dword [esp + 0x18]
cmp dword [edx - 0xc], ebp
je 0x4ea445
mov esi, dword [esp + 0x24]
cmp esi, dword [esp + 0x28]
jbe 0x4ea3e1
call fcn.005d29f1
mov edi, dword [esp + 0x28]
cmp dword [esp + 0x24], edi
jbe 0x4ea3f0
call fcn.005d29f1
cmp esi, edi
je 0x4ea445
cmp esi, dword [esp + 0x28]
jb 0x4ea3ff
call fcn.005d29f1
mov ecx, dword [esp + 0x98]
cmp ecx, ebp
je 0x4ea425
mov eax, dword [esi]
cmp dword [eax - 0xc], ebp
jl 0x4ea425
push ecx
push eax
call fcn.005d2e73
add esp, 8
cmp eax, ebp
je 0x4ea425
sub eax, dword [esi]
sar eax, 1
je 0x4ea435
cmp esi, dword [esp + 0x28]
jb 0x4ea430
call fcn.005d29f1
add esi, 4
jmp 0x4ea3e1
cmp esi, dword [esp + 0x28]
jb 0x4ea440
call fcn.005d29f1
call fcn.004036c0
push 0x40
push ebx
call fcn.005d37a2
add esp, 8
cmp eax, ebp
je 0x4ea53d
sub eax, ebx
sar eax, 1
cmp eax, 0xffffffff
je 0x4ea53d
push 0x40
push ebx
call fcn.005d37a2
add esp, 8
cmp eax, ebp
jne 0x4ea479
or eax, 0xffffffff
jmp 0x4ea47d
sub eax, ebx
sar eax, 1
lea ecx, [esp + 0x48]
lea edx, [esp + 0x40]
call fcn.0041a270
mov eax, dword [eax]
push 0xa
push ebp
push eax
call fcn.005d419b
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 0x4ea4ba
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 0x4ea555
mov ecx, dword [esp + 0x24]
cmp ecx, ebp
je 0x4ea546
mov edx, dword [esp + 0x28]
mov eax, edx
sub eax, ecx
sar eax, 2
cmp edi, eax
jae 0x4ea546
cmp edi, ebp
jne 0x4ea4f1
lea eax, [esp + 0x18]
lea edi, [esp + 0x44]
call fcn.0040ab90
jmp 0x4ea555
cmp ecx, edx
mov esi, ecx
jbe 0x4ea4fc
call fcn.005d29f1
lea eax, [edi - 1]
cmp eax, ebp
lea ebx, [esp + 0x20]
jbe 0x4ea523
mov edi, eax
lea esp, [esp]
cmp esi, dword [esp + 0x28]
jb 0x4ea51b
call fcn.005d29f1
add esi, 4
sub edi, 1
jne 0x4ea510
push esi
push ebx
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 0x90]
push eax
lea eax, [esp + 0x30]
call fcn.00427cb0
jmp 0x4ea555
mov ecx, dword [esp + 0x18]
cmp dword [ecx - 0xc], ebp
je 0x4ea555
lea ebx, [esp + 0x18]
lea esi, [esp + 0x20]
call fcn.00427a70
xor ebp, ebp
lea esi, [esp + 0x8c]
mov byte [esp + 0xcc], 8
call fcn.004404f0
mov esi, dword [esp + 0x3c]
mov edx, dword [esp + 0xd8]
cmp esi, dword [edx + 4]
jne 0x4ea57e
call fcn.005d29f1
mov eax, dword [esi]
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0xd8]
mov dword [esp + 0x3c], eax
jmp 0x4ea340
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 0x4ea5d1
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x28]
mov esi, eax
jbe 0x4ea5b9
call fcn.005d29f1
push esi
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x90]
push edx
call fcn.00427cb0
mov eax, dword [esp + 0x1c]
push eax
xor ebx, ebx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x4ea5e7
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.0050e580
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x4ea678
mov eax, edx
sub eax, ecx
sar eax, 2
cmp edi, eax
jae 0x4ea678
mov eax, dword [ecx + edi*4]
cmp dword [eax - 0xc], 0
je 0x4ea673
test ecx, ecx
je 0x4ea638
sub edx, ecx
sar edx, 2
cmp edi, edx
jb 0x4ea641
call fcn.005d29f1
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 0x4ea650
sub eax, esi
sar eax, 1
push ecx
mov ecx, eax
lea esi, [esp + 0x3c]
call fcn.0050e710
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
add edi, 1
jmp 0x4ea613
mov esi, dword [esp + 0x38]
test esi, esi
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
je 0x4ea68f
push esi
call edi
xor esi, esi
mov dword [esp + 0x38], esi
test ebx, ebx
je 0x4ea6e4
mov ecx, dword [esp + 0xd4]
mov ebx, dword [esp + 0xdc]
add ecx, 0x10
push ecx
lea edx, [esp + 0x34]
push edx
call fcn.0040aab0
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 0x4ea6e4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test esi, esi
je 0x4ea6eb
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 0x4ea713
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 0x4ea73b
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 0x4ea75f
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 0x4ea77f
push esi
call ebp
test eax, eax
jne 0x4ea77d
call fcn.0040f010
mov ebx, eax
xor esi, esi
mov edi, dword [esp + 0x6c]
test edi, edi
je 0x4ea79d
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
jne 0x4ea79b
test ebx, ebx
jl 0x4ea79b
call fcn.0040f010
xor edi, edi
xor ebx, ebx
test esi, esi
je 0x4ea7b1
push esi
call ebp
test eax, eax
jne 0x4ea7b1
call fcn.0040f010
mov ebx, eax
test edi, edi
je 0x4ea7cd
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
jne 0x4ea7cd
xor esi, esi
cmp ebx, esi
jl 0x4ea7cf
call fcn.0040f010
jmp 0x4ea7cf
xor esi, esi
mov eax, dword [esp + 0x24]
cmp eax, esi
je 0x4ea7ed
mov edi, dword [esp + 0x28]
call fcn.004287d0
mov ecx, dword [esp + 0x24]
push ecx
call fcn.005d2367
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 0x4ea824
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
jmp 0x4ea854
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 0x4ea852
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