Function at 0x715d9751
Capabilities:
Check if file exists
Copy file
Delete file
Get common file path
Get file attributes
Move file
Set file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x340
and byte [ebp - 0x340], 0
push ebx
push esi
push edi
push 0x40
xor eax, eax
pop ecx
lea edi, [ebp - 0x33f]
rep stosd dword es:[edi], eax
and byte [ebp - 0x23c], 0
push 0x40
stosw word es:[edi], ax
stosb byte es:[edi], al
pop ecx
xor eax, eax
lea edi, [ebp - 0x23b]
push 1
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
pop eax
xor ebx, ebx
mov dword [ebp - 0x10], eax
mov dword [ebp - 8], eax
xor eax, eax
cmp dword [ebp + 0x10], ebx
lea edi, [ebp - 0x30]
mov dword [ebp - 0x34], ebx
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov dword [ebp - 0x18], ebx
mov edi, 0x104
jne 0x715d97c0
lea eax, [ebp - 0x340]
push edi
push eax
call fcn.715d9232
test eax, eax
jne 0x715d97d0
jmp 0x715d97fb
push dword [ebp + 0x10]
lea eax, [ebp - 0x340]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenA]
lea eax, [ebp - 0x340]
push eax
call esi
lea eax, [ebp + eax - 0x340]
push edi
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x23c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
test eax, eax
jne 0x715d9802
xor eax, eax
jmp 0x715d9b2a
lea eax, [ebp - 0x23c]
push eax
call esi
cmp dword [ebp + 0xc], ebx
mov esi, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
lea eax, [ebp + eax - 0x23c]
mov dword [ebp + 0x10], ebx
mov dword [ebp - 0xc], eax
mov edi, 0x80
jle 0x715d9aa4
mov ebx, dword [ebp + 8]
lea eax, [ebp - 0x34]
sub eax, ebx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x1c]
and byte [eax], 0
mov eax, dword [ebp - 0xc]
and byte [eax], 0
push dword [ebx]
lea eax, [ebp - 0x340]
push eax
call fcn.715e1804
lea eax, [ebp - 0x340]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x715d99c4
lea eax, [ebp - 0x28]
push 1
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x340]
push eax
call sym.ADVPACK.dll_GetVersionFromFile
push dword [ebx]
lea eax, [ebp - 0x23c]
push eax
call fcn.715e1804
lea eax, [ebp - 0x23c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x715d9936
lea eax, [ebp - 0x20]
push 1
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x23c]
push eax
call sym.ADVPACK.dll_GetVersionFromFile
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0x14]
ja 0x715d99c4
jne 0x715d98d1
mov eax, dword [ebp - 0x20]
cmp eax, dword [ebp - 0x28]
jae 0x715d99c4
lea eax, [ebp - 0x23c]
push edi
push eax
call esi
lea eax, [ebp - 0x23c]
push eax
lea eax, [ebp - 0x138]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [ebp - 0x138]
push 1
push eax
call fcn.715d96ed
lea eax, [ebp - 0x138]
push edi
push eax
call esi
lea eax, [ebp - 0x138]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
lea eax, [ebp - 0x138]
push eax
lea eax, [ebp - 0x23c]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileA]
test eax, eax
je 0x715d9936
mov eax, dword [ebp - 4]
mov dword [eax + ebx], 1
lea eax, [ebp - 0x23c]
push 0
push eax
lea eax, [ebp - 0x340]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
jne 0x715d99c4
test byte [ebp + 0x18], 1
je 0x715d99f7
lea eax, [ebp - 0x23c]
push eax
lea eax, [ebp - 0x138]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [ebp - 0x138]
push 0
push eax
call fcn.715d96ed
lea eax, [ebp - 0x138]
push edi
push eax
call esi
lea eax, [ebp - 0x138]
push 0
push eax
lea eax, [ebp - 0x340]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
je 0x715d99db
lea eax, [ebp - 0x23c]
push eax
lea eax, [ebp - 0x138]
push eax
call fcn.715d964e
test eax, eax
je 0x715d99f3
test byte [ebp + 0x18], 2
je 0x715d99c4
mov dword [ebp - 0x18], 1
inc dword [ebp + 0x10]
add ebx, 4
mov eax, dword [ebp + 0x10]
cmp eax, dword [ebp + 0xc]
jl 0x715d9837
jmp 0x715d9aa2
push dword [ebp + 0x14]
lea eax, [ebp - 0x138]
push 0x715d23a4
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
and dword [ebp - 8], 0
mov eax, dword [ebp + 0x10]
test eax, eax
jl 0x715d9a9e
mov ecx, dword [ebp + 8]
lea ebx, [ecx + eax*4]
inc eax
mov dword [ebp + 0x10], eax
mov eax, dword [ebp - 4]
cmp dword [ebx + eax], 0
je 0x715d9a92
mov eax, dword [ebp - 0xc]
and byte [eax], 0
push dword [ebx]
lea eax, [ebp - 0x23c]
push eax
call fcn.715e1804
lea eax, [ebp - 0x23c]
push eax
lea eax, [ebp - 0x138]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [ebp - 0x138]
push 1
push eax
call fcn.715d96ed
lea eax, [ebp - 0x138]
push edi
push eax
call esi
lea eax, [ebp - 0x23c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
lea eax, [ebp - 0x23c]
push eax
lea eax, [ebp - 0x138]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileA]
test eax, eax
jne 0x715d9a92
push dword [ebp + 0x14]
lea eax, [ebp - 0x138]
push 0x715d238c
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
sub ebx, 4
dec dword [ebp + 0x10]
jne 0x715d9a0c
and dword [ebp - 0x10], 0
xor ebx, ebx
cmp dword [ebp - 0x10], ebx
je 0x715d9b27
cmp dword [ebp + 0xc], ebx
jle 0x715d9b1f
mov ebx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
lea eax, [ebp - 0x34]
mov dword [ebp + 0xc], ecx
sub eax, ebx
mov dword [ebp - 4], eax
cmp dword [ebx + eax], 0
je 0x715d9b15
mov eax, dword [ebp - 0xc]
and byte [eax], 0
push dword [ebx]
lea eax, [ebp - 0x23c]
push eax
call fcn.715e1804
lea eax, [ebp - 0x23c]
push eax
lea eax, [ebp - 0x138]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [ebp - 0x138]
push 1
push eax
call fcn.715d96ed
lea eax, [ebp - 0x138]
push edi
push eax
call esi
lea eax, [ebp - 0x138]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov eax, dword [ebp - 4]
add ebx, 4
dec dword [ebp + 0xc]
jne 0x715d9abf
xor ebx, ebx
cmp dword [ebp - 0x18], ebx
je 0x715d9b27
mov dword [ebp - 8], ebx
mov eax, dword [ebp - 8]
pop edi
pop esi
pop ebx
leave
ret 0x14