Function at 0x180096340
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
sub rsp, 0x88
test rcx, rcx
mov qword [rax - 8], rbx
mov qword [rax - 0x18], rsi
mov rsi, rdx
mov rbx, r8
je 0x180096754
test rdx, rdx
je 0x180096754
cmp byte [rdx], 1
je 0x180096754
test r8, r8
je 0x18009674d
test r9d, r9d
jle 0x18009674d
mov qword [rax - 0x10], rbp
mov qword [rax - 0x20], rdi
mov qword [rax - 0x28], r12
mov qword [rax - 0x30], r13
mov eax, r9d
cdq
and edx, 0x7f
add eax, edx
movzx edx, byte [rcx + 0x14]
sar eax, 7
dec edx
mov r12d, eax
je 0x180096706
dec edx
je 0x18009664c
dec edx
je 0x1800963ea
mov eax, 0xfffffffb
mov r12, qword [rsp + 0x60]
mov rdi, qword [rsp + 0x68]
mov rbp, qword [rsp + 0x78]
mov r13, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x70]
mov rbx, qword [rsp + 0x80]
add rsp, 0x88
ret
test r12d, r12d
mov eax, dword [rcx]
mov ebx, r12d
mov dword [rsp + 0x20], eax
mov eax, dword [rcx + 4]
mov dword [rsp + 0x24], eax
mov eax, dword [rcx + 8]
mov dword [rsp + 0x28], eax
mov eax, dword [rcx + 0xc]
mov dword [rsp + 0x2c], eax
jle 0x180096741
mov rbp, qword [rsp + 0xb0]
mov qword [rsp + 0x50], r14
movzx r14d, byte [rsp + 0x2f]
mov qword [rsp + 0x48], r15
movzx r15d, byte [rsp + 0x2e]
nop
xor edi, edi
nop
nop
nop
nop
mov eax, dword [rsp + 0x20]
mov r9d, dword [rsi + 0x4c]
lea r8, [rsi + 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 r9d, byte [rsp + 0x22]
movzx eax, byte [rsp + 0x30]
mov edx, edi
mov r11d, edi
and al, 0x80
shr edx, 3
and r11d, 7
movzx ecx, r11b
shr al, cl
xor byte [rdx + rbp], al
movzx r8d, byte [rdx + rbp]
movzx edx, byte [rsp + 0x21]
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, r9b
shr cl, 7
or cl, al
movzx eax, r9b
movzx r9d, 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, r9b
shr cl, 7
or cl, al
movzx eax, r9b
movzx r9d, 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, r9b
shr cl, 7
or cl, al
movzx eax, r9b
movzx r9d, 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
movzx ecx, r9b
add al, al
shr cl, 7
or cl, al
mov byte [rsp + 0x27], cl
movzx ecx, dl
shr cl, 7
movzx eax, r9b
movzx r9d, byte [rsp + 0x2a]
add al, al
inc edi
or cl, al
movzx eax, dl
movzx edx, byte [rsp + 0x2b]
mov byte [rsp + 0x28], cl
add al, al
movzx ecx, r9b
shr cl, 7
or cl, al
movzx eax, r9b
movzx r9d, byte [rsp + 0x2c]
add al, al
mov byte [rsp + 0x29], cl
movzx ecx, dl
shr cl, 7
movzx r10d, r9b
or cl, al
movzx eax, dl
movzx edx, byte [rsp + 0x2d]
add al, al
mov byte [rsp + 0x2a], cl
movzx ecx, dl
shr cl, 7
shr r10b, 7
or r10b, al
movzx eax, r9b
mov r9b, cl
add al, al
movzx ecx, r15b
mov byte [rsp + 0x2b], r10b
or r9b, al
shr cl, 7
movzx eax, dl
add al, al
mov dl, cl
movzx ecx, r14b
or dl, al
shr cl, 7
movzx eax, r15b
add al, al
mov r15b, cl
mov ecx, 7
or r15b, al
movzx eax, r14b
sub cl, r11b
shr r8b, cl
add al, al
mov byte [rsp + 0x2c], r9b
and r8b, 1
mov byte [rsp + 0x2d], dl
mov byte [rsp + 0x2e], r15b
mov r14b, r8b
or r14b, al
cmp edi, 0x80
mov byte [rsp + 0x2f], r14b
jl 0x180096440
dec ebx
test ebx, ebx
jg 0x180096430
mov r15, qword [rsp + 0x48]
mov r14, qword [rsp + 0x50]
shl r12d, 7
mov eax, r12d
jmp 0x1800963c1
mov eax, dword [rcx]
mov rdi, qword [rsp + 0xb0]
mov r9d, dword [rsi + 0x4c]
xor eax, dword [r8]
mov rdx, rdi
mov dword [rsp + 0x30], eax
mov eax, dword [rcx + 4]
xor eax, dword [r8 + 4]
mov dword [rsp + 0x34], eax
mov eax, dword [rcx + 8]
xor eax, dword [r8 + 8]
mov dword [rsp + 0x38], eax
mov eax, dword [rcx + 0xc]
lea rcx, [rsp + 0x30]
xor eax, dword [r8 + 0xc]
lea r8, [rsi + 0x54]
mov dword [rsp + 0x3c], eax
call fcn.1800c3bd0
lea ebp, [r12 - 1]
add rbx, 0x10
test ebp, ebp
jle 0x180096741
nop
nop
nop
mov eax, dword [rbx]
mov r9d, dword [rsi + 0x4c]
add rdi, 0x10
xor eax, dword [rdi - 0x10]
lea r8, [rsi + 0x54]
lea rcx, [rsp + 0x30]
mov dword [rsp + 0x30], eax
mov eax, dword [rbx + 4]
mov rdx, rdi
xor eax, dword [rdi - 0xc]
mov dword [rsp + 0x34], eax
mov eax, dword [rbx + 8]
xor eax, dword [rdi - 8]
mov dword [rsp + 0x38], eax
mov eax, dword [rbx + 0xc]
xor eax, dword [rdi - 4]
mov dword [rsp + 0x3c], eax
call fcn.1800c3bd0
dec ebp
add rbx, 0x10
test ebp, ebp
jg 0x1800966b0
shl r12d, 7
mov eax, r12d
jmp 0x1800963c1
test eax, eax
mov edi, eax
jle 0x180096741
mov rbp, qword [rsp + 0xb0]
nop
nop
nop
mov r9d, dword [rsi + 0x4c]
lea r8, [rsi + 0x54]
mov rdx, rbp
mov rcx, rbx
call fcn.1800c3bd0
dec edi
add rbx, 0x10
add rbp, 0x10
test edi, edi
jg 0x180096720
shl r12d, 7
mov eax, r12d
jmp 0x1800963c1
xor eax, eax
jmp 0x1800963d5
mov eax, 0xfffffffb
jmp 0x1800963d5