Function at 0x1400163f0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rdi
mov eax, dword [rcx + 4]
lea rdi, [0x14006aec0]
mov r9, rdx
mov r8, rcx
xor r11d, r11d
nop dword [rax]
mov r10, qword [r9 + 0x10]
mov rbx, qword [r9]
test eax, eax
jne 0x14001641f
mov qword [r8 + 8], r11
mov rax, qword [r9 + 8]
cmp rax, r10
jae 0x14001646c
nop dword [rax + rax]
movzx edx, byte [rax + rbx]
inc rax
mov qword [r9 + 8], rax
mov eax, edx
mov ecx, dword [r8 + 4]
and eax, 0x7f
shl rax, cl
or rax, qword [r8 + 8]
mov qword [r8 + 8], rax
test dl, dl
jns 0x1400164be
lea eax, [rcx + 7]
mov dword [r8 + 4], eax
cmp eax, 0x3f
je 0x140016723
mov rax, qword [r9 + 8]
cmp rax, r10
jb 0x140016430
mov r10, qword [r9 + 8]
sub r10, qword [r8 + 0x10]
add qword [r8 + 0x80], r10
mov r9, qword [r9]
add r9, qword [r8 + 0x10]
mov edx, dword [r8 + 0x20]
not edx
test r10, r10
je 0x1400164aa
nop dword [rax]
movzx eax, byte [r9]
lea r9, [r9 + 1]
movzx ecx, dl
xor rcx, rax
shr edx, 8
xor edx, dword [rdi + rcx*4]
sub r10, 1
jne 0x140016490
not edx
mov eax, r11d
mov dword [r8 + 0x20], edx
mov rbx, qword [rsp + 8]
mov rdi, qword [rsp + 0x10]
ret
jne 0x1400164c8
test ecx, ecx
jne 0x140016723
mov edx, dword [r8 + 0x78]
mov dword [r8 + 4], r11d
test edx, edx
je 0x1400166fd
sub edx, 1
je 0x1400166ec
cmp edx, 1
jne 0x140016712
add qword [r8 + 0x98], rax
movzx eax, byte [r8 + 0x90]
mov edx, dword [r8 + 0xa0]
not edx
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0x91]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0x92]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0x93]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0x94]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0x95]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0x96]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0x97]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0x98]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0x99]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0x9a]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0x9b]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0x9c]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0x9d]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0x9e]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0x9f]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
movzx eax, byte [r8 + 0xa0]
shr edx, 8
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0xa1]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0xa2]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0xa3]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0xa4]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0xa5]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0xa6]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
xor rcx, rax
shr edx, 8
movzx eax, byte [r8 + 0xa7]
xor edx, dword [rdi + rcx*4]
movzx ecx, dl
shr edx, 8
xor rcx, rax
xor edx, dword [rdi + rcx*4]
dec qword [r8 + 0x88]
not edx
mov dword [r8 + 0xa0], edx
jmp 0x14001670a
add qword [r8 + 0x90], rax
mov dword [r8 + 0x78], 2
jmp 0x140016712
mov qword [r8 + 0x88], rax
cmp rax, qword [r8 + 0x58]
jne 0x14001673e
mov dword [r8 + 0x78], 1
cmp qword [r8 + 0x88], r11
jbe 0x14001672e
mov eax, r11d
jmp 0x140016410
mov r11d, 7
jmp 0x14001646c
mov eax, 1
mov rbx, qword [rsp + 8]
mov rdi, qword [rsp + 0x10]
ret
mov rbx, qword [rsp + 8]
mov eax, 7
mov rdi, qword [rsp + 0x10]
ret