Function at 0x418590
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
push edi
movd mm7, dword [ebp + 8]
punpcklwd mm7, mm7
punpckldq mm7, mm7
movq mm4, mm7
psrlw mm4, 7
paddw mm7, mm4
movd mm6, dword [ebp + 0x2c]
punpcklwd mm6, mm6
punpckldq mm6, mm6
mov eax, dword [ebp + 0xc]
shl eax, 1
sub dword [ebp + 0x18], eax
sub dword [ebp + 0x20], eax
sub dword [ebp + 0x28], eax
mov edx, dword [ebp + 0x10]
mov esi, dword [ebp + 0x24]
mov edi, dword [ebp + 0x1c]
mov ebx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0xc]
shr ecx, 2
or ecx, ecx
je 0x4186db
movq mm5, qword [esi]
movq mm4, qword [edi]
movq mm3, mm5
movq mm2, mm4
pand mm3, qword [0x55f6e0]
pand mm2, qword [0x55f6e0]
psrlw mm3, 8
psrlw mm2, 8
movq mm1, mm3
movq mm0, mm2
psrlw mm1, 5
psrlw mm0, 5
por mm3, mm1
por mm2, mm0
psubw mm3, mm2
pmullw mm3, mm7
psllw mm2, 8
paddw mm3, mm2
pand mm3, qword [0x55f6e0]
movq mm2, mm5
movq mm1, mm4
pand mm2, qword [0x55f6f8]
pand mm1, qword [0x55f6f8]
psrlw mm2, 3
psrlw mm1, 3
movq mm0, mm2
psrlw mm0, 6
por mm2, mm0
movq mm0, mm1
psrlw mm0, 6
por mm1, mm0
psubw mm2, mm1
pmullw mm2, mm7
psllw mm1, 8
paddw mm2, mm1
psrlw mm2, 5
pand mm2, qword [0x55f6f8]
por mm3, mm2
movq mm2, mm5
movq mm1, mm4
pand mm2, qword [0x55f700]
pand mm1, qword [0x55f700]
psllw mm2, 3
psllw mm1, 3
movq mm0, mm2
psrlw mm0, 5
por mm2, mm0
movq mm0, mm1
psrlw mm0, 5
por mm1, mm0
psubw mm2, mm1
pmullw mm2, mm7
psllw mm1, 8
paddw mm2, mm1
psrlw mm2, 0xb
por mm3, mm2
pcmpeqw mm5, mm6
pand mm4, mm5
pxor mm5, qword [0x55f708]
pand mm3, mm5
por mm4, mm3
movq qword [ebx], mm4
add esi, 8
add edi, 8
add ebx, 8
dec ecx
jne 0x4185dc
mov ecx, dword [ebp + 0xc]
test ecx, 2
je 0x4187e2
movd mm5, dword [esi]
movd mm4, dword [edi]
movq mm3, mm5
movq mm2, mm4
pand mm3, qword [0x55f6e0]
pand mm2, qword [0x55f6e0]
psrlw mm3, 8
psrlw mm2, 8
movq mm1, mm3
movq mm0, mm2
psrlw mm1, 5
psrlw mm0, 5
por mm3, mm1
por mm2, mm0
psubw mm3, mm2
pmullw mm3, mm7
psllw mm2, 8
paddw mm3, mm2
pand mm3, qword [0x55f6e0]
movq mm2, mm5
movq mm1, mm4
pand mm2, qword [0x55f6f8]
pand mm1, qword [0x55f6f8]
psrlw mm2, 3
psrlw mm1, 3
movq mm0, mm2
psrlw mm0, 6
por mm2, mm0
movq mm0, mm1
psrlw mm0, 6
por mm1, mm0
psubw mm2, mm1
pmullw mm2, mm7
psllw mm1, 8
paddw mm2, mm1
psrlw mm2, 5
pand mm2, qword [0x55f6f8]
por mm3, mm2
movq mm2, mm5
movq mm1, mm4
pand mm2, qword [0x55f700]
pand mm1, qword [0x55f700]
psllw mm2, 3
psllw mm1, 3
movq mm0, mm2
psrlw mm0, 5
por mm2, mm0
movq mm0, mm1
psrlw mm0, 5
por mm1, mm0
psubw mm2, mm1
pmullw mm2, mm7
psllw mm1, 8
paddw mm2, mm1
psrlw mm2, 0xb
por mm3, mm2
pcmpeqw mm5, mm6
pand mm4, mm5
pxor mm5, qword [0x55f708]
pand mm3, mm5
por mm4, mm3
movd dword [ebx], mm4
add esi, 4
add edi, 4
add ebx, 4
test ecx, 1
je 0x4188f3
xor eax, eax
mov ax, word [esi]
movd mm5, eax
xor eax, eax
mov ax, word [edi]
movd mm4, eax
movq mm3, mm5
movq mm2, mm4
pand mm3, qword [0x55f6e0]
pand mm2, qword [0x55f6e0]
psrlw mm3, 8
psrlw mm2, 8
movq mm1, mm3
movq mm0, mm2
psrlw mm1, 5
psrlw mm0, 5
por mm3, mm1
por mm2, mm0
psubw mm3, mm2
pmullw mm3, mm7
psllw mm2, 8
paddw mm3, mm2
pand mm3, qword [0x55f6e0]
movq mm2, mm5
movq mm1, mm4
pand mm2, qword [0x55f6f8]
pand mm1, qword [0x55f6f8]
psrlw mm2, 3
psrlw mm1, 3
movq mm0, mm2
psrlw mm0, 6
por mm2, mm0
movq mm0, mm1
psrlw mm0, 6
por mm1, mm0
psubw mm2, mm1
pmullw mm2, mm7
psllw mm1, 8
paddw mm2, mm1
psrlw mm2, 5
pand mm2, qword [0x55f6f8]
por mm3, mm2
movq mm2, mm5
movq mm1, mm4
pand mm2, qword [0x55f700]
pand mm1, qword [0x55f700]
psllw mm2, 3
psllw mm1, 3
movq mm0, mm2
psrlw mm0, 5
por mm2, mm0
movq mm0, mm1
psrlw mm0, 5
por mm1, mm0
psubw mm2, mm1
pmullw mm2, mm7
psllw mm1, 8
paddw mm2, mm1
psrlw mm2, 0xb
por mm3, mm2
pcmpeqw mm5, mm6
pand mm4, mm5
pxor mm5, qword [0x55f708]
pand mm3, mm5
por mm4, mm3
movd eax, mm4
mov word [ebx], ax
add esi, 2
add edi, 2
add ebx, 2
add esi, dword [ebp + 0x28]
add edi, dword [ebp + 0x20]
add ebx, dword [ebp + 0x18]
dec edx
jne 0x4185ce
emms
pop edi
pop esi
pop ebx
pop ebp
ret 0x28