Function at 0x404b30
Capabilities:
Hash data using djb2

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov ebp, dword [esp + 0x28]
mov eax, 0xffffffff
test ebp, ebp
je 0x404c9f
cmp dword [esp + 0x2c], 0
je 0x404c9f
cmp dword [esp + 0x30], 0
je 0x404c9f
mov edi, dword [esp + 0x2c]
push edi
call fcn.0040c7c0
add esp, 4
mov dword [esp], eax
mov ebx, 0x1505
test eax, eax
je 0x404ba8
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [edi + eax]
test ecx, ecx
je 0x404ba8
mov edx, ebx
shl edx, 5
add edx, ebx
mov esi, edx
and esi, ecx
xor edx, ecx
lea ebx, [edx + esi*2]
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, dword [esp]
jb 0x404b80
mov edi, dword [ebp + 0x20]
mov esi, edi
sub esi, 1
jae 0x404c07
mov ebp, 0xffffffff
mov edi, dword [esp + 0x28]
mov eax, dword [edi + 0x18]
cmp eax, dword [edi + 0x1c]
jae 0x404c8d
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 0x18]
mov edx, dword [esp + 0x2c]
mov dword [eax + ecx*4], edx
mov eax, dword [edi + 4]
mov ecx, dword [edi + 0x18]
mov dword [eax + ebp*4], ecx
mov eax, dword [edi + 0x10]
mov edx, dword [esp + 0x30]
mov dword [eax + ecx*4], edx
mov eax, dword [edi + 0x14]
mov ecx, dword [edi + 0x18]
mov dword [eax + ecx*4], ebp
mov eax, dword [edi + 8]
mov ecx, dword [edi + 0x18]
mov dword [eax + ecx*4], ebx
inc dword [edi + 0x18]
mov eax, dword [edi]
mov dword [edx], eax
xor eax, eax
jmp 0x404c9f
and esi, ebx
mov eax, edi
xor eax, 1
mov ecx, edi
and ecx, 0xfffffffe
add ecx, ecx
sub ecx, eax
mov dword [esp + 8], ecx
mov eax, dword [ebp + 4]
mov dword [esp + 4], eax
jmp 0x404c38
inc esi
dec edi
je 0x404bb2
mov ebp, esi
and ebp, dword [esp + 8]
mov eax, dword [esp + 4]
mov eax, dword [eax + ebp*4]
cmp eax, 0xffffffff
je 0x404bb7
mov ecx, dword [esp + 0x28]
mov ecx, dword [ecx + 8]
cmp dword [ecx + eax*4], ebx
jne 0x404c30
mov ecx, dword [esp + 0x28]
mov ecx, dword [ecx + 0xc]
mov ebp, dword [ecx + eax*4]
push ebp
call fcn.0040c7c0
add esp, 4
cmp eax, dword [esp]
jne 0x404c30
push dword [esp]
push ebp
push dword [esp + 0x34]
call fcn.0040c7e0
add esp, 0xc
test eax, eax
jne 0x404c30
mov eax, 0xffffffff
jmp 0x404c9f
mov ecx, edi
call fcn.004058f0
mov ecx, eax
mov eax, 0xffffffff
test ecx, ecx
je 0x404ca7
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret
push dword [esp + 0x2c]
call fcn.0040c7c0
add esp, 4
mov dword [esp + 0xc], eax
mov edx, dword [edi + 0x20]
mov esi, edx
sub esi, 1
jae 0x404ccb
mov ebp, 0xffffffff
jmp 0x404bc7
and esi, ebx
mov eax, edx
xor eax, 1
mov ecx, edx
and ecx, 0xfffffffe
add ecx, ecx
sub ecx, eax
mov dword [esp + 8], ecx
mov eax, dword [edi + 4]
mov dword [esp + 4], eax
jmp 0x404cf4
inc esi
dec edx
je 0x404d54
mov ebp, esi
and ebp, dword [esp + 8]
mov eax, dword [esp + 4]
mov eax, dword [eax + ebp*4]
cmp eax, 0xffffffff
je 0x404d59
mov edi, dword [esp + 0x28]
mov ecx, dword [edi + 8]
cmp dword [ecx + eax*4], ebx
jne 0x404cf0
mov ecx, dword [edi + 0xc]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x10], eax
push eax
mov dword [esp + 4], edx
call fcn.0040c7c0
mov edx, dword [esp + 4]
add esp, 4
cmp eax, dword [esp + 0xc]
jne 0x404cf0
push dword [esp + 0xc]
push dword [esp + 0x14]
push dword [esp + 0x34]
call fcn.0040c7e0
mov edx, dword [esp + 0xc]
add esp, 0xc
test eax, eax
jne 0x404cf0
jmp 0x404bc7
mov ebp, 0xffffffff
mov edi, dword [esp + 0x28]
jmp 0x404bc7