Function at 0x14012d9a0
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
push rdi
lea rbp, [rsp - 0x3f]
sub rsp, 0x88
cmp dword [rcx], 0
mov rsi, r9
mov rbx, rdx
mov rdi, rcx
je 0x14012d9d0
mov eax, 0xfffffffb
add rsp, 0x88
pop rdi
pop rsi
pop rbx
pop rbp
ret
cmp dword [rcx + 8], 0
je 0x14012d9e7
mov eax, 0xfffffffa
add rsp, 0x88
pop rdi
pop rsi
pop rbx
pop rbp
ret
test rbx, rbx
je 0x14012ddc7
test r8d, r8d
jle 0x14012ddc7
mov eax, r8d
mov qword [rsp + 0xc8], r14
cdq
mov qword [rsp + 0x80], r15
and edx, 0x7f
lea r15d, [rdx + rax]
mov edx, dword [rcx + 4]
sar r15d, 7
mov dword [rbp + 0x2b], r15d
test edx, edx
je 0x14012dd8f
sub edx, 1
je 0x14012dcf8
cmp edx, 1
je 0x14012da56
mov eax, 0xffffffff
mov r14, qword [rsp + 0xc8]
mov r15, qword [rsp + 0x80]
add rsp, 0x88
pop rdi
pop rsi
pop rbx
pop rbp
ret
mov eax, dword [rcx + 0xc]
mov dword [rbp + 7], eax
mov eax, dword [rcx + 0x10]
mov dword [rbp + 0xb], eax
mov eax, dword [rcx + 0x14]
mov dword [rbp + 0xf], eax
mov eax, dword [rcx + 0x18]
mov dword [rbp + 0x13], eax
mov dword [rbp + 0x27], r15d
test r15d, r15d
jle 0x14012ddbb
movzx ecx, byte [rbp + 0x12]
movzx r15d, byte [rbp + 0x14]
mov byte [rbp - 1], al
movzx eax, byte [rbp + 0x11]
mov byte [rbp - 7], al
movzx eax, byte [rbp + 0xf]
mov byte [rbp - 5], cl
movzx ecx, byte [rbp + 0x10]
mov byte [rbp - 0x11], al
movzx eax, byte [rbp + 0xd]
mov byte [rbp - 9], cl
movzx ecx, byte [rbp + 0xe]
mov byte [rbp - 0x1b], al
movzx eax, byte [rbp + 0xb]
mov byte [rbp - 0x19], cl
movzx ecx, byte [rbp + 0xc]
mov byte [rbp - 0x21], al
movzx eax, byte [rbp + 9]
mov byte [rbp - 0x1d], cl
movzx ecx, byte [rbp + 0xa]
mov qword [rsp + 0xb8], r12
movzx r12d, byte [rbp + 0x16]
mov byte [rbp - 0x27], al
movzx eax, byte [rbp + 7]
mov byte [rbp - 0x25], cl
movzx ecx, byte [rbp + 8]
mov qword [rsp + 0xc0], r13
movzx r13d, byte [rbp + 0x15]
mov byte [rbp + 0x67], al
mov byte [rbp - 0x29], cl
movzx r14d, byte [rbp - 1]
xor ebx, ebx
nop dword [rax + rax]
movaps xmm0, xmmword [rbp + 7]
lea r8, [rbp + 0x17]
lea rdx, [rbp + 0x17]
movdqa xmmword [rbp + 0x17], xmm0
mov rcx, rdi
call fcn.14012e490
movzx r9d, bl
mov eax, ebx
and r9b, 7
test ebx, ebx
jns 0x14012db2a
lea eax, [rbx + 7]
movzx r11d, byte [rbp - 7]
movzx ecx, r9b
movzx r10d, byte [rbp - 5]
sar eax, 3
movsxd rdx, eax
movzx eax, byte [rbp + 0x17]
and al, 0x80
shr r11b, 7
shr al, cl
xor byte [rdx + rsi], al
movzx eax, byte [rbp + 0x67]
movzx ecx, byte [rbp - 0x29]
add al, al
movzx r8d, byte [rdx + rsi]
shr cl, 7
or cl, al
movzx eax, byte [rbp - 0x29]
mov byte [rbp + 0x67], cl
add al, al
mov byte [rbp + 7], cl
movzx ecx, byte [rbp - 0x27]
shr cl, 7
or cl, al
movzx eax, byte [rbp - 0x27]
mov byte [rbp - 0x29], cl
add al, al
mov byte [rbp + 8], cl
movzx ecx, byte [rbp - 0x25]
shr cl, 7
or cl, al
movzx eax, byte [rbp - 0x25]
mov byte [rbp - 0x27], cl
add al, al
mov byte [rbp + 9], cl
movzx ecx, byte [rbp - 0x21]
shr cl, 7
or cl, al
movzx eax, byte [rbp - 0x21]
mov byte [rbp - 0x25], cl
add al, al
mov byte [rbp + 0xa], cl
movzx ecx, byte [rbp - 0x1d]
shr cl, 7
or cl, al
movzx eax, byte [rbp - 0x1d]
mov byte [rbp - 0x21], cl
add al, al
mov byte [rbp + 0xb], cl
movzx ecx, byte [rbp - 0x1b]
shr cl, 7
or cl, al
movzx eax, byte [rbp - 0x1b]
mov byte [rbp - 0x1d], cl
add al, al
mov byte [rbp + 0xc], cl
movzx ecx, byte [rbp - 0x19]
shr cl, 7
or cl, al
movzx eax, byte [rbp - 0x19]
add al, al
mov byte [rbp - 0x1b], cl
mov byte [rbp + 0xd], cl
movzx ecx, byte [rbp - 0x11]
shr cl, 7
or cl, al
movzx eax, byte [rbp - 0x11]
add al, al
mov byte [rbp - 0x19], cl
mov byte [rbp + 0xe], cl
movzx ecx, byte [rbp - 9]
shr cl, 7
or cl, al
movzx eax, byte [rbp - 9]
add al, al
mov byte [rbp - 0x11], cl
or r11b, al
mov byte [rbp + 0xf], cl
movzx eax, byte [rbp - 7]
mov byte [rbp - 9], r11b
mov byte [rbp + 0x10], r11b
shr r10b, 7
add al, al
movzx ecx, r15b
or r10b, al
shr cl, 7
movzx eax, byte [rbp - 5]
movzx edx, r14b
add al, al
shr dl, 7
or dl, al
mov byte [rbp - 7], r10b
movzx eax, r14b
mov byte [rbp + 0x11], r10b
add al, al
mov byte [rbp - 5], dl
movzx r14d, cl
mov byte [rbp + 0x12], dl
or r14b, al
movzx ecx, r13b
shr cl, 7
movzx eax, r15b
add al, al
mov byte [rbp + 0x13], r14b
movzx r15d, cl
inc ebx
or r15b, al
movzx ecx, r12b
shr cl, 7
movzx eax, r13b
add al, al
mov byte [rbp + 0x14], r15b
movzx r13d, cl
mov ecx, 7
or r13b, al
sub cl, r9b
movzx eax, r12b
shr r8b, cl
and r8b, 1
mov byte [rbp + 0x15], r13b
add al, al
movzx r12d, r8b
or r12b, al
mov byte [rbp + 0x16], r12b
cmp ebx, 0x80
jl 0x14012db00
mov byte [rbp - 1], r14b
mov r14d, dword [rbp + 0x27]
dec r14d
mov dword [rbp + 0x27], r14d
test r14d, r14d
jg 0x14012daf1
mov r15d, dword [rbp + 0x2b]
mov r13, qword [rsp + 0xc0]
mov r12, qword [rsp + 0xb8]
shl r15d, 7
mov eax, r15d
jmp 0x14012da3a
mov eax, dword [rcx + 0xc]
lea rdx, [rbp + 0x17]
xor eax, dword [rbx]
mov r8, rsi
mov dword [rbp + 0x17], eax
mov eax, dword [rcx + 0x10]
xor eax, dword [rbx + 4]
mov dword [rbp + 0x1b], eax
mov eax, dword [rcx + 0x14]
xor eax, dword [rbx + 8]
mov dword [rbp + 0x1f], eax
mov eax, dword [rcx + 0x18]
xor eax, dword [rbx + 0xc]
mov dword [rbp + 0x23], eax
call fcn.14012e490
add rbx, 0x10
lea r14d, [r15 - 1]
test r14d, r14d
jle 0x14012ddbb
add rsi, 8
nop dword [rax]
mov eax, dword [rsi - 8]
lea rsi, [rsi + 0x10]
xor eax, dword [rbx]
lea r8, [rsi - 8]
mov dword [rbp + 0x17], eax
lea rdx, [rbp + 0x17]
mov eax, dword [rsi - 0x14]
mov rcx, rdi
xor eax, dword [rbx + 4]
mov dword [rbp + 0x1b], eax
mov eax, dword [rbx + 8]
xor eax, dword [rsi - 0x10]
mov dword [rbp + 0x1f], eax
mov eax, dword [rsi - 0xc]
xor eax, dword [rbx + 0xc]
mov dword [rbp + 0x23], eax
call fcn.14012e490
dec r14d
lea rbx, [rbx + 0x10]
test r14d, r14d
jg 0x14012dd40
shl r15d, 7
mov eax, r15d
jmp 0x14012da3a
mov r14d, r15d
test r15d, r15d
jle 0x14012ddbb
sub rbx, rsi
nop word [rax + rax]
lea rdx, [rbx + rsi]
mov r8, rsi
mov rcx, rdi
call fcn.14012e490
add rsi, 0x10
dec r14d
test r14d, r14d
jg 0x14012dda0
shl r15d, 7
mov eax, r15d
jmp 0x14012da3a
xor eax, eax
add rsp, 0x88
pop rdi
pop rsi
pop rbx
pop rbp
ret