Function at 0x3002be0
Capabilities:
Hash data using djb2

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov eax, 0xffffffff
test ecx, ecx
je 0x3002cdc
mov esi, edx
test edx, edx
je 0x3002cdc
mov dword [esp], ecx
cmp dword [esp + 0x30], 0
je 0x3002cdc
push esi
call fcn.03008e40
add esp, 4
test eax, eax
je 0x3002c3a
mov ecx, 0x1505
xor edi, edi
movzx edx, byte [esi + edi]
test edx, edx
je 0x3002c41
mov ebp, ecx
shl ebp, 5
add ebp, ecx
add ebp, edx
inc edi
mov ecx, ebp
cmp eax, edi
jne 0x3002c20
jmp 0x3002c43
mov ebp, 0x1505
jmp 0x3002c43
mov ebp, ecx
mov dword [esp + 8], esi
mov edx, dword [esp]
mov esi, dword [edx + 0x20]
mov edi, esi
sub edi, 1
jae 0x3002ce4
mov edi, 0xffffffff
mov eax, dword [edx + 0x18]
cmp eax, dword [edx + 0x1c]
jb 0x3002c9e
mov ecx, edx
call fcn.03002e30
mov ecx, eax
mov eax, 0xffffffff
test ecx, ecx
mov ecx, dword [esp + 8]
jne 0x3002cdc
push ecx
call fcn.03008e40
add esp, 4
mov dword [esp + 4], eax
mov edx, dword [esp]
mov esi, dword [edx + 0x20]
mov edi, esi
sub edi, 1
jae 0x3002d80
mov edi, 0xffffffff
mov eax, dword [edx + 0xc]
mov ecx, dword [edx + 0x18]
mov esi, dword [esp + 8]
mov dword [eax + ecx*4], esi
mov eax, dword [edx + 4]
mov ecx, dword [edx + 0x18]
mov dword [eax + edi*4], ecx
mov eax, dword [edx + 0x10]
mov ecx, dword [edx + 0x18]
mov esi, dword [esp + 0x30]
mov dword [eax + ecx*4], esi
mov eax, dword [edx + 0x14]
mov ecx, dword [edx + 0x18]
mov dword [eax + ecx*4], edi
mov eax, dword [edx + 8]
mov ecx, dword [edx + 0x18]
mov dword [eax + ecx*4], ebp
inc dword [edx + 0x18]
mov eax, dword [edx]
mov dword [esi], eax
xor eax, eax
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 4], eax
and edi, ebp
mov eax, esi
or eax, 0xfffffffe
mov ecx, esi
and ecx, 0xfffffffe
add eax, ecx
inc eax
mov dword [esp + 0x14], eax
mov eax, dword [edx + 4]
mov dword [esp + 0x10], eax
xor ebx, ebx
mov dword [esp + 0xc], edi
jmp 0x3002d1d
inc ebx
cmp esi, ebx
mov edi, dword [esp + 0xc]
je 0x3002c58
mov eax, ebx
and eax, edi
mov ecx, ebx
xor ecx, edi
lea edi, [ecx + eax*2]
and edi, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov eax, dword [eax + edi*4]
cmp eax, 0xffffffff
je 0x3002c5d
mov ecx, dword [edx + 8]
cmp dword [ecx + eax*4], ebp
jne 0x3002d10
mov ecx, dword [edx + 0xc]
mov edi, dword [ecx + eax*4]
push edi
call fcn.03008e40
mov edx, dword [esp + 4]
add esp, 4
cmp eax, dword [esp + 4]
jne 0x3002d10
push dword [esp + 4]
push edi
push dword [esp + 0x10]
call fcn.03008e60
mov edx, dword [esp + 0xc]
add esp, 0xc
test eax, eax
jne 0x3002d10
mov eax, 0xffffffff
jmp 0x3002cdc
and edi, ebp
mov eax, esi
or eax, 0xfffffffe
mov ecx, esi
and ecx, 0xfffffffe
add eax, ecx
inc eax
mov dword [esp + 0x14], eax
mov eax, dword [edx + 4]
mov dword [esp + 0x10], eax
xor ebx, ebx
mov dword [esp + 0xc], edi
jmp 0x3002dbd
inc ebx
cmp esi, ebx
mov edi, dword [esp + 0xc]
je 0x3002c99
mov eax, ebx
and eax, edi
mov ecx, ebx
xor ecx, edi
lea edi, [ecx + eax*2]
and edi, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov eax, dword [eax + edi*4]
cmp eax, 0xffffffff
je 0x3002c9e
mov ecx, dword [edx + 8]
cmp dword [ecx + eax*4], ebp
jne 0x3002db0
mov ecx, dword [edx + 0xc]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x18], eax
push eax
call fcn.03008e40
mov edx, dword [esp + 4]
add esp, 4
cmp eax, dword [esp + 4]
jne 0x3002db0
push dword [esp + 4]
push dword [esp + 0x1c]
push dword [esp + 0x10]
call fcn.03008e60
mov edx, dword [esp + 0xc]
add esp, 0xc
test eax, eax
jne 0x3002db0
jmp 0x3002c9e