Function at 0x10015c00
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xc
call fcn.10061cf0
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.0x10015c4c
jmp dword [edx*4 + 0x10015e6c]
mov ebp, 0xa
lea edx, [ecx - 0xa]
cmp ecx, ebp
jle 0x10015d74
cmp edx, 8
jb 0x10015d4d
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 0x10015ca2
cmp esi, edi
jae 0x10015d4d
cmp dword [esp + 0x28], eax
ja 0x10015cb0
cmp esi, eax
jae 0x10015d4d
cmp dword [esp + 0x28], ebx
ja 0x10015cbe
cmp esi, ebx
jae 0x10015d4d
mov esi, dword [esp + 0x10]
cmp edi, eax
ja 0x10015cce
cmp esi, eax
jae 0x10015d4d
cmp edi, ebx
ja 0x10015cd6
cmp esi, ebx
jae 0x10015d4d
and edx, 0x80000007
jns 0x10015ce3
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 0x10015cf0
cmp ebp, ecx
jge 0x10015d74
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 0x10015d51
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