Function at 0x47e780
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x135c
call fcn.004a4220
mov eax, dword [0x4ca3b0]
xor eax, esp
mov dword [esp + 0x1358], eax
mov eax, dword [esp + 0x1368]
push ebx
xor ebx, ebx
cmp eax, ebx
je 0x47e7b5
push 0x50
push eax
lea eax, [esp + 0x10]
push eax
call fcn.00469f80
jmp 0x47e7d4
mov ecx, dword [esp + 0x1364]
push ecx
lea edx, [esp + 0xc]
push str.Profiles_d
push edx
mov edx, 0x50
call fcn.00495900
add esp, 0xc
push 0x400
push 0x4b8d0c
lea eax, [esp + 0x364]
push eax
push str.ArcName
lea ecx, [esp + 0x18]
push ecx
call fcn.0045af80
cmp word [esp + 0x35c], bx
je 0x47e818
xor eax, eax
movzx ecx, word [esp + eax + 0x35c]
mov word [eax + 0x4f7014], cx
add eax, 2
cmp cx, bx
jne 0x47e801
push esi
push edi
cmp byte [esp + 0x1370], bl
je 0x47e92b
push str.FileNames
lea edx, [esp + 0x14]
push edx
call fcn.0045b000
cmp eax, ebx
jle 0x47e8c9
lea edi, [eax + eax + 0xa]
xor ecx, ecx
mov eax, edi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004a47e4
add esp, 4
push edi
push 0x4b8d0c
mov esi, eax
push esi
push str.FileNames
lea eax, [esp + 0x20]
push eax
call fcn.0045af80
mov ecx, dword [0x4f7814]
push ebx
push ebx
push ecx
push esi
call fcn.0046a910
push esi
call fcn.004a4635
add esp, 4
push 0x400
push 0x4b8d0c
lea edx, [esp + 0xb6c]
push edx
push str.CurDir
lea eax, [esp + 0x20]
push eax
call fcn.0045af80
lea ecx, [esp + 0xb64]
push ecx
call fcn.00484e60
mov byte [0x50c30f], 1
mov byte [0x4f5fcc], 1
push str.ExclNames
lea edx, [esp + 0x14]
push edx
call fcn.0045b000
cmp eax, ebx
jle 0x47e92b
lea edi, [eax + eax + 0xa]
xor ecx, ecx
mov eax, edi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004a47e4
add esp, 4
push edi
push 0x4b8d0c
mov esi, eax
push esi
push str.ExclNames
lea eax, [esp + 0x20]
push eax
call fcn.0045af80
mov ecx, dword [0x4f7818]
push ebx
push ebx
push ecx
push esi
call fcn.0046a910
push esi
call fcn.004a4635
add esp, 4
push str.StoreNames
lea edx, [esp + 0x14]
push edx
call fcn.0045b000
cmp eax, 0x200
jg 0x47e946
mov eax, 0x200
lea edi, [eax + eax + 0xa]
xor ecx, ecx
mov eax, edi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004a47e4
add esp, 4
push edi
push str..rar_.zip_.cab_.7z_.ace_.arj_.bz2_.gz_.lha_.lzh_.taz_.tgz
mov esi, eax
push esi
push str.StoreNames
lea eax, [esp + 0x20]
push eax
call fcn.0045af80
mov ecx, dword [0x4f7824]
push ebx
push ebx
push ecx
push esi
call fcn.0046a910
push esi
call fcn.004a4635
add esp, 4
push ebx
push 0x4bd53c
lea edx, [esp + 0x18]
push edx
call fcn.0045afb0
push 1
test eax, eax
push str.UseRAR
lea eax, [esp + 0x18]
push eax
setne byte [esp + 0x1b]
call fcn.0045afb0
push 0x400
push 0x4b8d0c
neg eax
push 0x4f14a8
sbb eax, eax
push str.SFXModule
lea ecx, [esp + 0x20]
inc eax
push ecx
mov dword [0x4f4fb4], eax
call fcn.0045af80
cmp word [0x4f14a8], bx
jne 0x47ea13
push ebx
push 0x4b8fc8
lea edx, [esp + 0x18]
push edx
call fcn.0045afb0
neg eax
sbb eax, eax
and eax, 0x2a
mov word [0x4f14a8], ax
xor eax, eax
mov word [0x4f14aa], ax
push 0x400
push 0x4b8d0c
push 0x4f4fba
push str.SFXIcon
lea ecx, [esp + 0x20]
push ecx
call fcn.0045af80
cmp word [0x4f4fba], bx
jne 0x47ea58
push 0x400
push 0x4b8d0c
push 0x4f4fba
push str.SFXIcon
push str.SFXDefault
call fcn.0045af80
push 0x400
push 0x4b8d0c
push 0x4f57ba
push str.SFXLogo
lea edx, [esp + 0x20]
push edx
call fcn.0045af80
cmp word [0x4f57ba], bx
jne 0x47ea9d
push 0x400
push 0x4b8d0c
push 0x4f57ba
push str.SFXLogo
push str.SFXDefault
call fcn.0045af80
push ebx
push 0x4bc440
lea eax, [esp + 0x18]
push eax
call fcn.0045afb0
test eax, eax
setne al
mov byte [0x4f5fba], al
cmp al, bl
jne 0x47ead6
push ebx
push 0x4bc440
push str.SFXDefault
call fcn.0045afb0
test eax, eax
setne cl
mov byte [0x4f5fba], cl
push 0x4f7014
call fcn.00451750
test eax, eax
jne 0x47eb03
cmp word [0x4f14a8], bx
mov edx, dword [0x4f4fb4]
setne al
movzx ecx, al
push edx
push ecx
push 0x4f7014
call fcn.0047e3d0
push 0x400
push 0x4b8d0c
push 0x4f2ca8
push str.CmtFile
lea edx, [esp + 0x20]
push edx
call fcn.0045af80
push 0x20000
call fcn.004a47e4
mov esi, eax
add esp, 4
cmp esi, ebx
je 0x47ec0e
push 0x10000
push 0x4b8d0c
push esi
push str.CmtTextWide
lea eax, [esp + 0x20]
push eax
call fcn.0045af80
cmp word [esi], bx
jne 0x47eb91
push 0x10000
call fcn.004a47e4
add esp, 4
push 0x10000
push ebx
mov edi, eax
push edi
push str.CmtTextData
lea ecx, [esp + 0x20]
push ecx
call fcn.0045afd0
push 0x10000
push esi
push edi
call fcn.00472580
push edi
call fcn.004a4635
add esp, 4
xor edx, edx
mov word [esi + 0x1fffe], dx
mov eax, dword [0x50c2f4]
push eax
cmp word [esi], bx
je 0x47ebf7
call fcn.004a4635
mov eax, esi
add esp, 4
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x47ebb2
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.004a47e4
add esp, 4
mov dword [0x50c2f4], 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 0x47ebe4
jmp 0x47ec05
call fcn.004a4635
add esp, 4
mov dword [0x50c2f4], ebx
push esi
call fcn.004a4635
add esp, 4
push 0x32
push 0x4b8d0c
lea ecx, [esp + 0x208]
push ecx
push str.VolumeSize
lea edx, [esp + 0x20]
push edx
call fcn.0045af80
mov ax, word [esp + 0x200]
cmp ax, bx
jne 0x47ec4c
push ebx
push str.VolSize
lea eax, [esp + 0x18]
push eax
call fcn.0045afb0
cdq
jmp 0x47ec78
xor ecx, ecx
cmp ax, 0x41
sete cl
push ecx
call fcn.00472b90
test eax, eax
je 0x47ec6b
mov eax, 0x7fffffff
mov dword [0x4f45ec], eax
jmp 0x47ec7e
lea edx, [esp + 0x200]
push edx
call fcn.0046a0b0
mov dword [0x4f45ec], edx
push ebx
mov dword [0x4f45e8], eax
push str.VolPause
lea eax, [esp + 0x18]
push eax
call fcn.0045afb0
push ebx
test eax, eax
push str.OldVolNames
lea edx, [esp + 0x18]
setne cl
push edx
mov byte [0x4f46d3], cl
call fcn.0045afb0
push ebx
test eax, eax
push str.RecVolNumber
lea ecx, [esp + 0x18]
setne al
push ecx
mov byte [0x4f46d0], al
call fcn.0045afb0
push ebx
push 0x4bc64c
lea edx, [esp + 0x18]
push edx
mov dword [0x4f45c8], eax
call fcn.0045afb0
push ebx
test eax, eax
push str.Fresh
lea ecx, [esp + 0x18]
setne al
push ecx
mov byte [0x4f45dd], al
call fcn.0045afb0
push ebx
test eax, eax
push str.SyncFiles
lea eax, [esp + 0x18]
setne dl
push eax
mov byte [0x4f45dc], dl
call fcn.0045afb0
push ebx
test eax, eax
push str.Overwrite
lea edx, [esp + 0x18]
setne cl
push edx
mov byte [0x4f466f], cl
call fcn.0045afb0
push ebx
mov dword [0x4f45bc], eax
push str.Move
lea eax, [esp + 0x18]
push eax
call fcn.0045afb0
push ebx
test eax, eax
push str.ArcRecBin
lea edx, [esp + 0x18]
setne cl
push edx
mov byte [0x4f461a], cl
call fcn.0045afb0
push ebx
test eax, eax
push str.ArcWipe
lea ecx, [esp + 0x18]
setne al
push ecx
mov byte [0x4f461d], al
call fcn.0045afb0
test eax, eax
push 1
setne dl
push str.Solid
lea eax, [esp + 0x18]
mov byte [0x4f461c], dl
push eax
call fcn.0045afb0
push 1
push 0x4bd8a4
lea ecx, [esp + 0x18]
push ecx
mov dword [0x4f45d0], eax
call fcn.0045afb0
push ebx
test eax, eax
push str.Test
lea eax, [esp + 0x18]
setne dl
push eax
mov byte [0x4f45da], dl
call fcn.0045afb0
push ebx
test eax, eax
push str.Recovery
lea edx, [esp + 0x18]
setne cl
push edx
mov byte [0x4f46d2], cl
call fcn.0045afb0
push ebx
mov dword [0x4f45c4], eax
push str.EraseDest
lea eax, [esp + 0x18]
push eax
call fcn.0045afb0
push ebx
test eax, eax
push str.AddArcOnly
lea edx, [esp + 0x18]
setne cl
push edx
mov byte [0x4f461b], cl
call fcn.0045afb0
push ebx
test eax, eax
push str.ClearArc
lea ecx, [esp + 0x18]
setne al
push ecx
mov byte [0x4f45d9], al
call fcn.0045afb0
push ebx
test eax, eax
push 0x4b94a0
lea eax, [esp + 0x18]
setne dl
push eax
mov byte [0x4f45d8], dl
call fcn.0045afb0
mov esi, 3
push esi
test eax, eax
push str.Method
lea edx, [esp + 0x18]
setne cl
push edx
mov byte [0x4f46d1], cl
call fcn.0045afb0
mov dword [0x4f45c0], eax
call fcn.0047be60
push eax
push str.DictSizeLZ
lea eax, [esp + 0x18]
push eax
call fcn.0045afb0
push 0x100
lea edx, [esp + 0xb4]
xor ecx, ecx
push ebx
push edx
mov dword [0x4f0ca4], eax
mov word [esp + 0x270], cx
call fcn.004a4250
add esp, 0xc
push 0x100
push ebx
lea eax, [esp + 0xb8]
push eax
push str.PasswordWide
lea ecx, [esp + 0x20]
push ecx
call fcn.0045afd0
cmp eax, ebx
jne 0x47ef1f
push 0x100
push ebx
lea edx, [esp + 0xb8]
push edx
push str.Password
lea eax, [esp + 0x20]
push eax
mov byte [esp + 0xc4], bl
call fcn.0045afd0
xor ecx, ecx
cmp eax, ebx
jle 0x47ef03
mov edi, edi
mov dl, cl
add dl, 0x49
xor byte [esp + ecx + 0xb0], dl
je 0x47ef03
inc ecx
cmp ecx, eax
jl 0x47eef0
push 0x80
lea eax, [esp + 0x268]
push eax
lea ecx, [esp + 0xb8]
push ecx
call fcn.00472580
jmp 0x47ef5b
xor ecx, ecx
cmp eax, ebx
jle 0x47ef41
jmp 0x47ef30
mov dl, cl
add dl, 0x49
xor byte [esp + ecx + 0xb0], dl
inc ecx
cmp ecx, eax
jl 0x47ef30
push 0x80
lea eax, [esp + 0x268]
push eax
lea ecx, [esp + 0xb8]
push ecx
call fcn.00472600
cmp byte [esp + 0xf], bl
je 0x47ef72
cmp word [0x4f40b0], bx
jne 0x47efb1
cmp byte [0x4f41b0], bl
jne 0x47efb1
xor eax, eax
jmp 0x47ef80
movzx ecx, word [esp + eax + 0x264]
mov word [eax + 0x4f40b0], cx
add eax, 2
cmp cx, bx
jne 0x47ef80
push ebx
push str.EncryptHeaders
lea edx, [esp + 0x18]
push edx
call fcn.0045afb0
test eax, eax
setne al
mov byte [0x4f41b0], al
push ebx
push str.OpenShared
lea ecx, [esp + 0x18]
push ecx
call fcn.0045afb0
push ebx
test eax, eax
push str.ProcessOwners
lea eax, [esp + 0x18]
setne dl
push eax
mov byte [0x4f4619], dl
call fcn.0045afb0
mov edi, 1
push edi
test eax, eax
push str.SaveStreams
lea edx, [esp + 0x18]
setne cl
push edx
mov byte [0x4f460c], cl
call fcn.0045afb0
push ebx
test eax, eax
push 0x4bd788
lea ecx, [esp + 0x18]
setne al
push ecx
mov byte [0x4f4671], al
call fcn.0045afb0
push ebx
test eax, eax
push str.WaitForOther
lea eax, [esp + 0x18]
setne dl
push eax
mov byte [0x4f5fbb], dl
call fcn.0045afb0
push ebx
test eax, eax
push str.Shutdown
lea edx, [esp + 0x18]
setne cl
push edx
mov byte [0x4f5fbc], cl
call fcn.0045afb0
push ebx
test eax, eax
push str.GenerateArcName
lea ecx, [esp + 0x18]
setne al
push ecx
mov byte [0x4f4b9a], al
call fcn.0045afb0
push ebx
test eax, eax
push str.VersionControl
lea eax, [esp + 0x18]
setne dl
push eax
mov byte [0x4f461e], dl
call fcn.0045afb0
push 0x50
push str.yyyymmddhhmmss
push 0x4f461f
push str.GenerateMask
lea ecx, [esp + 0x20]
push ecx
mov dword [0x4f4b94], eax
call fcn.0045b440
cmp byte [0x4f461f], bl
je 0x47f0dc
mov ecx, str.yyyymmddhhnnss
mov eax, 0x4f461f
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x47f0d3
cmp dl, bl
je 0x47f0cf
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x47f0d3
add eax, 2
add ecx, 2
cmp dl, bl
jne 0x47f0b3
xor eax, eax
jmp 0x47f0d8
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x47f116
mov edx, dword [str.yyyymmddhhmmss]
mov eax, dword [0x4bbcec]
mov ecx, dword [0x4bbcf0]
mov dword [0x4f461f], edx
mov dx, word [0x4bbcf4]
mov dword [0x4f4623], eax
mov al, byte [0x4bbcf6]
mov dword [0x4f4627], ecx
mov word [0x4f462b], dx
mov byte [0x4f462d], al
push ebx
push str.FileTimeMode
lea ecx, [esp + 0x18]
push ecx
call fcn.0045afb0
push ebx
push str.FileDays
lea edx, [esp + 0x18]
push edx
mov dword [0x50c2fc], eax
call fcn.0045afb0
push ebx
mov dword [0x50c300], eax
push str.FileHours
lea eax, [esp + 0x18]
push eax
call fcn.0045afb0
push ebx
push str.FileMinutes
lea ecx, [esp + 0x18]
push ecx
mov dword [0x50c304], eax
call fcn.0045afb0
mov ecx, dword [0x50c2fc]
mov dword [0x50c308], eax
mov dword [0x4f4674], ebx
mov dword [0x4f4698], ebx
cmp ecx, edi
je 0x47f185
cmp ecx, 2
jne 0x47f1d7
mov edx, dword [0x50c304]
push eax
mov eax, dword [0x50c300]
push edx
push eax
lea ecx, [esp + 0x1bc]
push str._dd_dh_dm
push ecx
call fcn.004a3a02
add esp, 0x14
cmp dword [0x50c2fc], edi
jne 0x47f1bf
lea edx, [esp + 0x1b0]
push edx
mov ecx, 0x4f4674
jmp 0x47f1cc
lea eax, [esp + 0x1b0]
push eax
mov ecx, 0x4f4698
call fcn.0046d1f0
mov ecx, dword [0x50c2fc]
cmp ecx, esi
je 0x47f1e0
cmp ecx, 4
jne 0x47f22f
push ebx
push str.FileTimeBefore
lea ecx, [esp + 0x18]
push ecx
call fcn.0045afb0
cmp eax, ebx
je 0x47f207
cmp dword [0x50c2fc], esi
jne 0x47f207
push eax
mov ecx, 0x4f4674
call fcn.0046cd60
push ebx
push str.FileTimeAfter
lea edx, [esp + 0x18]
push edx
call fcn.0045afb0
cmp eax, ebx
je 0x47f22f
cmp dword [0x50c2fc], 4
jne 0x47f22f
push eax
mov ecx, 0x4f4698
call fcn.0046cd60
push ebx
push str.ArcTimeOriginal
lea eax, [esp + 0x18]
push eax
mov dword [0x4f4604], ebx
call fcn.0045afb0
test eax, eax
je 0x47f24f
mov dword [0x4f4604], edi
push ebx
push str.ArcTimeLatest
lea ecx, [esp + 0x18]
push ecx
call fcn.0045afb0
test eax, eax
je 0x47f26d
mov dword [0x4f4604], 2
push 4
push str.mtime
lea edx, [esp + 0x18]
push edx
call fcn.0045afb0
push ebx
mov dword [0x4f4b9c], eax
push str.ctime
lea eax, [esp + 0x18]
push eax
call fcn.0045afb0
push ebx
push str.atime
lea ecx, [esp + 0x18]
push ecx
mov dword [0x4f4ba0], eax
call fcn.0045afb0
mov edx, dword [0x4f7814]
mov dword [0x4f4ba4], eax
mov eax, dword [edx + 0x20]
neg eax
push ebx
sbb eax, eax
push str.PathsAbs
lea ecx, [esp + 0x18]
and eax, 4
push ecx
mov dword [0x4f45e0], eax
call fcn.0045afb0
test eax, eax
je 0x47f2dc
mov dword [0x4f45e0], esi
push ebx
push str.PathsNone
lea edx, [esp + 0x18]
push edx
call fcn.0045afb0
pop edi
pop esi
test eax, eax
je 0x47f2fc
mov dword [0x4f45e0], 2
push ebx
push str.PathsAbsDrive
lea eax, [esp + 0x10]
push eax
call fcn.0045afb0
test eax, eax
je 0x47f31a
mov dword [0x4f45e0], 5
push ebx
push str.ImmExec
lea ecx, [esp + 0x10]
push ecx
call fcn.0045afb0
push ebx
test eax, eax
push str.SeparateArc
lea eax, [esp + 0x10]
setne dl
push eax
mov byte [0x50c30c], dl
call fcn.0045afb0
push 0x400
push 0x4b8a1e
push 0x4f4794
test eax, eax
push str.EmailArcTo
lea edx, [esp + 0x18]
setne cl
push edx
mov byte [0x50c30e], cl
call fcn.0045b440
push 0xc0
push ebx
push 0x4f46d4
push str.PackDetails
lea eax, [esp + 0x18]
push eax
call fcn.0045afd0
mov ecx, dword [esp + 0x135c]
pop ebx
xor ecx, esp
call fcn.004a39f3
add esp, 0x135c
ret 0xc