/* ANSI-C code produced by gperf version 3.0.3 */
/* Command-line: gperf -o -C -E -k '1-6,$' -j1 -D -N libc_name_p -L ANSI-C cfns.gperf  */

#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
/* The character set is not based on ISO-646.  */
#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
#endif

#line 1 "cfns.gperf"

/* Copyright (C) 2000-2014 Free Software Foundation, Inc.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.

GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.  */
#ifdef __GNUC__
__inline
#endif
static unsigned int hash (const char *, unsigned int);
#ifdef __GNUC__
__inline
#endif
const char * libc_name_p (const char *, unsigned int);
/* maximum key range = 391, duplicates = 0 */

#ifdef __GNUC__
__inline
#else
#ifdef __cplusplus
inline
#endif
#endif
static unsigned int
hash (register const char *str, register unsigned int len)
{
  static const unsigned short asso_values[] =
    {
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400,   0,   0,
        1, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400,  28,  90,   0,
       95,   0,  51,  93, 114,  26, 109, 124,   5,   1,
        6,  13,  37, 128,   3,   0,   0,  49,  38,   0,
      104,  45,   0, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400
    };
  register int hval = len;

  switch (hval)
    {
      default:
        hval += asso_values[(unsigned char)str[5]+1];
      /*FALLTHROUGH*/
      case 5:
        hval += asso_values[(unsigned char)str[4]];
      /*FALLTHROUGH*/
      case 4:
        hval += asso_values[(unsigned char)str[3]];
      /*FALLTHROUGH*/
      case 3:
        hval += asso_values[(unsigned char)str[2]];
      /*FALLTHROUGH*/
      case 2:
        hval += asso_values[(unsigned char)str[1]];
      /*FALLTHROUGH*/
      case 1:
        hval += asso_values[(unsigned char)str[0]];
        break;
    }
  return hval + asso_values[(unsigned char)str[len - 1]];
}

#ifdef __GNUC__
__inline
#ifdef __GNUC_STDC_INLINE__
__attribute__ ((__gnu_inline__))
#endif
#endif
const char *
libc_name_p (register const char *str, register unsigned int len)
{
  enum
    {
      TOTAL_KEYWORDS = 156,
      MIN_WORD_LENGTH = 3,
      MAX_WORD_LENGTH = 10,
      MIN_HASH_VALUE = 9,
      MAX_HASH_VALUE = 399
    };

  static const char * const wordlist[] =
    {
      "wcsstr",
      "strstr",
      "cos",
      "towctrans",
      "memmove",
      "wcstol",
      "wcscoll",
      "wcstombs",
      "strtol",
      "strcoll",
      "wcslen",
      "time",
      "ctime",
      "strlen",
      "iswctype",
      "wmemchr",
      "wcsrchr",
      "ceil",
      "sin",
      "strrchr",
      "tan",
      "iscntrl",
      "acos",
      "wmemmove",
      "wcsrtombs",
      "wctrans",
      "wmemcmp",
      "pow",
      "atol",
      "wcsncmp",
      "memset",
      "free",
      "strncmp",
      "wmemset",
      "wcsspn",
      "wcstoul",
      "strspn",
      "strtoul",
      "asctime",
      "atan2",
      "asin",
      "atan",
      "ferror",
      "iswalnum",
      "wcscat",
      "realloc",
      "strcat",
      "wcscpy",
      "memcpy",
      "strcpy",
      "tolower",
      "floor",
      "iswcntrl",
      "atoi",
      "clearerr",
      "swscanf",
      "wcsncat",
      "islower",
      "strncat",
      "btowc",
      "localtime",
      "wctomb",
      "isalnum",
      "isprint",
      "mblen",
      "wcstod",
      "log10",
      "strtod",
      "wcrtomb",
      "abs",
      "setlocale",
      "wcschr",
      "mbrlen",
      "memchr",
      "strchr",
      "labs",
      "iswpunct",
      "exit",
      "sqrt",
      "swprintf",
      "wctype",
      "mbsrtowcs",
      "wcscspn",
      "getenv",
      "strcspn",
      "towlower",
      "atof",
      "wcstok",
      "localeconv",
      "strtok",
      "calloc",
      "malloc",
      "isalpha",
      "iswlower",
      "iswspace",
      "wcsxfrm",
      "signal",
      "strxfrm",
      "wcsftime",
      "feof",
      "strftime",
      "wcscmp",
      "fabs",
      "memcmp",
      "strcmp",
      "vsprintf",
      "fwide",
      "gmtime",
      "sprintf",
      "exp",
      "wmemcpy",
      "iswprint",
      "sscanf",
      "wcsncpy",
      "strncpy",
      "isspace",
      "toupper",
      "wctob",
      "div",
      "mbtowc",
      "ldiv",
      "log",
      "mktime",
      "isupper",
      "atexit",
      "modf",
      "mbstowcs",
      "mbrtowc",
      "ispunct",
      "iswalpha",
      "setvbuf",
      "rand",
      "srand",
      "frexp",
      "towupper",
      "mbsinit",
      "cosh",
      "vswprintf",
      "iswupper",
      "wcspbrk",
      "fmod",
      "strpbrk",
      "sinh",
      "tanh",
      "iswdigit",
      "clock",
      "longjmp",
      "ldexp",
      "setbuf",
      "fseek",
      "iswgraph",
      "difftime",
      "iswxdigit",
      "isdigit",
      "isxdigit",
      "isgraph"
    };

  static const short lookup[] =
    {
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,
       -1,  -1,   1,  -1,  -1,  -1,   2,  -1,  -1,  -1,
       -1,  -1,   3,   4,  -1,   5,   6,   7,   8,   9,
       10,  11,  12,  13,  14,  -1,  -1,  -1,  15,  16,
       17,  18,  19,  20,  21,  22,  -1,  -1,  23,  24,
       -1,  25,  26,  27,  -1,  28,  29,  30,  31,  32,
       33,  -1,  34,  35,  -1,  36,  37,  38,  -1,  39,
       40,  -1,  41,  -1,  -1,  -1,  -1,  -1,  -1,  42,
       -1,  43,  -1,  44,  -1,  45,  46,  -1,  47,  -1,
       48,  49,  50,  51,  52,  -1,  -1,  53,  54,  55,
       -1,  -1,  -1,  56,  -1,  57,  58,  -1,  59,  60,
       61,  62,  63,  64,  65,  -1,  66,  67,  -1,  68,
       -1,  69,  70,  71,  72,  73,  74,  75,  -1,  -1,
       -1,  -1,  -1,  76,  77,  78,  -1,  -1,  79,  80,
       81,  82,  -1,  83,  84,  -1,  85,  86,  87,  -1,
       88,  89,  90,  91,  -1,  -1,  -1,  92,  -1,  93,
       -1,  94,  -1,  95,  -1,  96,  97,  -1,  98,  -1,
       99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
       -1, 109, 110, 111, 112,  -1, 113,  -1,  -1, 114,
       -1,  -1,  -1, 115,  -1,  -1,  -1, 116, 117,  -1,
      118,  -1,  -1,  -1,  -1, 119, 120, 121,  -1, 122,
      123,  -1,  -1, 124,  -1, 125, 126,  -1, 127,  -1,
      128,  -1,  -1, 129, 130,  -1,  -1,  -1,  -1,  -1,
       -1, 131, 132,  -1,  -1,  -1,  -1, 133, 134, 135,
       -1,  -1,  -1,  -1,  -1, 136,  -1, 137,  -1,  -1,
       -1, 138,  -1,  -1,  -1,  -1,  -1,  -1, 139, 140,
       -1, 141,  -1,  -1, 142,  -1, 143,  -1,  -1, 144,
       -1, 145,  -1,  -1,  -1,  -1, 146,  -1,  -1,  -1,
       -1,  -1,  -1, 147,  -1,  -1,  -1,  -1,  -1, 148,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1, 149,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1, 150,  -1,  -1,  -1,  -1,  -1,
      151,  -1,  -1, 152,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1, 153,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1, 154,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 155
    };

  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
    {
      register int key = hash (str, len);

      if (key <= MAX_HASH_VALUE && key >= 0)
        {
          register int index = lookup[key];

          if (index >= 0)
            {
              register const char *s = wordlist[index];

              if (*str == *s && !strcmp (str + 1, s + 1))
                return s;
            }
        }
    }
  return 0;
}
