Function at 0x5b87a0
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xc
call fcn.00622d70
mov eax, dword [esp + 0x18]
push ebx
mov ebx, dword [esp + 0x18]
push ebp
mov ebp, dword [esp + 0x18]
mov ecx, dword [eax + 4]
mov edx, dword [ebx + 4]
xor ecx, edx
push esi
lea ebp, [ebp - 1]
shr ebp, 0x1f
dec ebp
and ecx, ebp
mov dword [esp + 0x1c], ebp
xor edx, ecx
mov dword [ebx + 4], edx
xor dword [eax + 4], ecx
mov ecx, dword [esp + 0x28]
movd xmm0, ebp
push edi
pshufd xmm3, xmm0, 0
lea edx, [ecx - 1]
cmp edx, 9
ja case.default.0x5b87ec
jmp dword [edx*4 + 0x5b8a0c]
mov ebp, 0xa
lea edx, [ecx - 0xa]
cmp ecx, ebp
jle 0x5b8914
cmp edx, 8
jb 0x5b88ed
mov edi, dword [eax]
mov esi, dword [ebx]
mov dword [esp + 0x14], esi
mov ebx, esi
lea esi, [edi + 0x28]
mov dword [esp + 0x28], esi
lea esi, [ecx - 1]
lea esi, [edi + esi*4]
lea edi, [ebx + 0x28]
lea ebx, [ebx + ecx*4]
add ebx, 0xfffffffc
cmp dword [esp + 0x28], ebx
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x24]
ja 0x5b8842
cmp esi, edi
jae 0x5b88ed
cmp dword [esp + 0x28], eax
ja 0x5b8850
cmp esi, eax
jae 0x5b88ed
cmp dword [esp + 0x28], ebx
ja 0x5b885e
cmp esi, ebx
jae 0x5b88ed
mov esi, dword [esp + 0x10]
cmp edi, eax
ja 0x5b886e
cmp esi, eax
jae 0x5b88ed
cmp edi, ebx
ja 0x5b8876
cmp esi, ebx
jae 0x5b88ed
and edx, 0x80000007
jns 0x5b8883
dec edx
or edx, 0xfffffff8
inc edx
mov edi, dword [esp + 0x14]
mov esi, ecx
sub esi, edx
mov edx, dword [eax]
nop dword [eax]
movups xmm1, xmmword [edi + ebp*4]
movups xmm0, xmmword [edx + ebp*4]
movaps xmm2, xmm1
pxor xmm2, xmm0
pand xmm2, xmm3
movaps xmm0, xmm2
pxor xmm0, xmm1
movups xmmword [edi + ebp*4], xmm0
movups xmm0, xmmword [edx + ebp*4]
pxor xmm2, xmm0
movups xmmword [edx + ebp*4], xmm2
movups xmm1, xmmword [edi + ebp*4 + 0x10]
movups xmm2, xmmword [edx + ebp*4 + 0x10]
pxor xmm2, xmm1
pand xmm2, xmm3
movaps xmm0, xmm2
pxor xmm0, xmm1
movups xmmword [edi + ebp*4 + 0x10], xmm0
movups xmm0, xmmword [edx + ebp*4 + 0x10]
pxor xmm0, xmm2
movups xmmword [edx + ebp*4 + 0x10], xmm0
add ebp, 8
cmp ebp, esi
jl 0x5b8890
cmp ebp, ecx
jge 0x5b8914
mov ecx, dword [ebx]
mov edx, dword [ecx + ebp*4]
lea esi, [ecx + ebp*4]
mov ecx, dword [eax]
mov edi, dword [ecx + ebp*4]
xor edi, edx
and edi, dword [esp + 0x20]
xor edx, edi
mov dword [esi], edx
mov ecx, dword [eax]
xor dword [ecx + ebp*4], edi
inc ebp
cmp ebp, dword [esp + 0x2c]
jl 0x5b88f1
mov ebp, dword [esp + 0x20]
mov ecx, dword [eax]
mov edi, dword [ebx]
mov esi, dword [ecx + 0x24]
mov edx, dword [edi + 0x24]
xor esi, edx
and esi, ebp
xor edx, esi
mov dword [edi + 0x24], edx
mov ecx, dword [eax]
xor dword [ecx + 0x24], esi
mov ecx, dword [eax]
mov edi, dword [ebx]
mov esi, dword [ecx + 0x20]
mov edx, dword [edi + 0x20]
xor esi, edx
and esi, ebp
xor edx, esi
mov dword [edi + 0x20], edx
mov ecx, dword [eax]
xor dword [ecx + 0x20], esi
mov ecx, dword [eax]
mov edi, dword [ebx]
mov esi, dword [ecx + 0x1c]
mov edx, dword [edi + 0x1c]
xor esi, edx
and esi, ebp
xor edx, esi
mov dword [edi + 0x1c], edx
mov ecx, dword [eax]
xor dword [ecx + 0x1c], esi
mov ecx, dword [eax]
mov edi, dword [ebx]
mov esi, dword [ecx + 0x18]
mov edx, dword [edi + 0x18]
xor esi, edx
and esi, ebp
xor edx, esi
mov dword [edi + 0x18], edx
mov ecx, dword [eax]
xor dword [ecx + 0x18], esi
mov ecx, dword [eax]
mov edi, dword [ebx]
mov esi, dword [ecx + 0x14]
mov edx, dword [edi + 0x14]
xor esi, edx
and esi, ebp
xor edx, esi
mov dword [edi + 0x14], edx
mov ecx, dword [eax]
xor dword [ecx + 0x14], esi
mov ecx, dword [eax]
mov edi, dword [ebx]
mov esi, dword [ecx + 0x10]
mov edx, dword [edi + 0x10]
xor esi, edx
and esi, ebp
xor edx, esi
mov dword [edi + 0x10], edx
mov ecx, dword [eax]
xor dword [ecx + 0x10], esi
mov ecx, dword [eax]
mov edi, dword [ebx]
mov esi, dword [ecx + 0xc]
mov edx, dword [edi + 0xc]
xor esi, edx
and esi, ebp
xor edx, esi
mov dword [edi + 0xc], edx
mov ecx, dword [eax]
xor dword [ecx + 0xc], esi
mov ecx, dword [eax]
mov edi, dword [ebx]
mov esi, dword [ecx + 8]
mov edx, dword [edi + 8]
xor esi, edx
and esi, ebp
xor edx, esi
mov dword [edi + 8], edx
mov ecx, dword [eax]
xor dword [ecx + 8], esi
mov ecx, dword [eax]
mov edi, dword [ebx]
mov esi, dword [ecx + 4]
mov edx, dword [edi + 4]
xor esi, edx
and esi, ebp
xor edx, esi
mov dword [edi + 4], edx
mov ecx, dword [eax]
xor dword [ecx + 4], esi
mov esi, dword [ebx]
mov ecx, dword [eax]
pop edi
mov edx, dword [esi]
mov ecx, dword [ecx]
xor ecx, edx
and ecx, ebp
xor edx, ecx
mov dword [esi], edx
mov eax, dword [eax]
pop esi
pop ebp
pop ebx
xor dword [eax], ecx
add esp, 0xc
ret