Function at 0x4c1620
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x2468
call fcn.004ebbf0
mov eax, dword [0x528af4]
xor eax, esp
mov dword [esp + 0x2464], eax
mov eax, dword [esp + 0x2474]
test eax, eax
je 0x4c1655
push 0x50
push eax
lea eax, [esp + 0xc8]
push eax
call fcn.0048e710
jmp 0x4c1673
push dword [esp + 0x246c]
lea eax, [esp + 0xc4]
push str.Profiles_d
push 0x50
push eax
call fcn.004028e0
add esp, 0x10
push 0x800
push 0x50b8c4
lea eax, [esp + 0x146c]
push eax
push str.ArcName
lea eax, [esp + 0xd0]
push eax
call fcn.0049fec0
cmp word [esp + 0x1464], 0
je 0x4c16bb
xor ecx, ecx
movzx eax, word [esp + ecx + 0x1464]
lea ecx, [ecx + 2]
mov word [ecx + 0x54f298], ax
test ax, ax
jne 0x4c16a4
cmp byte [esp + 0x2470], 0
push ebx
push ebp
push esi
push edi
mov ebp, 2
je 0x4c1831
push str.FileNames
lea eax, [esp + 0xd4]
push eax
call fcn.0049ffa0
mov edi, eax
test edi, edi
jle 0x4c17cd
add edi, 0xa
xor ecx, ecx
mov eax, edi
mul ebp
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004ebd1f
add esp, 4
mov esi, eax
lea eax, [esp + 0xd0]
push edi
push 0x50b8c4
push esi
push str.FileNames
push eax
call fcn.0049fec0
push 0
push 0
push 0x55029c
push esi
call fcn.004a7cf0
push esi
call fcn.004ebd28
add esp, 4
mov byte [0x58e84e], 1
lea eax, [esp + 0x474]
push 0x800
push 0x50b8c4
push eax
push str.CurDir
lea eax, [esp + 0xe0]
push eax
call fcn.0049fec0
cmp word [esp + 0x474], 0
je 0x4c17cd
lea eax, [esp + 0x474]
push eax
call fcn.00469360
test al, al
je 0x4c17cd
push 1
lea eax, [esp + 0x478]
mov ecx, 0x55d4d8
push eax
call fcn.0043df70
cmp word [0x54f29a], 0
mov byte [0x58e84e], 1
je 0x4c17cd
push 0x54f29a
call fcn.00478870
test al, al
jne 0x4c17cd
push 0x800
push 0x54f29a
push 0x54f29a
mov ecx, 0x55d4d8
call fcn.00440000
push str.ExclNames
lea eax, [esp + 0xd4]
push eax
call fcn.0049ffa0
mov edi, eax
test edi, edi
jle 0x4c1831
add edi, 0xa
xor ecx, ecx
mov eax, edi
mul ebp
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004ebd1f
add esp, 4
mov esi, eax
lea eax, [esp + 0xd0]
push edi
push 0x50b8c4
push esi
push str.ExclNames
push eax
call fcn.0049fec0
push 0
push 0
push 0x5502f8
push esi
call fcn.004a7cf0
push esi
call fcn.004ebd28
add esp, 4
push str.StoreNames
lea eax, [esp + 0xd4]
push eax
call fcn.0049ffa0
cmp eax, 0x200
jg 0x4c184f
mov eax, 0x200
lea esi, [eax + 0xa]
xor ecx, ecx
mov eax, esi
mul ebp
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004ebd1f
add esp, 4
mov edi, eax
lea eax, [esp + 0xd0]
push esi
push str..rar_.zip_.cab_.7z_.ace_.arj_.bz2_.gz_.lha_.lzh_.taz_.tgz_.xz_.txz
push edi
push str.StoreNames
push eax
call fcn.0049fec0
push 0
push 0
push 0x55040c
push edi
call fcn.004a7cf0
push edi
call fcn.004ebd28
add esp, 4
lea eax, [esp + 0xd0]
push 0
push str.Default
push eax
call fcn.0049fd30
push 1
test eax, eax
lea eax, [esp + 0xd4]
push str.UseRAR
push eax
setne bl
call fcn.0049fd30
neg eax
sbb eax, eax
add eax, 1
mov dword [0x54c248], eax
jne 0x4c18f5
push 0
push 0x512634
lea eax, [esp + 0xd8]
push eax
call fcn.0049fd30
mov byte [0x54a028], 1
test eax, eax
jne 0x4c18fc
mov byte [0x54a028], 0
push 0x800
push 0x50b8c4
push 0x544e98
push str.SFXModule
lea eax, [esp + 0xe0]
push eax
call fcn.0049fec0
cmp word [0x544e98], 0
jne 0x4c1950
push 0
push 0x50f7f4
lea eax, [esp + 0xd8]
push eax
call fcn.0049fd30
neg eax
sbb eax, eax
and eax, 0x2a
mov word [0x544e98], ax
xor eax, eax
mov word [0x544e9a], ax
push 0x800
push 0x50b8c4
push 0x54c252
push str.SFXIcon
lea eax, [esp + 0xe0]
push eax
call fcn.0049fec0
push 0x800
push 0x50b8c4
push 0x54d252
push str.SFXLogo
lea eax, [esp + 0xe0]
push eax
call fcn.0049fec0
push 0
push str.SFXElevate
lea eax, [esp + 0xd8]
push eax
call fcn.0049fd30
test eax, eax
push 0x50ba20
push 0x54f29a
setne byte [0x54e252]
call fcn.004772e0
mov dx, word [0x544e98]
movzx ecx, al
xor eax, eax
test dx, dx
setne al
cmp ecx, eax
jne 0x4c19fa
push 1
push 0
push 1
push 0
push 0
push 0
push 0x54f29a
mov ecx, 0x55a850
call fcn.00405550
test al, al
je 0x4c1a19
mov dx, word [0x544e98]
push dword [0x54c248]
test dx, dx
setne al
movzx eax, al
push eax
push 0x800
push 0x54f29a
call fcn.004c2670
push 0x800
push 0x50b8c4
push 0x546e9e
push str.CmtFile
lea eax, [esp + 0xe0]
push eax
call fcn.0049fec0
push 0x20000
call fcn.004ebd1f
mov edi, eax
add esp, 4
test edi, edi
je 0x4c1b4e
push 0x20000
push 0
push edi
push str.CmtDataWide
lea eax, [esp + 0xe0]
push eax
call fcn.0049fd50
cmp word [edi], 0
jne 0x4c1ad2
push 0x10000
push 0x50b8c4
push edi
push str.CmtTextWide
lea eax, [esp + 0xe0]
push eax
call fcn.0049fec0
cmp word [edi], 0
jne 0x4c1ad2
push 0x10000
call fcn.004ebd1f
add esp, 4
mov esi, eax
lea eax, [esp + 0xd0]
push 0x10000
push 0
push esi
push str.CmtTextData
push eax
call fcn.0049fd50
push 0x10000
push edi
push esi
call fcn.004914f0
push esi
call fcn.004ebd28
add esp, 4
xor eax, eax
mov word [edi + 0x1fffe], ax
push dword [0x58e834]
cmp word [edi], ax
je 0x4c1b33
call fcn.004ebd28
mov ecx, edi
add esp, 4
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, ebp
test ax, ax
jne 0x4c1af3
sub ecx, edx
sar ecx, 1
lea eax, [ecx + 1]
xor ecx, ecx
mul ebp
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004ebd1f
add esp, 4
mov dword [0x58e834], eax
mov edx, edi
nop
movzx ecx, word [edx]
lea edx, [edx + 2]
mov word [eax], cx
lea eax, [eax + 2]
test cx, cx
jne 0x4c1b20
jmp 0x4c1b45
call fcn.004ebd28
add esp, 4
mov dword [0x58e834], 0
push edi
call fcn.004ebd28
add esp, 4
push 0x32
push 0x50b8c4
lea eax, [esp + 0x278]
push eax
push str.VolumeSize
lea eax, [esp + 0xe0]
push eax
call fcn.0049fec0
mov cx, word [esp + 0x270]
test cx, cx
jne 0x4c1b93
push 0
push str.VolSize
lea eax, [esp + 0xd8]
push eax
call fcn.0049fd30
cdq
jmp 0x4c1bc9
xor eax, eax
cmp cx, 0x41
sete al
push eax
call fcn.00491a30
test eax, eax
je 0x4c1bbc
mov dword [0x549ff0], 0x7fffffff
mov dword [0x549ff4], 0x7fffffff
jmp 0x4c1bd4
lea eax, [esp + 0x270]
push eax
call fcn.00491970
mov dword [0x549ff4], edx
mov dword [0x549ff0], eax
push 2
push str.VolSizeMod
lea eax, [esp + 0xd8]
push eax
call fcn.0049fd30
push 0
mov dword [0x54e260], eax
lea eax, [esp + 0xd4]
push str.VolPause
push eax
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.OldVolNames
push eax
setne byte [0x54a16a]
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.RecVolNumber
push eax
setne byte [0x54a02d]
call fcn.0049fd30
push 0
mov dword [0x549fcc], eax
lea eax, [esp + 0xd4]
push str.Update
push eax
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.Fresh
push eax
setne byte [0x549fe0]
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.SyncFiles
push eax
setne byte [0x549fdf]
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.Overwrite
push eax
setne byte [0x54a142]
call fcn.0049fd30
push 0
mov dword [0x549fbc], eax
lea eax, [esp + 0xd4]
push str.Move
push eax
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.ArcRecBin
push eax
setne byte [0x54a026]
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.ArcWipe
push eax
setne byte [0x54a02b]
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.WipeIfPassword
push eax
setne byte [0x54a02a]
call fcn.0049fd30
test eax, eax
setne byte [0x54e25d]
push 0
push str.Solid
lea eax, [esp + 0xd8]
push eax
call fcn.0049fd30
push 0
mov dword [0x549fd4], eax
lea eax, [esp + 0xd4]
push str.Test
push eax
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.RecEnabled
push eax
setne byte [0x54a169]
call fcn.0049fd30
push 0x3e8
test eax, eax
lea eax, [esp + 0xd4]
push str.RecSize
push eax
setne byte [0x58e84f]
call fcn.0049fd30
cmp byte [0x58e84f], 0
mov dword [0x58e850], eax
je 0x4c1daa
test eax, eax
jne 0x4c1daa
mov dword [0x58e850], 0xfffffffd
push 0
push str.Recovery
lea eax, [esp + 0xd8]
push eax
call fcn.0049fd30
mov ecx, dword [0x58e850]
mov dword [0x549fc8], eax
cmp ecx, 0x3e8
jne 0x4c1df1
test eax, eax
setne byte [0x58e84f]
test eax, eax
je 0x4c1de5
mov dword [0x58e850], eax
jmp 0x4c1e03
mov dword [0x58e850], 0xfffffffd
jmp 0x4c1e03
movzx eax, byte [0x58e84f]
neg eax
sbb eax, eax
and eax, ecx
mov dword [0x549fc8], eax
push 0
push str.EraseDest
lea eax, [esp + 0xd8]
push eax
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.AddArcOnly
push eax
setne byte [0x54a029]
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.ClearArc
push eax
setne byte [0x549fdd]
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.Lock
push eax
setne byte [0x549fdc]
call fcn.0049fd30
push 3
test eax, eax
lea eax, [esp + 0xd4]
push str.Method
push eax
setne byte [0x54a168]
call fcn.0049fd30
push 0x400000
mov dword [0x549fc0], eax
lea eax, [esp + 0xd4]
push str.DictSizeLZ
push eax
call fcn.0049fd30
push 0x2000000
mov dword [0x543e94], eax
lea eax, [esp + 0xd4]
push str.DictSize
push eax
call fcn.0049fd30
mov dword [0x54c24c], eax
xor eax, eax
push 0x100
push eax
mov word [esp + 0x2dc], ax
lea eax, [esp + 0x178]
push eax
call fcn.004ee100
add esp, 0xc
lea eax, [esp + 0x170]
push 0x100
push 0
push eax
push str.PasswordWide
lea eax, [esp + 0xe0]
push eax
call fcn.0049fd50
mov edx, eax
test edx, edx
jne 0x4c1f6d
push 0x100
push eax
mov byte [esp + 0x178], al
lea eax, [esp + 0x178]
push eax
push str.Password
lea eax, [esp + 0xe0]
push eax
call fcn.0049fd50
xor edx, edx
test eax, eax
jle 0x4c1f51
lea esp, [esp]
lea ecx, [edx + 0x49]
xor byte [esp + edx + 0x170], cl
je 0x4c1f51
inc edx
cmp edx, eax
jl 0x4c1f40
push 0x80
lea eax, [esp + 0x2d8]
push eax
lea eax, [esp + 0x178]
push eax
call fcn.004914f0
jmp 0x4c1f9d
xor ecx, ecx
test edx, edx
jle 0x4c1f83
mov al, cl
add al, 0x49
xor byte [esp + ecx + 0x170], al
inc ecx
cmp ecx, edx
jl 0x4c1f73
push 0x80
lea eax, [esp + 0x2d8]
push eax
lea eax, [esp + 0x178]
push eax
call fcn.00491530
test bl, bl
je 0x4c1fb3
cmp byte [0x548fb0], 0
jne 0x4c1fe2
cmp byte [0x548fb2], 0
jne 0x4c1fe2
lea eax, [esp + 0x2d4]
mov ecx, 0x548eb0
push eax
call fcn.0048bc30
push 0
push str.EncryptHeaders
lea eax, [esp + 0xd8]
push eax
call fcn.0049fd30
test eax, eax
setne byte [0x548fb2]
push 0x100
lea eax, [esp + 0x2d8]
push eax
call fcn.0048bcb0
push 0x100
lea eax, [esp + 0x174]
push eax
call fcn.0048bcb0
push 0
push str.OpenShared
lea eax, [esp + 0xd8]
push eax
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.ProcessOwners
push eax
setne byte [0x54a025]
call fcn.0049fd30
push 1
test eax, eax
lea eax, [esp + 0xd4]
push str.SaveStreams
push eax
setne byte [0x54a018]
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.SaveSymLinks
push eax
setne byte [0x54a144]
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.SaveHardLinks
push eax
setne byte [0x54a019]
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.Background
push eax
setne byte [0x54a01a]
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.WaitForOther
push eax
setne byte [0x54e253]
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.Shutdown
push eax
setne byte [0x54e254]
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.GenerateArcName
push eax
setne byte [0x54b231]
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.VersionControl
push eax
setne byte [0x54a040]
call fcn.0049fd30
push 0
mov dword [0x54b22c], eax
lea eax, [esp + 0xd4]
push 0x51299c
push eax
call fcn.0049fd30
neg eax
push 0
sbb eax, eax
neg eax
add eax, 2
mov dword [0x549fc4], eax
lea eax, [esp + 0xd4]
push str.FileCopies
push eax
call fcn.0049fd30
neg eax
push 1
sbb eax, eax
neg eax
mov dword [0x54a030], eax
lea eax, [esp + 0xd4]
push str.QuickOpen
push eax
call fcn.0049fd30
push 0x80
push str.yyyymmddhhmmss
push 0x54a042
mov dword [0x545e98], eax
lea eax, [esp + 0xdc]
push str.GenerateMask
push eax
call fcn.0049fec0
cmp word [0x54a042], 0
je 0x4c21e2
mov ecx, str.yyyymmddhhnnss
mov eax, 0x54a042
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4c21d9
test dx, dx
je 0x4c21d5
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4c21d9
add eax, 4
add ecx, 4
test dx, dx
jne 0x4c21b3
xor eax, eax
jmp 0x4c21de
sbb eax, eax
or eax, 1
test eax, eax
jne 0x4c21f5
mov ecx, 7
mov esi, str.yyyymmddhhmmss
mov edi, 0x54a042
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
push 0
push str.FileTimeMode
lea eax, [esp + 0xd8]
push eax
call fcn.0049fd30
push 0
mov dword [0x58e83c], eax
lea eax, [esp + 0xd4]
push str.FileDays
push eax
call fcn.0049fd30
push 0
mov dword [0x58e840], eax
lea eax, [esp + 0xd4]
push str.FileHours
push eax
call fcn.0049fd30
push 0
mov dword [0x58e844], eax
lea eax, [esp + 0xd4]
push str.FileMinutes
push eax
call fcn.0049fd30
mov ecx, dword [0x58e83c]
mov dword [0x58e848], eax
mov dword [0x54a148], 0
mov dword [0x54a14c], 0
mov dword [0x54a150], 0
mov dword [0x54a154], 0
cmp ecx, 1
je 0x4c2290
cmp ecx, ebp
jne 0x4c22da
push eax
push dword [0x58e844]
lea eax, [esp + 0x3dc]
push dword [0x58e840]
push str._dd_dh_dm
push 0x50
push eax
call fcn.004028e0
add esp, 0x18
lea eax, [esp + 0x3d4]
cmp dword [0x58e83c], 1
mov ecx, 0x54a148
push eax
je 0x4c22cf
mov ecx, 0x54a150
call fcn.0048fc70
mov ecx, dword [0x58e83c]
cmp ecx, 3
je 0x4c22e4
cmp ecx, 4
jne 0x4c233c
push 0
push str.FileTimeBefore
lea eax, [esp + 0xd8]
push eax
call fcn.0049fd30
test eax, eax
je 0x4c2310
cmp dword [0x58e83c], 3
jne 0x4c2310
push eax
mov ecx, 0x54a148
call fcn.0048fdd0
push 0
push str.FileTimeAfter
lea eax, [esp + 0xd8]
push eax
call fcn.0049fd30
test eax, eax
je 0x4c233c
cmp dword [0x58e83c], 4
jne 0x4c233c
push eax
mov ecx, 0x54a150
call fcn.0048fdd0
push 0
push str.ArcTimeOriginal
lea eax, [esp + 0xd8]
mov dword [0x54a010], 0
push eax
call fcn.0049fd30
test eax, eax
je 0x4c2368
mov dword [0x54a010], 1
push 0
push str.ArcTimeLatest
lea eax, [esp + 0xd8]
push eax
call fcn.0049fd30
test eax, eax
je 0x4c2386
mov dword [0x54a010], ebp
push 4
push str.mtime
lea eax, [esp + 0xd8]
push eax
call fcn.0049fd30
push 0
mov dword [0x54b234], eax
lea eax, [esp + 0xd4]
push str.ctime
push eax
call fcn.0049fd30
push 0
mov dword [0x54b238], eax
lea eax, [esp + 0xd4]
push str.atime
push eax
call fcn.0049fd30
mov dword [0x54b23c], eax
mov eax, dword [0x5502b0]
neg eax
push 0
sbb eax, eax
and eax, 5
mov dword [0x549fe4], eax
lea eax, [esp + 0xd4]
push str.PathsAbs
push eax
call fcn.0049fd30
test eax, eax
je 0x4c2404
mov dword [0x549fe4], 3
push 0
push str.PathsNone
lea eax, [esp + 0xd8]
push eax
call fcn.0049fd30
test eax, eax
je 0x4c2426
mov dword [0x549fe4], 1
push 0
push str.PathsAbsDrive
lea eax, [esp + 0xd8]
push eax
call fcn.0049fd30
test eax, eax
je 0x4c2448
mov dword [0x549fe4], 4
push 0
push str.ImmExec
lea eax, [esp + 0xd8]
push eax
call fcn.0049fd30
push 0
test eax, eax
lea eax, [esp + 0xd4]
push str.SeparateArc
push eax
setne byte [0x58e84c]
call fcn.0049fd30
push 0x800
push 0x50b8c4
push 0x54a22c
test eax, eax
lea eax, [esp + 0xdc]
push str.EmailArcTo
push eax
setne byte [0x54e26d]
call fcn.0049fec0
push 0xc0
push 0
lea eax, [esp + 0x18]
push eax
push str.PackDetails
lea eax, [esp + 0xe0]
push eax
call fcn.0049fd50
push 0xc0
push 0
push 0x54a16c
call fcn.004ee100
add esp, 0xc
xor esi, esi
jmp 0x4c24e0
mov eax, dword [esi + 0x527704]
lea edx, [esp + 0x10]
lea eax, [eax + eax*2]
lea edx, [edx + eax*4]
mov eax, dword [esi + 0x527700]
add esi, 8
lea ecx, [eax + eax*2]
mov eax, dword [edx]
mov dword [ecx*4 + 0x54a16c], eax
mov eax, dword [edx + 4]
mov dword [ecx*4 + 0x54a170], eax
mov eax, dword [edx + 8]
mov dword [ecx*4 + 0x54a174], eax
cmp esi, 0x40
jb 0x4c24e0
mov ecx, dword [esp + 0x2474]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004ebbd8
add esp, 0x2468
ret 0xc