Function at 0xd53161
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, 0x40
mov esi, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
lea esi, [esi + eax*4 - 4]
mov ecx, dword [ebp + 0x1c]
mov edi, esi
add edi, eax
movq mm6, qword [esi + eax*2]
movq mm7, mm6
punpckhbw mm7, qword [edi + eax*2]
punpcklbw mm6, dword [edi + eax*2]
movq mm4, qword [esi]
movq mm5, mm4
punpckhbw mm5, qword [esi + eax]
punpcklbw mm4, dword [esi + eax]
movq mm3, mm5
punpckhwd mm5, mm7
punpcklwd mm3, mm7
movq mm2, mm4
punpckhwd mm4, mm6
punpcklwd mm2, mm6
neg eax
movq mm6, qword [esi + eax*2]
movq mm1, mm6
punpckhbw mm6, qword [esi + eax]
punpcklbw mm1, dword [esi + eax]
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
movq mm5, mm6
psubusb mm5, mm7
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
lea edx, [esp + 0x20]
movq qword [edx + 0x18], mm5
movq qword [edx + 0x10], 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 mm2, mm1
psubusb mm2, mm0
psubusb mm0, mm1
por mm0, mm2
movq mm2, mm3
punpckldq mm2, mm4
punpckhdq mm3, mm4
movq qword [edx + 8], mm3
movq qword [edx], 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 + 0x10]
movq mm7, qword [edx + 0x18]
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 [0x14d4440]
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]
movq mm7, qword [edx + 0x18]
movq mm6, qword [edx + 8]
movq mm0, qword [edx + 0x10]
pxor mm2, qword [0x14d4450]
pxor mm7, qword [0x14d4450]
psubsb mm2, mm7
pand mm2, mm4
pxor mm6, qword [0x14d4450]
pxor mm0, qword [0x14d4450]
movq mm3, mm0
psubsb mm0, mm6
paddsb mm2, mm0
paddsb mm2, mm0
paddsb mm2, mm0
pand mm1, mm2
movq mm2, mm1
paddsb mm1, qword [0x14d4480]
paddsb mm2, qword [0x14d4470]
pxor mm0, mm0
pxor mm5, mm5
punpcklbw mm0, mm2
punpckhbw mm5, mm2
psraw mm0, 0xb
psraw mm5, 0xb
packsswb mm0, mm5
movq mm2, mm0
pxor mm0, mm0
movq mm5, mm1
punpcklbw mm0, mm1
psraw mm0, 0xb
pxor mm1, mm1
punpckhbw mm1, mm5
psraw mm1, 0xb
movq mm5, mm0
packsswb mm0, mm1
paddsw mm5, qword [0x14d4490]
paddsw mm1, qword [0x14d4490]
psraw mm5, 1
psraw mm1, 1
packsswb mm5, mm1
pandn mm4, mm5
paddsb mm6, mm2
pxor mm6, qword [0x14d4450]
movq mm1, qword [edx]
pxor mm1, qword [0x14d4450]
paddsb mm1, mm4
pxor mm1, qword [0x14d4450]
psubsb mm3, mm0
pxor mm3, qword [0x14d4450]
psubsb mm7, mm4
pxor mm7, qword [0x14d4450]
movq mm2, mm1
punpcklbw mm2, mm6
movq mm4, mm3
punpckhbw mm1, mm6
punpcklbw mm4, mm7
punpckhbw mm3, mm7
movq mm6, mm2
punpcklwd mm2, mm4
punpckhwd mm6, mm4
movq mm5, mm1
punpcklwd mm1, mm3
punpckhwd mm5, mm3
movd dword [esi + eax*4 + 2], mm2
psrlq mm2, 0x20
movd dword [edi + eax*4 + 2], mm2
movd dword [esi + eax*2 + 2], mm6
psrlq mm6, 0x20
movd dword [esi + eax + 2], mm6
movd dword [esi + 2], mm1
psrlq mm1, 0x20
movd dword [edi + 2], mm1
neg eax
movd dword [edi + eax + 2], mm5
psrlq mm5, 0x20
movd dword [edi + eax*2 + 2], mm5
lea esi, [esi + eax*8]
dec ecx
jne 0xd53180
add esp, 0x40
pop esp
pop edi
pop esi
pop ebp
ret