Function at 0x512270
Capabilities:
Hash data using djb2

Disassembly:
push 0xffffffffffffffff
push 0x6dfea1
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x5b0
push ebx
push ebp
push esi
mov dword [esp + 0x2c], 0x50000000
xor ebx, ebx
mov dword [esp + 0x5c4], ebx
xor ebp, ebp
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x24], ebx
lea ecx, [esp + 0x30]
call fcn.0064c690
mov eax, dword [esp + 0x5cc]
lea esi, [esp + 0x30]
mov byte [esp + 0x5c4], 2
call fcn.0064c590
test eax, eax
jne 0x5122fb
mov ecx, esi
call fcn.0064c770
pop esi
pop ebp
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x5b0]
mov dword fs:[0], ecx
add esp, 0x5bc
ret
push edi
mov edi, dword [esp + 0x40]
call fcn.006287f0
call fcn.006287f0
lea ecx, [esp + 0x34]
call fcn.0064ccb0
cmp dword [esp + 0x40], edi
jne 0x51239d
lea ecx, [ecx]
lea esi, [esp + 0x1c]
call fcn.00512cc0
mov esi, eax
lea eax, [esp + 0x198]
push 0x70a557
push eax
call fcn.00625d90
add esp, 8
test eax, eax
je 0x51238a
movsx eax, byte [esp + 0x198]
cmp eax, ebx
lea edx, [esp + 0x198]
mov ecx, 0x1505
je 0x51237a
lea esp, [esp]
inc edx
cmp eax, 0x61
jl 0x51236e
cmp eax, 0x7a
jg 0x51236e
sub eax, 0x20
imul ecx, ecx, 0x21
xor ecx, eax
movsx eax, byte [edx]
cmp eax, ebx
jne 0x512360
mov edx, dword [esi]
mov eax, dword [esi]
xor edx, ecx
and edx, 0xfffffff
xor eax, edx
mov dword [esi], eax
lea ecx, [esp + 0x34]
call fcn.0064ccb0
cmp dword [esp + 0x40], edi
je 0x512320
mov ebp, dword [esp + 0x20]
xorps xmm0, xmm0
lea eax, [esp + 0x34]
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], 1
mov dword [esp + 0x194], ebx
mov byte [esp + 0x5a4], 0x20
movss dword [esp + 0x598], xmm0
mov dword [esp + 0x59c], ebx
mov byte [esp + 0x198], bl
call fcn.0064c8a0
mov eax, dword [esp + 0x3c]
cmp eax, dword [esp + 0x34]
jge 0x51254c
lea esp, [esp]
lea ecx, [esp + 0x34]
call fcn.0064ccb0
lea ecx, [esp + 0x198]
push 0x70a557
push ecx
call fcn.00625d90
add esp, 8
test eax, eax
je 0x512535
movsx eax, byte [esp + 0x198]
cmp eax, ebx
lea edx, [esp + 0x198]
mov ecx, 0x1505
je 0x51244a
mov edi, edi
inc edx
cmp eax, 0x61
jl 0x51243e
cmp eax, 0x7a
jg 0x51243e
sub eax, 0x20
imul ecx, ecx, 0x21
xor ecx, eax
movsx eax, byte [edx]
cmp eax, ebx
jne 0x512430
and ecx, 0xfffffff
lea edx, [esp + 0x14]
or ecx, 0x40000000
push edx
mov edi, 0x91a408
mov dword [esp + 0x18], ecx
call fcn.0050e790
cmp eax, ebx
je 0x512535
cmp ebp, 1
jle 0x512535
mov esi, dword [esp + 0x1c]
add esi, 4
dec ebp
lea ecx, [esp + 0x34]
call fcn.0064ccb0
lea eax, [esp + 0x198]
call fcn.006263d0
cvttss2si eax, xmm0
mov dword [esp + 0x59c], eax
mov eax, 1
movss dword [esp + 0x598], xmm0
mov dword [esp + 0x194], eax
mov dword [esp + 0x5a0], eax
cmp dword [esi], 0x50000000
movss dword [esp + 0x18], xmm0
je 0x512527
push esi
mov edi, 0x91a408
call fcn.0050e790
cmp eax, ebx
je 0x512527
push esi
lea ebx, [esp + 0x14]
lea eax, [esp + 0x18]
call fcn.005112c0
mov ecx, ebx
push ecx
call fcn.0050e790
test eax, eax
je 0x51251d
mov ecx, dword [esp + 0x5d8]
test ecx, ecx
mov edx, dword [esp + 0x5d4]
je 0x512514
movss xmm0, dword [esp + 0x18]
movss dword [eax + edx], xmm0
jmp 0x51251d
cvttss2si ecx, dword [esp + 0x18]
mov dword [eax + edx], ecx
mov dword [esp + 0x10], 0
xor ebx, ebx
add esi, 4
dec ebp
jne 0x512482
mov ebp, dword [esp + 0x20]
lea eax, [esp + 0x34]
call fcn.0064c8a0
mov eax, dword [esp + 0x3c]
cmp eax, dword [esp + 0x34]
jl 0x5123f0
lea esi, [esp + 0x34]
call fcn.0064c7f0
call fcn.006287f0
mov eax, dword [esp + 0x38]
cmp eax, ebx
pop edi
je 0x512570
push eax
call fcn.0062a450
add esp, 4
mov dword [esp + 0x34], ebx
mov eax, dword [esp + 0x5b0]
cmp eax, ebx
je 0x51258b
push eax
call fcn.0062a450
add esp, 4
mov dword [esp + 0x5b0], ebx
or eax, 0xffffffff
mov dword [esp + 0x5a8], eax
mov dword [esp + 0x5ac], eax
mov byte [esp + 0x5c4], bl
cmp dword [esp + 0x24], 2
mov dword [esp + 0x5a4], ebx
je 0x5125d6
mov eax, dword [esp + 0x18]
cmp eax, ebx
je 0x5125d6
mov ecx, dword [eax - 4]
lea esi, [eax - 4]
push fcn.00668d30
push ecx
push 4
push eax
call fcn.00685fa2
push esi
call fcn.00685b4c
add esp, 4
mov ecx, dword [esp + 0x5bc]
pop esi
pop ebp
mov eax, 1
pop ebx
mov dword fs:[0], ecx
add esp, 0x5bc
ret