/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|*HTML named character reference to UTF-8 translation                         *|
|*                                                                            *|
|* Automatically generated file, do not edit!                                 *|
|*                                                                            *|
\*===----------------------------------------------------------------------===*/

StringRef translateHTMLNamedCharacterReferenceToUTF8(
                                             StringRef Name) {
  switch (Name.size()) {
  default: break;
  case 2:	 // 15 strings to match.
    switch (Name[0]) {
    default: break;
    case 'G':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'T':	 // 1 string to match.
        return "\x3e";	 // "GT"
      case 't':	 // 1 string to match.
        return "\x3e";	 // "Gt"
      }
      break;
    case 'L':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'T':	 // 1 string to match.
        return "\x3c";	 // "LT"
      case 't':	 // 1 string to match.
        return "\x3c";	 // "Lt"
      }
      break;
    case 'P':	 // 1 string to match.
      if (Name[1] != 'i')
        break;
      return "\xce\xa0";	 // "Pi"
    case 'X':	 // 1 string to match.
      if (Name[1] != 'i')
        break;
      return "\xce\x9e";	 // "Xi"
    case 'g':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'e':	 // 1 string to match.
        return "\xe2\x89\xa5";	 // "ge"
      case 't':	 // 1 string to match.
        return "\x3e";	 // "gt"
      }
      break;
    case 'l':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'e':	 // 1 string to match.
        return "\xe2\x89\xa4";	 // "le"
      case 't':	 // 1 string to match.
        return "\x3c";	 // "lt"
      }
      break;
    case 'm':	 // 1 string to match.
      if (Name[1] != 'u')
        break;
      return "\xce\xbc";	 // "mu"
    case 'n':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'e':	 // 1 string to match.
        return "\xe2\x89\xa0";	 // "ne"
      case 'u':	 // 1 string to match.
        return "\xce\xbd";	 // "nu"
      }
      break;
    case 'p':	 // 1 string to match.
      if (Name[1] != 'i')
        break;
      return "\xcf\x80";	 // "pi"
    case 'x':	 // 1 string to match.
      if (Name[1] != 'i')
        break;
      return "\xce\xbe";	 // "xi"
    }
    break;
  case 3:	 // 16 strings to match.
    switch (Name[0]) {
    default: break;
    case 'A':	 // 1 string to match.
      if (memcmp(Name.data()+1, "MP", 2))
        break;
      return "\x26";	 // "AMP"
    case 'P':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'h':	 // 1 string to match.
        if (Name[2] != 'i')
          break;
        return "\xce\xa6";	 // "Phi"
      case 's':	 // 1 string to match.
        if (Name[2] != 'i')
          break;
        return "\xce\xa8";	 // "Psi"
      }
      break;
    case 'R':	 // 1 string to match.
      if (memcmp(Name.data()+1, "EG", 2))
        break;
      return "\xc2\xae";	 // "REG"
    case 'a':	 // 1 string to match.
      if (memcmp(Name.data()+1, "mp", 2))
        break;
      return "\x26";	 // "amp"
    case 'c':	 // 1 string to match.
      if (memcmp(Name.data()+1, "hi", 2))
        break;
      return "\xcf\x87";	 // "chi"
    case 'd':	 // 1 string to match.
      if (memcmp(Name.data()+1, "eg", 2))
        break;
      return "\xc2\xb0";	 // "deg"
    case 'e':	 // 1 string to match.
      if (memcmp(Name.data()+1, "ta", 2))
        break;
      return "\xce\xb7";	 // "eta"
    case 'i':	 // 1 string to match.
      if (memcmp(Name.data()+1, "nt", 2))
        break;
      return "\xe2\x88\xab";	 // "int"
    case 'p':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'h':	 // 1 string to match.
        if (Name[2] != 'i')
          break;
        return "\xcf\x86";	 // "phi"
      case 's':	 // 1 string to match.
        if (Name[2] != 'i')
          break;
        return "\xcf\x88";	 // "psi"
      }
      break;
    case 'r':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'e':	 // 1 string to match.
        if (Name[2] != 'g')
          break;
        return "\xc2\xae";	 // "reg"
      case 'h':	 // 1 string to match.
        if (Name[2] != 'o')
          break;
        return "\xcf\x81";	 // "rho"
      }
      break;
    case 's':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'i':	 // 1 string to match.
        if (Name[2] != 'm')
          break;
        return "\xe2\x88\xbc";	 // "sim"
      case 'u':	 // 1 string to match.
        if (Name[2] != 'm')
          break;
        return "\xe2\x88\x91";	 // "sum"
      }
      break;
    case 't':	 // 1 string to match.
      if (memcmp(Name.data()+1, "au", 2))
        break;
      return "\xcf\x84";	 // "tau"
    }
    break;
  case 4:	 // 30 strings to match.
    switch (Name[0]) {
    default: break;
    case 'A':	 // 1 string to match.
      if (memcmp(Name.data()+1, "uml", 3))
        break;
      return "\xc3\x84";	 // "Auml"
    case 'C':	 // 1 string to match.
      if (memcmp(Name.data()+1, "OPY", 3))
        break;
      return "\xc2\xa9";	 // "COPY"
    case 'E':	 // 1 string to match.
      if (memcmp(Name.data()+1, "uml", 3))
        break;
      return "\xc3\x8b";	 // "Euml"
    case 'I':	 // 1 string to match.
      if (memcmp(Name.data()+1, "uml", 3))
        break;
      return "\xc3\x8f";	 // "Iuml"
    case 'O':	 // 1 string to match.
      if (memcmp(Name.data()+1, "uml", 3))
        break;
      return "\xc3\x96";	 // "Ouml"
    case 'Q':	 // 1 string to match.
      if (memcmp(Name.data()+1, "UOT", 3))
        break;
      return "\x22";	 // "QUOT"
    case 'U':	 // 1 string to match.
      if (memcmp(Name.data()+1, "uml", 3))
        break;
      return "\xc3\x9c";	 // "Uuml"
    case 'Y':	 // 1 string to match.
      if (memcmp(Name.data()+1, "uml", 3))
        break;
      return "\xc5\xb8";	 // "Yuml"
    case 'a':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'p':	 // 1 string to match.
        if (memcmp(Name.data()+2, "os", 2))
          break;
        return "\x27";	 // "apos"
      case 'u':	 // 1 string to match.
        if (memcmp(Name.data()+2, "ml", 2))
          break;
        return "\xc3\xa4";	 // "auml"
      }
      break;
    case 'b':	 // 1 string to match.
      if (memcmp(Name.data()+1, "eta", 3))
        break;
      return "\xce\xb2";	 // "beta"
    case 'c':	 // 1 string to match.
      if (memcmp(Name.data()+1, "opy", 3))
        break;
      return "\xc2\xa9";	 // "copy"
    case 'e':	 // 1 string to match.
      if (memcmp(Name.data()+1, "uml", 3))
        break;
      return "\xc3\xab";	 // "euml"
    case 'i':	 // 3 strings to match.
      switch (Name[1]) {
      default: break;
      case 'o':	 // 1 string to match.
        if (memcmp(Name.data()+2, "ta", 2))
          break;
        return "\xce\xb9";	 // "iota"
      case 's':	 // 1 string to match.
        if (memcmp(Name.data()+2, "in", 2))
          break;
        return "\xe2\x88\x88";	 // "isin"
      case 'u':	 // 1 string to match.
        if (memcmp(Name.data()+2, "ml", 2))
          break;
        return "\xc3\xaf";	 // "iuml"
      }
      break;
    case 'l':	 // 1 string to match.
      if (memcmp(Name.data()+1, "arr", 3))
        break;
      return "\xe2\x86\x90";	 // "larr"
    case 'n':	 // 1 string to match.
      if (memcmp(Name.data()+1, "bsp", 3))
        break;
      return "\xc2\xa0";	 // "nbsp"
    case 'o':	 // 1 string to match.
      if (memcmp(Name.data()+1, "uml", 3))
        break;
      return "\xc3\xb6";	 // "ouml"
    case 'p':	 // 4 strings to match.
      switch (Name[1]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(Name.data()+2, "rt", 2))
          break;
        return "\xe2\x88\x82";	 // "part"
      case 'e':	 // 1 string to match.
        if (memcmp(Name.data()+2, "rp", 2))
          break;
        return "\xe2\x8a\xa5";	 // "perp"
      case 'r':	 // 2 strings to match.
        if (Name[2] != 'o')
          break;
        switch (Name[3]) {
        default: break;
        case 'd':	 // 1 string to match.
          return "\xe2\x88\x8f";	 // "prod"
        case 'p':	 // 1 string to match.
          return "\xe2\x88\x9d";	 // "prop"
        }
        break;
      }
      break;
    case 'q':	 // 1 string to match.
      if (memcmp(Name.data()+1, "uot", 3))
        break;
      return "\x22";	 // "quot"
    case 'r':	 // 1 string to match.
      if (memcmp(Name.data()+1, "arr", 3))
        break;
      return "\xe2\x86\x92";	 // "rarr"
    case 's':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(Name.data()+2, "ot", 2))
          break;
        return "\xe2\x8b\x85";	 // "sdot"
      case 'e':	 // 1 string to match.
        if (memcmp(Name.data()+2, "ct", 2))
          break;
        return "\xc2\xa7";	 // "sect"
      }
      break;
    case 'u':	 // 1 string to match.
      if (memcmp(Name.data()+1, "uml", 3))
        break;
      return "\xc3\xbc";	 // "uuml"
    case 'y':	 // 1 string to match.
      if (memcmp(Name.data()+1, "uml", 3))
        break;
      return "\xc3\xbf";	 // "yuml"
    case 'z':	 // 1 string to match.
      if (memcmp(Name.data()+1, "eta", 3))
        break;
      return "\xce\xb6";	 // "zeta"
    }
    break;
  case 5:	 // 48 strings to match.
    switch (Name[0]) {
    default: break;
    case 'A':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(Name.data()+2, "irc", 3))
          break;
        return "\xc3\x82";	 // "Acirc"
      case 'r':	 // 1 string to match.
        if (memcmp(Name.data()+2, "ing", 3))
          break;
        return "\xc3\x85";	 // "Aring"
      }
      break;
    case 'D':	 // 1 string to match.
      if (memcmp(Name.data()+1, "elta", 4))
        break;
      return "\xce\x94";	 // "Delta"
    case 'E':	 // 1 string to match.
      if (memcmp(Name.data()+1, "circ", 4))
        break;
      return "\xc3\x8a";	 // "Ecirc"
    case 'G':	 // 1 string to match.
      if (memcmp(Name.data()+1, "amma", 4))
        break;
      return "\xce\x93";	 // "Gamma"
    case 'I':	 // 1 string to match.
      if (memcmp(Name.data()+1, "circ", 4))
        break;
      return "\xc3\x8e";	 // "Icirc"
    case 'O':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(Name.data()+2, "irc", 3))
          break;
        return "\xc3\x94";	 // "Ocirc"
      case 'm':	 // 1 string to match.
        if (memcmp(Name.data()+2, "ega", 3))
          break;
        return "\xce\xa9";	 // "Omega"
      }
      break;
    case 'P':	 // 1 string to match.
      if (memcmp(Name.data()+1, "rime", 4))
        break;
      return "\xe2\x80\xb3";	 // "Prime"
    case 'S':	 // 1 string to match.
      if (memcmp(Name.data()+1, "igma", 4))
        break;
      return "\xce\xa3";	 // "Sigma"
    case 'T':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'R':	 // 1 string to match.
        if (memcmp(Name.data()+2, "ADE", 3))
          break;
        return "\xe2\x84\xa2";	 // "TRADE"
      case 'h':	 // 1 string to match.
        if (memcmp(Name.data()+2, "eta", 3))
          break;
        return "\xce\x98";	 // "Theta"
      }
      break;
    case 'U':	 // 1 string to match.
      if (memcmp(Name.data()+1, "circ", 4))
        break;
      return "\xc3\x9b";	 // "Ucirc"
    case 'Y':	 // 1 string to match.
      if (memcmp(Name.data()+1, "circ", 4))
        break;
      return "\xc5\xb6";	 // "Ycirc"
    case 'a':	 // 4 strings to match.
      switch (Name[1]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(Name.data()+2, "irc", 3))
          break;
        return "\xc3\xa2";	 // "acirc"
      case 'l':	 // 1 string to match.
        if (memcmp(Name.data()+2, "pha", 3))
          break;
        return "\xce\xb1";	 // "alpha"
      case 'r':	 // 1 string to match.
        if (memcmp(Name.data()+2, "ing", 3))
          break;
        return "\xc3\xa5";	 // "aring"
      case 's':	 // 1 string to match.
        if (memcmp(Name.data()+2, "ymp", 3))
          break;
        return "\xe2\x89\x88";	 // "asymp"
      }
      break;
    case 'd':	 // 1 string to match.
      if (memcmp(Name.data()+1, "elta", 4))
        break;
      return "\xce\xb4";	 // "delta"
    case 'e':	 // 3 strings to match.
      switch (Name[1]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(Name.data()+2, "irc", 3))
          break;
        return "\xc3\xaa";	 // "ecirc"
      case 'm':	 // 1 string to match.
        if (memcmp(Name.data()+2, "pty", 3))
          break;
        return "\xe2\x88\x85";	 // "empty"
      case 'q':	 // 1 string to match.
        if (memcmp(Name.data()+2, "uiv", 3))
          break;
        return "\xe2\x89\xa1";	 // "equiv"
      }
      break;
    case 'g':	 // 1 string to match.
      if (memcmp(Name.data()+1, "amma", 4))
        break;
      return "\xce\xb3";	 // "gamma"
    case 'i':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(Name.data()+2, "irc", 3))
          break;
        return "\xc3\xae";	 // "icirc"
      case 'n':	 // 1 string to match.
        if (memcmp(Name.data()+2, "fin", 3))
          break;
        return "\xe2\x88\x9e";	 // "infin"
      }
      break;
    case 'k':	 // 1 string to match.
      if (memcmp(Name.data()+1, "appa", 4))
        break;
      return "\xce\xba";	 // "kappa"
    case 'l':	 // 3 strings to match.
      switch (Name[1]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(Name.data()+2, "eil", 3))
          break;
        return "\xe2\x8c\x88";	 // "lceil"
      case 'd':	 // 1 string to match.
        if (memcmp(Name.data()+2, "quo", 3))
          break;
        return "\xe2\x80\x9c";	 // "ldquo"
      case 's':	 // 1 string to match.
        if (memcmp(Name.data()+2, "quo", 3))
          break;
        return "\xe2\x80\x98";	 // "lsquo"
      }
      break;
    case 'm':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'd':	 // 1 string to match.
        if (memcmp(Name.data()+2, "ash", 3))
          break;
        return "\xe2\x80\x94";	 // "mdash"
      case 'i':	 // 1 string to match.
        if (memcmp(Name.data()+2, "nus", 3))
          break;
        return "\xe2\x88\x92";	 // "minus"
      }
      break;
    case 'n':	 // 3 strings to match.
      switch (Name[1]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(Name.data()+2, "bla", 3))
          break;
        return "\xe2\x88\x87";	 // "nabla"
      case 'd':	 // 1 string to match.
        if (memcmp(Name.data()+2, "ash", 3))
          break;
        return "\xe2\x80\x93";	 // "ndash"
      case 'o':	 // 1 string to match.
        if (memcmp(Name.data()+2, "tin", 3))
          break;
        return "\xe2\x88\x89";	 // "notin"
      }
      break;
    case 'o':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'c':	 // 1 string to match.
        if (memcmp(Name.data()+2, "irc", 3))
          break;
        return "\xc3\xb4";	 // "ocirc"
      case 'm':	 // 1 string to match.
        if (memcmp(Name.data()+2, "ega", 3))
          break;
        return "\xcf\x89";	 // "omega"
      }
      break;
    case 'p':	 // 1 string to match.
      if (memcmp(Name.data()+1, "rime", 4))
        break;
      return "\xe2\x80\xb2";	 // "prime"
    case 'r':	 // 4 strings to match.
      switch (Name[1]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(Name.data()+2, "dic", 3))
          break;
        return "\xe2\x88\x9a";	 // "radic"
      case 'c':	 // 1 string to match.
        if (memcmp(Name.data()+2, "eil", 3))
          break;
        return "\xe2\x8c\x89";	 // "rceil"
      case 'd':	 // 1 string to match.
        if (memcmp(Name.data()+2, "quo", 3))
          break;
        return "\xe2\x80\x9d";	 // "rdquo"
      case 's':	 // 1 string to match.
        if (memcmp(Name.data()+2, "quo", 3))
          break;
        return "\xe2\x80\x99";	 // "rsquo"
      }
      break;
    case 's':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'i':	 // 1 string to match.
        if (memcmp(Name.data()+2, "gma", 3))
          break;
        return "\xcf\x83";	 // "sigma"
      case 'z':	 // 1 string to match.
        if (memcmp(Name.data()+2, "lig", 3))
          break;
        return "\xc3\x9f";	 // "szlig"
      }
      break;
    case 't':	 // 3 strings to match.
      switch (Name[1]) {
      default: break;
      case 'h':	 // 1 string to match.
        if (memcmp(Name.data()+2, "eta", 3))
          break;
        return "\xce\xb8";	 // "theta"
      case 'i':	 // 1 string to match.
        if (memcmp(Name.data()+2, "mes", 3))
          break;
        return "\xc3\x97";	 // "times"
      case 'r':	 // 1 string to match.
        if (memcmp(Name.data()+2, "ade", 3))
          break;
        return "\xe2\x84\xa2";	 // "trade"
      }
      break;
    case 'u':	 // 1 string to match.
      if (memcmp(Name.data()+1, "circ", 4))
        break;
      return "\xc3\xbb";	 // "ucirc"
    case 'y':	 // 1 string to match.
      if (memcmp(Name.data()+1, "circ", 4))
        break;
      return "\xc5\xb7";	 // "ycirc"
    }
    break;
  case 6:	 // 37 strings to match.
    switch (Name[0]) {
    default: break;
    case 'A':	 // 3 strings to match.
      switch (Name[1]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(Name.data()+2, "cute", 4))
          break;
        return "\xc3\x81";	 // "Aacute"
      case 'g':	 // 1 string to match.
        if (memcmp(Name.data()+2, "rave", 4))
          break;
        return "\xc3\x80";	 // "Agrave"
      case 't':	 // 1 string to match.
        if (memcmp(Name.data()+2, "ilde", 4))
          break;
        return "\xc3\x83";	 // "Atilde"
      }
      break;
    case 'C':	 // 1 string to match.
      if (memcmp(Name.data()+1, "cedil", 5))
        break;
      return "\xc3\x87";	 // "Ccedil"
    case 'E':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(Name.data()+2, "cute", 4))
          break;
        return "\xc3\x89";	 // "Eacute"
      case 'g':	 // 1 string to match.
        if (memcmp(Name.data()+2, "rave", 4))
          break;
        return "\xc3\x88";	 // "Egrave"
      }
      break;
    case 'I':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(Name.data()+2, "cute", 4))
          break;
        return "\xc3\x8d";	 // "Iacute"
      case 'g':	 // 1 string to match.
        if (memcmp(Name.data()+2, "rave", 4))
          break;
        return "\xc3\x8c";	 // "Igrave"
      }
      break;
    case 'L':	 // 1 string to match.
      if (memcmp(Name.data()+1, "ambda", 5))
        break;
      return "\xce\x9b";	 // "Lambda"
    case 'N':	 // 1 string to match.
      if (memcmp(Name.data()+1, "tilde", 5))
        break;
      return "\xc3\x91";	 // "Ntilde"
    case 'O':	 // 3 strings to match.
      switch (Name[1]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(Name.data()+2, "cute", 4))
          break;
        return "\xc3\x93";	 // "Oacute"
      case 'g':	 // 1 string to match.
        if (memcmp(Name.data()+2, "rave", 4))
          break;
        return "\xc3\x92";	 // "Ograve"
      case 't':	 // 1 string to match.
        if (memcmp(Name.data()+2, "ilde", 4))
          break;
        return "\xc3\x95";	 // "Otilde"
      }
      break;
    case 'U':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(Name.data()+2, "cute", 4))
          break;
        return "\xc3\x9a";	 // "Uacute"
      case 'g':	 // 1 string to match.
        if (memcmp(Name.data()+2, "rave", 4))
          break;
        return "\xc3\x99";	 // "Ugrave"
      }
      break;
    case 'Y':	 // 1 string to match.
      if (memcmp(Name.data()+1, "acute", 5))
        break;
      return "\xc3\x9d";	 // "Yacute"
    case 'a':	 // 3 strings to match.
      switch (Name[1]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(Name.data()+2, "cute", 4))
          break;
        return "\xc3\xa1";	 // "aacute"
      case 'g':	 // 1 string to match.
        if (memcmp(Name.data()+2, "rave", 4))
          break;
        return "\xc3\xa0";	 // "agrave"
      case 't':	 // 1 string to match.
        if (memcmp(Name.data()+2, "ilde", 4))
          break;
        return "\xc3\xa3";	 // "atilde"
      }
      break;
    case 'c':	 // 1 string to match.
      if (memcmp(Name.data()+1, "cedil", 5))
        break;
      return "\xc3\xa7";	 // "ccedil"
    case 'e':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(Name.data()+2, "cute", 4))
          break;
        return "\xc3\xa9";	 // "eacute"
      case 'g':	 // 1 string to match.
        if (memcmp(Name.data()+2, "rave", 4))
          break;
        return "\xc3\xa8";	 // "egrave"
      }
      break;
    case 'i':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(Name.data()+2, "cute", 4))
          break;
        return "\xc3\xad";	 // "iacute"
      case 'g':	 // 1 string to match.
        if (memcmp(Name.data()+2, "rave", 4))
          break;
        return "\xc3\xac";	 // "igrave"
      }
      break;
    case 'l':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(Name.data()+2, "mbda", 4))
          break;
        return "\xce\xbb";	 // "lambda"
      case 'f':	 // 1 string to match.
        if (memcmp(Name.data()+2, "loor", 4))
          break;
        return "\xe2\x8c\x8a";	 // "lfloor"
      }
      break;
    case 'n':	 // 1 string to match.
      if (memcmp(Name.data()+1, "tilde", 5))
        break;
      return "\xc3\xb1";	 // "ntilde"
    case 'o':	 // 3 strings to match.
      switch (Name[1]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(Name.data()+2, "cute", 4))
          break;
        return "\xc3\xb3";	 // "oacute"
      case 'g':	 // 1 string to match.
        if (memcmp(Name.data()+2, "rave", 4))
          break;
        return "\xc3\xb2";	 // "ograve"
      case 't':	 // 1 string to match.
        if (memcmp(Name.data()+2, "ilde", 4))
          break;
        return "\xc3\xb5";	 // "otilde"
      }
      break;
    case 'p':	 // 1 string to match.
      if (memcmp(Name.data()+1, "lusmn", 5))
        break;
      return "\xc2\xb1";	 // "plusmn"
    case 'r':	 // 1 string to match.
      if (memcmp(Name.data()+1, "floor", 5))
        break;
      return "\xe2\x8c\x8b";	 // "rfloor"
    case 's':	 // 1 string to match.
      if (memcmp(Name.data()+1, "igmaf", 5))
        break;
      return "\xcf\x82";	 // "sigmaf"
    case 'u':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(Name.data()+2, "cute", 4))
          break;
        return "\xc3\xba";	 // "uacute"
      case 'g':	 // 1 string to match.
        if (memcmp(Name.data()+2, "rave", 4))
          break;
        return "\xc3\xb9";	 // "ugrave"
      }
      break;
    case 'y':	 // 2 strings to match.
      switch (Name[1]) {
      default: break;
      case 'a':	 // 1 string to match.
        if (memcmp(Name.data()+2, "cute", 4))
          break;
        return "\xc3\xbd";	 // "yacute"
      case 'g':	 // 1 string to match.
        if (memcmp(Name.data()+2, "rave", 4))
          break;
        return "\xe1\xbb\xb3";	 // "ygrave"
      }
      break;
    }
    break;
  case 7:	 // 3 strings to match.
    switch (Name[0]) {
    default: break;
    case 'U':	 // 1 string to match.
      if (memcmp(Name.data()+1, "psilon", 6))
        break;
      return "\xce\xa5";	 // "Upsilon"
    case 'e':	 // 1 string to match.
      if (memcmp(Name.data()+1, "psilon", 6))
        break;
      return "\xce\xb5";	 // "epsilon"
    case 'u':	 // 1 string to match.
      if (memcmp(Name.data()+1, "psilon", 6))
        break;
      return "\xcf\x85";	 // "upsilon"
    }
    break;
  }
  return StringRef();
}

