Function at 0x405b2a
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 [0x40df90]
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 0x40e5c0
push edi
call dword [sym.imp.KERNEL32.DLL_GetCurrentDirectoryA]
call dword [sym.imp.KERNEL32.DLL_GetCurrentProcess]
push edi
mov edi, 0x40eb20
push edi
push ebx
mov dword [0x40e9e0], 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 [0x40e9d8], eax
call esi
lea eax, [ebp - 0x10]
push ebx
push eax
lea eax, [ebp - 0x20]
push 4
push eax
push dword [0x40e9d8]
call dword [sym.imp.KERNEL32.DLL_ReadFile]
test eax, eax
jne 0x405c4e
push str.Could_not_read_the_source_SFX.
call fcn.00403aa1
pop ecx
cmp byte [ebp - 0x20], 0x5b
jne 0x405c66
cmp byte [ebp - 0x1f], 0x46
jne 0x405c66
cmp byte [ebp - 0x1e], 0x45
jne 0x405c66
cmp byte [ebp - 0x1d], 0x5d
je 0x405c8c
push 1
push ebx
push 0xfffffffffffffffd
push dword [0x40e9d8]
call esi
inc dword [ebp - 4]
cmp dword [ebp - 4], 0x7a120
jle 0x405c28
push str.Could_not_get_file_info._This_archive_is_likely_corrupted.
call fcn.00403aa1
pop ecx
jmp 0x405c28
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 [0x40e9d8]
call dword [sym.imp.KERNEL32.DLL_ReadFile]
test eax, eax
jne 0x405cb8
push str.Could_not_read_the_source_SFX.
call fcn.00403aa1
pop ecx
cmp byte [ebp - 0x20], 0x50
jne 0x405cd0
cmp byte [ebp - 0x1f], 0x4b
jne 0x405cd0
cmp byte [ebp - 0x1e], 3
jne 0x405cd0
cmp byte [ebp - 0x1d], 4
je 0x405cf3
push 1
push ebx
push 0xfffffffffffffffd
push dword [0x40e9d8]
call esi
inc edi
cmp edi, 0xc3500
jle 0x405c92
push str.Could_not_get_file_info._This_archive_is_likely_corrupted.
call fcn.00403aa1
pop ecx
jmp 0x405c92
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 [0x40e9d8]
mov dword [0x40df70], 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 [0x40e9d0], eax
push dword [0x40e9d8]
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, 0x40a6b0
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 [0x40e5a8], eax
jne 0x405d96
push str.Cant_write_temp_file
call fcn.00403aa1
pop ecx
lea eax, [ebp - 0x34]
push ebx
push eax
push edi
push dword [0x40e9d0]
push dword [0x40e5a8]
call dword [sym.imp.KERNEL32.DLL_WriteFile]
push dword [0x40e5a8]
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 [0x40df74], eax
lea eax, [ebp - 0x160]
push eax
push ebx
push str.Delete
push esi
call edi
mov dword [0x40df78], eax
lea eax, [ebp - 0x160]
push eax
push ebx
push str.NoGUI
push esi
call edi
mov dword [0x40de64], eax
lea eax, [ebp - 0x160]
push eax
push ebx
push str.Debug
push esi
call edi
mov dword [0x40de6c], eax
mov edi, dword [sym.imp.KERNEL32.DLL_GetPrivateProfileStringA]
lea eax, [ebp - 0x160]
mov ebx, 0xff
push eax
push ebx
push 0x40ad50
push str.Unnamed_Archive
push str.Name
push esi
call edi
lea eax, [ebp - 0x160]
push eax
push ebx
mov ebx, 0x40df90
push 0x40ae50
push ebx
push str.Exec
push esi
call edi
lea eax, [ebp - 0x160]
push eax
push 0x104
push 0x40e3a0
push ebx
push str.DefaultPath
push esi
call edi
lea eax, [ebp - 0x160]
push eax
push 0x400
push 0x40dfa0
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 0x40af54
push ebx
push 0x40a620
push esi
call edi
lea eax, [ebp - 0x160]
push eax
push 0xff
push 0x40b454
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 0x405f49
lea eax, [ebp - 0x768]
push eax
push 0x40e9e8
call fcn.0040681a
inc dword [ebp - 8]
pop ecx
pop ecx
jmp 0x405ef0
cmp byte [0x40dfa0], 0
je 0x405f6f
mov eax, 0x40dfa0
cmp byte [eax], 0x5c
jne 0x405f69
cmp byte [eax + 1], 0x6e
jne 0x405f69
mov byte [eax], 0x20
mov byte [eax + 1], 0xa
inc eax
cmp byte [eax], 0
jne 0x405f57
lea eax, [ebp - 0x48]
push 0x40a608
push eax
call fcn.00403ee1
pop ecx
test eax, eax
pop ecx
jne 0x405f8d
mov dword [0x40de58], 1
mov esi, 0x40e3a0
push esi
call dword [sym.imp.KERNEL32.DLL_lstrlenA]
mov edi, dword [sym.imp.KERNEL32.DLL_lstrcpyA]
test eax, eax
jne 0x405fbb
cmp dword [0x40de58], 0
je 0x405fb3
push str._temp_
jmp 0x405fb8
push str._curdir_
push esi
call edi
push esi
call fcn.00404148
pop ecx
push eax
lea eax, [ebp - 0x368]
push eax
call edi
lea eax, [ebp - 0x368]
push eax
push esi
call edi
mov ebx, 0x40ea00
push esi
push ebx
call edi
push esi
call fcn.0040468f
pop ecx
push eax
push esi
call edi
push ebx
call fcn.0040468f
pop ecx
push eax
push ebx
call edi
lea eax, [ebp - 0x5c]
push 0x40a608
push eax
call fcn.00403ee1
pop ecx
pop ecx
pop edi
pop esi
pop ebx
test eax, eax
jne 0x406016
mov dword [0x40de5c], 1
push 0x8000
push 0
push dword [0x40e9d0]
call dword [sym.imp.KERNEL32.DLL_VirtualFree]
lea eax, [ebp - 0x160]
push eax
call dword [sym.imp.KERNEL32.DLL_DeleteFileA]
leave
ret