Function at 0xca930
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
push ebx
xorps xmm0, xmm0
mov ebx, edx
push esi
movlpd qword [ebp - 0x1c], xmm0
lea edx, [ebp - 0x3c]
movlpd qword [ebp - 0x14], xmm0
movups xmm0, xmmword [ecx + 0x114]
push edi
push ecx
mov ecx, edx
movups xmmword [ebp - 0x3c], xmm0
call fcn.000c9280
mov eax, dword [ebp + 8]
add esp, 4
test eax, eax
je 0xcaa77
test ebx, ebx
je 0xcaa77
mov edi, eax
and eax, 0xf
shr edi, 4
mov dword [ebp - 8], eax
test edi, edi
je 0xcaa36
movups xmm1, xmmword [ebx]
xor ecx, ecx
movd eax, xmm1
movaps xmm0, xmm1
psrldq xmm0, 4
movd edx, xmm0
mov esi, eax
rol eax, 8
and eax, 0xff00ff
ror esi, 8
and esi, 0xff00ff00
or esi, eax
mov eax, edx
ror eax, 8
movups xmm0, xmmword [ebp - 0x1c]
and eax, 0xff00ff00
rol edx, 8
and edx, 0xff00ff
or eax, edx
or ecx, eax
movups xmmword [ebp - 0x2c], xmm1
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x20]
mov dword [ebp - 0x28], esi
mov esi, eax
rol eax, 8
and eax, 0xff00ff
ror esi, 8
and esi, 0xff00ff00
mov dword [ebp - 0x2c], ecx
or esi, eax
xor ecx, ecx
mov eax, edx
mov dword [ebp - 0x20], esi
ror eax, 8
rol edx, 8
and eax, 0xff00ff00
and edx, 0xff00ff
or eax, edx
lea edx, [ebp - 0x3c]
or ecx, eax
mov dword [ebp - 0x24], ecx
lea ecx, [ebp - 0x1c]
movups xmm1, xmmword [ebp - 0x2c]
pxor xmm1, xmm0
movups xmmword [ebp - 0x1c], xmm1
call fcn.000ca7e0
add ebx, 0x10
sub edi, 1
jne 0xca987
mov eax, dword [ebp - 8]
test eax, eax
je 0xcaa77
push eax
lea eax, [ebp - 0x2c]
xorps xmm0, xmm0
push ebx
push eax
movups xmmword [ebp - 0x2c], xmm0
call fcn.00153810
add esp, 8
lea edx, [ebp - 0x2c]
mov ecx, edx
call fcn.000c9280
movups xmm0, xmmword [ebp - 0x1c]
add esp, 4
lea edx, [ebp - 0x3c]
movups xmm1, xmmword [ebp - 0x2c]
lea ecx, [ebp - 0x1c]
pxor xmm1, xmm0
movups xmmword [ebp - 0x1c], xmm1
call fcn.000ca7e0
mov esi, dword [ebp + 0x10]
test esi, esi
je 0xcab95
mov ebx, dword [ebp + 0xc]
test ebx, ebx
je 0xcab95
mov edi, esi
mov eax, esi
shr edi, 4
and eax, 0xf
mov dword [ebp - 8], eax
test edi, edi
je 0xcab54
movups xmm1, xmmword [ebx]
xor ecx, ecx
movd eax, xmm1
movaps xmm0, xmm1
psrldq xmm0, 4
movd edx, xmm0
mov esi, eax
rol eax, 8
and eax, 0xff00ff
ror esi, 8
and esi, 0xff00ff00
or esi, eax
mov eax, edx
ror eax, 8
movups xmm0, xmmword [ebp - 0x1c]
and eax, 0xff00ff00
rol edx, 8
and edx, 0xff00ff
or eax, edx
or ecx, eax
movups xmmword [ebp - 0x2c], xmm1
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x20]
mov dword [ebp - 0x28], esi
mov esi, eax
rol eax, 8
and eax, 0xff00ff
ror esi, 8
and esi, 0xff00ff00
mov dword [ebp - 0x2c], ecx
or esi, eax
xor ecx, ecx
mov eax, edx
mov dword [ebp - 0x20], esi
ror eax, 8
rol edx, 8
and eax, 0xff00ff00
and edx, 0xff00ff
or eax, edx
lea edx, [ebp - 0x3c]
or ecx, eax
mov dword [ebp - 0x24], ecx
lea ecx, [ebp - 0x1c]
movups xmm1, xmmword [ebp - 0x2c]
pxor xmm1, xmm0
movups xmmword [ebp - 0x1c], xmm1
call fcn.000ca7e0
add ebx, 0x10
sub edi, 1
jne 0xcaaa2
mov esi, dword [ebp + 0x10]
mov eax, dword [ebp - 8]
test eax, eax
je 0xcab95
push eax
lea eax, [ebp - 0x2c]
xorps xmm0, xmm0
push ebx
push eax
movups xmmword [ebp - 0x2c], xmm0
call fcn.00153810
add esp, 8
lea edx, [ebp - 0x2c]
mov ecx, edx
call fcn.000c9280
movups xmm0, xmmword [ebp - 0x1c]
add esp, 4
lea edx, [ebp - 0x3c]
movups xmm1, xmmword [ebp - 0x2c]
lea ecx, [ebp - 0x1c]
pxor xmm1, xmm0
movups xmmword [ebp - 0x1c], xmm1
call fcn.000ca7e0
mov eax, dword [ebp + 8]
lea edx, [ebp - 0x3c]
mov dword [ebp - 0x2c], eax
lea ecx, [ebp - 0x1c]
mov eax, 3
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x20], 0
movups xmm1, xmmword [ebp - 0x2c]
movd xmm0, eax
psllq xmm1, xmm0
movups xmm0, xmmword [ebp - 0x1c]
pxor xmm1, xmm0
movups xmmword [ebp - 0x1c], xmm1
call fcn.000ca7e0
lea edx, [ebp - 0x1c]
push ecx
mov ecx, edx
call fcn.000c9280
add esp, 4
lea eax, [ebp - 0x1c]
push dword [ebp + 0x18]
push eax
push dword [ebp + 0x14]
call fcn.00153810
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret