Function at 0x1400895f0
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r13
push r14
push r15
sub rsp, 0x50
mov rbx, rdx
lea r15, [0x140000000]
mov r14, rcx
movabs r13, 0x800000000000000f
nop word [rax + rax]
mov rdx, qword [rbx + 0x10]
mov rcx, qword [rbx + 8]
cmp rcx, rdx
jae 0x140089672
movzx r8d, byte [rcx]
lea rax, [rcx + 1]
test r8b, r8b
jle 0x140089646
mov edx, r8d
mov qword [rbx + 8], rax
mov dword [rbx + 0x20], edx
jmp 0x14008968c
cmp rax, rdx
jae 0x140089672
movzx edx, byte [rax]
mov eax, edx
not eax
and eax, r8d
cmp eax, 0x80
jb 0x140089672
shl edx, 7
lea rax, [rcx + 2]
add edx, 0xffffff80
mov qword [rbx + 8], rax
add edx, r8d
mov dword [rbx + 0x20], edx
jmp 0x14008968c
mov rcx, rbx
call fcn.14006f1a0
mov edx, eax
mov dword [rbx + 0x20], eax
dec eax
cmp eax, 0x3fff
jae case.0x1400896ba.4
mov eax, edx
shr eax, 3
cmp eax, 0x3e7
ja case.0x1400896ba.4
je 0x1400899ff
dec eax
cmp eax, 9
ja case.0x1400896ba.4
cdqe
mov ecx, dword [r15 + rax*4 + 0x89b64]
add rcx, r15
jmp rcx
cmp edx, 8
jne case.0x1400896ba.4
mov rax, qword [rbx + 8]
cmp rax, qword [rbx + 0x10]
jae 0x1400896e7
movzx ecx, byte [rax]
cmp cl, 0x80
jae 0x1400896e7
inc rax
mov dword [rsp + 0x98], ecx
mov qword [rbx + 8], rax
jmp 0x140089706
lea rdx, [rsp + 0x98]
mov rcx, rbx
call fcn.14006f350
test al, al
je 0x140089b46
mov ecx, dword [rsp + 0x98]
mov edx, ecx
test ecx, ecx
je 0x140089729
sub edx, 1
je 0x140089729
cmp edx, 1
je 0x140089729
movsxd r8, ecx
mov edx, 1
lea rcx, [r14 + 0x30]
call fcn.14006e110
jmp 0x140089732
or dword [r14 + 0x38], 1
mov dword [r14 + 0x40], ecx
mov rax, qword [rbx + 8]
cmp rax, qword [rbx + 0x10]
jae 0x140089620
cmp byte [rax], 0x10
jne 0x140089620
inc rax
mov qword [rbx + 8], rax
jmp 0x14008975b
cmp edx, 0x10
jne case.0x1400896ba.4
mov rax, qword [rbx + 8]
cmp rax, qword [rbx + 0x10]
jae 0x14008977e
movzx ecx, byte [rax]
cmp cl, 0x80
jae 0x14008977e
inc rax
mov qword [rsp + 0xa8], rcx
mov qword [rbx + 8], rax
jmp 0x14008979e
lea rdx, [rsp + 0xa8]
mov rcx, rbx
call fcn.14006f450
test al, al
je 0x140089b46
mov rcx, qword [rsp + 0xa8]
test rcx, rcx
setne al
or dword [r14 + 0x38], 2
mov byte [r14 + 0x44], al
mov rax, qword [rbx + 8]
cmp rax, qword [rbx + 0x10]
jae 0x140089620
cmp byte [rax], 0x18
jne 0x140089620
inc rax
mov qword [rbx + 8], rax
jmp 0x1400897d6
cmp edx, 0x18
jne case.0x1400896ba.4
mov rax, qword [rbx + 8]
cmp rax, qword [rbx + 0x10]
jae 0x1400897f6
movzx ecx, byte [rax]
cmp cl, 0x80
jae 0x1400897f6
inc rax
mov qword [rsp + 0x30], rcx
mov qword [rbx + 8], rax
jmp 0x140089810
lea rdx, [rsp + 0x30]
mov rcx, rbx
call fcn.14006f450
test al, al
je 0x140089b46
mov rcx, qword [rsp + 0x30]
test rcx, rcx
setne al
or dword [r14 + 0x38], 8
mov byte [r14 + 0x46], al
mov rax, qword [rbx + 8]
cmp rax, qword [rbx + 0x10]
jae 0x140089620
cmp byte [rax], 0x28
jne 0x140089620
inc rax
mov qword [rbx + 8], rax
jmp 0x140089848
cmp edx, 0x28
jne case.0x1400896ba.4
mov rax, qword [rbx + 8]
cmp rax, qword [rbx + 0x10]
jae 0x140089868
movzx ecx, byte [rax]
cmp cl, 0x80
jae 0x140089868
inc rax
mov qword [rsp + 0x38], rcx
mov qword [rbx + 8], rax
jmp 0x140089882
lea rdx, [rsp + 0x38]
mov rcx, rbx
call fcn.14006f450
test al, al
je 0x140089b46
mov rcx, qword [rsp + 0x38]
test rcx, rcx
setne al
or dword [r14 + 0x38], 4
mov byte [r14 + 0x45], al
mov rax, qword [rbx + 8]
cmp rax, qword [rbx + 0x10]
jae 0x140089620
cmp byte [rax], 0x4a
jne 0x140089620
inc rax
mov qword [rbx + 8], rax
jmp 0x1400898ba
cmp edx, 0x4a
jne case.0x1400896ba.4
or dword [r14 + 0x38], 0x10
mov rdx, qword [r14 + 0x48]
cmp rdx, qword [0x1401d2e90]
jne 0x140089936
mov r9d, 0x811c9dc5
lea rcx, [0x1400e5891]
mov eax, 0x44
nop
xor eax, r9d
lea rcx, [rcx + 1]
imul r9d, eax, 0x1000193
movzx eax, byte [rcx - 1]
test eax, eax
jne 0x1400898e0
lea r8, str.D:BuildServerDworkpackage_cacheprotobuf_blz2.6.1.7includegoogleprotobufdescriptor.pb.h
mov dword [rsp + 0x20], 0x1646
lea edx, [rax + 0xb]
lea ecx, [rax + 0x28]
call fcn.140025410
mov rdx, rax
test rax, rax
je 0x140089930
mov qword [rax + 8], 0
add rax, 0x18
mov qword [rdx], rax
mov qword [rdx + 0x10], r13
mov byte [rax], 0
jmp 0x140089932
xor edx, edx
mov qword [r14 + 0x48], rdx
mov rcx, rbx
call fcn.1400703b0
test al, al
je 0x140089b46
mov rax, qword [r14 + 0x48]
mov edx, dword [rax + 8]
mov rcx, qword [rax]
call fcn.14004e6f0
test al, al
je 0x140089b46
mov rax, qword [rbx + 8]
cmp rax, qword [rbx + 0x10]
jae 0x140089620
cmp byte [rax], 0x50
jne 0x140089620
inc rax
mov qword [rbx + 8], rax
jmp 0x140089986
cmp edx, 0x50
jne case.0x1400896ba.4
mov rax, qword [rbx + 8]
cmp rax, qword [rbx + 0x10]
jae 0x1400899a6
movzx ecx, byte [rax]
cmp cl, 0x80
jae 0x1400899a6
inc rax
mov qword [rsp + 0x40], rcx
mov qword [rbx + 8], rax
jmp 0x1400899c0
lea rdx, [rsp + 0x40]
mov rcx, rbx
call fcn.14006f450
test al, al
je 0x140089b46
mov rcx, qword [rsp + 0x40]
test rcx, rcx
setne al
or dword [r14 + 0x38], 0x20
mov byte [r14 + 0x47], al
mov eax, dword [rbx + 0x10]
sub eax, dword [rbx + 8]
cmp eax, 2
jl 0x140089620
mov rax, qword [rbx + 8]
cmp byte [rax], 0xba
jne 0x140089620
cmp byte [rax + 1], 0x3e
jne 0x140089620
add rax, 2
mov qword [rbx + 8], rax
jmp 0x140089a10
cmp edx, 0x1f3a
jne case.0x1400896ba.4
nop dword [rax + rax]
lea rcx, [r14 + 0x50]
call fcn.14007f980
mov rcx, qword [rbx + 8]
mov rsi, rax
cmp rcx, qword [rbx + 0x10]
jae 0x140089a3e
movzx edx, byte [rcx]
cmp dl, 0x80
jae 0x140089a3e
inc rcx
mov dword [rsp + 0xa0], edx
mov qword [rbx + 8], rcx
jmp 0x140089a5d
lea rdx, [rsp + 0xa0]
mov rcx, rbx
call fcn.14006f350
test al, al
je 0x140089b46
mov edx, dword [rsp + 0xa0]
mov eax, dword [rbx + 0x38]
inc eax
mov dword [rbx + 0x38], eax
cmp eax, dword [rbx + 0x3c]
jg 0x140089b46
mov rcx, rbx
call fcn.14006ed10
mov rdx, rbx
mov rcx, rsi
mov edi, eax
call fcn.14008c570
test al, al
je 0x140089b46
cmp byte [rbx + 0x24], 0
je 0x140089b46
mov edx, edi
mov rcx, rbx
call fcn.14006ecc0
mov eax, dword [rbx + 0x38]
test eax, eax
jle 0x140089aab
dec eax
mov dword [rbx + 0x38], eax
mov eax, dword [rbx + 0x10]
sub eax, dword [rbx + 8]
cmp eax, 2
jl 0x140089ad2
mov rax, qword [rbx + 8]
cmp byte [rax], 0xba
jne 0x140089ad2
cmp byte [rax + 1], 0x3e
jne 0x140089ad2
add rax, 2
mov qword [rbx + 8], rax
jmp 0x140089a10
mov rax, qword [rbx + 8]
cmp rax, qword [rbx + 0x10]
jne 0x140089620
cmp dword [rbx + 0x2c], 0
jne 0x140089af2
mov eax, dword [rbx + 0x28]
cmp dword [rbx + 0x18], eax
jne 0x140089620
mov dword [rbx + 0x20], 0
mov byte [rbx + 0x24], 1
mov al, 1
add rsp, 0x50
pop r15
pop r14
pop r13
pop rdi
pop rsi
pop rbp
pop rbx
ret
test edx, edx
je 0x140089afd
mov eax, edx
and al, 7
cmp al, 4
je 0x140089afd
lea r8, [r14 + 0x30]
cmp edx, 0x1f40
jb 0x140089b57
mov r9, qword [0x1401d2f00]
lea rcx, [r14 + 8]
mov qword [rsp + 0x20], r8
mov r8, rbx
call fcn.1400a2190
test al, al
jne 0x140089620
xor al, al
add rsp, 0x50
pop r15
pop r14
pop r13
pop rdi
pop rsi
pop rbp
pop rbx
ret
mov rcx, rbx
call fcn.14007cdc0
jmp 0x140089b3e