Function at 0x40528b
Capabilities:
Check if file exists
Create process on windows
Delete file
Get common file path
Get file attributes
Move file
Self delete

Disassembly:
push 0x870
mov eax, 0x416f44
call fcn.00412f0f
mov eax, dword [ebp + 8]
mov ecx, fcn.004059f1
mov dword [ebp - 0x87c], eax
test ecx, ecx
je 0x4059b2
test eax, eax
je 0x4059b2
push str.Preparing_data_file..._n
push 0
call fcn.004059f1
pop ecx
pop ecx
lea eax, [ebp - 0x554]
push eax
mov ebx, 0x104
push ebx
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea eax, [ebp - 0x22c]
push eax
lea eax, [ebp - 0x124]
push eax
lea eax, [ebp - 0x554]
push eax
call fcn.00405229
add esp, 0xc
push str.Generate_temp_filename_ok._n
push 0x14
call fcn.004059f1
lea eax, [ebp - 0x124]
push eax
call fcn.0040516b
or esi, 0xffffffff
add esp, 0xc
cmp eax, esi
jne 0x40531f
mov eax, esi
jmp 0x4059b5
push str.Extract_resource_file_ok._n
push 0x28
call fcn.004059f1
lea eax, [ebp - 0x22c]
push eax
lea eax, [ebp - 0x124]
push eax
call fcn.00404b24
add esp, 0x10
test eax, eax
je 0x405354
push str.Fail_to_decompress_the_data__n
push esi
call fcn.004059f1
pop ecx
pop ecx
jmp 0x405318
mov esi, dword [sym.imp.KERNEL32.dll_DeleteFileA]
lea eax, [ebp - 0x124]
push eax
call esi
push str.Uncompress_resource_finish._n
push 0x3c
call fcn.004059f1
lea eax, [ebp - 0x22c]
push eax
lea edi, [ebp - 0x878]
call fcn.004050a7
add esp, 0xc
cmp eax, 0xffffffff
je 0x4059b2
push str.Load_resource_ok._n
push 0x4b
call fcn.004059f1
mov edi, 0x310
push edi
lea eax, [ebp - 0x864]
push 0
push eax
call fcn.004060c0
add esp, 0x14
push edi
push dword [ebp - 0x878]
lea eax, [ebp - 0x864]
push eax
call fcn.00405d50
mov eax, dword [ebp - 0x864]
add esp, 0xc
test eax, eax
jbe 0x405979
imul eax, eax, 0x124
push eax
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov ecx, dword [ebp - 0x864]
imul ecx, ecx, 0x124
push ecx
push 0
push eax
mov dword [ebp - 0x870], eax
call fcn.004060c0
mov eax, dword [ebp - 0x864]
imul eax, eax, 0x124
add esp, 0xc
push eax
mov eax, dword [ebp - 0x878]
add eax, edi
push eax
push dword [ebp - 0x870]
call fcn.00405d50
add esp, 0xc
push str.Get_information_of_pack_ok._n
push 0x64
call fcn.004059f1
pop ecx
pop ecx
lea eax, [ebp - 0x22c]
push eax
call esi
mov esi, dword [ebp - 0x864]
imul esi, esi, 0x124
add esi, edi
push str.Start_up_unpack_files_..._n
xor edi, edi
push edi
call fcn.004059f1
pop ecx
pop ecx
cmp dword [ebp - 0x864], edi
jbe 0x4055ac
mov eax, dword [ebp - 0x870]
add eax, 0x20
mov dword [ebp - 0x86c], eax
push 0x10b
lea eax, [ebp - 0x44b]
push 0
push eax
mov byte [ebp - 0x44c], 0
call fcn.004060c0
add esp, 0xc
push ebx
lea eax, [ebp - 0x124]
push 0
push eax
call fcn.004060c0
add esp, 0xc
push 0x5c
push dword [ebp - 0x86c]
call fcn.00407300
pop ecx
pop ecx
test eax, eax
je 0x4054ba
inc eax
push eax
jmp 0x4054c0
push dword [ebp - 0x86c]
lea eax, [ebp - 0x44c]
push 0x10c
push eax
call fcn.0040728e
add esp, 0xc
lea eax, [ebp - 0x44c]
push eax
lea eax, [ebp - 0x554]
push eax
push 0x419030
lea eax, [ebp - 0x124]
push ebx
push eax
call fcn.00407428
mov eax, dword [ebp - 0x86c]
mov ecx, dword [eax - 4]
add esp, 0x14
push esi
push dword [ebp - 0x878]
add eax, 0xffffffe0
push eax
lea eax, [ebp - 0x124]
push eax
mov dword [ebp - 0x874], ecx
call fcn.00404ffd
add esp, 0x10
cmp eax, 0xffffffff
je 0x4058ff
mov eax, dword [ebp - 0x864]
inc edi
mov dword [ebp - 0x868], edi
fild dword [ebp - 0x868]
fild dword [ebp - 0x864]
test eax, eax
jge 0x40554c
fadd qword [0x419170]
fdivp st(1)
fmul qword [0x419168]
call fcn.00412ff0
push dword [ebp - 0x86c]
mov dword [ebp - 0x868], eax
push str._s_.._ok._n
lea eax, [ebp - 0x44c]
push 0x10c
push eax
call fcn.00407428
lea eax, [ebp - 0x44c]
push eax
push dword [ebp - 0x868]
call fcn.004059f1
add esi, dword [ebp - 0x874]
add dword [ebp - 0x86c], 0x124
add esp, 0x18
cmp edi, dword [ebp - 0x864]
jb 0x405474
push str.Install_file_to_destination_..._n
push 0
call fcn.004059f1
xor edi, edi
pop ecx
pop ecx
mov dword [ebp - 0x86c], edi
cmp dword [ebp - 0x864], edi
jbe 0x40574e
mov esi, dword [ebp - 0x870]
add esi, 0x20
push 0x10b
lea eax, [ebp - 0x33b]
push 0
push eax
mov byte [ebp - 0x33c], 0
call fcn.004060c0
add esp, 0xc
push ebx
lea eax, [ebp - 0x124]
push 0
push eax
call fcn.004060c0
add esp, 0xc
push ebx
lea eax, [ebp - 0x22c]
push 0
push eax
call fcn.004060c0
add esp, 0xc
push 0x5c
push esi
call fcn.00407300
pop ecx
pop ecx
test eax, eax
je 0x40562a
inc eax
push eax
jmp 0x40562b
push esi
lea eax, [ebp - 0x33c]
push 0x10c
push eax
call fcn.0040728e
add esp, 0xc
lea eax, [ebp - 0x33c]
push eax
lea eax, [ebp - 0x554]
push eax
lea eax, [ebp - 0x124]
push 0x419030
push eax
call fcn.004059bb
lea eax, [ebp - 0x860]
push eax
call fcn.00407560
add esp, 0x14
push esi
test eax, eax
jbe 0x40567b
lea eax, [ebp - 0x860]
push eax
jmp 0x405681
push dword [ebp - 0x87c]
lea eax, [ebp - 0x22c]
push str._s_s
push eax
call fcn.004059bb
add esp, 0x10
lea eax, [ebp - 0x22c]
push 0
push eax
call fcn.00404f6e
pop ecx
pop ecx
push 1
lea eax, [ebp - 0x22c]
push eax
lea eax, [ebp - 0x124]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExA]
xor ecx, ecx
test eax, eax
setne cl
dec ecx
mov eax, ecx
cmp eax, 0xffffffff
je 0x4057cb
mov eax, dword [ebp - 0x864]
inc edi
mov dword [ebp - 0x868], edi
fild dword [ebp - 0x868]
fild dword [ebp - 0x864]
test eax, eax
jge 0x4056f1
fadd qword [0x419170]
fdivp st(1)
fmul qword [0x419168]
call fcn.00412ff0
mov dword [ebp - 0x868], eax
lea eax, [ebp - 0x22c]
push eax
push str._s_.._ok._n
lea eax, [ebp - 0x33c]
push 0x10c
push eax
call fcn.00407428
lea eax, [ebp - 0x33c]
push eax
push dword [ebp - 0x868]
call fcn.004059f1
add esp, 0x18
add esi, 0x124
mov dword [ebp - 0x86c], edi
cmp edi, dword [ebp - 0x864]
jb 0x4055d7
push ebx
lea eax, [ebp - 0x124]
push 0
push eax
call fcn.004060c0
add esp, 0xc
push ebx
xor esi, esi
lea eax, [ebp - 0x22c]
push esi
push eax
call fcn.004060c0
add esp, 0xc
push str.Register_install_information._n
push 0x64
call fcn.004059f1
lea eax, [ebp - 0x75c]
push eax
call fcn.00407560
add esp, 0xc
test eax, eax
jbe 0x4058ff
push ebx
lea eax, [ebp - 0x124]
push esi
push eax
mov dword [ebp - 4], esi
call fcn.004060c0
lea eax, [ebp - 0x860]
add esp, 0xc
push eax
call fcn.00407560
test eax, eax
pop ecx
lea eax, [ebp - 0x75c]
push eax
jbe 0x405833
lea eax, [ebp - 0x860]
push eax
jmp 0x405839
lea eax, [edi + 1]
mov dword [ebp - 0x874], eax
mov eax, dword [ebp - 0x864]
fild dword [ebp - 0x874]
fild dword [ebp - 0x864]
test eax, eax
jge 0x4057f0
fadd qword [0x419170]
fdivp st(1)
fmul qword [0x419168]
call fcn.00412ff0
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x22c]
push eax
lea eax, [ebp - 0x33c]
push str._s_.._failed.__Err_u__n
push eax
call fcn.004059d6
lea eax, [ebp - 0x33c]
push eax
push esi
call fcn.004059f1
add esp, 0x18
jmp 0x4058ff
push dword [ebp - 0x87c]
push str._s_s
lea eax, [ebp - 0x124]
push ebx
push eax
call fcn.00407428
lea eax, [ebp - 0x658]
add esp, 0x14
push eax
call fcn.00407560
mov esi, eax
pop ecx
add esi, 0x40
push esi
call fcn.00407495
mov dword [ebp - 0x868], eax
mov eax, dword [0x41ed28]
pop ecx
test eax, eax
jbe 0x4058c6
lea ecx, [ebp - 0x658]
push ecx
push eax
push str.start__u__s
push esi
push dword [ebp - 0x868]
call fcn.00407428
add esp, 0x14
lea eax, [ebp - 0x124]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x4058c6
push 0
push dword [ebp - 0x87c]
lea eax, [ebp - 0x124]
push dword [ebp - 0x868]
push eax
push str.open
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
push dword [ebp - 0x868]
call fcn.00406927
or dword [ebp - 4], 0xffffffff
pop ecx
jmp 0x4058ed
push ebx
lea eax, [ebp - 0x124]
push 0
push eax
call fcn.004060c0
add esp, 0xc
push str.Deleting_temp_files_..._n
push 0x64
call fcn.004059f1
pop ecx
pop ecx
mov esi, edi
test edi, edi
jl 0x40596a
mov eax, dword [ebp - 0x870]
imul edi, edi, 0x124
lea edi, [edi + eax + 0x20]
push ebx
lea eax, [ebp - 0x22c]
push 0
push eax
call fcn.004060c0
add esp, 0xc
push edi
lea eax, [ebp - 0x554]
push eax
push 0x419030
lea eax, [ebp - 0x22c]
push ebx
push eax
call fcn.00407428
add esp, 0x14
lea eax, [ebp - 0x22c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
dec esi
sub edi, 0x124
test esi, esi
jge 0x405923
push str.Extract_files_successful._n
push 0x64
call fcn.004059f1
pop ecx
jmp 0x405983
push str.Have_not_pack_of_file__n
call fcn.00404df3
cmp dword [ebp - 0x870], 0
pop ecx
je 0x405999
push dword [ebp - 0x870]
call dword [sym.imp.KERNEL32.dll_LocalFree]
cmp dword [ebp - 0x878], 0
je 0x4059ae
push dword [ebp - 0x878]
call dword [sym.imp.KERNEL32.dll_LocalFree]
xor eax, eax
jmp 0x4059b5
or eax, 0xffffffff
call fcn.00412f5c
ret