Function at 0x14012bf60
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x48
mov rbx, qword [rsp + 0xb0]
mov r13, qword [rsp + 0xb8]
mov rsi, r8
mov r14, rcx
mov r12, rdx
mov r8, r9
cmp rcx, rdx
je 0x14012c2d8
cmp rsi, 0xf
jbe 0x14012c363
lea rax, [rsi - 0x10]
mov r15, rbx
shr rax, 4
lea rdi, [rax + 1]
mov qword [rsp + 0x20], rax
shl rdi, 4
mov qword [rsp + 0x28], rdi
lea rbp, [rdx + rdi]
mov rdi, rcx
jmp 0x14012bfcb
mov rdi, rdx
mov rdx, r12
mov qword [rsp + 0xa8], r8
mov rcx, rdi
call r13
mov rdx, qword [r15]
xor qword [r12], rdx
mov rdx, qword [r15 + 8]
xor qword [r12 + 8], rdx
add r12, 0x10
lea rdx, [rdi + 0x10]
cmp r12, rbp
mov r8, qword [rsp + 0xa8]
mov r15, rdi
jne 0x14012bfc8
mov rax, qword [rsp + 0x20]
mov rdi, qword [rsp + 0x28]
and esi, 0xf
shl rax, 4
add rdi, r14
lea rdx, [r14 + rax]
mov rax, qword [rdx]
mov rdx, qword [rdx + 8]
mov qword [rbx], rax
mov qword [rbx + 8], rdx
test rsi, rsi
je 0x14012c1cc
lea rdx, [rsp + 0x30]
mov rcx, rdi
call r13
movzx edx, byte [rdi]
movzx eax, byte [rsp + 0x30]
xor al, byte [rbx]
mov byte [rbp], al
mov byte [rbx], dl
cmp rsi, 1
je 0x14012c1e0
movzx edx, byte [rdi + 1]
movzx eax, byte [rsp + 0x31]
xor al, byte [rbx + 1]
mov byte [rbp + 1], al
mov byte [rbx + 1], dl
cmp rsi, 2
je 0x14012c1e0
movzx edx, byte [rdi + 2]
movzx eax, byte [rsp + 0x32]
xor al, byte [rbx + 2]
mov byte [rbp + 2], al
mov byte [rbx + 2], dl
cmp rsi, 3
je 0x14012c1e0
movzx edx, byte [rdi + 3]
movzx eax, byte [rsp + 0x33]
xor al, byte [rbx + 3]
mov byte [rbp + 3], al
mov byte [rbx + 3], dl
cmp rsi, 4
je 0x14012c1e0
movzx edx, byte [rdi + 4]
movzx eax, byte [rsp + 0x34]
xor al, byte [rbx + 4]
mov byte [rbp + 4], al
mov byte [rbx + 4], dl
cmp rsi, 5
je 0x14012c1e0
movzx edx, byte [rdi + 5]
movzx eax, byte [rsp + 0x35]
xor al, byte [rbx + 5]
mov byte [rbp + 5], al
mov byte [rbx + 5], dl
cmp rsi, 6
je 0x14012c1e0
movzx edx, byte [rdi + 6]
movzx eax, byte [rsp + 0x36]
xor al, byte [rbx + 6]
mov byte [rbp + 6], al
mov byte [rbx + 6], dl
cmp rsi, 7
je 0x14012c1e0
movzx edx, byte [rdi + 7]
movzx eax, byte [rsp + 0x37]
xor al, byte [rbx + 7]
mov byte [rbp + 7], al
mov byte [rbx + 7], dl
cmp rsi, 8
je 0x14012c1e0
movzx edx, byte [rdi + 8]
movzx eax, byte [rsp + 0x38]
xor al, byte [rbx + 8]
mov byte [rbp + 8], al
mov byte [rbx + 8], dl
cmp rsi, 9
je 0x14012c1e0
movzx edx, byte [rdi + 9]
movzx eax, byte [rsp + 0x39]
xor al, byte [rbx + 9]
mov byte [rbp + 9], al
mov byte [rbx + 9], dl
cmp rsi, 0xa
je 0x14012c1e0
movzx edx, byte [rdi + 0xa]
movzx eax, byte [rsp + 0x3a]
xor al, byte [rbx + 0xa]
mov byte [rbp + 0xa], al
mov byte [rbx + 0xa], dl
cmp rsi, 0xb
je 0x14012c1e0
movzx edx, byte [rdi + 0xb]
movzx eax, byte [rsp + 0x3b]
xor al, byte [rbx + 0xb]
mov byte [rbp + 0xb], al
mov byte [rbx + 0xb], dl
cmp rsi, 0xc
je 0x14012c1e0
movzx edx, byte [rdi + 0xc]
movzx eax, byte [rsp + 0x3c]
xor al, byte [rbx + 0xc]
mov byte [rbp + 0xc], al
mov byte [rbx + 0xc], dl
cmp rsi, 0xd
je 0x14012c1e0
movzx edx, byte [rdi + 0xd]
movzx eax, byte [rsp + 0x3d]
xor al, byte [rbx + 0xd]
mov byte [rbp + 0xd], al
mov byte [rbx + 0xd], dl
cmp rsi, 0xf
jne 0x14012c1e0
movzx edx, byte [rdi + 0xe]
movzx eax, byte [rsp + 0x3e]
xor al, byte [rbx + 0xe]
mov byte [rbp + 0xe], al
mov byte [rbx + 0xe], dl
movzx eax, byte [rdi + 0xf]
mov byte [rbx + 0xf], al
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx eax, byte [rdi + rsi]
mov byte [rbx + rsi], al
cmp rsi, 0xf
je 0x14012c1cc
movzx eax, byte [rdi + rsi + 1]
mov byte [rbx + rsi + 1], al
cmp rsi, 0xe
je 0x14012c1cc
movzx eax, byte [rdi + rsi + 2]
mov byte [rbx + rsi + 2], al
cmp rsi, 0xd
je 0x14012c1cc
movzx eax, byte [rdi + rsi + 3]
mov byte [rbx + rsi + 3], al
cmp rsi, 0xc
je 0x14012c1cc
movzx eax, byte [rdi + rsi + 4]
mov byte [rbx + rsi + 4], al
cmp rsi, 0xb
je 0x14012c1cc
movzx eax, byte [rdi + rsi + 5]
mov byte [rbx + rsi + 5], al
cmp rsi, 0xa
je 0x14012c1cc
movzx eax, byte [rdi + rsi + 6]
mov byte [rbx + rsi + 6], al
cmp rsi, 9
je 0x14012c1cc
movzx eax, byte [rdi + rsi + 7]
mov byte [rbx + rsi + 7], al
cmp rsi, 8
je 0x14012c1cc
movzx eax, byte [rdi + rsi + 8]
mov byte [rbx + rsi + 8], al
cmp rsi, 7
je 0x14012c1cc
movzx eax, byte [rdi + rsi + 9]
mov byte [rbx + rsi + 9], al
cmp rsi, 6
je 0x14012c1cc
movzx eax, byte [rdi + rsi + 0xa]
mov byte [rbx + rsi + 0xa], al
cmp rsi, 5
je 0x14012c1cc
movzx eax, byte [rdi + rsi + 0xb]
mov byte [rbx + rsi + 0xb], al
cmp rsi, 4
je 0x14012c1cc
movzx eax, byte [rdi + rsi + 0xc]
mov byte [rbx + rsi + 0xc], al
cmp rsi, 3
je 0x14012c1cc
movzx eax, byte [rdi + rsi + 0xd]
mov byte [rbx + rsi + 0xd], al
cmp rsi, 2
je 0x14012c1cc
movzx eax, byte [rdi + 0xf]
mov byte [rbx + 0xf], al
jmp 0x14012c1cc
mov rbp, rcx
mov rdi, rcx
cmp rsi, 0xf
jbe 0x14012c02a
lea rdx, [rsi - 0x10]
lea rax, [rsp + 0x30]
mov r15, rcx
and rdx, 0xfffffffffffffff0
mov qword [rsp + 0x20], rax
lea rbp, [rdx + 0x10]
lea rdi, [rcx + rbp]
nop dword [rax]
mov rcx, r14
mov qword [rsp + 0xa8], r8
add r14, 0x10
add r15, 0x10
mov rdx, qword [rsp + 0x20]
call r13
mov rcx, qword [r14 - 0x10]
mov rdx, qword [rsp + 0x30]
xor rdx, qword [rbx]
mov r8, qword [rsp + 0xa8]
mov qword [r15 - 0x10], rdx
mov rdx, qword [rsp + 0x38]
mov qword [rbx], rcx
xor rdx, qword [rbx + 8]
mov rcx, qword [r14 - 8]
mov qword [r15 - 8], rdx
cmp r14, rdi
mov qword [rbx + 8], rcx
jne 0x14012c308
and esi, 0xf
add rbp, r12
jmp 0x14012c02a
mov rdx, rbx
mov rbp, r12
mov rdi, rcx
jmp 0x14012c01c