Function at 0x404abf
Capabilities:
Delete file
Get common file path
Read .ini file
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x768
mov dl, byte [0x40c008]
push ebx
push esi
push edi
push 0x40
xor eax, eax
pop ecx
lea edi, [ebp - 0x263]
mov byte [ebp - 0x264], dl
push 0x40
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
pop ecx
xor eax, eax
lea edi, [ebp - 0x15f]
mov byte [ebp - 0x160], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push 0x40
xor eax, eax
pop ecx
lea edi, [ebp - 0x367]
mov byte [ebp - 0x368], dl
mov byte [ebp - 0x768], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0xff
xor eax, eax
lea edi, [ebp - 0x767]
mov byte [ebp - 0x30], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
lea edi, [ebp - 0x2f]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
lea edi, [ebp - 0x1f]
mov byte [ebp - 0x20], dl
xor ebx, ebx
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [ebp - 0x264]
mov esi, 0x4e20
push eax
lea eax, [ebp - 0x264]
push eax
mov dword [ebp - 8], ebx
mov dword [ebp - 4], esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
mov edi, 0x104
push 0x40c640
push edi
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push edi
mov edi, 0x40cba0
push edi
push ebx
mov dword [0x40ca5c], eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push ebx
push ebx
push 3
push ebx
push 1
push 0x80000000
push edi
call dword [sym.imp.KERNEL32.dll_CreateFileA]
push ebx
push ebx
push esi
mov esi, dword [sym.imp.KERNEL32.dll_SetFilePointer]
push eax
mov dword [0x40ca54], eax
call esi
lea eax, [ebp - 0x10]
push ebx
push eax
lea eax, [ebp - 0x20]
push 4
push eax
push dword [0x40ca54]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x404be3
push str.Could_not_read_the_source_SFX.
call fcn.00403aa0
pop ecx
cmp byte [ebp - 0x20], 0x5b
jne 0x404bfb
cmp byte [ebp - 0x1f], 0x46
jne 0x404bfb
cmp byte [ebp - 0x1e], 0x45
jne 0x404bfb
cmp byte [ebp - 0x1d], 0x5d
je 0x404c21
push 1
push ebx
push 0xfffffffffffffffd
push dword [0x40ca54]
call esi
inc dword [ebp - 4]
cmp dword [ebp - 4], 0x7a120
jle 0x404bbd
push str.Could_not_get_file_info._This_archive_is_likely_corrupted.
call fcn.00403aa0
pop ecx
jmp 0x404bbd
mov edi, dword [ebp - 4]
mov dword [ebp - 0xc], edi
lea eax, [ebp - 0x10]
push ebx
push eax
lea eax, [ebp - 0x20]
push 4
push eax
push dword [0x40ca54]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x404c4d
push str.Could_not_read_the_source_SFX.
call fcn.00403aa0
pop ecx
cmp byte [ebp - 0x20], 0x50
jne 0x404c65
cmp byte [ebp - 0x1f], 0x4b
jne 0x404c65
cmp byte [ebp - 0x1e], 3
jne 0x404c65
cmp byte [ebp - 0x1d], 4
je 0x404c88
push 1
push ebx
push 0xfffffffffffffffd
push dword [0x40ca54]
call esi
inc edi
cmp edi, 0xc3500
jle 0x404c27
push str.Could_not_get_file_info._This_archive_is_likely_corrupted.
call fcn.00403aa0
pop ecx
jmp 0x404c27
push ebx
push ebx
push dword [ebp - 4]
mov dword [ebp - 0xc], edi
sub edi, dword [ebp - 4]
mov eax, dword [ebp - 0xc]
push dword [0x40ca54]
mov dword [0x40bee4], eax
add edi, 4
call esi
push 4
lea eax, [edi + 2]
push 0x1000
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
lea ecx, [ebp - 0x10]
push ebx
push ecx
push edi
push eax
mov dword [0x40ca50], eax
push dword [0x40ca54]
call dword [sym.imp.KERNEL32.dll_ReadFile]
lea eax, [ebp - 0x264]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea eax, [ebp - 0x160]
mov esi, 0x4085b4
push eax
push ebx
lea eax, [ebp - 0x264]
push esi
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameA]
push ebx
push ebx
push 2
push ebx
push 3
lea eax, [ebp - 0x160]
push 0x40000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
mov dword [0x40c628], eax
jne 0x404d2b
push str.Cant_write_temp_file
call fcn.00403aa0
pop ecx
lea eax, [ebp - 0x34]
push ebx
push eax
push edi
push dword [0x40ca50]
push dword [0x40c628]
call dword [sym.imp.KERNEL32.dll_WriteFile]
push dword [0x40c628]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
lea eax, [ebp - 0x160]
push eax
push ebx
push str.ZipSize
push esi
call edi
mov dword [0x40bee8], eax
lea eax, [ebp - 0x160]
push eax
push ebx
push str.Delete
push esi
call edi
mov dword [0x40beec], eax
lea eax, [ebp - 0x160]
push eax
push ebx
push str.NoGUI
push esi
call edi
mov dword [0x40bdd8], eax
lea eax, [ebp - 0x160]
push eax
push ebx
push str.Debug
push esi
call edi
mov dword [0x40bde0], eax
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [ebp - 0x160]
mov ebx, 0xff
push eax
push ebx
push 0x408bc4
push str.Unnamed_Archive
push str.Name
push esi
call edi
lea eax, [ebp - 0x160]
push eax
push ebx
mov ebx, 0x40c008
push 0x408cc4
push ebx
push str.Exec
push esi
call edi
lea eax, [ebp - 0x160]
push eax
push 0xff
push 0x408dc8
push ebx
push str.CmdParam
push esi
call edi
lea eax, [ebp - 0x160]
push eax
push 0x104
push 0x40c420
push ebx
push str.DefaultPath
push esi
call edi
lea eax, [ebp - 0x160]
push eax
push 0x400
push 0x40c020
push ebx
push str.Intro
push esi
call edi
lea eax, [ebp - 0x160]
push eax
lea eax, [ebp - 0x48]
push 6
push eax
push str.FALSE
push str.AutoExtract
push esi
call edi
lea eax, [ebp - 0x160]
push eax
lea eax, [ebp - 0x5c]
push 6
push eax
push str.FALSE
push str.OpenFolder
push esi
call edi
lea eax, [ebp - 0x160]
push eax
push 0x80
push 0x408ec8
push ebx
push 0x408518
push esi
call edi
lea eax, [ebp - 0x160]
push eax
push 0xff
push 0x4093c8
push ebx
push str.Author
push esi
call edi
push dword [ebp - 8]
lea eax, [ebp - 0x30]
push str.Shortcut_d
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x160]
push eax
lea eax, [ebp - 0x768]
push 0x400
push eax
lea eax, [ebp - 0x30]
push ebx
push eax
push esi
call edi
lea eax, [ebp - 0x768]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
je 0x404ef8
lea eax, [ebp - 0x768]
push eax
push 0x40ca68
call fcn.00405768
inc dword [ebp - 8]
pop ecx
pop ecx
jmp 0x404e9f
cmp byte [0x40c020], 0
je 0x404f1e
mov eax, 0x40c020
cmp byte [eax], 0x5c
jne 0x404f18
cmp byte [eax + 1], 0x6e
jne 0x404f18
mov byte [eax], 0x20
mov byte [eax + 1], 0xa
inc eax
cmp byte [eax], 0
jne 0x404f06
lea eax, [ebp - 0x48]
push 0x408500
push eax
call fcn.00403d7f
pop ecx
test eax, eax
pop ecx
jne 0x404f3c
mov dword [0x40bdcc], 1
mov esi, 0x40c420
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, dword [sym.imp.KERNEL32.dll_lstrcpyA]
test eax, eax
jne 0x404f6a
cmp dword [0x40bdcc], 0
je 0x404f62
push str._temp_
jmp 0x404f67
push str._curdir_
push esi
call edi
push esi
call fcn.00403f6e
pop ecx
push eax
lea eax, [ebp - 0x368]
push eax
call edi
lea eax, [ebp - 0x368]
push eax
push esi
call edi
mov ebx, 0x40ca80
push esi
push ebx
call edi
push esi
call fcn.004044b5
pop ecx
push eax
push esi
call edi
push ebx
call fcn.004044b5
pop ecx
push eax
push ebx
call edi
lea eax, [ebp - 0x5c]
push 0x408500
push eax
call fcn.00403d7f
pop ecx
pop ecx
pop edi
pop esi
pop ebx
test eax, eax
jne 0x404fc5
mov dword [0x40bdd0], 1
push 0x8000
push 0
push dword [0x40ca50]
call dword [sym.imp.KERNEL32.dll_VirtualFree]
lea eax, [ebp - 0x160]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
leave
ret