Function at 0x10022a80
Capabilities:
Hash data using djb2

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x3c
push ebx
push esi
mov esi, edx
mov ebx, ecx
movzx eax, byte [esi + 0xc]
push edi
mov dword [esp + 0x34], ebx
cmp eax, 4
jne 0x10022d6d
mov edi, dword [ebp + 8]
mov esi, dword [esi]
movzx eax, byte [edi + 0xc]
mov dword [esp + 0x18], esi
cmp eax, 6
jne 0x10022bb8
cmp dword [ebp + 0xc], 1
mov edx, dword [edi]
mov eax, dword [edi + 4]
mov dword [esp + 0x20], edx
mov dword [esp + 0x14], eax
je 0x10022c0a
mov al, byte [edx]
mov ebx, edx
cmp al, 0x2d
je 0x10022fda
mov cl, byte [ebx]
cmp cl, 0x39
jle 0x10022df6
mov edi, dword [esp + 0x14]
cmp edx, dword [0x106690c0]
jae 0x10022c71
cmp edx, dword [0x106690bc]
jb 0x10022c71
mov edi, dword [edx - 0x24]
mov eax, dword [esp + 0x14]
mov ecx, dword [esi + 4]
inc eax
mov dword [esp + 0x40], eax
mov eax, dword [esi + 0x1c]
and ecx, edi
mov ebx, dword [eax + ecx*4]
test ebx, ebx
je 0x10022c21
mov ecx, dword [ebx + 0x20]
cmp ecx, edx
je 0x10022ba0
cmp dword [ebx], edi
jne 0x10022c12
mov eax, dword [esp + 0x40]
cmp dword [ebx + 4], eax
jne 0x10022c12
mov esi, eax
sub esi, 4
jb 0x10022b54
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x10022b59
add ecx, 4
add edx, 4
sub esi, 4
jae 0x10022b43
cmp esi, 0xfffffffc
je 0x10022b96
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x10022fe2
cmp esi, 0xfffffffd
je 0x10022b96
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x10022fe2
cmp esi, 0xfffffffe
je 0x10022b96
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x10022fe2
cmp esi, 0xffffffff
je 0x10022b96
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x10022fe2
xor eax, eax
test eax, eax
jne 0x10022fec
mov ecx, dword [ebx + 8]
mov ebx, dword [esp + 0x34]
mov eax, dword [ecx]
mov dword [ebx + 4], eax
mov eax, dword [ecx]
inc dword [eax + 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 7
ja case.0x10022bc1.4
jmp dword [eax*4 + 0x10022ff8]
mov edi, dword [edi]
mov ecx, dword [esi + 4]
mov eax, dword [esi + 0x1c]
and ecx, edi
mov eax, dword [eax + ecx*4]
test eax, eax
je 0x10022eae
lea ecx, [ecx]
cmp dword [eax], edi
jne 0x10022f0f
cmp dword [eax + 4], 0
jne 0x10022f0f
mov ecx, dword [eax + 8]
mov ebx, dword [esp + 0x34]
mov eax, dword [ecx]
mov dword [ebx + 4], eax
mov eax, dword [ecx]
inc dword [eax + 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [edi + 0x10]
jmp 0x10022b08
mov ebx, dword [ebx + 0x18]
test ebx, ebx
jne 0x10022b20
mov esi, dword [esp + 0x18]
mov eax, dword [ebp + 0x10]
cmp eax, 1
jne 0x10022ee5
inc dword [0x10669130]
push 1
lea eax, [esp + 0x24]
push eax
push 4
lea eax, [esp + 0x44]
push eax
push edi
push dword [esp + 0x54]
mov dword [esp + 0x50], 0x10669128
push edx
push esi
call sym.php5.dll__zend_hash_quick_add_or_update
add esp, 0x20
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x34]
mov eax, dword [ecx]
mov dword [ebx + 4], eax
mov eax, dword [ecx]
inc dword [eax + 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea eax, [edi + 1]
mov dword [esp + 0x38], eax
mov ebx, edx
mov edi, 0x1505
cmp eax, 8
jb switch.0x10022d14
mov esi, eax
shr eax, 3
mov dword [esp + 0x40], eax
movsx eax, byte [ebx]
mov ecx, edi
shl ecx, 5
add ecx, edi
add ecx, eax
movsx eax, byte [ebx + 1]
mov edx, ecx
shl edx, 5
add edx, ecx
add edx, eax
movsx eax, byte [ebx + 2]
mov ecx, edx
shl ecx, 5
add ecx, edx
add ecx, eax
movsx eax, byte [ebx + 3]
mov edx, ecx
shl edx, 5
add edx, ecx
add edx, eax
movsx eax, byte [ebx + 4]
mov ecx, edx
shl ecx, 5
add ecx, edx
add ecx, eax
movsx eax, byte [ebx + 5]
mov edx, ecx
shl edx, 5
add edx, ecx
add edx, eax
movsx eax, byte [ebx + 6]
mov ecx, edx
shl ecx, 5
add ecx, edx
add ecx, eax
movsx eax, byte [ebx + 7]
mov edi, ecx
shl edi, 5
add edi, ecx
add edi, eax
add ebx, 8
sub esi, 8
dec dword [esp + 0x40]
jne 0x10022c91
mov edx, dword [esp + 0x20]
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x38]
jmp dword [eax*4 + 0x10023018]
mov eax, edi
shl edi, 5
add edi, eax
movsx eax, byte [ebx]
add edi, eax
inc ebx
mov eax, edi
shl edi, 5
add edi, eax
movsx eax, byte [ebx]
add edi, eax
inc ebx
mov eax, edi
shl edi, 5
add edi, eax
movsx eax, byte [ebx]
add edi, eax
inc ebx
mov eax, edi
shl edi, 5
add edi, eax
movsx eax, byte [ebx]
add edi, eax
inc ebx
mov eax, edi
shl edi, 5
add edi, eax
movsx eax, byte [ebx]
add edi, eax
inc ebx
mov eax, edi
shl edi, 5
add edi, eax
movsx eax, byte [ebx]
add edi, eax
jmp 0x10022b04
cmp eax, 6
ja case.0x10022d76.0
jmp dword [eax*4 + 0x10023038]
mov edi, dword [ebp + 8]
mov dword [esp + 0x38], edi
mov al, byte [edi + 0xc]
cmp al, 1
jne 0x103965e1
push 0x18
call sym.php5.dll__emalloc
mov edi, eax
mov eax, dword [esp + 0x3c]
mov dword [edi + 0x10], 0
mov dword [edi + 8], 1
mov word [edi + 0xc], 6
mov eax, dword [eax]
add esp, 4
test eax, eax
js 0x10396894
cmp dword [esi + 4], eax
jle 0x10396894
push 2
call sym.php5.dll__emalloc
mov ecx, dword [esp + 0x3c]
mov dword [edi], eax
mov edx, dword [esi]
mov ecx, dword [ecx]
add esp, 4
mov cl, byte [edx + ecx]
mov byte [eax], cl
mov eax, dword [edi]
mov byte [eax + 1], 0
mov dword [edi + 4], 1
mov dword [ebx + 4], edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp cl, 0x30
jl 0x10022ae5
mov edi, dword [esp + 0x14]
cmp byte [edi + edx], 0
lea esi, [edi + edx]
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x18]
jne 0x10022ae9
cmp cl, 0x30
je 0x10022f6c
lea esi, [edi + edx]
mov dword [esp + 0x1c], esi
sub dword [esp + 0x1c], ebx
cmp dword [esp + 0x1c], 0xa
mov esi, dword [esp + 0x18]
jg 0x10022ae9
je 0x10396a95
movsx edi, cl
inc ebx
sub edi, 0x30
cmp ebx, dword [esp + 0x38]
je 0x10022e83
mov eax, dword [esp + 0x38]
mov cl, byte [ebx]
mov byte [esp + 0x12], cl
cmp cl, 0x30
jl 0x10022fcd
cmp cl, 0x39
jg 0x10022fcd
mov eax, dword [esp + 0x38]
lea ecx, [edi + edi*4]
movsx edi, byte [esp + 0x12]
add edi, 0xffffffd0
inc ebx
lea edi, [edi + ecx*2]
cmp ebx, eax
jne 0x10022e52
mov al, byte [edx]
cmp al, 0x2d
je 0x10396aa3
cmp edi, 0x7fffffff
jbe 0x10022bca
jmp 0x10022ae5
mov eax, edi
shl edi, 5
add edi, eax
movsx eax, byte [ebx]
add edi, eax
inc ebx
jmp case.0x10022d14.5
mov eax, dword [ebp + 0x10]
cmp eax, 1
jne 0x10022fbd
inc dword [0x10669130]
push 1
lea eax, [esp + 0x24]
push eax
push 4
lea eax, [esp + 0x4c]
push eax
push edi
push esi
mov dword [esp + 0x58], 0x10669128
call sym.php5.dll__zend_hash_index_update_or_next_insert
add esp, 0x18
jmp case.0x10022eee.4
cmp eax, 6
ja case.0x10022eee.4
jmp dword [eax*4 + 0x10023054]
mov ebx, dword [esp + 0x34]
mov ecx, 0x10669138
mov eax, dword [ecx]
mov dword [ebx + 4], eax
mov eax, dword [ecx]
inc dword [eax + 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [eax + 0x18]
test eax, eax
jne 0x10022be0
jmp 0x10022eae
mov eax, dword [esi + 4]
cmp dword [eax + 0x14], 0
je 0x103968cf
mov edi, dword [ebp + 0xc]
cmp edi, 2
je 0x103968e3
mov ecx, dword [ebp + 8]
mov dword [esp + 0x38], ecx
push dword [ebp + 0x10]
mov eax, dword [esi + 4]
push ecx
mov eax, dword [eax + 0x14]
push esi
call eax
add esp, 0xc
test ebx, ebx
je 0x10022f5e
test eax, eax
je 0x10396921
mov dword [ebx + 4], eax
inc dword [eax + 8]
cmp edi, 2
jne 0x10022bb1
jmp 0x10396933
lea eax, [edi + 1]
cmp eax, 2
jg 0x10022ae9
mov al, byte [edx]
jmp 0x10022e21
push edx
push str.Undefined_index:__s
push 8
call sym.php5.dll_zend_error
add esp, 0xc
jmp case.0x10022eee.3
pop edi
mov dword [ebx + 4], 0x10669128
inc dword [0x10669130]
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, 0x1053ac9c
mov dword [esp + 0x20], edx
xor eax, eax
mov edi, 0x2b5a5
jmp 0x10022b08
cmp eax, 6
ja case.0x10022eee.4
jmp dword [eax*4 + 0x10023070]
cmp ebx, eax
jne 0x10022ae5
jmp 0x10022e81
lea ebx, [edx + 1]
jmp 0x10022ada
sbb eax, eax
or eax, 1
jmp 0x10022b98
mov edx, dword [esp + 0x20]
jmp 0x10022c12
movzx eax, al
cmp eax, 6
ja case.0x103965f4.1
movzx eax, byte [eax + 0x10396b0d]
jmp dword [eax*4 + 0x10396b01]
mov ecx, dword [edi + 4]
mov edx, dword [edi]
xor eax, eax
mov dword [esp + 0x20], 0xa
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], eax
test ecx, ecx
je 0x1039681e
mov al, byte [edx]
cmp al, 0x20
je 0x1039669f
cmp al, 9
je 0x1039669f
cmp al, 0xa
je 0x1039669f
cmp al, 0xd
je 0x1039669f
cmp al, 0xb
je 0x1039669f
cmp al, 0xc
je 0x1039669f
mov dword [esp + 0x38], ecx
mov ah, al
mov ecx, edx
mov dword [esp + 0x40], edx
mov dword [esp + 0x14], ecx
cmp ah, 0x2d
je 0x10396652
cmp ah, 0x2b
jne 0x10396659
lea ecx, [edx + 1]
mov dword [esp + 0x14], ecx
mov al, byte [ecx]
cmp al, 0x30
jl 0x103966a6
cmp al, 0x39
jg 0x103966a6
cmp dword [esp + 0x38], 2
jle 0x10396689
cmp ah, 0x30
jne 0x10396689
mov al, byte [edx + 1]
cmp al, 0x78
je 0x1039667a
cmp al, 0x58
jne 0x10396689
add ecx, 2
mov dword [esp + 0x20], 0x10
mov dword [esp + 0x14], ecx
cmp byte [ecx], 0x30
jne 0x10396698
inc ecx
cmp byte [ecx], 0x30
je 0x1039668e
mov dword [esp + 0x14], ecx
mov byte [esp + 0x11], 1
jmp 0x103966ef
inc edx
dec ecx
jmp 0x1039661e
cmp al, 0x2e
jne 0x1039681e
mov al, byte [ecx + 1]
cmp al, 0x30
jl 0x1039681e
cmp al, 0x39
jg 0x1039681e
xor eax, eax
jmp 0x103966c8
or eax, 0xffffffff
mov byte [esp + 0x11], 2
cmp eax, 0xffffffff
je 0x1039679d
mov al, byte [ecx]
inc ecx
cmp al, 0x2e
mov dword [esp + 0x14], ecx
mov eax, 1
je 0x103966eb
mov eax, 2
mov dword [esp + 0x18], eax
mov al, byte [ecx]
cmp al, 0x30
jl 0x103966f9
cmp al, 0x39
jle 0x10396710
cmp dword [esp + 0x20], 0x10
jne 0x1039671b
cmp al, 0x41
jl 0x10396708
cmp al, 0x46
jle 0x10396710
cmp al, 0x61
jl 0x10396787
cmp al, 0x66
jg 0x10396787
inc dword [esp + 0x1c]
inc ecx
mov dword [esp + 0x14], ecx
jmp 0x103966ef
cmp dword [esp + 0x20], 0xa
jne 0x10396787
mov al, byte [ecx]
mov byte [esp + 0x12], al
cmp al, 0x2e
mov eax, dword [esp + 0x18]
jne 0x10396735
cmp eax, 1
jl 0x103966c8
cmp byte [esp + 0x12], 0x65
je 0x10396743
cmp byte [esp + 0x12], 0x45
jne 0x1039677b
cmp eax, 2
jge 0x1039677b
mov bl, byte [ecx + 1]
lea eax, [ecx + 1]
mov byte [esp + 0x12], bl
cmp bl, 0x2d
mov ebx, dword [esp + 0x34]
je 0x10396762
cmp byte [esp + 0x12], 0x2b
jne 0x10396769
mov ecx, eax
mov dword [esp + 0x14], ecx
inc eax
mov al, byte [eax]
cmp al, 0x30
jl 0x1039677b
cmp al, 0x39
mov eax, dword [esp + 0x18]
jle 0x103966c8
cmp dword [esp + 0x1c], 0xb
jl 0x1039679d
jmp 0x103966c5
mov eax, dword [esp + 0x1c]
cmp eax, 8
jl 0x1039679d
jne 0x10396798
cmp byte [ecx - 8], 0x37
jle 0x1039679d
mov byte [esp + 0x11], 2
mov eax, dword [esp + 0x38]
add eax, edx
cmp ecx, eax
je 0x103967be
push str.A_non_well_formed_numeric_value_encountered
push 8
call sym.php5.dll_zend_error
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x48]
add esp, 8
cmp byte [esp + 0x11], 1
jne 0x1039681e
cmp dword [esp + 0x1c], 0xa
jne 0x10396855
mov eax, 0x10549620
add ecx, 0xfffffff6
mov bl, byte [ecx]
cmp bl, byte [eax]
mov byte [esp + 0x12], bl
mov ebx, dword [esp + 0x34]
jne 0x1039680e
cmp byte [esp + 0x12], 0
je 0x1039680a
mov bl, byte [ecx + 1]
cmp bl, byte [eax + 1]
mov byte [esp + 0x12], bl
mov ebx, dword [esp + 0x34]
jne 0x1039680e
add ecx, 2
add eax, 2
cmp byte [esp + 0x12], 0
jne 0x103967d8
xor eax, eax
jmp 0x10396813
sbb eax, eax
or eax, 1
test eax, eax
js 0x10396855
jne 0x1039681e
cmp byte [edx], 0x2d
je 0x10396855
cmp dword [ebp + 0x10], 3
je 0x10396855
push dword [edi]
push str.Illegal_string_offset__s
push 2
call sym.php5.dll_zend_error
add esp, 0xc
jmp 0x10396855
cmp dword [ebp + 0x10], 3
je 0x10396855
push str.String_offset_cast_occurred
push 8
jmp 0x1039684d
push str.Illegal_offset_type
push 2
call sym.php5.dll_zend_error
add esp, 8
mov eax, dword [edi]
mov dword [esp + 0x20], eax
mov eax, dword [edi + 4]
mov dword [esp + 0x24], eax
mov al, byte [edi + 0xc]
mov byte [esp + 0x2c], al
cmp al, 3
jbe 0x1039687a
lea eax, [esp + 0x20]
push eax
call sym.php5.dll__zval_copy_ctor_func
add esp, 4
lea eax, [esp + 0x20]
push eax
call sym.php5.dll_convert_to_long
lea eax, [esp + 0x24]
add esp, 4
mov dword [esp + 0x38], eax
jmp 0x10022d8f
cmp dword [ebp + 0x10], 3
je 0x103968aa
push eax
push str.Uninitialized_string_offset:__ld
push 8
call sym.php5.dll_zend_error
add esp, 0xc
mov eax, dword [0x106690cc]
test eax, eax
jne 0x103968c1
push eax
push 0x1053ac9c
call sym.php5.dll__estrndup
add esp, 8
mov dword [edi], eax
mov dword [edi + 4], 0
jmp 0x10022dec
push str.Cannot_use_object_as_array
push 1
call sym.php5.dll_zend_error
add esp, 8
jmp 0x10022bb1
push 0x18
call sym.php5.dll__emalloc
mov edx, dword [ebp + 8]
mov dword [eax + 0x10], 0
mov ecx, dword [edx]
mov dword [eax], ecx
mov ecx, dword [edx + 4]
mov dword [eax + 4], ecx
mov cl, byte [edx + 0xc]
mov byte [eax + 0xc], cl
mov ecx, eax
add esp, 4
mov dword [ecx + 8], 1
mov byte [ecx + 0xd], 0
mov dword [esp + 0x38], eax
mov byte [edx + 0xc], 0
jmp 0x10022f3c
mov dword [ebx + 4], 0x10669128
inc dword [0x10669130]
jmp 0x10022f5e
mov ebx, dword [esp + 0x38]
dec dword [ebx + 8]
jne 0x1039696b
test dword [ebx + 0x10], 0xfffffffc
je 0x1039694e
push ebx
call sym.php5.dll_gc_remove_zval_from_buffer
add esp, 4
cmp byte [ebx + 0xc], 3
jbe 0x1039695d
push ebx
call sym.php5.dll__zval_dtor_func
add esp, 4
push ebx
call sym.php5.dll__efree
add esp, 4
jmp 0x10022bb1
cmp dword [ebx + 8], 1
jne 0x10396975
mov byte [ebx + 0xd], 0
mov al, byte [ebx + 0xc]
cmp al, 4
je 0x10396984
cmp al, 5
jne 0x10022bb1
push ebx
call sym.php5.dll_gc_zval_possible_root
add esp, 4
jmp 0x10022bb1
movsd xmm1, qword [edi]
comisd xmm1, xmmword [0x10549380]
movsd qword [esp + 0x40], xmm1
ja 0x103969bd
movsd xmm0, qword [0x10549398]
comisd xmm0, xmm1
ja 0x103969bd
cvttsd2si edi, xmm1
jmp 0x10022bca
movsd xmm0, qword [0x10549350]
movsd xmm1, qword [0x10549370]
call sub.MSVCR110.dll__libm_sse2_pow_precise
fld qword [esp + 0x40]
movsd qword [esp + 0x38], xmm0
fld qword [esp + 0x38]
call sub.MSVCR110.dll__CIfmod
fstp qword [esp + 0x40]
movsd xmm1, qword [esp + 0x40]
xorps xmm0, xmm0
comisd xmm0, xmm1
jbe 0x10396a1f
sub esp, 8
movsd qword [esp], xmm1
call dword [sym.imp.MSVCR110.dll_ceil]
fstp qword [esp + 0x28]
movsd xmm0, qword [esp + 0x28]
addsd xmm0, qword [esp + 0x40]
add esp, 8
movsd qword [esp + 0x40], xmm0
fld qword [esp + 0x40]
fnstcw word [esp + 0x12]
movzx eax, word [esp + 0x12]
or eax, 0xc00
mov dword [esp + 0x40], eax
fldcw word [esp + 0x40]
fistp qword [esp + 0x40]
mov edi, dword [esp + 0x40]
fldcw word [esp + 0x12]
jmp 0x10022bca
mov eax, dword [edi]
push eax
push eax
push str.Resource_ID_ld_used_as_offset__casting_to_integer___ld_
push 0x800
call sym.php5.dll_zend_error
add esp, 0x10
jmp case.0x10022bc1.1
push str.Illegal_offset_type
push 2
call sym.php5.dll_zend_error
mov eax, dword [ebp + 0x10]
add esp, 8
cmp eax, 1
je 0x10396a8b
cmp eax, 2
je 0x10396a8b
mov ecx, 0x10669138
jmp 0x10022ba7
mov ecx, 0x10669150
jmp 0x10022ba7
cmp cl, 0x32
jg 0x10022ae9
jmp 0x10022e41
lea eax, [edi - 1]
cmp eax, 0x7fffffff
ja 0x10022ae5
neg edi
jmp 0x10022bca
push edi
push str.Undefined_offset:__ld
push 8
call sym.php5.dll_zend_error
add esp, 0xc
mov ecx, 0x10669138
jmp 0x10022ba3
push edi
push str.Undefined_offset:__ld
push 8
call sym.php5.dll_zend_error
add esp, 0xc
jmp case.0x10022fc6.1
push edx
push str.Undefined_index:__s
push 8
call sym.php5.dll_zend_error
mov edx, dword [esp + 0x2c]
add esp, 0xc
jmp case.0x10022eee.1