Function at 0x14009ac50
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xd8
movdqa xmmword [rsp + 0xc0], xmm13
movdqa xmmword [rsp + 0xb0], xmm12
movdqa xmmword [rsp + 0xa0], xmm11
movdqa xmmword [rsp + 0x90], xmm10
movdqa xmmword [rsp + 0x80], xmm9
movdqa xmmword [rsp + 0x70], xmm8
movdqa xmmword [rsp + 0x60], xmm7
movdqa xmmword [rsp + 0x50], xmm6
mov rsi, r8
mov rdi, rdx
mov rbx, rcx
mov r15d, dword [rsp + 0x140]
movzx r14d, r15w
movabs rax, 0x1000000000000
xor edx, edx
div r14
mov r13, rax
mov qword [rsp + 0x30], r9
lea ebp, [r9 + r9]
mov edx, 4
mov rcx, rbp
xor r8d, r8d
call fcn.140042eb0
mov r12, rax
test ebp, ebp
je 0x14009ad01
lea r8, [rbp*4]
mov rcx, r12
xor edx, edx
call fcn.1400ba5e0
mov qword [rsp + 0x20], rbp
mov qword [rsp + 0x48], rbx
mov r11, qword [rsp + 0x30]
mov r10d, r11d
test r11d, r11d
je 0x14009afc3
lea r9, [r10 - 1]
lea rax, [rsi + r10*2]
mov qword [rsp + 0x38], rax
mov r8d, r10d
and r8d, 0xfffffffc
movq xmm0, r13
pshufd xmm13, xmm0, 0x44
movd xmm1, r14d
pshufd xmm4, xmm1, 0
movd xmm1, r15d
pshufd xmm11, xmm1, 0
xor ecx, ecx
pxor xmm12, xmm12
movdqa xmm3, xmm13
psrlq xmm3, 0x20
pshuflw xmm4, xmm4, 0xe8
pshufhw xmm4, xmm4, 0xe8
pshufd xmm4, xmm4, 0xe8
pcmpeqd xmm8, xmm8
movdqa xmm9, xmmword [0x1400f8780]
movdqa xmm10, xmmword [0x1400f8790]
mov qword [rsp + 0x40], r9
nop dword [rax]
cmp r11d, 4
jb 0x14009af50
mov edx, ecx
add edx, r9d
jb 0x14009af50
mov rdx, r9
shr rdx, 0x20
mov edx, 0
jne 0x14009af60
lea rax, [rcx + r10]
lea rbp, [rdi + rcx*2]
lea r11, [rdi + rcx*2]
add r11, 2
lea rdx, [r12 + rcx*4]
lea rbx, [r12 + rax*4]
cmp rbx, rbp
seta al
cmp rdx, r11
setb r9b
cmp rbx, rsi
seta r11b
cmp rdx, qword [rsp + 0x38]
setb bpl
test al, r9b
jne 0x14009afb5
mov edx, 0
and r11b, bpl
mov r11, qword [rsp + 0x30]
mov r9, qword [rsp + 0x40]
jne 0x14009af60
movzx edx, word [rdi + rcx*2]
movd xmm5, edx
pshuflw xmm5, xmm5, 0
punpcklwd xmm5, xmm12
xor edx, edx
nop word cs:[rax + rax]
nop dword [rax + rax]
movq xmm6, qword [rsi + rdx*2]
lea ebp, [rcx + rdx]
pshuflw xmm7, xmm5, 0xe8
pshufhw xmm7, xmm7, 0xe8
pshufd xmm7, xmm7, 0xe8
movdqu xmm1, xmmword [r12 + rbp*4]
movdqa xmm2, xmm6
pmulhuw xmm2, xmm7
pmullw xmm6, xmm7
punpcklwd xmm6, xmm2
paddd xmm6, xmm1
movdqa xmm1, xmm6
punpckhdq xmm1, xmm12
movdqa xmm2, xmm6
punpckldq xmm2, xmm12
movdqa xmm7, xmm13
pmuludq xmm7, xmm2
pmuludq xmm2, xmm3
psllq xmm2, 0x20
movdqa xmm0, xmm13
pmuludq xmm0, xmm1
pmuludq xmm1, xmm3
paddq xmm2, xmm7
psllq xmm1, 0x20
paddq xmm1, xmm0
movdqa xmm0, xmm1
psrad xmm0, 0x1f
pshufd xmm0, xmm0, 0xed
psrad xmm1, 0x10
pshufd xmm1, xmm1, 0xed
movdqa xmm7, xmm2
psrad xmm7, 0x1f
punpckldq xmm1, xmm0
pshufd xmm0, xmm7, 0xed
psrad xmm2, 0x10
pshufd xmm2, xmm2, 0xed
punpckldq xmm2, xmm0
packssdw xmm2, xmm1
packssdw xmm2, xmm2
movdqa xmm0, xmm4
pmulhuw xmm0, xmm2
pmullw xmm2, xmm4
punpcklwd xmm2, xmm0
psubd xmm6, xmm2
movdqa xmm0, xmm6
pxor xmm0, xmm8
paddd xmm0, xmm11
psrld xmm0, 0xf
pand xmm0, xmm9
packuswb xmm0, xmm0
pmullw xmm0, xmm4
pshuflw xmm1, xmm0, 0xf6
pshuflw xmm0, xmm0, 0xd4
punpcklqdq xmm0, xmm1
psubd xmm6, xmm0
pand xmm6, xmm10
movdqu xmmword [r12 + rbp*4], xmm6
add rdx, 4
cmp r8, rdx
jne 0x14009ae30
mov rdx, r8
cmp r8, r10
jne 0x14009af60
jmp 0x14009afa6
xor edx, edx
nop word cs:[rax + rax]
nop dword [rax]
lea ebp, [rcx + rdx]
movzx eax, word [rdi + rcx*2]
movzx ebx, word [rsi + rdx*2]
imul ebx, eax
add ebx, dword [r12 + rbp*4]
mov rax, r13
imul rax, rbx
shr rax, 0x30
imul eax, r14d
sub ebx, eax
mov eax, ebx
not eax
add eax, r15d
shr eax, 0xf
and eax, 1
imul eax, r14d
sub ebx, eax
movzx eax, bx
mov dword [r12 + rbp*4], eax
add rdx, 1
cmp r10, rdx
jne 0x14009af60
add rcx, 1
cmp rcx, r10
jne 0x14009ad90
jmp 0x14009afc3
xor edx, edx
mov r11, qword [rsp + 0x30]
mov r9, qword [rsp + 0x40]
jmp 0x14009af60
mov rdi, qword [rsp + 0x20]
lea ecx, [rdi - 1]
cmp ecx, r11d
jb 0x14009b298
mov eax, r11d
neg eax
mov ebx, 1
sub ebx, edi
cmp eax, ebx
cmova ebx, eax
mov esi, 1
add ebx, edi
cmp ebx, 4
jb 0x14009b261
lea edx, [rdi - 2]
lea r8d, [r11 - 1]
xor r9d, r9d
mov ebp, edx
sub ebp, r8d
cmovb ebp, r9d
cmp ebp, r8d
ja 0x14009b261
cmp ebp, r11d
ja 0x14009b261
cmp ebp, ecx
ja 0x14009b261
mov dword [rsp + 0x40], ebx
lea r9, [r12 + r8*4]
shl rbp, 2
mov rsi, r9
sub rsi, rbp
cmp rsi, r9
ja 0x14009b25c
lea r9, [r12 + r10*4]
mov rsi, r9
sub rsi, rbp
cmp rsi, r9
ja 0x14009b25c
shl rdx, 2
or rdx, 4
add rdx, r12
mov rdi, rdx
sub rdi, rbp
cmp rdi, rdx
ja 0x14009b257
lea rbp, [r8*4]
mov rdx, qword [rsp + 0x20]
lea esi, [rdx - 2]
xor r9d, r9d
lea rdi, [rsi*4]
lea rbx, [r12 + rsi*4]
add rbx, 8
sub esi, r8d
cmovb esi, r9d
shl rsi, 2
sub rbp, rsi
add rbp, r12
lea r8, [r12 + r8*4]
add r8, 4
lea r9, [r10*4]
sub r9, rsi
add r9, r12
lea rdx, [r12 + r10*4]
add rdx, 4
or rdi, 4
sub rdi, rsi
add rdi, r12
cmp rbp, rdx
setb byte [rsp + 0x38]
cmp r9, r8
setb byte [rsp + 0x2c]
cmp rbp, rbx
setb sil
cmp rdi, r8
setb bpl
cmp r9, rbx
setb r8b
cmp rdi, rdx
setb r9b
mov dl, byte [rsp + 0x2c]
test byte [rsp + 0x38], dl
jne 0x14009b257
and sil, bpl
jne 0x14009b257
and r8b, r9b
jne 0x14009b257
mov edx, dword [rsp + 0x40]
and edx, 0xfffffffc
mov qword [rsp + 0x38], rdx
add edx, 0xfffffffc
mov esi, edx
shr esi, 2
add esi, 1
test edx, edx
mov rdx, qword [rsp + 0x20]
mov dword [rsp + 0x2c], esi
je 0x14009b4be
and esi, 0xfffffffe
lea edi, [rdx - 5]
xor r11d, r11d
pxor xmm0, xmm0
mov rbx, qword [rsp + 0x30]
nop dword [rax]
lea r8d, [rdi + 4]
movdqu xmm1, xmmword [r12 + r8*4 - 0xc]
lea r9d, [rbx - 1]
movdqu xmm2, xmmword [r12 + r9*4 - 0xc]
paddd xmm2, xmm1
movdqu xmmword [r12 + r9*4 - 0xc], xmm2
movdqu xmm1, xmmword [r12 + r8*4 - 0xc]
mov edx, ebx
movdqu xmm2, xmmword [r12 + rdx*4 - 0xc]
paddd xmm2, xmm1
movdqu xmmword [r12 + rdx*4 - 0xc], xmm2
movdqu xmmword [r12 + r8*4 - 0xc], xmm0
mov edx, edi
movdqu xmm1, xmmword [r12 + rdx*4 - 0xc]
lea ebp, [rbx - 5]
movdqu xmm2, xmmword [r12 + rbp*4 - 0xc]
paddd xmm2, xmm1
movdqu xmmword [r12 + rbp*4 - 0xc], xmm2
movdqu xmm1, xmmword [r12 + rdx*4 - 0xc]
lea ebp, [rbx - 4]
movdqu xmm2, xmmword [r12 + rbp*4 - 0xc]
paddd xmm2, xmm1
movdqu xmmword [r12 + rbp*4 - 0xc], xmm2
movdqu xmmword [r12 + rdx*4 - 0xc], xmm0
add r11d, 8
add ebx, 0xfffffff8
add edi, 0xfffffff8
add esi, 0xfffffffe
jne 0x14009b150
test byte [rsp + 0x2c], 1
je 0x14009b239
mov ebp, ecx
sub ebp, r11d
movdqu xmm0, xmmword [r12 + rbp*4 - 0xc]
mov edx, ebp
sub edx, dword [rsp + 0x30]
movdqu xmm1, xmmword [r12 + rdx*4 - 0xc]
paddd xmm1, xmm0
movdqu xmmword [r12 + rdx*4 - 0xc], xmm1
movdqu xmm0, xmmword [r12 + rbp*4 - 0xc]
add edx, 1
movdqu xmm1, xmmword [r12 + rdx*4 - 0xc]
paddd xmm1, xmm0
movdqu xmmword [r12 + rdx*4 - 0xc], xmm1
pxor xmm0, xmm0
movdqu xmmword [r12 + rbp*4 - 0xc], xmm0
mov rdx, qword [rsp + 0x38]
cmp dword [rsp + 0x40], edx
mov rdi, qword [rsp + 0x20]
mov r11, qword [rsp + 0x30]
mov esi, 1
je 0x14009b298
sub ecx, edx
jmp 0x14009b261
mov rdi, qword [rsp + 0x20]
mov esi, 1
sub esi, r11d
nop word cs:[rax + rax]
nop
mov edx, ecx
mov ebp, dword [r12 + rdx*4]
lea ebx, [rax + rcx]
add dword [r12 + rbx*4], ebp
mov ebp, dword [r12 + rdx*4]
lea ebx, [rsi + rcx]
add dword [r12 + rbx*4], ebp
mov dword [r12 + rdx*4], 0
add ecx, 0xffffffff
cmp ecx, r11d
jae 0x14009b270
cmp r11d, 4
jae 0x14009b2aa
xor ecx, ecx
mov rbp, qword [rsp + 0x48]
jmp 0x14009b420
lea rax, [r12 + r10*4]
mov rbp, qword [rsp + 0x48]
cmp rax, rbp
jbe 0x14009b2cf
lea rax, [r10*2]
add rax, rbp
cmp r12, rax
jae 0x14009b2cf
xor ecx, ecx
jmp 0x14009b420
mov ecx, r10d
and ecx, 0xfffffffc
movq xmm0, r13
pshufd xmm2, xmm0, 0x44
movd xmm1, r14d
pshufd xmm4, xmm1, 0
movd xmm1, r15d
pshufd xmm10, xmm1, 0
lea rdx, [r10 + r10]
and rdx, 0xfffffffffffffff8
xor edi, edi
pxor xmm1, xmm1
movdqa xmm3, xmm2
psrlq xmm3, 0x20
pshuflw xmm4, xmm4, 0xe8
pshufhw xmm4, xmm4, 0xe8
pshufd xmm4, xmm4, 0xe8
pcmpeqd xmm8, xmm8
movdqa xmm9, xmmword [0x1400f8780]
nop dword [rax + rax]
movdqu xmm6, xmmword [r12 + rdi*2]
movdqa xmm7, xmm6
punpckhdq xmm7, xmm1
movdqa xmm5, xmm6
punpckldq xmm5, xmm1
movdqa xmm0, xmm2
pmuludq xmm0, xmm5
pmuludq xmm5, xmm3
psllq xmm5, 0x20
paddq xmm5, xmm0
movdqa xmm0, xmm2
pmuludq xmm0, xmm7
pmuludq xmm7, xmm3
psllq xmm7, 0x20
paddq xmm7, xmm0
movdqa xmm0, xmm7
psrad xmm0, 0x1f
pshufd xmm0, xmm0, 0xed
psrad xmm7, 0x10
pshufd xmm7, xmm7, 0xed
punpckldq xmm7, xmm0
movdqa xmm0, xmm5
psrad xmm0, 0x1f
pshufd xmm0, xmm0, 0xed
psrad xmm5, 0x10
pshufd xmm5, xmm5, 0xed
punpckldq xmm5, xmm0
packssdw xmm5, xmm7
packssdw xmm5, xmm5
movdqa xmm0, xmm4
pmulhuw xmm0, xmm5
pmullw xmm5, xmm4
punpcklwd xmm5, xmm0
psubd xmm6, xmm5
movdqa xmm0, xmm6
pxor xmm0, xmm8
paddd xmm0, xmm10
psrld xmm0, 0xf
pand xmm0, xmm9
packuswb xmm0, xmm0
pmullw xmm0, xmm4
punpcklwd xmm0, xmm1
psubd xmm6, xmm0
pshuflw xmm0, xmm6, 0xe8
pshufhw xmm0, xmm0, 0xe8
pshufd xmm0, xmm0, 0xe8
movq qword [rbp + rdi], xmm0
add rdi, 8
cmp rdx, rdi
jne 0x14009b330
cmp rcx, r10
mov rdi, qword [rsp + 0x20]
je 0x14009b456
nop dword [rax + rax]
mov eax, dword [r12 + rcx*4]
mov rdx, rax
imul rdx, r13
shr rdx, 0x30
imul edx, r14d
sub eax, edx
mov edx, eax
not edx
add edx, r15d
shr edx, 0xf
and edx, 1
imul edx, r14d
sub eax, edx
mov word [rbp + rcx*2], ax
add rcx, 1
cmp r10, rcx
jne 0x14009b420
lea rdx, [rdi*4]
mov rcx, r12
call fcn.1400778a0
mov rcx, r12
movaps xmm6, xmmword [rsp + 0x50]
movaps xmm7, xmmword [rsp + 0x60]
movaps xmm8, xmmword [rsp + 0x70]
movaps xmm9, xmmword [rsp + 0x80]
movaps xmm10, xmmword [rsp + 0x90]
movaps xmm11, xmmword [rsp + 0xa0]
movaps xmm12, xmmword [rsp + 0xb0]
movaps xmm13, xmmword [rsp + 0xc0]
add rsp, 0xd8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.140042f50
xor r11d, r11d
test byte [rsp + 0x2c], 1
jne 0x14009b1ee
jmp 0x14009b239