Function at 0x1400fa980
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
push rdi
sub rsp, 0x20
cmp dword [0x1401bdf44], 0
mov rdi, rdx
mov rdx, qword [rcx]
mov rbx, rcx
je 0x1400f7ac8
mov rcx, qword [rcx + 0x28]
mov r9d, r8d
mov r8, rdx
mov rdx, rdi
mov rbx, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
jmp 0x1400fa980
mov qword [rsp + 0x30], rsi
mov rcx, rdi
mov esi, r8d
mov r8d, r8d
call sub.VCRUNTIME140.dll_memcpy
test rdi, rdi
jne 0x1400f7af5
mov rsi, qword [rsp + 0x30]
xor eax, eax
mov dword [rbx + 0x4c], eax
mov rbx, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
mov ecx, dword [rbx + 0x4c]
mov r8, rsi
mov rdx, rdi
call qword [0x1401b9198]
mov rsi, qword [rsp + 0x30]
mov dword [rbx + 0x4c], eax
mov rbx, qword [rsp + 0x38]
add rsp, 0x20
pop rdi
ret
mov rax, rsp
push rbx
push rbp
push rsi
push rdi
sub rsp, 0x98
movaps xmmword [rax - 0x38], xmm6
movaps xmmword [rax - 0x48], xmm7
movaps xmmword [rax - 0x58], xmm8
movaps xmmword [rax - 0x68], xmm9
movaps xmmword [rax - 0x78], xmm10
mov rax, qword [0x1401b9200]
xor rax, rsp
mov qword [rsp + 0x30], rax
lea rbp, [0x14015be60]
xorps xmm0, xmm0
mov r10, r8
mov rbx, rdx
mov rsi, rcx
movdqu xmm8, xmmword [rcx + 0xa4]
movdqu xmm9, xmmword [rcx + 0xb4]
movdqu xmm7, xmmword [rcx + 0xc4]
movdqu xmm6, xmmword [rcx + 0xd4]
movups xmmword [rsp + 0x20], xmm0
cmp r9d, 0x10
jge 0x1400faa1c
test r9d, r9d
je 0x1400fae1a
movsxd rdi, r9d
lea rcx, [rsp + 0x20]
mov r8, rdi
mov rdx, r10
call sub.VCRUNTIME140.dll_memcpy
movdqa xmm10, xmmword [rsp + 0x20]
jmp 0x1400fad4f
mov ecx, r10d
neg ecx
and ecx, 0xf
je 0x1400faad1
movdqu xmm10, xmmword [r8]
mov eax, ecx
sub r9d, ecx
movdqa xmm2, xmmword [0x14015bfb0]
movdqa xmm0, xmm9
movdqa xmm3, xmm8
add rbx, rax
movdqu xmmword [rdx], xmm10
add r10, rax
add rax, rax
movdqu xmm1, xmmword [rbp + rax*8 - 0x10]
pshufb xmm0, xmm1
pxor xmm2, xmm1
pshufb xmm10, xmm1
pshufb xmm3, xmm1
pshufb xmm8, xmm2
pshufb xmm9, xmm2
por xmm8, xmm0
movdqa xmm0, xmm7
pshufb xmm0, xmm1
pshufb xmm7, xmm2
por xmm9, xmm0
movdqa xmm0, xmm6
pshufb xmm6, xmm2
pshufb xmm0, xmm1
por xmm6, xmm10
movdqa xmm1, xmm3
pclmulqdq xmm1, xmmword [0x14015bfa0], 0x10
por xmm7, xmm0
movdqa xmm0, xmm6
movdqa xmm6, xmm3
pclmulqdq xmm6, xmmword [0x14015bfa0], 1
xorps xmm6, xmm0
xorps xmm6, xmm1
jmp 0x1400faad5
xorps xmm10, xmm10
mov eax, r9d
sub r9d, 0x40
movdqa xmmword [rsp + 0x20], xmm10
js 0x1400fabb0
movdqa xmm5, xmmword [0x14015bfa0]
mov ecx, eax
shr rcx, 6
mov eax, ecx
neg eax
shl eax, 6
add r9d, eax
nop dword [rax]
nop word [rax + rax]
movdqu xmm1, xmmword [r10]
movdqa xmm0, xmm8
movdqu xmm2, xmmword [r10 + 0x10]
movdqu xmm3, xmmword [r10 + 0x20]
movdqu xmm4, xmmword [r10 + 0x30]
add r10, 0x40
pclmulqdq xmm0, xmm5, 1
pclmulqdq xmm8, xmm5, 0x10
xorps xmm8, xmm0
movdqa xmm0, xmm9
pclmulqdq xmm0, xmm5, 1
pclmulqdq xmm9, xmm5, 0x10
xorps xmm9, xmm0
pxor xmm8, xmm1
movdqa xmm0, xmm7
pxor xmm9, xmm2
pclmulqdq xmm0, xmm5, 1
pclmulqdq xmm7, xmm5, 0x10
xorps xmm7, xmm0
movdqa xmm0, xmm6
pclmulqdq xmm6, xmm5, 0x10
pclmulqdq xmm0, xmm5, 1
movdqu xmmword [rbx], xmm1
movdqu xmmword [rbx + 0x10], xmm2
movdqu xmmword [rbx + 0x20], xmm3
movdqu xmmword [rbx + 0x30], xmm4
add rbx, 0x40
xorps xmm6, xmm0
pxor xmm7, xmm3
pxor xmm6, xmm4
sub rcx, 1
jne 0x1400fab10
lea eax, [r9 + 0x10]
test eax, eax
js 0x1400fac4f
movdqa xmm0, xmmword [0x14015bfa0]
movdqa xmm1, xmm6
movdqu xmm2, xmmword [r10]
movdqa xmm6, xmm7
movdqu xmm3, xmmword [r10 + 0x10]
movdqu xmm4, xmmword [r10 + 0x20]
pclmulqdq xmm7, xmm0, 1
pclmulqdq xmm6, xmm0, 0x10
xorps xmm6, xmm7
movdqa xmm7, xmm9
pclmulqdq xmm9, xmm0, 1
pclmulqdq xmm7, xmm0, 0x10
xorps xmm7, xmm9
pxor xmm6, xmm4
movdqa xmm9, xmm8
pxor xmm7, xmm3
pclmulqdq xmm9, xmm0, 0x10
pclmulqdq xmm8, xmm0, 1
xorps xmm9, xmm8
movdqa xmm8, xmm1
pxor xmm9, xmm2
movdqu xmmword [rbx], xmm2
movdqu xmmword [rbx + 0x10], xmm3
movdqu xmmword [rbx + 0x20], xmm4
je 0x1400fadef
add rbx, 0x30
movsxd rdi, eax
lea rdx, [r10 + 0x30]
jmp 0x1400fad34
lea eax, [r9 + 0x20]
test eax, eax
js 0x1400faccc
movdqa xmm0, xmmword [0x14015bfa0]
movdqa xmm2, xmm6
movdqu xmm3, xmmword [r10]
movdqa xmm1, xmm7
movdqu xmm4, xmmword [r10 + 0x10]
movdqa xmm6, xmm9
movdqa xmm7, xmm8
pclmulqdq xmm6, xmm0, 0x10
pclmulqdq xmm7, xmm0, 0x10
pclmulqdq xmm9, xmm0, 1
pclmulqdq xmm8, xmm0, 1
xorps xmm6, xmm9
xorps xmm7, xmm8
pxor xmm7, xmm3
pxor xmm6, xmm4
movdqa xmm8, xmm1
movdqa xmm9, xmm2
movdqu xmmword [rbx], xmm3
movdqu xmmword [rbx + 0x10], xmm4
je 0x1400fadef
add rbx, 0x20
movsxd rdi, eax
lea rdx, [r10 + 0x20]
jmp 0x1400fad34
lea eax, [r9 + 0x30]
test eax, eax
js 0x1400fad24
movdqu xmm2, xmmword [r10]
movdqa xmm1, xmm6
movdqa xmm6, xmm8
pclmulqdq xmm6, xmmword [0x14015bfa0], 0x10
pclmulqdq xmm8, xmmword [0x14015bfa0], 1
xorps xmm6, xmm8
movdqa xmm8, xmm9
movdqa xmm9, xmm7
pxor xmm6, xmm2
movdqa xmm7, xmm1
movdqu xmmword [rbx], xmm2
je 0x1400fadef
add rbx, 0x10
movsxd rdi, eax
lea rdx, [r10 + 0x10]
jmp 0x1400fad34
add r9d, 0x40
je 0x1400fadef
movsxd rdi, r9d
mov rdx, r10
mov r8, rdi
lea rcx, [rsp + 0x20]
call sub.VCRUNTIME140.dll_memcpy
movdqa xmm10, xmmword [rsp + 0x20]
movdqa xmmword [rsp + 0x20], xmm10
mov r8, rdi
lea rdx, [rsp + 0x20]
mov rcx, rbx
call sub.VCRUNTIME140.dll_memcpy
movdqa xmm2, xmmword [0x14015bfb0]
movdqa xmm0, xmm9
movdqa xmm3, xmm8
add rdi, rdi
movdqu xmm1, xmmword [rbp + rdi*8 - 0x10]
pshufb xmm0, xmm1
pxor xmm2, xmm1
pshufb xmm10, xmm1
pshufb xmm3, xmm1
pshufb xmm8, xmm2
pshufb xmm9, xmm2
por xmm8, xmm0
movdqa xmm0, xmm7
pshufb xmm0, xmm1
pshufb xmm7, xmm2
por xmm9, xmm0
movdqa xmm0, xmm6
pshufb xmm6, xmm2
pshufb xmm0, xmm1
por xmm6, xmm10
movdqa xmm1, xmm3
pclmulqdq xmm1, xmmword [0x14015bfa0], 0x10
por xmm7, xmm0
movdqa xmm0, xmm6
movdqa xmm6, xmm3
pclmulqdq xmm6, xmmword [0x14015bfa0], 1
xorps xmm6, xmm0
xorps xmm6, xmm1
movdqu xmmword [rsi + 0xa4], xmm8
movdqu xmmword [rsi + 0xb4], xmm9
movdqu xmmword [rsi + 0xc4], xmm7
movdqu xmmword [rsi + 0xd4], xmm6
movdqu xmmword [rsi + 0xe4], xmm10
mov rcx, qword [rsp + 0x30]
xor rcx, rsp
call fcn.1401562c0
movaps xmm6, xmmword [rsp + 0x80]
movaps xmm7, xmmword [rsp + 0x70]
movaps xmm8, xmmword [rsp + 0x60]
movaps xmm9, xmmword [rsp + 0x50]
movaps xmm10, xmmword [rsp + 0x40]
add rsp, 0x98
pop rdi
pop rsi
pop rbp
pop rbx
ret