Function at 0x100012be0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xa0
mov rdi, rcx
mov rcx, qword [rsp + 0xf8]
mov r14, r9
movzx r12d, byte [rcx + 0xf2]
mov esi, r8d
mov rbx, rdx
test r12d, r12d
je 0x100012cae
mov rax, qword [r9]
lea rdx, [rsp + 0x20]
lea rbp, [rsp + 0x20]
mov qword [rdx], rax
mov rax, qword [r9 + 8]
mov r13d, 1
mov qword [rdx + 8], rax
mov r8, rcx
mov rdx, rbp
mov rcx, rbp
dec r13d
call fcn.10000d460
test eax, eax
jne 0x100012ddf
mov rcx, qword [rsp + 0xf8]
add rbp, 0x10
test r13d, r13d
jne 0x100012c42
cmp r12d, 0x10
jge 0x100012c99
test esi, esi
je 0x100012ef8
movsxd rax, r12d
inc r12d
inc rbx
movzx ecx, byte [rsp + rax + 0x20]
inc rdi
dec esi
xor cl, byte [rdi - 1]
cmp r12d, 0x10
mov byte [rbx - 1], cl
jl 0x100012c72
test esi, esi
je 0x100012ef8
mov rcx, r14
call qword [rsp + 0xf0]
xor r12d, r12d
test esi, esi
je 0x100012ef8
mov eax, 0x80
mov r13d, esi
cmp esi, eax
cmovg r13d, eax
xor r15d, r15d
sub esi, r13d
mov eax, r13d
sar eax, 4
mov dword [rsp + 0xe0], esi
lea rsi, [rsp + 0x20]
test eax, eax
jle 0x100012d12
mov r15d, eax
mov ebp, eax
nop word [rax + rax]
mov rax, qword [r14]
mov rcx, r14
mov qword [rsi], rax
mov rax, qword [r14 + 8]
mov qword [rsi + 8], rax
call qword [rsp + 0xf0]
add rsi, 0x10
sub rbp, 1
jne 0x100012cf0
test r13b, 0xf
je 0x100012d29
mov rax, qword [r14]
inc r15d
mov qword [rsi], rax
mov rax, qword [r14 + 8]
mov qword [rsi + 8], rax
shl r15d, 4
lea rsi, [rsp + 0x20]
mov ebp, r15d
sar ebp, 4
test r15b, 0xf
jne 0x100012ddf
test ebp, ebp
je 0x100012d71
nop word [rax + rax]
mov r8, qword [rsp + 0xf8]
mov rdx, rsi
mov rcx, rsi
dec ebp
call fcn.10000d460
test eax, eax
jne 0x100012ddf
add rsi, 0x10
test ebp, ebp
jne 0x100012d50
xor r8d, r8d
lea rdx, [rsp + 0x20]
test dil, 3
jne 0x100012de9
test bl, 3
jne 0x100012de9
lea rax, [rsp + 0x20]
test al, 3
jne 0x100012de9
cmp r13d, 0x10
jl 0x100012eba
lea ecx, [r8 + 0x10]
nop dword [rax + rax]
mov eax, dword [rdi]
add ecx, 0x10
add rbx, 0x10
xor eax, dword [rdx]
add r8d, 0x10
add rdx, 0x10
mov dword [rbx - 0x10], eax
mov eax, dword [rdx - 0xc]
add rdi, 0x10
xor eax, dword [rdi - 0xc]
mov dword [rbx - 0xc], eax
mov eax, dword [rdx - 8]
xor eax, dword [rdi - 8]
mov dword [rbx - 8], eax
mov eax, dword [rdx - 4]
xor eax, dword [rdi - 4]
cmp ecx, r13d
mov dword [rbx - 4], eax
jle 0x100012da0
jmp 0x100012eba
mov eax, 1
jmp 0x100012f09
cmp r13d, 0x10
jl 0x100012eba
mov ecx, 0x10
nop dword [rax + rax]
movzx eax, byte [rdi]
add ecx, 0x10
add rbx, 0x10
xor al, byte [rdx]
add r8d, 0x10
add rdx, 0x10
mov byte [rbx - 0x10], al
movzx eax, byte [rdx - 0xf]
add rdi, 0x10
xor al, byte [rdi - 0xf]
mov byte [rbx - 0xf], al
movzx eax, byte [rdx - 0xe]
xor al, byte [rdi - 0xe]
mov byte [rbx - 0xe], al
movzx eax, byte [rdx - 0xd]
xor al, byte [rdi - 0xd]
mov byte [rbx - 0xd], al
movzx eax, byte [rdx - 0xc]
xor al, byte [rdi - 0xc]
mov byte [rbx - 0xc], al
movzx eax, byte [rdx - 0xb]
xor al, byte [rdi - 0xb]
mov byte [rbx - 0xb], al
movzx eax, byte [rdx - 0xa]
xor al, byte [rdi - 0xa]
mov byte [rbx - 0xa], al
movzx eax, byte [rdx - 9]
xor al, byte [rdi - 9]
mov byte [rbx - 9], al
movzx eax, byte [rdx - 8]
xor al, byte [rdi - 8]
mov byte [rbx - 8], al
movzx eax, byte [rdx - 7]
xor al, byte [rdi - 7]
mov byte [rbx - 7], al
movzx eax, byte [rdx - 6]
xor al, byte [rdi - 6]
mov byte [rbx - 6], al
movzx eax, byte [rdx - 5]
xor al, byte [rdi - 5]
mov byte [rbx - 5], al
movzx eax, byte [rdx - 4]
xor al, byte [rdi - 4]
mov byte [rbx - 4], al
movzx eax, byte [rdx - 3]
xor al, byte [rdi - 3]
mov byte [rbx - 3], al
movzx eax, byte [rdx - 2]
xor al, byte [rdi - 2]
mov byte [rbx - 2], al
movzx eax, byte [rdx - 1]
xor al, byte [rdi - 1]
cmp ecx, r13d
mov byte [rbx - 1], al
jle 0x100012e00
cmp r8d, r13d
jge 0x100012eec
sub r13d, r8d
mov r8d, r13d
nop word [rax + rax]
movsxd rax, r12d
inc rbx
inc rdi
movzx ecx, byte [rax + rdx]
inc r12d
xor cl, byte [rdi - 1]
sub r8, 1
mov byte [rbx - 1], cl
jne 0x100012ed0
mov esi, dword [rsp + 0xe0]
jmp 0x100012cae
mov rax, qword [rsp + 0xf8]
mov byte [rax + 0xf2], r12b
xor eax, eax
lea r11, [rsp + 0xa0]
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret