Function at 0x12010ff70
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x88
mov ebx, 0x2d
movzx r9d, byte [rdx + 8]
mov r13, rcx
mov rsi, rdx
mov eax, r8d
test r8d, r8d
js 0x12010ffaa
mov ebx, 0x2b
test r9b, 0x10
je 0x120110130
lea r8, [rsp + 0x72]
mov r12, r8
nop word [rax + 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 0x12010ffb8
test r9b, 4
je 0x1201100f8
sub r8, r12
mov eax, r9d
mov rbp, qword [rsi]
mov rdi, r8
and eax, 1
sar rdi, 1
test bl, bl
je 0x120110160
test rbp, rbp
je 0x120110160
lea r14, [rsp + 0x40]
xor ecx, ecx
sub rbp, 1
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x30], r14
mov word [rsp + 0x40], cx
test al, al
jne 0x1201101da
cmp rbp, rdi
jbe 0x12011023d
and r9d, 8
jne 0x12011023d
mov dword [rsp + 0x20], 0x20
mov r9, rbp
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0x30]
sub r9, rdi
call fcn.120001ca8
test bl, bl
jne 0x12011023d
mov r9, qword [rsp + 0x38]
lea r8, [r9 + r9]
sar r8, 1
mov rdx, r8
cmp r9, r8
jb 0x120110288
mov qword [rsp + 0x20], rdi
lea r15, [rsp + 0x30]
mov r9, r12
xor r8d, r8d
mov rcx, r15
call fcn.120001cb8
mov rdx, qword [rsp + 0x38]
cmp rbp, rdi
jbe 0x1201101b2
test byte [rsi + 8], 8
je 0x1201101b2
mov dword [rsp + 0x20], 0x20
mov r9, rbp
xor r8d, r8d
mov rcx, r15
sub r9, rdi
call fcn.120001ca8
mov rdx, qword [rsp + 0x38]
jmp 0x1201101b2
test bl, bl
jne 0x120110148
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, 0x88
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 0x12010ffaa
movsx bx, bl
mov word [r12 - 2], bx
lea r12, [rcx - 4]
jmp 0x1201100fc
mov qword [rsp + 0x38], 0
lea r14, [rsp + 0x40]
xor edx, edx
mov qword [rsp + 0x30], r14
mov word [rsp + 0x40], dx
test al, al
je 0x120110220
test bl, bl
jne 0x1201101da
cmp rbp, rdi
ja 0x12011024f
xor r10d, r10d
lea r15, [rsp + 0x30]
mov qword [rsp + 0x20], rdi
mov rdx, r10
mov r9, r12
xor r8d, r8d
mov rcx, r15
call fcn.120001cb8
mov rdx, qword [rsp + 0x38]
lea rax, [r13 + 0x10]
mov qword [r13], rax
mov rax, qword [rsp + 0x30]
cmp rax, r14
je 0x120110230
mov qword [r13], rax
mov rax, qword [rsp + 0x40]
mov qword [r13 + 0x10], rax
mov qword [r13 + 8], rdx
jmp 0x120110112
lea r15, [rsp + 0x30]
movsx edx, bl
mov rcx, r15
call fcn.120001c78
mov rdx, qword [rsp + 0x38]
cmp rbp, rdi
ja 0x120110256
lea r8, [rdx + rdx]
sar r8, 1
mov r10, r8
cmp r8, rdx
jbe 0x120110197
mov r9, rdx
lea rcx, [0x1205c1030]
lea rdx, [0x1205c1019]
call fcn.120001bf0
nop dword [rax]
cmp rbp, rdi
ja 0x120110279
test bl, bl
jne 0x12011023d
xor edx, edx
jmp 0x12011009f
movdqu xmm0, xmmword [rsp + 0x40]
movups xmmword [r13 + 0x10], xmm0
jmp 0x1201101d1
movsx edx, bl
lea rcx, [rsp + 0x30]
call fcn.120001c78
jmp 0x120110087
xor edx, edx
lea r15, [rsp + 0x30]
mov dword [rsp + 0x20], 0x30
mov r9, rbp
xor r8d, r8d
mov rcx, r15
sub r9, rdi
call fcn.120001ca8
mov rdx, qword [rsp + 0x38]
jmp 0x1201101f4
and r9d, 8
jne 0x12011007f
jmp 0x120110062
lea rdx, [0x1205c1019]
lea rcx, [0x1205c1030]
call fcn.120001bf0
nop
nop
nop
nop
nop