Function at 0x140015d90
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
mov qword [rsp + 0x10], rdx
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
mov r12, r8
mov r13, rdx
mov rbx, rcx
mov dword [rsp + 0x20], 0
mov rcx, qword [r9]
mov qword [rdx], rcx
mov rax, qword [r9 + 8]
mov qword [rdx + 8], rax
mov rax, qword [r9 + 0x10]
mov qword [rdx + 0x10], rax
test rcx, rcx
je 0x140015de0
lock inc dword [rcx]
mov dword [rsp + 0x20], 1
mov qword [rbx + 0x20], r13
xor edx, edx
mov rcx, rbx
call fcn.1400156b0
mov bpl, 1
cmp dword [rbx + 0x10], 1
jle 0x140015f8b
mov rcx, rbx
call fcn.140015870
mov rdi, qword [rbx + 0x20]
mov rax, qword [rdi]
test rax, rax
je 0x140015e1e
mov eax, dword [rax]
cmp eax, 1
jle 0x140015e30
mov r8d, 1
mov rdx, qword [rdi + 0x10]
mov rcx, rdi
call fcn.14003f690
mov rdx, qword [rdi + 8]
movzx ecx, byte [rdx + 1]
movzx eax, byte [rdx + 5]
mov byte [rdx + 1], al
movzx eax, byte [rdx + 9]
mov byte [rdx + 5], al
movzx eax, byte [rdx + 0xd]
mov byte [rdx + 9], al
mov byte [rdx + 0xd], cl
movzx ecx, byte [rdx + 2]
movzx eax, byte [rdx + 0xa]
mov byte [rdx + 2], al
mov byte [rdx + 0xa], cl
movzx ecx, byte [rdx + 6]
movzx eax, byte [rdx + 0xe]
mov byte [rdx + 6], al
mov byte [rdx + 0xe], cl
movzx ecx, byte [rdx + 3]
movzx eax, byte [rdx + 0xf]
mov byte [rdx + 3], al
movzx eax, byte [rdx + 0xb]
mov byte [rdx + 0xf], al
movzx eax, byte [rdx + 7]
mov byte [rdx + 0xb], al
mov byte [rdx + 7], cl
mov rdi, qword [rbx + 0x20]
mov rax, qword [rdi]
test rax, rax
je 0x140015e9b
mov eax, dword [rax]
cmp eax, 1
jle 0x140015ead
mov r8d, 1
mov rdx, qword [rdi + 0x10]
mov rcx, rdi
call fcn.14003f690
mov r15, qword [rdi + 8]
xor r14d, r14d
movzx esi, byte [r15 + r14]
movzx edi, byte [r15 + r14 + 3]
movzx r10d, byte [r15 + r14 + 2]
movzx r9d, r10b
xor r9b, dil
movzx r8d, byte [r15 + r14 + 1]
movzx r11d, sil
xor r11b, r8b
xor r11b, r9b
movzx edx, sil
xor dl, r8b
movzx eax, dl
shr al, 7
movzx eax, al
imul ecx, eax, 0x1b
add dl, dl
xor cl, dl
xor cl, sil
xor cl, r11b
mov byte [r15 + r14], cl
movzx edx, r8b
xor dl, r10b
movzx eax, dl
shr al, 7
movzx eax, al
imul ecx, eax, 0x1b
add dl, dl
xor cl, dl
xor cl, r8b
xor cl, r11b
mov byte [r15 + r14 + 1], cl
movzx eax, r9b
shr al, 7
movzx eax, al
imul ecx, eax, 0x1b
add r9b, r9b
xor cl, r9b
xor cl, r10b
xor cl, r11b
mov byte [r15 + r14 + 2], cl
xor sil, dil
movzx eax, sil
shr al, 7
movzx eax, al
imul ecx, eax, 0x1b
add sil, sil
xor cl, sil
xor cl, dil
xor cl, r11b
mov byte [r15 + r14 + 3], cl
add r14, 4
cmp r14, 0x10
jl 0x140015eb4
mov r8, r12
movzx edx, bpl
mov rcx, rbx
call fcn.1400156b0
inc bpl
movzx eax, bpl
cmp eax, dword [rbx + 0x10]
jl 0x140015e03
mov rcx, rbx
call fcn.140015870
mov rdi, qword [rbx + 0x20]
mov rax, qword [rdi]
test rax, rax
je 0x140015fa6
mov eax, dword [rax]
cmp eax, 1
jle 0x140015fb8
mov r8d, 1
mov rdx, qword [rdi + 0x10]
mov rcx, rdi
call fcn.14003f690
mov rdx, qword [rdi + 8]
movzx ecx, byte [rdx + 1]
movzx eax, byte [rdx + 5]
mov byte [rdx + 1], al
movzx eax, byte [rdx + 9]
mov byte [rdx + 5], al
movzx eax, byte [rdx + 0xd]
mov byte [rdx + 9], al
mov byte [rdx + 0xd], cl
movzx ecx, byte [rdx + 2]
movzx eax, byte [rdx + 0xa]
mov byte [rdx + 2], al
mov byte [rdx + 0xa], cl
movzx ecx, byte [rdx + 6]
movzx eax, byte [rdx + 0xe]
mov byte [rdx + 6], al
mov byte [rdx + 0xe], cl
movzx ecx, byte [rdx + 3]
movzx eax, byte [rdx + 0xf]
mov byte [rdx + 3], al
movzx eax, byte [rdx + 0xb]
mov byte [rdx + 0xf], al
movzx eax, byte [rdx + 7]
mov byte [rdx + 0xb], al
mov byte [rdx + 7], cl
mov r8, r12
movzx edx, byte [rbx + 0x10]
mov rcx, rbx
call fcn.1400156b0
mov rax, r13
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x70]
mov rsi, qword [rsp + 0x78]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
ret