Function at 0x476770
Capabilities:
Encode data using xor
Get common file path

Disassembly:
sub esp, 0x55c
mov eax, dword [0x4c03a0]
xor eax, esp
mov dword [esp + 0x558], eax
mov eax, dword [esp + 0x570]
push ebp
mov ebp, dword [esp + 0x570]
push esi
push edi
push str.Profiles_d
mov dword [esp + 0x10], eax
call fcn.004569a0
cmp dword [esp + 0x574], 0xffffffff
mov edi, eax
jne 0x47683a
xor esi, esi
mov dword [esp + 0x574], edi
test edi, edi
jle 0x47683a
push esi
lea ecx, [esp + 0x98]
push str.Profiles_d
push ecx
call fcn.0049e635
add esp, 0xc
push 0x200
push 0x4b1914
lea edx, [esp + 0x16c]
push edx
push str.Name
lea eax, [esp + 0xa4]
push eax
call fcn.004568e0
mov ecx, ebp
lea eax, [esp + 0x164]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x476823
test dl, dl
je 0x47681f
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x476823
add eax, 2
add ecx, 2
test dl, dl
jne 0x476803
xor eax, eax
jmp 0x476828
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x476833
inc esi
cmp esi, edi
jl 0x4767c0
jmp 0x47683a
mov dword [esp + 0x574], esi
mov eax, dword [esp + 0xc]
test eax, eax
je 0x476851
push 0x50
push eax
lea ecx, [esp + 0x18]
push ecx
call fcn.00465370
jmp 0x47686b
mov edx, dword [esp + 0x574]
push edx
lea eax, [esp + 0x14]
push str.Profiles_d
push eax
call fcn.0049e635
add esp, 0xc
push ebp
push str.Name
lea ecx, [esp + 0x18]
push ecx
call fcn.004567a0
cmp byte [esp + 0x570], 0
je 0x4768bf
xor esi, esi
test edi, edi
jle 0x4768bf
jmp 0x476890
push esi
lea edx, [esp + 0x98]
push str.Profiles_d
push edx
call fcn.0049e635
add esp, 0xc
push 0
push str.Default
lea eax, [esp + 0x9c]
push eax
call fcn.004567e0
inc esi
cmp esi, edi
jl 0x476890
movzx ecx, byte [esp + 0x570]
push ecx
push str.Default
lea edx, [esp + 0x18]
push edx
call fcn.004567e0
push str.ArcName
lea eax, [esp + 0x14]
push eax
call fcn.00456720
push str.FileNames
lea ecx, [esp + 0x14]
push ecx
call fcn.00456720
push 0
push str.ImmExec
lea edx, [esp + 0x18]
push edx
call fcn.004567e0
test ebx, ebx
je 0x476a10
mov esi, dword [sym.imp.USER32.dll_IsDlgButtonChecked]
push 0x6b
push ebx
call esi
push eax
push str.ImmExec
lea eax, [esp + 0x18]
push eax
call fcn.004567e0
push 0x6d
push ebx
call esi
push eax
push str.AddToMenu
lea ecx, [esp + 0x18]
push ecx
call fcn.004567e0
push 0x66
push ebx
call esi
test eax, eax
je 0x476974
push 0x400
lea edx, [esp + 0x168]
push edx
push 0x67
push ebx
call dword [sym.imp.USER32.dll_GetDlgItemTextA]
lea eax, [esp + 0x164]
push eax
push str.ArcName
lea ecx, [esp + 0x18]
push ecx
call fcn.004567a0
push 0x68
push ebx
call esi
test eax, eax
je 0x476a10
push 0x69
push ebx
call dword [sym.imp.USER32.dll_GetDlgItem]
mov ebp, eax
push ebp
call dword [sym.imp.USER32.dll_GetWindowTextLengthA]
mov esi, eax
add esi, 0xa
xor ecx, ecx
mov eax, esi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0049f174
add esp, 4
push esi
mov edi, eax
push edi
push ebp
call fcn.0047ded0
push edi
push str.FileNames
lea eax, [esp + 0x18]
push eax
call fcn.004567c0
push edi
call fcn.0049efc5
add esp, 4
cmp byte [esp + 0x56c], 0
jne 0x477045
lea ecx, [esp + 0x164]
push ecx
push 0x400
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea edx, [esp + 0x164]
push edx
push str.CurDir
lea eax, [esp + 0x18]
push eax
call fcn.004567a0
jmp 0x476a1e
cmp byte [esp + 0x56c], 0
jne 0x477045
mov ecx, dword [0x4e81f8]
push ecx
call fcn.00465d80
mov esi, eax
push esi
call fcn.00465020
push eax
push str.ExclNames
lea edx, [esp + 0x18]
push edx
call fcn.004567a0
push esi
call fcn.0049efc5
mov eax, dword [0x4e8204]
add esp, 4
push eax
call fcn.00465d80
mov esi, eax
push esi
call fcn.00465020
push eax
push str.StoreNames
lea ecx, [esp + 0x18]
push ecx
call fcn.004567a0
push esi
call fcn.0049efc5
add esp, 4
xor edx, edx
cmp dword [0x4e6194], edx
lea eax, [esp + 0x10]
sete dl
push edx
push str.UseRAR
push eax
call fcn.004567e0
push 0x4e3308
push str.SFXModule
lea ecx, [esp + 0x18]
push ecx
call fcn.004567a0
push 0x4b1d54
lea edx, [esp + 0x14]
push edx
call fcn.00456720
push 0x4e6199
push str.SFXIcon
lea eax, [esp + 0x18]
push eax
call fcn.004567a0
push 0x4e6599
push str.SFXLogo
lea ecx, [esp + 0x18]
push ecx
call fcn.004567a0
movzx edx, byte [0x4e6999]
push edx
push str.SFXElevate
lea eax, [esp + 0x18]
push eax
call fcn.004567e0
push 0x4e4308
push str.CmtFile
lea ecx, [esp + 0x18]
push ecx
call fcn.004567a0
cmp byte [0x4e4308], 0
je 0x476b18
mov eax, 0x4b1914
jmp 0x476b24
mov edx, dword [0x4f6348]
push edx
call fcn.00465020
mov ecx, eax
lea esi, [ecx + 1]
lea esp, [esp]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x476b30
sub ecx, esi
inc ecx
push ecx
push eax
push str.CmtTextData
lea eax, [esp + 0x1c]
push eax
call fcn.00456840
mov eax, dword [0x4e57c8]
mov ecx, dword [0x4e57cc]
cmp eax, 0x7fffffff
jne 0x476b7b
cmp ecx, 0x7fffffff
jne 0x476b7b
mov ecx, dword [str.Auto]
mov dl, byte [0x4b4748]
mov dword [esp + 0x60], ecx
mov byte [esp + 0x64], dl
jmp 0x476b87
lea edx, [esp + 0x60]
push edx
push ecx
push eax
call fcn.004653f0
lea eax, [esp + 0x60]
push eax
push str.VolumeSize
lea ecx, [esp + 0x18]
push ecx
call fcn.004567a0
movzx edx, byte [0x4e58b3]
push edx
push str.VolPause
lea eax, [esp + 0x18]
push eax
call fcn.004567e0
movzx ecx, byte [0x4e58b0]
push ecx
push str.OldVolNames
lea edx, [esp + 0x18]
push edx
call fcn.004567e0
mov eax, dword [0x4e57a8]
push eax
push str.RecVolNumber
lea ecx, [esp + 0x18]
push ecx
call fcn.004567e0
movzx edx, byte [0x4e57bd]
push edx
push str.Update
lea eax, [esp + 0x18]
push eax
call fcn.004567e0
movzx ecx, byte [0x4e57bc]
push ecx
push str.Fresh
lea edx, [esp + 0x18]
push edx
call fcn.004567e0
movzx eax, byte [0x4e57fe]
push eax
push str.SyncFiles
lea ecx, [esp + 0x18]
push ecx
call fcn.004567e0
mov edx, dword [0x4e579c]
push edx
push str.Overwrite
lea eax, [esp + 0x18]
push eax
call fcn.004567e0
movzx ecx, byte [0x4e57fb]
push ecx
push str.Move
lea edx, [esp + 0x18]
push edx
call fcn.004567e0
movzx eax, byte [0x4e57fd]
push eax
push str.ArcRecBin
lea ecx, [esp + 0x18]
push ecx
call fcn.004567e0
movzx edx, byte [0x4e57fc]
push edx
push str.ArcWipe
lea eax, [esp + 0x18]
push eax
call fcn.004567e0
mov ecx, dword [0x4e57b0]
push ecx
push str.Solid
lea edx, [esp + 0x18]
push edx
call fcn.004567e0
movzx eax, byte [0x4e57ba]
push eax
push 0x4b18bc
lea ecx, [esp + 0x18]
push ecx
call fcn.004567e0
movzx edx, byte [0x4e58b2]
push edx
push str.Test
lea eax, [esp + 0x18]
push eax
call fcn.004567e0
mov ecx, dword [0x4e57a4]
push ecx
push str.Recovery
lea edx, [esp + 0x18]
push edx
call fcn.004567e0
movzx eax, byte [0x4e57f9]
push eax
push str.EraseDest
lea ecx, [esp + 0x18]
push ecx
call fcn.004567e0
movzx edx, byte [0x4e57b9]
push edx
push str.AddArcOnly
lea eax, [esp + 0x18]
push eax
call fcn.004567e0
movzx ecx, byte [0x4e57b8]
push ecx
push str.ClearArc
lea edx, [esp + 0x18]
push edx
call fcn.004567e0
movzx eax, byte [0x4e58b1]
push eax
push str.Lock
lea ecx, [esp + 0x18]
push ecx
call fcn.004567e0
mov edx, dword [0x4e57a0]
push edx
push str.Method
lea eax, [esp + 0x18]
push eax
call fcn.004567e0
mov ecx, dword [0x4e2f04]
push ecx
push str.DictSizeLZ
lea edx, [esp + 0x18]
push edx
call fcn.004567e0
movzx eax, byte [0x4e699a]
push eax
push str.Background
lea ecx, [esp + 0x18]
push ecx
call fcn.004567e0
movzx edx, byte [0x4e699b]
push edx
push str.WaitForOther
lea eax, [esp + 0x18]
push eax
call fcn.004567e0
movzx ecx, byte [0x4e5d7a]
push ecx
push str.Shutdown
lea edx, [esp + 0x18]
push edx
call fcn.004567e0
xor eax, eax
jmp 0x476db0
mov cl, byte [eax + 0x4e5310]
mov byte [esp + eax + 0xe4], cl
inc eax
test cl, cl
jne 0x476db0
lea eax, [esp + 0xe4]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x476dd0
sub eax, edx
lea ecx, [eax + 1]
xor eax, eax
test ecx, ecx
jbe 0x476df3
mov dl, al
add dl, 0x49
xor byte [esp + eax + 0xe4], dl
inc eax
cmp eax, ecx
jb 0x476de2
push ecx
lea eax, [esp + 0xe8]
push eax
push str.Password
lea ecx, [esp + 0x1c]
push ecx
call fcn.00456840
movzx edx, byte [0x4e5390]
push edx
push str.EncryptHeaders
lea eax, [esp + 0x18]
push eax
call fcn.004567e0
movzx ecx, byte [0x4e57fa]
push ecx
push str.OpenShared
lea edx, [esp + 0x18]
push edx
call fcn.004567e0
movzx eax, byte [0x4e57ec]
push eax
push str.ProcessOwners
lea ecx, [esp + 0x18]
push ecx
call fcn.004567e0
movzx edx, byte [0x4e5851]
push edx
push str.SaveStreams
lea eax, [esp + 0x18]
push eax
call fcn.004567e0
movzx ecx, byte [0x4e57ff]
push ecx
push str.GenerateArcName
lea edx, [esp + 0x18]
push edx
call fcn.004567e0
mov eax, dword [0x4e5d74]
push eax
push str.VersionControl
lea ecx, [esp + 0x18]
push ecx
call fcn.004567e0
push 0x4e5800
push str.GenerateMask
lea edx, [esp + 0x18]
push edx
call fcn.004567a0
mov eax, dword [0x4f6350]
push eax
push str.FileTimeMode
lea ecx, [esp + 0x18]
push ecx
call fcn.004567e0
mov edx, dword [0x4f6354]
push edx
push str.FileDays
lea eax, [esp + 0x18]
push eax
call fcn.004567e0
mov ecx, dword [0x4f6358]
push ecx
push str.FileHours
lea edx, [esp + 0x18]
push edx
call fcn.004567e0
mov eax, dword [0x4f635c]
push eax
push str.FileMinutes
lea ecx, [esp + 0x18]
push ecx
call fcn.004567e0
mov ecx, 0x4e5854
call fcn.00467f40
push eax
push str.FileTimeBefore
lea edx, [esp + 0x18]
push edx
call fcn.004567e0
mov ecx, 0x4e5878
call fcn.00467f40
push eax
push str.FileTimeAfter
lea eax, [esp + 0x18]
push eax
call fcn.004567e0
xor ecx, ecx
cmp dword [0x4e57e4], 1
lea edx, [esp + 0x10]
sete cl
push ecx
push str.ArcTimeOriginal
push edx
call fcn.004567e0
xor eax, eax
mov esi, 2
cmp dword [0x4e57e4], esi
lea ecx, [esp + 0x10]
sete al
push eax
push str.ArcTimeLatest
push ecx
call fcn.004567e0
mov edx, dword [0x4e5d7c]
push edx
push str.mtime
lea eax, [esp + 0x18]
push eax
call fcn.004567e0
mov ecx, dword [0x4e5d80]
push ecx
push str.ctime
lea edx, [esp + 0x18]
push edx
call fcn.004567e0
mov eax, dword [0x4e5d84]
push eax
push str.atime
lea ecx, [esp + 0x18]
push ecx
call fcn.004567e0
xor edx, edx
cmp dword [0x4e57c0], 3
lea eax, [esp + 0x10]
sete dl
push edx
push str.PathsAbs
push eax
call fcn.004567e0
xor ecx, ecx
cmp dword [0x4e57c0], esi
lea edx, [esp + 0x10]
sete cl
push ecx
push str.PathsNone
push edx
call fcn.004567e0
xor eax, eax
cmp dword [0x4e57c0], 5
lea ecx, [esp + 0x10]
sete al
push eax
push str.PathsAbsDrive
push ecx
call fcn.004567e0
movzx edx, byte [0x4f6362]
push edx
push str.SeparateArc
lea eax, [esp + 0x18]
push eax
call fcn.004567e0
push 0x4e5974
push str.EmailArcTo
lea ecx, [esp + 0x18]
push ecx
call fcn.004567a0
push 0xc0
push 0x4e58b4
push str.PackDetails
lea edx, [esp + 0x1c]
push edx
call fcn.00456840
mov ecx, dword [esp + 0x564]
pop edi
pop esi
pop ebp
xor ecx, esp
call fcn.0049e626
add esp, 0x55c
ret 0x14