Function at 0x4ad130
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x246c
call fcn.004e6b50
mov eax, dword [0x519bc0]
xor eax, esp
mov dword [esp + 0x2468], eax
mov eax, dword [esp + 0x2478]
push ebx
xor ebx, ebx
push esi
cmp eax, ebx
je 0x4ad169
push 0x50
push eax
lea eax, [esp + 0xd4]
push eax
call fcn.004694b0
jmp 0x4ad18b
mov ecx, dword [esp + 0x2478]
push ecx
lea edx, [esp + 0xd0]
push str.Profiles_d
push edx
mov edx, 0x50
call fcn.004a63e0
add esp, 0xc
push 0x800
push 0x501a20
lea eax, [esp + 0x1478]
push eax
push str.ArcName
lea ecx, [esp + 0xdc]
push ecx
call fcn.0049c530
cmp word [esp + 0x1470], bx
je 0x4ad1d7
xor eax, eax
jmp 0x4ad1c0
movzx ecx, word [esp + eax + 0x1470]
mov word [eax + 0x55abfa], cx
add eax, 2
cmp cx, bx
jne 0x4ad1c0
push edi
cmp byte [esp + 0x2480], bl
je 0x4ad348
push str.FileNames
lea edx, [esp + 0xd4]
push edx
call fcn.0049c120
mov edi, eax
cmp edi, ebx
jle 0x4ad2e1
add edi, 0xa
xor ecx, ecx
mov eax, edi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004e68bd
add esp, 4
push edi
push 0x501a20
mov esi, eax
push esi
push str.FileNames
lea eax, [esp + 0xe0]
push eax
call fcn.0049c530
push ebx
push ebx
push 0x55bbfc
push esi
call fcn.004a3ee0
push esi
call fcn.004e6904
add esp, 4
push 0x800
push 0x501a20
lea ecx, [esp + 0x47c]
push ecx
push str.CurDir
lea edx, [esp + 0xe0]
push edx
mov byte [0x56ce4e], 1
call fcn.0049c530
cmp word [esp + 0x474], bx
je 0x4ad2e1
lea eax, [esp + 0x474]
push eax
call fcn.00445470
test al, al
je 0x4ad2e1
push 1
lea ecx, [esp + 0x478]
push ecx
mov ecx, 0x549cb8
call fcn.00495890
mov byte [0x56ce4e], 1
cmp word [0x55abfa], bx
je 0x4ad2e1
push 0x55abfa
call fcn.004530a0
test al, al
jne 0x4ad2e1
push 0x800
push 0x55abfa
push 0x55abfa
mov ecx, 0x549cb8
call fcn.00490060
push str.ExclNames
lea edx, [esp + 0xd4]
push edx
call fcn.0049c120
mov edi, eax
cmp edi, ebx
jle 0x4ad348
add edi, 0xa
xor ecx, ecx
mov eax, edi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004e68bd
add esp, 4
push edi
push 0x501a20
mov esi, eax
push esi
push str.ExclNames
lea eax, [esp + 0xe0]
push eax
call fcn.0049c530
push ebx
push ebx
push 0x55bc58
push esi
call fcn.004a3ee0
push esi
call fcn.004e6904
add esp, 4
push str.StoreNames
lea ecx, [esp + 0xd4]
push ecx
call fcn.0049c120
cmp eax, 0x200
jg 0x4ad366
mov eax, 0x200
lea edi, [eax + 0xa]
xor ecx, ecx
mov eax, edi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004e68bd
add esp, 4
push edi
push str..rar_.zip_.cab_.7z_.ace_.arj_.bz2_.gz_.lha_.lzh_.taz_.tgz_.xz_.txz
mov esi, eax
push esi
push str.StoreNames
lea eax, [esp + 0xe0]
push eax
call fcn.0049c530
push ebx
push ebx
push 0x55bd6c
push esi
call fcn.004a3ee0
push esi
call fcn.004e6904
add esp, 4
push ebx
push 0x507ee8
lea ecx, [esp + 0xd8]
push ecx
call fcn.0049c560
push 1
push str.UseRAR
lea edx, [esp + 0xd8]
test eax, eax
push edx
setne byte [esp + 0x1b]
call fcn.0049c560
neg eax
sbb eax, eax
inc eax
mov dword [0x557ba8], eax
cmp eax, ebx
jne 0x4ad40f
push ebx
push 0x508690
lea eax, [esp + 0xd8]
push eax
call fcn.0049c560
mov byte [0x555987], 1
test eax, eax
jne 0x4ad415
mov byte [0x555987], bl
push 0x800
push 0x501a20
push 0x5507f8
push str.SFXModule
lea ecx, [esp + 0xe0]
push ecx
call fcn.0049c530
cmp word [0x5507f8], bx
jne 0x4ad467
push ebx
push 0x502c9c
lea edx, [esp + 0xd8]
push edx
call fcn.0049c560
neg eax
sbb eax, eax
and eax, 0x2a
mov word [0x5507f8], ax
xor eax, eax
mov word [0x5507fa], ax
push 0x800
push 0x501a20
push 0x557bb2
push str.SFXIcon
lea ecx, [esp + 0xe0]
push ecx
call fcn.0049c530
push 0x800
push 0x501a20
push 0x558bb2
push str.SFXLogo
lea edx, [esp + 0xe0]
push edx
call fcn.0049c530
push ebx
push str.SFXElevate
lea eax, [esp + 0xd8]
push eax
call fcn.0049c560
test eax, eax
push 0x502a40
setne cl
push 0x55abfa
mov byte [0x559bb2], cl
call fcn.004536e0
movzx edx, al
xor eax, eax
cmp word [0x5507f8], bx
setne al
cmp edx, eax
jne 0x4ad503
push 1
push ebx
push 1
push ebx
push ebx
push 0x55abfa
mov ecx, 0x54be08
call fcn.0047bd60
test al, al
je 0x4ad527
cmp word [0x5507f8], bx
mov ecx, dword [0x557ba8]
setne dl
push ecx
movzx eax, dl
push eax
push 0x800
push 0x55abfa
call fcn.004ace10
push 0x800
push 0x501a20
push 0x5527fe
push str.CmtFile
lea ecx, [esp + 0xe0]
push ecx
call fcn.0049c530
push 0x20000
call fcn.004e68bd
mov esi, eax
add esp, 4
cmp esi, ebx
je 0x4ad65c
push 0x20000
push ebx
push esi
push str.CmtDataWide
lea edx, [esp + 0xe0]
push edx
call fcn.0049c580
cmp word [esi], bx
jne 0x4ad5dc
push 0x10000
push 0x501a20
push esi
push str.CmtTextWide
lea eax, [esp + 0xe0]
push eax
call fcn.0049c530
cmp word [esi], bx
jne 0x4ad5dc
push 0x10000
call fcn.004e68bd
add esp, 4
push 0x10000
push ebx
mov edi, eax
push edi
push str.CmtTextData
lea ecx, [esp + 0xe0]
push ecx
call fcn.0049c580
push 0x10000
push esi
push edi
call fcn.0046c700
push edi
call fcn.004e6904
add esp, 4
xor edx, edx
mov word [esi + 0x1fffe], dx
mov eax, dword [0x56ce34]
push eax
cmp word [esi], bx
je 0x4ad645
call fcn.004e6904
mov eax, esi
add esp, 4
lea edx, [eax + 2]
lea ecx, [ecx]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x4ad600
sub eax, edx
sar eax, 1
xor ecx, ecx
inc eax
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004e68bd
add esp, 4
mov dword [0x56ce34], eax
mov ecx, esi
mov edx, eax
movzx eax, word [ecx]
mov word [edx], ax
add ecx, 2
add edx, 2
cmp ax, bx
jne 0x4ad632
jmp 0x4ad653
call fcn.004e6904
add esp, 4
mov dword [0x56ce34], ebx
push esi
call fcn.004e6904
add esp, 4
push 0x32
push 0x501a20
lea ecx, [esp + 0x278]
push ecx
push str.VolumeSize
lea edx, [esp + 0xe0]
push edx
call fcn.0049c530
mov ax, word [esp + 0x270]
cmp ax, bx
jne 0x4ad6a0
push ebx
push str.VolSize
lea eax, [esp + 0xd8]
push eax
call fcn.0049c560
cdq
jmp 0x4ad6cc
xor ecx, ecx
cmp ax, 0x41
sete cl
push ecx
call sub.USER32.dll_CharUpperW
test eax, eax
je 0x4ad6bf
mov eax, SysReAllocString
mov dword [0x555954], eax
jmp 0x4ad6d2
lea edx, [esp + 0x270]
push edx
call fcn.0046cc40
mov dword [0x555954], edx
push 2
mov dword [0x555950], eax
push str.VolSizeMod
lea eax, [esp + 0xd8]
push eax
call fcn.0049c560
push ebx
push str.VolPause
lea ecx, [esp + 0xd8]
push ecx
mov dword [0x559bc0], eax
call fcn.0049c560
push ebx
test eax, eax
push str.OldVolNames
lea eax, [esp + 0xd8]
setne dl
push eax
mov byte [0x555aca], dl
call fcn.0049c560
push ebx
test eax, eax
push str.RecVolNumber
lea edx, [esp + 0xd8]
setne cl
push edx
mov byte [0x55598c], cl
call fcn.0049c560
push ebx
mov dword [0x55592c], eax
push 0x506efc
lea eax, [esp + 0xd8]
push eax
call fcn.0049c560
push ebx
test eax, eax
push str.Fresh
lea edx, [esp + 0xd8]
setne cl
push edx
mov byte [0x555940], cl
call fcn.0049c560
push ebx
test eax, eax
push str.SyncFiles
lea ecx, [esp + 0xd8]
setne al
push ecx
mov byte [0x55593f], al
call fcn.0049c560
push ebx
test eax, eax
push str.Overwrite
lea eax, [esp + 0xd8]
setne dl
push eax
mov byte [0x555aa2], dl
call fcn.0049c560
push ebx
push str.Move
lea ecx, [esp + 0xd8]
push ecx
mov dword [0x55591c], eax
call fcn.0049c560
push ebx
test eax, eax
push str.ArcRecBin
lea eax, [esp + 0xd8]
setne dl
push eax
mov byte [0x555986], dl
call fcn.0049c560
push ebx
test eax, eax
push str.ArcWipe
lea edx, [esp + 0xd8]
setne cl
push edx
mov byte [0x55598a], cl
call fcn.0049c560
test eax, eax
push ebx
push str.WipeIfPassword
lea ecx, [esp + 0xd8]
setne al
push ecx
mov byte [0x555989], al
call fcn.0049c560
push ebx
test eax, eax
push str.Solid
lea eax, [esp + 0xd8]
setne dl
push eax
mov byte [0x559bbd], dl
call fcn.0049c560
push ebx
push str.Test
lea ecx, [esp + 0xd8]
push ecx
mov dword [0x555934], eax
call fcn.0049c560
push ebx
test eax, eax
push str.RecEnabled
lea eax, [esp + 0xd8]
setne dl
push eax
mov byte [0x555ac9], dl
call fcn.0049c560
push 0x3e8
test eax, eax
push str.RecSize
lea edx, [esp + 0xd8]
setne cl
push edx
mov byte [0x56ce4f], cl
call fcn.0049c560
mov dword [0x56ce50], eax
mov esi, 0xfffffffd
cmp byte [0x56ce4f], bl
je 0x4ad8b3
cmp eax, ebx
jne 0x4ad8b3
mov dword [0x56ce50], esi
push ebx
push str.Recovery
lea eax, [esp + 0xd8]
push eax
call fcn.0049c560
mov ecx, dword [0x56ce50]
mov dword [0x555928], eax
cmp ecx, 0x3e8
jne 0x4ad8f7
cmp eax, ebx
setne cl
mov byte [0x56ce4f], cl
cmp eax, ebx
je 0x4ad8ef
mov dword [0x56ce50], eax
jmp 0x4ad90a
mov dword [0x56ce50], esi
jmp 0x4ad90a
movzx edx, byte [0x56ce4f]
neg edx
sbb edx, edx
and edx, ecx
mov dword [0x555928], edx
push ebx
push str.EraseDest
lea eax, [esp + 0xd8]
push eax
call fcn.0049c560
push ebx
test eax, eax
push str.AddArcOnly
lea edx, [esp + 0xd8]
setne cl
push edx
mov byte [0x555988], cl
call fcn.0049c560
push ebx
test eax, eax
push str.ClearArc
lea ecx, [esp + 0xd8]
setne al
push ecx
mov byte [0x55593d], al
call fcn.0049c560
push ebx
test eax, eax
push 0x5040f8
lea eax, [esp + 0xd8]
setne dl
push eax
mov byte [0x55593c], dl
call fcn.0049c560
mov edi, 3
push edi
test eax, eax
push str.Method
lea edx, [esp + 0xd8]
setne cl
push edx
mov byte [0x555ac8], cl
call fcn.0049c560
push 0x400000
mov dword [0x555920], eax
push str.DictSizeLZ
lea eax, [esp + 0xd8]
push eax
call fcn.0049c560
push 0x2000000
push str.DictSize
lea ecx, [esp + 0xd8]
push ecx
mov dword [0x54f7f4], eax
call fcn.0049c560
push 0x100
mov dword [0x557bac], eax
lea eax, [esp + 0x174]
xor edx, edx
push ebx
push eax
mov word [esp + 0x2e0], dx
call fcn.004e7df0
add esp, 0xc
push 0x100
push ebx
lea ecx, [esp + 0x178]
push ecx
push str.PasswordWide
lea edx, [esp + 0xe0]
push edx
call fcn.0049c580
cmp eax, ebx
jne 0x4ada7f
push 0x100
push ebx
lea eax, [esp + 0x178]
push eax
push str.Password
lea ecx, [esp + 0xe0]
push ecx
mov byte [esp + 0x184], bl
call fcn.0049c580
xor ecx, ecx
cmp eax, ebx
jle 0x4ada63
jmp 0x4ada50
mov dl, cl
add dl, 0x49
xor byte [esp + ecx + 0x170], dl
je 0x4ada63
inc ecx
cmp ecx, eax
jl 0x4ada50
push 0x80
lea eax, [esp + 0x2d8]
push eax
lea ecx, [esp + 0x178]
push ecx
call fcn.0046c700
jmp 0x4adabb
xor ecx, ecx
cmp eax, ebx
jle 0x4adaa1
jmp 0x4ada90
mov dl, cl
add dl, 0x49
xor byte [esp + ecx + 0x170], dl
inc ecx
cmp ecx, eax
jl 0x4ada90
push 0x80
lea eax, [esp + 0x2d8]
push eax
lea ecx, [esp + 0x178]
push ecx
call fcn.0046c780
cmp byte [esp + 0xf], bl
je 0x4adad1
cmp byte [0x554910], bl
jne 0x4adb01
cmp byte [0x554912], bl
jne 0x4adb01
lea edx, [esp + 0x2d4]
push edx
mov ecx, 0x554810
call fcn.004669a0
push ebx
push str.EncryptHeaders
lea eax, [esp + 0xd8]
push eax
call fcn.0049c560
test eax, eax
setne cl
mov byte [0x554912], cl
push 0x100
lea edx, [esp + 0x2d8]
push edx
call fcn.00466920
push 0x100
lea eax, [esp + 0x174]
push eax
call fcn.00466920
push ebx
push str.OpenShared
lea ecx, [esp + 0xd8]
push ecx
call fcn.0049c560
push ebx
test eax, eax
push str.ProcessOwners
lea eax, [esp + 0xd8]
setne dl
push eax
mov byte [0x555985], dl
call fcn.0049c560
push 1
test eax, eax
push str.SaveStreams
lea edx, [esp + 0xd8]
setne cl
push edx
mov byte [0x555978], cl
call fcn.0049c560
push ebx
test eax, eax
push str.SaveSymLinks
lea ecx, [esp + 0xd8]
setne al
push ecx
mov byte [0x555aa4], al
call fcn.0049c560
push ebx
test eax, eax
push str.SaveHardLinks
lea eax, [esp + 0xd8]
setne dl
push eax
mov byte [0x555979], dl
call fcn.0049c560
push ebx
test eax, eax
push 0x5083a4
lea edx, [esp + 0xd8]
setne cl
push edx
mov byte [0x55597a], cl
call fcn.0049c560
push ebx
test eax, eax
push str.WaitForOther
lea ecx, [esp + 0xd8]
setne al
push ecx
mov byte [0x559bb3], al
call fcn.0049c560
push ebx
test eax, eax
push str.Shutdown
lea eax, [esp + 0xd8]
setne dl
push eax
mov byte [0x559bb4], dl
call fcn.0049c560
push ebx
test eax, eax
push str.GenerateArcName
lea edx, [esp + 0xd8]
setne cl
push edx
mov byte [0x556b91], cl
call fcn.0049c560
test eax, eax
setne al
mov byte [0x5559a0], al
push ebx
push str.VersionControl
lea ecx, [esp + 0xd8]
push ecx
call fcn.0049c560
push ebx
push str.BLAKE2
lea edx, [esp + 0xd8]
push edx
mov dword [0x556b8c], eax
call fcn.0049c560
neg eax
sbb eax, eax
neg eax
add eax, 2
push ebx
mov dword [0x555924], eax
push str.FileCopies
lea eax, [esp + 0xd8]
push eax
call fcn.0049c560
neg eax
push 1
sbb eax, eax
push str.QuickOpen
lea ecx, [esp + 0xd8]
neg eax
push ecx
mov dword [0x555990], eax
call fcn.0049c560
push 0x80
push str.yyyymmddhhmmss
push 0x5559a2
push str.GenerateMask
lea edx, [esp + 0xe0]
push edx
mov dword [0x5517f8], eax
call fcn.0049c530
mov esi, 4
cmp word [0x5559a2], bx
je 0x4add0d
mov ecx, str.yyyymmddhhnnss
mov eax, 0x5559a2
lea ebx, [ebx]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4add04
cmp dx, bx
je 0x4add00
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4add04
add eax, esi
add ecx, esi
cmp dx, bx
jne 0x4adce0
xor eax, eax
jmp 0x4add09
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x4add26
xor eax, eax
nop
movzx ecx, word [eax + str.yyyymmddhhmmss]
mov word [eax + 0x5559a2], cx
add eax, 2
cmp cx, bx
jne 0x4add10
push ebx
push str.FileTimeMode
lea eax, [esp + 0xd8]
push eax
call fcn.0049c560
push ebx
push str.FileDays
lea ecx, [esp + 0xd8]
push ecx
mov dword [0x56ce3c], eax
call fcn.0049c560
push ebx
push str.FileHours
lea edx, [esp + 0xd8]
push edx
mov dword [0x56ce40], eax
call fcn.0049c560
push ebx
mov dword [0x56ce44], eax
push str.FileMinutes
lea eax, [esp + 0xd8]
push eax
call fcn.0049c560
mov ecx, dword [0x56ce3c]
mov dword [0x56ce48], eax
mov dword [0x555aa8], ebx
mov dword [0x555aac], ebx
mov dword [0x555ab0], ebx
mov dword [0x555ab4], ebx
cmp ecx, 1
je 0x4addae
cmp ecx, 2
jne 0x4ade07
mov ecx, dword [0x56ce44]
mov edx, dword [0x56ce40]
push eax
push ecx
push edx
lea eax, [esp + 0x3e0]
push str._dd_dh_dm
push eax
mov edx, 0x50
call fcn.004a63e0
add esp, 0x14
cmp dword [0x56ce3c], 1
jne 0x4addef
lea ecx, [esp + 0x3d4]
push ecx
mov ecx, 0x555aa8
jmp 0x4addfc
lea edx, [esp + 0x3d4]
push edx
mov ecx, 0x555ab0
call fcn.0046b090
mov ecx, dword [0x56ce3c]
cmp ecx, edi
je 0x4ade0f
cmp ecx, esi
jne 0x4ade63
push ebx
push str.FileTimeBefore
lea eax, [esp + 0xd8]
push eax
call fcn.0049c560
cmp eax, ebx
je 0x4ade39
cmp dword [0x56ce3c], edi
jne 0x4ade39
push eax
mov ecx, 0x555aa8
call fcn.0046af40
push ebx
push str.FileTimeAfter
lea ecx, [esp + 0xd8]
push ecx
call fcn.0049c560
cmp eax, ebx
je 0x4ade63
cmp dword [0x56ce3c], esi
jne 0x4ade63
push eax
mov ecx, 0x555ab0
call fcn.0046af40
push ebx
push str.ArcTimeOriginal
lea edx, [esp + 0xd8]
push edx
mov dword [0x555970], ebx
call fcn.0049c560
test eax, eax
je 0x4ade8a
mov dword [0x555970], 1
push ebx
push str.ArcTimeLatest
lea eax, [esp + 0xd8]
push eax
call fcn.0049c560
test eax, eax
je 0x4adeab
mov dword [0x555970], 2
push esi
push str.mtime
lea ecx, [esp + 0xd8]
push ecx
call fcn.0049c560
push ebx
push str.ctime
lea edx, [esp + 0xd8]
push edx
mov dword [0x556b94], eax
call fcn.0049c560
push ebx
mov dword [0x556b98], eax
push str.atime
lea eax, [esp + 0xd8]
push eax
call fcn.0049c560
mov ecx, dword [0x55bc10]
neg ecx
push ebx
sbb ecx, ecx
push str.PathsAbs
lea edx, [esp + 0xd8]
and ecx, 5
push edx
mov dword [0x556b9c], eax
mov dword [0x555944], ecx
call fcn.0049c560
test eax, eax
je 0x4adf23
mov dword [0x555944], edi
push ebx
push str.PathsNone
lea eax, [esp + 0xd8]
push eax
call fcn.0049c560
pop edi
test eax, eax
je 0x4adf45
mov dword [0x555944], 1
push ebx
push str.PathsAbsDrive
lea ecx, [esp + 0xd4]
push ecx
call fcn.0049c560
test eax, eax
je 0x4adf62
mov dword [0x555944], esi
push ebx
push str.ImmExec
lea edx, [esp + 0xd4]
push edx
call fcn.0049c560
push ebx
test eax, eax
push str.SeparateArc
lea ecx, [esp + 0xd4]
setne al
push ecx
mov byte [0x56ce4c], al
call fcn.0049c560
push 0x800
push 0x501a20
push 0x555b8c
test eax, eax
push str.EmailArcTo
lea eax, [esp + 0xdc]
setne dl
push eax
mov byte [0x559bcd], dl
call fcn.0049c530
push 0xc0
push ebx
lea ecx, [esp + 0x14]
push ecx
push str.PackDetails
lea edx, [esp + 0xdc]
push edx
call fcn.0049c580
push 0xc0
push ebx
push 0x555acc
call fcn.004e7df0
add esp, 0xc
xor eax, eax
mov ecx, dword [eax + 0x518824]
mov edx, dword [eax + 0x518820]
lea ecx, [ecx + ecx*2]
mov esi, dword [esp + ecx*4 + 0xc]
lea ecx, [esp + ecx*4 + 0xc]
lea edx, [edx + edx*2]
lea edx, [edx*4 + 0x555acc]
mov dword [edx], esi
mov esi, dword [ecx + 4]
mov ecx, dword [ecx + 8]
add eax, 8
mov dword [edx + 4], esi
mov dword [edx + 8], ecx
cmp eax, 0x40
jb 0x4adff0
mov ecx, dword [esp + 0x2470]
pop esi
pop ebx
xor ecx, esp
call fcn.004e6b3a
add esp, 0x246c
ret 0xc