Function at 0x477320
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x55c
mov eax, dword [0x4c0390]
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.Setup.rar
mov dword [esp + 0x10], eax
call fcn.004575c0
cmp dword [esp + 0x574], 0xffffffff
mov edi, eax
jne 0x4773ea
xor esi, esi
mov dword [esp + 0x574], edi
test edi, edi
jle 0x4773ea
push esi
lea ecx, [esp + 0x98]
push str.Setup.rar
push ecx
call fcn.0049eab5
add esp, 0xc
push 0x200
push 0x4b1914
lea edx, [esp + 0x16c]
push edx
push 0x4b44b0
lea eax, [esp + 0xa4]
push eax
call fcn.00457500
mov ecx, ebp
lea eax, [esp + 0x164]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4773d3
test dl, dl
je 0x4773cf
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4773d3
add eax, 2
add ecx, 2
test dl, dl
jne 0x4773b3
xor eax, eax
jmp 0x4773d8
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x4773e3
inc esi
cmp esi, edi
jl 0x477370
jmp 0x4773ea
mov dword [esp + 0x574], esi
mov eax, dword [esp + 0xc]
test eax, eax
je 0x477401
push 0x50
push eax
lea ecx, [esp + 0x18]
push ecx
call fcn.00465f20
jmp 0x47741b
mov edx, dword [esp + 0x574]
push edx
lea eax, [esp + 0x14]
push str.Setup.rar
push eax
call fcn.0049eab5
add esp, 0xc
push ebp
push 0x4b44b0
lea ecx, [esp + 0x18]
push ecx
call fcn.004573c0
cmp byte [esp + 0x570], 0
je 0x47746f
xor esi, esi
test edi, edi
jle 0x47746f
jmp 0x477440
push esi
lea edx, [esp + 0x98]
push str.Setup.rar
push edx
call fcn.0049eab5
add esp, 0xc
push 0
push 0x4b44a8
lea eax, [esp + 0x9c]
push eax
call fcn.00457400
inc esi
cmp esi, edi
jl 0x477440
movzx ecx, byte [esp + 0x570]
push ecx
push 0x4b44a8
lea edx, [esp + 0x18]
push edx
call fcn.00457400
push 0x4b4738
lea eax, [esp + 0x14]
push eax
call fcn.00457340
push 0x4b472c
lea ecx, [esp + 0x14]
push ecx
call fcn.00457340
push 0
push 0x4b4724
lea edx, [esp + 0x18]
push edx
call fcn.00457400
test ebx, ebx
je 0x4775c0
mov esi, dword [0x4b1634]
push 0x6b
push ebx
call esi
push eax
push 0x4b4724
lea eax, [esp + 0x18]
push eax
call fcn.00457400
push 0x6d
push ebx
call esi
push eax
push 0x4b4718
lea ecx, [esp + 0x18]
push ecx
call fcn.00457400
push 0x66
push ebx
call esi
test eax, eax
je 0x477524
push 0x400
lea edx, [esp + 0x168]
push edx
push 0x67
push ebx
call dword [0x4b166c]
lea eax, [esp + 0x164]
push eax
push 0x4b4738
lea ecx, [esp + 0x18]
push ecx
call fcn.004573c0
push 0x68
push ebx
call esi
test eax, eax
je 0x4775c0
push 0x69
push ebx
call dword [0x4b1644]
mov ebp, eax
push ebp
call dword [0x4b154c]
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.0049f5f4
add esp, 4
push esi
mov edi, eax
push edi
push ebp
call fcn.0047ea60
push edi
push 0x4b472c
lea eax, [esp + 0x18]
push eax
call fcn.004573e0
push edi
call fcn.0049f445
add esp, 4
cmp byte [esp + 0x56c], 0
jne 0x477bf5
lea ecx, [esp + 0x164]
push ecx
push 0x400
call dword [0x4b13dc]
lea edx, [esp + 0x164]
push edx
push 0x4b4710
lea eax, [esp + 0x18]
push eax
call fcn.004573c0
jmp 0x4775ce
cmp byte [esp + 0x56c], 0
jne 0x477bf5
mov ecx, dword [0x4e8190]
push ecx
call fcn.00466930
mov esi, eax
push esi
call fcn.00465bd0
push eax
push 0x4b1be8
lea edx, [esp + 0x18]
push edx
call fcn.004573c0
push esi
call fcn.0049f445
mov eax, dword [0x4e819c]
add esp, 4
push eax
call fcn.00466930
mov esi, eax
push esi
call fcn.00465bd0
push eax
push 0x4b4704
lea ecx, [esp + 0x18]
push ecx
call fcn.004573c0
push esi
call fcn.0049f445
add esp, 4
xor edx, edx
cmp dword [0x4e613c], edx
lea eax, [esp + 0x10]
sete dl
push edx
push 0x4b46fc
push eax
call fcn.00457400
push 0x4e32b0
push 0x4b3d54
lea ecx, [esp + 0x18]
push ecx
call fcn.004573c0
push 0x4b1d54
lea edx, [esp + 0x14]
push edx
call fcn.00457340
push 0x4e6141
push 0x4b3c70
lea eax, [esp + 0x18]
push eax
call fcn.004573c0
push 0x4e6541
push str.0123456789abcdef
lea ecx, [esp + 0x18]
push ecx
call fcn.004573c0
movzx edx, byte [0x4e6941]
push edx
push 0x4b3c64
lea eax, [esp + 0x18]
push eax
call fcn.00457400
push 0x4e42b0
push 0x4b46f4
lea ecx, [esp + 0x18]
push ecx
call fcn.004573c0
cmp byte [0x4e42b0], 0
je 0x4776c8
mov eax, 0x4b1914
jmp 0x4776d4
mov edx, dword [0x4f66d0]
push edx
call fcn.00465bd0
mov ecx, eax
lea esi, [ecx + 1]
lea esp, [esp]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x4776e0
sub ecx, esi
inc ecx
push ecx
push eax
push 0x4b46e8
lea eax, [esp + 0x1c]
push eax
call fcn.00457460
mov eax, dword [0x4e5770]
mov ecx, dword [0x4e5774]
cmp eax, 0x7fffffff
jne 0x47772b
cmp ecx, 0x7fffffff
jne 0x47772b
mov ecx, dword [0x4b46e0]
mov dl, byte [0x4b46e4]
mov dword [esp + 0x60], ecx
mov byte [esp + 0x64], dl
jmp 0x477737
lea edx, [esp + 0x60]
push edx
push ecx
push eax
call fcn.00465fa0
lea eax, [esp + 0x60]
push eax
push str.exe32
lea ecx, [esp + 0x18]
push ecx
call fcn.004573c0
movzx edx, byte [0x4e585b]
push edx
push 0x4b46c8
lea eax, [esp + 0x18]
push eax
call fcn.00457400
movzx ecx, byte [0x4e5858]
push ecx
push str.Path
lea edx, [esp + 0x18]
push edx
call fcn.00457400
mov eax, dword [0x4e5750]
push eax
push 0x4b46ac
lea ecx, [esp + 0x18]
push ecx
call fcn.00457400
movzx edx, byte [0x4e5765]
push edx
push 0x4b3d88
lea eax, [esp + 0x18]
push eax
call fcn.00457400
movzx ecx, byte [0x4e5764]
push ecx
push 0x4b46a4
lea edx, [esp + 0x18]
push edx
call fcn.00457400
movzx eax, byte [0x4e57a6]
push eax
push 0x4b4698
lea ecx, [esp + 0x18]
push ecx
call fcn.00457400
mov edx, dword [0x4e5744]
push edx
push 0x4b3ce0
lea eax, [esp + 0x18]
push eax
call fcn.00457400
movzx ecx, byte [0x4e57a3]
push ecx
push 0x4b4690
lea edx, [esp + 0x18]
push edx
call fcn.00457400
movzx eax, byte [0x4e57a5]
push eax
push str.SFXOther
lea ecx, [esp + 0x18]
push ecx
call fcn.00457400
movzx edx, byte [0x4e57a4]
push edx
push 0x4b467c
lea eax, [esp + 0x18]
push eax
call fcn.00457400
mov ecx, dword [0x4e5758]
push ecx
push 0x4b4674
lea edx, [esp + 0x18]
push edx
call fcn.00457400
movzx eax, byte [0x4e5762]
push eax
push 0x4b18bc
lea ecx, [esp + 0x18]
push ecx
call fcn.00457400
movzx edx, byte [0x4e585a]
push edx
push 0x4b2e5c
lea eax, [esp + 0x18]
push eax
call fcn.00457400
mov ecx, dword [0x4e574c]
push ecx
push 0x4b4668
lea edx, [esp + 0x18]
push edx
call fcn.00457400
movzx eax, byte [0x4e57a1]
push eax
push str.Test
lea ecx, [esp + 0x18]
push ecx
call fcn.00457400
movzx edx, byte [0x4e5761]
push edx
push str.EmailOpt
lea eax, [esp + 0x18]
push eax
call fcn.00457400
movzx ecx, byte [0x4e5760]
push ecx
push str.EmailArc
lea edx, [esp + 0x18]
push edx
call fcn.00457400
movzx eax, byte [0x4e5859]
push eax
push 0x4b203c
lea ecx, [esp + 0x18]
push ecx
call fcn.00457400
mov edx, dword [0x4e5748]
push edx
push str.AddArc
lea eax, [esp + 0x18]
push eax
call fcn.00457400
mov ecx, dword [0x4e2eac]
push ecx
push 0x4b4630
lea edx, [esp + 0x18]
push edx
call fcn.00457400
movzx eax, byte [0x4e6942]
push eax
push str.ExtrSep
lea ecx, [esp + 0x18]
push ecx
call fcn.00457400
movzx edx, byte [0x4e6943]
push edx
push 0x4b4614
lea eax, [esp + 0x18]
push eax
call fcn.00457400
movzx ecx, byte [0x4e5d22]
push ecx
push str.ExtrTo
lea edx, [esp + 0x18]
push edx
call fcn.00457400
xor eax, eax
jmp 0x477960
mov cl, byte [eax + 0x4e52b8]
mov byte [esp + eax + 0xe4], cl
inc eax
test cl, cl
jne 0x477960
lea eax, [esp + 0xe4]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x477980
sub eax, edx
lea ecx, [eax + 1]
xor eax, eax
test ecx, ecx
jbe 0x4779a3
mov dl, al
add dl, 0x49
xor byte [esp + eax + 0xe4], dl
inc eax
cmp eax, ecx
jb 0x477992
push ecx
lea eax, [esp + 0xe8]
push eax
push 0x4b45fc
lea ecx, [esp + 0x1c]
push ecx
call fcn.00457460
movzx edx, byte [0x4e5338]
push edx
push 0x4b45ec
lea eax, [esp + 0x18]
push eax
call fcn.00457400
movzx ecx, byte [0x4e57a2]
push ecx
push 0x4b45e0
lea edx, [esp + 0x18]
push edx
call fcn.00457400
movzx eax, byte [0x4e5794]
push eax
push 0x4b45d0
lea ecx, [esp + 0x18]
push ecx
call fcn.00457400
movzx edx, byte [0x4e57f9]
push edx
push 0x4b45c4
lea eax, [esp + 0x18]
push eax
call fcn.00457400
movzx ecx, byte [0x4e57a7]
push ecx
push str._s_0
lea edx, [esp + 0x18]
push edx
call fcn.00457400
mov eax, dword [0x4e5d1c]
push eax
push 0x4b45a4
lea ecx, [esp + 0x18]
push ecx
call fcn.00457400
push 0x4e57a8
push 0x4b4594
lea edx, [esp + 0x18]
push edx
call fcn.004573c0
mov eax, dword [0x4f66d8]
push eax
push 0x4b4584
lea ecx, [esp + 0x18]
push ecx
call fcn.00457400
mov edx, dword [0x4f66dc]
push edx
push 0x4b4578
lea eax, [esp + 0x18]
push eax
call fcn.00457400
mov ecx, dword [0x4f66e0]
push ecx
push 0x4b456c
lea edx, [esp + 0x18]
push edx
call fcn.00457400
mov eax, dword [0x4f66e4]
push eax
push 0x4b4560
lea ecx, [esp + 0x18]
push ecx
call fcn.00457400
mov ecx, 0x4e57fc
call fcn.00468af0
push eax
push 0x4b4550
lea edx, [esp + 0x18]
push edx
call fcn.00457400
mov ecx, 0x4e5820
call fcn.00468af0
push eax
push 0x4b4540
lea eax, [esp + 0x18]
push eax
call fcn.00457400
xor ecx, ecx
cmp dword [0x4e578c], 1
lea edx, [esp + 0x10]
sete cl
push ecx
push str.WinRAR.ZIPDefaultIcon
push edx
call fcn.00457400
xor eax, eax
mov esi, 2
cmp dword [0x4e578c], esi
lea ecx, [esp + 0x10]
sete al
push eax
push 0x4b4520
push ecx
call fcn.00457400
mov edx, dword [0x4e5d24]
push edx
push 0x4b3454
lea eax, [esp + 0x18]
push eax
call fcn.00457400
mov ecx, dword [0x4e5d28]
push ecx
push 0x4b4518
lea edx, [esp + 0x18]
push edx
call fcn.00457400
mov eax, dword [0x4e5d2c]
push eax
push 0x4b4510
lea ecx, [esp + 0x18]
push ecx
call fcn.00457400
xor edx, edx
cmp dword [0x4e5768], 3
lea eax, [esp + 0x10]
sete dl
push edx
push 0x4b4504
push eax
call fcn.00457400
xor ecx, ecx
cmp dword [0x4e5768], esi
lea edx, [esp + 0x10]
sete cl
push ecx
push 0x4b44f8
push edx
call fcn.00457400
xor eax, eax
cmp dword [0x4e5768], 5
lea ecx, [esp + 0x10]
sete al
push eax
push 0x4b44e8
push ecx
call fcn.00457400
movzx edx, byte [0x4f66ea]
push edx
push 0x4b44dc
lea eax, [esp + 0x18]
push eax
call fcn.00457400
push 0x4e591c
push 0x4b44d0
lea ecx, [esp + 0x18]
push ecx
call fcn.004573c0
push 0xc0
push 0x4e585c
push 0x4b44c4
lea edx, [esp + 0x1c]
push edx
call fcn.00457460
mov ecx, dword [esp + 0x564]
pop edi
pop esi
pop ebp
xor ecx, esp
call fcn.0049eaa6
add esp, 0x55c
ret 0x14