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

Disassembly:
mov qword [rsp + 8], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x50
mov rbx, rdx
lea r13, [0x140000000]
mov r15, rcx
xor r12d, r12d
movabs rdi, 0x800000000000000f
mov rax, qword [rbx + 8]
cmp rax, qword [rbx + 0x10]
jae 0x140089be0
movzx ecx, byte [rax]
test cl, cl
jle 0x140089be0
inc rax
mov dword [rbx + 0x20], ecx
mov qword [rbx + 8], rax
mov edx, ecx
jmp 0x140089bf8
mov rcx, rbx
call fcn.14006f1a0
mov edx, eax
mov dword [rbx + 0x20], eax
dec eax
cmp eax, 0x7f
jae case.default.0x140089c15
mov eax, edx
shr eax, 3
dec eax
cmp eax, 0xa
ja case.default.0x140089c15
cdqe
mov ecx, dword [r13 + rax*4 + 0x8a554]
add rcx, r13
jmp rcx
cmp edx, 0xa
jne case.default.0x140089c15
or dword [r15 + 0x10], 1
mov rdx, qword [r15 + 0x18]
cmp rdx, qword [0x1401d2e90]
jne 0x140089ca3
mov r9d, 0x811c9dc5
lea rcx, [0x1400e5891]
mov eax, 0x44
nop dword [rax]
nop dword [rax + rax]
xor eax, r9d
lea rcx, [rcx + 1]
imul r9d, eax, 0x1000193
movzx eax, byte [rcx - 1]
test eax, eax
jne 0x140089c50
lea r8, str.D:BuildServerDworkpackage_cacheprotobuf_blz2.6.1.7includegoogleprotobufdescriptor.pb.h
mov dword [rsp + 0x20], 0xb9c
lea edx, [rax + 0xb]
lea ecx, [rax + 0x28]
call fcn.140025410
mov rdx, rax
test rax, rax
je 0x140089c9c
mov qword [rax + 8], r12
add rax, 0x18
mov qword [rdx], rax
mov qword [rdx + 0x10], rdi
mov byte [rax], r12b
jmp 0x140089c9f
mov rdx, r12
mov qword [r15 + 0x18], rdx
mov rcx, rbx
call fcn.1400703b0
test al, al
je 0x14008a42e
mov rax, qword [r15 + 0x18]
mov edx, dword [rax + 8]
mov rcx, qword [rax]
call fcn.14004e6f0
test al, al
je 0x14008a42e
mov rax, qword [rbx + 8]
cmp rax, qword [rbx + 0x10]
jae 0x140089bc1
cmp byte [rax], 0x12
jne 0x140089bc1
inc rax
mov qword [rbx + 8], rax
jmp 0x140089cf3
cmp edx, 0x12
jne case.default.0x140089c15
or dword [r15 + 0x10], 2
mov rdx, qword [r15 + 0x20]
cmp rdx, qword [0x1401d2e90]
jne 0x140089d73
mov r9d, 0x811c9dc5
lea rcx, [0x1400e5891]
mov eax, 0x44
nop word [rax + rax]
xor eax, r9d
lea rcx, [rcx + 1]
imul r9d, eax, 0x1000193
movzx eax, byte [rcx - 1]
test eax, eax
jne 0x140089d20
lea r8, str.D:BuildServerDworkpackage_cacheprotobuf_blz2.6.1.7includegoogleprotobufdescriptor.pb.h
mov dword [rsp + 0x20], 0xbe8
lea edx, [rax + 0xb]
lea ecx, [rax + 0x28]
call fcn.140025410
mov rdx, rax
test rax, rax
je 0x140089d6c
mov qword [rax + 8], r12
add rax, 0x18
mov qword [rdx], rax
mov qword [rdx + 0x10], rdi
mov byte [rax], r12b
jmp 0x140089d6f
mov rdx, r12
mov qword [r15 + 0x20], rdx
mov rcx, rbx
call fcn.1400703b0
test al, al
je 0x14008a42e
mov rax, qword [r15 + 0x20]
mov edx, dword [rax + 8]
mov rcx, qword [rax]
call fcn.14004e6f0
test al, al
je 0x14008a42e
mov rax, qword [rbx + 8]
cmp rax, qword [rbx + 0x10]
jae 0x140089bc1
cmp byte [rax], 0x1a
jne 0x140089bc1
inc rax
mov qword [rbx + 8], rax
jmp 0x140089dc3
cmp edx, 0x1a
jne case.default.0x140089c15
movsxd rdx, dword [r15 + 0x30]
mov eax, dword [r15 + 0x34]
cmp edx, eax
jge 0x140089de0
mov rax, qword [r15 + 0x28]
mov r8, qword [rax + rdx*8]
lea eax, [rdx + 1]
mov dword [r15 + 0x30], eax
jmp 0x140089e0f
mov edx, dword [r15 + 0x38]
cmp eax, edx
jne 0x140089df3
inc edx
lea rcx, [r15 + 0x28]
call fcn.14007f6f0
call fcn.14007f670
movsxd rcx, dword [r15 + 0x30]
mov r8, rax
inc dword [r15 + 0x34]
mov rax, qword [r15 + 0x28]
mov qword [rax + rcx*8], r8
inc dword [r15 + 0x30]
mov rdx, r8
mov rcx, rbx
call fcn.1400703b0
test al, al
je 0x14008a42e
movsxd rcx, dword [r15 + 0x30]
mov rax, qword [r15 + 0x28]
mov rcx, qword [rax + rcx*8 - 8]
mov edx, dword [rcx + 8]
mov rcx, qword [rcx]
call fcn.14004e6f0
test al, al
je 0x14008a42e
mov rcx, qword [rbx + 0x10]
mov rax, qword [rbx + 8]
cmp rax, rcx
jae 0x140089e63
cmp byte [rax], 0x1a
jne 0x140089e60
inc rax
mov qword [rbx + 8], rax
jmp 0x140089dc3
cmp rax, rcx
movabs rdi, 0x800000000000000f
jae 0x140089bc1
cmp byte [rax], 0x22
jne 0x140089bc1
inc rax
mov qword [rbx + 8], rax
jmp 0x140089e90
cmp edx, 0x22
jne case.default.0x140089c15
nop
lea rcx, [r15 + 0x60]
call fcn.14004ea70
mov rcx, qword [rbx + 8]
mov rsi, rax
cmp rcx, qword [rbx + 0x10]
jae 0x140089eba
movzx edx, byte [rcx]
cmp dl, 0x80
jae 0x140089eba
inc rcx
mov dword [rbp + 0x48], edx
mov qword [rbx + 8], rcx
jmp 0x140089ed1
lea rdx, [rbp + 0x48]
mov rcx, rbx
call fcn.14006f350
test al, al
je 0x14008a42e
mov edx, dword [rbp + 0x48]
mov eax, dword [rbx + 0x38]
inc eax
mov dword [rbx + 0x38], eax
cmp eax, dword [rbx + 0x3c]
jg 0x14008a42e
mov rcx, rbx
call fcn.14006ed10
mov rdx, rbx
mov rcx, rsi
mov edi, eax
call fcn.140087b30
test al, al
je 0x14008a42e
cmp byte [rbx + 0x24], r12b
je 0x14008a42e
mov edx, edi
mov rcx, rbx
call fcn.14006ecc0
mov eax, dword [rbx + 0x38]
test eax, eax
jle 0x140089f1f
dec eax
mov dword [rbx + 0x38], eax
mov rcx, qword [rbx + 0x10]
mov rax, qword [rbx + 8]
cmp rax, rcx
jae 0x140089f40
cmp byte [rax], 0x22
jne 0x140089f3d
inc rax
mov qword [rbx + 8], rax
jmp 0x140089e90
cmp rax, rcx
movabs rdi, 0x800000000000000f
jae 0x140089bc1
cmp byte [rax], 0x2a
jne 0x140089bc1
inc rax
mov qword [rbx + 8], rax
jmp 0x140089f70
cmp edx, 0x2a
jne case.default.0x140089c15
nop dword [rax + rax]
lea rcx, [r15 + 0x78]
call fcn.14004ebd0
mov rcx, qword [rbx + 8]
mov rsi, rax
cmp rcx, qword [rbx + 0x10]
jae 0x140089f9a
movzx edx, byte [rcx]
cmp dl, 0x80
jae 0x140089f9a
inc rcx
mov dword [rbp + 0x50], edx
mov qword [rbx + 8], rcx
jmp 0x140089fb1
lea rdx, [rbp + 0x50]
mov rcx, rbx
call fcn.14006f350
test al, al
je 0x14008a42e
mov edx, dword [rbp + 0x50]
inc dword [rbx + 0x38]
mov eax, dword [rbx + 0x38]
cmp eax, dword [rbx + 0x3c]
jg 0x14008a42e
mov rcx, rbx
call fcn.14006ed10
mov rdx, rbx
mov rcx, rsi
mov edi, eax
call fcn.1400883c0
test al, al
je 0x14008a42e
cmp byte [rbx + 0x24], r12b
je 0x14008a42e
mov edx, edi
mov rcx, rbx
call fcn.14006ecc0
mov eax, dword [rbx + 0x38]
test eax, eax
jle 0x140089ffd
dec eax
mov dword [rbx + 0x38], eax
mov rcx, qword [rbx + 0x10]
mov rax, qword [rbx + 8]
cmp rax, rcx
jae 0x14008a01e
cmp byte [rax], 0x2a
jne 0x14008a01b
inc rax
mov qword [rbx + 8], rax
jmp 0x140089f70
cmp rax, rcx
movabs rdi, 0x800000000000000f
jae 0x140089bc1
cmp byte [rax], 0x32
jne 0x140089bc1
inc rax
mov qword [rbx + 8], rax
jmp 0x14008a050
cmp edx, 0x32
jne case.default.0x140089c15
nop dword [rax]
lea rcx, [r15 + 0x90]
call fcn.14004ef40
mov rcx, qword [rbx + 8]
mov rsi, rax
cmp rcx, qword [rbx + 0x10]
jae 0x14008a07d
movzx edx, byte [rcx]
cmp dl, 0x80
jae 0x14008a07d
inc rcx
mov dword [rbp + 0x58], edx
mov qword [rbx + 8], rcx
jmp 0x14008a094
lea rdx, [rbp + 0x58]
mov rcx, rbx
call fcn.14006f350
test al, al
je 0x14008a42e
mov edx, dword [rbp + 0x58]
inc dword [rbx + 0x38]
mov eax, dword [rbx + 0x38]
cmp eax, dword [rbx + 0x3c]
jg 0x14008a42e
mov rcx, rbx
call fcn.14006ed10
mov rdx, rbx
mov rcx, rsi
mov edi, eax
call fcn.14008bb60
test al, al
je 0x14008a42e
cmp byte [rbx + 0x24], r12b
je 0x14008a42e
mov edx, edi
mov rcx, rbx
call fcn.14006ecc0
mov eax, dword [rbx + 0x38]
test eax, eax
jle 0x14008a0e0
dec eax
mov dword [rbx + 0x38], eax
mov rcx, qword [rbx + 0x10]
mov rax, qword [rbx + 8]
cmp rax, rcx
jae 0x14008a101
cmp byte [rax], 0x32
jne 0x14008a0fe
inc rax
mov qword [rbx + 8], rax
jmp 0x14008a050
cmp rax, rcx
movabs rdi, 0x800000000000000f
jae 0x140089bc1
cmp byte [rax], 0x3a
jne 0x140089bc1
inc rax
mov qword [rbx + 8], rax
jmp 0x14008a130
cmp edx, 0x3a
jne case.default.0x140089c15
nop dword [rax]
lea rcx, [r15 + 0xa8]
call fcn.14004ed30
mov rcx, qword [rbx + 8]
mov rsi, rax
cmp rcx, qword [rbx + 0x10]
jae 0x14008a15d
movzx edx, byte [rcx]
cmp dl, 0x80
jae 0x14008a15d
inc rcx
mov dword [rbp - 0x20], edx
mov qword [rbx + 8], rcx
jmp 0x14008a174
lea rdx, [rbp - 0x20]
mov rcx, rbx
call fcn.14006f350
test al, al
je 0x14008a42e
mov edx, dword [rbp - 0x20]
inc dword [rbx + 0x38]
mov eax, dword [rbx + 0x38]
cmp eax, dword [rbx + 0x3c]
jg 0x14008a42e
mov rcx, rbx
call fcn.14006ed10
mov rdx, rbx
mov rcx, rsi
mov edi, eax
call fcn.140088ee0
test al, al
je 0x14008a42e
cmp byte [rbx + 0x24], r12b
je 0x14008a42e
mov edx, edi
mov rcx, rbx
call fcn.14006ecc0
mov eax, dword [rbx + 0x38]
test eax, eax
jle 0x14008a1c0
dec eax
mov dword [rbx + 0x38], eax
mov rcx, qword [rbx + 0x10]
mov rax, qword [rbx + 8]
cmp rax, rcx
jae 0x14008a1e1
cmp byte [rax], 0x3a
jne 0x14008a1de
inc rax
mov qword [rbx + 8], rax
jmp 0x14008a130
cmp rax, rcx
movabs rdi, 0x800000000000000f
jae 0x140089bc1
cmp byte [rax], 0x42
jne 0x140089bc1
inc rax
mov qword [rbx + 8], rax
jmp 0x14008a20c
cmp edx, 0x42
jne case.default.0x140089c15
mov rcx, r15
call fcn.140091460
mov rcx, qword [rbx + 8]
mov rsi, rax
cmp rcx, qword [rbx + 0x10]
jae 0x14008a235
movzx edx, byte [rcx]
cmp dl, 0x80
jae 0x14008a235
inc rcx
mov dword [rbp - 0x1c], edx
mov qword [rbx + 8], rcx
jmp 0x14008a24c
lea rdx, [rbp - 0x1c]
mov rcx, rbx
call fcn.14006f350
test al, al
je 0x14008a42e
mov edx, dword [rbp - 0x1c]
inc dword [rbx + 0x38]
mov eax, dword [rbx + 0x38]
cmp eax, dword [rbx + 0x3c]
jg 0x14008a42e
mov rcx, rbx
call fcn.14006ed10
mov rdx, rbx
mov rcx, rsi
mov edi, eax
call fcn.14008a700
test al, al
je 0x14008a42e
cmp byte [rbx + 0x24], r12b
je 0x14008a42e
mov edx, edi
mov rcx, rbx
call fcn.14006ecc0
mov eax, dword [rbx + 0x38]
test eax, eax
jle 0x14008a298
dec eax
mov dword [rbx + 0x38], eax
mov rax, qword [rbx + 8]
movabs rdi, 0x800000000000000f
cmp rax, qword [rbx + 0x10]
jae 0x140089bc1
cmp byte [rax], 0x4a
jne 0x140089bc1
inc rax
mov qword [rbx + 8], rax
jmp 0x14008a2cb
cmp edx, 0x4a
jne case.default.0x140089c15
mov rcx, r15
call fcn.1400916b0
mov rcx, qword [rbx + 8]
mov rsi, rax
cmp rcx, qword [rbx + 0x10]
jae 0x14008a2f4
movzx edx, byte [rcx]
cmp dl, 0x80
jae 0x14008a2f4
inc rcx
mov dword [rbp - 0x18], edx
mov qword [rbx + 8], rcx
jmp 0x14008a30b
lea rdx, [rbp - 0x18]
mov rcx, rbx
call fcn.14006f350
test al, al
je 0x14008a42e
mov edx, dword [rbp - 0x18]
inc dword [rbx + 0x38]
mov eax, dword [rbx + 0x38]
cmp eax, dword [rbx + 0x3c]
jg 0x14008a42e
mov rcx, rbx
call fcn.14006ed10
mov rdx, rbx
mov rcx, rsi
mov edi, eax
call fcn.14008c0f0
test al, al
je 0x14008a42e
cmp byte [rbx + 0x24], r12b
je 0x14008a42e
mov edx, edi
mov rcx, rbx
call fcn.14006ecc0
mov eax, dword [rbx + 0x38]
test eax, eax
jle 0x14008a357
dec eax
mov dword [rbx + 0x38], eax
mov rax, qword [rbx + 8]
movabs rdi, 0x800000000000000f
cmp rax, qword [rbx + 0x10]
jae 0x140089bc1
cmp byte [rax], 0x50
jne 0x140089bc1
inc rax
mov qword [rbx + 8], rax
mov edx, 0x50
lea r9, [r15 + 0x40]
mov r8, rbx
lea ecx, [rdx - 0x4f]
call fcn.140080260
test al, al
je 0x14008a42e
mov rcx, qword [rbx + 0x10]
mov rax, qword [rbx + 8]
cmp rax, rcx
jae 0x14008a3b0
cmp byte [rax], 0x50
je 0x14008a378
cmp rax, rcx
movabs rdi, 0x800000000000000f
jae 0x140089bc1
cmp byte [rax], 0x58
jne 0x140089bc1
inc rax
mov qword [rbx + 8], rax
mov rax, qword [rbx + 8]
cmp rax, qword [rbx + 0x10]
jae 0x14008a435
movzx ecx, byte [rax]
cmp cl, 0x80
jae 0x14008a435
inc rax
mov dword [rbp - 0x14], ecx
mov qword [rbx + 8], rax
mov esi, ecx
jmp 0x14008a448
cmp edx, 0x50
je 0x14008a37f
cmp edx, 0x52
jne case.default.0x140089c15
lea rdx, [r15 + 0x40]
mov rcx, rbx
call fcn.140080170
jmp 0x14008a393
cmp edx, 0x58
je 0x14008a3d0
cmp edx, 0x5a
jne case.default.0x140089c15
lea rdx, [r15 + 0x50]
mov rcx, rbx
call fcn.140080170
test al, al
jne 0x14008a4e0
xor al, al
jmp 0x14008a51a
lea rdx, [rbp - 0x14]
mov rcx, rbx
call fcn.14006f350
test al, al
je 0x14008a42e
mov esi, dword [rbp - 0x14]
mov edx, dword [r15 + 0x5c]
cmp dword [r15 + 0x58], edx
jne 0x14008a45d
inc edx
lea rcx, [r15 + 0x50]
call fcn.1400630b0
movsxd rcx, dword [r15 + 0x58]
mov rax, qword [r15 + 0x50]
mov dword [rax + rcx*4], esi
inc dword [r15 + 0x58]
mov esi, dword [r15 + 0x5c]
sub esi, dword [r15 + 0x58]
test esi, esi
jle 0x14008a4e0
nop dword [rax + rax]
mov rcx, qword [rbx + 0x10]
mov rax, qword [rbx + 8]
cmp rax, rcx
jae 0x14008a4e0
cmp byte [rax], 0x58
jne 0x14008a4e0
inc rax
mov qword [rbx + 8], rax
cmp rax, rcx
jae 0x14008a4b4
movzx ecx, byte [rax]
cmp cl, 0x80
jae 0x14008a4b4
inc rax
mov dword [rbp - 0x10], ecx
mov qword [rbx + 8], rax
mov edx, ecx
jmp 0x14008a4cb
lea rdx, [rbp - 0x10]
mov rcx, rbx
call fcn.14006f350
test al, al
je 0x14008a42e
mov edx, dword [rbp - 0x10]
movsxd rcx, dword [r15 + 0x58]
dec esi
mov rax, qword [r15 + 0x50]
mov dword [rax + rcx*4], edx
inc dword [r15 + 0x58]
test esi, esi
jg 0x14008a480
mov rax, qword [rbx + 8]
movabs rdi, 0x800000000000000f
cmp rax, qword [rbx + 0x10]
jb 0x14008a3c0
jne 0x140089bc1
cmp dword [rbx + 0x2c], r12d
jne 0x14008a510
mov eax, dword [rbx + 0x28]
cmp dword [rbx + 0x18], eax
jne 0x140089bc1
mov dword [rbx + 0x20], r12d
mov byte [rbx + 0x24], 1
mov al, 1
mov rbx, qword [rsp + 0x90]
add rsp, 0x50
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
test edx, edx
je 0x14008a518
mov eax, edx
and al, 7
cmp al, 4
je 0x14008a518
lea r8, [r15 + 8]
mov rcx, rbx
call fcn.14007cdc0
test al, al
jne 0x140089bc1
jmp 0x14008a51a