Function at 0x1400316e0
Capabilities:
Hash data using djb2

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x2a0
mov rax, qword [0x1402376b8]
xor rax, rsp
mov qword [rsp + 0x290], rax
movzx eax, byte [rdx + 0x198]
mov r13, rcx
mov qword [rsp + 0x40], rcx
lea rcx, [rsp + 0x70]
imul rbx, rax, 0x748
mov qword [rsp + 0x68], rdx
call qword [0x14018c050]
cmp dword [0x1432bf23c], 0
je 0x140031761
mov eax, dword [0x1432bf158]
lea r8, [0x1401c6b98]
mov r9d, dword [0x140237738]
lea rdx, [0x1401c6cc8]
mov ecx, 4
mov dword [rsp + 0x20], eax
call fcn.1400432a0
lea rcx, [0x140000000]
mov esi, 0x1505
lea rax, [rcx + 0x32aafd8]
add rax, rbx
lea r12, [rcx + 0x32ab098]
mov qword [rsp + 0x78], rax
add r12, rbx
lea rax, [rcx + 0x32aad98]
add rax, rbx
xor r14d, r14d
mov qword [rsp + 0x80], rax
lea r15d, [r14 + 0x72]
movabs rbp, 0x431bde82d7b634db
movabs rdi, 0xcccccccccccccccd
lea rcx, [rsp + 0x50]
call qword [0x14018c050]
mov eax, dword [rsp + 0x50]
mov ecx, dword [rsp + 0x54]
shl rcx, 0x20
or rcx, rax
mov rax, rdi
mul rcx
movabs rax, 0x295e9648864000
mov rdi, rdx
shr rdi, 3
sub rdi, rax
mov rax, rbp
mul rdi
mov rax, rdx
shr rax, 0x12
mov qword [rsp + 0x60], rax
imul eax, eax, 0xf4240
sub edi, eax
cmp dword [0x140238244], r14d
je 0x140031825
cmp dword [0x1432aac64], r14d
lea rbx, [0x1401c6bb0]
lea rax, [0x1401c6c30]
cmovne rbx, rax
jmp 0x14003182c
lea rbx, [0x1401c6b68]
mov ebp, dword [0x140237738]
mov rax, 0xffffffffffffffff
nop dword [rax]
inc rax
cmp byte [r12 + rax], r14b
jne 0x140031840
mov r9, qword [rsp + 0x78]
lea r8, [0x1402184b0]
neg rax
mov qword [rsp + 0x28], r12
mov edx, 0x200
lea rcx, [rsp + 0x90]
sbb eax, eax
and eax, 0x3a
mov dword [rsp + 0x20], eax
call fcn.140029200
mov rdx, qword [rsp + 0x80]
lea rax, [rsp + 0x48]
mov qword [rsp + 0x38], rax
lea r8, [rsp + 0x90]
mov dword [rsp + 0x30], r14d
mov r9, rbx
mov dword [rsp + 0x28], r14d
mov rcx, r13
mov dword [rsp + 0x20], ebp
call fcn.1400439e0
lea rcx, [rsp + 0x58]
mov rbx, rax
call qword [0x14018c050]
mov edx, dword [rsp + 0x5c]
movabs rax, 0xcccccccccccccccd
mov ecx, dword [rsp + 0x58]
shl rdx, 0x20
or rdx, rcx
mul rdx
movabs rax, 0x295e9648864000
mov r13, rdx
shr r13, 3
sub r13, rax
movabs rax, 0x431bde82d7b634db
mul r13
mov rax, rdx
shr rax, 0x12
mov qword [rsp + 0x70], rax
imul eax, eax, 0xf4240
sub r13d, eax
cmp dword [0x1432aab84], r14d
jne 0x140031a83
mov rbp, qword [rsp + 0x68]
mov eax, dword [0x1432bf46c]
movzx ecx, byte [rbp + 0x198]
cmp ecx, eax
jne 0x140031a83
mov eax, dword [0x140238244]
test eax, eax
jne 0x1400319cf
cmp dword [0x14023773c], r14d
je 0x140031a75
test rbx, rbx
je 0x140031aa4
test eax, eax
je 0x140031ad1
test rbx, rbx
je 0x140031a10
cmp dword [rbx], r14d
jne 0x140031a10
lea rax, [0x1401c5ec4]
mov r9, rsi
mov rcx, r15
nop dword [rax]
imul r9, r9, 0x21
lea rax, [rax + 1]
add r9, rcx
movsx rcx, byte [rax]
test rcx, rcx
jne 0x140031980
mov rcx, qword [rbx + 0x20]
lea r8, [0x140000000]
xor edx, edx
mov rax, r9
div qword [r8 + rcx*8 + 0x1c5670]
lea r8, [0x1401c5ec4]
shl rdx, 4
lea rcx, [rbx + 0x10]
add rdx, qword [rbx + 0x18]
call fcn.14002a1c0
test rax, rax
je 0x140031a10
mov rcx, qword [rax + 0x18]
jmp 0x140031a13
cmp dword [0x14023773c], r14d
je 0x14003194d
test rbx, rbx
jne 0x140031956
cmp dword [rsp + 0x48], r14d
jne 0x140031aa4
lea rdx, [0x1401c6e48]
lea ecx, [rbx + 2]
call fcn.1400432a0
mov r13, qword [rsp + 0x40]
mov dword [0x140238244], r14d
jmp 0x14003179f
mov rcx, r14
mov rdx, rbp
call fcn.14002fae0
cmp dword [0x140238244], r14d
mov ebp, eax
jne 0x140031b4d
mov r13, qword [rsp + 0x40]
movabs rdi, 0xcccccccccccccccd
movabs rbp, 0x431bde82d7b634db
test rbx, rbx
je 0x1400317b3
mov rax, qword [rbx + 8]
cmp rax, 0xffffffffffffffff
je 0x1400317b3
sub rax, 1
mov qword [rbx + 8], rax
jne 0x1400317b3
mov rcx, rbx
call fcn.14002c610
jmp 0x1400317b3
lea rdx, [0x1401c6d88]
xor ecx, ecx
call fcn.1400432a0
test rbx, rbx
je 0x140031aa4
mov rax, qword [rbx + 8]
cmp rax, 0xffffffffffffffff
je 0x140031aa4
sub rax, 1
mov qword [rbx + 8], rax
jne 0x140031aa4
mov rcx, rbx
call fcn.14002c610
xor eax, eax
mov rcx, qword [rsp + 0x290]
xor rcx, rsp
call fcn.140189f20
mov rbx, qword [rsp + 0x2f0]
add rsp, 0x2a0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
test rbx, rbx
je 0x140031b40
cmp dword [rbx], r14d
jne 0x140031b40
lea rax, [0x1401c5edc]
nop dword [rax]
nop word [rax + rax]
imul rsi, rsi, 0x21
lea rax, [rax + 1]
add rsi, r15
movsx r15, byte [rax]
test r15, r15
jne 0x140031af0
mov rcx, qword [rbx + 0x20]
lea r8, [0x140000000]
xor edx, edx
mov rax, rsi
mov r9, rsi
div qword [r8 + rcx*8 + 0x1c5670]
lea r8, [0x1401c5edc]
shl rdx, 4
lea rcx, [rbx + 0x10]
add rdx, qword [rbx + 0x18]
call fcn.14002a1c0
test rax, rax
je 0x140031b40
mov r14, qword [rax + 0x18]
mov rdx, rbp
mov rcx, r14
call fcn.14002d970
mov ebp, eax
cmp dword [0x1432bf354], 0
je 0x140031bfe
test ebp, ebp
je 0x140031bfe
mov r8, qword [rsp + 0x60]
cmp r13d, edi
jge 0x140031b8f
mov ecx, edi
mov eax, 0x431bde83
sub ecx, r13d
imul ecx
sar edx, 0x12
mov ecx, edx
shr ecx, 0x1f
inc ecx
add edx, ecx
imul ecx, edx, 0xfff0bdc0
add edi, ecx
add r8d, edx
mov ecx, r13d
sub ecx, edi
cmp ecx, 0xf4240
jle 0x140031bb8
mov eax, 0x431bde83
imul ecx
sar edx, 0x12
mov eax, edx
shr eax, 0x1f
add edx, eax
imul eax, edx, 0xf4240
add edi, eax
sub r8d, edx
mov rax, qword [rsp + 0x70]
lea rdx, [0x1401c6e80]
sub eax, r8d
sub r13d, edi
mov ecx, 4
movd xmm2, eax
cvtdq2pd xmm2, xmm2
movd xmm0, r13d
mulsd xmm2, qword [0x14021aa98]
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x14021aa30]
addsd xmm2, xmm0
movq r8, xmm2
call fcn.1400432a0
test rbx, rbx
je 0x140031c1f
mov rax, qword [rbx + 8]
cmp rax, 0xffffffffffffffff
je 0x140031c1f
sub rax, 1
mov qword [rbx + 8], rax
jne 0x140031c1f
mov rcx, rbx
call fcn.14002c610
mov rdx, qword [rsp + 0x68]
mov rcx, qword [rsp + 0x40]
call fcn.140031270
mov rdx, qword [rsp + 0x68]
mov rcx, qword [rsp + 0x40]
call fcn.140031080
mov eax, ebp
jmp 0x140031aa6