Function at 0x180096e40
Capabilities:
Encode data using xor

Disassembly:
sub rsp, 0x78
test rcx, rcx
mov qword [rsp + 0x70], rbx
mov qword [rsp + 0x68], rbp
mov rbx, r8
mov rbp, rdx
mov r8, rcx
je 0x1800970f6
test rdx, rdx
je 0x1800970f6
cmp byte [rdx], 0
je 0x1800970f6
test rbx, rbx
je 0x1800970e5
test r9d, r9d
jle 0x1800970e5
mov qword [rsp + 0x50], r12
mov eax, r9d
cdq
mov r12d, eax
and edx, 0xf
add eax, edx
sar r12d, 4
and eax, 0xf
cmp eax, edx
je 0x180096eb9
mov eax, 0xfffffff8
mov r12, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x68]
mov rbx, qword [rsp + 0x70]
add rsp, 0x78
ret
movzx ecx, byte [rcx + 0x14]
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0x58], rdi
dec ecx
mov qword [rsp + 0x48], r13
je 0x18009703b
dec ecx
je 0x180096f00
mov eax, 0xfffffffb
mov rsi, qword [rsp + 0x60]
mov rdi, qword [rsp + 0x58]
mov r13, qword [rsp + 0x48]
mov r12, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x68]
mov rbx, qword [rsp + 0x70]
add rsp, 0x78
ret
mov rax, qword [r8]
lea rcx, [rsp + 0x30]
lea esi, [r12 - 1]
test esi, esi
mov qword [rcx], rax
mov rax, qword [r8 + 8]
mov qword [rcx + 8], rax
jle 0x180096f9e
mov rdi, qword [rsp + 0xa0]
nop
nop
mov r9d, dword [rbp + 0x4c]
lea r8, [rbp + 0x54]
lea rdx, [rsp + 0x20]
mov rcx, rbx
call fcn.1800c4050
mov eax, dword [rsp + 0x34]
mov r11d, dword [rsp + 0x30]
xor dword [rsp + 0x24], eax
mov eax, dword [rsp + 0x38]
xor dword [rsp + 0x20], r11d
xor dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x3c]
lea rcx, [rsp + 0x30]
xor dword [rsp + 0x2c], eax
mov rax, qword [rbx]
dec esi
mov qword [rcx], rax
mov rax, qword [rbx + 8]
add rdi, 0x10
mov qword [rcx + 8], rax
lea rcx, [rsp + 0x20]
add rbx, 0x10
test esi, esi
mov rax, qword [rcx]
mov qword [rdi - 0x10], rax
mov rax, qword [rcx + 8]
mov qword [rdi - 8], rax
jg 0x180096f30
jmp 0x180096fa6
mov rdi, qword [rsp + 0xa0]
mov r9d, dword [rbp + 0x4c]
lea r8, [rbp + 0x54]
lea rdx, [rsp + 0x20]
mov rcx, rbx
call fcn.1800c4050
mov ebx, dword [rsp + 0x2c]
mov eax, dword [rsp + 0x34]
xor ebx, dword [rsp + 0x3c]
xor dword [rsp + 0x24], eax
mov eax, dword [rsp + 0x38]
xor dword [rsp + 0x28], eax
mov r11d, dword [rsp + 0x30]
mov dword [rsp + 0x2c], ebx
xor dword [rsp + 0x20], r11d
shr ebx, 0x18
lea eax, [rbx - 1]
cmp eax, 0xf
ja 0x180097031
mov edx, select
sub edx, ebx
movsxd rcx, edx
cmp rcx, 0x10
jge 0x180097012
nop
movzx eax, byte [rsp + rcx + 0x20]
cmp eax, ebx
jne 0x180097031
inc rcx
cmp rcx, 0x10
jl 0x180097000
movsxd r8, edx
lea rdx, [rsp + 0x20]
mov rcx, rdi
call fcn.180005f30
shl r12d, 4
sub r12d, ebx
mov eax, r12d
jmp 0x180096edd
mov eax, 0xfffffff8
jmp 0x180096edd
lea esi, [r12 - 1]
test esi, esi
jle 0x180097073
mov rdi, qword [rsp + 0xa0]
nop
mov r9d, dword [rbp + 0x4c]
lea r8, [rbp + 0x54]
mov rdx, rdi
mov rcx, rbx
call fcn.1800c4050
dec esi
add rbx, 0x10
add rdi, 0x10
test esi, esi
jg 0x180097050
jmp 0x18009707b
mov rdi, qword [rsp + 0xa0]
mov r9d, dword [rbp + 0x4c]
lea r8, [rbp + 0x54]
lea rdx, [rsp + 0x20]
mov rcx, rbx
call fcn.1800c4050
movzx ebx, byte [rsp + 0x2f]
cmp ebx, 0x10
jge 0x180097031
mov edx, select
sub edx, ebx
movsxd rcx, edx
cmp rcx, 0x10
jge 0x1800970c6
nop
nop
movzx eax, byte [rsp + rcx + 0x20]
cmp eax, ebx
jne 0x180097031
inc rcx
cmp rcx, 0x10
jl 0x1800970b0
movsxd r8, edx
lea rdx, [rsp + 0x20]
mov rcx, rdi
call fcn.180005f30
shl r12d, 4
sub r12d, ebx
mov eax, r12d
jmp 0x180096edd
xor eax, eax
mov rbp, qword [rsp + 0x68]
mov rbx, qword [rsp + 0x70]
add rsp, 0x78
ret
mov rbp, qword [rsp + 0x68]
mov rbx, qword [rsp + 0x70]
mov eax, 0xfffffffb
add rsp, 0x78
ret