Function at 0x402c00
Capabilities:
Hash data using djb2

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov eax, 0xffffffff
test ecx, ecx
je 0x402d5b
mov ebx, edx
test edx, edx
je 0x402d5b
cmp dword [esp + 0x30], 0
je 0x402d5b
mov edi, ecx
push ebx
call fcn.00408e20
add esp, 4
mov dword [esp + 4], eax
mov ebp, 0x1505
test eax, eax
je 0x402c6f
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [ebx + eax]
test ecx, ecx
je 0x402c6f
mov edx, ebp
shl edx, 5
add edx, ebp
mov esi, edx
and esi, ecx
xor edx, ecx
lea ebp, [edx + esi*2]
inc eax
cmp dword [esp + 4], eax
jne 0x402c50
mov dword [esp + 8], ebx
mov esi, dword [edi + 0x20]
lea ebx, [esi - 1]
mov eax, esi
sub eax, 1
mov dword [esp + 0x10], eax
mov dword [esp], edi
jae 0x402cde
mov edi, 0xffffffff
mov esi, dword [esp]
mov eax, dword [esi + 0x18]
cmp eax, dword [esi + 0x1c]
jae 0x402d45
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x18]
mov edx, dword [esp + 8]
mov dword [eax + ecx*4], edx
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0x18]
mov dword [eax + edi*4], ecx
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x18]
mov edx, dword [esp + 0x30]
mov dword [eax + ecx*4], edx
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0x18]
mov dword [eax + ecx*4], edi
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0x18]
mov dword [eax + ecx*4], ebp
inc dword [esi + 0x18]
mov eax, dword [esi]
mov dword [edx], eax
xor eax, eax
jmp 0x402d5b
and ebx, ebp
mov eax, dword [edi + 4]
mov dword [esp + 0xc], eax
jmp 0x402cf4
inc ebx
dec esi
je 0x402c87
mov edi, ebx
and edi, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
mov eax, dword [eax + edi*4]
cmp eax, 0xffffffff
je 0x402c8c
mov ecx, dword [esp]
mov ecx, dword [ecx + 8]
cmp dword [ecx + eax*4], ebp
jne 0x402cf0
mov ecx, dword [esp]
mov ecx, dword [ecx + 0xc]
mov edi, dword [ecx + eax*4]
push edi
call fcn.00408e20
add esp, 4
cmp eax, dword [esp + 4]
jne 0x402cf0
push dword [esp + 4]
push edi
push dword [esp + 0x10]
call fcn.00408e50
add esp, 0xc
test eax, eax
jne 0x402cf0
mov eax, 0xffffffff
jmp 0x402d5b
mov ecx, esi
call fcn.00402e10
mov ecx, eax
mov eax, 0xffffffff
test ecx, ecx
mov ecx, dword [esp + 8]
je 0x402d63
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
push ecx
call fcn.00408e20
add esp, 4
mov dword [esp + 0x14], eax
mov edx, dword [esi + 0x20]
lea ebx, [edx - 1]
mov eax, edx
sub eax, 1
mov dword [esp + 0x10], eax
jae 0x402d8b
mov edi, 0xffffffff
jmp 0x402c9b
and ebx, ebp
mov eax, dword [esi + 4]
mov dword [esp + 0xc], eax
mov esi, dword [esp]
jmp 0x402da4
inc ebx
dec edx
je 0x402e00
mov edi, ebx
and edi, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
mov eax, dword [eax + edi*4]
cmp eax, 0xffffffff
je 0x402e05
mov ecx, dword [esi + 8]
cmp dword [ecx + eax*4], ebp
jne 0x402da0
mov ecx, dword [esi + 0xc]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x18], eax
push eax
mov dword [esp + 8], edx
call fcn.00408e20
mov edx, dword [esp + 8]
add esp, 4
cmp eax, dword [esp + 0x14]
jne 0x402da0
push dword [esp + 0x14]
push dword [esp + 0x1c]
push dword [esp + 0x10]
call fcn.00408e50
mov edx, dword [esp + 0x10]
add esp, 0xc
test eax, eax
jne 0x402da0
jmp 0x402c9b
mov edi, 0xffffffff
mov esi, dword [esp]
jmp 0x402c9b