Function at 0x12010f480
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 0x12010f4ba
mov ebx, 0x2b
test r9b, 0x10
je 0x12010f5d8
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 0x12010f4c8
test r9b, 4
je 0x12010f5a0
sub r8, r12
mov eax, r9d
mov rbp, qword [rsi]
mov rdi, r8
and eax, 1
sar rdi, 1
test bl, bl
je 0x12010f600
test rbp, rbp
je 0x12010f600
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 0x12010f676
cmp rbp, rdi
ja 0x12010f6b0
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 0x12010f6d6
test bl, bl
jne 0x12010f5f0
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 0x12010f4ba
movsx bx, bl
mov word [r12 - 2], bx
lea r12, [rcx - 4]
jmp 0x12010f5a4
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 0x12010f696
test bl, bl
jne 0x12010f676
xor edx, edx
lea r15, [rsp + 0x50]
cmp rbp, rdi
ja 0x12010f745
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 0x12010f735
mov qword [r13], rax
mov rax, qword [rsp + 0x60]
mov qword [r13 + 0x10], rax
mov qword [r13 + 8], rdx
jmp 0x12010f5ba
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 0x12010f624
cmp rbp, rdi
ja 0x12010f6b0
test bl, bl
jne 0x12010f80f
xor edx, edx
xor eax, eax
jmp 0x12010f6d0
and r9d, 8
je 0x12010f7ed
mov rdx, qword [rsp + 0x58]
mov rcx, qword [rsp + 0x50]
lea rax, [rdx + rdx]
test bl, bl
jne 0x12010f780
sar rax, 1
mov r15, rax
cmp rdx, r15
jb 0x12010f837
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 0x12010f64a
test byte [rsi + 8], 8
je 0x12010f64a
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 0x12010f64a
movdqu xmm0, xmmword [rsp + 0x60]
movups xmmword [r13 + 0x10], xmm0
jmp 0x12010f66d
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 0x12010f632
jmp 0x12010f83d
lea r10, [rdx + 1]
movsx bx, bl
lea r11, [r10 + r10]
mov r15, r11
sar r15, 1
cmp rcx, r14
je 0x12010f829
mov r8, qword [rsp + 0x60]
cmp r10, r8
jbe 0x12010f585
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 0x12010f588
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 0x12010f6ba
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 0x12010f7a0
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