Function at 0x14015de90
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
mov dword [rax + 0x18], r8d
mov dword [rax + 0x10], edx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x70
mov qword [rax - 0x70], 0xfffffffffffffffe
mov qword [rax + 8], rbx
movaps xmmword [rax - 0x48], xmm6
movaps xmmword [rax - 0x58], xmm7
movaps xmmword [rax - 0x68], xmm8
mov rsi, r9
mov r14d, ecx
xor edi, edi
test r9, r9
je 0x14015e818
test ecx, ecx
jle 0x14015e818
test edx, edx
jle 0x14015e818
test r8d, r8d
jle 0x14015e818
lea ebp, [rdx*4]
mov dword [rsp + 0x28], ebp
mov eax, ebp
imul eax, r8d
mov dword [rsp + 0x20], eax
lea ebx, [rcx + rcx]
lea eax, [rbx + 1]
mov dword [rsp + 0xc8], eax
movsxd r12, eax
mov eax, 8
mul r12
mov rcx, 0xffffffffffffffff
cmovo rax, rcx
mov rcx, rax
call fcn.140172464
mov r13, rax
mov qword [rsp + 0x30], rax
movsxd r8, ebx
add r8, 8
xor edx, edx
mov rcx, rax
call fcn.140289490
mov eax, dword [0x1403da210]
test al, 1
jne 0x14015df72
or eax, 1
mov dword [0x1403da210], eax
movsd xmm0, qword [0x140327970]
call fcn.1402a7f80
movaps xmm6, xmm0
movsd qword [0x1403da208], xmm0
jmp 0x14015df7a
movsd xmm6, qword [0x1403da208]
movd xmm0, r14d
cvtdq2pd xmm0, xmm0
divsd xmm0, qword [0x140304360]
movaps xmm7, xmm0
addsd xmm7, xmm0
mulsd xmm7, xmm0
mulsd xmm6, xmm0
mov r15d, r14d
neg r15d
mov dword [rsp + 0x24], r15d
mov ebx, r15d
cmp r15d, r14d
jg 0x14015dff2
mov rbp, r13
movsd xmm8, qword [0x140352470]
nop dword [rax]
mov eax, ebx
imul eax, ebx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
divsd xmm0, xmm7
xorps xmm0, xmm8
call fcn.1402a8050
divsd xmm0, xmm6
movsd qword [rbp], xmm0
inc ebx
lea rbp, [rbp + 8]
cmp ebx, r14d
jle 0x14015dfc0
mov ebp, dword [rsp + 0x28]
xorps xmm2, xmm2
mov rcx, rdi
cmp r12, 4
jl 0x14015e03d
lea rax, [r13 + 0x10]
lea rdx, [r12 - 4]
shr rdx, 2
inc rdx
lea rcx, [rdx*4]
nop word [rax + rax]
addsd xmm2, qword [rax - 0x10]
addsd xmm2, qword [rax - 8]
addsd xmm2, qword [rax]
addsd xmm2, qword [rax + 8]
add rax, 0x20
sub rdx, 1
jne 0x14015e020
cmp rcx, r12
jge 0x14015e051
addsd xmm2, qword [r13 + rcx*8]
inc rcx
cmp rcx, r12
jl 0x14015e042
unpcklpd xmm2, xmm2
movaps xmm3, xmm2
unpcklpd xmm3, xmm3
movaps xmm1, xmm2
subsd xmm1, qword [0x140352458]
andps xmm1, xmmword [0x1402ecd20]
movsd xmm0, qword [0x14030c0c0]
comisd xmm0, xmm1
jbe 0x14015e092
test r13, r13
je 0x14015e818
mov rcx, r13
call fcn.140171af0
jmp 0x14015e818
mov edx, edi
mov ecx, dword [rsp + 0xc8]
test ecx, ecx
jle 0x14015e0fe
cmp ecx, 8
jb 0x14015e0fe
mov eax, ecx
and eax, 0x80000007
jge 0x14015e0b4
dec eax
or eax, 0xfffffff8
inc eax
sub ecx, eax
movsxd r8, ecx
mov rcx, rdi
lea rax, [r13 + 0x20]
movups xmm0, xmmword [rax - 0x20]
divpd xmm0, xmm3
movups xmmword [rax - 0x20], xmm0
movups xmm0, xmmword [rax - 0x10]
divpd xmm0, xmm3
movups xmmword [rax - 0x10], xmm0
movups xmm1, xmmword [rax]
divpd xmm1, xmm3
movups xmmword [rax], xmm1
movups xmm0, xmmword [rax + 0x10]
divpd xmm0, xmm3
movups xmmword [rax + 0x10], xmm0
add edx, 8
add rcx, 8
lea rax, [rax + 0x40]
cmp rcx, r8
jl 0x14015e0c0
movsxd rcx, edx
cmp rcx, r12
jge 0x14015e16f
mov rax, r12
sub rax, rcx
cmp rax, 4
jl 0x14015e150
lea rax, [r13 + 0x10]
lea rax, [rax + rcx*8]
mov rdx, r12
sub rdx, rcx
sub rdx, 4
shr rdx, 2
inc rdx
lea rcx, [rcx + rdx*4]
nop
movups xmm0, xmmword [rax - 0x10]
divpd xmm0, xmm2
movups xmmword [rax - 0x10], xmm0
movups xmm0, xmmword [rax]
divpd xmm0, xmm2
movups xmmword [rax], xmm0
lea rax, [rax + 0x20]
sub rdx, 1
jne 0x14015e130
cmp rcx, r12
jge 0x14015e16f
movsd xmm0, qword [r13 + rcx*8]
divsd xmm0, xmm2
movsd qword [r13 + rcx*8], xmm0
inc rcx
cmp rcx, r12
jl 0x14015e155
mov eax, dword [rsp + 0x20]
lea r12, [rax + rax*2]
shl r12, 3
mov rcx, r12
call fcn.14016e170
mov rbx, rax
test rax, rax
je 0x14015e07c
mov r8, r12
xor edx, edx
mov rcx, rax
call fcn.140289490
mov ecx, edi
mov dword [rsp + 0x20], ecx
mov edx, edi
mov dword [rsp + 0xc8], edx
mov eax, dword [rsp + 0xb8]
mov r12d, edi
nop word [rax + rax]
mov r8, rdi
mov r10d, r15d
cmp r15d, r14d
jg 0x14015e503
mov eax, r14d
sub eax, r15d
inc eax
cmp eax, 4
jl 0x14015e433
mov r15d, dword [rsp + 0xb8]
dec r15d
mov eax, ecx
mov r9d, edx
imul r9d, ebp
shr rax, 2
lea rdx, [rax + rax*2]
lea ebp, [r12 + 2]
add ebp, r10d
lea r8, [r13 + 0x10]
mov eax, r14d
sub eax, r10d
sub eax, 3
shr eax, 2
inc eax
mov r11d, eax
lea r10d, [r10 + rax*4]
lea rax, [rax*4]
mov qword [rsp + 0x30], rax
nop word [rax + rax]
lea eax, [rbp - 2]
mov ecx, edi
test eax, eax
cmovns ecx, eax
mov eax, r15d
cmp ecx, r15d
cmovl eax, ecx
lea ecx, [r9 + rax*4]
shr rcx, 2
movzx eax, byte [rsi + rcx*4 + 2]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [r8 - 0x10]
addsd xmm0, qword [rbx + rdx*8]
movsd qword [rbx + rdx*8], xmm0
mov eax, dword [rsi + rcx*4]
shr eax, 8
movzx eax, al
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [r8 - 0x10]
addsd xmm0, qword [rbx + rdx*8 + 8]
movsd qword [rbx + rdx*8 + 8], xmm0
movzx eax, byte [rsi + rcx*4]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
mulsd xmm1, qword [r8 - 0x10]
addsd xmm1, qword [rbx + rdx*8 + 0x10]
movsd qword [rbx + rdx*8 + 0x10], xmm1
lea eax, [rbp - 1]
mov ecx, edi
test eax, eax
cmovns ecx, eax
mov eax, r15d
cmp ecx, r15d
cmovl eax, ecx
lea ecx, [r9 + rax*4]
shr rcx, 2
movzx eax, byte [rsi + rcx*4 + 2]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [r8 - 8]
addsd xmm0, qword [rbx + rdx*8]
movsd qword [rbx + rdx*8], xmm0
mov eax, dword [rsi + rcx*4]
shr eax, 8
movzx eax, al
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [r8 - 8]
addsd xmm0, qword [rbx + rdx*8 + 8]
movsd qword [rbx + rdx*8 + 8], xmm0
movzx eax, byte [rsi + rcx*4]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
mulsd xmm1, qword [r8 - 8]
addsd xmm1, qword [rbx + rdx*8 + 0x10]
movsd qword [rbx + rdx*8 + 0x10], xmm1
mov ecx, edi
test ebp, ebp
cmovns ecx, ebp
mov eax, r15d
cmp ecx, r15d
cmovl eax, ecx
lea ecx, [r9 + rax*4]
shr rcx, 2
movzx eax, byte [rsi + rcx*4 + 2]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [r8]
addsd xmm0, qword [rbx + rdx*8]
movsd qword [rbx + rdx*8], xmm0
mov eax, dword [rsi + rcx*4]
shr eax, 8
movzx eax, al
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [r8]
addsd xmm0, qword [rbx + rdx*8 + 8]
movsd qword [rbx + rdx*8 + 8], xmm0
movzx eax, byte [rsi + rcx*4]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
mulsd xmm1, qword [r8]
addsd xmm1, qword [rbx + rdx*8 + 0x10]
movsd qword [rbx + rdx*8 + 0x10], xmm1
lea eax, [rbp + 1]
mov ecx, edi
test eax, eax
cmovns ecx, eax
mov eax, r15d
cmp ecx, r15d
cmovl eax, ecx
lea ecx, [r9 + rax*4]
shr rcx, 2
movzx eax, byte [rsi + rcx*4 + 2]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [r8 + 8]
addsd xmm0, qword [rbx + rdx*8]
movsd qword [rbx + rdx*8], xmm0
mov eax, dword [rsi + rcx*4]
shr eax, 8
movzx eax, al
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [r8 + 8]
addsd xmm0, qword [rbx + rdx*8 + 8]
movsd qword [rbx + rdx*8 + 8], xmm0
movzx eax, byte [rsi + rcx*4]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
mulsd xmm1, qword [r8 + 8]
addsd xmm1, qword [rbx + rdx*8 + 0x10]
movsd qword [rbx + rdx*8 + 0x10], xmm1
add r8, 0x20
add ebp, 4
sub r11, 1
jne 0x14015e230
mov ebp, dword [rsp + 0x28]
mov ecx, dword [rsp + 0x20]
mov r8, qword [rsp + 0x30]
mov edx, dword [rsp + 0xc8]
cmp r10d, r14d
jg 0x14015e4fc
mov r11d, dword [rsp + 0xb8]
dec r11d
mov r15d, edx
imul r15d, ebp
mov eax, ecx
shr rax, 2
lea rdx, [rax + rax*2]
lea r9d, [r10 + r12]
lea r8, [r8*8]
add r8, r13
mov eax, r14d
sub eax, r10d
inc eax
movsxd r10, eax
mov ecx, edi
test r9d, r9d
cmovns ecx, r9d
mov eax, r11d
cmp ecx, r11d
cmovl eax, ecx
lea ecx, [r15 + rax*4]
shr rcx, 2
movzx eax, byte [rsi + rcx*4 + 2]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [r8]
addsd xmm0, qword [rbx + rdx*8]
movsd qword [rbx + rdx*8], xmm0
mov eax, dword [rsi + rcx*4]
shr eax, 8
movzx eax, al
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [r8]
addsd xmm0, qword [rbx + rdx*8 + 8]
movsd qword [rbx + rdx*8 + 8], xmm0
movzx eax, byte [rsi + rcx*4]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
mulsd xmm1, qword [r8]
addsd xmm1, qword [rbx + rdx*8 + 0x10]
movsd qword [rbx + rdx*8 + 0x10], xmm1
add r8, 8
inc r9d
sub r10, 1
jne 0x14015e472
mov ecx, dword [rsp + 0x20]
mov eax, dword [rsp + 0xb8]
add ecx, 4
mov dword [rsp + 0x20], ecx
inc r12d
cmp r12d, eax
mov r15d, dword [rsp + 0x24]
mov edx, dword [rsp + 0xc8]
jl 0x14015e1c0
inc edx
mov dword [rsp + 0xc8], edx
mov r8d, dword [rsp + 0xc0]
cmp edx, r8d
jl 0x14015e1b2
mov r15d, edi
mov dword [rsp + 0xc8], edi
movsd xmm6, qword [0x140319020]
nop
mov r12d, edi
mov eax, r15d
imul eax, ebp
mov dword [rsp + 0x20], eax
nop dword [rax]
lea r9d, [r12*4]
add eax, r9d
mov dword [rsp + 0x28], eax
xorps xmm3, xmm3
xorps xmm4, xmm4
xorps xmm5, xmm5
mov rcx, rdi
mov edx, dword [rsp + 0x24]
mov r10d, edx
cmp edx, r14d
jg 0x14015e78e
mov eax, r14d
sub eax, edx
inc eax
cmp eax, 4
jl 0x14015e718
lea edx, [r8 - 1]
lea r8d, [r10 + 2]
add r8d, r15d
lea r11, [r13 + 0x10]
mov eax, r14d
sub eax, r10d
sub eax, 3
shr eax, 2
inc eax
mov r15d, eax
lea r10d, [r10 + rax*4]
lea rax, [rax*4]
mov qword [rsp + 0x30], rax
nop dword [rax]
lea eax, [r8 - 2]
mov ecx, edi
test eax, eax
cmovns ecx, eax
movsd xmm2, qword [r11 - 0x10]
mov eax, edx
cmp ecx, edx
cmovl eax, ecx
imul eax, ebp
add eax, r9d
shr rax, 2
lea rcx, [rax + rax*2]
movaps xmm0, xmm2
mulsd xmm0, qword [rbx + rcx*8]
addsd xmm3, xmm0
movaps xmm1, xmm2
mulsd xmm1, qword [rbx + rcx*8 + 8]
addsd xmm4, xmm1
mulsd xmm2, qword [rbx + rcx*8 + 0x10]
addsd xmm5, xmm2
lea eax, [r8 - 1]
mov ecx, edi
test eax, eax
cmovns ecx, eax
movsd xmm2, qword [r11 - 8]
mov eax, edx
cmp ecx, edx
cmovl eax, ecx
imul eax, ebp
add eax, r9d
shr rax, 2
lea rcx, [rax + rax*2]
movaps xmm0, xmm2
mulsd xmm0, qword [rbx + rcx*8]
addsd xmm3, xmm0
movaps xmm1, xmm2
mulsd xmm1, qword [rbx + rcx*8 + 8]
addsd xmm4, xmm1
mulsd xmm2, qword [rbx + rcx*8 + 0x10]
addsd xmm5, xmm2
mov ecx, edi
test r8d, r8d
cmovns ecx, r8d
movsd xmm2, qword [r11]
mov eax, edx
cmp ecx, edx
cmovl eax, ecx
imul eax, ebp
add eax, r9d
shr rax, 2
lea rcx, [rax + rax*2]
movaps xmm0, xmm2
mulsd xmm0, qword [rbx + rcx*8]
addsd xmm3, xmm0
movaps xmm1, xmm2
mulsd xmm1, qword [rbx + rcx*8 + 8]
addsd xmm4, xmm1
mulsd xmm2, qword [rbx + rcx*8 + 0x10]
addsd xmm5, xmm2
lea eax, [r8 + 1]
mov ecx, edi
test eax, eax
cmovns ecx, eax
mov eax, edx
cmp ecx, edx
cmovl eax, ecx
imul eax, ebp
add eax, r9d
movsd xmm2, qword [r11 + 8]
shr rax, 2
lea rcx, [rax + rax*2]
movaps xmm0, xmm2
mulsd xmm0, qword [rbx + rcx*8]
addsd xmm3, xmm0
movaps xmm1, xmm2
mulsd xmm1, qword [rbx + rcx*8 + 8]
addsd xmm4, xmm1
mulsd xmm2, qword [rbx + rcx*8 + 0x10]
addsd xmm5, xmm2
add r11, 0x20
add r8d, 4
sub r15, 1
jne 0x14015e5d0
mov rcx, qword [rsp + 0x30]
mov r15d, dword [rsp + 0xc8]
mov r8d, dword [rsp + 0xc0]
cmp r10d, r14d
jg 0x14015e78e
lea r11d, [r8 - 1]
lea edx, [r10 + r15]
lea r8, [rcx*8]
add r8, r13
mov eax, r14d
sub eax, r10d
inc eax
movsxd r10, eax
mov eax, edi
test edx, edx
cmovns eax, edx
mov ecx, r11d
cmp eax, r11d
cmovl ecx, eax
imul ecx, ebp
lea eax, [r9 + rcx]
movsd xmm2, qword [r8]
shr rax, 2
lea rcx, [rax + rax*2]
movaps xmm0, xmm2
mulsd xmm0, qword [rbx + rcx*8]
addsd xmm3, xmm0
movaps xmm1, xmm2
mulsd xmm1, qword [rbx + rcx*8 + 8]
addsd xmm4, xmm1
mulsd xmm2, qword [rbx + rcx*8 + 0x10]
addsd xmm5, xmm2
add r8, 8
inc edx
sub r10, 1
jne 0x14015e73b
movaps xmm0, xmm6
minsd xmm0, xmm3
movaps xmm1, xmm6
minsd xmm1, xmm4
movaps xmm2, xmm6
minsd xmm2, xmm5
cvttsd2si eax, xmm0
movzx edx, al
shl edx, 8
cvttsd2si eax, xmm1
movzx ecx, al
or edx, ecx
shl edx, 8
cvttsd2si eax, xmm2
movzx ecx, al
or edx, ecx
mov eax, dword [rsp + 0x28]
shr rax, 2
mov dword [rsi + rax*4], edx
inc r12d
cmp r12d, dword [rsp + 0xb8]
mov eax, dword [rsp + 0x20]
mov r8d, dword [rsp + 0xc0]
jl 0x14015e560
inc r15d
mov dword [rsp + 0xc8], r15d
cmp r15d, r8d
jl 0x14015e550
mov edi, 1
test r13, r13
je 0x14015e810
mov rcx, r13
call fcn.140171af0
mov rcx, rbx
call fcn.14016e190
mov eax, edi
mov rbx, qword [rsp + 0xb0]
movaps xmm6, xmmword [rsp + 0x60]
movaps xmm7, xmmword [rsp + 0x50]
movaps xmm8, xmmword [rsp + 0x40]
add rsp, 0x70
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret