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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r14
push r15
sub rsp, 0x20
mov rbp, r9
mov r14, r8
mov rdi, rdx
test rdx, rdx
je 0x18014acb2
mov rcx, rdx
call fcn.1800b7270
mov ecx, dword [rax]
shr ecx, 0x11
test cl, 1
jne 0x18014acb2
test dword [rbp + 0x28], 0x800
je 0x18014ac31
mov ecx, dword [0x180255e0c]
mov rax, qword gs:[0x58]
mov rbx, qword [rax + rcx*8]
mov r15d, 4
xor esi, esi
mov eax, dword [r15 + rbx]
cmp dword [0x180257bbc], eax
jle 0x18014ab01
lea rcx, [0x180257bbc]
call fcn.1801a548c
cmp dword [0x180257bbc], 0xffffffff
jne 0x18014ab01
mov rcx, qword [0x180257700]
mov rax, qword [rcx]
call qword [rax + 0x40]
mov r10, rax
test rax, rax
je 0x18014aaed
nop word [rax + rax]
mov r8, qword [r10 + 0x10]
mov rcx, 0xffffffffffffffff
mov r9d, 0x811c9dc5
inc rcx
cmp byte [r8 + rcx], 0
jne 0x18014aaa1
mov rdx, rsi
test rcx, rcx
je 0x18014aae4
nop dword [rax]
nop word [rax + rax]
movsx eax, byte [r8 + rdx]
xor eax, r9d
imul r9d, eax, 0x1000193
inc rdx
cmp rdx, rcx
jb 0x18014aac0
cmp r9d, 0x7c5cc931
je 0x18014abab
mov r10, qword [r10 + 0x20]
test r10, r10
jne 0x18014aa90
mov eax, esi
mov dword [0x180257bb8], eax
lea rcx, [0x180257bbc]
call fcn.1801a5420
movsxd rax, dword [0x180257bb8]
cmp byte [rax + rdi], 0
je 0x18014abff
mov eax, dword [r15 + rbx]
cmp dword [0x180257bac], eax
jle 0x18014abe4
lea rcx, [0x180257bac]
call fcn.1801a548c
cmp dword [0x180257bac], 0xffffffff
jne 0x18014abe4
mov rcx, qword [0x180257700]
mov rax, qword [rcx]
call qword [rax + 0x40]
mov r10, rax
test rax, rax
je 0x18014abd2
mov r8, qword [r10 + 0x10]
mov rcx, 0xffffffffffffffff
mov r9d, 0x811c9dc5
inc rcx
cmp byte [r8 + rcx], 0
jne 0x18014ab65
mov rdx, rsi
test rcx, rcx
je 0x18014aba0
nop word [rax + rax]
movsx eax, byte [r8 + rdx]
xor eax, r9d
imul r9d, eax, 0x1000193
inc rdx
cmp rdx, rcx
jb 0x18014ab80
cmp r9d, 0x7c5cc931
je 0x18014abc0
mov r10, qword [r10 + 0x20]
test r10, r10
jne 0x18014ab54
jmp 0x18014abd2
lea r8, str.m_bShieldEquipped
mov rdx, qword [r10 + 0x18]
call fcn.1801a5020
jmp 0x18014aaef
lea r8, str.m_flChargeMeter
mov rdx, qword [r10 + 0x18]
call fcn.1801a5020
mov esi, eax
mov dword [0x180257bb4], esi
lea rcx, [0x180257bac]
call fcn.1801a5420
movsxd rax, dword [0x180257bb4]
movss xmm0, dword [rax + rdi]
ucomiss xmm0, dword [0x18022ccf0]
jp 0x18014abff
je 0x18014acb2
test r14, r14
je 0x18014ac31
mov rax, qword [r14]
mov rdx, qword [rax + 0xbe8]
mov rcx, r14
call rdx
cmp eax, 0x3b
jne 0x18014ac31
cmp dword [0x18025782c], 2
jne 0x18014ac31
mov rcx, r14
call fcn.18014a820
test al, al
jne 0x18014acb2
mov rcx, rdi
call fcn.1800b7070
cmp byte [rax], 0
jne 0x18014acb2
mov rcx, rdi
call fcn.1800b7470
mov ecx, dword [rax]
shr ecx, 0xd
test cl, 1
jne 0x18014acb2
mov rcx, rdi
call fcn.1800b7270
mov ecx, dword [rax]
shr ecx, 7
test cl, 1
jne 0x18014acb2
mov rcx, rdi
call fcn.1800b7470
mov ecx, dword [rax]
shr ecx, 0x12
test cl, 1
jne 0x18014acb2
cmp dword [0x180257828], 1
je 0x18014acb2
cmp byte [0x1802513d4], 0
jne 0x18014acb2
test r14, r14
je 0x18014acae
mov rcx, r14
call fcn.1800b7170
cmp dword [rax], 0x2da
jne 0x18014acae
test byte [rbp + 0x28], 1
je 0x18014acae
mov rax, qword [0x180257978]
test byte [rax + 0x28], 1
je 0x18014acb2
mov al, 1
jmp 0x18014acb4
xor al, al
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x50]
add rsp, 0x20
pop r15
pop r14
pop rdi
ret