Function at 0x1400cf790
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
mov rax, qword [rsp + 0xc0]
movq xmm0, qword [rax]
mov rsi, rdx
pshufd xmm3, xmm0, 0xe5
mov r14, r9
mov dword [rsp + 0xb0], r8d
mov eax, dword [rsp + 0xb0]
mov edx, dword [rsp + 0xc8]
movd ebx, xmm3
mov qword [rsp + 0xa0], rcx
movd r8d, xmm0
movd ecx, xmm3
movd r13d, xmm0
sub eax, 8
mov dword [rsp + 0x30], eax
test edx, edx
je 0x1400cf958
test eax, eax
js 0x1400cf911
shr eax, 3
mov rbx, qword [rsp + 0xa0]
lea rbp, [rsp + 0x48]
mov r15d, eax
lea eax, [rax + 1]
lea r13, [rax*8]
lea rdi, [rsi + r13]
movq xmm1, qword [rbx]
mov rdx, r14
mov rcx, rbp
add rsi, 8
mov r8d, 1
add rbx, 8
pxor xmm0, xmm1
movq qword [rsp + 0x48], xmm0
call fcn.1400ccdf0
movq xmm0, qword [rsp + 0x48]
mov edx, dword [rsp + 0x48]
pshufd xmm2, xmm0, 0xe5
movd eax, xmm2
movd ecx, xmm2
mov r10d, edx
movd r12d, xmm2
shr eax, 0x18
movd r11d, xmm2
mov r9d, edx
shr r12d, 0x10
movzx eax, al
shr r11d, 8
mov r8d, edx
movzx r12d, r12b
shl rax, 8
movzx r11d, r11b
movzx edx, dl
shr r10d, 0x18
or rax, r12
shr r9d, 0x10
shl rax, 8
movzx r10d, r10b
movzx r9d, r9b
shr r8d, 8
or rax, r11
movzx r11d, cl
movzx r8d, r8b
shl rax, 8
or rax, r11
shl rax, 8
or rax, r10
shl rax, 8
or rax, r9
shl rax, 8
or rax, r8
shl rax, 8
or rax, rdx
mov qword [rsi - 8], rax
cmp rdi, rsi
jne 0x1400cf820
mov eax, dword [rsp + 0xb0]
neg r15d
movd r8d, xmm0
add qword [rsp + 0xa0], r13
shl r15d, 3
lea eax, [rax + r15 - 0x10]
add r15d, dword [rsp + 0x30]
mov dword [rsp + 0xb0], r15d
mov r9d, ecx
cmp eax, 0xfffffff8
je 0x1400cfc70
movsxd rax, dword [rsp + 0xb0]
add rax, qword [rsp + 0xa0]
cmp dword [rsp + 0xb0], 7
ja case.0x1400cf950.0
mov edx, dword [rsp + 0xb0]
lea r10, [0x1403849e0]
movsxd rdx, dword [r10 + rdx*4]
add rdx, r10
jmp rdx
test eax, eax
js 0x1400cfca8
shr eax, 3
mov rdi, qword [rsp + 0xa0]
lea rbp, [rsp + 0x48]
mov dword [rsp + 0x34], eax
add eax, 1
shl rax, 3
mov qword [rsp + 0x38], rax
add rax, rsi
mov qword [rsp + 0x28], rax
nop dword [rax + rax]
mov r15d, ebx
mov r12d, r13d
mov ebx, dword [rdi + 4]
mov r13d, dword [rdi]
xor r8d, r8d
mov rdx, r14
mov rcx, rbp
add rsi, 8
mov dword [rsp + 0x48], r13d
add rdi, 8
mov dword [rsp + 0x4c], ebx
call fcn.1400ccdf0
mov ecx, dword [rsp + 0x4c]
mov edx, dword [rsp + 0x48]
xor ecx, r15d
xor edx, r12d
mov eax, ecx
mov r15d, ecx
mov r11d, ecx
mov r10d, edx
shr eax, 0x18
shr r15d, 0x10
movzx ecx, cl
mov r9d, edx
movzx eax, al
movzx r15d, r15b
shr r11d, 8
mov r8d, edx
shl rax, 8
movzx r11d, r11b
shr r10d, 0x18
movzx edx, dl
shr r9d, 0x10
or rax, r15
shr r8d, 8
shl rax, 8
or rax, r11
shl rax, 8
or rax, rcx
movzx ecx, r10b
shl rax, 8
or rax, rcx
movzx ecx, r9b
shl rax, 8
or rax, rcx
movzx ecx, r8b
shl rax, 8
or rax, rcx
shl rax, 8
or rax, rdx
mov qword [rsi - 8], rax
cmp qword [rsp + 0x28], rsi
jne 0x1400cf990
mov rax, qword [rsp + 0x38]
add qword [rsp + 0xa0], rax
mov eax, dword [rsp + 0x34]
mov edi, dword [rsp + 0xb0]
neg eax
shl eax, 3
lea edx, [rdi + rax - 0x10]
add eax, dword [rsp + 0x30]
mov dword [rsp + 0xb0], eax
cmp edx, 0xfffffff8
je 0x1400cfb27
mov rax, qword [rsp + 0xa0]
xor r8d, r8d
mov rdx, r14
lea rcx, [rsp + 0x48]
mov edi, dword [rax]
mov ebp, dword [rax + 4]
mov dword [rsp + 0x48], edi
mov dword [rsp + 0x4c], ebp
call fcn.1400ccdf0
xor r13d, dword [rsp + 0x48]
xor ebx, dword [rsp + 0x4c]
movsxd rdx, dword [rsp + 0xb0]
add rdx, rsi
cmp dword [rsp + 0xb0], 7
ja case.0x1400cfadf.0
mov eax, dword [rsp + 0xb0]
lea rcx, [0x140384a00]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
mov eax, ebx
sub rdx, 1
shr eax, 0x10
mov byte [rdx], al
mov byte [rdx - 1], bh
sub rdx, 1
mov byte [rdx - 1], bl
lea rax, [rdx - 1]
mov ecx, r13d
lea rdx, [rax - 1]
shr ecx, 0x18
mov byte [rax - 1], cl
mov ecx, r13d
lea rax, [rdx - 1]
shr ecx, 0x10
mov byte [rdx - 1], cl
mov ebx, r13d
lea rdx, [rax - 1]
mov byte [rax - 1], bh
mov byte [rdx - 1], r13b
mov ebx, ebp
mov r13d, edi
mov eax, r13d
mov ecx, ebx
mov edx, r13d
movzx r9d, r13b
movzx eax, ah
shr r13d, 0x18
movzx r11d, bl
movzx edi, bh
shr ecx, 0x10
mov r10d, eax
shr edx, 0x10
mov eax, r13d
mov r8d, ecx
shr ebx, 0x18
movzx ebx, bl
movzx ecx, r8b
movzx edi, dil
movzx eax, al
shl rbx, 8
movzx edx, dl
movzx r10d, r10b
or rbx, rcx
shl rbx, 8
or rbx, rdi
shl rbx, 8
or rbx, r11
shl rbx, 8
or rbx, rax
mov rax, qword [rsp + 0xc0]
shl rbx, 8
or rbx, rdx
shl rbx, 8
or rbx, r10
shl rbx, 8
or rbx, r9
mov qword [rax], rbx
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor r9d, r9d
movzx edx, byte [rax - 1]
sub rax, 1
shl edx, 8
or edx, r9d
movzx r9d, byte [rax - 1]
lea r10, [rax - 1]
or r9d, edx
xor r9d, ecx
lea rax, [r10 - 1]
movzx r10d, byte [r10 - 1]
shl r10d, 0x18
movzx ecx, byte [rax - 1]
lea rdx, [rax - 1]
shl ecx, 0x10
or ecx, r10d
lea rax, [rdx - 1]
movzx edx, byte [rdx - 1]
shl edx, 8
or edx, ecx
movzx eax, byte [rax - 1]
movd xmm4, r9d
or eax, edx
xor eax, r8d
movd xmm0, eax
punpckldq xmm0, xmm4
lea rcx, [rsp + 0x48]
mov r8d, 1
mov rdx, r14
movq qword [rsp + 0x48], xmm0
call fcn.1400ccdf0
mov ebx, dword [rsp + 0x4c]
mov eax, dword [rsp + 0x48]
mov ecx, ebx
movzx edi, ah
mov edx, eax
movzx r9d, al
shr ecx, 0x10
mov r10d, edi
movzx r11d, bl
movzx edi, bh
shr edx, 0x10
mov r8d, ecx
mov rcx, qword [rsp + 0x48]
shr eax, 0x18
shr ebx, 0x18
mov qword [rsi], rcx
jmp 0x1400cfb53
mov eax, r8d
mov edx, r8d
movzx r9d, r8b
shr r8d, 0x18
movzx eax, ah
movzx r11d, cl
movzx edi, ch
shr edx, 0x10
mov r10d, eax
mov eax, r8d
mov r8d, ecx
shr ecx, 0x18
shr r8d, 0x10
mov ebx, ecx
jmp 0x1400cfb53
mov edx, eax
jmp 0x1400cfa7a
xor edx, edx
jmp 0x1400cfc00
mov rdx, rax
xor ecx, ecx
jmp 0x1400cfbf3
xor r10d, r10d
jmp 0x1400cfbe5
mov r10, rax
jmp 0x1400cfbd8
xor edx, edx
jmp 0x1400cfbc9
movzx r9d, byte [rax - 1]
sub rax, 1
shl r9d, 0x10
jmp 0x1400cfbbb
mov rax, rdx
jmp 0x1400cfb14
mov rax, rdx
jmp 0x1400cfafa
mov ebx, ebp
mov r13d, edi
jmp 0x1400cfb27