Function at 0x28cb04640
Capabilities:
Hash data using djb2

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x68
mov r8d, dword [rdx + 8]
mov rbx, qword [rdx]
shl r8, 4
lea rdi, [rbx + r8]
sar r8, 6
mov qword [rsp + 0x48], rcx
mov rsi, rcx
mov rbp, rdx
lea r9, [rsp + 0x48]
test r8, r8
je 0x28cb046d9
mov rdx, qword [rbx]
mov rcx, r9
call fcn.28cb51b10
test al, al
jne 0x28cb04734
mov rdx, qword [rbx + 0x10]
mov rcx, r9
call fcn.28cb51b10
test al, al
je 0x28cb046a4
add rbx, 0x10
jmp 0x28cb04734
mov rdx, qword [rbx + 0x20]
mov rcx, r9
call fcn.28cb51b10
test al, al
je 0x28cb046ba
add rbx, 0x20
jmp 0x28cb04734
mov rdx, qword [rbx + 0x30]
mov rcx, r9
call fcn.28cb51b10
test al, al
je 0x28cb046d0
add rbx, 0x30
jmp 0x28cb04734
add rbx, 0x40
dec r8
jmp 0x28cb04673
mov rax, rdi
sub rax, rbx
cmp rax, 0x20
je 0x28cb0470e
cmp rax, 0x30
je 0x28cb046f9
cmp rax, 0x10
je 0x28cb04723
mov rbx, rdi
jmp 0x28cb04782
mov rdx, qword [rbx]
lea rcx, [rsp + 0x48]
call fcn.28cb51b10
test al, al
jne 0x28cb04734
add rbx, 0x10
mov rdx, qword [rbx]
lea rcx, [rsp + 0x48]
call fcn.28cb51b10
test al, al
jne 0x28cb04734
add rbx, 0x10
mov rdx, qword [rbx]
lea rcx, [rsp + 0x48]
call fcn.28cb51b10
test al, al
je 0x28cb046f1
mov rdx, rdi
sub rdx, rbx
sar rdx, 4
cmp rdi, rbx
je 0x28cb04782
lea r12, [rsp + 0x48]
mov rcx, r12
call fcn.28cb850c0
mov rax, qword [rsp + 0x50]
mov rcx, rbx
mov r8, rsi
mov r9, qword [rsp + 0x48]
mov rdx, rdi
mov qword [rsp + 0x28], rax
mov rax, qword [rsp + 0x58]
mov qword [rsp + 0x20], rax
call fcn.28cbaf980
mov rcx, r12
mov rbx, rax
call method.std::_Temporary_buffer_lld::elf::SymbolTableEntry__lld::elf::SymbolTableEntry_._Temporary_buffer__
mov r12d, dword [rbp + 8]
mov ecx, 4
shl r12, 4
add r12, qword [rbp]
mov rax, r12
sub rax, rbx
sar rax, 4
cqo
idiv rcx
mov edx, 1
test rax, rax
cmove rax, rdx
mov qword [rsi + 0xc0], rax
cmp r12, rbx
je 0x28cb049ae
mov r13, rbx
lea r14, [rsp + 0x48]
cmp r12, r13
je 0x28cb048c5
mov r8, qword [r13]
mov ecx, 0x1505
mov rax, qword [r8 + 8]
mov edx, dword [r8 + 0x10]
add rdx, rax
cmp rdx, rax
je 0x28cb047f7
imul ecx, ecx, 0x21
movzx r9d, byte [rax]
inc rax
add ecx, r9d
jmp 0x28cb047e3
mov eax, ecx
xor edx, edx
mov dword [rsp + 0x58], ecx
mov ecx, dword [rsi + 0xb4]
div qword [rsi + 0xc0]
mov rax, qword [r13 + 8]
mov qword [rsp + 0x48], r8
mov qword [rsp + 0x50], rax
mov eax, dword [rsi + 0xb0]
lea r8, [rax + 1]
mov dword [rsp + 0x5c], edx
mov rdx, qword [rsi + 0xa8]
cmp rcx, r8
jb 0x28cb04839
mov rdi, r14
jmp 0x28cb04897
cmp r14, rdx
jb 0x28cb04867
imul rax, rax, 0x18
add rax, rdx
cmp r14, rax
jae 0x28cb04867
movabs rax, 0xaaaaaaaaaaaaaaab
mov rdi, r14
mov r15b, 1
sub rdi, rdx
sar rdi, 3
imul rdi, rax
jmp 0x28cb0486e
or rdi, 0xffffffffffffffff
xor r15d, r15d
lea rdx, [rsi + 0xb8]
lea rcx, [rsi + 0xa8]
mov r9d, 0x18
call fcn.28ca71c08
test r15b, r15b
je 0x28cb04834
imul rdi, rdi, 0x18
add rdi, qword [rsi + 0xa8]
mov eax, dword [rsi + 0xb0]
movups xmm0, xmmword [rdi]
add r13, 0x10
imul rax, rax, 0x18
add rax, qword [rsi + 0xa8]
movups xmmword [rax], xmm0
mov rdx, qword [rdi + 0x10]
mov qword [rax + 0x10], rdx
inc dword [rsi + 0xb0]
jmp 0x28cb047c6
mov r12d, dword [rsi + 0xb0]
mov rdi, qword [rsi + 0xa8]
imul r12, r12, 0x18
lea r13, [rdi + r12]
cmp rdi, r13
je 0x28cb0494d
movabs rax, 0xaaaaaaaaaaaaaaab
mov rcx, r12
sar rcx, 3
imul rcx, rax
call method.long_long_std.__lg_long_long__long_long_
xor r9d, r9d
mov rdx, r13
mov rcx, rdi
lea r8, [rax + rax]
call fcn.28cb9ad00
cmp r12, 0x180
jbe 0x28cb0493f
lea r12, [rdi + 0x180]
xor r8d, r8d
mov rcx, rdi
mov rdx, r12
call fcn.28cb97a60
cmp r13, r12
je 0x28cb0494d
mov rcx, r12
xor edx, edx
add r12, 0x18
call fcn.28cbaf710
jmp 0x28cb0492a
xor r8d, r8d
mov rdx, r13
mov rcx, rdi
call fcn.28cb97a60
mov ecx, dword [rbp + 8]
mov r8, rbx
lea rdi, [rsp + 0x30]
shl rcx, 4
add rcx, qword [rbp]
mov rdx, rcx
call method.lld::elf::SymbolTableEntry_std::__copy_move_true__true__std::random_access_iterator_tag_::__copy_m_lld::elf::SymbolTableEntry__lld::elf.SymbolTableEntry__lld::elf::SymbolTableEntry__lld::elf::SymbolTableEntry__lld::elf::SymbolTableEntry_
sub rax, qword [rbp]
mov rbx, qword [rsi + 0xa8]
sar rax, 4
mov dword [rbp + 8], eax
mov esi, dword [rsi + 0xb0]
imul rsi, rsi, 0x18
add rsi, rbx
cmp rsi, rbx
je 0x28cb049ae
mov rdx, qword [rbx]
mov rax, qword [rbx + 8]
mov rcx, rbp
add rbx, 0x18
mov qword [rsp + 0x30], rdx
mov rdx, rdi
mov qword [rsp + 0x38], rax
call method.llvm::SmallVectorTemplateBase_lld::elf::SymbolTableEntry__true_.push_back_lld::elf::SymbolTableEntry_
jmp 0x28cb04987
add rsp, 0x68
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret