Function at 0x1400d9ce0
Capabilities:
Encode data using xor

Disassembly:
mov r11, rsp
push rdi
push r12
push r15
sub rsp, 0x50
sub rdx, rcx
movabs rax, 0x2aaaaaaaaaaaaaab
imul rdx
mov rdi, rcx
mov r12, rdx
sar r12, 2
mov rax, r12
shr rax, 0x3f
add r12, rax
mov r15, r12
sar r15, 1
test r15, r15
jle 0x1400d9f56
mov qword [r11 + 8], rbx
lea r10, [r12 - 1]
mov qword [r11 + 0x10], rbp
lea rbp, [r15 + 1]
mov qword [r11 + 0x18], rsi
lea rbp, [r15 + rbp*2]
mov qword [r11 - 0x20], r13
lea rbp, [rcx + rbp*8]
mov r13, r10
mov qword [r11 - 0x28], r14
sar r13, 1
xor ecx, ecx
nop dword [rax]
mov rax, qword [rbp - 0x28]
lea rbp, [rbp - 0x18]
mov qword [rsp + 0x20], rax
dec r15
mov rax, qword [rbp - 8]
mov r14, r15
mov qword [rsp + 0x28], rax
mov r9, r15
mov rax, qword [rbp]
mov qword [rsp + 0x30], rax
mov qword [rbp - 0x10], rcx
mov qword [rbp - 8], rcx
mov qword [rbp], rcx
cmp r15, r13
jge 0x1400d9e01
nop dword [rax]
lea rbx, [r9 + r9]
lea rax, [rbx + 2]
lea rax, [rax + rax*2]
lea rcx, [rdi + rax*8]
lea rdx, [rcx - 0x18]
call fcn.140097580
movzx r9d, al
xor r9, 1
inc r9
add r9, rbx
lea rax, [r9 + r9*2]
lea r8, [rdi + rax*8]
lea rax, [r14 + r14*2]
mov r14, r9
mov rcx, qword [rdi + rax*8]
lea rdx, [rdi + rax*8]
mov rax, qword [r8]
mov qword [rdx], rax
mov rax, qword [r8 + 8]
mov qword [r8], rcx
mov rcx, qword [rdx + 8]
mov qword [rdx + 8], rax
mov rax, qword [r8 + 0x10]
mov qword [r8 + 8], rcx
mov rcx, qword [rdx + 0x10]
mov qword [rdx + 0x10], rax
mov qword [r8 + 0x10], rcx
cmp r9, r13
jl 0x1400d9d90
lea r10, [r12 - 1]
cmp r14, r13
jne 0x1400d9e4e
test r12b, 1
jne 0x1400d9e4e
lea rax, [r12 + r12*2]
lea r8, [rdi + rax*8]
lea rax, [r14 + r14*2]
mov r14, r10
mov rcx, qword [rdi + rax*8]
lea rdx, [rdi + rax*8]
mov rax, qword [r8 - 0x18]
mov qword [rdx], rax
mov rax, qword [r8 - 0x10]
mov qword [r8 - 0x18], rcx
mov rcx, qword [rdx + 8]
mov qword [rdx + 8], rax
mov rax, qword [r8 - 8]
mov qword [r8 - 0x10], rcx
mov rcx, qword [rdx + 0x10]
mov qword [rdx + 0x10], rax
mov qword [r8 - 8], rcx
cmp r15, r14
jge 0x1400d9ebd
nop dword [rax]
nop word [rax + rax]
lea rsi, [r14 - 1]
sar rsi, 1
lea rdx, [rsp + 0x20]
lea rax, [rsi + rsi*2]
lea rbx, [rdi + rax*8]
mov rcx, rbx
call fcn.140097580
test al, al
je 0x1400d9ebd
lea rax, [r14 + r14*2]
mov r14, rsi
mov rcx, qword [rdi + rax*8]
lea rdx, [rdi + rax*8]
mov rax, qword [rbx]
mov qword [rdx], rax
mov rax, qword [rbx + 8]
mov qword [rbx], rcx
mov rcx, qword [rdx + 8]
mov qword [rdx + 8], rax
mov rax, qword [rbx + 0x10]
mov qword [rbx + 8], rcx
mov rcx, qword [rdx + 0x10]
mov qword [rdx + 0x10], rax
mov qword [rbx + 0x10], rcx
cmp r15, rsi
jl 0x1400d9e60
lea rax, [r14 + r14*2]
mov rcx, qword [rdi + rax*8]
lea rdx, [rdi + rax*8]
mov rax, qword [rsp + 0x20]
mov qword [rdx], rax
mov rax, qword [rsp + 0x28]
mov qword [rsp + 0x20], rcx
mov rcx, qword [rdx + 8]
mov qword [rdx + 8], rax
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x28], rcx
mov rcx, qword [rdx + 0x10]
mov qword [rdx + 0x10], rax
mov qword [rsp + 0x30], rcx
mov rcx, qword [rsp + 0x20]
test rcx, rcx
je 0x1400d9f27
mov eax, 0xffffffff
lock xadd dword [rcx], eax
cmp eax, 1
jne 0x1400d9f27
mov rcx, qword [rsp + 0x20]
mov edx, 1
mov r8d, 8
call fcn.140030bb0
lea r10, [r12 - 1]
mov ecx, 0
test r15, r15
jg 0x1400d9d50
mov r14, qword [rsp + 0x40]
mov r13, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x80]
mov rbp, qword [rsp + 0x78]
mov rbx, qword [rsp + 0x70]
add rsp, 0x50
pop r15
pop r12
pop rdi
ret