Function at 0x18000e860
Capabilities:
Hash data using djb2

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x10], rdx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x40
mov ebp, r9d
mov rdi, r8
mov r10, rdx
mov r14, rcx
cmp rdx, qword [rcx + 0x48]
jb 0x18000e8a9
lea rax, [rcx + 0x10]
test rax, rax
je 0x18000ec8a
mov qword [rax], reloc.WS2_32.dll_select
mov eax, 0xffffffff
jmp 0x18000eeb4
test byte [rcx + 0x24], 2
je 0x18000e8cd
lea rax, [rcx + 0x10]
test rax, rax
je 0x18000ec8a
mov qword [rax], 0x19
mov eax, 0xffffffff
jmp 0x18000eeb4
xor esi, esi
mov r15d, 0x1505
mov qword [rsp + 0x30], r15
test rdi, rdi
je 0x18000e938
cmp byte [r8], sil
je 0x18000e938
lea r9, [rcx + 0x10]
mov rdx, 0xffffffffffffffff
nop
inc rdx
cmp byte [r8 + rdx], sil
jne 0x18000e8f0
mov r8d, ebp
mov rcx, rdi
call fcn.18000c580
mov rbx, rax
test rax, rax
je 0x18000ec8a
test ebp, 0x1800
jne 0x18000e983
xor edx, edx
mov rcx, rax
call fcn.18000d870
mov r10, qword [rsp + 0x88]
cmp eax, 3
jne 0x18000e98b
mov dword [rbx + 0xc], 2
jmp 0x18000e98b
mov rbx, rsi
test rdi, rdi
jne 0x18000e98b
mov r12, qword [r14 + 0x58]
mov r15, r10
shl r15, 5
mov rbp, qword [r12 + r15]
test rbp, rbp
je 0x18000ea9b
mov rdi, qword [rbp + 0x38]
test rdi, rdi
je 0x18000ea83
test rbx, rbx
je 0x18000ea83
movzx eax, word [rdi + 8]
cmp ax, word [rbx + 8]
je 0x18000ea71
mov ecx, esi
jmp 0x18000ea8b
mov r10, qword [rsp + 0x88]
mov r8, qword [r14 + 0x70]
test r8, r8
je 0x18000e940
cmp qword [r8 + 8], rsi
jbe 0x18000e940
movzx eax, byte [rdi]
mov rdx, rdi
mov rcx, r15
test al, al
je 0x18000e9c5
nop word [rax + rax]
imul rcx, rcx, 0x21
movzx eax, al
lea rdx, [rdx + 1]
add rcx, rax
movzx eax, byte [rdx]
test al, al
jne 0x18000e9b0
xor edx, edx
mov eax, ecx
div dword [r8]
mov rax, qword [r8 + 0x10]
mov r9, qword [rax + rdx*8]
test r9, r9
je 0x18000e940
nop dword [rax]
mov r8, qword [r9]
mov rax, rdi
sub r8, rdi
nop dword [rax]
movzx edx, byte [rax]
movzx ecx, byte [rax + r8]
sub edx, ecx
jne 0x18000ea03
inc rax
test ecx, ecx
jne 0x18000e9f0
test edx, edx
je 0x18000ea15
mov r9, qword [r9 + 0x18]
test r9, r9
jne 0x18000e9e0
jmp 0x18000e940
mov rax, qword [r9 + 0x10]
cmp rax, 0xffffffffffffffff
je 0x18000e940
test rax, rax
js 0x18000e940
cmp rax, r10
je 0x18000ee50
test rbx, rbx
je 0x18000ea53
mov rcx, qword [rbx]
call fcn.1800a4108
mov rcx, qword [rbx + 0x10]
call fcn.1800a4108
mov rcx, rbx
call fcn.1800a4108
lea rax, [r14 + 0x10]
test rax, rax
je 0x18000ec8a
mov qword [rax], 0xa
mov eax, 0xffffffff
jmp 0x18000eeb4
mov rdx, qword [rbx]
mov r8, rax
mov rcx, qword [rdi]
call fcn.1800a3690
test eax, eax
jmp 0x18000ea86
cmp rdi, rbx
mov ecx, esi
sete cl
mov dword [rsp + 0x80], ecx
test cl, cl
je 0x18000eaa3
jmp 0x18000eb7f
mov byte [rsp + 0x80], sil
cmp qword [r12 + r15 + 8], rsi
jne 0x18000eb7c
mov ecx, 0x78
call fcn.1800a411c
test rax, rax
jne 0x18000eadb
lea rax, [r14 + 0x10]
mov qword [r12 + r15 + 8], rsi
test rax, rax
je 0x18000ec6c
mov qword [rax], reloc.WS2_32.dll_ntohl
jmp 0x18000ec6c
test rbp, rbp
je 0x18000eb23
movups xmm0, xmmword [rbp]
movups xmm1, xmmword [rbp + 0x10]
movups xmmword [rax], xmm0
movups xmm0, xmmword [rbp + 0x20]
movups xmmword [rax + 0x10], xmm1
movups xmm1, xmmword [rbp + 0x30]
movups xmmword [rax + 0x20], xmm0
movups xmm0, xmmword [rbp + 0x40]
movups xmmword [rax + 0x30], xmm1
movups xmm1, xmmword [rbp + 0x50]
movups xmmword [rax + 0x40], xmm0
movups xmm0, xmmword [rbp + 0x60]
movups xmmword [rax + 0x50], xmm1
movsd xmm1, qword [rbp + 0x70]
movups xmmword [rax + 0x60], xmm0
movsd qword [rax + 0x70], xmm1
jmp 0x18000eb71
mov byte [rax + 4], sil
mov byte [rax + 6], 1
mov dword [rax + 8], 0xa033f
mov word [rax + 0xc], si
mov dword [rax + 0x10], 0xffffffff
mov qword [rax + 0x18], rsi
mov dword [rax + 0x20], esi
mov qword [rax + 0x28], rsi
mov qword [rax + 0x30], rsi
mov qword [rax + 0x38], rsi
mov qword [rax + 0x40], rsi
mov qword [rax + 0x48], rsi
mov dword [rax + 0x50], esi
mov word [rax + 0x54], si
mov dword [rax + 0x58], 0x81b60000
mov qword [rax + 0x60], rsi
mov dword [rax + 0x68], esi
mov qword [rax + 0x70], rsi
mov dword [rax], esi
mov byte [rax + 5], 1
mov qword [r12 + r15 + 8], rax
mov rdi, rbx
test rdi, rdi
jne 0x18000eb8d
lea rbp, [0x1800de3f9]
jmp 0x18000ebdb
mov eax, dword [rdi + 0xc]
test eax, eax
jne 0x18000eba1
xor edx, edx
mov rcx, rdi
call fcn.18000d870
mov eax, dword [rdi + 0xc]
cmp eax, 4
jne 0x18000ebcf
mov rbp, qword [rdi + 0x10]
test rbp, rbp
jne 0x18000ebdb
movzx edx, word [rdi + 8]
lea r9, [r14 + 0x10]
mov rcx, qword [rdi]
lea r8, [rdi + 0x18]
call fcn.18000d9a0
mov rbp, rax
mov qword [rdi + 0x10], rax
test rax, rax
jmp 0x18000ebd5
mov rbp, qword [rdi]
test rbp, rbp
je 0x18000ec6c
mov rdi, qword [r12 + r15 + 8]
test rdi, rdi
jne 0x18000ebee
mov rdi, qword [r12 + r15]
test rdi, rdi
je 0x18000ec45
mov rdi, qword [rdi + 0x38]
test rdi, rdi
je 0x18000ec45
mov eax, dword [rdi + 0xc]
test eax, eax
jne 0x18000ec0b
xor edx, edx
mov rcx, rdi
call fcn.18000d870
mov eax, dword [rdi + 0xc]
cmp eax, 4
jne 0x18000ec3b
mov r13, qword [rdi + 0x10]
test r13, r13
jne 0x18000ec48
movzx edx, word [rdi + 8]
lea r9, [r14 + 0x10]
mov rcx, qword [rdi]
lea r8, [rdi + 0x18]
call fcn.18000d9a0
mov qword [rdi + 0x10], rax
mov r13, rax
test rax, rax
je 0x18000ec6c
jmp 0x18000ec48
mov r13, qword [rdi]
test r13, r13
jne 0x18000ec48
jmp 0x18000ec6c
mov r13, rsi
mov r8, qword [rsp + 0x88]
lea rax, [r14 + 0x10]
mov rcx, qword [r14 + 0x70]
xor r9d, r9d
mov rdx, rbp
mov qword [rsp + 0x20], rax
call fcn.18000c200
test al, al
jne 0x18000ec94
test rbx, rbx
je 0x18000ec8a
mov rcx, qword [rbx]
call fcn.1800a4108
mov rcx, qword [rbx + 0x10]
call fcn.1800a4108
mov rcx, rbx
call fcn.1800a4108
mov eax, 0xffffffff
jmp 0x18000eeb4
test r13, r13
je 0x18000edd2
mov rdi, qword [r14 + 0x70]
test rdi, rdi
je 0x18000edd2
cmp qword [rdi + 8], rsi
jbe 0x18000edd2
movzx eax, byte [r13]
mov rcx, r13
mov r9d, 0x1505
test al, al
je 0x18000ecea
nop word [rax + rax]
imul r9, r9, 0x21
movzx eax, al
lea rcx, [rcx + 1]
add r9, rax
movzx eax, byte [rcx]
test al, al
jne 0x18000ecd0
mov qword [rsp + 0x30], r9
mov r14, qword [rdi + 0x10]
xor edx, edx
mov eax, r9d
mov r10, rsi
div dword [rdi]
mov r11d, edx
mov r8, qword [r14 + rdx*8]
test r8, r8
je 0x18000edd2
cmp dword [r8 + 0x20], r9d
jne 0x18000ed3c
mov r9, qword [r8]
mov rax, r13
sub r9, r13
nop word [rax + rax]
movzx edx, byte [rax]
movzx ecx, byte [rax + r9]
sub edx, ecx
jne 0x18000ed33
inc rax
test ecx, ecx
jne 0x18000ed20
test edx, edx
je 0x18000ed4d
mov r9, qword [rsp + 0x30]
mov r10, r8
mov r8, qword [r8 + 0x18]
test r8, r8
jne 0x18000ed08
jmp 0x18000edd2
cmp qword [r8 + 8], 0xffffffffffffffff
jne 0x18000edca
mov rax, qword [r8 + 0x18]
test r10, r10
je 0x18000ed63
mov qword [r10 + 0x18], rax
jmp 0x18000ed67
mov qword [r14 + r11*8], rax
mov rcx, r8
call fcn.1800a4108
dec qword [rdi + 8]
xorps xmm1, xmm1
mov rcx, qword [rdi + 8]
mov edx, dword [rdi]
test rcx, rcx
js 0x18000ed88
cvtsi2sd xmm1, rcx
jmp 0x18000ed9d
mov rax, rcx
and ecx, 1
shr rax, 1
or rax, rcx
cvtsi2sd xmm1, rax
addsd xmm1, xmm1
xorps xmm0, xmm0
cvtsi2sd xmm0, rdx
mulsd xmm0, qword [0x1800e1ea0]
comisd xmm0, xmm1
jbe 0x18000edd2
cmp edx, 0x100
jbe 0x18000edd2
shr edx, 1
xor r8d, r8d
mov rcx, rdi
call fcn.18000c130
jmp 0x18000edd2
mov qword [r8 + 0x10], 0xffffffffffffffff
cmp byte [rsp + 0x80], sil
je 0x18000ee70
mov rax, qword [r12 + r15 + 8]
test rax, rax
je 0x18000ee50
mov edx, dword [rax]
test dl, 2
je 0x18000ee50
mov rdi, qword [rax + 0x38]
test rdi, rdi
je 0x18000ee1a
mov rcx, qword [rdi]
call fcn.1800a4108
mov rcx, qword [rdi + 0x10]
call fcn.1800a4108
mov rcx, rdi
call fcn.1800a4108
mov rax, qword [r12 + r15 + 8]
mov edx, dword [rax]
and edx, 0xfffffffd
mov dword [rax], edx
mov rdi, qword [r12 + r15 + 8]
cmp dword [rdi], esi
jne 0x18000ee44
test rdi, rdi
je 0x18000ee3d
mov rcx, rdi
call fcn.1800061b0
mov rcx, rdi
call fcn.1800a4108
mov qword [r12 + r15 + 8], rsi
jmp 0x18000ee50
mov rax, qword [r12 + r15]
mov rcx, qword [rax + 0x38]
mov qword [rdi + 0x38], rcx
test rbx, rbx
je 0x18000eeb2
mov rcx, qword [rbx]
call fcn.1800a4108
mov rcx, qword [rbx + 0x10]
call fcn.1800a4108
mov rcx, rbx
call fcn.1800a4108
jmp 0x18000eeb2
mov rdx, qword [r12 + r15 + 8]
mov eax, dword [rdx]
test al, 2
je 0x18000eea4
mov rdi, qword [rdx + 0x38]
test rdi, rdi
je 0x18000eea4
mov rcx, qword [rdi]
call fcn.1800a4108
mov rcx, qword [rdi + 0x10]
call fcn.1800a4108
mov rcx, rdi
call fcn.1800a4108
mov rdx, qword [r12 + r15 + 8]
mov eax, dword [rdx]
or eax, 2
mov dword [rdx], eax
mov rax, qword [r12 + r15 + 8]
mov qword [rax + 0x38], rbx
xor eax, eax
mov rbx, qword [rsp + 0x90]
add rsp, 0x40
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret