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

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r14
push r15
lea rbp, [rsp - 0x27]
sub rsp, 0x90
mov qword [rbp - 0x29], 0xfffffffffffffffe
mov rax, qword [0x14044e770]
xor rax, rsp
mov qword [rbp + 0x1f], rax
mov rbx, r9
mov qword [rbp - 0x31], rbx
mov qword [rbp - 0x39], r8
mov rsi, rdx
mov edx, 0x80
mov rax, qword gs:[0x58]
mov rcx, qword [rax]
mov eax, dword [rdx + rcx]
cmp dword [0x14046f748], eax
jg 0x1401a6449
lea rdx, [rbx + 0x20]
mov r8b, 1
lea rcx, [rbp - 1]
call fcn.14005f560
lea r8, [rbp - 1]
mov r12, qword [rbp - 1]
cmp qword [rbp + 0x17], 8
cmovae r8, r12
movabs rcx, 0xcbf29ce484222325
xor edx, edx
mov r11, qword [rbp + 0xf]
lea r9, [r11 + r11]
test r9, r9
je 0x1401a6143
movzx eax, byte [rdx + r8]
xor rcx, rax
movabs r10, 0x100000001b3
imul rcx, r10
inc rdx
cmp rdx, r9
jb 0x1401a6125
and rcx, qword [0x140463310]
mov rax, rcx
add rax, rax
mov r15, qword [0x1404632f8]
mov rax, qword [r15 + rax*8]
add rcx, rcx
mov qword [rbp - 0x49], rcx
mov r10, qword [0x1404632e8]
cmp qword [r15 + rcx*8], r10
jne 0x1401a6174
mov rcx, r10
jmp 0x1401a617c
mov rcx, qword [r15 + rcx*8 + 8]
mov rcx, qword [rcx]
cmp rax, rcx
je 0x1401a6231
lea rdx, [rax + 0x10]
lea rcx, [rbp - 1]
cmp qword [rbp + 0x17], 8
cmovae rcx, r12
mov r9, rdx
mov r14, qword [rdx + 0x18]
cmp r14, 8
jb 0x1401a61a6
mov r9, qword [rdx]
mov rdi, qword [rdx + 0x10]
cmp rdi, r11
jne 0x1401a61d9
mov rbx, rdi
test rdi, rdi
je 0x1401a61d3
sub r9, rcx
movzx edx, word [r9 + rcx]
movzx r8d, word [rcx]
cmp dx, r8w
jne 0x1401a61e2
add rcx, 2
sub rbx, 1
jne 0x1401a61ba
xor ecx, ecx
test ecx, ecx
je 0x1401a61eb
mov rax, qword [rax]
mov rcx, qword [rbp - 0x49]
jmp 0x1401a6169
sbb ecx, ecx
and ecx, 0xfffffffe
inc ecx
jmp 0x1401a61d5
lea rcx, [rax + 0x10]
cmp r14, 8
jb 0x1401a61f8
mov rcx, qword [rcx]
lea rdx, [rbp - 1]
cmp qword [rbp + 0x17], 8
cmovae rdx, r12
cmp r11, rdi
jne 0x1401a6231
test r11, r11
je 0x1401a622b
sub rdx, rcx
movzx r8d, word [rdx + rcx]
movzx r9d, word [rcx]
cmp r8w, r9w
jne 0x1401a6241
add rcx, 2
sub r11, 1
jne 0x1401a6212
xor ecx, ecx
test ecx, ecx
je 0x1401a6234
mov rax, r10
cmp rax, r10
jne 0x1401a624a
mov bl, 1
mov r14d, dword [rbp - 0x49]
jmp 0x1401a6250
sbb ecx, ecx
and ecx, 0xfffffffe
inc ecx
jmp 0x1401a622d
mov r14d, dword [rax + 0x30]
xor bl, bl
lea rcx, [rbp - 1]
call fcn.14004b500
test bl, bl
je 0x1401a6276
call fcn.140298678
lea rdx, [0x14046f750]
mov rcx, rsi
call fcn.14004a36c
jmp 0x1401a6428
lea rdx, [rbp - 0x11]
mov rcx, qword [rbp - 0x39]
mov rcx, qword [rcx]
call fcn.14018256c
mov r15, qword [rax]
mov rdi, qword [rax + 8]
test rdi, rdi
je 0x1401a629a
lock inc dword [rdi + 8]
mov rdi, qword [rax + 8]
mov qword [rbp - 0x21], r15
mov qword [rbp - 0x19], rdi
mov rbx, qword [rbp - 9]
or r12d, 0xffffffff
test rbx, rbx
je 0x1401a62e8
mov eax, r12d
lock xadd dword [rbx + 8], eax
add eax, r12d
jne 0x1401a62e8
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax]
call qword [str.PM_]
mov eax, r12d
lock xadd dword [rbx + 0xc], eax
add eax, r12d
jne 0x1401a62e8
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [str.PM_]
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x49], xmm0
lea rcx, [r15 + 0x78]
mov r8, qword [rbp - 0x31]
lea rdx, [rbp - 0x39]
call fcn.14007e518
mov rax, qword [rbp - 0x39]
cmp rax, qword [r15 + 0x80]
je 0x1401a63da
lea rdx, [rax + 0x78]
cmp qword [rdx], 0
je 0x1401a63da
lea rcx, [rbp - 0x49]
call fcn.1400689a4
test r14d, r14d
je 0x1401a63d0
cmp r14d, 1
je 0x1401a63c6
lea eax, [r14 - 2]
cmp eax, 1
ja 0x1401a6355
mov rax, qword [rbp - 0x49]
mov rdx, qword [rax + 0xf8]
test rdx, rdx
jne 0x1401a63ae
lea rdx, [0x14046f750]
mov rcx, rsi
call fcn.14004a36c
nop
mov rcx, qword [rbp - 0x41]
test rcx, rcx
je 0x1401a63ea
mov eax, r12d
lock xadd dword [rcx + 8], eax
add eax, r12d
jne 0x1401a63ea
mov rbx, qword [rbp - 0x41]
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax]
call qword [str.PM_]
mov eax, r12d
lock xadd dword [rbx + 0xc], eax
add eax, r12d
jne 0x1401a63ea
mov rcx, qword [rbp - 0x41]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [str.PM_]
jmp 0x1401a63ea
mov rcx, rsi
cmp r14d, 2
jne 0x1401a63bd
add rdx, 0x10
jmp 0x1401a635f
add rdx, 0xc0
jmp 0x1401a635f
mov rdx, qword [rbp - 0x49]
add rdx, 0x10
jmp 0x1401a635c
mov rdx, qword [rbp - 0x49]
add rdx, 0x30
jmp 0x1401a635c
lea rdx, [0x14046f750]
mov rcx, rsi
call fcn.14004a36c
nop
test rdi, rdi
je 0x1401a6428
mov eax, r12d
lock xadd dword [rdi + 8], eax
add eax, r12d
jne 0x1401a6428
mov rax, qword [rdi]
mov rcx, rdi
mov rax, qword [rax]
call qword [str.PM_]
mov eax, r12d
lock xadd dword [rdi + 0xc], eax
add eax, r12d
jne 0x1401a6428
mov rax, qword [rdi]
mov rcx, rdi
mov rax, qword [rax + 8]
call qword [str.PM_]
mov rax, rsi
mov rcx, qword [rbp + 0x1f]
xor rcx, rsp
call fcn.1402ae860
add rsp, 0x90
pop r15
pop r14
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
lea rcx, [0x14046f748]
call fcn.1402b44c8
cmp dword [0x14046f748], 0xffffffff
jne 0x1401a60eb
lea rdx, [0x14030cae0]
lea rcx, [0x14046f750]
call fcn.14004a9e4
lea rcx, [0x1402ef2f0]
call fcn.1402aecdc
nop
lea rcx, [0x14046f748]
call fcn.1402b4468
jmp 0x1401a60eb