Function at 0x5c4be0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x48
push esi
push edi
mov edi, dword [ebp + 0x14]
push edi
mov dword [ebp - 0x38], 0
call fcn.005592e0
push edi
call fcn.00559200
push edi
mov dword [ebp - 0x18], eax
call fcn.00559200
push edi
mov dword [ebp - 0x1c], eax
call fcn.00559200
mov esi, eax
push edi
mov dword [ebp - 0x30], esi
call fcn.00559200
mov edi, eax
add esp, 0x14
mov dword [ebp - 0x34], edi
test edi, edi
je 0x5c5041
push ebx
mov ebx, dword [ebp + 0x10]
push ebx
push dword [ebp + 0xc]
push esi
call fcn.005c4710
add esp, 0xc
test eax, eax
je 0x5c5040
push esi
call fcn.0051e0a0
add esp, 4
test eax, eax
jne 0x5c5040
push ebx
push edi
call fcn.0051de90
add esp, 8
test eax, eax
je 0x5c5040
push esi
call fcn.0051e170
push edi
mov dword [ebp - 0x14], eax
call fcn.0051e170
mov edi, dword [ebx + 4]
push edi
push esi
mov dword [ebp - 0x24], eax
mov dword [ebp - 8], edi
call fcn.0051e900
add esp, 0x10
test eax, eax
je 0x5c5040
mov edx, dword [ebp - 0x30]
mov esi, dword [esi]
mov dword [ebp - 0x20], esi
mov eax, dword [edx + 4]
cmp eax, edi
jge 0x5c4caf
mov ecx, dword [ebp - 8]
lea edi, [esi + eax*4]
sub ecx, eax
xor eax, eax
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 8]
push edi
push dword [ebp - 0x18]
mov dword [edx + 4], edi
call fcn.0051e900
add esp, 8
test eax, eax
je 0x5c5040
mov edx, dword [ebp - 0x18]
mov ebx, dword [edx]
mov dword [ebp - 0x10], ebx
mov dword [ebx], 1
cmp edi, 1
jle 0x5c4ce6
lea ecx, [edi - 1]
xor eax, eax
lea edi, [ebx + 4]
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 8]
mov dword [edx + 4], edi
push edi
mov edi, dword [ebp - 0x1c]
push edi
call fcn.0051e900
add esp, 8
test eax, eax
je 0x5c5040
mov edx, dword [ebp - 8]
mov edi, dword [edi]
mov dword [ebp - 0xc], edi
test edx, edx
jle 0x5c4d10
mov ecx, edx
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x14]
mov dword [eax + 4], edx
mov eax, dword [ebp - 0x34]
mov edi, dword [eax]
mov dword [ebp - 4], edi
test ecx, ecx
je 0x5c4df4
nop dword [eax]
mov ebx, dword [esi]
test bl, 1
jne 0x5c4deb
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp + 0x10]
mov eax, dword [eax]
mov edx, eax
mov ecx, dword [ecx]
and edx, 1
neg edx
mov dword [ebp - 0x3c], edx
mov ecx, dword [ecx]
and ecx, edx
mov edx, dword [ebp - 8]
xor eax, ecx
dec edx
xor ecx, ecx
mov dword [ebp - 0x2c], ecx
test edx, edx
jle 0x5c4dcd
mov ecx, dword [ebp - 0x10]
mov edx, esi
sub edx, ecx
mov dword [ebp - 0x28], 0xfffffffc
sub dword [ebp - 0x28], ecx
mov dword [ebp - 0x40], edx
lea edi, [ecx + 4]
nop dword [eax]
mov edx, dword [edx + edi]
mov ecx, edx
shl ecx, 0x1f
shr ebx, 1
or ecx, ebx
shr eax, 1
mov ebx, dword [ebp - 0x2c]
mov dword [esi + ebx*4], ecx
mov ebx, edx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x28]
mov esi, dword [ebp - 0x20]
add edx, edi
mov ecx, dword [ecx]
mov edx, dword [edx + ecx + 4]
and edx, dword [ebp - 0x3c]
xor edx, dword [edi]
mov ecx, edx
shl ecx, 0x1f
or ecx, eax
mov eax, edx
mov edx, dword [ebp - 8]
mov dword [edi - 4], ecx
dec edx
mov ecx, dword [ebp - 0x2c]
add edi, 4
inc ecx
cmp ecx, edx
mov dword [ebp - 0x2c], ecx
mov edx, dword [ebp - 0x40]
jl 0x5c4d80
shr ebx, 1
mov dword [esi + ecx*4], ebx
mov ebx, dword [ebp - 0x10]
shr eax, 1
mov dword [ebx + ecx*4], eax
mov ecx, dword [ebp - 0x14]
sub ecx, 1
mov dword [ebp - 0x14], ecx
jne 0x5c4d30
jmp 0x5c4dee
mov ebx, dword [ebp - 0x10]
mov edx, dword [ebp - 8]
mov edi, dword [ebp - 4]
cmp ecx, 0x20
jg 0x5c4e0c
mov eax, dword [esi]
test eax, eax
je 0x5c5040
cmp eax, 1
je 0x5c501c
cmp ecx, dword [ebp - 0x24]
jge 0x5c4e4d
mov ebx, dword [ebp - 0x34]
mov eax, ecx
mov ecx, dword [ebp - 0x24]
mov esi, dword [ebp - 0x1c]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x30], ebx
mov ebx, eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x18], esi
mov esi, edi
mov ebx, dword [ebx]
mov dword [ebp - 0x1c], eax
mov eax, dword [eax]
mov dword [ebp - 4], ebx
mov ebx, dword [ebp - 0xc]
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0xc], eax
jmp 0x5c4e50
mov eax, dword [ebp - 0xc]
xor edi, edi
test edx, edx
jle 0x5c4fd2
cmp edx, 8
jb 0x5c4f86
lea eax, [eax + edx*4]
add eax, 0xfffffffc
lea ecx, [edx - 1]
lea ecx, [ebx + ecx*4]
cmp ebx, eax
ja 0x5c4e7c
cmp ecx, dword [ebp - 0xc]
jae 0x5c4f86
lea eax, [edx - 1]
lea eax, [esi + eax*4]
cmp ebx, eax
ja 0x5c4e8e
cmp ecx, esi
jae 0x5c4f86
mov eax, dword [ebp - 4]
lea eax, [eax + edx*4]
add eax, 0xfffffffc
cmp ebx, eax
ja 0x5c4ea6
mov eax, dword [ebp - 4]
cmp ecx, eax
jae 0x5c4f89
mov eax, dword [ebp - 0xc]
lea ecx, [edx - 1]
lea ecx, [esi + ecx*4]
lea eax, [eax + edx*4]
add eax, 0xfffffffc
cmp esi, eax
ja 0x5c4ec2
cmp ecx, dword [ebp - 0xc]
jae 0x5c4f86
mov eax, dword [ebp - 4]
lea eax, [eax + edx*4]
add eax, 0xfffffffc
cmp esi, eax
ja 0x5c4eda
mov eax, dword [ebp - 4]
cmp ecx, eax
jae 0x5c4f89
mov eax, edx
and eax, 0x80000007
jns 0x5c4ee8
dec eax
or eax, 0xfffffff8
inc eax
mov ecx, edx
mov edx, ebx
sub ecx, eax
mov eax, dword [ebp - 4]
sub eax, esi
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x40], eax
lea ecx, [esi + 0x10]
mov eax, dword [ebp - 0xc]
sub eax, esi
mov dword [ebp - 0x2c], eax
mov eax, ebx
sub eax, esi
mov esi, dword [ebp - 0x40]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 4]
sub eax, dword [ebp - 0xc]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0xc]
sub eax, ebx
mov dword [ebp - 0x48], eax
nop
movups xmm0, xmmword [ecx - 0x10]
mov ebx, dword [ebp - 0x3c]
lea ecx, [ecx + 0x20]
add eax, edx
add edi, 8
movups xmm1, xmmword [eax + ebx]
pxor xmm1, xmm0
movups xmmword [ecx - 0x30], xmm1
movups xmm0, xmmword [eax]
mov eax, dword [ebp - 0x2c]
movups xmm1, xmmword [edx]
pxor xmm1, xmm0
movups xmmword [edx], xmm1
add edx, 0x20
movups xmm0, xmmword [ecx - 0x20]
movups xmm1, xmmword [esi + ecx - 0x20]
pxor xmm1, xmm0
movups xmmword [ecx - 0x20], xmm1
movups xmm1, xmmword [eax + ecx - 0x20]
mov eax, dword [ebp - 0x28]
movups xmm0, xmmword [eax + ecx - 0x20]
pxor xmm1, xmm0
movups xmmword [eax + ecx - 0x20], xmm1
mov eax, dword [ebp - 0x48]
cmp edi, dword [ebp - 0x44]
jl 0x5c4f20
mov esi, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x10]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
cmp edi, edx
jge 0x5c4fcf
sub eax, esi
lea ecx, [esi + edi*4]
mov dword [ebp - 0x48], eax
sub ebx, esi
mov eax, dword [ebp - 0xc]
sub eax, esi
mov dword [ebp - 0x40], ebx
mov ebx, dword [ebp - 0x48]
sub edx, edi
mov esi, dword [ebp - 0x40]
mov edi, eax
mov dword [ebp - 0x44], eax
nop dword [eax]
mov eax, dword [ecx + ebx]
lea ecx, [ecx + 4]
xor dword [ecx - 4], eax
mov eax, dword [ecx + edi - 4]
xor dword [ecx + esi - 4], eax
sub edx, 1
jne 0x5c4fb0
mov esi, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x10]
mov edx, dword [ebp - 8]
mov ecx, dword [ebp - 0x14]
mov edi, dword [ebp - 4]
cmp ecx, dword [ebp - 0x24]
jne 0x5c4d21
lea eax, [ecx - 1]
cdq
and edx, 0x1f
lea edi, [edx + eax]
sar edi, 5
mov eax, dword [esi + edi*4]
test eax, eax
jne 0x5c4fff
test edi, edi
je 0x5c4fff
mov eax, dword [esi + edi*4 - 4]
dec edi
test eax, eax
je 0x5c4ff2
push eax
call fcn.0051e1c0
mov edx, dword [ebp - 8]
add esp, 4
shl edi, 5
lea ecx, [edi + eax]
mov edi, dword [ebp - 4]
mov dword [ebp - 0x14], ecx
jmp 0x5c4d21
mov ebx, dword [ebp - 0x18]
push ebx
call fcn.0051e660
push ebx
push dword [ebp + 8]
call fcn.0051de90
xor ecx, ecx
add esp, 0xc
test eax, eax
mov edx, 1
cmovne ecx, edx
mov dword [ebp - 0x38], ecx
pop ebx
push dword [ebp + 0x14]
call fcn.00559180
mov eax, dword [ebp - 0x38]
add esp, 4
pop edi
pop esi
mov esp, ebp
pop ebp
ret