Function at 0x5056f0
Capabilities:
Copy file

Disassembly:
push ebp
mov ebp, esp
xor ecx, ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ebx
push esi
push edi
mov edi, eax
xor eax, eax
push ebp
push 0x505942
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [edi + 0x308]
mov eax, dword [eax + 0x26c]
call fcn.004736ac
dec eax
test eax, eax
jl 0x505816
inc eax
mov dword [ebp - 0x10], eax
xor esi, esi
lea edx, [ebp - 0x14]
mov eax, dword [0x5346d8]
mov eax, dword [eax]
call fcn.004f51f4
push dword [ebp - 0x14]
mov eax, dword [edi + 0x308]
mov eax, dword [eax + 0x26c]
mov edx, esi
call fcn.00473a80
push dword [eax + 8]
push 0x505958
lea eax, [ebp - 0xc]
mov edx, 3
call fcn.00404c20
mov eax, dword [edi + 0x308]
mov eax, dword [eax + 0x26c]
mov edx, esi
call fcn.00473a80
cmp dword [eax + 0x14], 0
jle 0x50579c
mov eax, dword [edi + 0x308]
mov eax, dword [eax + 0x26c]
mov edx, esi
call fcn.00473a80
cmp dword [eax + 0xc], 0
jne 0x5057a6
mov eax, dword [ebp - 0xc]
call fcn.004094ec
jmp 0x50580c
mov eax, dword [edi + 0x308]
mov eax, dword [eax + 0x26c]
mov edx, esi
call fcn.00473a80
mov ebx, dword [eax + 0xc]
lea eax, [ebp - 8]
mov edx, ebx
call fcn.00404b04
lea edx, [ebp - 0x18]
mov eax, dword [ebp - 8]
call fcn.00409584
mov eax, dword [ebp - 0x18]
push eax
lea edx, [ebp - 0x1c]
mov eax, dword [ebp - 0xc]
call fcn.00409584
mov edx, dword [ebp - 0x1c]
pop eax
call fcn.00404ca4
je 0x50580c
mov eax, dword [ebp - 0xc]
call fcn.004094ec
push 0
mov eax, dword [ebp - 0xc]
call fcn.00404d58
push eax
mov eax, dword [ebp - 8]
call fcn.00404d58
push eax
call sub.kernel32.dll_CopyFileA
inc esi
dec dword [ebp - 0x10]
jne 0x505730
mov eax, dword [edi + 0x308]
mov eax, dword [eax + 0x26c]
call fcn.004736ac
dec eax
test eax, eax
jl 0x50591a
inc eax
mov dword [ebp - 0x10], eax
xor esi, esi
lea edx, [ebp - 0x20]
mov eax, dword [0x5346d8]
mov eax, dword [eax]
call fcn.004f51f4
push dword [ebp - 0x20]
mov eax, dword [edi + 0x308]
mov eax, dword [eax + 0x26c]
mov edx, esi
call fcn.00473a80
push dword [eax + 8]
push 0x50596c
lea eax, [ebp - 8]
mov edx, 3
call fcn.00404c20
mov eax, dword [edi + 0x308]
mov eax, dword [eax + 0x26c]
mov edx, esi
call fcn.00473a80
cmp dword [eax + 0x14], 0
jle 0x5058a2
mov eax, dword [edi + 0x308]
mov eax, dword [eax + 0x26c]
mov edx, esi
call fcn.00473a80
cmp dword [eax + 0xc], 0
jne 0x5058ac
mov eax, dword [ebp - 8]
call fcn.004094ec
jmp 0x505910
mov eax, dword [edi + 0x308]
mov eax, dword [eax + 0x26c]
mov edx, esi
call fcn.00473a80
mov ebx, dword [eax + 0xc]
mov eax, dword [ebx + 0xcc]
test eax, eax
je 0x505910
mov ebx, eax
mov eax, dword [ebp - 8]
call fcn.004094ec
mov eax, dword [ebp - 8]
call fcn.0040928c
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jl 0x505910
test ebx, ebx
je 0x505908
mov eax, dword [ebx + 8]
test eax, eax
je 0x505901
mov edx, eax
mov ecx, 0xc
mov eax, dword [ebp - 4]
call fcn.004092e4
mov ebx, dword [ebx + 0xc]
test ebx, ebx
jne 0x5058eb
mov eax, dword [ebp - 4]
call fcn.00409354
inc esi
dec dword [ebp - 0x10]
jne 0x505836
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x505949
lea eax, [ebp - 0x20]
mov edx, 4
call fcn.004048cc
lea eax, [ebp - 0xc]
mov edx, 2
call fcn.004048cc
ret