Function at 0x14009f47c
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x48
mov rsi, rdx
mov r9, rcx
movzx eax, byte [r8 + 0x17]
mov edi, eax
and edi, 0x7f
test al, al
mov rbx, qword [r8]
cmovns rbx, r8
cmovs rdi, qword [r8 + 8]
cmp rdi, 0x20
ja 0x14009f78e
cmp rdi, 0x10
ja 0x14009f62a
cmp rdi, 9
jb 0x14009f6b9
mov rax, qword [rbx + rdi - 8]
lea rdx, [rax + rdi]
mov ecx, edi
ror rdx, cl
mov rcx, qword [rbx]
xor rcx, rdx
movabs r8, 0x9ddfea08eb382d69
imul rcx, r8
xor rdx, rcx
shr rcx, 0x2f
xor rcx, rdx
imul rcx, r8
mov r14, rcx
shr r14, 0x2f
xor r14, rcx
imul r14, r8
xor r14, rax
mov r12, qword [r9 + 8]
test r12, r12
je 0x14009f611
mov rax, r12
shr rax, 1
movabs rcx, 0x5555555555555555
and rcx, rax
mov rax, r12
sub rax, rcx
movabs rcx, 0x3333333333333333
mov rdx, rax
and rdx, rcx
shr rax, 2
and rax, rcx
add rax, rdx
mov rcx, rax
shr rcx, 4
add rcx, rax
movabs rax, 0xf0f0f0f0f0f0f0f
and rax, rcx
movabs r13, 0x101010101010101
imul r13, rax
shr r13, 0x38
cmp r13, 1
jbe 0x14009f6fb
mov r15, r14
cmp r14, r12
jb 0x14009f58f
mov rax, r14
xor edx, edx
div r12
mov r15, rdx
mov rax, qword [r9]
mov rax, qword [rax + r15*8]
test rax, rax
je 0x14009f611
mov rbp, qword [rax]
test rbp, rbp
je 0x14009f611
mov rax, qword [rbp + 8]
cmp r14, rax
je 0x14009f5ce
cmp r13d, 1
jbe 0x14009f729
cmp rax, r12
jb 0x14009f5c3
xor edx, edx
div r12
mov rax, rdx
cmp rax, r15
jne 0x14009f611
mov rbp, qword [rbp]
jmp 0x14009f59e
movzx edx, byte [rbp + 0x27]
mov eax, edx
and eax, 0x7f
mov rcx, rax
test dl, dl
jns 0x14009f5e2
mov rcx, qword [rbp + 0x18]
cmp rcx, rdi
jne 0x14009f5c8
lea rcx, [rbp + 0x10]
test dl, dl
jns 0x14009f5f2
mov rcx, qword [rcx]
js 0x14009f708
test al, al
je 0x14009f613
xor ecx, ecx
mov dl, byte [rbp + rcx + 0x10]
cmp dl, byte [rbx + rcx]
jne 0x14009f5c8
inc rcx
cmp rax, rcx
jne 0x14009f5fe
jmp 0x14009f613
xor ebp, ebp
mov qword [rsi], rbp
mov rax, rsi
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
movabs rcx, 0xb492b66fbe98f273
imul rcx, qword [rbx]
mov rdx, qword [rbx + 8]
movabs rax, 0x9ae16a3b2f90404f
imul rax, qword [rbx + rdi - 8]
movabs r8, 0xc3a5c85c97cb3127
imul r8, qword [rbx + rdi - 0x10]
movabs r10, 0xc949d7c7509e6557
xor r10, rdx
rol r10, 0x2c
add r10, rcx
add r10, rdi
sub rcx, rdx
rol rcx, 0x15
sub r10, rax
rol rax, 0x22
add rax, r8
add rax, rcx
xor rax, r10
movabs rcx, 0x9ddfea08eb382d69
imul rax, rcx
xor r10, rax
shr rax, 0x2f
xor rax, r10
imul rax, rcx
mov r14, rax
shr r14, 0x2f
xor r14, rax
imul r14, rcx
jmp 0x14009f509
cmp rdi, 4
jb 0x14009f736
mov eax, dword [rbx]
mov ecx, dword [rbx + rdi - 4]
lea rax, [rdi + rax*8]
xor rax, rcx
movabs rdx, 0x9ddfea08eb382d69
imul rax, rdx
xor rcx, rax
shr rax, 0x2f
xor rax, rcx
imul rax, rdx
mov r14, rax
shr r14, 0x2f
xor r14, rax
imul r14, rdx
jmp 0x14009f509
lea r15, [r12 - 1]
and r15, r14
jmp 0x14009f58f
test rdi, rdi
je 0x14009f613
mov rdx, rbx
mov r8, rdi
call fcn.140172fb0
test eax, eax
je 0x14009f613
jmp 0x14009f5c8
lea rcx, [r12 - 1]
and rax, rcx
jmp 0x14009f5c3
movabs r14, 0x9ae16a3b2f90404f
test rdi, rdi
je 0x14009f509
movzx eax, byte [rbx]
mov rcx, rdi
shr rcx, 1
movzx ecx, byte [rbx + rcx]
movzx edx, byte [rdi + rbx - 1]
shl rcx, 8
or rcx, rax
lea rax, [rdi + rdx*4]
imul rcx, r14
movabs rdx, 0xc949d7c7509e6557
imul rdx, rax
xor rdx, rcx
mov rax, rdx
shr rax, 0x2f
xor rax, rdx
imul r14, rax
jmp 0x14009f509
cmp rdi, 0x40
ja 0x14009f85d
mov rcx, qword [rbx + 0x10]
mov r10, qword [rbx + 0x18]
mov r14, qword [rbx + rdi - 0x10]
lea rdx, [r14 + rdi]
movabs rax, 0xc3a5c85c97cb3127
imul rdx, rax
add rdx, qword [rbx]
lea r8, [rdx + r10]
rol r8, 0xc
mov r12, rdx
rol r12, 0x1b
add rdx, qword [rbx + 8]
mov r11, rdx
rol r11, 0x39
add rdx, rcx
add rcx, qword [rbx + rdi - 0x20]
mov r15, qword [rbx + rdi - 8]
add r15, r10
lea r13, [r15 + rcx]
rol r13, 0xc
mov rbp, rcx
rol rbp, 0x1b
add rcx, qword [rbx + rdi - 0x18]
add r11, r12
mov r12, rcx
rol r12, 0x39
add rcx, r14
add r15, rcx
rol rcx, 0x21
add rbp, r10
add rbp, r12
add rbp, r13
add rbp, rcx
add rbp, rdx
rol rdx, 0x21
add r11, r8
add rdx, r11
movabs rcx, 0x9ae16a3b2f90404f
imul rbp, rcx
add r15, rdx
imul r15, rax
add r15, rbp
mov r8, r15
shr r8, 0x2f
xor r8, r15
imul r8, rax
add r8, rdx
mov r14, r8
shr r14, 0x2f
xor r14, r8
jmp 0x14009f6b0
movabs r13, 0xb492b66fbe98f273
movabs r12, 0x9ddfea08eb382d69
mov r14, qword [rbx + rdi - 0x28]
mov rax, qword [rbx + rdi - 0x10]
mov rcx, qword [rbx + rdi - 0x38]
mov r11, qword [rbx + rdi - 0x30]
lea rdx, [rcx + rax]
mov r10, qword [rbx + rdi - 0x18]
lea r8, [r11 + rdi]
xor r8, r10
imul r8, r12
mov r15, r10
xor r15, r8
shr r8, 0x2f
xor r8, r15
imul r8, r12
mov r15, r8
shr r15, 0x2f
xor r15, r8
imul r15, r12
mov r8, qword [rbx + rdi - 0x40]
add r8, rdi
lea r12, [r8 + r14]
mov qword [rsp + 0x28], r15
add r12, r15
rol r12, 0x2b
add r11, rcx
add r11, r8
mov r15, r11
rol r15, 0x14
add r15, r8
add r15, r12
add r11, r14
mov rcx, qword [rbx + rdi - 0x20]
add rcx, rdx
mov r8, qword [rbx + rdi - 8]
add rcx, r13
lea rbp, [r8 + r14]
add rbp, rcx
rol rbp, 0x2b
add r10, rax
add r10, rcx
mov r12, r10
rol r12, 0x14
add r12, rcx
add r12, rbp
imul r14, r13
add r14, qword [rbx]
add r10, r8
lea rax, [rdi - 1]
and rax, 0xffffffffffffffc0
mov qword [rsp + 0x38], rax
xor ebp, ebp
mov rax, qword [rsp + 0x28]
mov qword [rsp + 0x30], rax
add r14, r11
add r14, rdx
mov r8, qword [rbx + rbp + 8]
mov rcx, qword [rbx + rbp + 0x10]
add r14, r8
rol r14, 0x1b
add rdx, r15
mov rax, qword [rbx + rbp + 0x30]
mov qword [rsp + 0x40], rax
add rdx, rax
rol rdx, 0x16
movabs rax, 0xb492b66fbe98f273
imul r14, rax
mov r13, rdx
imul r13, rax
xor r14, r12
mov rax, qword [rbx + rbp + 0x28]
add r11, rax
mov rdx, r11
add rdx, r13
add qword [rsp + 0x30], r10
movabs r11, 0xb492b66fbe98f273
imul r15, r11
mov r13, qword [rbx + rbp + 0x18]
add r15, qword [rbx + rbp]
add r10, r13
add r10, r15
mov qword [rsp + 0x28], r14
add r10, r14
rol r10, 0x2b
add r8, rcx
add r8, r15
mov r11, r8
rol r11, 0x14
add r15, r11
add r15, r10
mov r14, qword [rsp + 0x30]
rol r14, 0x1f
mov r11, r8
movabs r8, 0xb492b66fbe98f273
imul r14, r8
add r11, r13
add r12, r14
mov r8, qword [rbx + rbp + 0x38]
add r12, qword [rbx + rbp + 0x20]
add rcx, r8
add rcx, rdx
add rcx, r12
add rax, qword [rsp + 0x40]
add rax, r12
mov r10, rax
rol r10, 0x14
add r12, r10
rol rcx, 0x2b
add r12, rcx
mov r10, rax
add r10, r8
add rbp, 0x40
cmp qword [rsp + 0x38], rbp
jne 0x14009f92d
xor r15, r12
movabs r13, 0x9ddfea08eb382d69
imul r15, r13
mov rcx, r15
shr rcx, 0x2f
xor rcx, r12
xor rcx, r15
imul rcx, r13
mov rax, rcx
shr rax, 0x2f
xor rax, rcx
imul rax, r13
add rax, r14
xor r11, r10
imul r11, r13
mov rcx, r11
shr rcx, 0x2f
xor rcx, r10
xor rcx, r11
imul rcx, r13
mov r8, rcx
shr r8, 0x2f
xor r8, rcx
imul r8, r13
mov rcx, rdx
shr rcx, 0x2f
xor rcx, rdx
movabs rdx, 0xb492b66fbe98f273
imul rcx, rdx
add rcx, qword [rsp + 0x28]
add rcx, r8
xor rcx, rax
imul rcx, r13
xor rax, rcx
shr rcx, 0x2f
xor rcx, rax
imul rcx, r13
mov r14, rcx
shr r14, 0x2f
xor r14, rcx
imul r14, r13
jmp 0x14009f509