Function at 0x1800ae000
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rdi
push rsi
sub rsp, 8
mov qword [rsp], rcx
mov rdi, rcx
mov rsi, rdx
mov rdx, r8
mov rcx, r9
and edx, edx
je 0x1800ae618
mov rdi, rsi
lea rsi, [rdi + rdx*8]
mov rax, qword [rsp]
mov eax, dword [rax]
cmp al, 0x11
je 0x1800ae14a
cmp al, 0x12
je 0x1800ae1e5
cmp al, 0xff
je 0x1800ae2d6
cmp al, 0xfe
je 0x1800ae3fe
cmp al, 0xfd
je 0x1800ae546
imul rbx, rax, 0xfffffffffffffff8
mov eax, 0x200
movd mm7, eax
punpckldq mm7, mm7
mov rdx, qword [rsp]
mov eax, dword [rdx + 4]
movd mm6, eax
punpckldq mm6, mm6
mov eax, 0xffff
movd mm5, eax
punpckldq mm5, mm5
pand mm5, qword [rdx + 8]
pxor mm4, mm4
jmp 0x1800ae0c0
movq mm3, qword [rbx + rdi]
movq mm1, mm3
movq mm0, mm3
paddd mm1, mm1
psrld mm0, 0xf
psrlw mm1, 1
pmaddwd mm0, mm5
pmaddwd mm1, mm5
movq mm2, qword [rdi]
pslld mm0, 5
paddd mm1, mm7
psrad mm1, 0xa
paddd mm0, mm2
paddd mm0, mm1
movq qword [rdi], mm0
movq mm0, mm3
pxor mm0, mm2
psrad mm0, 0x1f
add rdi, 8
pcmpeqd mm2, mm4
pcmpeqd mm3, mm4
por mm2, mm3
pandn mm2, mm6
pxor mm5, mm0
paddw mm5, mm2
pxor mm5, mm0
cmp rdi, rsi
jb 0x1800ae0c0
pslld mm5, 0x10
psrad mm5, 0x10
mov rdx, qword [rsp]
movq qword [rdx + 8], mm5
emms
mov ecx, dword [rdx]
dec ecx
sub rdi, 8
mov eax, dword [rdi + 4]
mov dword [rdx + rcx*4 + 0x30], eax
mov eax, dword [rdi]
mov dword [rdx + rcx*4 + 0x10], eax
test ecx, ecx
jne 0x1800ae12e
jmp 0x1800ae618
mov eax, 0x200
movd mm7, eax
punpckldq mm7, mm7
mov rdx, qword [rsp]
mov eax, dword [rdx + 4]
movd mm6, eax
punpckldq mm6, mm6
mov eax, 0xffff
movd mm5, eax
punpckldq mm5, mm5
pand mm5, qword [rdx + 8]
movq mm4, qword [rdi - 8]
jmp 0x1800ae180
paddd mm4, mm4
psubd mm4, qword [rdi - 0x10]
movq mm3, mm4
movq mm1, mm3
paddd mm1, mm1
psrld mm4, 0xf
psrlw mm1, 1
pmaddwd mm4, mm5
pmaddwd mm1, mm5
movq mm2, qword [rdi]
pslld mm4, 5
paddd mm1, mm7
psrad mm1, 0xa
paddd mm4, mm2
paddd mm4, mm1
movq mm0, mm3
movq qword [rdi], mm4
pxor mm0, mm2
psrad mm0, 0x1f
add rdi, 8
pxor mm1, mm1
pcmpeqd mm2, mm1
pcmpeqd mm3, mm1
por mm2, mm3
pandn mm2, mm6
pxor mm5, mm0
paddw mm5, mm2
pxor mm5, mm0
cmp rdi, rsi
jb 0x1800ae180
jmp 0x1800ae2a7
mov eax, 0x200
movd mm7, eax
punpckldq mm7, mm7
mov rdx, qword [rsp]
mov eax, dword [rdx + 4]
movd mm6, eax
punpckldq mm6, mm6
mov eax, 0xffff
movd mm5, eax
punpckldq mm5, mm5
pand mm5, qword [rdx + 8]
movq mm4, qword [rdi - 8]
jmp 0x1800ae240
movq mm3, mm4
psubd mm3, qword [rdi - 0x10]
psrad mm3, 1
paddd mm3, mm4
movq mm1, mm3
movq mm4, mm3
paddd mm1, mm1
psrld mm4, 0xf
psrlw mm1, 1
pmaddwd mm4, mm5
pmaddwd mm1, mm5
movq mm2, qword [rdi]
pslld mm4, 5
paddd mm1, mm7
psrad mm1, 0xa
paddd mm4, mm2
paddd mm4, mm1
movq mm0, mm3
movq qword [rdi], mm4
pxor mm0, mm2
psrad mm0, 0x1f
add rdi, 8
pxor mm1, mm1
pcmpeqd mm2, mm1
pcmpeqd mm3, mm1
por mm2, mm3
pandn mm2, mm6
pxor mm5, mm0
paddw mm5, mm2
pxor mm5, mm0
cmp rdi, rsi
jb 0x1800ae240
pslld mm5, 0x10
psrad mm5, 0x10
mov rdx, qword [rsp]
movq qword [rdx + 8], mm5
emms
mov eax, dword [rdi - 4]
mov dword [rdx + 0x30], eax
mov eax, dword [rdi - 8]
mov dword [rdx + 0x10], eax
mov eax, dword [rdi - 0xc]
mov dword [rdx + 0x34], eax
mov eax, dword [rdi - 0x10]
mov dword [rdx + 0x14], eax
jmp 0x1800ae618
cld
mov rdx, qword [rsp]
mov ecx, dword [rdx + 8]
mov ebp, dword [rdx + 0xc]
mov r8d, dword [rdx + 4]
mov eax, dword [rdi - 4]
jmp 0x1800ae300
mov ebx, eax
imul eax, ecx
mov edx, dword [rdi]
jo 0x1800ae36a
sar eax, 0xa
adc eax, edx
stosd dword [rdi], eax
test ebx, ebx
je 0x1800ae330
test edx, edx
je 0x1800ae330
xor ebx, edx
sar ebx, 0x1f
xor ecx, ebx
add ecx, r8d
mov edx, 0x400
add edx, ebx
cmp ecx, edx
jle 0x1800ae32e
mov ecx, edx
xor ecx, ebx
mov ebx, eax
imul eax, ebp
mov edx, dword [rdi]
jo 0x1800ae36e
sar eax, 0xa
adc eax, edx
stosd dword [rdi], eax
test ebx, ebx
je 0x1800ae360
test edx, edx
je 0x1800ae360
xor ebx, edx
sar ebx, 0x1f
xor ebp, ebx
add ebp, r8d
mov edx, 0x400
add edx, ebx
cmp ebp, edx
jle 0x1800ae35e
mov ebp, edx
xor ebp, ebx
cmp rdi, rsi
jb 0x1800ae300
jmp 0x1800ae3e9
mov eax, ebx
jmp 0x1800ae380
mov eax, ebx
jmp 0x1800ae3b2
mov ebx, eax
imul ecx
shl edx, 0x16
shr eax, 0xa
adc eax, edx
mov edx, dword [rdi]
add eax, edx
stosd dword [rdi], eax
test ebx, ebx
je 0x1800ae3b2
test edx, edx
je 0x1800ae3b2
xor ebx, edx
sar ebx, 0x1f
xor ecx, ebx
add ecx, r8d
mov edx, 0x400
add edx, ebx
cmp ecx, edx
jle 0x1800ae3b0
mov ecx, edx
xor ecx, ebx
mov ebx, eax
imul ebp
shl edx, 0x16
shr eax, 0xa
adc eax, edx
mov edx, dword [rdi]
add eax, edx
stosd dword [rdi], eax
test ebx, ebx
je 0x1800ae3e4
test edx, edx
je 0x1800ae3e4
xor ebx, edx
sar ebx, 0x1f
xor ebp, ebx
add ebp, r8d
mov edx, 0x400
add edx, ebx
cmp ebp, edx
jle 0x1800ae3e2
mov ebp, edx
xor ebp, ebx
cmp rdi, rsi
jb 0x1800ae380
mov rdx, qword [rsp]
mov dword [rdx + 8], ecx
mov dword [rdx + 0xc], ebp
mov eax, dword [rdi - 4]
mov dword [rdx + 0x10], eax
jmp 0x1800ae618
mov rdx, qword [rsp]
mov ecx, dword [rdx + 8]
mov ebp, dword [rdx + 0xc]
mov r8d, dword [rdx + 4]
mov eax, dword [rdi - 8]
jmp 0x1800ae440
mov ebx, eax
imul eax, ebp
mov edx, dword [rdi + 4]
jo 0x1800ae4b2
sar eax, 0xa
adc eax, edx
mov dword [rdi + 4], eax
test ebx, ebx
je 0x1800ae473
test edx, edx
je 0x1800ae473
xor ebx, edx
sar ebx, 0x1f
xor ebp, ebx
add ebp, r8d
mov edx, 0x400
add edx, ebx
cmp ebp, edx
jle 0x1800ae471
mov ebp, edx
xor ebp, ebx
mov ebx, eax
imul eax, ecx
mov edx, dword [rdi]
jo 0x1800ae4b6
sar eax, 0xa
adc eax, edx
mov dword [rdi], eax
test ebx, ebx
je 0x1800ae4a4
test edx, edx
je 0x1800ae4a4
xor ebx, edx
sar ebx, 0x1f
xor ecx, ebx
add ecx, r8d
mov edx, 0x400
add edx, ebx
cmp ecx, edx
jle 0x1800ae4a2
mov ecx, edx
xor ecx, ebx
add rdi, 8
cmp rdi, rsi
jb 0x1800ae440
jmp 0x1800ae531
mov eax, ebx
jmp 0x1800ae4c0
mov eax, ebx
jmp 0x1800ae4f5
mov ebx, eax
imul ebp
shl edx, 0x16
shr eax, 0xa
adc eax, edx
mov edx, dword [rdi + 4]
add eax, edx
mov dword [rdi + 4], eax
test ebx, ebx
je 0x1800ae4f5
test edx, edx
je 0x1800ae4f5
xor ebx, edx
sar ebx, 0x1f
xor ebp, ebx
add ebp, r8d
mov edx, 0x400
add edx, ebx
cmp ebp, edx
jle 0x1800ae4f3
mov ebp, edx
xor ebp, ebx
mov ebx, eax
imul ecx
shl edx, 0x16
shr eax, 0xa
adc eax, edx
mov edx, dword [rdi]
add eax, edx
mov dword [rdi], eax
test ebx, ebx
je 0x1800ae528
test edx, edx
je 0x1800ae528
xor ebx, edx
sar ebx, 0x1f
xor ecx, ebx
add ecx, r8d
mov edx, 0x400
add edx, ebx
cmp ecx, edx
jle 0x1800ae526
mov ecx, edx
xor ecx, ebx
add rdi, 8
cmp rdi, rsi
jb 0x1800ae4c0
mov rdx, qword [rsp]
mov dword [rdx + 8], ecx
mov dword [rdx + 0xc], ebp
mov eax, dword [rdi - 8]
mov dword [rdx + 0x30], eax
jmp 0x1800ae618
mov eax, 0x200
movd mm7, eax
punpckldq mm7, mm7
mov rdx, qword [rsp]
mov eax, dword [rdx + 4]
movd mm6, eax
punpckldq mm6, mm6
mov eax, 0xffff
movd mm5, eax
punpckldq mm5, mm5
pand mm5, qword [rdx + 8]
movq mm4, qword [rdi - 8]
jmp 0x1800ae580
movq mm3, mm4
psrlq mm3, 0x20
punpckldq mm3, mm4
movq mm1, mm3
movq mm4, mm3
pslld mm1, 1
psrld mm4, 0xf
psrlw mm1, 1
pmaddwd mm4, mm5
pmaddwd mm1, mm5
movq mm2, qword [rdi]
pslld mm4, 5
paddd mm1, mm7
psrad mm1, 0xa
paddd mm4, mm2
paddd mm4, mm1
movq qword [rdi], mm4
movq mm0, mm3
pxor mm0, mm2
psrad mm0, 0x1f
add rdi, 8
pxor mm1, mm1
pcmpeqd mm2, mm1
pcmpeqd mm3, mm1
por mm2, mm3
pandn mm2, mm6
pcmpeqd mm1, mm1
psubd mm1, mm7
psubd mm1, mm7
psubd mm1, mm0
pxor mm5, mm0
paddw mm5, mm1
paddusw mm5, mm2
psubw mm5, mm1
pxor mm5, mm0
cmp rdi, rsi
jb 0x1800ae580
pslld mm5, 0x10
psrad mm5, 0x10
mov rdx, qword [rsp]
movq qword [rdx + 8], mm5
emms
mov edx, dword [rdi - 4]
mov rax, qword [rsp]
mov dword [rax + 0x10], edx
mov edx, dword [rdi - 8]
mov dword [rax + 0x30], edx
add rsp, 8
pop rsi
pop rdi
pop rbx
pop rbp
ret