Function at 0x1400015d0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r14
push r15
sub rsp, 0x20
mov r9, qword [rcx]
xor r8d, r8d
mov rdi, rdx
mov rbx, rcx
mov edx, r8d
mov byte [rsp + 0x40], 1
cmp qword [rcx + 8], r9
je 0x14000162e
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [r9 + rdx]
mov rcx, qword [rbx + 0x30]
mov byte [rdx + rcx], al
inc rdx
mov r9, qword [rbx]
mov rax, qword [rbx + 8]
sub rax, r9
cmp rdx, rax
jb 0x140001610
mov r9, qword [rbx + 0x18]
cmp qword [rbx + 0x20], r9
je 0x140001669
nop dword [rax + rax]
movzx eax, byte [r9 + r8]
mov rdx, r8
sub rdx, qword [rbx]
inc r8
add rdx, qword [rbx + 8]
mov rcx, qword [rbx + 0x30]
mov byte [rdx + rcx], al
mov r9, qword [rbx + 0x18]
mov rax, qword [rbx + 0x20]
sub rax, r9
cmp r8, rax
jb 0x140001640
mov sil, 7
nop dword [rax]
lea rdx, [rsp + 0x40]
mov rcx, rbx
call fcn.1400019c0
add sil, 0xff
jne 0x140001670
mov r8b, 0x10
nop word [rax + rax]
mov rax, qword [rbx + 0x30]
add r8b, 0xff
movzx ecx, r8b
lea rdx, [rcx + rdi]
movzx ecx, byte [rcx + rax]
xor byte [rdx], cl
test r8b, r8b
jne 0x140001690
movzx ecx, byte [rdi + 1]
lea r15, [0x140000000]
movzx eax, byte [rdi + 0xd]
mov dl, 0x10
mov byte [rdi + 1], al
movzx eax, byte [rdi + 9]
mov byte [rdi + 0xd], al
movzx eax, byte [rdi + 5]
mov byte [rdi + 9], al
movzx eax, byte [rdi + 0xa]
mov byte [rdi + 5], cl
movzx ecx, byte [rdi + 2]
mov byte [rdi + 2], al
movzx eax, byte [rdi + 7]
mov byte [rdi + 0xa], cl
movzx ecx, byte [rdi + 3]
mov byte [rdi + 3], al
movzx eax, byte [rdi + 0xb]
mov byte [rdi + 7], al
movzx eax, byte [rdi + 0xf]
mov byte [rdi + 0xf], cl
movzx ecx, byte [rdi + 6]
mov byte [rdi + 0xb], al
movzx eax, byte [rdi + 0xe]
mov byte [rdi + 0xe], cl
lea rcx, [rdi + 0x10]
mov byte [rdi + 6], al
nop dword [rax]
movzx eax, byte [rcx - 1]
lea rcx, [rcx - 1]
movzx eax, byte [rax + r15 + 0x65d0]
mov byte [rcx], al
add dl, 0xff
jne 0x140001710
mov r14b, 0x80
mov sil, 0xd
nop
movzx r10d, sil
and r10b, 1
je 0x1400018bc
mov r9b, 0x1c
mov r8d, 0x1d
nop word [rax + rax]
mov rcx, qword [rbx + 0x30]
movzx eax, r9b
add r9b, 0xfc
lea rdx, [r8 + rcx]
movzx ecx, byte [rax + rcx - 4]
xor byte [rdx - 1], cl
mov rax, qword [rbx + 0x30]
lea rcx, [r8 + rax]
movzx eax, byte [r8 + rax - 4]
xor byte [rcx], al
mov rax, qword [rbx + 0x30]
lea rcx, [r8 + rax]
movzx eax, byte [r8 + rax - 3]
xor byte [rcx + 1], al
mov rax, qword [rbx + 0x30]
lea rcx, [r8 + rax]
movzx eax, byte [r8 + rax - 2]
xor byte [rcx + 2], al
lea r8, [r8 - 4]
cmp r9b, 0x10
ja 0x140001750
mov rcx, qword [rbx + 0x30]
mov r9b, 0xc
movzx eax, byte [rcx + 0xc]
movzx eax, byte [rax + r15 + 0x64d0]
xor byte [rcx + 0x10], al
mov rcx, qword [rbx + 0x30]
movzx eax, byte [rcx + 0xd]
movzx eax, byte [rax + r15 + 0x64d0]
xor byte [rcx + 0x11], al
mov rcx, qword [rbx + 0x30]
movzx eax, byte [rcx + 0xe]
movzx eax, byte [rax + r15 + 0x64d0]
xor byte [rcx + 0x12], al
mov rcx, qword [rbx + 0x30]
movzx eax, byte [rcx + 0xf]
movzx eax, byte [rax + r15 + 0x64d0]
xor byte [rcx + 0x13], al
nop word [rax + rax]
mov rdx, qword [rbx + 0x30]
movzx r8d, r9b
movzx eax, r9b
movzx ecx, byte [rax + rdx - 4]
xor byte [r8 + rdx], cl
mov rax, qword [rbx + 0x30]
lea rcx, [r8 + rax]
movzx eax, byte [r8 + rax - 3]
xor byte [rcx + 1], al
mov rax, qword [rbx + 0x30]
lea rcx, [r8 + rax]
movzx eax, byte [r8 + rax - 2]
xor byte [rcx + 2], al
mov rax, qword [rbx + 0x30]
lea rcx, [r8 + rax]
movzx eax, byte [r8 + rax - 1]
xor byte [rcx + 3], al
add r9b, 0xfc
jne 0x140001800
mov rdx, qword [rbx + 0x30]
movzx eax, r14b
and al, 1
neg al
movzx eax, r14b
sbb cl, cl
shr al, 1
and cl, 0x8d
movzx r14d, cl
xor r14b, al
movzx eax, byte [rdx + 0x1d]
movzx ecx, byte [rax + r15 + 0x64d0]
xor cl, byte [rdx]
xor cl, r14b
mov byte [rdx], cl
mov rcx, qword [rbx + 0x30]
movzx eax, byte [rcx + 0x1e]
movzx eax, byte [rax + r15 + 0x64d0]
xor byte [rcx + 1], al
mov rcx, qword [rbx + 0x30]
movzx eax, byte [rcx + 0x1f]
movzx eax, byte [rax + r15 + 0x64d0]
xor byte [rcx + 2], al
mov rcx, qword [rbx + 0x30]
movzx eax, byte [rcx + 0x1c]
movzx eax, byte [rax + r15 + 0x64d0]
xor byte [rcx + 3], al
mov dl, 0x10
lea r8, [rdi + 0x10]
nop dword [rax]
nop word [rax + rax]
add dl, 0xff
lea r8, [r8 - 1]
movzx ecx, dl
test r10b, r10b
lea eax, [rcx + 0x10]
cmove eax, ecx
mov ecx, eax
mov rax, qword [rbx + 0x30]
movzx ecx, byte [rcx + rax]
xor byte [r8], cl
test dl, dl
jne 0x1400018d0
mov rdx, rdi
call fcn.140001b40
movzx ecx, byte [rdi + 1]
mov dl, 0x10
movzx eax, byte [rdi + 0xd]
mov byte [rdi + 1], al
movzx eax, byte [rdi + 9]
mov byte [rdi + 0xd], al
movzx eax, byte [rdi + 5]
mov byte [rdi + 9], al
movzx eax, byte [rdi + 0xa]
mov byte [rdi + 5], cl
movzx ecx, byte [rdi + 2]
mov byte [rdi + 2], al
movzx eax, byte [rdi + 7]
mov byte [rdi + 0xa], cl
movzx ecx, byte [rdi + 3]
mov byte [rdi + 3], al
movzx eax, byte [rdi + 0xb]
mov byte [rdi + 7], al
movzx eax, byte [rdi + 0xf]
mov byte [rdi + 0xf], cl
movzx ecx, byte [rdi + 6]
mov byte [rdi + 0xb], al
movzx eax, byte [rdi + 0xe]
mov byte [rdi + 0xe], cl
lea rcx, [rdi + 0x10]
mov byte [rdi + 6], al
movzx eax, byte [rcx - 1]
lea rcx, [rcx - 1]
movzx eax, byte [rax + r15 + 0x65d0]
mov byte [rcx], al
add dl, 0xff
jne 0x140001956
add sil, 0xff
jne 0x140001730
mov dl, 0x10
add rdi, 0x10
nop
mov rax, qword [rbx + 0x30]
lea rdi, [rdi - 1]
add dl, 0xff
movzx ecx, dl
movzx ecx, byte [rcx + rax]
xor byte [rdi], cl
test dl, dl
jne 0x140001980
mov rbx, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x58]
add rsp, 0x20
pop r15
pop r14
pop rdi
ret