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

Disassembly:
mov qword [rsp + 0x20], rdi
push r14
mov r8, rcx
movzx r11d, dl
mov ecx, dword [rcx + 0x9dc]
xor r14d, r14d
imul eax, r11d, 7
lea r9d, [r11 + rcx]
mov dword [r8 + 0x9dc], r9d
sub eax, ecx
mov ecx, dword [r8 + 0x9e8]
add dword [r8 + 0x9e0], eax
movzx eax, byte [rcx + r8 + 0x9d4]
sub r9d, eax
mov dword [r8 + 0x9dc], r9d
mov byte [rcx + r8 + 0x9d4], dl
inc dword [r8 + 0x9e8]
mov eax, dword [r8 + 0x9e8]
cmp eax, 7
mov ecx, dword [r8 + 0x9e4]
cmove eax, r14d
shl ecx, 5
xor ecx, r11d
mov dword [r8 + 0x9e8], eax
mov dword [r8 + 0x9e4], ecx
mov r9d, dword [r8 + 0x14]
mov edi, dword [r8 + 0x9e0]
add edi, dword [r8 + 0x9dc]
mov r10d, dword [r8 + 0x10]
add edi, ecx
mov ecx, r9d
cmp r10d, r9d
jae 0x140041000
mov eax, r10d
inc r10d
lea rcx, [rax + rax*4]
add rcx, rcx
imul eax, dword [r8 + rcx*8 + 0x24], 0x1000193
xor eax, r11d
mov dword [r8 + rcx*8 + 0x24], eax
imul eax, dword [r8 + rcx*8 + 0x28], 0x1000193
xor eax, r11d
mov dword [r8 + rcx*8 + 0x28], eax
mov r9d, dword [r8 + 0x14]
mov ecx, r9d
cmp r10d, r9d
jb 0x140040fc1
mov r10d, dword [r8 + 0x10]
test byte [r8 + 0x1c], 1
je 0x140041019
imul eax, dword [r8 + 0x20], 0x1000193
mov r9d, ecx
xor eax, r11d
mov dword [r8 + 0x20], eax
cmp r10d, r9d
jae 0x1400411a0
mov qword [rsp + 0x18], rbp
movabs rbp, 0x3000000000
mov qword [rsp + 0x20], rsi
lea rsi, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
mov qword [rsp + 0x10], rbx
mov ecx, r10d
mov eax, 3
shl eax, cl
xor edx, edx
mov ecx, eax
mov rax, rdi
div rcx
dec ecx
cmp rdx, rcx
jne 0x140041191
mov eax, r10d
lea rdx, [rax + rax*4]
shl rdx, 4
cmp dword [rdx + r8 + 0x70], r14d
jne 0x1400410c8
lea eax, [r9 - 1]
lea rcx, [rax + rax*4]
shl rcx, 4
add rcx, r8
cmp r9d, dword [r8 + 0x18]
ja 0x1400410ac
mov eax, dword [rcx + 0x24]
mov dword [rcx + 0x74], eax
mov eax, dword [rcx + 0x28]
mov dword [rcx + 0x78], eax
mov byte [rcx + 0x7c], r14b
mov byte [rcx + 0xbc], r14b
mov dword [rcx + 0xc0], r14d
inc dword [r8 + 0x14]
jmp 0x1400410c8
cmp r9d, 0x1f
jne 0x1400410c8
mov eax, dword [r8 + 0x1c]
test al, 1
jne 0x1400410c8
or eax, 1
mov dword [r8 + 0x1c], eax
mov eax, dword [rcx + 0x24]
mov dword [r8 + 0x20], eax
mov eax, dword [rdx + r8 + 0x24]
mov ecx, dword [rdx + r8 + 0x70]
and eax, 0x3f
add rcx, rdx
movzx eax, byte [rax + rsi]
mov byte [rcx + r8 + 0x2c], al
mov eax, dword [rdx + r8 + 0x28]
and eax, 0x3f
movzx eax, byte [rax + rsi]
mov byte [rdx + r8 + 0x6c], al
mov eax, dword [rdx + r8 + 0x70]
cmp eax, 0x3f
jae 0x140041132
inc eax
mov dword [rdx + r8 + 0x70], eax
mov ecx, eax
add rcx, rdx
mov byte [rcx + r8 + 0x2c], r14b
cmp dword [rdx + r8 + 0x70], 0x20
mov dword [rdx + r8 + 0x24], 0x28021967
jae 0x14004112c
mov dword [rdx + r8 + 0x28], 0x28021967
mov byte [rdx + r8 + 0x6c], r14b
mov r9d, dword [r8 + 0x14]
jmp 0x140041185
mov edx, dword [r8 + 0x14]
mov r9d, edx
mov ebx, dword [r8 + 0x10]
mov eax, edx
sub eax, ebx
cmp eax, 2
jb 0x140041185
mov r11, qword [r8]
cmp r11, rbp
ja 0x14004116d
test byte [r8 + 0x1c], 2
je 0x140041159
mov r11, qword [r8 + 8]
mov ecx, ebx
mov eax, 3
shl eax, cl
mov ecx, eax
shl rcx, 6
cmp rcx, r11
jae 0x140041185
inc ebx
mov r9d, edx
lea rcx, [rbx + rbx*4]
add rcx, rcx
cmp dword [r8 + rcx*8 + 0x70], 0x20
jb 0x140041185
mov dword [r8 + 0x10], ebx
inc r10d
cmp r10d, r9d
jb 0x140041042
mov rbx, qword [rsp + 0x10]
mov rbp, qword [rsp + 0x18]
mov rsi, qword [rsp + 0x20]
mov rdi, qword [rsp + 0x28]
pop r14
ret