Function at 0x10051bd0
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xc
call fcn.1010c7b0
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.0x10051c1c
jmp dword [edx*4 + 0x10051e3c]
mov ebp, 0xa
lea edx, [ecx - 0xa]
cmp ecx, ebp
jle 0x10051d44
cmp edx, 8
jb 0x10051d1d
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 0x10051c72
cmp esi, edi
jae 0x10051d1d
cmp dword [esp + 0x28], eax
ja 0x10051c80
cmp esi, eax
jae 0x10051d1d
cmp dword [esp + 0x28], ebx
ja 0x10051c8e
cmp esi, ebx
jae 0x10051d1d
mov esi, dword [esp + 0x10]
cmp edi, eax
ja 0x10051c9e
cmp esi, eax
jae 0x10051d1d
cmp edi, ebx
ja 0x10051ca6
cmp esi, ebx
jae 0x10051d1d
and edx, 0x80000007
jns 0x10051cb3
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 0x10051cc0
cmp ebp, ecx
jge 0x10051d44
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 0x10051d21
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