Function at 0x180096a00
Capabilities:
Encode data using xor

Disassembly:
sub rsp, 0x88
test rcx, rcx
mov qword [rsp + 0x80], rbx
mov qword [rsp + 0x78], rbp
mov rbx, r8
mov rbp, rdx
mov r8, rcx
je 0x180096e2d
test rdx, rdx
je 0x180096e2d
movzx ecx, byte [rcx + 0x14]
cmp cl, 3
je 0x180096a41
cmp byte [rdx], 0
je 0x180096e2d
test rbx, rbx
je 0x180096e26
test r9d, r9d
jle 0x180096e26
mov qword [rsp + 0x70], rsi
mov qword [rsp + 0x68], rdi
mov qword [rsp + 0x60], r12
mov eax, r9d
mov qword [rsp + 0x58], r13
mov qword [rsp + 0x50], r14
cdq
mov qword [rsp + 0x48], r15
and edx, 0x7f
add eax, edx
movzx edx, cl
sar eax, 7
dec edx
mov r9d, eax
mov dword [rsp + 0x90], eax
je 0x180096de3
dec edx
je 0x180096d38
dec edx
je 0x180096ad6
mov eax, 0xfffffffb
mov r14, qword [rsp + 0x50]
mov r13, qword [rsp + 0x58]
mov r12, qword [rsp + 0x60]
mov rdi, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x70]
mov r15, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x78]
mov rbx, qword [rsp + 0x80]
add rsp, 0x88
ret
test r9d, r9d
mov eax, dword [r8]
mov edi, r9d
mov dword [rsp + 0x20], eax
mov eax, dword [r8 + 4]
mov dword [rsp + 0x24], eax
mov eax, dword [r8 + 8]
mov dword [rsp + 0x28], eax
mov eax, dword [r8 + 0xc]
mov dword [rsp + 0x2c], eax
jle 0x180096e1a
mov r12, qword [rsp + 0xb0]
movzx r14d, byte [rsp + 0x2f]
movzx r15d, byte [rsp + 0x2e]
nop
nop
nop
xor esi, esi
nop
nop
nop
nop
mov eax, dword [rsp + 0x20]
mov r9d, dword [rbp + 0x4c]
lea r8, [rbp + 0x54]
mov dword [rsp + 0x30], eax
mov eax, dword [rsp + 0x24]
lea rdx, [rsp + 0x30]
mov dword [rsp + 0x34], eax
mov eax, dword [rsp + 0x28]
lea rcx, [rsp + 0x30]
mov dword [rsp + 0x38], eax
mov eax, dword [rsp + 0x2c]
mov dword [rsp + 0x3c], eax
call fcn.1800c3bd0
movzx edx, byte [rsp + 0x21]
movzx r8d, byte [rsp + 0x22]
movzx eax, byte [rsp + 0x20]
movzx ecx, dl
shr cl, 7
add al, al
or cl, al
movzx eax, dl
movzx edx, byte [rsp + 0x23]
mov byte [rsp + 0x20], cl
add al, al
movzx ecx, r8b
shr cl, 7
or cl, al
movzx eax, r8b
movzx r8d, byte [rsp + 0x24]
mov byte [rsp + 0x21], cl
add al, al
movzx ecx, dl
shr cl, 7
or cl, al
movzx eax, dl
movzx edx, byte [rsp + 0x25]
mov byte [rsp + 0x22], cl
add al, al
movzx ecx, r8b
shr cl, 7
or cl, al
movzx eax, r8b
movzx r8d, byte [rsp + 0x26]
mov byte [rsp + 0x23], cl
add al, al
movzx ecx, dl
shr cl, 7
or cl, al
movzx eax, dl
movzx edx, byte [rsp + 0x27]
mov byte [rsp + 0x24], cl
add al, al
movzx ecx, r8b
shr cl, 7
or cl, al
movzx eax, r8b
movzx r8d, byte [rsp + 0x28]
mov byte [rsp + 0x25], cl
add al, al
movzx ecx, dl
shr cl, 7
or cl, al
movzx eax, dl
movzx edx, byte [rsp + 0x29]
mov byte [rsp + 0x26], cl
add al, al
movzx ecx, r8b
shr cl, 7
or cl, al
movzx eax, r8b
movzx r8d, byte [rsp + 0x2a]
mov byte [rsp + 0x27], cl
add al, al
movzx ecx, dl
shr cl, 7
or cl, al
movzx eax, dl
mov byte [rsp + 0x28], cl
movzx ecx, r8b
shr cl, 7
add al, al
movzx edx, byte [rsp + 0x2b]
or cl, al
movzx eax, r8b
movzx r8d, byte [rsp + 0x2c]
add al, al
mov byte [rsp + 0x29], cl
movzx ecx, dl
movzx r10d, r15b
mov r9d, esi
shr cl, 7
and r9d, 7
shr r10b, 7
or cl, al
movzx eax, dl
movzx edx, byte [rsp + 0x2d]
add al, al
mov byte [rsp + 0x2a], cl
movzx r11d, dl
movzx ecx, r8b
shr r11b, 7
shr cl, 7
or cl, al
movzx eax, r8b
add al, al
mov byte [rsp + 0x2b], cl
movzx ecx, r14b
or r11b, al
movzx eax, dl
shr cl, 7
add al, al
mov byte [rsp + 0x2c], r11b
or r10b, al
movzx eax, r15b
mov r15b, cl
add al, al
mov ecx, 7
mov byte [rsp + 0x2d], r10b
or r15b, al
mov eax, esi
sub cl, r9b
shr eax, 3
inc esi
mov byte [rsp + 0x2e], r15b
movzx edx, byte [rax + rbx]
mov r8d, eax
movzx eax, r14b
add al, al
shr dl, cl
movzx ecx, r9b
and dl, 1
mov r14b, dl
or r14b, al
movzx eax, byte [rsp + 0x30]
and al, 0x80
mov byte [rsp + 0x2f], r14b
shr al, cl
xor byte [r8 + r12], al
cmp esi, 0x80
jl 0x180096b30
dec edi
test edi, edi
jg 0x180096b20
mov r9d, dword [rsp + 0x90]
shl r9d, 7
mov eax, r9d
jmp 0x180096aa3
test eax, eax
mov r12d, dword [r8]
mov r13d, dword [r8 + 4]
mov r14d, dword [r8 + 8]
mov r15d, dword [r8 + 0xc]
mov esi, eax
jle 0x180096e1a
mov rdi, qword [rsp + 0xb0]
lea rax, [rbp + 0x54]
nop
mov r9d, dword [rbp + 0x4c]
lea rdx, [rsp + 0x30]
mov r8, rax
mov rcx, rbx
call fcn.1800c4050
mov eax, dword [rsp + 0x3c]
mov r11d, dword [rsp + 0x30]
mov edx, dword [rsp + 0x34]
mov ecx, dword [rsp + 0x38]
xor eax, r15d
xor r11d, r12d
mov r12d, dword [rbx]
xor edx, r13d
mov dword [rdi], r11d
mov r13d, dword [rbx + 4]
xor ecx, r14d
mov dword [rdi + 4], edx
mov r14d, dword [rbx + 8]
mov dword [rdi + 8], ecx
mov r15d, dword [rbx + 0xc]
mov dword [rdi + 0xc], eax
dec esi
add rdi, 0x10
add rbx, 0x10
test esi, esi
mov dword [rsp + 0x3c], eax
mov dword [rsp + 0x30], r11d
mov dword [rsp + 0x34], edx
mov dword [rsp + 0x38], ecx
lea rax, [rbp + 0x54]
jg 0x180096d60
mov r9d, dword [rsp + 0x90]
shl r9d, 7
mov eax, r9d
jmp 0x180096aa3
test eax, eax
mov edi, eax
jle 0x180096e1a
mov rsi, qword [rsp + 0xb0]
mov r9d, dword [rbp + 0x4c]
lea r8, [rbp + 0x54]
mov rdx, rsi
mov rcx, rbx
call fcn.1800c4050
dec edi
add rbx, 0x10
add rsi, 0x10
test edi, edi
jg 0x180096df1
mov r9d, dword [rsp + 0x90]
shl r9d, 7
mov eax, r9d
jmp 0x180096aa3
xor eax, eax
jmp 0x180096ac1
mov eax, 0xfffffffb
jmp 0x180096ac1