Function at 0x5c2a98
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push esi
push edi
mov eax, esp
and esp, 0xfffffff0
lea esp, [esp - 0xc]
push eax
sub esp, 0x60
mov esi, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
lea esi, [esi + eax*4 - 4]
mov ecx, dword [ebp + 0x1c]
lea edi, [esi + eax]
movq mm0, qword [edi + eax*2]
movq mm6, qword [esi + eax*2]
movq mm7, mm6
punpckhbw mm7, mm0
punpcklbw mm6, mm0
movq mm0, qword [esi + eax]
movq mm4, qword [esi]
movq mm5, mm4
punpckhbw mm5, mm0
punpcklbw mm4, mm0
movq mm3, mm5
punpckhwd mm5, mm7
punpcklwd mm3, mm7
movq mm2, mm4
punpckhwd mm4, mm6
punpcklwd mm2, mm6
neg eax
movq mm7, qword [esi + eax]
movq mm6, qword [esi + eax*2]
movq mm1, mm6
punpckhbw mm6, mm7
punpcklbw mm1, mm7
movq mm7, qword [esi + eax*4]
punpckhbw mm7, qword [edi + eax*4]
movq mm0, mm7
punpckhwd mm7, mm6
punpcklwd mm0, mm6
movq mm6, mm7
punpckhdq mm7, mm5
punpckldq mm6, mm5
lea edx, [esp + 0x20]
movq mm5, mm6
movq qword [edx + 0x38], mm7
psubusb mm5, mm7
movq qword [edx + 0x30], mm6
psubusb mm7, mm6
por mm7, mm5
movq mm5, mm0
punpckhdq mm5, mm3
punpckldq mm0, mm3
movq mm3, mm5
psubusb mm3, mm6
psubusb mm6, mm5
por mm6, mm3
movq qword [edx + 0x28], mm5
movq qword [edx + 0x20], mm0
movq mm3, qword [esi + eax*4]
punpcklbw mm3, dword [edi + eax*4]
movq mm0, mm3
punpcklwd mm0, mm1
punpckhwd mm3, mm1
movq mm1, mm0
punpckldq mm0, mm2
punpckhdq mm1, mm2
movq qword [edx], mm0
movq qword [edx + 8], mm1
movq mm2, mm1
psubusb mm2, mm0
psubusb mm0, mm1
por mm0, mm2
movq mm2, mm3
punpckldq mm2, mm4
punpckhdq mm3, mm4
movq qword [edx + 0x18], mm3
movq qword [edx + 0x10], mm2
movq mm5, mm2
psubusb mm2, mm1
psubusb mm1, mm5
por mm1, mm2
mov edx, dword [ebp + 0x14]
movq mm4, qword [edx]
psubusb mm7, mm4
psubusb mm0, mm4
psubusb mm1, mm4
psubusb mm6, mm4
por mm7, mm6
por mm0, mm1
por mm0, mm7
movq mm1, mm5
movq mm7, mm3
psubusb mm7, mm5
psubusb mm5, mm3
por mm5, mm7
movq qword [esp], mm5
lea edx, [esp + 0x20]
psubusb mm5, mm4
por mm0, mm5
movq mm5, qword [edx + 0x20]
movq mm7, qword [edx + 0x28]
movq mm6, mm5
movq mm2, mm7
psubusb mm5, mm7
psubusb mm7, mm6
por mm7, mm5
movq qword [esp + 0x10], mm7
psubusb mm7, mm4
por mm0, mm7
movq mm5, mm2
psubusb mm5, mm1
psubusb mm1, mm2
por mm5, mm1
pand mm5, qword [0x75f860]
psrlw mm5, 1
mov edx, dword [ebp + 0x10]
movq mm4, qword [edx]
movq mm1, mm3
movq mm7, mm6
psubusb mm1, mm7
psubusb mm7, mm3
por mm1, mm7
paddusb mm1, mm1
paddusb mm1, mm5
psubusb mm1, mm4
por mm1, mm0
pxor mm0, mm0
pcmpeqb mm1, mm0
mov edx, dword [ebp + 0x18]
movq mm7, qword [edx]
movq mm4, qword [esp]
psubusb mm4, mm7
movq mm3, qword [esp + 0x10]
psubusb mm3, mm7
por mm4, mm3
pcmpeqb mm4, mm0
pcmpeqb mm0, mm0
pxor mm4, mm0
lea edx, [esp + 0x20]
movq mm2, qword [edx + 0x10]
movq mm7, qword [edx + 0x28]
pxor mm2, qword [0x75f870]
pxor mm7, qword [0x75f870]
psubsb mm2, mm7
movq mm6, qword [edx + 0x18]
movq mm0, qword [edx + 0x20]
pxor mm6, qword [0x75f870]
pxor mm0, qword [0x75f870]
movq mm3, mm0
psubsb mm0, mm6
paddsb mm2, mm0
paddsb mm2, mm0
paddsb mm2, mm0
pand mm1, mm2
movq mm2, mm1
pand mm2, mm4
movq mm5, mm2
paddsb mm5, qword [0x75f890]
pxor mm0, mm0
pxor mm7, mm7
punpcklbw mm0, mm5
psraw mm0, 0xb
punpckhbw mm7, mm5
psraw mm7, 0xb
packsswb mm0, mm7
movq mm5, mm0
paddsb mm2, qword [0x75f8a0]
pxor mm0, mm0
pxor mm7, mm7
punpcklbw mm0, mm2
psraw mm0, 0xb
punpckhbw mm7, mm2
psraw mm7, 0xb
packsswb mm0, mm7
psubsb mm3, mm0
paddsb mm6, mm5
pandn mm4, mm1
pxor mm0, mm0
pxor mm1, mm1
pxor mm2, mm2
punpcklbw mm1, mm4
punpckhbw mm2, mm4
pmulhw mm1, qword [0x75f8c0]
pmulhw mm2, qword [0x75f8c0]
paddw mm1, qword [0x75f8f0]
paddw mm2, qword [0x75f8f0]
psraw mm1, 7
psraw mm2, 7
packsswb mm1, mm2
psubsb mm3, mm1
paddsb mm6, mm1
pxor mm3, qword [0x75f870]
pxor mm6, qword [0x75f870]
movq qword [edx + 0x18], mm6
movq qword [edx + 0x20], mm3
pxor mm1, mm1
pxor mm2, mm2
punpcklbw mm1, mm4
punpckhbw mm2, mm4
pmulhw mm1, qword [0x75f8d0]
pmulhw mm2, qword [0x75f8d0]
paddw mm1, qword [0x75f8f0]
paddw mm2, qword [0x75f8f0]
psraw mm1, 7
psraw mm2, 7
packsswb mm1, mm2
movq mm3, qword [edx + 0x28]
movq mm6, qword [edx + 0x10]
pxor mm3, qword [0x75f870]
pxor mm6, qword [0x75f870]
paddsb mm6, mm1
psubsb mm3, mm1
pxor mm6, qword [0x75f870]
pxor mm3, qword [0x75f870]
movq qword [edx + 0x28], mm3
movq qword [edx + 0x10], mm6
pxor mm1, mm1
pxor mm2, mm2
punpcklbw mm1, mm4
punpckhbw mm2, mm4
pmulhw mm1, qword [0x75f8e0]
pmulhw mm2, qword [0x75f8e0]
paddw mm1, qword [0x75f8f0]
paddw mm2, qword [0x75f8f0]
psraw mm1, 7
psraw mm2, 7
packsswb mm1, mm2
movq mm6, qword [edx + 8]
movq mm3, qword [edx + 0x30]
pxor mm6, qword [0x75f870]
pxor mm3, qword [0x75f870]
paddsb mm6, mm1
psubsb mm3, mm1
pxor mm6, qword [0x75f870]
pxor mm3, qword [0x75f870]
movq mm0, qword [edx]
movq mm1, mm0
punpcklbw mm0, mm6
punpckhbw mm1, mm6
movq mm2, qword [edx + 0x10]
movq mm6, mm2
punpcklbw mm2, dword [edx + 0x18]
punpckhbw mm6, qword [edx + 0x18]
movq mm5, mm0
punpcklwd mm0, mm2
punpckhwd mm5, mm2
movq mm4, mm1
punpcklwd mm1, mm6
punpckhwd mm4, mm6
movq mm2, qword [edx + 0x20]
punpcklbw mm2, dword [edx + 0x28]
movq mm6, mm3
punpcklbw mm6, dword [edx + 0x38]
movq mm7, mm2
punpcklwd mm2, mm6
punpckhwd mm7, mm6
movq mm6, mm0
punpckldq mm0, mm2
punpckhdq mm6, mm2
movq qword [esi + eax*4], mm0
movq qword [edi + eax*4], mm6
movq mm0, mm5
punpckldq mm0, mm7
punpckhdq mm5, mm7
movq qword [esi + eax*2], mm0
movq qword [edi + eax*2], mm5
movq mm2, qword [edx + 0x20]
punpckhbw mm2, qword [edx + 0x28]
punpckhbw mm3, qword [edx + 0x38]
movq mm5, mm2
punpcklwd mm2, mm3
punpckhwd mm5, mm3
movq mm0, mm1
movq mm3, mm4
punpckldq mm0, mm2
punpckhdq mm1, mm2
movq qword [esi], mm0
movq qword [edi], mm1
neg eax
punpckldq mm3, mm5
punpckhdq mm4, mm5
movq qword [esi + eax*2], mm3
movq qword [edi + eax*2], mm4
lea esi, [esi + eax*8]
dec ecx
jne 0x5c2ab7
add esp, 0x60
pop esp
pop edi
pop esi
pop ebp
ret