Function at 0x4ad640
Capabilities:
Hash data using djb2

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
push ebx
mov ebx, dword [ebp + 0x10]
lea ecx, [ebp - 0x18]
push esi
push 2
push ecx
mov eax, dword [ebx]
mov ecx, ebx
mov dword [ebp - 0x18], 0
call dword [eax + 8]
movzx esi, word [ebp - 0x18]
mov eax, esi
shr eax, 0xe
test eax, eax
jne 0x4ad67d
mov eax, dword [ebx]
mov ecx, ebx
push 2
call dword [eax + 0x18]
pop esi
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret
lea ecx, [eax - 1]
mov edx, 1
shl edx, cl
add edx, 2
mov dword [ebp - 0x14], edx
cmp eax, 3
jne 0x4ad6a4
mov eax, dword [ebx]
lea ecx, [ebp - 0x28]
push 4
push ecx
mov ecx, ebx
call dword [eax + 8]
mov eax, dword [ebp - 0x28]
jmp 0x4ad6d8
mov dword [ebp - 0x10], 0
cmp eax, 2
jne 0x4ad6c3
mov eax, dword [ebx]
lea ecx, [ebp - 0x10]
push 2
push ecx
mov ecx, ebx
call dword [eax + 8]
movzx eax, word [ebp - 0x10]
jmp 0x4ad6d8
cmp eax, 1
jne 0x4ad6ee
mov eax, dword [ebx]
lea ecx, [ebp - 0x10]
push 1
push ecx
mov ecx, ebx
call dword [eax + 8]
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x10], eax
test eax, eax
js 0x4ada98
cmp eax, 0x200000
jg 0x4ada98
and esi, 0x3fff
mov dword [ebp - 0x30], esi
cmp esi, 1
jb 0x4ada98
lea eax, [esi - 1]
test esi, eax
jne 0x4ada98
push edi
push 0
push 0
push 0
push 0
shl esi, 2
push 0
push esi
call fcn.0049f9b0
push esi
push 0
push eax
mov dword [ebp - 0x28], eax
call fcn.005d6d60
xor edx, edx
xor edi, edi
add esp, 0x24
mov dword [ebp - 4], edi
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x24], edx
cmp dword [ebp - 0x10], edx
jbe 0x4ada55
mov eax, dword [ebx]
lea ecx, [ebp - 8]
push 1
push ecx
mov ecx, ebx
call dword [eax + 8]
mov eax, dword [ebp - 8]
cmp al, 0x80
jae 0x4ad765
movzx esi, al
mov eax, 1
jmp 0x4ad7b6
mov ecx, dword [ebx]
and al, 0xc0
cmp al, 0x80
lea eax, [ebp - 7]
mov edx, dword [ecx + 8]
mov ecx, ebx
jne 0x4ad792
push 1
push eax
call edx
mov eax, dword [ebp - 8]
movzx esi, al
and esi, 0x3f
movzx eax, ah
shl esi, 8
or esi, eax
mov eax, 2
jmp 0x4ad7b6
push 2
push eax
call edx
mov eax, dword [ebp - 8]
movzx esi, al
and esi, 0x3f
movzx eax, ah
shl esi, 8
or esi, eax
movzx eax, byte [ebp - 6]
shl esi, 8
or esi, eax
mov eax, 3
add eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
mov ebx, ecx
mov dword [ebp - 0x2c], eax
sub ebx, edi
lea eax, [esi + 1]
cmp eax, ebx
jbe 0x4ad87d
sub edi, ecx
add edi, eax
mov eax, dword [ebp - 0x1c]
sub eax, ecx
cmp edi, eax
jbe 0x4ad864
lea ecx, [ebx + ebx]
test ebx, ebx
jne 0x4ad7eb
mov ecx, 1
lea eax, [edi + ebx]
cmp ecx, eax
cmovb ecx, eax
mov dword [ebp - 0x20], ecx
test ecx, ecx
je 0x4ad814
push 0
push 0
push 0
push 0
push 0
push ecx
call fcn.0049f9b0
add esp, 0x18
mov dword [ebp - 0x14], eax
mov ecx, eax
jmp 0x4ad819
xor ecx, ecx
mov dword [ebp - 0x14], ecx
mov eax, dword [ebp - 4]
cmp eax, dword [ebp - 0xc]
jne 0x4ad825
mov ebx, ecx
jmp 0x4ad832
push ebx
push eax
push ecx
call fcn.005d67e0
add esp, 0xc
add ebx, eax
push edi
push 0
push ebx
call fcn.005d6d60
mov eax, dword [ebp - 4]
lea edx, [ebx + edi]
add esp, 0xc
mov dword [ebp - 0xc], edx
test eax, eax
je 0x4ad854
push eax
call fcn.0044d750
add esp, 4
mov edi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x20]
add eax, edi
mov dword [ebp - 4], edi
mov dword [ebp - 0x1c], eax
jmp 0x4ad883
mov ebx, dword [ebp - 0xc]
push edi
push 0
push ebx
call fcn.005d6d60
add esp, 0xc
add ebx, edi
mov edi, dword [ebp - 4]
mov dword [ebp - 0xc], ebx
jmp 0x4ad883
lea edx, [edi + eax]
mov dword [ebp - 0xc], edx
test esi, esi
je 0x4ad899
mov ecx, dword [ebp + 0x10]
push esi
push edi
mov eax, dword [ecx]
call dword [eax + 0xc]
cmp eax, esi
jne 0x4ada94
mov eax, dword [ebp - 0x2c]
mov ecx, 0x1505
add eax, esi
mov byte [edi + esi], 0
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 4]
mov dl, byte [eax]
test dl, dl
je 0x4ad8c8
mov eax, ecx
lea edi, [edi + 1]
shl ecx, 5
add ecx, eax
movzx eax, dl
mov dl, byte [edi]
add ecx, eax
test dl, dl
jne 0x4ad8b3
mov eax, ecx
xor edx, edx
div dword [ebp - 0x30]
mov eax, dword [ebp - 0x28]
mov ebx, dword [eax + edx*4]
lea eax, [eax + edx*4]
imul ebx, dword [ebp - 0x30]
mov dword [ebp - 0x3c], eax
add ebx, edx
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x38], ebx
mov edi, dword [edx + 4]
mov ecx, edi
mov eax, dword [edx]
sub ecx, eax
sar ecx, 2
mov dword [ebp - 0x2c], eax
cmp ecx, ebx
ja 0x4ad9cf
inc ebx
cmp ebx, ecx
jbe 0x4ad9c9
mov eax, dword [edx + 8]
sub ebx, ecx
sub eax, edi
sar eax, 2
cmp ebx, eax
jbe 0x4ad9b3
lea edx, [ecx + ecx]
test ecx, ecx
jne 0x4ad925
mov edx, 1
lea eax, [ecx + ebx]
cmp edx, eax
cmovb edx, eax
mov dword [ebp - 0x34], edx
test edx, edx
je 0x4ad958
push 0
push 0
push 0
push 0
lea eax, [edx*4]
push 0
push eax
call fcn.0049f9b0
mov ecx, dword [ebp + 0xc]
add esp, 0x18
mov edi, dword [ecx + 4]
mov ecx, dword [ecx]
jmp 0x4ad95d
mov ecx, dword [ebp - 0x2c]
xor eax, eax
mov dword [ebp - 0x20], eax
cmp ecx, edi
jne 0x4ad968
mov edx, eax
jmp 0x4ad97b
sub edi, ecx
push edi
push ecx
push eax
call fcn.005d67e0
add esp, 0xc
sar edi, 2
lea edx, [eax + edi*4]
test ebx, ebx
je 0x4ad988
mov ecx, ebx
or eax, 0xffffffff
mov edi, edx
rep stosd dword es:[edi], eax
lea edi, [edx + ebx*4]
mov edx, dword [ebp + 0xc]
mov eax, dword [edx]
test eax, eax
je 0x4ad9a0
push eax
call fcn.0044d750
mov edx, dword [ebp + 0xc]
add esp, 4
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x34]
mov dword [edx], eax
lea eax, [eax + ecx*4]
mov dword [edx + 8], eax
mov dword [edx + 4], edi
jmp 0x4ad9cf
test ebx, ebx
je 0x4ad9c1
mov ecx, ebx
or eax, 0xffffffff
rep stosd dword es:[edi], eax
mov edi, dword [edx + 4]
lea edi, [edi + ebx*4]
mov dword [edx + 4], edi
jmp 0x4ad9cf
lea eax, [eax + ebx*4]
mov dword [edx + 4], eax
mov edi, dword [ebp - 4]
test esi, esi
je 0x4ada32
push 0x60b440
push 0
push 1
push esi
push edi
call fcn.00459e70
add esp, 0x14
mov ebx, accept
test eax, eax
cmovne ebx, eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x38]
test ecx, ecx
jne 0x4ada15
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp + 8]
push ebx
push esi
push edi
call fcn.004569d0
add eax, dword [ebp - 0x20]
mov edx, dword [ebp + 0xc]
mov ecx, eax
jmp 0x4ada35
mov eax, dword [ecx + 0x14]
mov dword [ebp - 0x20], eax
test eax, eax
je 0x4ada00
push ebx
push esi
push edi
call fcn.004a1770
mov ecx, eax
test ecx, ecx
js 0x4ada00
mov edx, dword [ebp + 0xc]
jmp 0x4ada35
or ecx, 0xffffffff
mov eax, dword [edx]
mov edx, dword [ebp - 0x38]
mov esi, dword [ebp - 0x24]
mov ebx, dword [ebp + 0x10]
inc esi
mov dword [ebp - 0x24], esi
mov dword [eax + edx*4], ecx
mov eax, dword [ebp - 0x3c]
inc dword [eax]
cmp esi, dword [ebp - 0x10]
jl 0x4ad747
mov ecx, dword [ebp - 0x14]
and ecx, 3
je 0x4ada6c
mov edx, dword [ebx]
mov eax, 4
sub eax, ecx
mov ecx, ebx
push eax
call dword [edx + 0x18]
mov bl, 1
test edi, edi
je 0x4ada7b
push edi
call fcn.0044d750
add esp, 4
mov eax, dword [ebp - 0x28]
pop edi
test eax, eax
je 0x4ada8c
push eax
call fcn.0044d750
add esp, 4
pop esi
mov al, bl
pop ebx
mov esp, ebp
pop ebp
ret
xor bl, bl
jmp 0x4ada6e
pop esi
xor al, al
pop ebx
mov esp, ebp
pop ebp
ret