Function at 0x5c3c20
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.005583b0
push edi
call fcn.005582d0
push edi
mov dword [ebp - 0x18], eax
call fcn.005582d0
push edi
mov dword [ebp - 0x1c], eax
call fcn.005582d0
mov esi, eax
push edi
mov dword [ebp - 0x30], esi
call fcn.005582d0
mov edi, eax
add esp, 0x14
mov dword [ebp - 0x34], edi
test edi, edi
je 0x5c4081
push ebx
mov ebx, dword [ebp + 0x10]
push ebx
push dword [ebp + 0xc]
push esi
call fcn.005c3750
add esp, 0xc
test eax, eax
je 0x5c4080
push esi
call fcn.0051d170
add esp, 4
test eax, eax
jne 0x5c4080
push ebx
push edi
call fcn.0051cf60
add esp, 8
test eax, eax
je 0x5c4080
push esi
call fcn.0051d240
push edi
mov dword [ebp - 0x14], eax
call fcn.0051d240
mov edi, dword [ebx + 4]
push edi
push esi
mov dword [ebp - 0x24], eax
mov dword [ebp - 8], edi
call fcn.0051d9d0
add esp, 0x10
test eax, eax
je 0x5c4080
mov edx, dword [ebp - 0x30]
mov esi, dword [esi]
mov dword [ebp - 0x20], esi
mov eax, dword [edx + 4]
cmp eax, edi
jge 0x5c3cef
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.0051d9d0
add esp, 8
test eax, eax
je 0x5c4080
mov edx, dword [ebp - 0x18]
mov ebx, dword [edx]
mov dword [ebp - 0x10], ebx
mov dword [ebx], 1
cmp edi, 1
jle 0x5c3d26
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.0051d9d0
add esp, 8
test eax, eax
je 0x5c4080
mov edx, dword [ebp - 8]
mov edi, dword [edi]
mov dword [ebp - 0xc], edi
test edx, edx
jle 0x5c3d50
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 0x5c3e34
nop dword [eax]
mov ebx, dword [esi]
test bl, 1
jne 0x5c3e2b
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 0x5c3e0d
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 0x5c3dc0
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 0x5c3d70
jmp 0x5c3e2e
mov ebx, dword [ebp - 0x10]
mov edx, dword [ebp - 8]
mov edi, dword [ebp - 4]
cmp ecx, 0x20
jg 0x5c3e4c
mov eax, dword [esi]
test eax, eax
je 0x5c4080
cmp eax, 1
je 0x5c405c
cmp ecx, dword [ebp - 0x24]
jge 0x5c3e8d
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 0x5c3e90
mov eax, dword [ebp - 0xc]
xor edi, edi
test edx, edx
jle 0x5c4012
cmp edx, 8
jb 0x5c3fc6
lea eax, [eax + edx*4]
add eax, 0xfffffffc
lea ecx, [edx - 1]
lea ecx, [ebx + ecx*4]
cmp ebx, eax
ja 0x5c3ebc
cmp ecx, dword [ebp - 0xc]
jae 0x5c3fc6
lea eax, [edx - 1]
lea eax, [esi + eax*4]
cmp ebx, eax
ja 0x5c3ece
cmp ecx, esi
jae 0x5c3fc6
mov eax, dword [ebp - 4]
lea eax, [eax + edx*4]
add eax, 0xfffffffc
cmp ebx, eax
ja 0x5c3ee6
mov eax, dword [ebp - 4]
cmp ecx, eax
jae 0x5c3fc9
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 0x5c3f02
cmp ecx, dword [ebp - 0xc]
jae 0x5c3fc6
mov eax, dword [ebp - 4]
lea eax, [eax + edx*4]
add eax, 0xfffffffc
cmp esi, eax
ja 0x5c3f1a
mov eax, dword [ebp - 4]
cmp ecx, eax
jae 0x5c3fc9
mov eax, edx
and eax, 0x80000007
jns 0x5c3f28
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 0x5c3f60
mov esi, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x10]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
cmp edi, edx
jge 0x5c400f
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 0x5c3ff0
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 0x5c3d61
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 0x5c403f
test edi, edi
je 0x5c403f
mov eax, dword [esi + edi*4 - 4]
dec edi
test eax, eax
je 0x5c4032
push eax
call fcn.0051d290
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 0x5c3d61
mov ebx, dword [ebp - 0x18]
push ebx
call fcn.0051d730
push ebx
push dword [ebp + 8]
call fcn.0051cf60
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.00558250
mov eax, dword [ebp - 0x38]
add esp, 4
pop edi
pop esi
mov esp, ebp
pop ebp
ret