Function at 0x10047270
Capabilities:
Hash data using djb2

Disassembly:
push ecx
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x18]
xor ebp, ebp
test byte [edi + 0x10], 1
je 0x100473c4
push 0x5c
push dword [edi + 0x14]
call dword [sym.imp.MSVCR110.dll_strrchr]
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
jne 0x1037b221
mov ebx, dword [edi + 0x14]
cmp ebx, dword [0x106690c0]
jae 0x100472f1
cmp ebx, dword [0x106690bc]
jb 0x100472f1
mov esi, dword [ebx - 0x24]
cmp dword [edi + 0x18], 0x19
je 0x100473a7
push 2
push 0
push 0x20
push edi
push esi
push dword [edi + 0x18]
push ebx
push dword [0x10669250]
call sym.php5.dll__zend_hash_quick_add_or_update
add esp, 0x20
cmp eax, 0xffffffff
je 0x1037b239
xor ebx, ebx
test ebp, ebp
jne 0x100473f6
pop edi
pop esi
pop ebp
mov eax, ebx
pop ebx
pop ecx
ret
mov edx, dword [edi + 0x18]
mov ecx, ebx
mov esi, 0x1505
cmp edx, 8
jb switch.0x1004735b
mov eax, edx
shr eax, 3
mov edi, eax
movsx eax, byte [ecx]
imul esi, esi, 0x21
add esi, eax
movsx eax, byte [ecx + 1]
imul esi, esi, 0x21
add esi, eax
movsx eax, byte [ecx + 2]
imul esi, esi, 0x21
add esi, eax
movsx eax, byte [ecx + 3]
imul esi, esi, 0x21
add esi, eax
movsx eax, byte [ecx + 4]
imul esi, esi, 0x21
add esi, eax
movsx eax, byte [ecx + 5]
imul esi, esi, 0x21
add esi, eax
movsx eax, byte [ecx + 6]
imul esi, esi, 0x21
add esi, eax
movsx eax, byte [ecx + 7]
imul esi, esi, 0x21
add esi, eax
add ecx, 8
sub edx, 8
dec edi
jne 0x10047307
mov edi, dword [esp + 0x18]
jmp dword [edx*4 + 0x10047418]
movsx eax, byte [ecx]
imul esi, esi, 0x21
add esi, eax
inc ecx
movsx eax, byte [ecx]
imul esi, esi, 0x21
add esi, eax
inc ecx
movsx eax, byte [ecx]
imul esi, esi, 0x21
add esi, eax
inc ecx
movsx eax, byte [ecx]
imul esi, esi, 0x21
add esi, eax
inc ecx
movsx eax, byte [ecx]
imul esi, esi, 0x21
add esi, eax
inc ecx
movsx eax, byte [ecx]
imul esi, esi, 0x21
add esi, eax
jmp case.0x1004735b.0
movsx eax, byte [ecx]
imul esi, esi, 0x21
add esi, eax
inc ecx
jmp case.0x1004735b.6
push 0x18
push 0x105474e8
push ebx
call sub.MSVCR110.dll_memcmp
add esp, 0xc
test eax, eax
jne 0x100472bc
jmp 0x1037b239
mov eax, dword [edi + 0x18]
dec eax
push eax
push dword [edi + 0x14]
call sym.php5.dll__estrndup
mov esi, eax
mov eax, dword [edi + 0x18]
dec eax
push eax
push esi
call sym.php5.dll_zend_str_tolower
push 1
push dword [edi + 0x18]
push esi
call dword [sym.php5.dll_zend_new_interned_string]
mov ebp, eax
add esp, 0x1c
mov ebx, ebp
jmp 0x1004729f
cmp ebp, dword [0x106690bc]
jb 0x1004740a
cmp ebp, dword [0x106690c0]
jb 0x100472e9
push ebp
call sym.php5.dll__efree
pop ecx
jmp 0x100472e9
mov ecx, dword [edi + 0x18]
dec ecx
push ecx
push dword [edi + 0x14]
call sym.php5.dll__estrndup
sub ebx, dword [edi + 0x14]
mov esi, eax
push ebx
jmp 0x100473d8
mov eax, dword [edi + 0x14]
cmp byte [eax], 0
jne 0x1037b25c
cmp dword [edi + 0x18], 0x1a
jbe 0x1037b25c
push 0x1a
push 0x1061d04c
push ebx
call sub.MSVCR110.dll_memcmp
add esp, 0xc
test eax, eax
jne 0x1037b25c
inc ebx
push ebx
push str.Constant__s_already_defined
push 8
call sym.php5.dll_zend_error
mov eax, dword [edi + 0x14]
add esp, 0xc
cmp eax, dword [0x106690bc]
jb 0x1037b27f
cmp eax, dword [0x106690c0]
jb 0x1037b287
push eax
call dword [sym.imp.MSVCR110.dll_free]
pop ecx
test byte [edi + 0x10], 2
jne 0x1037b29a
cmp byte [edi + 0xc], 3
jbe 0x1037b29a
push edi
call sym.php5.dll__zval_dtor_func
pop ecx
or ebx, 0xffffffff
jmp 0x100472e1