Function at 0x4d9de0
Capabilities:
Check if file exists
Create directory
Get common file path
Get file size
Read .ini file
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x658641
mov eax, dword fs:[0]
push eax
sub esp, 0xa64
mov eax, dword [0x6dc0b8]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0xa40], ecx
push 0x20a
lea eax, [ebp - 0x21c]
push 0
push eax
call fcn.005e0dd0
add esp, 0xc
lea eax, [ebp - 0x21c]
push 0
push 0x1c
push eax
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
xor edi, edi
cmp word [ebp - 0x21c], di
je 0x4d9e5c
nop dword [eax]
inc edi
cmp word [ebp + edi*2 - 0x21c], 0
jne 0x4d9e50
xor ecx, ecx
lea eax, [edi + 1]
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00545b74
mov ebx, eax
mov dword [ebp - 0xa50], edi
lea ecx, [edi*2 + 2]
mov dword [ebp - 0xa54], ebx
push ecx
lea eax, [ebp - 0x21c]
mov dword [ebp - 0xa4c], edi
push eax
push ebx
call fcn.005e0850
add esp, 0x10
mov dword [ebp - 4], 0
xor esi, esi
nop word [eax + eax]
inc esi
cmp word [esi*2 + str.Thorzip], 0
jne 0x4d9eb0
test esi, esi
je 0x4d9ee8
lea ecx, [esi + edi]
mov eax, ecx
add ecx, 0x10
shr eax, 1
add eax, ecx
lea ecx, [ebp - 0xa54]
and eax, 0xfffffff0
dec eax
push eax
call fcn.0049f070
mov edi, dword [ebp - 0xa50]
mov ebx, dword [ebp - 0xa54]
lea eax, [esi*2 + 2]
push eax
lea ecx, [ebx + edi*2]
push str.Thorzip
push ecx
call fcn.005e0850
add esp, 0xc
add edi, esi
mov dword [ebp - 0xa50], edi
push ebx
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
test eax, eax
jne 0x4d9f1c
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push str.CompressCfg.data
lea edx, [ebp - 0xa54]
lea ecx, [ebp - 0xa60]
call fcn.0049f250
add esp, 4
mov byte [ebp - 4], 1
mov esi, dword [ebp - 0xa60]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x4d9f55
mov byte [ebp - 0xa41], al
jmp 0x4da5fa
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
push esi
push 0x34
push str.CompressFormat
push str.CompressCfg
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 5
push str.Level
push str.CompressCfg
mov dword [ecx], eax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.UpdateMode
push str.CompressCfg
mov dword [ecx + 4], eax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.VolumeIndex
push str.CompressCfg
mov dword [ecx + 8], eax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.EncrpytAlgorithm
push str.CompressCfg
mov dword [ecx + 0xc], eax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.PathMode
push str.CompressCfg
mov dword [ecx + 0x10], eax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.IncludeFileIndex
push str.CompressCfg
mov dword [ecx + 0x14], eax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.FileTimeIndex
push str.CompressCfg
mov dword [ecx + 0x18], eax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.DeleteAfterCompress
push str.CompressCfg
mov dword [ecx + 0x1c], eax
call edi
mov ecx, dword [ebp - 0xa40]
cmp eax, 1
push esi
push 0
push str.TestAfterCompress
sete al
push str.CompressCfg
mov byte [ecx + 0x20], al
call edi
mov ecx, dword [ebp - 0xa40]
cmp eax, 1
push esi
push 0
push str.CreateSolid
sete al
push str.CompressCfg
mov byte [ecx + 0x21], al
call edi
cmp eax, 1
mov ecx, dword [ebp - 0xa40]
sete al
push esi
push 0
push str.CompressToSingleDir
push str.CompressCfg
mov byte [ecx + 0x22], al
call edi
mov ecx, dword [ebp - 0xa40]
cmp eax, 1
push esi
push 0
push str.CompressSharedFile
sete al
push str.CompressCfg
mov byte [ecx + 0x23], al
call edi
mov ecx, dword [ebp - 0xa40]
cmp eax, 1
push esi
push 0
push str.CreateSfx
sete al
push str.CompressCfg
mov byte [ecx + 0x24], al
call edi
mov ecx, dword [ebp - 0xa40]
cmp eax, 1
push esi
push 0
push str.ShowPassword
sete al
push str.CompressCfg
mov byte [ecx + 0x25], al
call edi
mov ecx, dword [ebp - 0xa40]
cmp eax, 1
push esi
push 0
push str.EncryptFileName
sete al
push str.CompressCfg
mov byte [ecx + 0x26], al
call edi
mov ecx, dword [ebp - 0xa40]
cmp eax, 1
push esi
push 0
push str.SaveFileSecurity
sete al
push str.CompressCfg
mov byte [ecx + 0x27], al
call edi
mov ecx, dword [ebp - 0xa40]
cmp eax, 1
push esi
push 0
push str.SaveFileStream
sete al
push str.CompressCfg
mov byte [ecx + 0x28], al
call edi
mov ecx, dword [ebp - 0xa40]
cmp eax, 1
push esi
push 0
push str.SaveSymbolLink
sete al
push str.CompressCfg
mov byte [ecx + 0x29], al
call edi
mov ecx, dword [ebp - 0xa40]
cmp eax, 1
push esi
push 0
push str.SaveHardLink
sete al
push str.CompressCfg
mov byte [ecx + 0x2a], al
call edi
cmp eax, 1
mov ecx, dword [ebp - 0xa40]
sete al
push esi
push 1
push str.EnableFileFilters
push str.CompressCfg
mov byte [ecx + 0x2b], al
call edi
mov ecx, dword [ebp - 0xa40]
cmp eax, 1
push esi
push 1
push str.AutoNewLine
sete al
push str.CompressCfg
mov byte [ecx + 0x2c], al
call edi
mov ecx, dword [ebp - 0xa40]
cmp eax, 1
push 0x820
sete al
push 0
mov byte [ecx + 0x2d], al
lea eax, [ebp - 0xa3c]
push eax
call fcn.005e0dd0
add esp, 0xc
lea eax, [ebp - 0xa3c]
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push 0x410
push eax
push 0x6aa980
push str.ExcludeFilelist
push str.CompressCfg
call esi
mov ecx, dword [ebp - 0xa40]
lea eax, [ebp - 0xa3c]
push eax
lea ecx, [ecx + 0x30]
call fcn.0049f520
push 0x820
lea eax, [ebp - 0xa3c]
push 0
push eax
call fcn.005e0dd0
add esp, 0xc
lea eax, [ebp - 0xa3c]
push dword [ebp - 0xa60]
push 0x410
push eax
push 0x6aa980
push str.StoreFilelist
push str.CompressCfg
call esi
mov ecx, dword [ebp - 0xa40]
lea eax, [ebp - 0xa3c]
push eax
lea ecx, [ecx + 0x3c]
call fcn.0049f520
push 0x820
lea eax, [ebp - 0xa3c]
push 0
push eax
call fcn.005e0dd0
add esp, 0xc
lea eax, [ebp - 0xa3c]
push dword [ebp - 0xa60]
push 0x410
push eax
push 0x6ad26c
push 0x6b5664
push str.CompressCfg
call esi
mov ecx, dword [ebp - 0xa40]
lea eax, [ebp - 0xa3c]
push eax
lea ecx, [ecx + 0x54]
call fcn.0049f520
push 0x820
push 0
lea eax, [ebp - 0xa3c]
push eax
call fcn.005e0dd0
add esp, 0xc
lea eax, [ebp - 0xa3c]
push dword [ebp - 0xa60]
push 0x410
push eax
push 0x6ad26c
push str.Hour
push str.CompressCfg
call esi
mov ecx, dword [ebp - 0xa40]
lea eax, [ebp - 0xa3c]
push eax
lea ecx, [ecx + 0x60]
call fcn.0049f520
push 0x820
lea eax, [ebp - 0xa3c]
push 0
push eax
call fcn.005e0dd0
add esp, 0xc
lea eax, [ebp - 0xa3c]
push dword [ebp - 0xa60]
push 0x410
push eax
push 0x6ad26c
push 0x6b5678
push str.CompressCfg
call esi
mov ecx, dword [ebp - 0xa40]
lea eax, [ebp - 0xa3c]
push eax
lea ecx, [ecx + 0x6c]
call fcn.0049f520
mov esi, dword [ebp - 0xa60]
push esi
push 0
push str.Year1
push str.CompressCfg
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.Month1
push str.CompressCfg
mov word [ecx + 0x78], ax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.DayOfWeek1
push str.CompressCfg
mov word [ecx + 0x7a], ax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.Day1
push str.CompressCfg
mov word [ecx + 0x7c], ax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.Hour1
push str.CompressCfg
mov word [ecx + 0x7e], ax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.Minute1
push str.CompressCfg
mov word [ecx + 0x80], ax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
mov word [ecx + 0x82], ax
push str.Second1
push str.CompressCfg
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.Milliseconds1
push str.CompressCfg
mov word [ecx + 0x84], ax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.Year2
push str.CompressCfg
mov word [ecx + 0x86], ax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.Month2
push str.CompressCfg
mov word [ecx + 0x88], ax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.DayOfWeek2
push str.CompressCfg
mov word [ecx + 0x8a], ax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.Day2
push str.CompressCfg
mov word [ecx + 0x8c], ax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.Hour2
push str.CompressCfg
mov word [ecx + 0x8e], ax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.Minute2
push str.CompressCfg
mov word [ecx + 0x90], ax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.Second2
push str.CompressCfg
mov word [ecx + 0x92], ax
call edi
mov ecx, dword [ebp - 0xa40]
push esi
push 0
push str.Milliseconds2
push str.CompressCfg
mov word [ecx + 0x94], ax
call edi
mov ecx, dword [ebp - 0xa40]
lea edx, [ebp - 0xa54]
push str._annotation.txt
mov word [ecx + 0x96], ax
lea ecx, [ebp - 0xa70]
call fcn.0049f250
add esp, 4
mov byte [ebp - 4], 2
mov edi, dword [ebp - 0xa70]
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x4da5ea
push 0
push 0x80
push 3
push 0
push 1
push accept
push edi
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0xa48], eax
cmp eax, 0xffffffff
je 0x4da5ea
push 0
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
xor ecx, ecx
mov dword [ebp - 0xa64], 0
mov edi, eax
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00545b74
lea ecx, [edi + edi]
mov esi, eax
push ecx
push 0
push esi
call fcn.005e0dd0
add esp, 0x10
push 0
push 0
push 2
push dword [ebp - 0xa48]
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push 0
lea eax, [ebp - 0xa64]
push eax
push edi
mov edi, dword [ebp - 0xa48]
push esi
push edi
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov ecx, dword [ebp - 0xa40]
push esi
lea ecx, [ecx + 0x48]
call fcn.0049f520
push esi
call fcn.00545b61
add esp, 4
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov esi, dword [ebp - 0xa60]
mov edi, dword [ebp - 0xa70]
push edi
call fcn.00545b61
add esp, 4
mov byte [ebp - 0xa41], 1
push esi
call fcn.00545b61
push ebx
call fcn.00545b61
mov al, byte [ebp - 0xa41]
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00545b50
mov esp, ebp
pop ebp
ret