Function at 0x1019be20
Capabilities:
Hash data using djb2

Disassembly:
sub esp, 0x1c
mov eax, dword [esp + 0x28]
push ebx
push ebp
mov ebp, dword [esp + 0x28]
push esi
mov esi, dword [esp + 0x40]
and esi, 0x30
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x30]
add esi, ebp
mov ebx, eax
push edi
mov dword [esp + 0x34], esi
mov dword [esp + 0x14], ebx
cmp ebp, esi
jae 0x1019c693
mov cl, byte [ebp]
xor eax, eax
mov dword [esp + 0x1c], eax
cmp cl, 0x26
jne 0x1019c67b
lea eax, [ebp + 3]
cmp eax, esi
jae 0x1019c67b
cmp byte [ebp + 1], 0x23
lea edi, [ebp + 1]
jne 0x1019c043
mov al, byte [ebp + 2]
lea edi, [ebp + 2]
cmp al, 0x78
je 0x1019be98
cmp al, 0x58
je 0x1019be98
movsx eax, al
push eax
xor esi, esi
call dword [sym.imp.MSVCR110.dll_isdigit]
jmp 0x1019beac
mov esi, 1
test al, al
je 0x1019bea2
inc edi
movsx eax, byte [edi]
push eax
call dword [sym.imp.MSVCR110.dll_isxdigit]
add esp, 4
test eax, eax
je case.default.0x1019c28a
mov ecx, 0x10
mov eax, 0xa
test esi, esi
cmovne eax, ecx
push eax
lea eax, [esp + 0x2c]
push eax
push edi
call dword [sym.imp.MSVCR110.dll_strtol]
mov edi, dword [esp + 0x34]
add esp, 0xc
cmp byte [edi], 0x3b
mov ecx, eax
jne case.default.0x1019c28a
cmp ecx, 0x10ffff
jg case.default.0x1019c28a
cmp dword [esp + 0x40], 0
jne 0x1019bf0a
cmp ecx, 0x3f
ja case.default.0x1019c28a
lea eax, [ecx + ecx*2]
cmp dword [eax*4 + 0x104d813c], 0
je case.default.0x1019c28a
mov esi, dword [esp + 0x20]
cmp esi, 0x30
ja case.default.0x1019bf1e
movzx eax, byte [esi + 0x1019c6b8]
jmp dword [eax*4 + 0x1019c6a8]
cmp ecx, 0x20
jb 0x1019bf33
cmp ecx, 0x7e
jbe case.default.0x1019bf1e
cmp ecx, 0xa
je case.default.0x1019bf1e
cmp ecx, 9
je case.default.0x1019bf1e
cmp ecx, 0xd
je case.default.0x1019bf1e
cmp ecx, 0xa0
jb 0x1019bf62
cmp ecx, 0xd7ff
jbe case.default.0x1019bf1e
cmp ecx, 0xe000
jb case.default.0x1019c28a
cmp ecx, 0x10ffff
jbe case.default.0x1019bf1e
mov esi, dword [esp + 0x34]
cmp ebp, edi
jae 0x1019c687
mov al, byte [ebp]
mov byte [ebx], al
inc ebp
inc ebx
cmp ebp, edi
jb 0x1019bf82
jmp 0x1019c67f
cmp ecx, 0x20
jb 0x1019bfa0
cmp ecx, 0x7e
jbe 0x1019c035
lea eax, [ecx - 9]
cmp eax, 4
ja 0x1019bfb1
cmp ecx, 0xb
jne 0x1019c035
cmp ecx, 0xa0
jb 0x1019bfc1
cmp ecx, 0xd7ff
jbe 0x1019c035
lea eax, [ecx - 0xe000]
cmp eax, 0x101fff
ja case.default.0x1019c28a
cmp cx, 0xfffe
jae case.default.0x1019c28a
cmp ecx, 0xfdd0
jb 0x1019c035
cmp ecx, 0xfdef
ja 0x1019c035
jmp case.default.0x1019c28a
cmp ecx, 0x20
jb 0x1019bff4
cmp ecx, 0xd7ff
jbe case.0x1019bf1e.1
cmp ecx, 0xa
je case.0x1019bf1e.1
cmp ecx, 9
je case.0x1019bf1e.1
cmp ecx, 0xd
je case.0x1019bf1e.1
lea eax, [ecx - 0xe000]
cmp eax, 0x101fff
ja case.default.0x1019c28a
cmp ecx, 0xfffe
je case.default.0x1019c28a
cmp ecx, 0xffff
je case.default.0x1019c28a
cmp esi, 0x30
jne case.default.0x1019bf1e
cmp ecx, 0xd
je case.default.0x1019c28a
jmp case.default.0x1019bf1e
mov edx, edi
mov dword [esp + 0x24], edx
lea esp, [esp]
mov al, byte [edi]
cmp al, 0x61
jl 0x1019c05a
cmp al, 0x7a
jle 0x1019c06a
cmp al, 0x41
jl 0x1019c062
cmp al, 0x5a
jle 0x1019c06a
cmp al, 0x30
jl 0x1019c06d
cmp al, 0x39
jg 0x1019c06d
inc edi
jmp 0x1019c050
cmp byte [edi], 0x3b
jne 0x1019bf7a
mov eax, edi
sub eax, edx
mov dword [esp + 0x10], eax
je 0x1019bf7a
mov ecx, eax
mov esi, edx
mov dword [esp + 0x18], ecx
mov edx, 0x1505
cmp eax, 8
jb switch.0x1019c121
mov ebp, eax
shr ebp, 3
mov ebx, eax
movsx eax, byte [esi]
mov ecx, edx
shl ecx, 5
add ecx, edx
add ecx, eax
movsx eax, byte [esi + 1]
mov edx, ecx
shl edx, 5
add edx, ecx
add edx, eax
movsx eax, byte [esi + 2]
mov ecx, edx
shl ecx, 5
add ecx, edx
add ecx, eax
movsx eax, byte [esi + 3]
mov edx, ecx
shl edx, 5
add edx, ecx
add edx, eax
movsx eax, byte [esi + 4]
mov ecx, edx
shl ecx, 5
add ecx, edx
add ecx, eax
movsx eax, byte [esi + 5]
mov edx, ecx
shl edx, 5
add edx, ecx
add edx, eax
movsx eax, byte [esi + 6]
mov ecx, edx
shl ecx, 5
add ecx, edx
add ecx, eax
movsx eax, byte [esi + 7]
mov edx, ecx
shl edx, 5
add edx, ecx
add edx, eax
add esi, 8
sub ebx, 8
dec ebp
jne 0x1019c0a1
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
jmp dword [ecx*4 + 0x1019c6ec]
mov eax, edx
shl edx, 5
add edx, eax
movsx eax, byte [esi]
add edx, eax
inc esi
mov eax, edx
shl edx, 5
add edx, eax
movsx eax, byte [esi]
add edx, eax
inc esi
mov eax, edx
shl edx, 5
add edx, eax
movsx eax, byte [esi]
add edx, eax
inc esi
mov eax, edx
shl edx, 5
add edx, eax
movsx eax, byte [esi]
add edx, eax
inc esi
mov eax, edx
shl edx, 5
add edx, eax
movsx eax, byte [esi]
add edx, eax
inc esi
mov eax, edx
shl edx, 5
add edx, eax
movsx eax, byte [esi]
add edx, eax
inc esi
mov ecx, edx
shl edx, 5
add edx, ecx
movsx ecx, byte [esi]
add edx, ecx
mov ecx, dword [esp + 0x48]
mov eax, edx
xor edx, edx
div dword [ecx]
mov eax, dword [ecx + 4]
mov ecx, dword [eax + edx*4]
mov dword [esp + 0x18], ecx
mov eax, dword [ecx]
test eax, eax
je 0x1019c221
mov esi, dword [esp + 0x10]
movzx ecx, word [ecx + 4]
cmp ecx, esi
jne 0x1019c210
mov edx, dword [esp + 0x24]
sub esi, 4
jb 0x1019c1c6
mov ecx, dword [edx]
cmp ecx, dword [eax]
jne 0x1019c1cf
add edx, 4
add eax, 4
sub esi, 4
jae 0x1019c1b5
cmp esi, 0xfffffffc
je 0x1019c291
mov cl, byte [edx]
cmp cl, byte [eax]
jne 0x1019c20c
cmp esi, 0xfffffffd
je 0x1019c291
mov cl, byte [edx + 1]
cmp cl, byte [eax + 1]
jne 0x1019c20c
cmp esi, 0xfffffffe
je 0x1019c291
mov cl, byte [edx + 2]
cmp cl, byte [eax + 2]
jne 0x1019c20c
cmp esi, 0xffffffff
je 0x1019c291
mov cl, byte [edx + 3]
cmp cl, byte [eax + 3]
je 0x1019c291
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
add ecx, 0x10
mov dword [esp + 0x18], ecx
mov eax, dword [ecx]
test eax, eax
jne 0x1019c1a4
cmp dword [esp + 0x20], 0x20
jne case.default.0x1019c28a
cmp dword [esp + 0x10], 4
jne case.default.0x1019c28a
mov eax, dword [esp + 0x24]
cmp byte [eax], 0x61
jne case.default.0x1019c28a
cmp byte [eax + 1], 0x70
jne case.default.0x1019c28a
cmp byte [eax + 2], 0x6f
jne case.default.0x1019c28a
cmp byte [eax + 3], 0x73
jne case.default.0x1019c28a
mov ecx, 0x27
test byte [esp + 0x44], 1
je case.default.0x1019c28a
mov esi, dword [esp + 0x4c]
test esi, esi
je 0x1019c4d6
lea eax, [esi - 1]
cmp eax, 0xc
ja case.default.0x1019c28a
jmp dword [eax*4 + 0x1019c70c]
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x1c], eax
cmp ecx, 0x27
je 0x1019c267
cmp ecx, 0x22
jne 0x1019c272
test byte [esp + 0x44], 2
jmp 0x1019c26c
cmp ecx, 0xff
ja case.default.0x1019c28a
jmp 0x1019c3b3
cmp ecx, 0xa0
jbe 0x1019c3b3
cmp ecx, 0xad
je 0x1019c3b3
cmp ecx, 0x2116
jne 0x1019c2eb
mov ecx, 0xf0
jmp 0x1019c3b3
cmp ecx, 0xa7
jne 0x1019c2fd
mov ecx, 0xfd
jmp 0x1019c3b3
lea eax, [ecx - 0x401]
cmp eax, 0x4e
ja case.default.0x1019c28a
cmp ecx, 0x40d
je case.default.0x1019c28a
cmp ecx, 0x450
je case.default.0x1019c28a
cmp ecx, 0x45d
je case.default.0x1019c28a
sub ecx, 0x360
jmp 0x1019c3b3
cmp ecx, 0xa4
jb 0x1019c3b3
cmp ecx, 0xbe
jbe 0x1019c350
cmp ecx, 0xff
jbe 0x1019c3b3
mov eax, 0x104cfbd8
mov esi, 0x104cfb70
mov dword [esp + 0x24], eax
cmp ecx, 0xffff
ja case.default.0x1019c28a
lea ebx, [ebx]
sub eax, esi
sar eax, 2
cdq
sub eax, edx
sar eax, 1
movzx edx, word [esi + eax*4]
lea eax, [esi + eax*4]
cmp cx, dx
jae 0x1019c38f
add eax, 0xfffffffc
mov dword [esp + 0x24], eax
jmp 0x1019c398
jbe 0x1019c3a1
lea esi, [eax + 4]
mov eax, dword [esp + 0x24]
cmp esi, eax
jbe 0x1019c370
jmp case.default.0x1019c28a
mov al, byte [eax + 2]
test al, al
je case.default.0x1019c28a
movzx ecx, al
mov esi, dword [esp + 0x4c]
mov edx, dword [esp + 0x1c]
test edx, edx
jne case.default.0x1019c28a
jmp 0x1019c4da
cmp ecx, 0x7f
jbe 0x1019c3b3
cmp ecx, 0xa0
jb 0x1019c3d9
cmp ecx, 0xff
jbe 0x1019c3b3
mov eax, 0x104cff90
mov esi, 0x104cff28
mov dword [esp + 0x24], eax
cmp ecx, 0xffff
ja case.default.0x1019c28a
sub eax, esi
sar eax, 2
cdq
sub eax, edx
sar eax, 1
movzx edx, word [esi + eax*4]
lea eax, [esi + eax*4]
cmp cx, dx
jae 0x1019c412
add eax, 0xfffffffc
mov dword [esp + 0x24], eax
jmp 0x1019c41b
jbe 0x1019c3a1
lea esi, [eax + 4]
mov eax, dword [esp + 0x24]
cmp esi, eax
jbe 0x1019c3f3
jmp case.default.0x1019c28a
cmp ecx, 0x7f
je case.default.0x1019c28a
mov esi, 0x104d06b8
jmp 0x1019c44c
mov esi, 0x104cffe8
mov eax, 0x7f
jmp 0x1019c451
mov esi, 0x104d0258
jmp 0x1019c44c
mov esi, 0x104d0458
mov eax, 0x80
cmp ecx, 0x7f
jbe 0x1019c3af
dec eax
lea eax, [esi + eax*4]
mov dword [esp + 0x24], eax
cmp ecx, 0xffff
ja case.default.0x1019c28a
cmp esi, eax
ja case.default.0x1019c28a
sub eax, esi
sar eax, 2
cdq
sub eax, edx
sar eax, 1
movzx edx, word [esi + eax*4]
lea eax, [esi + eax*4]
cmp cx, dx
jae 0x1019c495
add eax, 0xfffffffc
mov dword [esp + 0x24], eax
jmp 0x1019c4a2
jbe 0x1019c3a1
lea esi, [eax + 4]
mov eax, dword [esp + 0x24]
cmp esi, eax
jbe 0x1019c476
jmp case.default.0x1019c28a
lea eax, [ecx - 0x20]
cmp eax, 0x5d
ja case.default.0x1019c28a
cmp ecx, 0x5c
je case.default.0x1019c28a
jmp 0x1019c3b3
lea eax, [ecx - 0x20]
cmp eax, 0x5d
ja case.default.0x1019c28a
jmp 0x1019c3b3
mov edx, dword [esp + 0x1c]
cmp esi, 0xd
ja case.default.0x1019c4ea
movzx eax, byte [esi + 0x1019c748]
jmp dword [eax*4 + 0x1019c740]
cmp ecx, 0x80
jae 0x1019c502
mov byte [ebx], cl
mov eax, 1
jmp 0x1019c57f
mov eax, ecx
cmp ecx, 0x800
jae 0x1019c523
shr eax, 6
or al, 0xc0
and cl, 0x3f
or cl, 0x80
mov byte [ebx], al
mov byte [ebx + 1], cl
mov eax, 2
jmp 0x1019c57f
cmp ecx, 0x10000
jae 0x1019c54e
shr eax, 0xc
or al, 0xe0
mov byte [ebx], al
mov eax, ecx
shr eax, 6
and al, 0x3f
or al, 0x80
and cl, 0x3f
or cl, 0x80
mov byte [ebx + 1], al
mov byte [ebx + 2], cl
mov eax, 3
jmp 0x1019c57f
shr eax, 0x12
or al, 0xf0
mov byte [ebx], al
mov eax, ecx
shr eax, 0xc
and al, 0x3f
or al, 0x80
mov byte [ebx + 1], al
mov eax, ecx
shr eax, 6
and al, 0x3f
or al, 0x80
and cl, 0x3f
or cl, 0x80
mov byte [ebx + 2], al
mov byte [ebx + 3], cl
mov eax, 4
jmp 0x1019c57f
xor eax, eax
add ebx, eax
mov dword [esp + 0x14], ebx
test edx, edx
je 0x1019c672
cmp esi, 0xd
ja case.default.0x1019c59d
movzx eax, byte [esi + 0x1019c760]
jmp dword [eax*4 + 0x1019c758]
cmp edx, 0x80
jae 0x1019c5c5
mov esi, dword [esp + 0x34]
mov eax, 1
mov byte [ebx], dl
add ebx, eax
mov dword [esp + 0x14], ebx
lea ebp, [edi + 1]
jmp 0x1019c683
mov eax, edx
cmp edx, 0x800
jae 0x1019c5f6
mov esi, dword [esp + 0x34]
shr eax, 6
or al, 0xc0
and dl, 0x3f
mov byte [ebx], al
or dl, 0x80
mov eax, 2
mov byte [ebx + 1], dl
add ebx, eax
mov dword [esp + 0x14], ebx
lea ebp, [edi + 1]
jmp 0x1019c683
cmp edx, 0x10000
jae 0x1019c62e
mov esi, dword [esp + 0x34]
shr eax, 0xc
or al, 0xe0
mov byte [ebx], al
mov eax, edx
shr eax, 6
and al, 0x3f
or al, 0x80
and dl, 0x3f
mov byte [ebx + 1], al
or dl, 0x80
mov eax, 3
mov byte [ebx + 2], dl
add ebx, eax
mov dword [esp + 0x14], ebx
lea ebp, [edi + 1]
jmp 0x1019c683
shr eax, 0x12
or al, 0xf0
mov byte [ebx], al
mov esi, dword [esp + 0x34]
mov eax, edx
shr eax, 0xc
and al, 0x3f
or al, 0x80
mov byte [ebx + 1], al
mov eax, edx
shr eax, 6
and al, 0x3f
or al, 0x80
and dl, 0x3f
mov byte [ebx + 2], al
or dl, 0x80
mov eax, 4
mov byte [ebx + 3], dl
add ebx, eax
mov dword [esp + 0x14], ebx
lea ebp, [edi + 1]
jmp 0x1019c683
xor eax, eax
add ebx, eax
mov dword [esp + 0x14], ebx
mov esi, dword [esp + 0x34]
lea ebp, [edi + 1]
jmp 0x1019c683
mov byte [ebx], cl
inc ebx
inc ebp
mov dword [esp + 0x14], ebx
mov dword [esp + 0x30], ebp
cmp ebp, esi
jb 0x1019be52
mov eax, dword [esp + 0x38]
mov byte [ebx], 0
pop edi
sub ebx, eax
mov eax, dword [esp + 0x38]
pop esi
pop ebp
mov dword [eax], ebx
pop ebx
add esp, 0x1c
ret