Function at 0x73771b84
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff8
push eax
push ebx
push ecx
push edx
push esi
push edi
cmp dword [ebp + 0x18], 2
jl 0x73771e2a
mov eax, dword [ebp + 0x18]
shl eax, 2
mov dword [ebp + 0x18], eax
mov eax, dword [ebp + 0x14]
sub eax, dword [ebp + 0x18]
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
sub eax, dword [ebp + 0x18]
mov dword [ebp - 8], eax
mov ebx, dword [ebp + 0x1c]
mov esi, dword [ebp + 0x10]
mov edi, dword [ebp + 8]
pxor mm0, mm0
mov ecx, dword [ebp + 0x18]
mov edx, dword [edi + 4]
movq mm1, qword [0x73771600]
movq mm2, qword [esi]
movq mm3, mm2
punpcklbw mm2, mm0
punpckhbw mm3, mm0
pmullw mm2, mm1
pmullw mm3, mm1
movq mm4, qword [0x737715e8]
movq mm5, mm4
psubw mm4, mm2
psubw mm5, mm3
movq mm6, mm4
movq mm7, mm5
psrlw mm6, 8
psrlw mm7, 8
paddusw mm4, mm6
paddusw mm5, mm7
psrlq mm4, 0x38
psrlq mm5, 0x38
punpcklwd mm4, mm4
punpcklwd mm5, mm5
punpcklwd mm4, mm4
punpcklwd mm5, mm5
movq mm6, qword [edi]
movq mm7, mm6
punpcklbw mm6, mm0
punpckhbw mm7, mm0
pmullw mm4, mm6
pmullw mm5, mm7
paddusw mm2, mm4
paddusw mm3, mm5
paddusw mm2, qword [0x737715f0]
paddusw mm3, qword [0x737715f0]
movq mm4, mm2
movq mm5, mm3
psrlw mm4, 8
psrlw mm5, 8
paddusw mm2, mm4
paddusw mm3, mm5
psrlw mm2, 8
psrlw mm3, 8
packuswb mm2, mm3
movq qword [edi], mm2
add esi, 8
add edi, 8
sub ecx, 8
jle 0x73771e1c
mov eax, edi
and eax, 7
je 0x73771c79
mov dword [edi - 4], edx
sub esi, eax
sub edi, eax
add ecx, eax
mov eax, ecx
and eax, 7
shr ecx, 3
je 0x73771d6d
movq mm7, qword [0x737715f8]
movq mm1, qword [esi]
psrld mm1, 0x18
pxor mm1, mm7
movq mm2, mm1
punpcklwd mm1, mm1
punpckhwd mm2, mm2
punpcklwd mm1, mm1
punpcklwd mm2, mm2
movq mm3, qword [edi]
movq mm4, mm3
punpcklbw mm3, mm0
dec ecx
je 0x73771d23
punpckhbw mm4, mm0
pmullw mm3, mm1
movq mm1, qword [esi + 8]
pmullw mm4, mm2
psrld mm1, 0x18
add esi, 8
paddw mm3, qword [0x737715f0]
pxor mm1, mm7
paddw mm4, qword [0x737715f0]
movq mm2, mm1
movq mm5, mm3
punpcklwd mm1, mm1
movq mm6, mm4
punpckhwd mm2, mm2
psrlw mm5, 8
add edi, 8
psrlw mm6, 8
paddw mm5, mm3
paddw mm6, mm4
psrlw mm5, 8
movq mm3, qword [edi]
psrlw mm6, 8
movq mm4, mm3
packuswb mm5, mm6
paddusb mm5, qword [esi - 8]
punpcklwd mm1, mm1
dec ecx
punpcklwd mm2, mm2
movq qword [edi - 8], mm5
punpcklbw mm3, mm0
jg 0x73771cb9
punpckhbw mm4, mm0
pmullw mm3, mm1
pmullw mm4, mm2
paddw mm3, qword [0x737715f0]
paddw mm4, qword [0x737715f0]
movq mm5, mm3
movq mm6, mm4
psrlw mm5, 8
psrlw mm6, 8
paddw mm5, mm3
paddw mm6, mm4
psrlw mm5, 8
psrlw mm6, 8
packuswb mm5, mm6
paddusb mm5, qword [esi]
movq qword [edi], mm5
add edi, 8
add esi, 8
test eax, eax
je 0x73771e1c
mov ecx, 8
sub ecx, eax
sub esi, ecx
sub edi, ecx
movq mm1, qword [0x73771600]
mov edx, dword [edi]
movq mm2, qword [esi]
movq mm3, mm2
punpcklbw mm2, mm0
punpckhbw mm3, mm0
pmullw mm2, mm1
pmullw mm3, mm1
movq mm4, qword [0x737715e8]
movq mm5, mm4
psubw mm4, mm2
psubw mm5, mm3
movq mm6, mm4
movq mm7, mm5
psrlw mm6, 8
psrlw mm7, 8
paddusw mm4, mm6
paddusw mm5, mm7
psrlq mm4, 0x38
psrlq mm5, 0x38
punpcklwd mm4, mm4
punpcklwd mm5, mm5
punpcklwd mm4, mm4
punpcklwd mm5, mm5
movq mm6, qword [edi]
movq mm7, mm6
punpcklbw mm6, mm0
punpckhbw mm7, mm0
pmullw mm4, mm6
pmullw mm5, mm7
paddusw mm2, mm4
paddusw mm3, mm5
paddusw mm2, qword [0x737715f0]
paddusw mm3, qword [0x737715f0]
movq mm4, mm2
movq mm5, mm3
psrlw mm4, 8
psrlw mm5, 8
paddusw mm2, mm4
paddusw mm3, mm5
psrlw mm2, 8
psrlw mm3, 8
packuswb mm2, mm3
movq qword [edi], mm2
add esi, 8
add edi, 8
mov dword [edi - 8], edx
dec ebx
je 0x73771e2a
add esi, dword [ebp - 4]
add edi, dword [ebp - 8]
jmp 0x73771bc1
emms
xor eax, eax
pop edi
pop esi
pop edx
pop ecx
pop ebx
pop eax
leave
ret