Function at 0x5209a0
Capabilities:
Hash data using djb2

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push 0xffffffffffffffff
push 0x6e2bfb
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x228
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov ebx, ecx
xor edi, edi
mov dword [esp + 0x18], ebx
mov dword [esp + 0x14], edi
mov eax, dword [ebx + edi*4 + 0xc]
test eax, eax
je case.default.0x5209ef
cmp edi, 9
ja case.default.0x5209ef
movzx eax, byte [edi + 0x520f1c]
jmp dword [eax*4 + 0x520f0c]
push 0
mov eax, esi
mov ecx, ebx
call fcn.00520790
jmp case.default.0x5209ef
call fcn.0042ec20
push eax
mov ecx, esi
call fcn.00401340
test eax, eax
je 0x520a7d
mov eax, esi
call fcn.004f5580
fmul dword [0x738a08]
fmul dword [0x738aa8]
fadd dword [0x738a34]
fmul dword [0x7389b8]
call fcn.00686364
mov ecx, dword [ebx + edi*4 + 0x34]
test ecx, ecx
jl 0x520a5f
cmp ecx, 0x1ff
jg 0x520a5f
mov ecx, dword [ecx*4 + 0x93d390]
test ecx, ecx
je 0x520a5f
test byte [ecx + 0xc4], 2
je 0x520a69
mov dword [ebx + edi*4 + 0x34], 0xffffffff
jmp 0x520a7d
mov byte [ecx + 0x43], 0xff
mov byte [ecx + 0x42], al
mov byte [ecx + 0x41], al
mov byte [ecx + 0x40], al
mov dword [ecx + 0x44], 1
mov ecx, dword [ebp + 0xc]
lea edi, [ebx + edi*4 + 0x34]
push ecx
mov edx, edi
call fcn.005b8140
movss xmm0, dword [esi + 0x48]
movss xmm1, dword [esi + 0x44]
movss xmm2, dword [esi + 0x40]
push 0x93d390
lea ecx, [esp + 0x44]
mov edx, edi
movss dword [esp + 0x44], xmm2
movss dword [esp + 0x48], xmm1
movss dword [esp + 0x4c], xmm0
call fcn.005b9220
mov edx, edi
call fcn.005b8250
test eax, eax
je 0x520ad4
mov edx, dword [esp + 0x14]
mov dword [ebx + edx*4 + 0xc], 0
mov eax, dword [esp + 0x14]
mov eax, dword [ebx + eax*4 + 0x5c]
test eax, eax
je 0x520d40
movss xmm0, dword [esi + 0x48]
movss xmm1, dword [esi + 0x44]
movss xmm2, dword [esi + 0x40]
xor ecx, ecx
mov cl, byte [esi + 0x76]
lea edx, [esp + 0x50]
movss dword [esp + 0x50], xmm2
movss dword [esp + 0x54], xmm1
movss dword [esp + 0x58], xmm0
and ecx, 0xff
push ecx
push edx
call fcn.00634050
jmp 0x520d40
mov eax, dword [ebx + 0x84]
test eax, eax
mov dword [esp + 0x1c], 0
jle case.default.0x5209ef
lea edi, [ebx + 0x8c]
lea esp, [esp]
mov eax, dword [edi - 4]
push eax
mov eax, esi
lea ebx, [esp + 0x34]
call fcn.00520f30
mov eax, dword [edi]
test eax, eax
jl 0x520b70
cmp eax, 0x1ff
jg 0x520b70
mov eax, dword [eax*4 + 0x93d390]
test eax, eax
je 0x520b70
test byte [eax + 0xc4], 2
je 0x520b78
mov dword [edi], 0xffffffff
jmp 0x520ba7
mov edx, dword [esp + 0x30]
lea ecx, [eax + 0x30]
mov dword [ecx], edx
mov edx, dword [esp + 0x34]
mov dword [ecx + 4], edx
mov edx, dword [esp + 0x38]
mov dword [ecx + 8], edx
mov edx, dword [esp + 0x3c]
mov dword [ecx + 0xc], edx
mov ecx, 1
mov dword [eax + 0x90], ecx
mov dword [eax + 0x94], ecx
mov eax, dword [edi]
test eax, eax
jl 0x520bc8
cmp eax, 0x1ff
jg 0x520bc8
mov ecx, dword [eax*4 + 0x93d390]
test ecx, ecx
je 0x520bc8
test byte [ecx + 0xc4], 2
je 0x520bd0
mov dword [edi], 0xffffffff
jmp 0x520be2
mov eax, dword [eax*4 + 0x93d390]
mov ecx, dword [ebp + 0xc]
mov edx, dword [eax]
push ecx
mov ecx, eax
call dword [edx + 0x1c]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov ecx, dword [edx + 0x84]
inc eax
add edi, 8
cmp eax, ecx
mov dword [esp + 0x1c], eax
jl 0x520b40
mov ebx, edx
jmp 0x520d40
lea edi, [ebx + 0xcc]
mov dword [esp + 0x1c], 0xb
jmp 0x520c20
mov eax, dword [edi - 4]
cmp eax, 0xffffffff
je 0x520d1c
push eax
lea ebx, [esp + 0x84]
mov eax, esi
call fcn.00521000
movss xmm0, dword [esp + 0xb0]
movss dword [esp + 0x20], xmm0
movss xmm0, dword [esp + 0xb4]
movss dword [esp + 0x24], xmm0
movss xmm0, dword [esp + 0xb8]
push 0x93d390
lea ecx, [esp + 0x24]
mov edx, edi
movss dword [esp + 0x2c], xmm0
call fcn.005b9220
lea eax, [esp + 0x74]
push eax
lea ecx, [esp + 0x84]
call fcn.0043f160
mov ecx, eax
mov edx, edi
call fcn.005b82d0
mov eax, dword [edi]
test eax, eax
jl 0x520cb3
cmp eax, 0x1ff
jg 0x520cb3
mov ecx, dword [eax*4 + 0x93d390]
test ecx, ecx
je 0x520cb3
test byte [ecx + 0xc4], 2
je 0x520cbb
mov dword [edi], 0xffffffff
jmp 0x520ccd
mov eax, dword [eax*4 + 0x93d390]
mov ecx, dword [ebp + 0xc]
mov edx, dword [eax]
push ecx
mov ecx, eax
call dword [edx + 0x1c]
mov eax, dword [edi]
test eax, eax
jl 0x520cee
cmp eax, 0x1ff
jg 0x520cee
mov ecx, dword [eax*4 + 0x93d390]
test ecx, ecx
je 0x520cee
test byte [ecx + 0xc4], 2
je 0x520d06
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
push eax
mov ecx, ebx
mov dword [edi], 0xffffffff
call fcn.005205e0
jmp 0x520d2e
mov eax, dword [eax*4 + 0x93d390]
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
test eax, eax
je 0x520d2a
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
push eax
mov ecx, ebx
call fcn.005205e0
jmp 0x520d2e
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
add edi, 8
dec eax
mov dword [esp + 0x1c], eax
jne 0x520c20
mov edi, dword [esp + 0x14]
inc edi
cmp edi, 0xa
mov dword [esp + 0x14], edi
jl 0x5209d3
movss xmm0, dword [ebx + 4]
xorps xmm1, xmm1
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x520ec9
subss xmm0, dword [ebp + 0xc]
comiss xmm1, xmm0
movss dword [ebx + 4], xmm0
jb 0x520ec9
test esi, esi
je 0x520ec4
lea ecx, [esp + 0xc0]
call fcn.00527d10
xor edi, edi
lea eax, [esp + 0x50]
mov dword [esp + 0x23c], edi
mov edx, dword [esi]
push eax
mov ecx, esi
call dword [edx + 0x68]
movss xmm3, dword [eax + 8]
movss xmm0, dword [eax + 0x18]
movss xmm4, dword [eax + 4]
movss xmm1, dword [eax + 0x14]
movss xmm5, dword [eax]
movss xmm2, dword [eax + 0x10]
addss xmm0, xmm3
movss xmm3, dword [0x738a1c]
addss xmm2, xmm5
addss xmm1, xmm4
mulss xmm2, xmm3
mulss xmm1, xmm3
mulss xmm0, xmm3
movss dword [esp + 0x20], xmm2
movss dword [esp + 0x24], xmm1
movss dword [esp + 0x28], xmm0
xor ebx, ebx
mov edx, str.GENERIC_LETHAL
mov ecx, 0x1505
mov eax, 0x47
inc edx
cmp eax, 0x61
jl 0x520e11
cmp eax, 0x7a
jg 0x520e11
sub eax, 0x20
imul ecx, ecx, 0x21
xor ecx, eax
movsx eax, byte [edx]
test eax, eax
jne 0x520e03
push ebx
and ecx, 0xfffffff
or ecx, 0x40000000
push edi
push ecx
lea ecx, [esp + 0xcc]
push ecx
lea eax, [esp + 0x30]
call fcn.00527ee0
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0xc]
mov edx, eax
mov dword [esp + 0x120], edx
mov edx, ecx
xor edi, edi
or eax, ecx
mov dword [esp + 0x124], edx
je 0x520e62
mov eax, 1
jmp 0x520e64
xor eax, eax
mov ecx, dword [esp + 0x22c]
shl eax, 4
xor eax, ecx
and eax, 0x10
xor ecx, eax
mov dword [esp + 0x22c], ecx
push esi
lea ecx, [esp + 0xc4]
call fcn.00528a80
mov dword [esp + 0x23c], 0xffffffff
and dword [esp + 0x22c], 0xfffffffc
lea eax, [esp + 0xc0]
call fcn.00527df0
xorps xmm1, xmm1
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x204], edi
mov dword [esp + 0x200], edi
mov dword [esp + 0xc0], edi
movss dword [ebx + 4], xmm1
movss xmm0, dword [ebx + 8]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x520ef5
subss xmm0, dword [ebp + 0xc]
comiss xmm1, xmm0
movss dword [ebx + 8], xmm0
jb 0x520ef5
mov esi, ebx
call fcn.005206a0
xorps xmm0, xmm0
movss dword [ebx + 8], xmm0
mov ecx, dword [esp + 0x234]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 8