Function at 0x140015810
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x58
mov rbx, qword [rcx + 0x20]
mov rax, qword [rbx]
test rax, rax
je 0x140015834
mov eax, dword [rax]
cmp eax, 1
jle 0x140015846
mov rdx, qword [rbx + 0x10]
mov r8d, 1
mov rcx, rbx
call fcn.14003f770
mov rax, qword [rbx + 8]
xor r12d, r12d
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x30], r12
nop word [rax + rax]
add rax, r12
movzx r9d, byte [rax + 1]
movzx r8d, byte [rax + 2]
movzx ebx, r9b
movzx edx, byte [rax]
movzx r10d, r8b
movzx ecx, byte [rax + 3]
add r10b, r10b
movzx eax, dl
mov byte [rsp + 0xb8], dl
shr al, 7
add dl, dl
movzx eax, al
add bl, bl
imul eax, eax, 0x1b
mov byte [rsp + 0xa8], r9b
mov byte [rsp + 0xb0], r8b
xor dl, al
mov dword [rsp + 0x2c], eax
movzx eax, dl
movzx esi, dl
shr al, 7
add sil, sil
movzx eax, al
imul eax, eax, 0x1b
xor sil, al
mov dword [rsp + 0x24], eax
movzx eax, r9b
shr al, 7
movzx eax, al
imul r14d, eax, 0x1b
xor bl, r14b
movzx eax, bl
mov byte [rsp + 0x21], bl
shr al, 7
movzx r9d, bl
movzx eax, al
add r9b, r9b
imul eax, eax, 0x1b
xor r9b, al
mov dword [rsp + 0x28], eax
movzx eax, r8b
shr al, 7
movzx eax, al
imul r12d, eax, 0x1b
xor r10b, r12b
mov dword [rsp + 0x38], r12d
movzx eax, r10b
movzx r8d, r10b
shr al, 7
xor r10b, dl
movzx eax, al
add r8b, r8b
imul ebp, eax, 0x1b
movzx eax, cl
shr al, 7
add cl, cl
movzx eax, al
imul r13d, eax, 0x1b
xor r8b, bpl
xor cl, r13b
mov dword [rsp + 0x3c], r13d
movzx eax, cl
shr al, 7
movzx eax, al
imul r15d, eax, 0x1b
movzx eax, cl
add al, al
xor al, r15b
xor r10b, al
mov byte [rsp + 0xa0], al
shr al, 7
xor r10b, r8b
movzx eax, al
xor r10b, r9b
imul edi, eax, 0x1b
xor r10b, sil
movzx eax, r8b
mov byte [rsp + 0x20], r10b
shr al, 7
movzx eax, al
imul r11d, eax, 0x1b
movzx eax, r9b
shr al, 7
movzx eax, al
imul r10d, eax, 0x1b
movzx eax, sil
shr al, 7
movzx eax, al
imul edx, eax, 0x1b
xor byte [rsp + 0xa0], cl
mov r13, qword [rsp + 0x30]
mov rbx, qword [rsp + 0x40]
movzx eax, byte [rsp + 0x20]
xor al, byte [rsp + 0xa8]
xor al, byte [rsp + 0xb8]
add al, al
movzx ecx, byte [rsp + 0xa0]
xor al, dl
xor cl, r8b
xor al, r10b
mov r8d, dword [rsp + 0x28]
xor al, r11b
xor cl, r9b
xor cl, byte [rsp + 0x21]
xor al, dil
xor al, bpl
xor cl, sil
xor al, r14b
movzx esi, byte [rsp + 0xa8]
xor al, byte [rsp + 0x24]
xor al, byte [rsp + 0x2c]
xor al, byte [r13 + rbx + 3]
xor al, byte [rsp + 0xb0]
xor al, byte [rsp + 0xa8]
mov byte [r13 + rbx], al
movzx eax, cl
movzx ebx, byte [rsp + 0xb0]
xor al, bl
xor al, sil
add al, al
xor al, dl
xor al, r10b
xor al, r11b
xor al, dil
xor al, r15b
xor al, r12b
xor al, r8b
mov r8, qword [rsp + 0x40]
movzx r9d, byte [r8 + r13 + 3]
xor al, r14b
xor al, r9b
lea r14, [r8 + r13]
movzx r14d, byte [rsp + 0xb8]
xor al, bl
xor al, r14b
xor cl, r9b
mov byte [r8 + r13 + 1], al
xor cl, r14b
movzx eax, byte [rsp + 0x20]
add cl, cl
mov r13d, dword [rsp + 0x3c]
xor al, r9b
xor al, bl
xor cl, dl
add al, al
xor cl, r10b
xor al, dl
xor al, r10b
xor al, r11b
xor al, dil
xor al, r13b
xor al, bpl
xor al, r12b
mov r12, qword [rsp + 0x30]
xor al, byte [rsp + 0x24]
lea rbp, [r12 + r8]
xor al, r9b
xor al, sil
xor al, r14b
mov byte [rbp + 2], al
xor cl, r11b
mov r8d, dword [rsp + 0x28]
xor cl, dil
mov rax, qword [rsp + 0x40]
xor cl, r15b
xor cl, r13b
add r12, 4
xor cl, r8b
mov qword [rsp + 0x30], r12
xor cl, byte [rsp + 0x2c]
xor cl, bl
xor cl, sil
xor cl, r14b
mov byte [rbp + 3], cl
cmp r12, 0x10
jl 0x140015860
add rsp, 0x58
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret