1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|*                                                                            *|
3|* HTML named character reference to UTF-8 translation                        *|
4|*                                                                            *|
5|* Automatically generated file, do not edit!                                 *|
6|*                                                                            *|
7\*===----------------------------------------------------------------------===*/
8
9StringRef translateHTMLNamedCharacterReferenceToUTF8(
10                                             StringRef Name) {
11  switch (Name.size()) {
12  default: break;
13  case 2:	 // 15 strings to match.
14    switch (Name[0]) {
15    default: break;
16    case 'G':	 // 2 strings to match.
17      switch (Name[1]) {
18      default: break;
19      case 'T':	 // 1 string to match.
20        return "\x3e";	 // "GT"
21      case 't':	 // 1 string to match.
22        return "\x3e";	 // "Gt"
23      }
24      break;
25    case 'L':	 // 2 strings to match.
26      switch (Name[1]) {
27      default: break;
28      case 'T':	 // 1 string to match.
29        return "\x3c";	 // "LT"
30      case 't':	 // 1 string to match.
31        return "\x3c";	 // "Lt"
32      }
33      break;
34    case 'P':	 // 1 string to match.
35      if (Name[1] != 'i')
36        break;
37      return "\xce\xa0";	 // "Pi"
38    case 'X':	 // 1 string to match.
39      if (Name[1] != 'i')
40        break;
41      return "\xce\x9e";	 // "Xi"
42    case 'g':	 // 2 strings to match.
43      switch (Name[1]) {
44      default: break;
45      case 'e':	 // 1 string to match.
46        return "\xe2\x89\xa5";	 // "ge"
47      case 't':	 // 1 string to match.
48        return "\x3e";	 // "gt"
49      }
50      break;
51    case 'l':	 // 2 strings to match.
52      switch (Name[1]) {
53      default: break;
54      case 'e':	 // 1 string to match.
55        return "\xe2\x89\xa4";	 // "le"
56      case 't':	 // 1 string to match.
57        return "\x3c";	 // "lt"
58      }
59      break;
60    case 'm':	 // 1 string to match.
61      if (Name[1] != 'u')
62        break;
63      return "\xce\xbc";	 // "mu"
64    case 'n':	 // 2 strings to match.
65      switch (Name[1]) {
66      default: break;
67      case 'e':	 // 1 string to match.
68        return "\xe2\x89\xa0";	 // "ne"
69      case 'u':	 // 1 string to match.
70        return "\xce\xbd";	 // "nu"
71      }
72      break;
73    case 'p':	 // 1 string to match.
74      if (Name[1] != 'i')
75        break;
76      return "\xcf\x80";	 // "pi"
77    case 'x':	 // 1 string to match.
78      if (Name[1] != 'i')
79        break;
80      return "\xce\xbe";	 // "xi"
81    }
82    break;
83  case 3:	 // 16 strings to match.
84    switch (Name[0]) {
85    default: break;
86    case 'A':	 // 1 string to match.
87      if (memcmp(Name.data()+1, "MP", 2) != 0)
88        break;
89      return "\x26";	 // "AMP"
90    case 'P':	 // 2 strings to match.
91      switch (Name[1]) {
92      default: break;
93      case 'h':	 // 1 string to match.
94        if (Name[2] != 'i')
95          break;
96        return "\xce\xa6";	 // "Phi"
97      case 's':	 // 1 string to match.
98        if (Name[2] != 'i')
99          break;
100        return "\xce\xa8";	 // "Psi"
101      }
102      break;
103    case 'R':	 // 1 string to match.
104      if (memcmp(Name.data()+1, "EG", 2) != 0)
105        break;
106      return "\xc2\xae";	 // "REG"
107    case 'a':	 // 1 string to match.
108      if (memcmp(Name.data()+1, "mp", 2) != 0)
109        break;
110      return "\x26";	 // "amp"
111    case 'c':	 // 1 string to match.
112      if (memcmp(Name.data()+1, "hi", 2) != 0)
113        break;
114      return "\xcf\x87";	 // "chi"
115    case 'd':	 // 1 string to match.
116      if (memcmp(Name.data()+1, "eg", 2) != 0)
117        break;
118      return "\xc2\xb0";	 // "deg"
119    case 'e':	 // 1 string to match.
120      if (memcmp(Name.data()+1, "ta", 2) != 0)
121        break;
122      return "\xce\xb7";	 // "eta"
123    case 'i':	 // 1 string to match.
124      if (memcmp(Name.data()+1, "nt", 2) != 0)
125        break;
126      return "\xe2\x88\xab";	 // "int"
127    case 'p':	 // 2 strings to match.
128      switch (Name[1]) {
129      default: break;
130      case 'h':	 // 1 string to match.
131        if (Name[2] != 'i')
132          break;
133        return "\xcf\x86";	 // "phi"
134      case 's':	 // 1 string to match.
135        if (Name[2] != 'i')
136          break;
137        return "\xcf\x88";	 // "psi"
138      }
139      break;
140    case 'r':	 // 2 strings to match.
141      switch (Name[1]) {
142      default: break;
143      case 'e':	 // 1 string to match.
144        if (Name[2] != 'g')
145          break;
146        return "\xc2\xae";	 // "reg"
147      case 'h':	 // 1 string to match.
148        if (Name[2] != 'o')
149          break;
150        return "\xcf\x81";	 // "rho"
151      }
152      break;
153    case 's':	 // 2 strings to match.
154      switch (Name[1]) {
155      default: break;
156      case 'i':	 // 1 string to match.
157        if (Name[2] != 'm')
158          break;
159        return "\xe2\x88\xbc";	 // "sim"
160      case 'u':	 // 1 string to match.
161        if (Name[2] != 'm')
162          break;
163        return "\xe2\x88\x91";	 // "sum"
164      }
165      break;
166    case 't':	 // 1 string to match.
167      if (memcmp(Name.data()+1, "au", 2) != 0)
168        break;
169      return "\xcf\x84";	 // "tau"
170    }
171    break;
172  case 4:	 // 30 strings to match.
173    switch (Name[0]) {
174    default: break;
175    case 'A':	 // 1 string to match.
176      if (memcmp(Name.data()+1, "uml", 3) != 0)
177        break;
178      return "\xc3\x84";	 // "Auml"
179    case 'C':	 // 1 string to match.
180      if (memcmp(Name.data()+1, "OPY", 3) != 0)
181        break;
182      return "\xc2\xa9";	 // "COPY"
183    case 'E':	 // 1 string to match.
184      if (memcmp(Name.data()+1, "uml", 3) != 0)
185        break;
186      return "\xc3\x8b";	 // "Euml"
187    case 'I':	 // 1 string to match.
188      if (memcmp(Name.data()+1, "uml", 3) != 0)
189        break;
190      return "\xc3\x8f";	 // "Iuml"
191    case 'O':	 // 1 string to match.
192      if (memcmp(Name.data()+1, "uml", 3) != 0)
193        break;
194      return "\xc3\x96";	 // "Ouml"
195    case 'Q':	 // 1 string to match.
196      if (memcmp(Name.data()+1, "UOT", 3) != 0)
197        break;
198      return "\x22";	 // "QUOT"
199    case 'U':	 // 1 string to match.
200      if (memcmp(Name.data()+1, "uml", 3) != 0)
201        break;
202      return "\xc3\x9c";	 // "Uuml"
203    case 'Y':	 // 1 string to match.
204      if (memcmp(Name.data()+1, "uml", 3) != 0)
205        break;
206      return "\xc5\xb8";	 // "Yuml"
207    case 'a':	 // 2 strings to match.
208      switch (Name[1]) {
209      default: break;
210      case 'p':	 // 1 string to match.
211        if (memcmp(Name.data()+2, "os", 2) != 0)
212          break;
213        return "\x27";	 // "apos"
214      case 'u':	 // 1 string to match.
215        if (memcmp(Name.data()+2, "ml", 2) != 0)
216          break;
217        return "\xc3\xa4";	 // "auml"
218      }
219      break;
220    case 'b':	 // 1 string to match.
221      if (memcmp(Name.data()+1, "eta", 3) != 0)
222        break;
223      return "\xce\xb2";	 // "beta"
224    case 'c':	 // 1 string to match.
225      if (memcmp(Name.data()+1, "opy", 3) != 0)
226        break;
227      return "\xc2\xa9";	 // "copy"
228    case 'e':	 // 1 string to match.
229      if (memcmp(Name.data()+1, "uml", 3) != 0)
230        break;
231      return "\xc3\xab";	 // "euml"
232    case 'i':	 // 3 strings to match.
233      switch (Name[1]) {
234      default: break;
235      case 'o':	 // 1 string to match.
236        if (memcmp(Name.data()+2, "ta", 2) != 0)
237          break;
238        return "\xce\xb9";	 // "iota"
239      case 's':	 // 1 string to match.
240        if (memcmp(Name.data()+2, "in", 2) != 0)
241          break;
242        return "\xe2\x88\x88";	 // "isin"
243      case 'u':	 // 1 string to match.
244        if (memcmp(Name.data()+2, "ml", 2) != 0)
245          break;
246        return "\xc3\xaf";	 // "iuml"
247      }
248      break;
249    case 'l':	 // 1 string to match.
250      if (memcmp(Name.data()+1, "arr", 3) != 0)
251        break;
252      return "\xe2\x86\x90";	 // "larr"
253    case 'n':	 // 1 string to match.
254      if (memcmp(Name.data()+1, "bsp", 3) != 0)
255        break;
256      return "\xc2\xa0";	 // "nbsp"
257    case 'o':	 // 1 string to match.
258      if (memcmp(Name.data()+1, "uml", 3) != 0)
259        break;
260      return "\xc3\xb6";	 // "ouml"
261    case 'p':	 // 4 strings to match.
262      switch (Name[1]) {
263      default: break;
264      case 'a':	 // 1 string to match.
265        if (memcmp(Name.data()+2, "rt", 2) != 0)
266          break;
267        return "\xe2\x88\x82";	 // "part"
268      case 'e':	 // 1 string to match.
269        if (memcmp(Name.data()+2, "rp", 2) != 0)
270          break;
271        return "\xe2\x8a\xa5";	 // "perp"
272      case 'r':	 // 2 strings to match.
273        if (Name[2] != 'o')
274          break;
275        switch (Name[3]) {
276        default: break;
277        case 'd':	 // 1 string to match.
278          return "\xe2\x88\x8f";	 // "prod"
279        case 'p':	 // 1 string to match.
280          return "\xe2\x88\x9d";	 // "prop"
281        }
282        break;
283      }
284      break;
285    case 'q':	 // 1 string to match.
286      if (memcmp(Name.data()+1, "uot", 3) != 0)
287        break;
288      return "\x22";	 // "quot"
289    case 'r':	 // 1 string to match.
290      if (memcmp(Name.data()+1, "arr", 3) != 0)
291        break;
292      return "\xe2\x86\x92";	 // "rarr"
293    case 's':	 // 2 strings to match.
294      switch (Name[1]) {
295      default: break;
296      case 'd':	 // 1 string to match.
297        if (memcmp(Name.data()+2, "ot", 2) != 0)
298          break;
299        return "\xe2\x8b\x85";	 // "sdot"
300      case 'e':	 // 1 string to match.
301        if (memcmp(Name.data()+2, "ct", 2) != 0)
302          break;
303        return "\xc2\xa7";	 // "sect"
304      }
305      break;
306    case 'u':	 // 1 string to match.
307      if (memcmp(Name.data()+1, "uml", 3) != 0)
308        break;
309      return "\xc3\xbc";	 // "uuml"
310    case 'y':	 // 1 string to match.
311      if (memcmp(Name.data()+1, "uml", 3) != 0)
312        break;
313      return "\xc3\xbf";	 // "yuml"
314    case 'z':	 // 1 string to match.
315      if (memcmp(Name.data()+1, "eta", 3) != 0)
316        break;
317      return "\xce\xb6";	 // "zeta"
318    }
319    break;
320  case 5:	 // 48 strings to match.
321    switch (Name[0]) {
322    default: break;
323    case 'A':	 // 2 strings to match.
324      switch (Name[1]) {
325      default: break;
326      case 'c':	 // 1 string to match.
327        if (memcmp(Name.data()+2, "irc", 3) != 0)
328          break;
329        return "\xc3\x82";	 // "Acirc"
330      case 'r':	 // 1 string to match.
331        if (memcmp(Name.data()+2, "ing", 3) != 0)
332          break;
333        return "\xc3\x85";	 // "Aring"
334      }
335      break;
336    case 'D':	 // 1 string to match.
337      if (memcmp(Name.data()+1, "elta", 4) != 0)
338        break;
339      return "\xce\x94";	 // "Delta"
340    case 'E':	 // 1 string to match.
341      if (memcmp(Name.data()+1, "circ", 4) != 0)
342        break;
343      return "\xc3\x8a";	 // "Ecirc"
344    case 'G':	 // 1 string to match.
345      if (memcmp(Name.data()+1, "amma", 4) != 0)
346        break;
347      return "\xce\x93";	 // "Gamma"
348    case 'I':	 // 1 string to match.
349      if (memcmp(Name.data()+1, "circ", 4) != 0)
350        break;
351      return "\xc3\x8e";	 // "Icirc"
352    case 'O':	 // 2 strings to match.
353      switch (Name[1]) {
354      default: break;
355      case 'c':	 // 1 string to match.
356        if (memcmp(Name.data()+2, "irc", 3) != 0)
357          break;
358        return "\xc3\x94";	 // "Ocirc"
359      case 'm':	 // 1 string to match.
360        if (memcmp(Name.data()+2, "ega", 3) != 0)
361          break;
362        return "\xce\xa9";	 // "Omega"
363      }
364      break;
365    case 'P':	 // 1 string to match.
366      if (memcmp(Name.data()+1, "rime", 4) != 0)
367        break;
368      return "\xe2\x80\xb3";	 // "Prime"
369    case 'S':	 // 1 string to match.
370      if (memcmp(Name.data()+1, "igma", 4) != 0)
371        break;
372      return "\xce\xa3";	 // "Sigma"
373    case 'T':	 // 2 strings to match.
374      switch (Name[1]) {
375      default: break;
376      case 'R':	 // 1 string to match.
377        if (memcmp(Name.data()+2, "ADE", 3) != 0)
378          break;
379        return "\xe2\x84\xa2";	 // "TRADE"
380      case 'h':	 // 1 string to match.
381        if (memcmp(Name.data()+2, "eta", 3) != 0)
382          break;
383        return "\xce\x98";	 // "Theta"
384      }
385      break;
386    case 'U':	 // 1 string to match.
387      if (memcmp(Name.data()+1, "circ", 4) != 0)
388        break;
389      return "\xc3\x9b";	 // "Ucirc"
390    case 'Y':	 // 1 string to match.
391      if (memcmp(Name.data()+1, "circ", 4) != 0)
392        break;
393      return "\xc5\xb6";	 // "Ycirc"
394    case 'a':	 // 4 strings to match.
395      switch (Name[1]) {
396      default: break;
397      case 'c':	 // 1 string to match.
398        if (memcmp(Name.data()+2, "irc", 3) != 0)
399          break;
400        return "\xc3\xa2";	 // "acirc"
401      case 'l':	 // 1 string to match.
402        if (memcmp(Name.data()+2, "pha", 3) != 0)
403          break;
404        return "\xce\xb1";	 // "alpha"
405      case 'r':	 // 1 string to match.
406        if (memcmp(Name.data()+2, "ing", 3) != 0)
407          break;
408        return "\xc3\xa5";	 // "aring"
409      case 's':	 // 1 string to match.
410        if (memcmp(Name.data()+2, "ymp", 3) != 0)
411          break;
412        return "\xe2\x89\x88";	 // "asymp"
413      }
414      break;
415    case 'd':	 // 1 string to match.
416      if (memcmp(Name.data()+1, "elta", 4) != 0)
417        break;
418      return "\xce\xb4";	 // "delta"
419    case 'e':	 // 3 strings to match.
420      switch (Name[1]) {
421      default: break;
422      case 'c':	 // 1 string to match.
423        if (memcmp(Name.data()+2, "irc", 3) != 0)
424          break;
425        return "\xc3\xaa";	 // "ecirc"
426      case 'm':	 // 1 string to match.
427        if (memcmp(Name.data()+2, "pty", 3) != 0)
428          break;
429        return "\xe2\x88\x85";	 // "empty"
430      case 'q':	 // 1 string to match.
431        if (memcmp(Name.data()+2, "uiv", 3) != 0)
432          break;
433        return "\xe2\x89\xa1";	 // "equiv"
434      }
435      break;
436    case 'g':	 // 1 string to match.
437      if (memcmp(Name.data()+1, "amma", 4) != 0)
438        break;
439      return "\xce\xb3";	 // "gamma"
440    case 'i':	 // 2 strings to match.
441      switch (Name[1]) {
442      default: break;
443      case 'c':	 // 1 string to match.
444        if (memcmp(Name.data()+2, "irc", 3) != 0)
445          break;
446        return "\xc3\xae";	 // "icirc"
447      case 'n':	 // 1 string to match.
448        if (memcmp(Name.data()+2, "fin", 3) != 0)
449          break;
450        return "\xe2\x88\x9e";	 // "infin"
451      }
452      break;
453    case 'k':	 // 1 string to match.
454      if (memcmp(Name.data()+1, "appa", 4) != 0)
455        break;
456      return "\xce\xba";	 // "kappa"
457    case 'l':	 // 3 strings to match.
458      switch (Name[1]) {
459      default: break;
460      case 'c':	 // 1 string to match.
461        if (memcmp(Name.data()+2, "eil", 3) != 0)
462          break;
463        return "\xe2\x8c\x88";	 // "lceil"
464      case 'd':	 // 1 string to match.
465        if (memcmp(Name.data()+2, "quo", 3) != 0)
466          break;
467        return "\xe2\x80\x9c";	 // "ldquo"
468      case 's':	 // 1 string to match.
469        if (memcmp(Name.data()+2, "quo", 3) != 0)
470          break;
471        return "\xe2\x80\x98";	 // "lsquo"
472      }
473      break;
474    case 'm':	 // 2 strings to match.
475      switch (Name[1]) {
476      default: break;
477      case 'd':	 // 1 string to match.
478        if (memcmp(Name.data()+2, "ash", 3) != 0)
479          break;
480        return "\xe2\x80\x94";	 // "mdash"
481      case 'i':	 // 1 string to match.
482        if (memcmp(Name.data()+2, "nus", 3) != 0)
483          break;
484        return "\xe2\x88\x92";	 // "minus"
485      }
486      break;
487    case 'n':	 // 3 strings to match.
488      switch (Name[1]) {
489      default: break;
490      case 'a':	 // 1 string to match.
491        if (memcmp(Name.data()+2, "bla", 3) != 0)
492          break;
493        return "\xe2\x88\x87";	 // "nabla"
494      case 'd':	 // 1 string to match.
495        if (memcmp(Name.data()+2, "ash", 3) != 0)
496          break;
497        return "\xe2\x80\x93";	 // "ndash"
498      case 'o':	 // 1 string to match.
499        if (memcmp(Name.data()+2, "tin", 3) != 0)
500          break;
501        return "\xe2\x88\x89";	 // "notin"
502      }
503      break;
504    case 'o':	 // 2 strings to match.
505      switch (Name[1]) {
506      default: break;
507      case 'c':	 // 1 string to match.
508        if (memcmp(Name.data()+2, "irc", 3) != 0)
509          break;
510        return "\xc3\xb4";	 // "ocirc"
511      case 'm':	 // 1 string to match.
512        if (memcmp(Name.data()+2, "ega", 3) != 0)
513          break;
514        return "\xcf\x89";	 // "omega"
515      }
516      break;
517    case 'p':	 // 1 string to match.
518      if (memcmp(Name.data()+1, "rime", 4) != 0)
519        break;
520      return "\xe2\x80\xb2";	 // "prime"
521    case 'r':	 // 4 strings to match.
522      switch (Name[1]) {
523      default: break;
524      case 'a':	 // 1 string to match.
525        if (memcmp(Name.data()+2, "dic", 3) != 0)
526          break;
527        return "\xe2\x88\x9a";	 // "radic"
528      case 'c':	 // 1 string to match.
529        if (memcmp(Name.data()+2, "eil", 3) != 0)
530          break;
531        return "\xe2\x8c\x89";	 // "rceil"
532      case 'd':	 // 1 string to match.
533        if (memcmp(Name.data()+2, "quo", 3) != 0)
534          break;
535        return "\xe2\x80\x9d";	 // "rdquo"
536      case 's':	 // 1 string to match.
537        if (memcmp(Name.data()+2, "quo", 3) != 0)
538          break;
539        return "\xe2\x80\x99";	 // "rsquo"
540      }
541      break;
542    case 's':	 // 2 strings to match.
543      switch (Name[1]) {
544      default: break;
545      case 'i':	 // 1 string to match.
546        if (memcmp(Name.data()+2, "gma", 3) != 0)
547          break;
548        return "\xcf\x83";	 // "sigma"
549      case 'z':	 // 1 string to match.
550        if (memcmp(Name.data()+2, "lig", 3) != 0)
551          break;
552        return "\xc3\x9f";	 // "szlig"
553      }
554      break;
555    case 't':	 // 3 strings to match.
556      switch (Name[1]) {
557      default: break;
558      case 'h':	 // 1 string to match.
559        if (memcmp(Name.data()+2, "eta", 3) != 0)
560          break;
561        return "\xce\xb8";	 // "theta"
562      case 'i':	 // 1 string to match.
563        if (memcmp(Name.data()+2, "mes", 3) != 0)
564          break;
565        return "\xc3\x97";	 // "times"
566      case 'r':	 // 1 string to match.
567        if (memcmp(Name.data()+2, "ade", 3) != 0)
568          break;
569        return "\xe2\x84\xa2";	 // "trade"
570      }
571      break;
572    case 'u':	 // 1 string to match.
573      if (memcmp(Name.data()+1, "circ", 4) != 0)
574        break;
575      return "\xc3\xbb";	 // "ucirc"
576    case 'y':	 // 1 string to match.
577      if (memcmp(Name.data()+1, "circ", 4) != 0)
578        break;
579      return "\xc5\xb7";	 // "ycirc"
580    }
581    break;
582  case 6:	 // 37 strings to match.
583    switch (Name[0]) {
584    default: break;
585    case 'A':	 // 3 strings to match.
586      switch (Name[1]) {
587      default: break;
588      case 'a':	 // 1 string to match.
589        if (memcmp(Name.data()+2, "cute", 4) != 0)
590          break;
591        return "\xc3\x81";	 // "Aacute"
592      case 'g':	 // 1 string to match.
593        if (memcmp(Name.data()+2, "rave", 4) != 0)
594          break;
595        return "\xc3\x80";	 // "Agrave"
596      case 't':	 // 1 string to match.
597        if (memcmp(Name.data()+2, "ilde", 4) != 0)
598          break;
599        return "\xc3\x83";	 // "Atilde"
600      }
601      break;
602    case 'C':	 // 1 string to match.
603      if (memcmp(Name.data()+1, "cedil", 5) != 0)
604        break;
605      return "\xc3\x87";	 // "Ccedil"
606    case 'E':	 // 2 strings to match.
607      switch (Name[1]) {
608      default: break;
609      case 'a':	 // 1 string to match.
610        if (memcmp(Name.data()+2, "cute", 4) != 0)
611          break;
612        return "\xc3\x89";	 // "Eacute"
613      case 'g':	 // 1 string to match.
614        if (memcmp(Name.data()+2, "rave", 4) != 0)
615          break;
616        return "\xc3\x88";	 // "Egrave"
617      }
618      break;
619    case 'I':	 // 2 strings to match.
620      switch (Name[1]) {
621      default: break;
622      case 'a':	 // 1 string to match.
623        if (memcmp(Name.data()+2, "cute", 4) != 0)
624          break;
625        return "\xc3\x8d";	 // "Iacute"
626      case 'g':	 // 1 string to match.
627        if (memcmp(Name.data()+2, "rave", 4) != 0)
628          break;
629        return "\xc3\x8c";	 // "Igrave"
630      }
631      break;
632    case 'L':	 // 1 string to match.
633      if (memcmp(Name.data()+1, "ambda", 5) != 0)
634        break;
635      return "\xce\x9b";	 // "Lambda"
636    case 'N':	 // 1 string to match.
637      if (memcmp(Name.data()+1, "tilde", 5) != 0)
638        break;
639      return "\xc3\x91";	 // "Ntilde"
640    case 'O':	 // 3 strings to match.
641      switch (Name[1]) {
642      default: break;
643      case 'a':	 // 1 string to match.
644        if (memcmp(Name.data()+2, "cute", 4) != 0)
645          break;
646        return "\xc3\x93";	 // "Oacute"
647      case 'g':	 // 1 string to match.
648        if (memcmp(Name.data()+2, "rave", 4) != 0)
649          break;
650        return "\xc3\x92";	 // "Ograve"
651      case 't':	 // 1 string to match.
652        if (memcmp(Name.data()+2, "ilde", 4) != 0)
653          break;
654        return "\xc3\x95";	 // "Otilde"
655      }
656      break;
657    case 'U':	 // 2 strings to match.
658      switch (Name[1]) {
659      default: break;
660      case 'a':	 // 1 string to match.
661        if (memcmp(Name.data()+2, "cute", 4) != 0)
662          break;
663        return "\xc3\x9a";	 // "Uacute"
664      case 'g':	 // 1 string to match.
665        if (memcmp(Name.data()+2, "rave", 4) != 0)
666          break;
667        return "\xc3\x99";	 // "Ugrave"
668      }
669      break;
670    case 'Y':	 // 1 string to match.
671      if (memcmp(Name.data()+1, "acute", 5) != 0)
672        break;
673      return "\xc3\x9d";	 // "Yacute"
674    case 'a':	 // 3 strings to match.
675      switch (Name[1]) {
676      default: break;
677      case 'a':	 // 1 string to match.
678        if (memcmp(Name.data()+2, "cute", 4) != 0)
679          break;
680        return "\xc3\xa1";	 // "aacute"
681      case 'g':	 // 1 string to match.
682        if (memcmp(Name.data()+2, "rave", 4) != 0)
683          break;
684        return "\xc3\xa0";	 // "agrave"
685      case 't':	 // 1 string to match.
686        if (memcmp(Name.data()+2, "ilde", 4) != 0)
687          break;
688        return "\xc3\xa3";	 // "atilde"
689      }
690      break;
691    case 'c':	 // 1 string to match.
692      if (memcmp(Name.data()+1, "cedil", 5) != 0)
693        break;
694      return "\xc3\xa7";	 // "ccedil"
695    case 'e':	 // 2 strings to match.
696      switch (Name[1]) {
697      default: break;
698      case 'a':	 // 1 string to match.
699        if (memcmp(Name.data()+2, "cute", 4) != 0)
700          break;
701        return "\xc3\xa9";	 // "eacute"
702      case 'g':	 // 1 string to match.
703        if (memcmp(Name.data()+2, "rave", 4) != 0)
704          break;
705        return "\xc3\xa8";	 // "egrave"
706      }
707      break;
708    case 'i':	 // 2 strings to match.
709      switch (Name[1]) {
710      default: break;
711      case 'a':	 // 1 string to match.
712        if (memcmp(Name.data()+2, "cute", 4) != 0)
713          break;
714        return "\xc3\xad";	 // "iacute"
715      case 'g':	 // 1 string to match.
716        if (memcmp(Name.data()+2, "rave", 4) != 0)
717          break;
718        return "\xc3\xac";	 // "igrave"
719      }
720      break;
721    case 'l':	 // 2 strings to match.
722      switch (Name[1]) {
723      default: break;
724      case 'a':	 // 1 string to match.
725        if (memcmp(Name.data()+2, "mbda", 4) != 0)
726          break;
727        return "\xce\xbb";	 // "lambda"
728      case 'f':	 // 1 string to match.
729        if (memcmp(Name.data()+2, "loor", 4) != 0)
730          break;
731        return "\xe2\x8c\x8a";	 // "lfloor"
732      }
733      break;
734    case 'n':	 // 1 string to match.
735      if (memcmp(Name.data()+1, "tilde", 5) != 0)
736        break;
737      return "\xc3\xb1";	 // "ntilde"
738    case 'o':	 // 3 strings to match.
739      switch (Name[1]) {
740      default: break;
741      case 'a':	 // 1 string to match.
742        if (memcmp(Name.data()+2, "cute", 4) != 0)
743          break;
744        return "\xc3\xb3";	 // "oacute"
745      case 'g':	 // 1 string to match.
746        if (memcmp(Name.data()+2, "rave", 4) != 0)
747          break;
748        return "\xc3\xb2";	 // "ograve"
749      case 't':	 // 1 string to match.
750        if (memcmp(Name.data()+2, "ilde", 4) != 0)
751          break;
752        return "\xc3\xb5";	 // "otilde"
753      }
754      break;
755    case 'p':	 // 1 string to match.
756      if (memcmp(Name.data()+1, "lusmn", 5) != 0)
757        break;
758      return "\xc2\xb1";	 // "plusmn"
759    case 'r':	 // 1 string to match.
760      if (memcmp(Name.data()+1, "floor", 5) != 0)
761        break;
762      return "\xe2\x8c\x8b";	 // "rfloor"
763    case 's':	 // 1 string to match.
764      if (memcmp(Name.data()+1, "igmaf", 5) != 0)
765        break;
766      return "\xcf\x82";	 // "sigmaf"
767    case 'u':	 // 2 strings to match.
768      switch (Name[1]) {
769      default: break;
770      case 'a':	 // 1 string to match.
771        if (memcmp(Name.data()+2, "cute", 4) != 0)
772          break;
773        return "\xc3\xba";	 // "uacute"
774      case 'g':	 // 1 string to match.
775        if (memcmp(Name.data()+2, "rave", 4) != 0)
776          break;
777        return "\xc3\xb9";	 // "ugrave"
778      }
779      break;
780    case 'y':	 // 2 strings to match.
781      switch (Name[1]) {
782      default: break;
783      case 'a':	 // 1 string to match.
784        if (memcmp(Name.data()+2, "cute", 4) != 0)
785          break;
786        return "\xc3\xbd";	 // "yacute"
787      case 'g':	 // 1 string to match.
788        if (memcmp(Name.data()+2, "rave", 4) != 0)
789          break;
790        return "\xe1\xbb\xb3";	 // "ygrave"
791      }
792      break;
793    }
794    break;
795  case 7:	 // 3 strings to match.
796    switch (Name[0]) {
797    default: break;
798    case 'U':	 // 1 string to match.
799      if (memcmp(Name.data()+1, "psilon", 6) != 0)
800        break;
801      return "\xce\xa5";	 // "Upsilon"
802    case 'e':	 // 1 string to match.
803      if (memcmp(Name.data()+1, "psilon", 6) != 0)
804        break;
805      return "\xce\xb5";	 // "epsilon"
806    case 'u':	 // 1 string to match.
807      if (memcmp(Name.data()+1, "psilon", 6) != 0)
808        break;
809      return "\xcf\x85";	 // "upsilon"
810    }
811    break;
812  }
813  return StringRef();
814}
815
816