Function at 0x402ad0
Capabilities:
Hash data using djb2

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov eax, 0xffffffff
test ecx, ecx
je 0x402c47
mov ebx, edx
test edx, edx
je 0x402c47
cmp dword [esp + 0x38], 0
je 0x402c47
mov edi, ecx
push ebx
call fcn.00408d70
add esp, 4
mov dword [esp + 8], eax
mov ebp, 0x1505
test eax, eax
je 0x402b3f
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 0x402b3f
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 + 8], eax
jne 0x402b20
mov dword [esp + 4], ebx
mov esi, edi
mov edi, dword [edi + 0x20]
lea ebx, [edi - 1]
mov edx, edi
sub edx, 1
jae 0x402b5c
mov eax, 0xffffffff
jmp 0x402bed
and ebx, ebp
mov dword [esp], esi
mov eax, dword [esi + 4]
mov dword [esp + 0x18], eax
mov esi, ebx
not esi
inc ebx
mov dword [esp + 0xc], edx
jmp 0x402b85
dec esi
inc ebx
dec edi
je 0x402be5
mov eax, edx
or eax, esi
add eax, ebx
mov ecx, dword [esp + 0x18]
mov ecx, dword [ecx + eax*4]
cmp ecx, 0xffffffff
je 0x402bea
mov eax, dword [esp]
mov eax, dword [eax + 8]
cmp dword [eax + ecx*4], ebp
jne 0x402b80
mov eax, dword [esp]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x14], eax
push eax
call fcn.00408d70
mov edx, dword [esp + 0x10]
add esp, 4
cmp eax, dword [esp + 8]
jne 0x402b80
push dword [esp + 8]
push dword [esp + 0x18]
push dword [esp + 0xc]
call fcn.00408d90
mov edx, dword [esp + 0x18]
add esp, 0xc
test eax, eax
jne 0x402b80
mov eax, 0xffffffff
jmp 0x402c47
mov eax, 0xffffffff
mov esi, dword [esp]
mov edi, dword [esp + 0x38]
mov ebx, dword [esp + 4]
mov ecx, dword [esi + 0x18]
cmp ecx, dword [esi + 0x1c]
jae 0x402c35
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 0x18]
mov dword [ecx + edx*4], ebx
mov ecx, dword [esi + 4]
mov edx, dword [esi + 0x18]
mov dword [ecx + eax*4], edx
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x18]
mov dword [ecx + edx*4], edi
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x18]
mov dword [ecx + edx*4], eax
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 [edi], eax
xor eax, eax
jmp 0x402c47
mov ecx, esi
call fcn.00402d30
mov ecx, eax
mov eax, 0xffffffff
test ecx, ecx
je 0x402c4f
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret
push ebx
call fcn.00408d70
add esp, 4
mov edx, eax
mov ecx, dword [esi + 0x20]
lea eax, [ecx - 1]
mov dword [esp + 0x10], eax
mov eax, ecx
sub eax, 1
jae 0x402c72
mov eax, 0xffffffff
jmp 0x402bfd
mov dword [esp + 0xc], eax
mov edi, dword [esp + 0x10]
and edi, ebp
mov dword [esp], esi
mov eax, dword [esi + 4]
mov dword [esp + 0x14], eax
mov esi, edi
not esi
mov dword [esp + 0x10], edi
lea ebx, [edi + 1]
xor eax, eax
mov dword [esp + 0x1c], edx
jmp 0x402cae
mov eax, dword [esp + 8]
inc eax
dec esi
inc ebx
mov ecx, dword [esp + 0x18]
dec ecx
je 0x402d16
mov dword [esp + 8], eax
mov dword [esp + 0x18], ecx
mov edi, dword [esp + 0xc]
or edi, esi
lea eax, [ebx + edi]
mov ecx, dword [esp + 0x14]
mov ecx, dword [ecx + eax*4]
cmp ecx, 0xffffffff
je 0x402d1b
mov eax, dword [esp]
mov eax, dword [eax + 8]
cmp dword [eax + ecx*4], ebp
jne 0x402ca0
mov eax, dword [esp]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x20], eax
push eax
call fcn.00408d70
mov edx, dword [esp + 0x20]
add esp, 4
cmp eax, edx
jne 0x402ca0
push edx
push dword [esp + 0x24]
push dword [esp + 0xc]
call fcn.00408d90
add esp, 0xc
test eax, eax
jne 0x402ca0
mov eax, dword [esp + 8]
add eax, dword [esp + 0x10]
add eax, edi
inc eax
jmp 0x402d1b
mov eax, 0xffffffff
mov esi, dword [esp]
mov edi, dword [esp + 0x38]
mov ebx, dword [esp + 4]
jmp 0x402bfd