710{
711 static const unsigned char asso_values[] =
712 {
713 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
714 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
715 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
716 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
717 49, 49, 49, 49, 49, 49, 49, 49, 49, 5,
718 5, 30, 0, 49, 25, 49, 10, 49, 49, 49,
719 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
720 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
721 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
722 49, 49, 49, 49, 49, 0, 49, 0, 5, 49,
723 15, 0, 49, 10, 49, 30, 49, 49, 0, 20,
724 0, 49, 15, 49, 5, 10, 0, 49, 49, 49,
725 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
726 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
727 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
728 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
729 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
730 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
731 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
732 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
733 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
734 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
735 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
736 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
737 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
738 49, 49, 49, 49, 49, 49
739 };
740 size_t hval = len;
741
742 switch (hval)
743 {
744 default:
745 hval += asso_values[static_cast<unsigned char>(str[4])];
746
747 case 4:
748 hval += asso_values[static_cast<unsigned char>(str[3])];
749
750 case 3:
751 break;
752 }
753 return hval;
754}