Function at 0x12010fb90
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xa8
mov ebx, 0x2d
movzx r9d, byte [rdx + 8]
mov r13, rcx
mov rsi, rdx
mov eax, r8d
test r8d, r8d
js 0x12010fbca
mov ebx, 0x2b
test r9b, 0x10
je 0x12010fce8
lea r8, [rsp + 0x92]
mov r12, r8
nop dword [rax]
movsxd rdx, eax
mov r10d, eax
mov rcx, r12
sub r12, 2
imul rdx, rdx, 0x66666667
sar r10d, 0x1f
sar rdx, 0x22
sub edx, r10d
lea r10d, [rdx + rdx*4]
add r10d, r10d
sub eax, r10d
mov r10d, eax
sar r10d, 0x1f
xor eax, r10d
sub eax, r10d
add eax, 0x30
mov word [r12], ax
mov eax, edx
test edx, edx
jne 0x12010fbd8
test r9b, 4
je 0x12010fcb0
sub r8, r12
mov eax, r9d
mov rbp, qword [rsi]
mov rdi, r8
and eax, 1
sar rdi, 1
test bl, bl
je 0x12010fd10
test rbp, rbp
je 0x12010fd10
lea r14, [rsp + 0x60]
xor r8d, r8d
sub rbp, 1
mov qword [rsp + 0x58], 0
mov qword [rsp + 0x50], r14
mov word [rsp + 0x60], r8w
test al, al
jne 0x12010fd86
cmp rbp, rdi
ja 0x12010fdc0
movsx bx, bl
mov r15d, 1
mov rcx, r14
xor eax, eax
mov r10d, 1
mov r11d, 2
mov rdx, r10
mov word [rcx + rax], bx
xor eax, eax
mov qword [rsp + 0x58], r10
mov word [rcx + r11], ax
jmp 0x12010fde6
test bl, bl
jne 0x12010fd00
lea rax, [r13 + 0x10]
xor r9d, r9d
mov rdx, r12
mov rcx, r13
mov qword [r13], rax
call fcn.120153650
mov rax, r13
add rsp, 0xa8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov ebx, r9d
mov edx, 0x20
and ebx, 2
cmovne ebx, edx
jmp 0x12010fbca
movsx bx, bl
mov word [r12 - 2], bx
lea r12, [rcx - 4]
jmp 0x12010fcb4
mov qword [rsp + 0x58], 0
lea r14, [rsp + 0x60]
xor ecx, ecx
mov qword [rsp + 0x50], r14
mov word [rsp + 0x60], cx
test al, al
je 0x12010fda6
test bl, bl
jne 0x12010fd86
xor edx, edx
lea r15, [rsp + 0x50]
cmp rbp, rdi
ja 0x12010fe55
mov qword [rsp + 0x20], rdi
mov r9, r12
xor r8d, r8d
mov rcx, r15
call fcn.120001cb8
mov rdx, qword [rsp + 0x58]
lea rax, [r13 + 0x10]
mov qword [r13], rax
mov rax, qword [rsp + 0x50]
cmp rax, r14
je 0x12010fe45
mov qword [r13], rax
mov rax, qword [rsp + 0x60]
mov qword [r13 + 0x10], rax
mov qword [r13 + 8], rdx
jmp 0x12010fcca
mov qword [rsp + 0x58], 1
xor edx, edx
movsx bx, bl
mov word [rsp + 0x62], dx
mov edx, 1
mov word [rsp + 0x60], bx
jmp 0x12010fd34
cmp rbp, rdi
ja 0x12010fdc0
test bl, bl
jne 0x12010ff1f
xor edx, edx
xor eax, eax
jmp 0x12010fde0
and r9d, 8
je 0x12010fefd
mov rdx, qword [rsp + 0x58]
mov rcx, qword [rsp + 0x50]
lea rax, [rdx + rdx]
test bl, bl
jne 0x12010fe90
sar rax, 1
mov r15, rax
cmp rdx, r15
jb 0x12010ff47
mov qword [rsp + 0x20], rdi
lea rbx, [rsp + 0x50]
mov rdx, r15
mov r9, r12
xor r8d, r8d
mov rcx, rbx
call fcn.120001cb8
mov rdx, qword [rsp + 0x58]
cmp rbp, rdi
jbe 0x12010fd5a
test byte [rsi + 8], 8
je 0x12010fd5a
mov dword [rsp + 0x20], 0x20
mov r9, rbp
xor r8d, r8d
mov rcx, rbx
sub r9, rdi
call fcn.120001ca8
mov rdx, qword [rsp + 0x58]
jmp 0x12010fd5a
movdqu xmm0, xmmword [rsp + 0x60]
movups xmmword [r13 + 0x10], xmm0
jmp 0x12010fd7d
mov dword [rsp + 0x20], 0x30
lea r15, [rsp + 0x50]
mov r9, rbp
xor r8d, r8d
sub r9, rdi
mov rcx, r15
call fcn.120001ca8
mov r9, qword [rsp + 0x58]
lea r8, [r9 + r9]
sar r8, 1
mov rdx, r8
cmp r8, r9
jbe 0x12010fd42
jmp 0x12010ff4d
lea r10, [rdx + 1]
movsx bx, bl
lea r11, [r10 + r10]
mov r15, r11
sar r15, 1
cmp rcx, r14
je 0x12010ff39
mov r8, qword [rsp + 0x60]
cmp r10, r8
jbe 0x12010fc95
lea rcx, [rsp + 0x50]
xor r9d, r9d
xor r8d, r8d
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x20], 1
mov qword [rsp + 0x40], r10
mov qword [rsp + 0x38], r11
call fcn.120001c80
mov r10, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x50]
mov rax, qword [rsp + 0x48]
mov r11, qword [rsp + 0x38]
mov rdx, r10
jmp 0x12010fc98
mov dword [rsp + 0x20], 0x20
mov r9, rbp
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0x50]
sub r9, rdi
call fcn.120001ca8
jmp 0x12010fdca
movsx bx, bl
mov r10d, 1
xor edx, edx
xor eax, eax
mov r11d, 2
mov r15d, 1
mov rcx, r14
mov r8d, 7
jmp 0x12010feb0
mov r9, rdx
mov r8, r15
lea rdx, [0x1205c04b9]
lea rcx, [0x1205c04d0]
call fcn.120001bf0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop