[Groonga-commit] groonga/groonga at ba20569 [master] nfkc: use table based implementation

Zurück zum Archiv-Index

Kouhei Sutou null+****@clear*****
Sun Jun 26 18:01:56 JST 2016


Kouhei Sutou	2016-06-26 18:01:56 +0900 (Sun, 26 Jun 2016)

  New Revision: ba2056998b1333cd7a59edfb7c97e8b43f10fd9e
  https://github.com/groonga/groonga/commit/ba2056998b1333cd7a59edfb7c97e8b43f10fd9e

  Message:
    nfkc: use table based implementation
    
    Its build time is faster than the current switch based implementation.
    
    And performance isn't different.

  Modified files:
    lib/nfkc.c
    lib/sources.am

  Modified: lib/nfkc.c (+8 -80211)
===================================================================
--- lib/nfkc.c    2016-06-26 17:59:36 +0900 (30e06f9)
+++ lib/nfkc.c    2016-06-26 18:01:56 +0900 (f055683)
@@ -1,5 +1,6 @@
 /* -*- c-basic-offset: 2 -*- */
-/* Copyright(C) 2010 Brazil
+/*
+  Copyright(C) 2010-2016 Brazil
 
   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
@@ -13,8 +14,6 @@
   You should have received a copy of the GNU Lesser General Public
   License along with this library; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-
-don't edit this file by hand. it generated automatically by nfkc.rb
 */
 
 #include "grn.h"
@@ -23,80223 +22,21 @@ don't edit this file by hand. it generated automatically by nfkc.rb
 #ifdef GRN_WITH_NFKC
 
 grn_char_type
-grn_nfkc_char_type(const unsigned char *str)
+grn_nfkc_char_type(const unsigned char *utf8)
 {
-switch (str[0]) {
-case 0x01 :
-case 0x02 :
-case 0x03 :
-case 0x04 :
-case 0x05 :
-case 0x06 :
-case 0x07 :
-case 0x08 :
-case 0x09 :
-case 0x0A :
-case 0x0B :
-case 0x0C :
-case 0x0D :
-case 0x0E :
-case 0x0F :
-case 0x10 :
-case 0x11 :
-case 0x12 :
-case 0x13 :
-case 0x14 :
-case 0x15 :
-case 0x16 :
-case 0x17 :
-case 0x18 :
-case 0x19 :
-case 0x1A :
-case 0x1B :
-case 0x1C :
-case 0x1D :
-case 0x1E :
-case 0x1F :
-case 0x20 :
-  return GRN_CHAR_OTHERS;
-  break;
-case 0x21 :
-case 0x22 :
-case 0x23 :
-case 0x24 :
-case 0x25 :
-case 0x26 :
-case 0x27 :
-case 0x28 :
-case 0x29 :
-case 0x2A :
-case 0x2B :
-case 0x2C :
-case 0x2D :
-case 0x2E :
-case 0x2F :
-  return GRN_CHAR_SYMBOL;
-  break;
-case 0x30 :
-case 0x31 :
-case 0x32 :
-case 0x33 :
-case 0x34 :
-case 0x35 :
-case 0x36 :
-case 0x37 :
-case 0x38 :
-case 0x39 :
-  return GRN_CHAR_DIGIT;
-  break;
-case 0x3A :
-case 0x3B :
-case 0x3C :
-case 0x3D :
-case 0x3E :
-case 0x3F :
-case 0x40 :
-  return GRN_CHAR_SYMBOL;
-  break;
-case 0x41 :
-case 0x42 :
-case 0x43 :
-case 0x44 :
-case 0x45 :
-case 0x46 :
-case 0x47 :
-case 0x48 :
-case 0x49 :
-case 0x4A :
-case 0x4B :
-case 0x4C :
-case 0x4D :
-case 0x4E :
-case 0x4F :
-case 0x50 :
-case 0x51 :
-case 0x52 :
-case 0x53 :
-case 0x54 :
-case 0x55 :
-case 0x56 :
-case 0x57 :
-case 0x58 :
-case 0x59 :
-case 0x5A :
-  return GRN_CHAR_ALPHA;
-  break;
-case 0x5B :
-case 0x5C :
-case 0x5D :
-case 0x5E :
-case 0x5F :
-case 0x60 :
-  return GRN_CHAR_SYMBOL;
-  break;
-case 0x61 :
-case 0x62 :
-case 0x63 :
-case 0x64 :
-case 0x65 :
-case 0x66 :
-case 0x67 :
-case 0x68 :
-case 0x69 :
-case 0x6A :
-case 0x6B :
-case 0x6C :
-case 0x6D :
-case 0x6E :
-case 0x6F :
-case 0x70 :
-case 0x71 :
-case 0x72 :
-case 0x73 :
-case 0x74 :
-case 0x75 :
-case 0x76 :
-case 0x77 :
-case 0x78 :
-case 0x79 :
-case 0x7A :
-  return GRN_CHAR_ALPHA;
-  break;
-case 0x7B :
-case 0x7C :
-case 0x7D :
-case 0x7E :
-  return GRN_CHAR_SYMBOL;
-  break;
-case 0x7F :
-case 0x80 :
-case 0x81 :
-case 0x82 :
-case 0x83 :
-case 0x84 :
-case 0x85 :
-case 0x86 :
-case 0x87 :
-case 0x88 :
-case 0x89 :
-case 0x8A :
-case 0x8B :
-case 0x8C :
-case 0x8D :
-case 0x8E :
-case 0x8F :
-case 0x90 :
-case 0x91 :
-case 0x92 :
-case 0x93 :
-case 0x94 :
-case 0x95 :
-case 0x96 :
-case 0x97 :
-case 0x98 :
-case 0x99 :
-case 0x9A :
-case 0x9B :
-case 0x9C :
-case 0x9D :
-case 0x9E :
-case 0x9F :
-case 0xA0 :
-case 0xA1 :
-case 0xA2 :
-case 0xA3 :
-case 0xA4 :
-case 0xA5 :
-case 0xA6 :
-case 0xA7 :
-case 0xA8 :
-case 0xA9 :
-case 0xAA :
-case 0xAB :
-case 0xAC :
-case 0xAD :
-case 0xAE :
-case 0xAF :
-case 0xB0 :
-case 0xB1 :
-case 0xB2 :
-case 0xB3 :
-case 0xB4 :
-case 0xB5 :
-case 0xB6 :
-case 0xB7 :
-case 0xB8 :
-case 0xB9 :
-case 0xBA :
-case 0xBB :
-case 0xBC :
-case 0xBD :
-case 0xBE :
-case 0xBF :
-case 0xC0 :
-case 0xC1 :
-  return GRN_CHAR_OTHERS;
-  break;
-case 0xC2 :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-  case 0x82 :
-  case 0x83 :
-  case 0x84 :
-  case 0x85 :
-  case 0x86 :
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-  case 0x8F :
-  case 0x90 :
-  case 0x91 :
-  case 0x92 :
-  case 0x93 :
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-  case 0x99 :
-  case 0x9A :
-  case 0x9B :
-  case 0x9C :
-  case 0x9D :
-  case 0x9E :
-  case 0x9F :
-  case 0xA0 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xA1 :
-  case 0xA2 :
-  case 0xA3 :
-  case 0xA4 :
-  case 0xA5 :
-  case 0xA6 :
-  case 0xA7 :
-  case 0xA8 :
-  case 0xA9 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xAA :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xAB :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xAC :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xAD :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xAE :
-  case 0xAF :
-  case 0xB0 :
-  case 0xB1 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xB2 :
-  case 0xB3 :
-    return GRN_CHAR_DIGIT;
-    break;
-  case 0xB4 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xB5 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xB6 :
-  case 0xB7 :
-  case 0xB8 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xB9 :
-    return GRN_CHAR_DIGIT;
-    break;
-  case 0xBA :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xBB :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xBC :
-  case 0xBD :
-  case 0xBE :
-    return GRN_CHAR_DIGIT;
-    break;
-  case 0xBF :
-  default :
-    return GRN_CHAR_SYMBOL;
-    break;
-  }
-  break;
-case 0xC3 :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-  case 0x82 :
-  case 0x83 :
-  case 0x84 :
-  case 0x85 :
-  case 0x86 :
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-  case 0x8F :
-  case 0x90 :
-  case 0x91 :
-  case 0x92 :
-  case 0x93 :
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x97 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x98 :
-  case 0x99 :
-  case 0x9A :
-  case 0x9B :
-  case 0x9C :
-  case 0x9D :
-  case 0x9E :
-  case 0x9F :
-  case 0xA0 :
-  case 0xA1 :
-  case 0xA2 :
-  case 0xA3 :
-  case 0xA4 :
-  case 0xA5 :
-  case 0xA6 :
-  case 0xA7 :
-  case 0xA8 :
-  case 0xA9 :
-  case 0xAA :
-  case 0xAB :
-  case 0xAC :
-  case 0xAD :
-  case 0xAE :
-  case 0xAF :
-  case 0xB0 :
-  case 0xB1 :
-  case 0xB2 :
-  case 0xB3 :
-  case 0xB4 :
-  case 0xB5 :
-  case 0xB6 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xB7 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xB8 :
-  default :
-    return GRN_CHAR_ALPHA;
-    break;
-  }
-  break;
-case 0xC4 :
-case 0xC5 :
-case 0xC6 :
-case 0xC7 :
-case 0xC8 :
-case 0xC9 :
-case 0xCA :
-  return GRN_CHAR_ALPHA;
-  break;
-case 0xCB :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x82 :
-  case 0x83 :
-  case 0x84 :
-  case 0x85 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x86 :
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-  case 0x8F :
-  case 0x90 :
-  case 0x91 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x92 :
-  case 0x93 :
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-  case 0x99 :
-  case 0x9A :
-  case 0x9B :
-  case 0x9C :
-  case 0x9D :
-  case 0x9E :
-  case 0x9F :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xA0 :
-  case 0xA1 :
-  case 0xA2 :
-  case 0xA3 :
-  case 0xA4 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xA5 :
-  case 0xA6 :
-  case 0xA7 :
-  case 0xA8 :
-  case 0xA9 :
-  case 0xAA :
-  case 0xAB :
-  case 0xAC :
-  case 0xAD :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xAE :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xAF :
-  default :
-    return GRN_CHAR_SYMBOL;
-    break;
-  }
-  break;
-case 0xCC :
-  return GRN_CHAR_OTHERS;
-  break;
-case 0xCD :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-  case 0x82 :
-  case 0x83 :
-  case 0x84 :
-  case 0x85 :
-  case 0x86 :
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-  case 0x8F :
-  case 0x90 :
-  case 0x91 :
-  case 0x92 :
-  case 0x93 :
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-  case 0x99 :
-  case 0x9A :
-  case 0x9B :
-  case 0x9C :
-  case 0x9D :
-  case 0x9E :
-  case 0x9F :
-  case 0xA0 :
-  case 0xA1 :
-  case 0xA2 :
-  case 0xA3 :
-  case 0xA4 :
-  case 0xA5 :
-  case 0xA6 :
-  case 0xA7 :
-  case 0xA8 :
-  case 0xA9 :
-  case 0xAA :
-  case 0xAB :
-  case 0xAC :
-  case 0xAD :
-  case 0xAE :
-  case 0xAF :
-  case 0xB0 :
-  case 0xB1 :
-  case 0xB2 :
-  case 0xB3 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xB4 :
-  case 0xB5 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xB6 :
-  case 0xB7 :
-  case 0xB8 :
-  case 0xB9 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xBA :
-  case 0xBB :
-  case 0xBC :
-  case 0xBD :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xBE :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xBF :
-  default :
-    return GRN_CHAR_OTHERS;
-    break;
-  }
-  break;
-case 0xCE :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-  case 0x82 :
-  case 0x83 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x84 :
-  case 0x85 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x86 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x87 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x8B :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x8C :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x8D :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x8E :
-  case 0x8F :
-  case 0x90 :
-  case 0x91 :
-  case 0x92 :
-  case 0x93 :
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-  case 0x99 :
-  case 0x9A :
-  case 0x9B :
-  case 0x9C :
-  case 0x9D :
-  case 0x9E :
-  case 0x9F :
-  case 0xA0 :
-  case 0xA1 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xA2 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xA3 :
-  default :
-    return GRN_CHAR_ALPHA;
-    break;
-  }
-  break;
-case 0xCF :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-  case 0x82 :
-  case 0x83 :
-  case 0x84 :
-  case 0x85 :
-  case 0x86 :
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x8F :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x90 :
-  case 0x91 :
-  case 0x92 :
-  case 0x93 :
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-  case 0x99 :
-  case 0x9A :
-  case 0x9B :
-  case 0x9C :
-  case 0x9D :
-  case 0x9E :
-  case 0x9F :
-  case 0xA0 :
-  case 0xA1 :
-  case 0xA2 :
-  case 0xA3 :
-  case 0xA4 :
-  case 0xA5 :
-  case 0xA6 :
-  case 0xA7 :
-  case 0xA8 :
-  case 0xA9 :
-  case 0xAA :
-  case 0xAB :
-  case 0xAC :
-  case 0xAD :
-  case 0xAE :
-  case 0xAF :
-  case 0xB0 :
-  case 0xB1 :
-  case 0xB2 :
-  case 0xB3 :
-  case 0xB4 :
-  case 0xB5 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xB6 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xB7 :
-  default :
-    return GRN_CHAR_ALPHA;
-    break;
-  }
-  break;
-case 0xD0 :
-case 0xD1 :
-  return GRN_CHAR_ALPHA;
-  break;
-case 0xD2 :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x82 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x83 :
-  case 0x84 :
-  case 0x85 :
-  case 0x86 :
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x8A :
-  default :
-    return GRN_CHAR_ALPHA;
-    break;
-  }
-  break;
-case 0xD3 :
-  return GRN_CHAR_ALPHA;
-  break;
-case 0xD4 :
-  if (str[1] < 0x94) { return GRN_CHAR_ALPHA; }
-  if (str[1] < 0xB1) { return GRN_CHAR_OTHERS; }
-  return GRN_CHAR_ALPHA;
-  break;
-case 0xD5 :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-  case 0x82 :
-  case 0x83 :
-  case 0x84 :
-  case 0x85 :
-  case 0x86 :
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-  case 0x8F :
-  case 0x90 :
-  case 0x91 :
-  case 0x92 :
-  case 0x93 :
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x97 :
-  case 0x98 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x99 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x9A :
-  case 0x9B :
-  case 0x9C :
-  case 0x9D :
-  case 0x9E :
-  case 0x9F :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xA0 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xA1 :
-  default :
-    return GRN_CHAR_ALPHA;
-    break;
-  }
-  break;
-case 0xD6 :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-  case 0x82 :
-  case 0x83 :
-  case 0x84 :
-  case 0x85 :
-  case 0x86 :
-  case 0x87 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x88 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x89 :
-  case 0x8A :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-  case 0x8F :
-  case 0x90 :
-  case 0x91 :
-  case 0x92 :
-  case 0x93 :
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-  case 0x99 :
-  case 0x9A :
-  case 0x9B :
-  case 0x9C :
-  case 0x9D :
-  case 0x9E :
-  case 0x9F :
-  case 0xA0 :
-  case 0xA1 :
-  case 0xA2 :
-  case 0xA3 :
-  case 0xA4 :
-  case 0xA5 :
-  case 0xA6 :
-  case 0xA7 :
-  case 0xA8 :
-  case 0xA9 :
-  case 0xAA :
-  case 0xAB :
-  case 0xAC :
-  case 0xAD :
-  case 0xAE :
-  case 0xAF :
-  case 0xB0 :
-  case 0xB1 :
-  case 0xB2 :
-  case 0xB3 :
-  case 0xB4 :
-  case 0xB5 :
-  case 0xB6 :
-  case 0xB7 :
-  case 0xB8 :
-  case 0xB9 :
-  case 0xBA :
-  case 0xBB :
-  case 0xBC :
-  case 0xBD :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xBE :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xBF :
-  default :
-    return GRN_CHAR_OTHERS;
-    break;
-  }
-  break;
-case 0xD7 :
-  switch (str[1]) {
-  case 0x80 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x81 :
-  case 0x82 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x83 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x84 :
-  case 0x85 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x86 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-  case 0x8F :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x90 :
-  case 0x91 :
-  case 0x92 :
-  case 0x93 :
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-  case 0x99 :
-  case 0x9A :
-  case 0x9B :
-  case 0x9C :
-  case 0x9D :
-  case 0x9E :
-  case 0x9F :
-  case 0xA0 :
-  case 0xA1 :
-  case 0xA2 :
-  case 0xA3 :
-  case 0xA4 :
-  case 0xA5 :
-  case 0xA6 :
-  case 0xA7 :
-  case 0xA8 :
-  case 0xA9 :
-  case 0xAA :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xAB :
-  case 0xAC :
-  case 0xAD :
-  case 0xAE :
-  case 0xAF :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xB0 :
-  case 0xB1 :
-  case 0xB2 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xB3 :
-  case 0xB4 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xB5 :
-  default :
-    return GRN_CHAR_OTHERS;
-    break;
-  }
-  break;
-case 0xD8 :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-  case 0x82 :
-  case 0x83 :
-  case 0x84 :
-  case 0x85 :
-  case 0x86 :
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-  case 0x8F :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x90 :
-  case 0x91 :
-  case 0x92 :
-  case 0x93 :
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-  case 0x99 :
-  case 0x9A :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x9B :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x9C :
-  case 0x9D :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x9E :
-  case 0x9F :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xA0 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xA1 :
-  case 0xA2 :
-  case 0xA3 :
-  case 0xA4 :
-  case 0xA5 :
-  case 0xA6 :
-  case 0xA7 :
-  case 0xA8 :
-  case 0xA9 :
-  case 0xAA :
-  case 0xAB :
-  case 0xAC :
-  case 0xAD :
-  case 0xAE :
-  case 0xAF :
-  case 0xB0 :
-  case 0xB1 :
-  case 0xB2 :
-  case 0xB3 :
-  case 0xB4 :
-  case 0xB5 :
-  case 0xB6 :
-  case 0xB7 :
-  case 0xB8 :
-  case 0xB9 :
-  case 0xBA :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xBB :
-  default :
-    return GRN_CHAR_OTHERS;
-    break;
-  }
-  break;
-case 0xD9 :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-  case 0x82 :
-  case 0x83 :
-  case 0x84 :
-  case 0x85 :
-  case 0x86 :
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-  case 0x8F :
-  case 0x90 :
-  case 0x91 :
-  case 0x92 :
-  case 0x93 :
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-  case 0x99 :
-  case 0x9A :
-  case 0x9B :
-  case 0x9C :
-  case 0x9D :
-  case 0x9E :
-  case 0x9F :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xA0 :
-  case 0xA1 :
-  case 0xA2 :
-  case 0xA3 :
-  case 0xA4 :
-  case 0xA5 :
-  case 0xA6 :
-  case 0xA7 :
-  case 0xA8 :
-  case 0xA9 :
-    return GRN_CHAR_DIGIT;
-    break;
-  case 0xAA :
-  case 0xAB :
-  case 0xAC :
-  case 0xAD :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xAE :
-  case 0xAF :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xB0 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xB1 :
-  default :
-    return GRN_CHAR_ALPHA;
-    break;
-  }
-  break;
-case 0xDA :
-  return GRN_CHAR_ALPHA;
-  break;
-case 0xDB :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-  case 0x82 :
-  case 0x83 :
-  case 0x84 :
-  case 0x85 :
-  case 0x86 :
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-  case 0x8F :
-  case 0x90 :
-  case 0x91 :
-  case 0x92 :
-  case 0x93 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x94 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x95 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-  case 0x99 :
-  case 0x9A :
-  case 0x9B :
-  case 0x9C :
-  case 0x9D :
-  case 0x9E :
-  case 0x9F :
-  case 0xA0 :
-  case 0xA1 :
-  case 0xA2 :
-  case 0xA3 :
-  case 0xA4 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xA5 :
-  case 0xA6 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xA7 :
-  case 0xA8 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xA9 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xAA :
-  case 0xAB :
-  case 0xAC :
-  case 0xAD :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xAE :
-  case 0xAF :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xB0 :
-  case 0xB1 :
-  case 0xB2 :
-  case 0xB3 :
-  case 0xB4 :
-  case 0xB5 :
-  case 0xB6 :
-  case 0xB7 :
-  case 0xB8 :
-  case 0xB9 :
-    return GRN_CHAR_DIGIT;
-    break;
-  case 0xBA :
-  case 0xBB :
-  case 0xBC :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xBD :
-  case 0xBE :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xBF :
-  default :
-    return GRN_CHAR_ALPHA;
-    break;
-  }
-  break;
-case 0xDC :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-  case 0x82 :
-  case 0x83 :
-  case 0x84 :
-  case 0x85 :
-  case 0x86 :
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x8E :
-  case 0x8F :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x90 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x91 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x92 :
-  case 0x93 :
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-  case 0x99 :
-  case 0x9A :
-  case 0x9B :
-  case 0x9C :
-  case 0x9D :
-  case 0x9E :
-  case 0x9F :
-  case 0xA0 :
-  case 0xA1 :
-  case 0xA2 :
-  case 0xA3 :
-  case 0xA4 :
-  case 0xA5 :
-  case 0xA6 :
-  case 0xA7 :
-  case 0xA8 :
-  case 0xA9 :
-  case 0xAA :
-  case 0xAB :
-  case 0xAC :
-  case 0xAD :
-  case 0xAE :
-  case 0xAF :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xB0 :
-  default :
-    return GRN_CHAR_OTHERS;
-    break;
-  }
-  break;
-case 0xDD :
-  if (str[1] < 0x8D) { return GRN_CHAR_OTHERS; }
-  if (str[1] < 0xAE) { return GRN_CHAR_ALPHA; }
-  return GRN_CHAR_OTHERS;
-  break;
-case 0xDE :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-  case 0x82 :
-  case 0x83 :
-  case 0x84 :
-  case 0x85 :
-  case 0x86 :
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-  case 0x8F :
-  case 0x90 :
-  case 0x91 :
-  case 0x92 :
-  case 0x93 :
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-  case 0x99 :
-  case 0x9A :
-  case 0x9B :
-  case 0x9C :
-  case 0x9D :
-  case 0x9E :
-  case 0x9F :
-  case 0xA0 :
-  case 0xA1 :
-  case 0xA2 :
-  case 0xA3 :
-  case 0xA4 :
-  case 0xA5 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xA6 :
-  case 0xA7 :
-  case 0xA8 :
-  case 0xA9 :
-  case 0xAA :
-  case 0xAB :
-  case 0xAC :
-  case 0xAD :
-  case 0xAE :
-  case 0xAF :
-  case 0xB0 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xB1 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xB2 :
-  default :
-    return GRN_CHAR_OTHERS;
-    break;
-  }
-  break;
-case 0xDF :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-  case 0x82 :
-  case 0x83 :
-  case 0x84 :
-  case 0x85 :
-  case 0x86 :
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-    return GRN_CHAR_DIGIT;
-    break;
-  case 0x8A :
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-  case 0x8F :
-  case 0x90 :
-  case 0x91 :
-  case 0x92 :
-  case 0x93 :
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-  case 0x99 :
-  case 0x9A :
-  case 0x9B :
-  case 0x9C :
-  case 0x9D :
-  case 0x9E :
-  case 0x9F :
-  case 0xA0 :
-  case 0xA1 :
-  case 0xA2 :
-  case 0xA3 :
-  case 0xA4 :
-  case 0xA5 :
-  case 0xA6 :
-  case 0xA7 :
-  case 0xA8 :
-  case 0xA9 :
-  case 0xAA :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xAB :
-  case 0xAC :
-  case 0xAD :
-  case 0xAE :
-  case 0xAF :
-  case 0xB0 :
-  case 0xB1 :
-  case 0xB2 :
-  case 0xB3 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xB4 :
-  case 0xB5 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xB6 :
-  case 0xB7 :
-  case 0xB8 :
-  case 0xB9 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xBA :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xBB :
-  default :
-    return GRN_CHAR_OTHERS;
-    break;
-  }
-  break;
-case 0xE0 :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-  case 0x82 :
-  case 0x83 :
-  case 0x84 :
-  case 0x85 :
-  case 0x86 :
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-  case 0x8F :
-  case 0x90 :
-  case 0x91 :
-  case 0x92 :
-  case 0x93 :
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-  case 0x99 :
-  case 0x9A :
-  case 0x9B :
-  case 0x9C :
-  case 0x9D :
-  case 0x9E :
-  case 0x9F :
-  case 0xA0 :
-  case 0xA1 :
-  case 0xA2 :
-  case 0xA3 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xA4 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xBD :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBE :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xA5 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x90 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA2 :
-    case 0xA3 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA4 :
-    case 0xA5 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0xB0 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xBB :
-    default :
-      return GRN_CHAR_ALPHA;
-      break;
-    }
-    break;
-  case 0xA6 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8D :
-    case 0x8E :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8F :
-    case 0x90 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x91 :
-    case 0x92 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA9 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB1 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB2 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xBD :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBE :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xA7 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8E :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9C :
-    case 0x9D :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9E :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0xB0 :
-    case 0xB1 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB2 :
-    case 0xB3 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0xBA :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xBB :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xA8 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8F :
-    case 0x90 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x91 :
-    case 0x92 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA9 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB1 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB2 :
-    case 0xB3 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB4 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB5 :
-    case 0xB6 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB7 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB8 :
-    case 0xB9 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBA :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xA9 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9D :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9E :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0xB0 :
-    case 0xB1 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB5 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xAA :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8E :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x92 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA9 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB1 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB2 :
-    case 0xB3 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB4 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xBD :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBE :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xAB :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x90 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0xB0 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB1 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xB2 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xAC :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8D :
-    case 0x8E :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8F :
-    case 0x90 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x91 :
-    case 0x92 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA9 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB1 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB2 :
-    case 0xB3 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB4 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xBD :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBE :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xAD :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9C :
-    case 0x9D :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9E :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0xB0 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xB1 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB2 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xAE :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x83 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x84 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x91 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x99 :
-    case 0x9A :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9B :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9C :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9D :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA3 :
-    case 0xA4 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBA :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xAF :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xBB :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xB0 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8D :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x91 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA9 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB4 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBA :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xB1 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0xB0 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xB2 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8D :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x91 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA9 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB4 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xBD :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBE :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xB3 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9E :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0xB0 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB1 :
-    case 0xB2 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xB3 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xB4 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8D :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x91 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA9 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBA :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xB5 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0xB0 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xB6 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB2 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-    case 0xBB :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBC :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xBD :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBE :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xB7 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB4 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xB5 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xB8 :
-    switch (str[2]) {
-    case 0x80 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB1 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB2 :
-    case 0xB3 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-    case 0xBD :
-    case 0xBE :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xBF :
-    default :
-      return GRN_CHAR_SYMBOL;
-      break;
-    }
-    break;
-  case 0xB9 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8F :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0x9A :
-    case 0x9B :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x9C :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xBA :
-    switch (str[2]) {
-    case 0x80 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x81 :
-    case 0x82 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x83 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x84 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x85 :
-    case 0x86 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x87 :
-    case 0x88 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x89 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8A :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8B :
-    case 0x8C :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8D :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x98 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA0 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA4 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA5 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA6 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA7 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA8 :
-    case 0xA9 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xAA :
-    case 0xAB :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xAC :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB1 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB2 :
-    case 0xB3 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xBD :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBE :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xBB :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x85 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x86 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0x9A :
-    case 0x9B :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9C :
-    case 0x9D :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9E :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xBC :
-    switch (str[2]) {
-    case 0x80 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x98 :
-    case 0x99 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0xB4 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xB5 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB6 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xB7 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB8 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xB9 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-    case 0xBD :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xBE :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xBD :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x88 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xAB :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xBE :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x85 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x86 :
-    case 0x87 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-    case 0xBD :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xBE :
-    default :
-      return GRN_CHAR_SYMBOL;
-      break;
-    }
-    break;
-  case 0xBF :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x86 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x8D :
-    case 0x8E :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x92 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  default :
-    return GRN_CHAR_OTHERS;
-    break;
-  }
-  break;
-case 0xE1 :
-  switch (str[1]) {
-  case 0x80 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA2 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA8 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA9 :
-    case 0xAA :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xAB :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0x81 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x96 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0x82 :
-    if (str[2] < 0xA0) { return GRN_CHAR_OTHERS; }
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x83 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBB :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xBC :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBD :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0x84 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x85 :
-    if (str[2] < 0x9A) { return GRN_CHAR_ALPHA; }
-    if (str[2] < 0x9F) { return GRN_CHAR_OTHERS; }
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x86 :
-    if (str[2] < 0xA3) { return GRN_CHAR_ALPHA; }
-    if (str[2] < 0xA8) { return GRN_CHAR_OTHERS; }
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x87 :
-    if (str[2] < 0xBA) { return GRN_CHAR_ALPHA; }
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x88 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x89 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x89 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x97 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x98 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x99 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    default :
-      return GRN_CHAR_ALPHA;
-      break;
-    }
-    break;
-  case 0x8A :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x89 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB1 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB6 :
-    case 0xB7 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-    case 0xBD :
-    case 0xBE :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBF :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0x8B :
-    switch (str[2]) {
-    case 0x80 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x81 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x86 :
-    case 0x87 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x97 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x98 :
-    default :
-      return GRN_CHAR_ALPHA;
-      break;
-    }
-    break;
-  case 0x8C :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x91 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x96 :
-    case 0x97 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x98 :
-    default :
-      return GRN_CHAR_ALPHA;
-      break;
-    }
-    break;
-  case 0x8D :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0xBD :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0x8E :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    default :
-      return GRN_CHAR_ALPHA;
-      break;
-    }
-    break;
-  case 0x8F :
-    if (str[2] < 0xB5) { return GRN_CHAR_ALPHA; }
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x90 :
-    if (str[2] < 0x81) { return GRN_CHAR_OTHERS; }
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x91 :
-  case 0x92 :
-  case 0x93 :
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0x99 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xAD :
-    case 0xAE :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB7 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0x9A :
-    switch (str[2]) {
-    case 0x80 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9B :
-    case 0x9C :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    default :
-      return GRN_CHAR_ALPHA;
-      break;
-    }
-    break;
-  case 0x9B :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0xB1 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0x9C :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8D :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB5 :
-    case 0xB6 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xB7 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0x9D :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xAD :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB1 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0x9E :
-    if (str[2] < 0xB4) { return GRN_CHAR_ALPHA; }
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x9F :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x97 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x9C :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0xBA :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xA0 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    default :
-      return GRN_CHAR_ALPHA;
-      break;
-    }
-    break;
-  case 0xA1 :
-    if (str[2] < 0xB8) { return GRN_CHAR_ALPHA; }
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xA2 :
-    if (str[2] < 0xA9) { return GRN_CHAR_ALPHA; }
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xA3 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xA4 :
-    if (str[2] < 0x9D) { return GRN_CHAR_ALPHA; }
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xA5 :
-    switch (str[2]) {
-    case 0x80 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x84 :
-    case 0x85 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB5 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xA6 :
-    if (str[2] < 0xAA) { return GRN_CHAR_ALPHA; }
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xA7 :
-    switch (str[2]) {
-    case 0x80 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9E :
-    default :
-      return GRN_CHAR_SYMBOL;
-      break;
-    }
-    break;
-  case 0xA8 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xA0 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xA9 :
-  case 0xAA :
-  case 0xAB :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xAC :
-    if (str[2] < 0x85) { return GRN_CHAR_OTHERS; }
-    if (str[2] < 0xB4) { return GRN_CHAR_ALPHA; }
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xAD :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xBD :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xAE :
-  case 0xAF :
-  case 0xB0 :
-  case 0xB1 :
-  case 0xB2 :
-  case 0xB3 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xB4 :
-  case 0xB5 :
-  case 0xB6 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xB7 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xB8 :
-  case 0xB9 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xBA :
-    if (str[2] < 0x9C) { return GRN_CHAR_ALPHA; }
-    if (str[2] < 0xA0) { return GRN_CHAR_OTHERS; }
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xBB :
-    if (str[2] < 0xBA) { return GRN_CHAR_ALPHA; }
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xBC :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x96 :
-    case 0x97 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    default :
-      return GRN_CHAR_ALPHA;
-      break;
-    }
-    break;
-  case 0xBD :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x86 :
-    case 0x87 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x98 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x99 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9A :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9B :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9C :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9D :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9E :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-    case 0xBD :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBE :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xBE :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB5 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBD :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xBE :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBF :
-    default :
-      return GRN_CHAR_SYMBOL;
-      break;
-    }
-    break;
-  case 0xBF :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x85 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x94 :
-    case 0x95 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9C :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xB0 :
-    case 0xB1 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB5 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBD :
-    case 0xBE :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xBF :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  default :
-    return GRN_CHAR_OTHERS;
-    break;
-  }
-  break;
-case 0xE2 :
-  switch (str[1]) {
-  case 0x80 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x98 :
-    case 0x99 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9A :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9E :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xB9 :
-    case 0xBA :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xBB :
-    default :
-      return GRN_CHAR_SYMBOL;
-      break;
-    }
-    break;
-  case 0x81 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB0 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0xB1 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB2 :
-    case 0xB3 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-    case 0xBD :
-    case 0xBE :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xBF :
-    default :
-      return GRN_CHAR_ALPHA;
-      break;
-    }
-    break;
-  case 0x82 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x8F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xB6 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0x83 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x84 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x82 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x87 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x88 :
-    case 0x89 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x94 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x95 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xA4 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA5 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xA6 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA7 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xA8 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA9 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xAE :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBA :
-    case 0xBB :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xBC :
-    default :
-      return GRN_CHAR_ALPHA;
-      break;
-    }
-    break;
-  case 0x85 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x8E :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x93 :
-    default :
-      return GRN_CHAR_DIGIT;
-      break;
-    }
-    break;
-  case 0x86 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0x83 :
-    case 0x84 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x90 :
-    default :
-      return GRN_CHAR_SYMBOL;
-      break;
-    }
-    break;
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x8F :
-    if (str[2] < 0xA8) { return GRN_CHAR_SYMBOL; }
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x90 :
-    if (str[2] < 0xA7) { return GRN_CHAR_SYMBOL; }
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x91 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    default :
-      return GRN_CHAR_DIGIT;
-      break;
-    }
-    break;
-  case 0x92 :
-    if (str[2] < 0x9C) { return GRN_CHAR_DIGIT; }
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x93 :
-    if (str[2] < 0xAA) { return GRN_CHAR_SYMBOL; }
-    return GRN_CHAR_DIGIT;
-    break;
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-  case 0x99 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x9A :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xB3 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0x9B :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x9C :
-    switch (str[2]) {
-    case 0x80 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x85 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x8A :
-    case 0x8B :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xA8 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA9 :
-    default :
-      return GRN_CHAR_SYMBOL;
-      break;
-    }
-    break;
-  case 0x9D :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x8C :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8D :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x8E :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x96 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x97 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x9F :
-    case 0xA0 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xB6 :
-    default :
-      return GRN_CHAR_DIGIT;
-      break;
-    }
-    break;
-  case 0x9E :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0x94 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xB0 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-    case 0xBD :
-    case 0xBE :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xBF :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0x9F :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB0 :
-    default :
-      return GRN_CHAR_SYMBOL;
-      break;
-    }
-    break;
-  case 0xA0 :
-  case 0xA1 :
-  case 0xA2 :
-  case 0xA3 :
-  case 0xA4 :
-  case 0xA5 :
-  case 0xA6 :
-  case 0xA7 :
-  case 0xA8 :
-  case 0xA9 :
-  case 0xAA :
-  case 0xAB :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xAC :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xA4 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xAD :
-  case 0xAE :
-  case 0xAF :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xB0 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xAF :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB0 :
-    default :
-      return GRN_CHAR_ALPHA;
-      break;
-    }
-    break;
-  case 0xB1 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB8 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xB2 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xB3 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB9 :
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xBD :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0xBE :
-    default :
-      return GRN_CHAR_SYMBOL;
-      break;
-    }
-    break;
-  case 0xB4 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB0 :
-    default :
-      return GRN_CHAR_ALPHA;
-      break;
-    }
-    break;
-  case 0xB5 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xAF :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB0 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xB6 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA7 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xAF :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB7 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-    case 0xBD :
-    case 0xBE :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBF :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xB7 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x87 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x97 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9F :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xB8 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x89 :
-    case 0x8A :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8B :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x8C :
-    case 0x8D :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x98 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xB9 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xBA :
-  case 0xBB :
-  case 0xBC :
-  case 0xBD :
-  case 0xBE :
-    return GRN_CHAR_KANJI;
-    break;
-  case 0xBF :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_KANJI;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-    case 0xBB :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xBC :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  default :
-    return GRN_CHAR_OTHERS;
-    break;
-  }
-  break;
-case 0xE3 :
-  switch (str[1]) {
-  case 0x80 :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x81 :
-    return GRN_CHAR_HIRAGANA;
-    break;
-  case 0x82 :
-    if (str[2] < 0xA0) { return GRN_CHAR_HIRAGANA; }
-    return GRN_CHAR_KATAKANA;
-    break;
-  case 0x83 :
-    return GRN_CHAR_KATAKANA;
-    break;
-  case 0x84 :
-  case 0x85 :
-  case 0x86 :
-    return GRN_CHAR_KANJI;
-    break;
-  case 0x87 :
-    if (str[2] < 0xB0) { return GRN_CHAR_KANJI; }
-    return GRN_CHAR_KATAKANA;
-    break;
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-  case 0x8F :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x90 :
-  default :
-    return GRN_CHAR_KANJI;
-    break;
-  }
-  break;
-case 0xE4 :
-  if (str[1] < 0xB7) { return GRN_CHAR_KANJI; }
-  if (str[1] < 0xB8) { return GRN_CHAR_SYMBOL; }
-  return GRN_CHAR_KANJI;
-  break;
-case 0xE5 :
-case 0xE6 :
-case 0xE7 :
-case 0xE8 :
-case 0xE9 :
-  return GRN_CHAR_KANJI;
-  break;
-case 0xEA :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-  case 0x82 :
-  case 0x83 :
-  case 0x84 :
-  case 0x85 :
-  case 0x86 :
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-  case 0x8F :
-  case 0x90 :
-  case 0x91 :
-  case 0x92 :
-    return GRN_CHAR_KANJI;
-    break;
-  case 0x93 :
-    if (str[2] < 0x90) { return GRN_CHAR_KANJI; }
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-  case 0x99 :
-  case 0x9A :
-  case 0x9B :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x9C :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xA2 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0x9D :
-  case 0x9E :
-  case 0x9F :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xA0 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x82 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x86 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8B :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xAC :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xA1 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xB8 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xA2 :
-  case 0xA3 :
-  case 0xA4 :
-  case 0xA5 :
-  case 0xA6 :
-  case 0xA7 :
-  case 0xA8 :
-  case 0xA9 :
-  case 0xAA :
-  case 0xAB :
-  case 0xAC :
-  case 0xAD :
-  case 0xAE :
-  case 0xAF :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xB0 :
-  default :
-    return GRN_CHAR_KANJI;
-    break;
-  }
-  break;
-case 0xEB :
-case 0xEC :
-  return GRN_CHAR_KANJI;
-  break;
-case 0xED :
-  if (str[1] < 0x9E) { return GRN_CHAR_KANJI; }
-  if (str[1] == 0x9E) {
-    if (str[2] < 0xB0) { return GRN_CHAR_KANJI; }
-    return GRN_CHAR_OTHERS;
-  }
-  return GRN_CHAR_OTHERS;
-  break;
-case 0xEE :
-  return GRN_CHAR_OTHERS;
-  break;
-case 0xEF :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-  case 0x82 :
-  case 0x83 :
-  case 0x84 :
-  case 0x85 :
-  case 0x86 :
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-  case 0x8F :
-  case 0x90 :
-  case 0x91 :
-  case 0x92 :
-  case 0x93 :
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-  case 0x99 :
-  case 0x9A :
-  case 0x9B :
-  case 0x9C :
-  case 0x9D :
-  case 0x9E :
-  case 0x9F :
-  case 0xA0 :
-  case 0xA1 :
-  case 0xA2 :
-  case 0xA3 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xA4 :
-  case 0xA5 :
-  case 0xA6 :
-  case 0xA7 :
-  case 0xA8 :
-  case 0xA9 :
-  case 0xAA :
-  case 0xAB :
-    return GRN_CHAR_KANJI;
-    break;
-  case 0xAC :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9D :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9E :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xA9 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB7 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-    case 0xBB :
-    case 0xBC :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBD :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xBE :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBF :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xAD :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x82 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x83 :
-    case 0x84 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x85 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x86 :
-    default :
-      return GRN_CHAR_ALPHA;
-      break;
-    }
-    break;
-  case 0xAE :
-    if (str[2] < 0xB2) { return GRN_CHAR_ALPHA; }
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xAF :
-    if (str[2] < 0x93) { return GRN_CHAR_OTHERS; }
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xB0 :
-  case 0xB1 :
-  case 0xB2 :
-  case 0xB3 :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xB4 :
-    if (str[2] < 0xBE) { return GRN_CHAR_ALPHA; }
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0xB5 :
-    if (str[2] < 0x90) { return GRN_CHAR_OTHERS; }
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xB6 :
-    if (str[2] < 0x90) { return GRN_CHAR_ALPHA; }
-    if (str[2] < 0x92) { return GRN_CHAR_OTHERS; }
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xB7 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-    case 0xBB :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBC :
-    case 0xBD :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xBE :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0xB8 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB0 :
-    default :
-      return GRN_CHAR_SYMBOL;
-      break;
-    }
-    break;
-  case 0xB9 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x93 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xA7 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xB5 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xB6 :
-    default :
-      return GRN_CHAR_ALPHA;
-      break;
-    }
-    break;
-  case 0xBA :
-    return GRN_CHAR_ALPHA;
-    break;
-  case 0xBB :
-    if (str[2] < 0xBD) { return GRN_CHAR_ALPHA; }
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xBC :
-    switch (str[2]) {
-    case 0x80 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0xBB :
-    default :
-      return GRN_CHAR_SYMBOL;
-      break;
-    }
-    break;
-  case 0xBD :
-    switch (str[2]) {
-    case 0x80 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-    case 0x90 :
-    case 0x91 :
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xA6 :
-    default :
-      return GRN_CHAR_ALPHA;
-      break;
-    }
-    break;
-  case 0xBE :
-    if (str[2] < 0xBF) { return GRN_CHAR_ALPHA; }
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xBF :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x88 :
-    case 0x89 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-    case 0x8D :
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x90 :
-    case 0x91 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x92 :
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x98 :
-    case 0x99 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-    case 0xA4 :
-    case 0xA5 :
-    case 0xA6 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xA7 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA8 :
-    case 0xA9 :
-    case 0xAA :
-    case 0xAB :
-    case 0xAC :
-    case 0xAD :
-    case 0xAE :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0xAF :
-    case 0xB0 :
-    case 0xB1 :
-    case 0xB2 :
-    case 0xB3 :
-    case 0xB4 :
-    case 0xB5 :
-    case 0xB6 :
-    case 0xB7 :
-    case 0xB8 :
-    case 0xB9 :
-    case 0xBA :
-    case 0xBB :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xBC :
-    default :
-      return GRN_CHAR_SYMBOL;
-      break;
-    }
-    break;
-  default :
-    return GRN_CHAR_SYMBOL;
-    break;
-  }
-  break;
-case 0xF0 :
-  switch (str[1]) {
-  case 0x80 :
-  case 0x81 :
-  case 0x82 :
-  case 0x83 :
-  case 0x84 :
-  case 0x85 :
-  case 0x86 :
-  case 0x87 :
-  case 0x88 :
-  case 0x89 :
-  case 0x8A :
-  case 0x8B :
-  case 0x8C :
-  case 0x8D :
-  case 0x8E :
-  case 0x8F :
-    return GRN_CHAR_SYMBOL;
-    break;
-  case 0x90 :
-    switch (str[2]) {
-    case 0x80 :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x8C :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-      case 0x9D :
-      case 0x9E :
-      case 0x9F :
-      case 0xA0 :
-      case 0xA1 :
-      case 0xA2 :
-      case 0xA3 :
-      case 0xA4 :
-      case 0xA5 :
-      case 0xA6 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xA7 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xA8 :
-      case 0xA9 :
-      case 0xAA :
-      case 0xAB :
-      case 0xAC :
-      case 0xAD :
-      case 0xAE :
-      case 0xAF :
-      case 0xB0 :
-      case 0xB1 :
-      case 0xB2 :
-      case 0xB3 :
-      case 0xB4 :
-      case 0xB5 :
-      case 0xB6 :
-      case 0xB7 :
-      case 0xB8 :
-      case 0xB9 :
-      case 0xBA :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xBB :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xBC :
-      case 0xBD :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xBE :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xBF :
-      default :
-        return GRN_CHAR_ALPHA;
-        break;
-      }
-      break;
-    case 0x81 :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x8E :
-      case 0x8F :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-      case 0x9D :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x9E :
-      default :
-        return GRN_CHAR_OTHERS;
-        break;
-      }
-      break;
-    case 0x82 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x83 :
-      if (str[3] < 0xBB) { return GRN_CHAR_ALPHA; }
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x84 :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-      case 0x9D :
-      case 0x9E :
-      case 0x9F :
-      case 0xA0 :
-      case 0xA1 :
-      case 0xA2 :
-      case 0xA3 :
-      case 0xA4 :
-      case 0xA5 :
-      case 0xA6 :
-      case 0xA7 :
-      case 0xA8 :
-      case 0xA9 :
-      case 0xAA :
-      case 0xAB :
-      case 0xAC :
-      case 0xAD :
-      case 0xAE :
-      case 0xAF :
-      case 0xB0 :
-      case 0xB1 :
-      case 0xB2 :
-      case 0xB3 :
-        return GRN_CHAR_DIGIT;
-        break;
-      case 0xB4 :
-      case 0xB5 :
-      case 0xB6 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xB7 :
-      default :
-        return GRN_CHAR_SYMBOL;
-        break;
-      }
-      break;
-    case 0x85 :
-      if (str[3] < 0xB9) { return GRN_CHAR_DIGIT; }
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x86 :
-      if (str[3] < 0x8A) { return GRN_CHAR_SYMBOL; }
-      if (str[3] < 0x8B) { return GRN_CHAR_DIGIT; }
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8C :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-      case 0x9D :
-      case 0x9E :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x9F :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xA0 :
-      case 0xA1 :
-      case 0xA2 :
-      case 0xA3 :
-        return GRN_CHAR_DIGIT;
-        break;
-      case 0xA4 :
-      case 0xA5 :
-      case 0xA6 :
-      case 0xA7 :
-      case 0xA8 :
-      case 0xA9 :
-      case 0xAA :
-      case 0xAB :
-      case 0xAC :
-      case 0xAD :
-      case 0xAE :
-      case 0xAF :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xB0 :
-      default :
-        return GRN_CHAR_ALPHA;
-        break;
-      }
-      break;
-    case 0x8D :
-      switch (str[3]) {
-      case 0x80 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x81 :
-        return GRN_CHAR_DIGIT;
-        break;
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x8A :
-        return GRN_CHAR_DIGIT;
-        break;
-      case 0x8B :
-      default :
-        return GRN_CHAR_OTHERS;
-        break;
-      }
-      break;
-    case 0x8E :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-      case 0x9D :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x9E :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x9F :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0xA0 :
-      default :
-        return GRN_CHAR_ALPHA;
-        break;
-      }
-      break;
-    case 0x8F :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x90 :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-        return GRN_CHAR_DIGIT;
-        break;
-      case 0x96 :
-      default :
-        return GRN_CHAR_OTHERS;
-        break;
-      }
-      break;
-    case 0x90 :
-    case 0x91 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x92 :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-      case 0x9D :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x9E :
-      case 0x9F :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xA0 :
-      case 0xA1 :
-      case 0xA2 :
-      case 0xA3 :
-      case 0xA4 :
-      case 0xA5 :
-      case 0xA6 :
-      case 0xA7 :
-      case 0xA8 :
-      case 0xA9 :
-        return GRN_CHAR_DIGIT;
-        break;
-      case 0xAA :
-      default :
-        return GRN_CHAR_OTHERS;
-        break;
-      }
-      break;
-    case 0x93 :
-    case 0x94 :
-    case 0x95 :
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-    case 0x9A :
-    case 0x9B :
-    case 0x9C :
-    case 0x9D :
-    case 0x9E :
-    case 0x9F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA0 :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x86 :
-      case 0x87 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x88 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x89 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-      case 0x9D :
-      case 0x9E :
-      case 0x9F :
-      case 0xA0 :
-      case 0xA1 :
-      case 0xA2 :
-      case 0xA3 :
-      case 0xA4 :
-      case 0xA5 :
-      case 0xA6 :
-      case 0xA7 :
-      case 0xA8 :
-      case 0xA9 :
-      case 0xAA :
-      case 0xAB :
-      case 0xAC :
-      case 0xAD :
-      case 0xAE :
-      case 0xAF :
-      case 0xB0 :
-      case 0xB1 :
-      case 0xB2 :
-      case 0xB3 :
-      case 0xB4 :
-      case 0xB5 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xB6 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xB7 :
-      case 0xB8 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xB9 :
-      case 0xBA :
-      case 0xBB :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xBC :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xBD :
-      case 0xBE :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xBF :
-      default :
-        return GRN_CHAR_ALPHA;
-        break;
-      }
-      break;
-    case 0xA1 :
-    case 0xA2 :
-    case 0xA3 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA4 :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-        return GRN_CHAR_DIGIT;
-        break;
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-      case 0x9D :
-      case 0x9E :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x9F :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0xA0 :
-      default :
-        return GRN_CHAR_OTHERS;
-        break;
-      }
-      break;
-    case 0xA5 :
-    case 0xA6 :
-    case 0xA7 :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0xA8 :
-      switch (str[3]) {
-      case 0x80 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x94 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x95 :
-      case 0x96 :
-      case 0x97 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x98 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x99 :
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-      case 0x9D :
-      case 0x9E :
-      case 0x9F :
-      case 0xA0 :
-      case 0xA1 :
-      case 0xA2 :
-      case 0xA3 :
-      case 0xA4 :
-      case 0xA5 :
-      case 0xA6 :
-      case 0xA7 :
-      case 0xA8 :
-      case 0xA9 :
-      case 0xAA :
-      case 0xAB :
-      case 0xAC :
-      case 0xAD :
-      case 0xAE :
-      case 0xAF :
-      case 0xB0 :
-      case 0xB1 :
-      case 0xB2 :
-      case 0xB3 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xB4 :
-      default :
-        return GRN_CHAR_OTHERS;
-        break;
-      }
-      break;
-    case 0xA9 :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-        return GRN_CHAR_DIGIT;
-        break;
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0x99 :
-      default :
-        return GRN_CHAR_OTHERS;
-        break;
-      }
-      break;
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0x91 :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x92 :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-    case 0x83 :
-    case 0x84 :
-    case 0x85 :
-    case 0x86 :
-    case 0x87 :
-    case 0x88 :
-    case 0x89 :
-    case 0x8A :
-    case 0x8B :
-    case 0x8C :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x8D :
-      if (str[3] < 0xAF) { return GRN_CHAR_ALPHA; }
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x90 :
-      return GRN_CHAR_DIGIT;
-      break;
-    case 0x91 :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-      case 0x9D :
-      case 0x9E :
-      case 0x9F :
-      case 0xA0 :
-      case 0xA1 :
-      case 0xA2 :
-        return GRN_CHAR_DIGIT;
-        break;
-      case 0xA3 :
-      case 0xA4 :
-      case 0xA5 :
-      case 0xA6 :
-      case 0xA7 :
-      case 0xA8 :
-      case 0xA9 :
-      case 0xAA :
-      case 0xAB :
-      case 0xAC :
-      case 0xAD :
-      case 0xAE :
-      case 0xAF :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xB0 :
-      case 0xB1 :
-      case 0xB2 :
-      case 0xB3 :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0xB4 :
-      default :
-        return GRN_CHAR_OTHERS;
-        break;
-      }
-      break;
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0x93 :
-  case 0x94 :
-  case 0x95 :
-  case 0x96 :
-  case 0x97 :
-  case 0x98 :
-  case 0x99 :
-  case 0x9A :
-  case 0x9B :
-  case 0x9C :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0x9D :
-    switch (str[2]) {
-    case 0x80 :
-    case 0x81 :
-    case 0x82 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x83 :
-      if (str[3] < 0xB6) { return GRN_CHAR_SYMBOL; }
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x84 :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-      case 0x9D :
-      case 0x9E :
-      case 0x9F :
-      case 0xA0 :
-      case 0xA1 :
-      case 0xA2 :
-      case 0xA3 :
-      case 0xA4 :
-      case 0xA5 :
-      case 0xA6 :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0xA7 :
-      case 0xA8 :
-      case 0xA9 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xAA :
-      default :
-        return GRN_CHAR_SYMBOL;
-        break;
-      }
-      break;
-    case 0x85 :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-      case 0x9D :
-      case 0x9E :
-      case 0x9F :
-      case 0xA0 :
-      case 0xA1 :
-      case 0xA2 :
-      case 0xA3 :
-      case 0xA4 :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0xA5 :
-      case 0xA6 :
-      case 0xA7 :
-      case 0xA8 :
-      case 0xA9 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xAA :
-      case 0xAB :
-      case 0xAC :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0xAD :
-      default :
-        return GRN_CHAR_OTHERS;
-        break;
-      }
-      break;
-    case 0x86 :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x83 :
-      case 0x84 :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-      case 0x9D :
-      case 0x9E :
-      case 0x9F :
-      case 0xA0 :
-      case 0xA1 :
-      case 0xA2 :
-      case 0xA3 :
-      case 0xA4 :
-      case 0xA5 :
-      case 0xA6 :
-      case 0xA7 :
-      case 0xA8 :
-      case 0xA9 :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0xAA :
-      case 0xAB :
-      case 0xAC :
-      case 0xAD :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xAE :
-      default :
-        return GRN_CHAR_SYMBOL;
-        break;
-      }
-      break;
-    case 0x87 :
-      if (str[3] < 0x9E) { return GRN_CHAR_SYMBOL; }
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x88 :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x89 :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x85 :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0x86 :
-      default :
-        return GRN_CHAR_OTHERS;
-        break;
-      }
-      break;
-    case 0x8A :
-    case 0x8B :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x8C :
-      return GRN_CHAR_SYMBOL;
-      break;
-    case 0x8D :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-      case 0x96 :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-      case 0x9D :
-      case 0x9E :
-      case 0x9F :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xA0 :
-      case 0xA1 :
-      case 0xA2 :
-      case 0xA3 :
-      case 0xA4 :
-      case 0xA5 :
-      case 0xA6 :
-      case 0xA7 :
-      case 0xA8 :
-      case 0xA9 :
-      case 0xAA :
-      case 0xAB :
-      case 0xAC :
-      case 0xAD :
-      case 0xAE :
-      case 0xAF :
-      case 0xB0 :
-      case 0xB1 :
-        return GRN_CHAR_DIGIT;
-        break;
-      case 0xB2 :
-      default :
-        return GRN_CHAR_OTHERS;
-        break;
-      }
-      break;
-    case 0x8E :
-    case 0x8F :
-      return GRN_CHAR_OTHERS;
-      break;
-    case 0x90 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x91 :
-      if (str[3] < 0x95) { return GRN_CHAR_ALPHA; }
-      if (str[3] < 0x96) { return GRN_CHAR_OTHERS; }
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x92 :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x9D :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x9E :
-      case 0x9F :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xA0 :
-      case 0xA1 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xA2 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xA3 :
-      case 0xA4 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xA5 :
-      case 0xA6 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xA7 :
-      case 0xA8 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xA9 :
-      case 0xAA :
-      case 0xAB :
-      case 0xAC :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xAD :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xAE :
-      case 0xAF :
-      case 0xB0 :
-      case 0xB1 :
-      case 0xB2 :
-      case 0xB3 :
-      case 0xB4 :
-      case 0xB5 :
-      case 0xB6 :
-      case 0xB7 :
-      case 0xB8 :
-      case 0xB9 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xBA :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xBB :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xBC :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xBD :
-      default :
-        return GRN_CHAR_ALPHA;
-        break;
-      }
-      break;
-    case 0x93 :
-      if (str[3] < 0x84) { return GRN_CHAR_ALPHA; }
-      if (str[3] < 0x85) { return GRN_CHAR_OTHERS; }
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x94 :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x86 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x8B :
-      case 0x8C :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x95 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x9D :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x9E :
-      case 0x9F :
-      case 0xA0 :
-      case 0xA1 :
-      case 0xA2 :
-      case 0xA3 :
-      case 0xA4 :
-      case 0xA5 :
-      case 0xA6 :
-      case 0xA7 :
-      case 0xA8 :
-      case 0xA9 :
-      case 0xAA :
-      case 0xAB :
-      case 0xAC :
-      case 0xAD :
-      case 0xAE :
-      case 0xAF :
-      case 0xB0 :
-      case 0xB1 :
-      case 0xB2 :
-      case 0xB3 :
-      case 0xB4 :
-      case 0xB5 :
-      case 0xB6 :
-      case 0xB7 :
-      case 0xB8 :
-      case 0xB9 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xBA :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0xBB :
-      case 0xBC :
-      case 0xBD :
-      case 0xBE :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xBF :
-      default :
-        return GRN_CHAR_OTHERS;
-        break;
-      }
-      break;
-    case 0x95 :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x85 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x86 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-      case 0x90 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x91 :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x92 :
-      default :
-        return GRN_CHAR_ALPHA;
-        break;
-      }
-      break;
-    case 0x96 :
-    case 0x97 :
-    case 0x98 :
-    case 0x99 :
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9A :
-      if (str[3] < 0xA6) { return GRN_CHAR_ALPHA; }
-      if (str[3] < 0xA8) { return GRN_CHAR_OTHERS; }
-      return GRN_CHAR_ALPHA;
-      break;
-    case 0x9B :
-      switch (str[3]) {
-      case 0x80 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x81 :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-      case 0x9A :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x9B :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0x9C :
-      case 0x9D :
-      case 0x9E :
-      case 0x9F :
-      case 0xA0 :
-      case 0xA1 :
-      case 0xA2 :
-      case 0xA3 :
-      case 0xA4 :
-      case 0xA5 :
-      case 0xA6 :
-      case 0xA7 :
-      case 0xA8 :
-      case 0xA9 :
-      case 0xAA :
-      case 0xAB :
-      case 0xAC :
-      case 0xAD :
-      case 0xAE :
-      case 0xAF :
-      case 0xB0 :
-      case 0xB1 :
-      case 0xB2 :
-      case 0xB3 :
-      case 0xB4 :
-      case 0xB5 :
-      case 0xB6 :
-      case 0xB7 :
-      case 0xB8 :
-      case 0xB9 :
-      case 0xBA :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xBB :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0xBC :
-      default :
-        return GRN_CHAR_ALPHA;
-        break;
-      }
-      break;
-    case 0x9C :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x95 :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-      case 0x9D :
-      case 0x9E :
-      case 0x9F :
-      case 0xA0 :
-      case 0xA1 :
-      case 0xA2 :
-      case 0xA3 :
-      case 0xA4 :
-      case 0xA5 :
-      case 0xA6 :
-      case 0xA7 :
-      case 0xA8 :
-      case 0xA9 :
-      case 0xAA :
-      case 0xAB :
-      case 0xAC :
-      case 0xAD :
-      case 0xAE :
-      case 0xAF :
-      case 0xB0 :
-      case 0xB1 :
-      case 0xB2 :
-      case 0xB3 :
-      case 0xB4 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xB5 :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0xB6 :
-      default :
-        return GRN_CHAR_ALPHA;
-        break;
-      }
-      break;
-    case 0x9D :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x8F :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-      case 0x9D :
-      case 0x9E :
-      case 0x9F :
-      case 0xA0 :
-      case 0xA1 :
-      case 0xA2 :
-      case 0xA3 :
-      case 0xA4 :
-      case 0xA5 :
-      case 0xA6 :
-      case 0xA7 :
-      case 0xA8 :
-      case 0xA9 :
-      case 0xAA :
-      case 0xAB :
-      case 0xAC :
-      case 0xAD :
-      case 0xAE :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xAF :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0xB0 :
-      default :
-        return GRN_CHAR_ALPHA;
-        break;
-      }
-      break;
-    case 0x9E :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-      case 0x83 :
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x89 :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0x8A :
-      case 0x8B :
-      case 0x8C :
-      case 0x8D :
-      case 0x8E :
-      case 0x8F :
-      case 0x90 :
-      case 0x91 :
-      case 0x92 :
-      case 0x93 :
-      case 0x94 :
-      case 0x95 :
-      case 0x96 :
-      case 0x97 :
-      case 0x98 :
-      case 0x99 :
-      case 0x9A :
-      case 0x9B :
-      case 0x9C :
-      case 0x9D :
-      case 0x9E :
-      case 0x9F :
-      case 0xA0 :
-      case 0xA1 :
-      case 0xA2 :
-      case 0xA3 :
-      case 0xA4 :
-      case 0xA5 :
-      case 0xA6 :
-      case 0xA7 :
-      case 0xA8 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0xA9 :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0xAA :
-      default :
-        return GRN_CHAR_ALPHA;
-        break;
-      }
-      break;
-    case 0x9F :
-      switch (str[3]) {
-      case 0x80 :
-      case 0x81 :
-      case 0x82 :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x83 :
-        return GRN_CHAR_SYMBOL;
-        break;
-      case 0x84 :
-      case 0x85 :
-      case 0x86 :
-      case 0x87 :
-      case 0x88 :
-      case 0x89 :
-      case 0x8A :
-      case 0x8B :
-        return GRN_CHAR_ALPHA;
-        break;
-      case 0x8C :
-      case 0x8D :
-        return GRN_CHAR_OTHERS;
-        break;
-      case 0x8E :
-      default :
-        return GRN_CHAR_DIGIT;
-        break;
-      }
-      break;
-    case 0xA0 :
-    default :
-      return GRN_CHAR_OTHERS;
-      break;
-    }
-    break;
-  case 0x9E :
-  case 0x9F :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xA0 :
-  case 0xA1 :
-  case 0xA2 :
-  case 0xA3 :
-  case 0xA4 :
-  case 0xA5 :
-  case 0xA6 :
-  case 0xA7 :
-  case 0xA8 :
-  case 0xA9 :
-    return GRN_CHAR_KANJI;
-    break;
-  case 0xAA :
-    if (str[2] < 0x9B) { return GRN_CHAR_KANJI; }
-    if (str[2] == 0x9B) {
-      if (str[3] < 0xA0) { return GRN_CHAR_KANJI; }
-      return GRN_CHAR_OTHERS;
-    }
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xAB :
-  case 0xAC :
-  case 0xAD :
-  case 0xAE :
-    return GRN_CHAR_OTHERS;
-    break;
-  case 0xAF :
-    if (str[2] < 0xA0) { return GRN_CHAR_OTHERS; }
-    if (str[2] < 0xA8) { return GRN_CHAR_KANJI; }
-    if (str[2] == 0xA8) {
-      if (str[3] < 0xA0) { return GRN_CHAR_KANJI; }
-      return GRN_CHAR_OTHERS;
-    }
-    return GRN_CHAR_OTHERS;
-    break;
-  default :
-    return GRN_CHAR_OTHERS;
-    break;
-  }
-  break;
-default :
-  return GRN_CHAR_OTHERS;
-  break;
-}
-  return -1;
+  return grn_nfkc50_char_type(utf8);
 }
 
 const char *
-grn_nfkc_map1(const unsigned char *str)
+grn_nfkc_map1(const unsigned char *utf8)
 {
-switch (str[0]) {
-case 0x41 :
-  return "\x61";
-  break;
-case 0x42 :
-  return "\x62";
-  break;
-case 0x43 :
-  return "\x63";
-  break;
-case 0x44 :
-  return "\x64";
-  break;
-case 0x45 :
-  return "\x65";
-  break;
-case 0x46 :
-  return "\x66";
-  break;
-case 0x47 :
-  return "\x67";
-  break;
-case 0x48 :
-  return "\x68";
-  break;
-case 0x49 :
-  return "\x69";
-  break;
-case 0x4A :
-  return "\x6A";
-  break;
-case 0x4B :
-  return "\x6B";
-  break;
-case 0x4C :
-  return "\x6C";
-  break;
-case 0x4D :
-  return "\x6D";
-  break;
-case 0x4E :
-  return "\x6E";
-  break;
-case 0x4F :
-  return "\x6F";
-  break;
-case 0x50 :
-  return "\x70";
-  break;
-case 0x51 :
-  return "\x71";
-  break;
-case 0x52 :
-  return "\x72";
-  break;
-case 0x53 :
-  return "\x73";
-  break;
-case 0x54 :
-  return "\x74";
-  break;
-case 0x55 :
-  return "\x75";
-  break;
-case 0x56 :
-  return "\x76";
-  break;
-case 0x57 :
-  return "\x77";
-  break;
-case 0x58 :
-  return "\x78";
-  break;
-case 0x59 :
-  return "\x79";
-  break;
-case 0x5A :
-  return "\x7A";
-  break;
-case 0xC2 :
-  switch (str[1]) {
-  case 0xA0 :
-    return "\x20";
-    break;
-  case 0xA8 :
-    return "\xCC\x88";
-    break;
-  case 0xAA :
-    return "\x61";
-    break;
-  case 0xAF :
-    return "\xCC\x84";
-    break;
-  case 0xB2 :
-    return "\x32";
-    break;
-  case 0xB3 :
-    return "\x33";
-    break;
-  case 0xB4 :
-    return "\xCC\x81";
-    break;
-  case 0xB5 :
-    return "\xCE\xBC";
-    break;
-  case 0xB8 :
-    return "\xCC\xA7";
-    break;
-  case 0xB9 :
-    return "\x31";
-    break;
-  case 0xBA :
-    return "\x6F";
-    break;
-  case 0xBC :
-    return "\x31\xE2\x81\x84\x34";
-    break;
-  case 0xBD :
-    return "\x31\xE2\x81\x84\x32";
-    break;
-  case 0xBE :
-    return "\x33\xE2\x81\x84\x34";
-    break;
-  }
-  break;
-case 0xC3 :
-  switch (str[1]) {
-  case 0x80 :
-    return "\xC3\xA0";
-    break;
-  case 0x81 :
-    return "\xC3\xA1";
-    break;
-  case 0x82 :
-    return "\xC3\xA2";
-    break;
-  case 0x83 :
-    return "\xC3\xA3";
-    break;
-  case 0x84 :
-    return "\xC3\xA4";
-    break;
-  case 0x85 :
-    return "\xC3\xA5";
-    break;
-  case 0x87 :
-    return "\xC3\xA7";
-    break;
-  case 0x88 :
-    return "\xC3\xA8";
-    break;
-  case 0x89 :
-    return "\xC3\xA9";
-    break;
-  case 0x8A :
-    return "\xC3\xAA";
-    break;
-  case 0x8B :
-    return "\xC3\xAB";
-    break;
-  case 0x8C :
-    return "\xC3\xAC";
-    break;
-  case 0x8D :
-    return "\xC3\xAD";
-    break;
-  case 0x8E :
-    return "\xC3\xAE";
-    break;
-  case 0x8F :
-    return "\xC3\xAF";
-    break;
-  case 0x91 :
-    return "\xC3\xB1";
-    break;
-  case 0x92 :
-    return "\xC3\xB2";
-    break;
-  case 0x93 :
-    return "\xC3\xB3";
-    break;
-  case 0x94 :
-    return "\xC3\xB4";
-    break;
-  case 0x95 :
-    return "\xC3\xB5";
-    break;
-  case 0x96 :
-    return "\xC3\xB6";
-    break;
-  case 0x99 :
-    return "\xC3\xB9";
-    break;
-  case 0x9A :
-    return "\xC3\xBA";
-    break;
-  case 0x9B :
-    return "\xC3\xBB";
-    break;
-  case 0x9C :
-    return "\xC3\xBC";
-    break;
-  case 0x9D :
-    return "\xC3\xBD";
-    break;
-  }
-  break;
-case 0xC4 :
-  switch (str[1]) {
-  case 0x80 :
-    return "\xC4\x81";
-    break;
-  case 0x82 :
-    return "\xC4\x83";
-    break;
-  case 0x84 :
-    return "\xC4\x85";
-    break;
-  case 0x86 :
-    return "\xC4\x87";
-    break;
-  case 0x88 :
-    return "\xC4\x89";
-    break;
-  case 0x8A :
-    return "\xC4\x8B";
-    break;
-  case 0x8C :
-    return "\xC4\x8D";
-    break;
-  case 0x8E :
-    return "\xC4\x8F";
-    break;
-  case 0x92 :
-    return "\xC4\x93";
-    break;
-  case 0x94 :
-    return "\xC4\x95";
-    break;
-  case 0x96 :
-    return "\xC4\x97";
-    break;
-  case 0x98 :
-    return "\xC4\x99";
-    break;
-  case 0x9A :
-    return "\xC4\x9B";
-    break;
-  case 0x9C :
-    return "\xC4\x9D";
-    break;
-  case 0x9E :
-    return "\xC4\x9F";
-    break;
-  case 0xA0 :
-    return "\xC4\xA1";
-    break;
-  case 0xA2 :
-    return "\xC4\xA3";
-    break;
-  case 0xA4 :
-    return "\xC4\xA5";
-    break;
-  case 0xA8 :
-    return "\xC4\xA9";
-    break;
-  case 0xAA :
-    return "\xC4\xAB";
-    break;
-  case 0xAC :
-    return "\xC4\xAD";
-    break;
-  case 0xAE :
-    return "\xC4\xAF";
-    break;
-  case 0xB0 :
-    return "\x69\xCC\x87";
-    break;
-  case 0xB2 :
-    return "\x69\x6A";
-    break;
-  case 0xB3 :
-    return "\x69\x6A";
-    break;
-  case 0xB4 :
-    return "\xC4\xB5";
-    break;
-  case 0xB6 :
-    return "\xC4\xB7";
-    break;
-  case 0xB9 :
-    return "\xC4\xBA";
-    break;
-  case 0xBB :
-    return "\xC4\xBC";
-    break;
-  case 0xBD :
-    return "\xC4\xBE";
-    break;
-  case 0xBF :
-    return "\x6C\xC2\xB7";
-    break;
-  }
-  break;
-case 0xC5 :
-  switch (str[1]) {
-  case 0x80 :
-    return "\x6C\xC2\xB7";
-    break;
-  case 0x83 :
-    return "\xC5\x84";
-    break;
-  case 0x85 :
-    return "\xC5\x86";
-    break;
-  case 0x87 :
-    return "\xC5\x88";
-    break;
-  case 0x89 :
-    return "\xCA\xBC\x6E";
-    break;
-  case 0x8C :
-    return "\xC5\x8D";
-    break;
-  case 0x8E :
-    return "\xC5\x8F";
-    break;
-  case 0x90 :
-    return "\xC5\x91";
-    break;
-  case 0x94 :
-    return "\xC5\x95";
-    break;
-  case 0x96 :
-    return "\xC5\x97";
-    break;
-  case 0x98 :
-    return "\xC5\x99";
-    break;
-  case 0x9A :
-    return "\xC5\x9B";
-    break;
-  case 0x9C :
-    return "\xC5\x9D";
-    break;
-  case 0x9E :
-    return "\xC5\x9F";
-    break;
-  case 0xA0 :
-    return "\xC5\xA1";
-    break;
-  case 0xA2 :
-    return "\xC5\xA3";
-    break;
-  case 0xA4 :
-    return "\xC5\xA5";
-    break;
-  case 0xA8 :
-    return "\xC5\xA9";
-    break;
-  case 0xAA :
-    return "\xC5\xAB";
-    break;
-  case 0xAC :
-    return "\xC5\xAD";
-    break;
-  case 0xAE :
-    return "\xC5\xAF";
-    break;
-  case 0xB0 :
-    return "\xC5\xB1";
-    break;
-  case 0xB2 :
-    return "\xC5\xB3";
-    break;
-  case 0xB4 :
-    return "\xC5\xB5";
-    break;
-  case 0xB6 :
-    return "\xC5\xB7";
-    break;
-  case 0xB8 :
-    return "\xC3\xBF";
-    break;
-  case 0xB9 :
-    return "\xC5\xBA";
-    break;
-  case 0xBB :
-    return "\xC5\xBC";
-    break;
-  case 0xBD :
-    return "\xC5\xBE";
-    break;
-  case 0xBF :
-    return "\x73";
-    break;
-  }
-  break;
-case 0xC6 :
-  switch (str[1]) {
-  case 0xA0 :
-    return "\xC6\xA1";
-    break;
-  case 0xAF :
-    return "\xC6\xB0";
-    break;
-  }
-  break;
-case 0xC7 :
-  switch (str[1]) {
-  case 0x84 :
-    return "\x64\xC5\xBE";
-    break;
-  case 0x85 :
-    return "\x64\xC5\xBE";
-    break;
-  case 0x86 :
-    return "\x64\xC5\xBE";
-    break;
-  case 0x87 :
-    return "\x6C\x6A";
-    break;
-  case 0x88 :
-    return "\x6C\x6A";
-    break;
-  case 0x89 :
-    return "\x6C\x6A";
-    break;
-  case 0x8A :
-    return "\x6E\x6A";
-    break;
-  case 0x8B :
-    return "\x6E\x6A";
-    break;
-  case 0x8C :
-    return "\x6E\x6A";
-    break;
-  case 0x8D :
-    return "\xC7\x8E";
-    break;
-  case 0x8F :
-    return "\xC7\x90";
-    break;
-  case 0x91 :
-    return "\xC7\x92";
-    break;
-  case 0x93 :
-    return "\xC7\x94";
-    break;
-  case 0x95 :
-    return "\xC7\x96";
-    break;
-  case 0x97 :
-    return "\xC7\x98";
-    break;
-  case 0x99 :
-    return "\xC7\x9A";
-    break;
-  case 0x9B :
-    return "\xC7\x9C";
-    break;
-  case 0x9E :
-    return "\xC7\x9F";
-    break;
-  case 0xA0 :
-    return "\xC7\xA1";
-    break;
-  case 0xA6 :
-    return "\xC7\xA7";
-    break;
-  case 0xA8 :
-    return "\xC7\xA9";
-    break;
-  case 0xAA :
-    return "\xC7\xAB";
-    break;
-  case 0xAC :
-    return "\xC7\xAD";
-    break;
-  case 0xB1 :
-    return "\x64\x7A";
-    break;
-  case 0xB2 :
-    return "\x64\x7A";
-    break;
-  case 0xB3 :
-    return "\x64\x7A";
-    break;
-  case 0xB4 :
-    return "\xC7\xB5";
-    break;
-  case 0xB8 :
-    return "\xC7\xB9";
-    break;
-  case 0xBA :
-    return "\xC7\xBB";
-    break;
-  }
-  break;
-case 0xC8 :
-  switch (str[1]) {
-  case 0x80 :
-    return "\xC8\x81";
-    break;
-  case 0x82 :
-    return "\xC8\x83";
-    break;
-  case 0x84 :
-    return "\xC8\x85";
-    break;
-  case 0x86 :
-    return "\xC8\x87";
-    break;
-  case 0x88 :
-    return "\xC8\x89";
-    break;
-  case 0x8A :
-    return "\xC8\x8B";
-    break;
-  case 0x8C :
-    return "\xC8\x8D";
-    break;
-  case 0x8E :
-    return "\xC8\x8F";
-    break;
-  case 0x90 :
-    return "\xC8\x91";
-    break;
-  case 0x92 :
-    return "\xC8\x93";
-    break;
-  case 0x94 :
-    return "\xC8\x95";
-    break;
-  case 0x96 :
-    return "\xC8\x97";
-    break;
-  case 0x98 :
-    return "\xC8\x99";
-    break;
-  case 0x9A :
-    return "\xC8\x9B";
-    break;
-  case 0x9E :
-    return "\xC8\x9F";
-    break;
-  case 0xA6 :
-    return "\xC8\xA7";
-    break;
-  case 0xA8 :
-    return "\xC8\xA9";
-    break;
-  case 0xAA :
-    return "\xC8\xAB";
-    break;
-  case 0xAC :
-    return "\xC8\xAD";
-    break;
-  case 0xAE :
-    return "\xC8\xAF";
-    break;
-  case 0xB0 :
-    return "\xC8\xB1";
-    break;
-  case 0xB2 :
-    return "\xC8\xB3";
-    break;
-  }
-  break;
-case 0xCA :
-  switch (str[1]) {
-  case 0xB0 :
-    return "\x68";
-    break;
-  case 0xB1 :
-    return "\xC9\xA6";
-    break;
-  case 0xB2 :
-    return "\x6A";
-    break;
-  case 0xB3 :
-    return "\x72";
-    break;
-  case 0xB4 :
-    return "\xC9\xB9";
-    break;
-  case 0xB5 :
-    return "\xC9\xBB";
-    break;
-  case 0xB6 :
-    return "\xCA\x81";
-    break;
-  case 0xB7 :
-    return "\x77";
-    break;
-  case 0xB8 :
-    return "\x79";
-    break;
-  }
-  break;
-case 0xCB :
-  switch (str[1]) {
-  case 0x98 :
-    return "\xCC\x86";
-    break;
-  case 0x99 :
-    return "\xCC\x87";
-    break;
-  case 0x9A :
-    return "\xCC\x8A";
-    break;
-  case 0x9B :
-    return "\xCC\xA8";
-    break;
-  case 0x9C :
-    return "\xCC\x83";
-    break;
-  case 0x9D :
-    return "\xCC\x8B";
-    break;
-  case 0xA0 :
-    return "\xC9\xA3";
-    break;
-  case 0xA1 :
-    return "\x6C";
-    break;
-  case 0xA2 :
-    return "\x73";
-    break;
-  case 0xA3 :
-    return "\x78";
-    break;
-  case 0xA4 :
-    return "\xCA\x95";
-    break;
-  }
-  break;
-case 0xCD :
-  switch (str[1]) {
-  case 0x80 :
-    return "\xCC\x80";
-    break;
-  case 0x81 :
-    return "\xCC\x81";
-    break;
-  case 0x83 :
-    return "\xCC\x93";
-    break;
-  case 0x84 :
-    return "\xCC\x88\xCC\x81";
-    break;
-  case 0xB4 :
-    return "\xCA\xB9";
-    break;
-  case 0xBA :
-    return "\xCD\x85";
-    break;
-  case 0xBE :
-    return "\x3B";
-    break;
-  }
-  break;
-case 0xCE :
-  switch (str[1]) {
-  case 0x84 :
-    return "\xCC\x81";
-    break;
-  case 0x85 :
-    return "\xCC\x88\xCC\x81";
-    break;
-  case 0x87 :
-    return "\xC2\xB7";
-    break;
-  }
-  break;
-case 0xCF :
-  switch (str[1]) {
-  case 0x90 :
-    return "\xCE\xB2";
-    break;
-  case 0x91 :
-    return "\xCE\xB8";
-    break;
-  case 0x92 :
-    return "\xCE\xA5";
-    break;
-  case 0x93 :
-    return "\xCE\x8E";
-    break;
-  case 0x94 :
-    return "\xCE\xAB";
-    break;
-  case 0x95 :
-    return "\xCF\x86";
-    break;
-  case 0x96 :
-    return "\xCF\x80";
-    break;
-  case 0xB0 :
-    return "\xCE\xBA";
-    break;
-  case 0xB1 :
-    return "\xCF\x81";
-    break;
-  case 0xB2 :
-    return "\xCF\x82";
-    break;
-  case 0xB4 :
-    return "\xCE\x98";
-    break;
-  case 0xB5 :
-    return "\xCE\xB5";
-    break;
-  case 0xB9 :
-    return "\xCE\xA3";
-    break;
-  }
-  break;
-case 0xD6 :
-  if (str[1] == 0x87) {
-    return "\xD5\xA5\xD6\x82";
-  }
-  break;
-case 0xD9 :
-  switch (str[1]) {
-  case 0xB5 :
-    return "\xD8\xA7\xD9\xB4";
-    break;
-  case 0xB6 :
-    return "\xD9\x88\xD9\xB4";
-    break;
-  case 0xB7 :
-    return "\xDB\x87\xD9\xB4";
-    break;
-  case 0xB8 :
-    return "\xD9\x8A\xD9\xB4";
-    break;
-  }
-  break;
-case 0xE0 :
-  switch (str[1]) {
-  case 0xA5 :
-    switch (str[2]) {
-    case 0x98 :
-      return "\xE0\xA4\x95\xE0\xA4\xBC";
-      break;
-    case 0x99 :
-      return "\xE0\xA4\x96\xE0\xA4\xBC";
-      break;
-    case 0x9A :
-      return "\xE0\xA4\x97\xE0\xA4\xBC";
-      break;
-    case 0x9B :
-      return "\xE0\xA4\x9C\xE0\xA4\xBC";
-      break;
-    case 0x9C :
-      return "\xE0\xA4\xA1\xE0\xA4\xBC";
-      break;
-    case 0x9D :
-      return "\xE0\xA4\xA2\xE0\xA4\xBC";
-      break;
-    case 0x9E :
-      return "\xE0\xA4\xAB\xE0\xA4\xBC";
-      break;
-    case 0x9F :
-      return "\xE0\xA4\xAF\xE0\xA4\xBC";
-      break;
-    }
-    break;
-  case 0xA7 :
-    switch (str[2]) {
-    case 0x9C :
-      return "\xE0\xA6\xA1\xE0\xA6\xBC";
-      break;
-    case 0x9D :
-      return "\xE0\xA6\xA2\xE0\xA6\xBC";
-      break;
-    case 0x9F :
-      return "\xE0\xA6\xAF\xE0\xA6\xBC";
-      break;
-    }
-    break;
-  case 0xA8 :
-    switch (str[2]) {
-    case 0xB3 :
-      return "\xE0\xA8\xB2\xE0\xA8\xBC";
-      break;
-    case 0xB6 :
-      return "\xE0\xA8\xB8\xE0\xA8\xBC";
-      break;
-    }
-    break;
-  case 0xA9 :
-    switch (str[2]) {
-    case 0x99 :
-      return "\xE0\xA8\x96\xE0\xA8\xBC";
-      break;
-    case 0x9A :
-      return "\xE0\xA8\x97\xE0\xA8\xBC";
-      break;
-    case 0x9B :
-      return "\xE0\xA8\x9C\xE0\xA8\xBC";
-      break;
-    case 0x9E :
-      return "\xE0\xA8\xAB\xE0\xA8\xBC";
-      break;
-    }
-    break;
-  case 0xAD :
-    switch (str[2]) {
-    case 0x9C :
-      return "\xE0\xAC\xA1\xE0\xAC\xBC";
-      break;
-    case 0x9D :
-      return "\xE0\xAC\xA2\xE0\xAC\xBC";
-      break;
-    }
-    break;
-  case 0xB8 :
-    if (str[2] == 0xB3) {
-      return "\xE0\xB9\x8D\xE0\xB8\xB2";
-    }
-    break;
-  case 0xBA :
-    if (str[2] == 0xB3) {
-      return "\xE0\xBB\x8D\xE0\xBA\xB2";
-    }
-    break;
-  case 0xBB :
-    switch (str[2]) {
-    case 0x9C :
-      return "\xE0\xBA\xAB\xE0\xBA\x99";
-      break;
-    case 0x9D :
-      return "\xE0\xBA\xAB\xE0\xBA\xA1";
-      break;
-    }
-    break;
-  case 0xBC :
-    if (str[2] == 0x8C) {
-      return "\xE0\xBC\x8B";
-    }
-    break;
-  case 0xBD :
-    switch (str[2]) {
-    case 0x83 :
-      return "\xE0\xBD\x82\xE0\xBE\xB7";
-      break;
-    case 0x8D :
-      return "\xE0\xBD\x8C\xE0\xBE\xB7";
-      break;
-    case 0x92 :
-      return "\xE0\xBD\x91\xE0\xBE\xB7";
-      break;
-    case 0x97 :
-      return "\xE0\xBD\x96\xE0\xBE\xB7";
-      break;
-    case 0x9C :
-      return "\xE0\xBD\x9B\xE0\xBE\xB7";
-      break;
-    case 0xA9 :
-      return "\xE0\xBD\x80\xE0\xBE\xB5";
-      break;
-    case 0xB3 :
-      return "\xE0\xBD\xB1\xE0\xBD\xB2";
-      break;
-    case 0xB5 :
-      return "\xE0\xBD\xB1\xE0\xBD\xB4";
-      break;
-    case 0xB6 :
-      return "\xE0\xBE\xB2\xE0\xBE\x80";
-      break;
-    case 0xB7 :
-      return "\xE0\xBE\xB2\xE0\xBD\xB1\xE0\xBE\x80";
-      break;
-    case 0xB8 :
-      return "\xE0\xBE\xB3\xE0\xBE\x80";
-      break;
-    case 0xB9 :
-      return "\xE0\xBE\xB3\xE0\xBD\xB1\xE0\xBE\x80";
-      break;
-    }
-    break;
-  case 0xBE :
-    switch (str[2]) {
-    case 0x81 :
-      return "\xE0\xBD\xB1\xE0\xBE\x80";
-      break;
-    case 0x93 :
-      return "\xE0\xBE\x92\xE0\xBE\xB7";
-      break;
-    case 0x9D :
-      return "\xE0\xBE\x9C\xE0\xBE\xB7";
-      break;
-    case 0xA2 :
-      return "\xE0\xBE\xA1\xE0\xBE\xB7";
-      break;
-    case 0xA7 :
-      return "\xE0\xBE\xA6\xE0\xBE\xB7";
-      break;
-    case 0xAC :
-      return "\xE0\xBE\xAB\xE0\xBE\xB7";
-      break;
-    case 0xB9 :
-      return "\xE0\xBE\x90\xE0\xBE\xB5";
-      break;
-    }
-    break;
-  }
-  break;
-case 0xE1 :
-  switch (str[1]) {
-  case 0x83 :
-    if (str[2] == 0xBC) {
-      return "\xE1\x83\x9C";
-    }
-    break;
-  case 0xB4 :
-    switch (str[2]) {
-    case 0xAC :
-      return "\x61";
-      break;
-    case 0xAD :
-      return "\xC3\x86";
-      break;
-    case 0xAE :
-      return "\x62";
-      break;
-    case 0xB0 :
-      return "\x64";
-      break;
-    case 0xB1 :
-      return "\x65";
-      break;
-    case 0xB2 :
-      return "\xC6\x8E";
-      break;
-    case 0xB3 :
-      return "\x67";
-      break;
-    case 0xB4 :
-      return "\x68";
-      break;
-    case 0xB5 :
-      return "\x69";
-      break;
-    case 0xB6 :
-      return "\x6A";
-      break;
-    case 0xB7 :
-      return "\x6B";
-      break;
-    case 0xB8 :
-      return "\x6C";
-      break;
-    case 0xB9 :
-      return "\x6D";
-      break;
-    case 0xBA :
-      return "\x6E";
-      break;
-    case 0xBC :
-      return "\x6F";
-      break;
-    case 0xBD :
-      return "\xC8\xA2";
-      break;
-    case 0xBE :
-      return "\x70";
-      break;
-    case 0xBF :
-      return "\x72";
-      break;
-    }
-    break;
-  case 0xB5 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\x74";
-      break;
-    case 0x81 :
-      return "\x75";
-      break;
-    case 0x82 :
-      return "\x77";
-      break;
-    case 0x83 :
-      return "\x61";
-      break;
-    case 0x84 :
-      return "\xC9\x90";
-      break;
-    case 0x85 :
-      return "\xC9\x91";
-      break;
-    case 0x86 :
-      return "\xE1\xB4\x82";
-      break;
-    case 0x87 :
-      return "\x62";
-      break;
-    case 0x88 :
-      return "\x64";
-      break;
-    case 0x89 :
-      return "\x65";
-      break;
-    case 0x8A :
-      return "\xC9\x99";
-      break;
-    case 0x8B :
-      return "\xC9\x9B";
-      break;
-    case 0x8C :
-      return "\xC9\x9C";
-      break;
-    case 0x8D :
-      return "\x67";
-      break;
-    case 0x8F :
-      return "\x6B";
-      break;
-    case 0x90 :
-      return "\x6D";
-      break;
-    case 0x91 :
-      return "\xC5\x8B";
-      break;
-    case 0x92 :
-      return "\x6F";
-      break;
-    case 0x93 :
-      return "\xC9\x94";
-      break;
-    case 0x94 :
-      return "\xE1\xB4\x96";
-      break;
-    case 0x95 :
-      return "\xE1\xB4\x97";
-      break;
-    case 0x96 :
-      return "\x70";
-      break;
-    case 0x97 :
-      return "\x74";
-      break;
-    case 0x98 :
-      return "\x75";
-      break;
-    case 0x99 :
-      return "\xE1\xB4\x9D";
-      break;
-    case 0x9A :
-      return "\xC9\xAF";
-      break;
-    case 0x9B :
-      return "\x76";
-      break;
-    case 0x9C :
-      return "\xE1\xB4\xA5";
-      break;
-    case 0x9D :
-      return "\xCE\xB2";
-      break;
-    case 0x9E :
-      return "\xCE\xB3";
-      break;
-    case 0x9F :
-      return "\xCE\xB4";
-      break;
-    case 0xA0 :
-      return "\xCF\x86";
-      break;
-    case 0xA1 :
-      return "\xCF\x87";
-      break;
-    case 0xA2 :
-      return "\x69";
-      break;
-    case 0xA3 :
-      return "\x72";
-      break;
-    case 0xA4 :
-      return "\x75";
-      break;
-    case 0xA5 :
-      return "\x76";
-      break;
-    case 0xA6 :
-      return "\xCE\xB2";
-      break;
-    case 0xA7 :
-      return "\xCE\xB3";
-      break;
-    case 0xA8 :
-      return "\xCF\x81";
-      break;
-    case 0xA9 :
-      return "\xCF\x86";
-      break;
-    case 0xAA :
-      return "\xCF\x87";
-      break;
-    case 0xB8 :
-      return "\xD0\xBD";
-      break;
-    }
-    break;
-  case 0xB6 :
-    switch (str[2]) {
-    case 0x9B :
-      return "\xC9\x92";
-      break;
-    case 0x9C :
-      return "\x63";
-      break;
-    case 0x9D :
-      return "\xC9\x95";
-      break;
-    case 0x9E :
-      return "\xC3\xB0";
-      break;
-    case 0x9F :
-      return "\xC9\x9C";
-      break;
-    case 0xA0 :
-      return "\x66";
-      break;
-    case 0xA1 :
-      return "\xC9\x9F";
-      break;
-    case 0xA2 :
-      return "\xC9\xA1";
-      break;
-    case 0xA3 :
-      return "\xC9\xA5";
-      break;
-    case 0xA4 :
-      return "\xC9\xA8";
-      break;
-    case 0xA5 :
-      return "\xC9\xA9";
-      break;
-    case 0xA6 :
-      return "\xC9\xAA";
-      break;
-    case 0xA7 :
-      return "\xE1\xB5\xBB";
-      break;
-    case 0xA8 :
-      return "\xCA\x9D";
-      break;
-    case 0xA9 :
-      return "\xC9\xAD";
-      break;
-    case 0xAA :
-      return "\xE1\xB6\x85";
-      break;
-    case 0xAB :
-      return "\xCA\x9F";
-      break;
-    case 0xAC :
-      return "\xC9\xB1";
-      break;
-    case 0xAD :
-      return "\xC9\xB0";
-      break;
-    case 0xAE :
-      return "\xC9\xB2";
-      break;
-    case 0xAF :
-      return "\xC9\xB3";
-      break;
-    case 0xB0 :
-      return "\xC9\xB4";
-      break;
-    case 0xB1 :
-      return "\xC9\xB5";
-      break;
-    case 0xB2 :
-      return "\xC9\xB8";
-      break;
-    case 0xB3 :
-      return "\xCA\x82";
-      break;
-    case 0xB4 :
-      return "\xCA\x83";
-      break;
-    case 0xB5 :
-      return "\xC6\xAB";
-      break;
-    case 0xB6 :
-      return "\xCA\x89";
-      break;
-    case 0xB7 :
-      return "\xCA\x8A";
-      break;
-    case 0xB8 :
-      return "\xE1\xB4\x9C";
-      break;
-    case 0xB9 :
-      return "\xCA\x8B";
-      break;
-    case 0xBA :
-      return "\xCA\x8C";
-      break;
-    case 0xBB :
-      return "\x7A";
-      break;
-    case 0xBC :
-      return "\xCA\x90";
-      break;
-    case 0xBD :
-      return "\xCA\x91";
-      break;
-    case 0xBE :
-      return "\xCA\x92";
-      break;
-    case 0xBF :
-      return "\xCE\xB8";
-      break;
-    }
-    break;
-  case 0xB8 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE1\xB8\x81";
-      break;
-    case 0x82 :
-      return "\xE1\xB8\x83";
-      break;
-    case 0x84 :
-      return "\xE1\xB8\x85";
-      break;
-    case 0x86 :
-      return "\xE1\xB8\x87";
-      break;
-    case 0x88 :
-      return "\xE1\xB8\x89";
-      break;
-    case 0x8A :
-      return "\xE1\xB8\x8B";
-      break;
-    case 0x8C :
-      return "\xE1\xB8\x8D";
-      break;
-    case 0x8E :
-      return "\xE1\xB8\x8F";
-      break;
-    case 0x90 :
-      return "\xE1\xB8\x91";
-      break;
-    case 0x92 :
-      return "\xE1\xB8\x93";
-      break;
-    case 0x94 :
-      return "\xE1\xB8\x95";
-      break;
-    case 0x96 :
-      return "\xE1\xB8\x97";
-      break;
-    case 0x98 :
-      return "\xE1\xB8\x99";
-      break;
-    case 0x9A :
-      return "\xE1\xB8\x9B";
-      break;
-    case 0x9C :
-      return "\xE1\xB8\x9D";
-      break;
-    case 0x9E :
-      return "\xE1\xB8\x9F";
-      break;
-    case 0xA0 :
-      return "\xE1\xB8\xA1";
-      break;
-    case 0xA2 :
-      return "\xE1\xB8\xA3";
-      break;
-    case 0xA4 :
-      return "\xE1\xB8\xA5";
-      break;
-    case 0xA6 :
-      return "\xE1\xB8\xA7";
-      break;
-    case 0xA8 :
-      return "\xE1\xB8\xA9";
-      break;
-    case 0xAA :
-      return "\xE1\xB8\xAB";
-      break;
-    case 0xAC :
-      return "\xE1\xB8\xAD";
-      break;
-    case 0xAE :
-      return "\xE1\xB8\xAF";
-      break;
-    case 0xB0 :
-      return "\xE1\xB8\xB1";
-      break;
-    case 0xB2 :
-      return "\xE1\xB8\xB3";
-      break;
-    case 0xB4 :
-      return "\xE1\xB8\xB5";
-      break;
-    case 0xB6 :
-      return "\xE1\xB8\xB7";
-      break;
-    case 0xB8 :
-      return "\xE1\xB8\xB9";
-      break;
-    case 0xBA :
-      return "\xE1\xB8\xBB";
-      break;
-    case 0xBC :
-      return "\xE1\xB8\xBD";
-      break;
-    case 0xBE :
-      return "\xE1\xB8\xBF";
-      break;
-    }
-    break;
-  case 0xB9 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE1\xB9\x81";
-      break;
-    case 0x82 :
-      return "\xE1\xB9\x83";
-      break;
-    case 0x84 :
-      return "\xE1\xB9\x85";
-      break;
-    case 0x86 :
-      return "\xE1\xB9\x87";
-      break;
-    case 0x88 :
-      return "\xE1\xB9\x89";
-      break;
-    case 0x8A :
-      return "\xE1\xB9\x8B";
-      break;
-    case 0x8C :
-      return "\xE1\xB9\x8D";
-      break;
-    case 0x8E :
-      return "\xE1\xB9\x8F";
-      break;
-    case 0x90 :
-      return "\xE1\xB9\x91";
-      break;
-    case 0x92 :
-      return "\xE1\xB9\x93";
-      break;
-    case 0x94 :
-      return "\xE1\xB9\x95";
-      break;
-    case 0x96 :
-      return "\xE1\xB9\x97";
-      break;
-    case 0x98 :
-      return "\xE1\xB9\x99";
-      break;
-    case 0x9A :
-      return "\xE1\xB9\x9B";
-      break;
-    case 0x9C :
-      return "\xE1\xB9\x9D";
-      break;
-    case 0x9E :
-      return "\xE1\xB9\x9F";
-      break;
-    case 0xA0 :
-      return "\xE1\xB9\xA1";
-      break;
-    case 0xA2 :
-      return "\xE1\xB9\xA3";
-      break;
-    case 0xA4 :
-      return "\xE1\xB9\xA5";
-      break;
-    case 0xA6 :
-      return "\xE1\xB9\xA7";
-      break;
-    case 0xA8 :
-      return "\xE1\xB9\xA9";
-      break;
-    case 0xAA :
-      return "\xE1\xB9\xAB";
-      break;
-    case 0xAC :
-      return "\xE1\xB9\xAD";
-      break;
-    case 0xAE :
-      return "\xE1\xB9\xAF";
-      break;
-    case 0xB0 :
-      return "\xE1\xB9\xB1";
-      break;
-    case 0xB2 :
-      return "\xE1\xB9\xB3";
-      break;
-    case 0xB4 :
-      return "\xE1\xB9\xB5";
-      break;
-    case 0xB6 :
-      return "\xE1\xB9\xB7";
-      break;
-    case 0xB8 :
-      return "\xE1\xB9\xB9";
-      break;
-    case 0xBA :
-      return "\xE1\xB9\xBB";
-      break;
-    case 0xBC :
-      return "\xE1\xB9\xBD";
-      break;
-    case 0xBE :
-      return "\xE1\xB9\xBF";
-      break;
-    }
-    break;
-  case 0xBA :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE1\xBA\x81";
-      break;
-    case 0x82 :
-      return "\xE1\xBA\x83";
-      break;
-    case 0x84 :
-      return "\xE1\xBA\x85";
-      break;
-    case 0x86 :
-      return "\xE1\xBA\x87";
-      break;
-    case 0x88 :
-      return "\xE1\xBA\x89";
-      break;
-    case 0x8A :
-      return "\xE1\xBA\x8B";
-      break;
-    case 0x8C :
-      return "\xE1\xBA\x8D";
-      break;
-    case 0x8E :
-      return "\xE1\xBA\x8F";
-      break;
-    case 0x90 :
-      return "\xE1\xBA\x91";
-      break;
-    case 0x92 :
-      return "\xE1\xBA\x93";
-      break;
-    case 0x94 :
-      return "\xE1\xBA\x95";
-      break;
-    case 0x9A :
-      return "\x61\xCA\xBE";
-      break;
-    case 0x9B :
-      return "\xE1\xB9\xA1";
-      break;
-    case 0xA0 :
-      return "\xE1\xBA\xA1";
-      break;
-    case 0xA2 :
-      return "\xE1\xBA\xA3";
-      break;
-    case 0xA4 :
-      return "\xE1\xBA\xA5";
-      break;
-    case 0xA6 :
-      return "\xE1\xBA\xA7";
-      break;
-    case 0xA8 :
-      return "\xE1\xBA\xA9";
-      break;
-    case 0xAA :
-      return "\xE1\xBA\xAB";
-      break;
-    case 0xAC :
-      return "\xE1\xBA\xAD";
-      break;
-    case 0xAE :
-      return "\xE1\xBA\xAF";
-      break;
-    case 0xB0 :
-      return "\xE1\xBA\xB1";
-      break;
-    case 0xB2 :
-      return "\xE1\xBA\xB3";
-      break;
-    case 0xB4 :
-      return "\xE1\xBA\xB5";
-      break;
-    case 0xB6 :
-      return "\xE1\xBA\xB7";
-      break;
-    case 0xB8 :
-      return "\xE1\xBA\xB9";
-      break;
-    case 0xBA :
-      return "\xE1\xBA\xBB";
-      break;
-    case 0xBC :
-      return "\xE1\xBA\xBD";
-      break;
-    case 0xBE :
-      return "\xE1\xBA\xBF";
-      break;
-    }
-    break;
-  case 0xBB :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE1\xBB\x81";
-      break;
-    case 0x82 :
-      return "\xE1\xBB\x83";
-      break;
-    case 0x84 :
-      return "\xE1\xBB\x85";
-      break;
-    case 0x86 :
-      return "\xE1\xBB\x87";
-      break;
-    case 0x88 :
-      return "\xE1\xBB\x89";
-      break;
-    case 0x8A :
-      return "\xE1\xBB\x8B";
-      break;
-    case 0x8C :
-      return "\xE1\xBB\x8D";
-      break;
-    case 0x8E :
-      return "\xE1\xBB\x8F";
-      break;
-    case 0x90 :
-      return "\xE1\xBB\x91";
-      break;
-    case 0x92 :
-      return "\xE1\xBB\x93";
-      break;
-    case 0x94 :
-      return "\xE1\xBB\x95";
-      break;
-    case 0x96 :
-      return "\xE1\xBB\x97";
-      break;
-    case 0x98 :
-      return "\xE1\xBB\x99";
-      break;
-    case 0x9A :
-      return "\xE1\xBB\x9B";
-      break;
-    case 0x9C :
-      return "\xE1\xBB\x9D";
-      break;
-    case 0x9E :
-      return "\xE1\xBB\x9F";
-      break;
-    case 0xA0 :
-      return "\xE1\xBB\xA1";
-      break;
-    case 0xA2 :
-      return "\xE1\xBB\xA3";
-      break;
-    case 0xA4 :
-      return "\xE1\xBB\xA5";
-      break;
-    case 0xA6 :
-      return "\xE1\xBB\xA7";
-      break;
-    case 0xA8 :
-      return "\xE1\xBB\xA9";
-      break;
-    case 0xAA :
-      return "\xE1\xBB\xAB";
-      break;
-    case 0xAC :
-      return "\xE1\xBB\xAD";
-      break;
-    case 0xAE :
-      return "\xE1\xBB\xAF";
-      break;
-    case 0xB0 :
-      return "\xE1\xBB\xB1";
-      break;
-    case 0xB2 :
-      return "\xE1\xBB\xB3";
-      break;
-    case 0xB4 :
-      return "\xE1\xBB\xB5";
-      break;
-    case 0xB6 :
-      return "\xE1\xBB\xB7";
-      break;
-    case 0xB8 :
-      return "\xE1\xBB\xB9";
-      break;
-    }
-    break;
-  case 0xBD :
-    switch (str[2]) {
-    case 0xB1 :
-      return "\xCE\xAC";
-      break;
-    case 0xB3 :
-      return "\xCE\xAD";
-      break;
-    case 0xB5 :
-      return "\xCE\xAE";
-      break;
-    case 0xB7 :
-      return "\xCE\xAF";
-      break;
-    case 0xB9 :
-      return "\xCF\x8C";
-      break;
-    case 0xBB :
-      return "\xCF\x8D";
-      break;
-    case 0xBD :
-      return "\xCF\x8E";
-      break;
-    }
-    break;
-  case 0xBE :
-    switch (str[2]) {
-    case 0xBB :
-      return "\xCE\x86";
-      break;
-    case 0xBD :
-      return "\xCC\x93";
-      break;
-    case 0xBE :
-      return "\xCE\xB9";
-      break;
-    case 0xBF :
-      return "\xCC\x93";
-      break;
-    }
-    break;
-  case 0xBF :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xCD\x82";
-      break;
-    case 0x81 :
-      return "\xCC\x88\xCD\x82";
-      break;
-    case 0x89 :
-      return "\xCE\x88";
-      break;
-    case 0x8B :
-      return "\xCE\x89";
-      break;
-    case 0x8D :
-      return "\xCC\x93\xCC\x80";
-      break;
-    case 0x8E :
-      return "\xCC\x93\xCC\x81";
-      break;
-    case 0x8F :
-      return "\xCC\x93\xCD\x82";
-      break;
-    case 0x93 :
-      return "\xCE\x90";
-      break;
-    case 0x9B :
-      return "\xCE\x8A";
-      break;
-    case 0x9D :
-      return "\xCC\x94\xCC\x80";
-      break;
-    case 0x9E :
-      return "\xCC\x94\xCC\x81";
-      break;
-    case 0x9F :
-      return "\xCC\x94\xCD\x82";
-      break;
-    case 0xA3 :
-      return "\xCE\xB0";
-      break;
-    case 0xAB :
-      return "\xCE\x8E";
-      break;
-    case 0xAD :
-      return "\xCC\x88\xCC\x80";
-      break;
-    case 0xAE :
-      return "\xCC\x88\xCC\x81";
-      break;
-    case 0xAF :
-      return "\x60";
-      break;
-    case 0xB9 :
-      return "\xCE\x8C";
-      break;
-    case 0xBB :
-      return "\xCE\x8F";
-      break;
-    case 0xBD :
-      return "\xCC\x81";
-      break;
-    case 0xBE :
-      return "\xCC\x94";
-      break;
-    }
-    break;
-  }
-  break;
-case 0xE2 :
-  switch (str[1]) {
-  case 0x80 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\x20";
-      break;
-    case 0x81 :
-      return "\x20";
-      break;
-    case 0x82 :
-      return "\x20";
-      break;
-    case 0x83 :
-      return "\x20";
-      break;
-    case 0x84 :
-      return "\x20";
-      break;
-    case 0x85 :
-      return "\x20";
-      break;
-    case 0x86 :
-      return "\x20";
-      break;
-    case 0x87 :
-      return "\x20";
-      break;
-    case 0x88 :
-      return "\x20";
-      break;
-    case 0x89 :
-      return "\x20";
-      break;
-    case 0x8A :
-      return "\x20";
-      break;
-    case 0x91 :
-      return "\xE2\x80\x90";
-      break;
-    case 0x97 :
-      return "\xCC\xB3";
-      break;
-    case 0xA4 :
-      return "\x2E";
-      break;
-    case 0xA5 :
-      return "\x2E\x2E";
-      break;
-    case 0xA6 :
-      return "\x2E\x2E\x2E";
-      break;
-    case 0xAF :
-      return "\x20";
-      break;
-    case 0xB3 :
-      return "\xE2\x80\xB2\xE2\x80\xB2";
-      break;
-    case 0xB4 :
-      return "\xE2\x80\xB2\xE2\x80\xB2\xE2\x80\xB2";
-      break;
-    case 0xB6 :
-      return "\xE2\x80\xB5\xE2\x80\xB5";
-      break;
-    case 0xB7 :
-      return "\xE2\x80\xB5\xE2\x80\xB5\xE2\x80\xB5";
-      break;
-    case 0xBC :
-      return "\x21\x21";
-      break;
-    case 0xBE :
-      return "\xCC\x85";
-      break;
-    }
-    break;
-  case 0x81 :
-    switch (str[2]) {
-    case 0x87 :
-      return "\x3F\x3F";
-      break;
-    case 0x88 :
-      return "\x3F\x21";
-      break;
-    case 0x89 :
-      return "\x21\x3F";
-      break;
-    case 0x97 :
-      return "\xE2\x80\xB2\xE2\x80\xB2\xE2\x80\xB2\xE2\x80\xB2";
-      break;
-    case 0x9F :
-      return "\x20";
-      break;
-    case 0xB0 :
-      return "\x30";
-      break;
-    case 0xB1 :
-      return "\x69";
-      break;
-    case 0xB4 :
-      return "\x34";
-      break;
-    case 0xB5 :
-      return "\x35";
-      break;
-    case 0xB6 :
-      return "\x36";
-      break;
-    case 0xB7 :
-      return "\x37";
-      break;
-    case 0xB8 :
-      return "\x38";
-      break;
-    case 0xB9 :
-      return "\x39";
-      break;
-    case 0xBA :
-      return "\x2B";
-      break;
-    case 0xBB :
-      return "\xE2\x88\x92";
-      break;
-    case 0xBC :
-      return "\x3D";
-      break;
-    case 0xBD :
-      return "\x28";
-      break;
-    case 0xBE :
-      return "\x29";
-      break;
-    case 0xBF :
-      return "\x6E";
-      break;
-    }
-    break;
-  case 0x82 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\x30";
-      break;
-    case 0x81 :
-      return "\x31";
-      break;
-    case 0x82 :
-      return "\x32";
-      break;
-    case 0x83 :
-      return "\x33";
-      break;
-    case 0x84 :
-      return "\x34";
-      break;
-    case 0x85 :
-      return "\x35";
-      break;
-    case 0x86 :
-      return "\x36";
-      break;
-    case 0x87 :
-      return "\x37";
-      break;
-    case 0x88 :
-      return "\x38";
-      break;
-    case 0x89 :
-      return "\x39";
-      break;
-    case 0x8A :
-      return "\x2B";
-      break;
-    case 0x8B :
-      return "\xE2\x88\x92";
-      break;
-    case 0x8C :
-      return "\x3D";
-      break;
-    case 0x8D :
-      return "\x28";
-      break;
-    case 0x8E :
-      return "\x29";
-      break;
-    case 0x90 :
-      return "\x61";
-      break;
-    case 0x91 :
-      return "\x65";
-      break;
-    case 0x92 :
-      return "\x6F";
-      break;
-    case 0x93 :
-      return "\x78";
-      break;
-    case 0x94 :
-      return "\xC9\x99";
-      break;
-    case 0xA8 :
-      return "\x72\x73";
-      break;
-    }
-    break;
-  case 0x84 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\x61\x2F\x63";
-      break;
-    case 0x81 :
-      return "\x61\x2F\x73";
-      break;
-    case 0x82 :
-      return "\x63";
-      break;
-    case 0x83 :
-      return "\xC2\xB0\x63";
-      break;
-    case 0x85 :
-      return "\x63\x2F\x6F";
-      break;
-    case 0x86 :
-      return "\x63\x2F\x75";
-      break;
-    case 0x87 :
-      return "\xC6\x90";
-      break;
-    case 0x89 :
-      return "\xC2\xB0\x66";
-      break;
-    case 0x8A :
-      return "\x67";
-      break;
-    case 0x8B :
-      return "\x68";
-      break;
-    case 0x8C :
-      return "\x68";
-      break;
-    case 0x8D :
-      return "\x68";
-      break;
-    case 0x8E :
-      return "\x68";
-      break;
-    case 0x8F :
-      return "\xC4\xA7";
-      break;
-    case 0x90 :
-      return "\x69";
-      break;
-    case 0x91 :
-      return "\x69";
-      break;
-    case 0x92 :
-      return "\x6C";
-      break;
-    case 0x93 :
-      return "\x6C";
-      break;
-    case 0x95 :
-      return "\x6E";
-      break;
-    case 0x96 :
-      return "\x6E\x6F";
-      break;
-    case 0x99 :
-      return "\x70";
-      break;
-    case 0x9A :
-      return "\x71";
-      break;
-    case 0x9B :
-      return "\x72";
-      break;
-    case 0x9C :
-      return "\x72";
-      break;
-    case 0x9D :
-      return "\x72";
-      break;
-    case 0xA0 :
-      return "\x73\x6D";
-      break;
-    case 0xA1 :
-      return "\x74\x65\x6C";
-      break;
-    case 0xA2 :
-      return "\x74\x6D";
-      break;
-    case 0xA4 :
-      return "\x7A";
-      break;
-    case 0xA6 :
-      return "\xCE\xA9";
-      break;
-    case 0xA8 :
-      return "\x7A";
-      break;
-    case 0xAA :
-      return "\x6B";
-      break;
-    case 0xAB :
-      return "\xC3\xA5";
-      break;
-    case 0xAC :
-      return "\x62";
-      break;
-    case 0xAD :
-      return "\x63";
-      break;
-    case 0xAF :
-      return "\x65";
-      break;
-    case 0xB0 :
-      return "\x65";
-      break;
-    case 0xB1 :
-      return "\x66";
-      break;
-    case 0xB3 :
-      return "\x6D";
-      break;
-    case 0xB4 :
-      return "\x6F";
-      break;
-    case 0xB5 :
-      return "\xD7\x90";
-      break;
-    case 0xB6 :
-      return "\xD7\x91";
-      break;
-    case 0xB7 :
-      return "\xD7\x92";
-      break;
-    case 0xB8 :
-      return "\xD7\x93";
-      break;
-    case 0xB9 :
-      return "\x69";
-      break;
-    case 0xBB :
-      return "\x66\x61\x78";
-      break;
-    case 0xBC :
-      return "\xCF\x80";
-      break;
-    case 0xBD :
-      return "\xCE\xB3";
-      break;
-    case 0xBE :
-      return "\xCE\x93";
-      break;
-    case 0xBF :
-      return "\xCE\xA0";
-      break;
-    }
-    break;
-  case 0x85 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE2\x88\x91";
-      break;
-    case 0x85 :
-      return "\x64";
-      break;
-    case 0x86 :
-      return "\x64";
-      break;
-    case 0x87 :
-      return "\x65";
-      break;
-    case 0x88 :
-      return "\x69";
-      break;
-    case 0x89 :
-      return "\x6A";
-      break;
-    case 0x93 :
-      return "\x31\xE2\x81\x84\x33";
-      break;
-    case 0x94 :
-      return "\x32\xE2\x81\x84\x33";
-      break;
-    case 0x95 :
-      return "\x31\xE2\x81\x84\x35";
-      break;
-    case 0x96 :
-      return "\x32\xE2\x81\x84\x35";
-      break;
-    case 0x97 :
-      return "\x33\xE2\x81\x84\x35";
-      break;
-    case 0x98 :
-      return "\x34\xE2\x81\x84\x35";
-      break;
-    case 0x99 :
-      return "\x31\xE2\x81\x84\x36";
-      break;
-    case 0x9A :
-      return "\x35\xE2\x81\x84\x36";
-      break;
-    case 0x9B :
-      return "\x31\xE2\x81\x84\x38";
-      break;
-    case 0x9C :
-      return "\x33\xE2\x81\x84\x38";
-      break;
-    case 0x9D :
-      return "\x35\xE2\x81\x84\x38";
-      break;
-    case 0x9E :
-      return "\x37\xE2\x81\x84\x38";
-      break;
-    case 0x9F :
-      return "\x31\xE2\x81\x84";
-      break;
-    case 0xA0 :
-      return "\x69";
-      break;
-    case 0xA1 :
-      return "\x69\x69";
-      break;
-    case 0xA2 :
-      return "\x69\x69\x69";
-      break;
-    case 0xA3 :
-      return "\x69\x76";
-      break;
-    case 0xA4 :
-      return "\x76";
-      break;
-    case 0xA5 :
-      return "\x76\x69";
-      break;
-    case 0xA6 :
-      return "\x76\x69\x69";
-      break;
-    case 0xA7 :
-      return "\x76\x69\x69\x69";
-      break;
-    case 0xA8 :
-      return "\x69\x78";
-      break;
-    case 0xA9 :
-      return "\x78";
-      break;
-    case 0xAA :
-      return "\x78\x69";
-      break;
-    case 0xAB :
-      return "\x78\x69\x69";
-      break;
-    case 0xAC :
-      return "\x6C";
-      break;
-    case 0xAD :
-      return "\x63";
-      break;
-    case 0xAE :
-      return "\x64";
-      break;
-    case 0xAF :
-      return "\x6D";
-      break;
-    case 0xB0 :
-      return "\x69";
-      break;
-    case 0xB1 :
-      return "\x69\x69";
-      break;
-    case 0xB2 :
-      return "\x69\x69\x69";
-      break;
-    case 0xB3 :
-      return "\x69\x76";
-      break;
-    case 0xB4 :
-      return "\x76";
-      break;
-    case 0xB5 :
-      return "\x76\x69";
-      break;
-    case 0xB6 :
-      return "\x76\x69\x69";
-      break;
-    case 0xB7 :
-      return "\x76\x69\x69\x69";
-      break;
-    case 0xB8 :
-      return "\x69\x78";
-      break;
-    case 0xB9 :
-      return "\x78";
-      break;
-    case 0xBA :
-      return "\x78\x69";
-      break;
-    case 0xBB :
-      return "\x78\x69\x69";
-      break;
-    case 0xBC :
-      return "\x6C";
-      break;
-    case 0xBD :
-      return "\x63";
-      break;
-    case 0xBE :
-      return "\x64";
-      break;
-    case 0xBF :
-      return "\x6D";
-      break;
-    }
-    break;
-  case 0x88 :
-    switch (str[2]) {
-    case 0xAC :
-      return "\xE2\x88\xAB\xE2\x88\xAB";
-      break;
-    case 0xAD :
-      return "\xE2\x88\xAB\xE2\x88\xAB\xE2\x88\xAB";
-      break;
-    case 0xAF :
-      return "\xE2\x88\xAE\xE2\x88\xAE";
-      break;
-    case 0xB0 :
-      return "\xE2\x88\xAE\xE2\x88\xAE\xE2\x88\xAE";
-      break;
-    }
-    break;
-  case 0x8C :
-    switch (str[2]) {
-    case 0xA9 :
-      return "\xE3\x80\x88";
-      break;
-    case 0xAA :
-      return "\xE3\x80\x89";
-      break;
-    }
-    break;
-  case 0x91 :
-    switch (str[2]) {
-    case 0xA0 :
-      return "\x31";
-      break;
-    case 0xA1 :
-      return "\x32";
-      break;
-    case 0xA2 :
-      return "\x33";
-      break;
-    case 0xA3 :
-      return "\x34";
-      break;
-    case 0xA4 :
-      return "\x35";
-      break;
-    case 0xA5 :
-      return "\x36";
-      break;
-    case 0xA6 :
-      return "\x37";
-      break;
-    case 0xA7 :
-      return "\x38";
-      break;
-    case 0xA8 :
-      return "\x39";
-      break;
-    case 0xA9 :
-      return "\x31\x30";
-      break;
-    case 0xAA :
-      return "\x31\x31";
-      break;
-    case 0xAB :
-      return "\x31\x32";
-      break;
-    case 0xAC :
-      return "\x31\x33";
-      break;
-    case 0xAD :
-      return "\x31\x34";
-      break;
-    case 0xAE :
-      return "\x31\x35";
-      break;
-    case 0xAF :
-      return "\x31\x36";
-      break;
-    case 0xB0 :
-      return "\x31\x37";
-      break;
-    case 0xB1 :
-      return "\x31\x38";
-      break;
-    case 0xB2 :
-      return "\x31\x39";
-      break;
-    case 0xB3 :
-      return "\x32\x30";
-      break;
-    case 0xB4 :
-      return "\x28\x31\x29";
-      break;
-    case 0xB5 :
-      return "\x28\x32\x29";
-      break;
-    case 0xB6 :
-      return "\x28\x33\x29";
-      break;
-    case 0xB7 :
-      return "\x28\x34\x29";
-      break;
-    case 0xB8 :
-      return "\x28\x35\x29";
-      break;
-    case 0xB9 :
-      return "\x28\x36\x29";
-      break;
-    case 0xBA :
-      return "\x28\x37\x29";
-      break;
-    case 0xBB :
-      return "\x28\x38\x29";
-      break;
-    case 0xBC :
-      return "\x28\x39\x29";
-      break;
-    case 0xBD :
-      return "\x28\x31\x30\x29";
-      break;
-    case 0xBE :
-      return "\x28\x31\x31\x29";
-      break;
-    case 0xBF :
-      return "\x28\x31\x32\x29";
-      break;
-    }
-    break;
-  case 0x92 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\x28\x31\x33\x29";
-      break;
-    case 0x81 :
-      return "\x28\x31\x34\x29";
-      break;
-    case 0x82 :
-      return "\x28\x31\x35\x29";
-      break;
-    case 0x83 :
-      return "\x28\x31\x36\x29";
-      break;
-    case 0x84 :
-      return "\x28\x31\x37\x29";
-      break;
-    case 0x85 :
-      return "\x28\x31\x38\x29";
-      break;
-    case 0x86 :
-      return "\x28\x31\x39\x29";
-      break;
-    case 0x87 :
-      return "\x28\x32\x30\x29";
-      break;
-    case 0x88 :
-      return "\x31\x2E";
-      break;
-    case 0x89 :
-      return "\x32\x2E";
-      break;
-    case 0x8A :
-      return "\x33\x2E";
-      break;
-    case 0x8B :
-      return "\x34\x2E";
-      break;
-    case 0x8C :
-      return "\x35\x2E";
-      break;
-    case 0x8D :
-      return "\x36\x2E";
-      break;
-    case 0x8E :
-      return "\x37\x2E";
-      break;
-    case 0x8F :
-      return "\x38\x2E";
-      break;
-    case 0x90 :
-      return "\x39\x2E";
-      break;
-    case 0x91 :
-      return "\x31\x30\x2E";
-      break;
-    case 0x92 :
-      return "\x31\x31\x2E";
-      break;
-    case 0x93 :
-      return "\x31\x32\x2E";
-      break;
-    case 0x94 :
-      return "\x31\x33\x2E";
-      break;
-    case 0x95 :
-      return "\x31\x34\x2E";
-      break;
-    case 0x96 :
-      return "\x31\x35\x2E";
-      break;
-    case 0x97 :
-      return "\x31\x36\x2E";
-      break;
-    case 0x98 :
-      return "\x31\x37\x2E";
-      break;
-    case 0x99 :
-      return "\x31\x38\x2E";
-      break;
-    case 0x9A :
-      return "\x31\x39\x2E";
-      break;
-    case 0x9B :
-      return "\x32\x30\x2E";
-      break;
-    case 0x9C :
-      return "\x28\x61\x29";
-      break;
-    case 0x9D :
-      return "\x28\x62\x29";
-      break;
-    case 0x9E :
-      return "\x28\x63\x29";
-      break;
-    case 0x9F :
-      return "\x28\x64\x29";
-      break;
-    case 0xA0 :
-      return "\x28\x65\x29";
-      break;
-    case 0xA1 :
-      return "\x28\x66\x29";
-      break;
-    case 0xA2 :
-      return "\x28\x67\x29";
-      break;
-    case 0xA3 :
-      return "\x28\x68\x29";
-      break;
-    case 0xA4 :
-      return "\x28\x69\x29";
-      break;
-    case 0xA5 :
-      return "\x28\x6A\x29";
-      break;
-    case 0xA6 :
-      return "\x28\x6B\x29";
-      break;
-    case 0xA7 :
-      return "\x28\x6C\x29";
-      break;
-    case 0xA8 :
-      return "\x28\x6D\x29";
-      break;
-    case 0xA9 :
-      return "\x28\x6E\x29";
-      break;
-    case 0xAA :
-      return "\x28\x6F\x29";
-      break;
-    case 0xAB :
-      return "\x28\x70\x29";
-      break;
-    case 0xAC :
-      return "\x28\x71\x29";
-      break;
-    case 0xAD :
-      return "\x28\x72\x29";
-      break;
-    case 0xAE :
-      return "\x28\x73\x29";
-      break;
-    case 0xAF :
-      return "\x28\x74\x29";
-      break;
-    case 0xB0 :
-      return "\x28\x75\x29";
-      break;
-    case 0xB1 :
-      return "\x28\x76\x29";
-      break;
-    case 0xB2 :
-      return "\x28\x77\x29";
-      break;
-    case 0xB3 :
-      return "\x28\x78\x29";
-      break;
-    case 0xB4 :
-      return "\x28\x79\x29";
-      break;
-    case 0xB5 :
-      return "\x28\x7A\x29";
-      break;
-    case 0xB6 :
-      return "\x61";
-      break;
-    case 0xB7 :
-      return "\x62";
-      break;
-    case 0xB8 :
-      return "\x63";
-      break;
-    case 0xB9 :
-      return "\x64";
-      break;
-    case 0xBA :
-      return "\x65";
-      break;
-    case 0xBB :
-      return "\x66";
-      break;
-    case 0xBC :
-      return "\x67";
-      break;
-    case 0xBD :
-      return "\x68";
-      break;
-    case 0xBE :
-      return "\x69";
-      break;
-    case 0xBF :
-      return "\x6A";
-      break;
-    }
-    break;
-  case 0x93 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\x6B";
-      break;
-    case 0x81 :
-      return "\x6C";
-      break;
-    case 0x82 :
-      return "\x6D";
-      break;
-    case 0x83 :
-      return "\x6E";
-      break;
-    case 0x84 :
-      return "\x6F";
-      break;
-    case 0x85 :
-      return "\x70";
-      break;
-    case 0x86 :
-      return "\x71";
-      break;
-    case 0x87 :
-      return "\x72";
-      break;
-    case 0x88 :
-      return "\x73";
-      break;
-    case 0x89 :
-      return "\x74";
-      break;
-    case 0x8A :
-      return "\x75";
-      break;
-    case 0x8B :
-      return "\x76";
-      break;
-    case 0x8C :
-      return "\x77";
-      break;
-    case 0x8D :
-      return "\x78";
-      break;
-    case 0x8E :
-      return "\x79";
-      break;
-    case 0x8F :
-      return "\x7A";
-      break;
-    case 0x90 :
-      return "\x61";
-      break;
-    case 0x91 :
-      return "\x62";
-      break;
-    case 0x92 :
-      return "\x63";
-      break;
-    case 0x93 :
-      return "\x64";
-      break;
-    case 0x94 :
-      return "\x65";
-      break;
-    case 0x95 :
-      return "\x66";
-      break;
-    case 0x96 :
-      return "\x67";
-      break;
-    case 0x97 :
-      return "\x68";
-      break;
-    case 0x98 :
-      return "\x69";
-      break;
-    case 0x99 :
-      return "\x6A";
-      break;
-    case 0x9A :
-      return "\x6B";
-      break;
-    case 0x9B :
-      return "\x6C";
-      break;
-    case 0x9C :
-      return "\x6D";
-      break;
-    case 0x9D :
-      return "\x6E";
-      break;
-    case 0x9E :
-      return "\x6F";
-      break;
-    case 0x9F :
-      return "\x70";
-      break;
-    case 0xA0 :
-      return "\x71";
-      break;
-    case 0xA1 :
-      return "\x72";
-      break;
-    case 0xA2 :
-      return "\x73";
-      break;
-    case 0xA3 :
-      return "\x74";
-      break;
-    case 0xA4 :
-      return "\x75";
-      break;
-    case 0xA5 :
-      return "\x76";
-      break;
-    case 0xA6 :
-      return "\x77";
-      break;
-    case 0xA7 :
-      return "\x78";
-      break;
-    case 0xA8 :
-      return "\x79";
-      break;
-    case 0xA9 :
-      return "\x7A";
-      break;
-    case 0xAA :
-      return "\x30";
-      break;
-    }
-    break;
-  case 0xA8 :
-    if (str[2] == 0x8C) {
-      return "\xE2\x88\xAB\xE2\x88\xAB\xE2\x88\xAB\xE2\x88\xAB";
-    }
-    break;
-  case 0xA9 :
-    switch (str[2]) {
-    case 0xB4 :
-      return "\x3A\x3A\x3D";
-      break;
-    case 0xB5 :
-      return "\x3D\x3D";
-      break;
-    case 0xB6 :
-      return "\x3D\x3D\x3D";
-      break;
-    }
-    break;
-  case 0xAB :
-    if (str[2] == 0x9C) {
-      return "\xE2\xAB\x9D\xCC\xB8";
-    }
-    break;
-  case 0xB5 :
-    if (str[2] == 0xAF) {
-      return "\xE2\xB5\xA1";
-    }
-    break;
-  case 0xBA :
-    if (str[2] == 0x9F) {
-      return "\xE6\xAF\x8D";
-    }
-    break;
-  case 0xBB :
-    if (str[2] == 0xB3) {
-      return "\xE9\xBE\x9F";
-    }
-    break;
-  case 0xBC :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE4\xB8\x80";
-      break;
-    case 0x81 :
-      return "\xE4\xB8\xA8";
-      break;
-    case 0x82 :
-      return "\xE4\xB8\xB6";
-      break;
-    case 0x83 :
-      return "\xE4\xB8\xBF";
-      break;
-    case 0x84 :
-      return "\xE4\xB9\x99";
-      break;
-    case 0x85 :
-      return "\xE4\xBA\x85";
-      break;
-    case 0x86 :
-      return "\xE4\xBA\x8C";
-      break;
-    case 0x87 :
-      return "\xE4\xBA\xA0";
-      break;
-    case 0x88 :
-      return "\xE4\xBA\xBA";
-      break;
-    case 0x89 :
-      return "\xE5\x84\xBF";
-      break;
-    case 0x8A :
-      return "\xE5\x85\xA5";
-      break;
-    case 0x8B :
-      return "\xE5\x85\xAB";
-      break;
-    case 0x8C :
-      return "\xE5\x86\x82";
-      break;
-    case 0x8D :
-      return "\xE5\x86\x96";
-      break;
-    case 0x8E :
-      return "\xE5\x86\xAB";
-      break;
-    case 0x8F :
-      return "\xE5\x87\xA0";
-      break;
-    case 0x90 :
-      return "\xE5\x87\xB5";
-      break;
-    case 0x91 :
-      return "\xE5\x88\x80";
-      break;
-    case 0x92 :
-      return "\xE5\x8A\x9B";
-      break;
-    case 0x93 :
-      return "\xE5\x8B\xB9";
-      break;
-    case 0x94 :
-      return "\xE5\x8C\x95";
-      break;
-    case 0x95 :
-      return "\xE5\x8C\x9A";
-      break;
-    case 0x96 :
-      return "\xE5\x8C\xB8";
-      break;
-    case 0x97 :
-      return "\xE5\x8D\x81";
-      break;
-    case 0x98 :
-      return "\xE5\x8D\x9C";
-      break;
-    case 0x99 :
-      return "\xE5\x8D\xA9";
-      break;
-    case 0x9A :
-      return "\xE5\x8E\x82";
-      break;
-    case 0x9B :
-      return "\xE5\x8E\xB6";
-      break;
-    case 0x9C :
-      return "\xE5\x8F\x88";
-      break;
-    case 0x9D :
-      return "\xE5\x8F\xA3";
-      break;
-    case 0x9E :
-      return "\xE5\x9B\x97";
-      break;
-    case 0x9F :
-      return "\xE5\x9C\x9F";
-      break;
-    case 0xA0 :
-      return "\xE5\xA3\xAB";
-      break;
-    case 0xA1 :
-      return "\xE5\xA4\x82";
-      break;
-    case 0xA2 :
-      return "\xE5\xA4\x8A";
-      break;
-    case 0xA3 :
-      return "\xE5\xA4\x95";
-      break;
-    case 0xA4 :
-      return "\xE5\xA4\xA7";
-      break;
-    case 0xA5 :
-      return "\xE5\xA5\xB3";
-      break;
-    case 0xA6 :
-      return "\xE5\xAD\x90";
-      break;
-    case 0xA7 :
-      return "\xE5\xAE\x80";
-      break;
-    case 0xA8 :
-      return "\xE5\xAF\xB8";
-      break;
-    case 0xA9 :
-      return "\xE5\xB0\x8F";
-      break;
-    case 0xAA :
-      return "\xE5\xB0\xA2";
-      break;
-    case 0xAB :
-      return "\xE5\xB0\xB8";
-      break;
-    case 0xAC :
-      return "\xE5\xB1\xAE";
-      break;
-    case 0xAD :
-      return "\xE5\xB1\xB1";
-      break;
-    case 0xAE :
-      return "\xE5\xB7\x9B";
-      break;
-    case 0xAF :
-      return "\xE5\xB7\xA5";
-      break;
-    case 0xB0 :
-      return "\xE5\xB7\xB1";
-      break;
-    case 0xB1 :
-      return "\xE5\xB7\xBE";
-      break;
-    case 0xB2 :
-      return "\xE5\xB9\xB2";
-      break;
-    case 0xB3 :
-      return "\xE5\xB9\xBA";
-      break;
-    case 0xB4 :
-      return "\xE5\xB9\xBF";
-      break;
-    case 0xB5 :
-      return "\xE5\xBB\xB4";
-      break;
-    case 0xB6 :
-      return "\xE5\xBB\xBE";
-      break;
-    case 0xB7 :
-      return "\xE5\xBC\x8B";
-      break;
-    case 0xB8 :
-      return "\xE5\xBC\x93";
-      break;
-    case 0xB9 :
-      return "\xE5\xBD\x90";
-      break;
-    case 0xBA :
-      return "\xE5\xBD\xA1";
-      break;
-    case 0xBB :
-      return "\xE5\xBD\xB3";
-      break;
-    case 0xBC :
-      return "\xE5\xBF\x83";
-      break;
-    case 0xBD :
-      return "\xE6\x88\x88";
-      break;
-    case 0xBE :
-      return "\xE6\x88\xB6";
-      break;
-    case 0xBF :
-      return "\xE6\x89\x8B";
-      break;
-    }
-    break;
-  case 0xBD :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE6\x94\xAF";
-      break;
-    case 0x81 :
-      return "\xE6\x94\xB4";
-      break;
-    case 0x82 :
-      return "\xE6\x96\x87";
-      break;
-    case 0x83 :
-      return "\xE6\x96\x97";
-      break;
-    case 0x84 :
-      return "\xE6\x96\xA4";
-      break;
-    case 0x85 :
-      return "\xE6\x96\xB9";
-      break;
-    case 0x86 :
-      return "\xE6\x97\xA0";
-      break;
-    case 0x87 :
-      return "\xE6\x97\xA5";
-      break;
-    case 0x88 :
-      return "\xE6\x9B\xB0";
-      break;
-    case 0x89 :
-      return "\xE6\x9C\x88";
-      break;
-    case 0x8A :
-      return "\xE6\x9C\xA8";
-      break;
-    case 0x8B :
-      return "\xE6\xAC\xA0";
-      break;
-    case 0x8C :
-      return "\xE6\xAD\xA2";
-      break;
-    case 0x8D :
-      return "\xE6\xAD\xB9";
-      break;
-    case 0x8E :
-      return "\xE6\xAE\xB3";
-      break;
-    case 0x8F :
-      return "\xE6\xAF\x8B";
-      break;
-    case 0x90 :
-      return "\xE6\xAF\x94";
-      break;
-    case 0x91 :
-      return "\xE6\xAF\x9B";
-      break;
-    case 0x92 :
-      return "\xE6\xB0\x8F";
-      break;
-    case 0x93 :
-      return "\xE6\xB0\x94";
-      break;
-    case 0x94 :
-      return "\xE6\xB0\xB4";
-      break;
-    case 0x95 :
-      return "\xE7\x81\xAB";
-      break;
-    case 0x96 :
-      return "\xE7\x88\xAA";
-      break;
-    case 0x97 :
-      return "\xE7\x88\xB6";
-      break;
-    case 0x98 :
-      return "\xE7\x88\xBB";
-      break;
-    case 0x99 :
-      return "\xE7\x88\xBF";
-      break;
-    case 0x9A :
-      return "\xE7\x89\x87";
-      break;
-    case 0x9B :
-      return "\xE7\x89\x99";
-      break;
-    case 0x9C :
-      return "\xE7\x89\x9B";
-      break;
-    case 0x9D :
-      return "\xE7\x8A\xAC";
-      break;
-    case 0x9E :
-      return "\xE7\x8E\x84";
-      break;
-    case 0x9F :
-      return "\xE7\x8E\x89";
-      break;
-    case 0xA0 :
-      return "\xE7\x93\x9C";
-      break;
-    case 0xA1 :
-      return "\xE7\x93\xA6";
-      break;
-    case 0xA2 :
-      return "\xE7\x94\x98";
-      break;
-    case 0xA3 :
-      return "\xE7\x94\x9F";
-      break;
-    case 0xA4 :
-      return "\xE7\x94\xA8";
-      break;
-    case 0xA5 :
-      return "\xE7\x94\xB0";
-      break;
-    case 0xA6 :
-      return "\xE7\x96\x8B";
-      break;
-    case 0xA7 :
-      return "\xE7\x96\x92";
-      break;
-    case 0xA8 :
-      return "\xE7\x99\xB6";
-      break;
-    case 0xA9 :
-      return "\xE7\x99\xBD";
-      break;
-    case 0xAA :
-      return "\xE7\x9A\xAE";
-      break;
-    case 0xAB :
-      return "\xE7\x9A\xBF";
-      break;
-    case 0xAC :
-      return "\xE7\x9B\xAE";
-      break;
-    case 0xAD :
-      return "\xE7\x9F\x9B";
-      break;
-    case 0xAE :
-      return "\xE7\x9F\xA2";
-      break;
-    case 0xAF :
-      return "\xE7\x9F\xB3";
-      break;
-    case 0xB0 :
-      return "\xE7\xA4\xBA";
-      break;
-    case 0xB1 :
-      return "\xE7\xA6\xB8";
-      break;
-    case 0xB2 :
-      return "\xE7\xA6\xBE";
-      break;
-    case 0xB3 :
-      return "\xE7\xA9\xB4";
-      break;
-    case 0xB4 :
-      return "\xE7\xAB\x8B";
-      break;
-    case 0xB5 :
-      return "\xE7\xAB\xB9";
-      break;
-    case 0xB6 :
-      return "\xE7\xB1\xB3";
-      break;
-    case 0xB7 :
-      return "\xE7\xB3\xB8";
-      break;
-    case 0xB8 :
-      return "\xE7\xBC\xB6";
-      break;
-    case 0xB9 :
-      return "\xE7\xBD\x91";
-      break;
-    case 0xBA :
-      return "\xE7\xBE\x8A";
-      break;
-    case 0xBB :
-      return "\xE7\xBE\xBD";
-      break;
-    case 0xBC :
-      return "\xE8\x80\x81";
-      break;
-    case 0xBD :
-      return "\xE8\x80\x8C";
-      break;
-    case 0xBE :
-      return "\xE8\x80\x92";
-      break;
-    case 0xBF :
-      return "\xE8\x80\xB3";
-      break;
-    }
-    break;
-  case 0xBE :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE8\x81\xBF";
-      break;
-    case 0x81 :
-      return "\xE8\x82\x89";
-      break;
-    case 0x82 :
-      return "\xE8\x87\xA3";
-      break;
-    case 0x83 :
-      return "\xE8\x87\xAA";
-      break;
-    case 0x84 :
-      return "\xE8\x87\xB3";
-      break;
-    case 0x85 :
-      return "\xE8\x87\xBC";
-      break;
-    case 0x86 :
-      return "\xE8\x88\x8C";
-      break;
-    case 0x87 :
-      return "\xE8\x88\x9B";
-      break;
-    case 0x88 :
-      return "\xE8\x88\x9F";
-      break;
-    case 0x89 :
-      return "\xE8\x89\xAE";
-      break;
-    case 0x8A :
-      return "\xE8\x89\xB2";
-      break;
-    case 0x8B :
-      return "\xE8\x89\xB8";
-      break;
-    case 0x8C :
-      return "\xE8\x99\x8D";
-      break;
-    case 0x8D :
-      return "\xE8\x99\xAB";
-      break;
-    case 0x8E :
-      return "\xE8\xA1\x80";
-      break;
-    case 0x8F :
-      return "\xE8\xA1\x8C";
-      break;
-    case 0x90 :
-      return "\xE8\xA1\xA3";
-      break;
-    case 0x91 :
-      return "\xE8\xA5\xBE";
-      break;
-    case 0x92 :
-      return "\xE8\xA6\x8B";
-      break;
-    case 0x93 :
-      return "\xE8\xA7\x92";
-      break;
-    case 0x94 :
-      return "\xE8\xA8\x80";
-      break;
-    case 0x95 :
-      return "\xE8\xB0\xB7";
-      break;
-    case 0x96 :
-      return "\xE8\xB1\x86";
-      break;
-    case 0x97 :
-      return "\xE8\xB1\x95";
-      break;
-    case 0x98 :
-      return "\xE8\xB1\xB8";
-      break;
-    case 0x99 :
-      return "\xE8\xB2\x9D";
-      break;
-    case 0x9A :
-      return "\xE8\xB5\xA4";
-      break;
-    case 0x9B :
-      return "\xE8\xB5\xB0";
-      break;
-    case 0x9C :
-      return "\xE8\xB6\xB3";
-      break;
-    case 0x9D :
-      return "\xE8\xBA\xAB";
-      break;
-    case 0x9E :
-      return "\xE8\xBB\x8A";
-      break;
-    case 0x9F :
-      return "\xE8\xBE\x9B";
-      break;
-    case 0xA0 :
-      return "\xE8\xBE\xB0";
-      break;
-    case 0xA1 :
-      return "\xE8\xBE\xB5";
-      break;
-    case 0xA2 :
-      return "\xE9\x82\x91";
-      break;
-    case 0xA3 :
-      return "\xE9\x85\x89";
-      break;
-    case 0xA4 :
-      return "\xE9\x87\x86";
-      break;
-    case 0xA5 :
-      return "\xE9\x87\x8C";
-      break;
-    case 0xA6 :
-      return "\xE9\x87\x91";
-      break;
-    case 0xA7 :
-      return "\xE9\x95\xB7";
-      break;
-    case 0xA8 :
-      return "\xE9\x96\x80";
-      break;
-    case 0xA9 :
-      return "\xE9\x98\x9C";
-      break;
-    case 0xAA :
-      return "\xE9\x9A\xB6";
-      break;
-    case 0xAB :
-      return "\xE9\x9A\xB9";
-      break;
-    case 0xAC :
-      return "\xE9\x9B\xA8";
-      break;
-    case 0xAD :
-      return "\xE9\x9D\x91";
-      break;
-    case 0xAE :
-      return "\xE9\x9D\x9E";
-      break;
-    case 0xAF :
-      return "\xE9\x9D\xA2";
-      break;
-    case 0xB0 :
-      return "\xE9\x9D\xA9";
-      break;
-    case 0xB1 :
-      return "\xE9\x9F\x8B";
-      break;
-    case 0xB2 :
-      return "\xE9\x9F\xAD";
-      break;
-    case 0xB3 :
-      return "\xE9\x9F\xB3";
-      break;
-    case 0xB4 :
-      return "\xE9\xA0\x81";
-      break;
-    case 0xB5 :
-      return "\xE9\xA2\xA8";
-      break;
-    case 0xB6 :
-      return "\xE9\xA3\x9B";
-      break;
-    case 0xB7 :
-      return "\xE9\xA3\x9F";
-      break;
-    case 0xB8 :
-      return "\xE9\xA6\x96";
-      break;
-    case 0xB9 :
-      return "\xE9\xA6\x99";
-      break;
-    case 0xBA :
-      return "\xE9\xA6\xAC";
-      break;
-    case 0xBB :
-      return "\xE9\xAA\xA8";
-      break;
-    case 0xBC :
-      return "\xE9\xAB\x98";
-      break;
-    case 0xBD :
-      return "\xE9\xAB\x9F";
-      break;
-    case 0xBE :
-      return "\xE9\xAC\xA5";
-      break;
-    case 0xBF :
-      return "\xE9\xAC\xAF";
-      break;
-    }
-    break;
-  case 0xBF :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE9\xAC\xB2";
-      break;
-    case 0x81 :
-      return "\xE9\xAC\xBC";
-      break;
-    case 0x82 :
-      return "\xE9\xAD\x9A";
-      break;
-    case 0x83 :
-      return "\xE9\xB3\xA5";
-      break;
-    case 0x84 :
-      return "\xE9\xB9\xB5";
-      break;
-    case 0x85 :
-      return "\xE9\xB9\xBF";
-      break;
-    case 0x86 :
-      return "\xE9\xBA\xA5";
-      break;
-    case 0x87 :
-      return "\xE9\xBA\xBB";
-      break;
-    case 0x88 :
-      return "\xE9\xBB\x83";
-      break;
-    case 0x89 :
-      return "\xE9\xBB\x8D";
-      break;
-    case 0x8A :
-      return "\xE9\xBB\x91";
-      break;
-    case 0x8B :
-      return "\xE9\xBB\xB9";
-      break;
-    case 0x8C :
-      return "\xE9\xBB\xBD";
-      break;
-    case 0x8D :
-      return "\xE9\xBC\x8E";
-      break;
-    case 0x8E :
-      return "\xE9\xBC\x93";
-      break;
-    case 0x8F :
-      return "\xE9\xBC\xA0";
-      break;
-    case 0x90 :
-      return "\xE9\xBC\xBB";
-      break;
-    case 0x91 :
-      return "\xE9\xBD\x8A";
-      break;
-    case 0x92 :
-      return "\xE9\xBD\x92";
-      break;
-    case 0x93 :
-      return "\xE9\xBE\x8D";
-      break;
-    case 0x94 :
-      return "\xE9\xBE\x9C";
-      break;
-    case 0x95 :
-      return "\xE9\xBE\xA0";
-      break;
-    }
-    break;
-  }
-  break;
-case 0xE3 :
-  switch (str[1]) {
-  case 0x80 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\x20";
-      break;
-    case 0x9C :
-      return "\x7E";
-      break;
-    case 0xB6 :
-      return "\xE3\x80\x92";
-      break;
-    case 0xB8 :
-      return "\xE5\x8D\x81";
-      break;
-    case 0xB9 :
-      return "\xE5\x8D\x84";
-      break;
-    case 0xBA :
-      return "\xE5\x8D\x85";
-      break;
-    }
-    break;
-  case 0x82 :
-    switch (str[2]) {
-    case 0x9B :
-      return "\xE3\x82\x99";
-      break;
-    case 0x9C :
-      return "\xE3\x82\x9A";
-      break;
-    case 0x9F :
-      return "\xE3\x82\x88\xE3\x82\x8A";
-      break;
-    }
-    break;
-  case 0x83 :
-    if (str[2] == 0xBF) {
-      return "\xE3\x82\xB3\xE3\x83\x88";
-    }
-    break;
-  case 0x84 :
-    switch (str[2]) {
-    case 0xB1 :
-      return "\xE1\x84\x80";
-      break;
-    case 0xB2 :
-      return "\xE1\x84\x81";
-      break;
-    case 0xB3 :
-      return "\xE1\x86\xAA";
-      break;
-    case 0xB4 :
-      return "\xE1\x84\x82";
-      break;
-    case 0xB5 :
-      return "\xE1\x86\xAC";
-      break;
-    case 0xB6 :
-      return "\xE1\x86\xAD";
-      break;
-    case 0xB7 :
-      return "\xE1\x84\x83";
-      break;
-    case 0xB8 :
-      return "\xE1\x84\x84";
-      break;
-    case 0xB9 :
-      return "\xE1\x84\x85";
-      break;
-    case 0xBA :
-      return "\xE1\x86\xB0";
-      break;
-    case 0xBB :
-      return "\xE1\x86\xB1";
-      break;
-    case 0xBC :
-      return "\xE1\x86\xB2";
-      break;
-    case 0xBD :
-      return "\xE1\x86\xB3";
-      break;
-    case 0xBE :
-      return "\xE1\x86\xB4";
-      break;
-    case 0xBF :
-      return "\xE1\x86\xB5";
-      break;
-    }
-    break;
-  case 0x85 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE1\x84\x9A";
-      break;
-    case 0x81 :
-      return "\xE1\x84\x86";
-      break;
-    case 0x82 :
-      return "\xE1\x84\x87";
-      break;
-    case 0x83 :
-      return "\xE1\x84\x88";
-      break;
-    case 0x84 :
-      return "\xE1\x84\xA1";
-      break;
-    case 0x85 :
-      return "\xE1\x84\x89";
-      break;
-    case 0x86 :
-      return "\xE1\x84\x8A";
-      break;
-    case 0x87 :
-      return "\xE1\x84\x8B";
-      break;
-    case 0x88 :
-      return "\xE1\x84\x8C";
-      break;
-    case 0x89 :
-      return "\xE1\x84\x8D";
-      break;
-    case 0x8A :
-      return "\xE1\x84\x8E";
-      break;
-    case 0x8B :
-      return "\xE1\x84\x8F";
-      break;
-    case 0x8C :
-      return "\xE1\x84\x90";
-      break;
-    case 0x8D :
-      return "\xE1\x84\x91";
-      break;
-    case 0x8E :
-      return "\xE1\x84\x92";
-      break;
-    case 0x8F :
-      return "\xE1\x85\xA1";
-      break;
-    case 0x90 :
-      return "\xE1\x85\xA2";
-      break;
-    case 0x91 :
-      return "\xE1\x85\xA3";
-      break;
-    case 0x92 :
-      return "\xE1\x85\xA4";
-      break;
-    case 0x93 :
-      return "\xE1\x85\xA5";
-      break;
-    case 0x94 :
-      return "\xE1\x85\xA6";
-      break;
-    case 0x95 :
-      return "\xE1\x85\xA7";
-      break;
-    case 0x96 :
-      return "\xE1\x85\xA8";
-      break;
-    case 0x97 :
-      return "\xE1\x85\xA9";
-      break;
-    case 0x98 :
-      return "\xE1\x85\xAA";
-      break;
-    case 0x99 :
-      return "\xE1\x85\xAB";
-      break;
-    case 0x9A :
-      return "\xE1\x85\xAC";
-      break;
-    case 0x9B :
-      return "\xE1\x85\xAD";
-      break;
-    case 0x9C :
-      return "\xE1\x85\xAE";
-      break;
-    case 0x9D :
-      return "\xE1\x85\xAF";
-      break;
-    case 0x9E :
-      return "\xE1\x85\xB0";
-      break;
-    case 0x9F :
-      return "\xE1\x85\xB1";
-      break;
-    case 0xA0 :
-      return "\xE1\x85\xB2";
-      break;
-    case 0xA1 :
-      return "\xE1\x85\xB3";
-      break;
-    case 0xA2 :
-      return "\xE1\x85\xB4";
-      break;
-    case 0xA3 :
-      return "\xE1\x85\xB5";
-      break;
-    case 0xA4 :
-      return "\xE1\x85\xA0";
-      break;
-    case 0xA5 :
-      return "\xE1\x84\x94";
-      break;
-    case 0xA6 :
-      return "\xE1\x84\x95";
-      break;
-    case 0xA7 :
-      return "\xE1\x87\x87";
-      break;
-    case 0xA8 :
-      return "\xE1\x87\x88";
-      break;
-    case 0xA9 :
-      return "\xE1\x87\x8C";
-      break;
-    case 0xAA :
-      return "\xE1\x87\x8E";
-      break;
-    case 0xAB :
-      return "\xE1\x87\x93";
-      break;
-    case 0xAC :
-      return "\xE1\x87\x97";
-      break;
-    case 0xAD :
-      return "\xE1\x87\x99";
-      break;
-    case 0xAE :
-      return "\xE1\x84\x9C";
-      break;
-    case 0xAF :
-      return "\xE1\x87\x9D";
-      break;
-    case 0xB0 :
-      return "\xE1\x87\x9F";
-      break;
-    case 0xB1 :
-      return "\xE1\x84\x9D";
-      break;
-    case 0xB2 :
-      return "\xE1\x84\x9E";
-      break;
-    case 0xB3 :
-      return "\xE1\x84\xA0";
-      break;
-    case 0xB4 :
-      return "\xE1\x84\xA2";
-      break;
-    case 0xB5 :
-      return "\xE1\x84\xA3";
-      break;
-    case 0xB6 :
-      return "\xE1\x84\xA7";
-      break;
-    case 0xB7 :
-      return "\xE1\x84\xA9";
-      break;
-    case 0xB8 :
-      return "\xE1\x84\xAB";
-      break;
-    case 0xB9 :
-      return "\xE1\x84\xAC";
-      break;
-    case 0xBA :
-      return "\xE1\x84\xAD";
-      break;
-    case 0xBB :
-      return "\xE1\x84\xAE";
-      break;
-    case 0xBC :
-      return "\xE1\x84\xAF";
-      break;
-    case 0xBD :
-      return "\xE1\x84\xB2";
-      break;
-    case 0xBE :
-      return "\xE1\x84\xB6";
-      break;
-    case 0xBF :
-      return "\xE1\x85\x80";
-      break;
-    }
-    break;
-  case 0x86 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE1\x85\x87";
-      break;
-    case 0x81 :
-      return "\xE1\x85\x8C";
-      break;
-    case 0x82 :
-      return "\xE1\x87\xB1";
-      break;
-    case 0x83 :
-      return "\xE1\x87\xB2";
-      break;
-    case 0x84 :
-      return "\xE1\x85\x97";
-      break;
-    case 0x85 :
-      return "\xE1\x85\x98";
-      break;
-    case 0x86 :
-      return "\xE1\x85\x99";
-      break;
-    case 0x87 :
-      return "\xE1\x86\x84";
-      break;
-    case 0x88 :
-      return "\xE1\x86\x85";
-      break;
-    case 0x89 :
-      return "\xE1\x86\x88";
-      break;
-    case 0x8A :
-      return "\xE1\x86\x91";
-      break;
-    case 0x8B :
-      return "\xE1\x86\x92";
-      break;
-    case 0x8C :
-      return "\xE1\x86\x94";
-      break;
-    case 0x8D :
-      return "\xE1\x86\x9E";
-      break;
-    case 0x8E :
-      return "\xE1\x86\xA1";
-      break;
-    case 0x92 :
-      return "\xE4\xB8\x80";
-      break;
-    case 0x93 :
-      return "\xE4\xBA\x8C";
-      break;
-    case 0x94 :
-      return "\xE4\xB8\x89";
-      break;
-    case 0x95 :
-      return "\xE5\x9B\x9B";
-      break;
-    case 0x96 :
-      return "\xE4\xB8\x8A";
-      break;
-    case 0x97 :
-      return "\xE4\xB8\xAD";
-      break;
-    case 0x98 :
-      return "\xE4\xB8\x8B";
-      break;
-    case 0x99 :
-      return "\xE7\x94\xB2";
-      break;
-    case 0x9A :
-      return "\xE4\xB9\x99";
-      break;
-    case 0x9B :
-      return "\xE4\xB8\x99";
-      break;
-    case 0x9C :
-      return "\xE4\xB8\x81";
-      break;
-    case 0x9D :
-      return "\xE5\xA4\xA9";
-      break;
-    case 0x9E :
-      return "\xE5\x9C\xB0";
-      break;
-    case 0x9F :
-      return "\xE4\xBA\xBA";
-      break;
-    }
-    break;
-  case 0x88 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\x28\xE1\x84\x80\x29";
-      break;
-    case 0x81 :
-      return "\x28\xE1\x84\x82\x29";
-      break;
-    case 0x82 :
-      return "\x28\xE1\x84\x83\x29";
-      break;
-    case 0x83 :
-      return "\x28\xE1\x84\x85\x29";
-      break;
-    case 0x84 :
-      return "\x28\xE1\x84\x86\x29";
-      break;
-    case 0x85 :
-      return "\x28\xE1\x84\x87\x29";
-      break;
-    case 0x86 :
-      return "\x28\xE1\x84\x89\x29";
-      break;
-    case 0x87 :
-      return "\x28\xE1\x84\x8B\x29";
-      break;
-    case 0x88 :
-      return "\x28\xE1\x84\x8C\x29";
-      break;
-    case 0x89 :
-      return "\x28\xE1\x84\x8E\x29";
-      break;
-    case 0x8A :
-      return "\x28\xE1\x84\x8F\x29";
-      break;
-    case 0x8B :
-      return "\x28\xE1\x84\x90\x29";
-      break;
-    case 0x8C :
-      return "\x28\xE1\x84\x91\x29";
-      break;
-    case 0x8D :
-      return "\x28\xE1\x84\x92\x29";
-      break;
-    case 0x8E :
-      return "\x28\xEA\xB0\x80\x29";
-      break;
-    case 0x8F :
-      return "\x28\xEB\x82\x98\x29";
-      break;
-    case 0x90 :
-      return "\x28\xEB\x8B\xA4\x29";
-      break;
-    case 0x91 :
-      return "\x28\xEB\x9D\xBC\x29";
-      break;
-    case 0x92 :
-      return "\x28\xEB\xA7\x88\x29";
-      break;
-    case 0x93 :
-      return "\x28\xEB\xB0\x94\x29";
-      break;
-    case 0x94 :
-      return "\x28\xEC\x82\xAC\x29";
-      break;
-    case 0x95 :
-      return "\x28\xEC\x95\x84\x29";
-      break;
-    case 0x96 :
-      return "\x28\xEC\x9E\x90\x29";
-      break;
-    case 0x97 :
-      return "\x28\xEC\xB0\xA8\x29";
-      break;
-    case 0x98 :
-      return "\x28\xEC\xB9\xB4\x29";
-      break;
-    case 0x99 :
-      return "\x28\xED\x83\x80\x29";
-      break;
-    case 0x9A :
-      return "\x28\xED\x8C\x8C\x29";
-      break;
-    case 0x9B :
-      return "\x28\xED\x95\x98\x29";
-      break;
-    case 0x9C :
-      return "\x28\xEC\xA3\xBC\x29";
-      break;
-    case 0x9D :
-      return "\x28\xEC\x98\xA4\xEC\xA0\x84\x29";
-      break;
-    case 0x9E :
-      return "\x28\xEC\x98\xA4\xED\x9B\x84\x29";
-      break;
-    case 0xA0 :
-      return "\x28\xE4\xB8\x80\x29";
-      break;
-    case 0xA1 :
-      return "\x28\xE4\xBA\x8C\x29";
-      break;
-    case 0xA2 :
-      return "\x28\xE4\xB8\x89\x29";
-      break;
-    case 0xA3 :
-      return "\x28\xE5\x9B\x9B\x29";
-      break;
-    case 0xA4 :
-      return "\x28\xE4\xBA\x94\x29";
-      break;
-    case 0xA5 :
-      return "\x28\xE5\x85\xAD\x29";
-      break;
-    case 0xA6 :
-      return "\x28\xE4\xB8\x83\x29";
-      break;
-    case 0xA7 :
-      return "\x28\xE5\x85\xAB\x29";
-      break;
-    case 0xA8 :
-      return "\x28\xE4\xB9\x9D\x29";
-      break;
-    case 0xA9 :
-      return "\x28\xE5\x8D\x81\x29";
-      break;
-    case 0xAA :
-      return "\x28\xE6\x9C\x88\x29";
-      break;
-    case 0xAB :
-      return "\x28\xE7\x81\xAB\x29";
-      break;
-    case 0xAC :
-      return "\x28\xE6\xB0\xB4\x29";
-      break;
-    case 0xAD :
-      return "\x28\xE6\x9C\xA8\x29";
-      break;
-    case 0xAE :
-      return "\x28\xE9\x87\x91\x29";
-      break;
-    case 0xAF :
-      return "\x28\xE5\x9C\x9F\x29";
-      break;
-    case 0xB0 :
-      return "\x28\xE6\x97\xA5\x29";
-      break;
-    case 0xB1 :
-      return "\x28\xE6\xA0\xAA\x29";
-      break;
-    case 0xB2 :
-      return "\x28\xE6\x9C\x89\x29";
-      break;
-    case 0xB3 :
-      return "\x28\xE7\xA4\xBE\x29";
-      break;
-    case 0xB4 :
-      return "\x28\xE5\x90\x8D\x29";
-      break;
-    case 0xB5 :
-      return "\x28\xE7\x89\xB9\x29";
-      break;
-    case 0xB6 :
-      return "\x28\xE8\xB2\xA1\x29";
-      break;
-    case 0xB7 :
-      return "\x28\xE7\xA5\x9D\x29";
-      break;
-    case 0xB8 :
-      return "\x28\xE5\x8A\xB4\x29";
-      break;
-    case 0xB9 :
-      return "\x28\xE4\xBB\xA3\x29";
-      break;
-    case 0xBA :
-      return "\x28\xE5\x91\xBC\x29";
-      break;
-    case 0xBB :
-      return "\x28\xE5\xAD\xA6\x29";
-      break;
-    case 0xBC :
-      return "\x28\xE7\x9B\xA3\x29";
-      break;
-    case 0xBD :
-      return "\x28\xE4\xBC\x81\x29";
-      break;
-    case 0xBE :
-      return "\x28\xE8\xB3\x87\x29";
-      break;
-    case 0xBF :
-      return "\x28\xE5\x8D\x94\x29";
-      break;
-    }
-    break;
-  case 0x89 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\x28\xE7\xA5\xAD\x29";
-      break;
-    case 0x81 :
-      return "\x28\xE4\xBC\x91\x29";
-      break;
-    case 0x82 :
-      return "\x28\xE8\x87\xAA\x29";
-      break;
-    case 0x83 :
-      return "\x28\xE8\x87\xB3\x29";
-      break;
-    case 0x90 :
-      return "\x70\x74\x65";
-      break;
-    case 0x91 :
-      return "\x32\x31";
-      break;
-    case 0x92 :
-      return "\x32\x32";
-      break;
-    case 0x93 :
-      return "\x32\x33";
-      break;
-    case 0x94 :
-      return "\x32\x34";
-      break;
-    case 0x95 :
-      return "\x32\x35";
-      break;
-    case 0x96 :
-      return "\x32\x36";
-      break;
-    case 0x97 :
-      return "\x32\x37";
-      break;
-    case 0x98 :
-      return "\x32\x38";
-      break;
-    case 0x99 :
-      return "\x32\x39";
-      break;
-    case 0x9A :
-      return "\x33\x30";
-      break;
-    case 0x9B :
-      return "\x33\x31";
-      break;
-    case 0x9C :
-      return "\x33\x32";
-      break;
-    case 0x9D :
-      return "\x33\x33";
-      break;
-    case 0x9E :
-      return "\x33\x34";
-      break;
-    case 0x9F :
-      return "\x33\x35";
-      break;
-    case 0xA0 :
-      return "\xE1\x84\x80";
-      break;
-    case 0xA1 :
-      return "\xE1\x84\x82";
-      break;
-    case 0xA2 :
-      return "\xE1\x84\x83";
-      break;
-    case 0xA3 :
-      return "\xE1\x84\x85";
-      break;
-    case 0xA4 :
-      return "\xE1\x84\x86";
-      break;
-    case 0xA5 :
-      return "\xE1\x84\x87";
-      break;
-    case 0xA6 :
-      return "\xE1\x84\x89";
-      break;
-    case 0xA7 :
-      return "\xE1\x84\x8B";
-      break;
-    case 0xA8 :
-      return "\xE1\x84\x8C";
-      break;
-    case 0xA9 :
-      return "\xE1\x84\x8E";
-      break;
-    case 0xAA :
-      return "\xE1\x84\x8F";
-      break;
-    case 0xAB :
-      return "\xE1\x84\x90";
-      break;
-    case 0xAC :
-      return "\xE1\x84\x91";
-      break;
-    case 0xAD :
-      return "\xE1\x84\x92";
-      break;
-    case 0xAE :
-      return "\xEA\xB0\x80";
-      break;
-    case 0xAF :
-      return "\xEB\x82\x98";
-      break;
-    case 0xB0 :
-      return "\xEB\x8B\xA4";
-      break;
-    case 0xB1 :
-      return "\xEB\x9D\xBC";
-      break;
-    case 0xB2 :
-      return "\xEB\xA7\x88";
-      break;
-    case 0xB3 :
-      return "\xEB\xB0\x94";
-      break;
-    case 0xB4 :
-      return "\xEC\x82\xAC";
-      break;
-    case 0xB5 :
-      return "\xEC\x95\x84";
-      break;
-    case 0xB6 :
-      return "\xEC\x9E\x90";
-      break;
-    case 0xB7 :
-      return "\xEC\xB0\xA8";
-      break;
-    case 0xB8 :
-      return "\xEC\xB9\xB4";
-      break;
-    case 0xB9 :
-      return "\xED\x83\x80";
-      break;
-    case 0xBA :
-      return "\xED\x8C\x8C";
-      break;
-    case 0xBB :
-      return "\xED\x95\x98";
-      break;
-    case 0xBC :
-      return "\xEC\xB0\xB8\xEA\xB3\xA0";
-      break;
-    case 0xBD :
-      return "\xEC\xA3\xBC\xEC\x9D\x98";
-      break;
-    case 0xBE :
-      return "\xEC\x9A\xB0";
-      break;
-    }
-    break;
-  case 0x8A :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE4\xB8\x80";
-      break;
-    case 0x81 :
-      return "\xE4\xBA\x8C";
-      break;
-    case 0x82 :
-      return "\xE4\xB8\x89";
-      break;
-    case 0x83 :
-      return "\xE5\x9B\x9B";
-      break;
-    case 0x84 :
-      return "\xE4\xBA\x94";
-      break;
-    case 0x85 :
-      return "\xE5\x85\xAD";
-      break;
-    case 0x86 :
-      return "\xE4\xB8\x83";
-      break;
-    case 0x87 :
-      return "\xE5\x85\xAB";
-      break;
-    case 0x88 :
-      return "\xE4\xB9\x9D";
-      break;
-    case 0x89 :
-      return "\xE5\x8D\x81";
-      break;
-    case 0x8A :
-      return "\xE6\x9C\x88";
-      break;
-    case 0x8B :
-      return "\xE7\x81\xAB";
-      break;
-    case 0x8C :
-      return "\xE6\xB0\xB4";
-      break;
-    case 0x8D :
-      return "\xE6\x9C\xA8";
-      break;
-    case 0x8E :
-      return "\xE9\x87\x91";
-      break;
-    case 0x8F :
-      return "\xE5\x9C\x9F";
-      break;
-    case 0x90 :
-      return "\xE6\x97\xA5";
-      break;
-    case 0x91 :
-      return "\xE6\xA0\xAA";
-      break;
-    case 0x92 :
-      return "\xE6\x9C\x89";
-      break;
-    case 0x93 :
-      return "\xE7\xA4\xBE";
-      break;
-    case 0x94 :
-      return "\xE5\x90\x8D";
-      break;
-    case 0x95 :
-      return "\xE7\x89\xB9";
-      break;
-    case 0x96 :
-      return "\xE8\xB2\xA1";
-      break;
-    case 0x97 :
-      return "\xE7\xA5\x9D";
-      break;
-    case 0x98 :
-      return "\xE5\x8A\xB4";
-      break;
-    case 0x99 :
-      return "\xE7\xA7\x98";
-      break;
-    case 0x9A :
-      return "\xE7\x94\xB7";
-      break;
-    case 0x9B :
-      return "\xE5\xA5\xB3";
-      break;
-    case 0x9C :
-      return "\xE9\x81\xA9";
-      break;
-    case 0x9D :
-      return "\xE5\x84\xAA";
-      break;
-    case 0x9E :
-      return "\xE5\x8D\xB0";
-      break;
-    case 0x9F :
-      return "\xE6\xB3\xA8";
-      break;
-    case 0xA0 :
-      return "\xE9\xA0\x85";
-      break;
-    case 0xA1 :
-      return "\xE4\xBC\x91";
-      break;
-    case 0xA2 :
-      return "\xE5\x86\x99";
-      break;
-    case 0xA3 :
-      return "\xE6\xAD\xA3";
-      break;
-    case 0xA4 :
-      return "\xE4\xB8\x8A";
-      break;
-    case 0xA5 :
-      return "\xE4\xB8\xAD";
-      break;
-    case 0xA6 :
-      return "\xE4\xB8\x8B";
-      break;
-    case 0xA7 :
-      return "\xE5\xB7\xA6";
-      break;
-    case 0xA8 :
-      return "\xE5\x8F\xB3";
-      break;
-    case 0xA9 :
-      return "\xE5\x8C\xBB";
-      break;
-    case 0xAA :
-      return "\xE5\xAE\x97";
-      break;
-    case 0xAB :
-      return "\xE5\xAD\xA6";
-      break;
-    case 0xAC :
-      return "\xE7\x9B\xA3";
-      break;
-    case 0xAD :
-      return "\xE4\xBC\x81";
-      break;
-    case 0xAE :
-      return "\xE8\xB3\x87";
-      break;
-    case 0xAF :
-      return "\xE5\x8D\x94";
-      break;
-    case 0xB0 :
-      return "\xE5\xA4\x9C";
-      break;
-    case 0xB1 :
-      return "\x33\x36";
-      break;
-    case 0xB2 :
-      return "\x33\x37";
-      break;
-    case 0xB3 :
-      return "\x33\x38";
-      break;
-    case 0xB4 :
-      return "\x33\x39";
-      break;
-    case 0xB5 :
-      return "\x34\x30";
-      break;
-    case 0xB6 :
-      return "\x34\x31";
-      break;
-    case 0xB7 :
-      return "\x34\x32";
-      break;
-    case 0xB8 :
-      return "\x34\x33";
-      break;
-    case 0xB9 :
-      return "\x34\x34";
-      break;
-    case 0xBA :
-      return "\x34\x35";
-      break;
-    case 0xBB :
-      return "\x34\x36";
-      break;
-    case 0xBC :
-      return "\x34\x37";
-      break;
-    case 0xBD :
-      return "\x34\x38";
-      break;
-    case 0xBE :
-      return "\x34\x39";
-      break;
-    case 0xBF :
-      return "\x35\x30";
-      break;
-    }
-    break;
-  case 0x8B :
-    switch (str[2]) {
-    case 0x80 :
-      return "\x31\xE6\x9C\x88";
-      break;
-    case 0x81 :
-      return "\x32\xE6\x9C\x88";
-      break;
-    case 0x82 :
-      return "\x33\xE6\x9C\x88";
-      break;
-    case 0x83 :
-      return "\x34\xE6\x9C\x88";
-      break;
-    case 0x84 :
-      return "\x35\xE6\x9C\x88";
-      break;
-    case 0x85 :
-      return "\x36\xE6\x9C\x88";
-      break;
-    case 0x86 :
-      return "\x37\xE6\x9C\x88";
-      break;
-    case 0x87 :
-      return "\x38\xE6\x9C\x88";
-      break;
-    case 0x88 :
-      return "\x39\xE6\x9C\x88";
-      break;
-    case 0x89 :
-      return "\x31\x30\xE6\x9C\x88";
-      break;
-    case 0x8A :
-      return "\x31\x31\xE6\x9C\x88";
-      break;
-    case 0x8B :
-      return "\x31\x32\xE6\x9C\x88";
-      break;
-    case 0x8C :
-      return "\x68\x67";
-      break;
-    case 0x8D :
-      return "\x65\x72\x67";
-      break;
-    case 0x8E :
-      return "\x65\x76";
-      break;
-    case 0x8F :
-      return "\x6C\x74\x64";
-      break;
-    case 0x90 :
-      return "\xE3\x82\xA2";
-      break;
-    case 0x91 :
-      return "\xE3\x82\xA4";
-      break;
-    case 0x92 :
-      return "\xE3\x82\xA6";
-      break;
-    case 0x93 :
-      return "\xE3\x82\xA8";
-      break;
-    case 0x94 :
-      return "\xE3\x82\xAA";
-      break;
-    case 0x95 :
-      return "\xE3\x82\xAB";
-      break;
-    case 0x96 :
-      return "\xE3\x82\xAD";
-      break;
-    case 0x97 :
-      return "\xE3\x82\xAF";
-      break;
-    case 0x98 :
-      return "\xE3\x82\xB1";
-      break;
-    case 0x99 :
-      return "\xE3\x82\xB3";
-      break;
-    case 0x9A :
-      return "\xE3\x82\xB5";
-      break;
-    case 0x9B :
-      return "\xE3\x82\xB7";
-      break;
-    case 0x9C :
-      return "\xE3\x82\xB9";
-      break;
-    case 0x9D :
-      return "\xE3\x82\xBB";
-      break;
-    case 0x9E :
-      return "\xE3\x82\xBD";
-      break;
-    case 0x9F :
-      return "\xE3\x82\xBF";
-      break;
-    case 0xA0 :
-      return "\xE3\x83\x81";
-      break;
-    case 0xA1 :
-      return "\xE3\x83\x84";
-      break;
-    case 0xA2 :
-      return "\xE3\x83\x86";
-      break;
-    case 0xA3 :
-      return "\xE3\x83\x88";
-      break;
-    case 0xA4 :
-      return "\xE3\x83\x8A";
-      break;
-    case 0xA5 :
-      return "\xE3\x83\x8B";
-      break;
-    case 0xA6 :
-      return "\xE3\x83\x8C";
-      break;
-    case 0xA7 :
-      return "\xE3\x83\x8D";
-      break;
-    case 0xA8 :
-      return "\xE3\x83\x8E";
-      break;
-    case 0xA9 :
-      return "\xE3\x83\x8F";
-      break;
-    case 0xAA :
-      return "\xE3\x83\x92";
-      break;
-    case 0xAB :
-      return "\xE3\x83\x95";
-      break;
-    case 0xAC :
-      return "\xE3\x83\x98";
-      break;
-    case 0xAD :
-      return "\xE3\x83\x9B";
-      break;
-    case 0xAE :
-      return "\xE3\x83\x9E";
-      break;
-    case 0xAF :
-      return "\xE3\x83\x9F";
-      break;
-    case 0xB0 :
-      return "\xE3\x83\xA0";
-      break;
-    case 0xB1 :
-      return "\xE3\x83\xA1";
-      break;
-    case 0xB2 :
-      return "\xE3\x83\xA2";
-      break;
-    case 0xB3 :
-      return "\xE3\x83\xA4";
-      break;
-    case 0xB4 :
-      return "\xE3\x83\xA6";
-      break;
-    case 0xB5 :
-      return "\xE3\x83\xA8";
-      break;
-    case 0xB6 :
-      return "\xE3\x83\xA9";
-      break;
-    case 0xB7 :
-      return "\xE3\x83\xAA";
-      break;
-    case 0xB8 :
-      return "\xE3\x83\xAB";
-      break;
-    case 0xB9 :
-      return "\xE3\x83\xAC";
-      break;
-    case 0xBA :
-      return "\xE3\x83\xAD";
-      break;
-    case 0xBB :
-      return "\xE3\x83\xAF";
-      break;
-    case 0xBC :
-      return "\xE3\x83\xB0";
-      break;
-    case 0xBD :
-      return "\xE3\x83\xB1";
-      break;
-    case 0xBE :
-      return "\xE3\x83\xB2";
-      break;
-    }
-    break;
-  case 0x8C :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE3\x82\xA2\xE3\x83\x91\xE3\x83\xBC\xE3\x83\x88";
-      break;
-    case 0x81 :
-      return "\xE3\x82\xA2\xE3\x83\xAB\xE3\x83\x95\xE3\x82\xA1";
-      break;
-    case 0x82 :
-      return "\xE3\x82\xA2\xE3\x83\xB3\xE3\x83\x9A\xE3\x82\xA2";
-      break;
-    case 0x83 :
-      return "\xE3\x82\xA2\xE3\x83\xBC\xE3\x83\xAB";
-      break;
-    case 0x84 :
-      return "\xE3\x82\xA4\xE3\x83\x8B\xE3\x83\xB3\xE3\x82\xB0";
-      break;
-    case 0x85 :
-      return "\xE3\x82\xA4\xE3\x83\xB3\xE3\x83\x81";
-      break;
-    case 0x86 :
-      return "\xE3\x82\xA6\xE3\x82\xA9\xE3\x83\xB3";
-      break;
-    case 0x87 :
-      return "\xE3\x82\xA8\xE3\x82\xB9\xE3\x82\xAF\xE3\x83\xBC\xE3\x83\x89";
-      break;
-    case 0x88 :
-      return "\xE3\x82\xA8\xE3\x83\xBC\xE3\x82\xAB\xE3\x83\xBC";
-      break;
-    case 0x89 :
-      return "\xE3\x82\xAA\xE3\x83\xB3\xE3\x82\xB9";
-      break;
-    case 0x8A :
-      return "\xE3\x82\xAA\xE3\x83\xBC\xE3\x83\xA0";
-      break;
-    case 0x8B :
-      return "\xE3\x82\xAB\xE3\x82\xA4\xE3\x83\xAA";
-      break;
-    case 0x8C :
-      return "\xE3\x82\xAB\xE3\x83\xA9\xE3\x83\x83\xE3\x83\x88";
-      break;
-    case 0x8D :
-      return "\xE3\x82\xAB\xE3\x83\xAD\xE3\x83\xAA\xE3\x83\xBC";
-      break;
-    case 0x8E :
-      return "\xE3\x82\xAC\xE3\x83\xAD\xE3\x83\xB3";
-      break;
-    case 0x8F :
-      return "\xE3\x82\xAC\xE3\x83\xB3\xE3\x83\x9E";
-      break;
-    case 0x90 :
-      return "\xE3\x82\xAE\xE3\x82\xAC";
-      break;
-    case 0x91 :
-      return "\xE3\x82\xAE\xE3\x83\x8B\xE3\x83\xBC";
-      break;
-    case 0x92 :
-      return "\xE3\x82\xAD\xE3\x83\xA5\xE3\x83\xAA\xE3\x83\xBC";
-      break;
-    case 0x93 :
-      return "\xE3\x82\xAE\xE3\x83\xAB\xE3\x83\x80\xE3\x83\xBC";
-      break;
-    case 0x94 :
-      return "\xE3\x82\xAD\xE3\x83\xAD";
-      break;
-    case 0x95 :
-      return "\xE3\x82\xAD\xE3\x83\xAD\xE3\x82\xB0\xE3\x83\xA9\xE3\x83\xA0";
-      break;
-    case 0x96 :
-      return "\xE3\x82\xAD\xE3\x83\xAD\xE3\x83\xA1\xE3\x83\xBC\xE3\x83\x88\xE3\x83\xAB";
-      break;
-    case 0x97 :
-      return "\xE3\x82\xAD\xE3\x83\xAD\xE3\x83\xAF\xE3\x83\x83\xE3\x83\x88";
-      break;
-    case 0x98 :
-      return "\xE3\x82\xB0\xE3\x83\xA9\xE3\x83\xA0";
-      break;
-    case 0x99 :
-      return "\xE3\x82\xB0\xE3\x83\xA9\xE3\x83\xA0\xE3\x83\x88\xE3\x83\xB3";
-      break;
-    case 0x9A :
-      return "\xE3\x82\xAF\xE3\x83\xAB\xE3\x82\xBC\xE3\x82\xA4\xE3\x83\xAD";
-      break;
-    case 0x9B :
-      return "\xE3\x82\xAF\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x8D";
-      break;
-    case 0x9C :
-      return "\xE3\x82\xB1\xE3\x83\xBC\xE3\x82\xB9";
-      break;
-    case 0x9D :
-      return "\xE3\x82\xB3\xE3\x83\xAB\xE3\x83\x8A";
-      break;
-    case 0x9E :
-      return "\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x9D";
-      break;
-    case 0x9F :
-      return "\xE3\x82\xB5\xE3\x82\xA4\xE3\x82\xAF\xE3\x83\xAB";
-      break;
-    case 0xA0 :
-      return "\xE3\x82\xB5\xE3\x83\xB3\xE3\x83\x81\xE3\x83\xBC\xE3\x83\xA0";
-      break;
-    case 0xA1 :
-      return "\xE3\x82\xB7\xE3\x83\xAA\xE3\x83\xB3\xE3\x82\xB0";
-      break;
-    case 0xA2 :
-      return "\xE3\x82\xBB\xE3\x83\xB3\xE3\x83\x81";
-      break;
-    case 0xA3 :
-      return "\xE3\x82\xBB\xE3\x83\xB3\xE3\x83\x88";
-      break;
-    case 0xA4 :
-      return "\xE3\x83\x80\xE3\x83\xBC\xE3\x82\xB9";
-      break;
-    case 0xA5 :
-      return "\xE3\x83\x87\xE3\x82\xB7";
-      break;
-    case 0xA6 :
-      return "\xE3\x83\x89\xE3\x83\xAB";
-      break;
-    case 0xA7 :
-      return "\xE3\x83\x88\xE3\x83\xB3";
-      break;
-    case 0xA8 :
-      return "\xE3\x83\x8A\xE3\x83\x8E";
-      break;
-    case 0xA9 :
-      return "\xE3\x83\x8E\xE3\x83\x83\xE3\x83\x88";
-      break;
-    case 0xAA :
-      return "\xE3\x83\x8F\xE3\x82\xA4\xE3\x83\x84";
-      break;
-    case 0xAB :
-      return "\xE3\x83\x91\xE3\x83\xBC\xE3\x82\xBB\xE3\x83\xB3\xE3\x83\x88";
-      break;
-    case 0xAC :
-      return "\xE3\x83\x91\xE3\x83\xBC\xE3\x83\x84";
-      break;
-    case 0xAD :
-      return "\xE3\x83\x90\xE3\x83\xBC\xE3\x83\xAC\xE3\x83\xAB";
-      break;
-    case 0xAE :
-      return "\xE3\x83\x94\xE3\x82\xA2\xE3\x82\xB9\xE3\x83\x88\xE3\x83\xAB";
-      break;
-    case 0xAF :
-      return "\xE3\x83\x94\xE3\x82\xAF\xE3\x83\xAB";
-      break;
-    case 0xB0 :
-      return "\xE3\x83\x94\xE3\x82\xB3";
-      break;
-    case 0xB1 :
-      return "\xE3\x83\x93\xE3\x83\xAB";
-      break;
-    case 0xB2 :
-      return "\xE3\x83\x95\xE3\x82\xA1\xE3\x83\xA9\xE3\x83\x83\xE3\x83\x89";
-      break;
-    case 0xB3 :
-      return "\xE3\x83\x95\xE3\x82\xA3\xE3\x83\xBC\xE3\x83\x88";
-      break;
-    case 0xB4 :
-      return "\xE3\x83\x96\xE3\x83\x83\xE3\x82\xB7\xE3\x82\xA7\xE3\x83\xAB";
-      break;
-    case 0xB5 :
-      return "\xE3\x83\x95\xE3\x83\xA9\xE3\x83\xB3";
-      break;
-    case 0xB6 :
-      return "\xE3\x83\x98\xE3\x82\xAF\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\xAB";
-      break;
-    case 0xB7 :
-      return "\xE3\x83\x9A\xE3\x82\xBD";
-      break;
-    case 0xB8 :
-      return "\xE3\x83\x9A\xE3\x83\x8B\xE3\x83\x92";
-      break;
-    case 0xB9 :
-      return "\xE3\x83\x98\xE3\x83\xAB\xE3\x83\x84";
-      break;
-    case 0xBA :
-      return "\xE3\x83\x9A\xE3\x83\xB3\xE3\x82\xB9";
-      break;
-    case 0xBB :
-      return "\xE3\x83\x9A\xE3\x83\xBC\xE3\x82\xB8";
-      break;
-    case 0xBC :
-      return "\xE3\x83\x99\xE3\x83\xBC\xE3\x82\xBF";
-      break;
-    case 0xBD :
-      return "\xE3\x83\x9D\xE3\x82\xA4\xE3\x83\xB3\xE3\x83\x88";
-      break;
-    case 0xBE :
-      return "\xE3\x83\x9C\xE3\x83\xAB\xE3\x83\x88";
-      break;
-    case 0xBF :
-      return "\xE3\x83\x9B\xE3\x83\xB3";
-      break;
-    }
-    break;
-  case 0x8D :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE3\x83\x9D\xE3\x83\xB3\xE3\x83\x89";
-      break;
-    case 0x81 :
-      return "\xE3\x83\x9B\xE3\x83\xBC\xE3\x83\xAB";
-      break;
-    case 0x82 :
-      return "\xE3\x83\x9B\xE3\x83\xBC\xE3\x83\xB3";
-      break;
-    case 0x83 :
-      return "\xE3\x83\x9E\xE3\x82\xA4\xE3\x82\xAF\xE3\x83\xAD";
-      break;
-    case 0x84 :
-      return "\xE3\x83\x9E\xE3\x82\xA4\xE3\x83\xAB";
-      break;
-    case 0x85 :
-      return "\xE3\x83\x9E\xE3\x83\x83\xE3\x83\x8F";
-      break;
-    case 0x86 :
-      return "\xE3\x83\x9E\xE3\x83\xAB\xE3\x82\xAF";
-      break;
-    case 0x87 :
-      return "\xE3\x83\x9E\xE3\x83\xB3\xE3\x82\xB7\xE3\x83\xA7\xE3\x83\xB3";
-      break;
-    case 0x88 :
-      return "\xE3\x83\x9F\xE3\x82\xAF\xE3\x83\xAD\xE3\x83\xB3";
-      break;
-    case 0x89 :
-      return "\xE3\x83\x9F\xE3\x83\xAA";
-      break;
-    case 0x8A :
-      return "\xE3\x83\x9F\xE3\x83\xAA\xE3\x83\x90\xE3\x83\xBC\xE3\x83\xAB";
-      break;
-    case 0x8B :
-      return "\xE3\x83\xA1\xE3\x82\xAC";
-      break;
-    case 0x8C :
-      return "\xE3\x83\xA1\xE3\x82\xAC\xE3\x83\x88\xE3\x83\xB3";
-      break;
-    case 0x8D :
-      return "\xE3\x83\xA1\xE3\x83\xBC\xE3\x83\x88\xE3\x83\xAB";
-      break;
-    case 0x8E :
-      return "\xE3\x83\xA4\xE3\x83\xBC\xE3\x83\x89";
-      break;
-    case 0x8F :
-      return "\xE3\x83\xA4\xE3\x83\xBC\xE3\x83\xAB";
-      break;
-    case 0x90 :
-      return "\xE3\x83\xA6\xE3\x82\xA2\xE3\x83\xB3";
-      break;
-    case 0x91 :
-      return "\xE3\x83\xAA\xE3\x83\x83\xE3\x83\x88\xE3\x83\xAB";
-      break;
-    case 0x92 :
-      return "\xE3\x83\xAA\xE3\x83\xA9";
-      break;
-    case 0x93 :
-      return "\xE3\x83\xAB\xE3\x83\x94\xE3\x83\xBC";
-      break;
-    case 0x94 :
-      return "\xE3\x83\xAB\xE3\x83\xBC\xE3\x83\x96\xE3\x83\xAB";
-      break;
-    case 0x95 :
-      return "\xE3\x83\xAC\xE3\x83\xA0";
-      break;
-    case 0x96 :
-      return "\xE3\x83\xAC\xE3\x83\xB3\xE3\x83\x88\xE3\x82\xB2\xE3\x83\xB3";
-      break;
-    case 0x97 :
-      return "\xE3\x83\xAF\xE3\x83\x83\xE3\x83\x88";
-      break;
-    case 0x98 :
-      return "\x30\xE7\x82\xB9";
-      break;
-    case 0x99 :
-      return "\x31\xE7\x82\xB9";
-      break;
-    case 0x9A :
-      return "\x32\xE7\x82\xB9";
-      break;
-    case 0x9B :
-      return "\x33\xE7\x82\xB9";
-      break;
-    case 0x9C :
-      return "\x34\xE7\x82\xB9";
-      break;
-    case 0x9D :
-      return "\x35\xE7\x82\xB9";
-      break;
-    case 0x9E :
-      return "\x36\xE7\x82\xB9";
-      break;
-    case 0x9F :
-      return "\x37\xE7\x82\xB9";
-      break;
-    case 0xA0 :
-      return "\x38\xE7\x82\xB9";
-      break;
-    case 0xA1 :
-      return "\x39\xE7\x82\xB9";
-      break;
-    case 0xA2 :
-      return "\x31\x30\xE7\x82\xB9";
-      break;
-    case 0xA3 :
-      return "\x31\x31\xE7\x82\xB9";
-      break;
-    case 0xA4 :
-      return "\x31\x32\xE7\x82\xB9";
-      break;
-    case 0xA5 :
-      return "\x31\x33\xE7\x82\xB9";
-      break;
-    case 0xA6 :
-      return "\x31\x34\xE7\x82\xB9";
-      break;
-    case 0xA7 :
-      return "\x31\x35\xE7\x82\xB9";
-      break;
-    case 0xA8 :
-      return "\x31\x36\xE7\x82\xB9";
-      break;
-    case 0xA9 :
-      return "\x31\x37\xE7\x82\xB9";
-      break;
-    case 0xAA :
-      return "\x31\x38\xE7\x82\xB9";
-      break;
-    case 0xAB :
-      return "\x31\x39\xE7\x82\xB9";
-      break;
-    case 0xAC :
-      return "\x32\x30\xE7\x82\xB9";
-      break;
-    case 0xAD :
-      return "\x32\x31\xE7\x82\xB9";
-      break;
-    case 0xAE :
-      return "\x32\x32\xE7\x82\xB9";
-      break;
-    case 0xAF :
-      return "\x32\x33\xE7\x82\xB9";
-      break;
-    case 0xB0 :
-      return "\x32\x34\xE7\x82\xB9";
-      break;
-    case 0xB1 :
-      return "\x68\x70\x61";
-      break;
-    case 0xB2 :
-      return "\x64\x61";
-      break;
-    case 0xB3 :
-      return "\x61\x75";
-      break;
-    case 0xB4 :
-      return "\x62\x61\x72";
-      break;
-    case 0xB5 :
-      return "\x6F\x76";
-      break;
-    case 0xB6 :
-      return "\x70\x63";
-      break;
-    case 0xB7 :
-      return "\x64\x6D";
-      break;
-    case 0xB8 :
-      return "\x64\x6D\x32";
-      break;
-    case 0xB9 :
-      return "\x64\x6D\x33";
-      break;
-    case 0xBA :
-      return "\x69\x75";
-      break;
-    case 0xBB :
-      return "\xE5\xB9\xB3\xE6\x88\x90";
-      break;
-    case 0xBC :
-      return "\xE6\x98\xAD\xE5\x92\x8C";
-      break;
-    case 0xBD :
-      return "\xE5\xA4\xA7\xE6\xAD\xA3";
-      break;
-    case 0xBE :
-      return "\xE6\x98\x8E\xE6\xB2\xBB";
-      break;
-    case 0xBF :
-      return "\xE6\xA0\xAA\xE5\xBC\x8F\xE4\xBC\x9A\xE7\xA4\xBE";
-      break;
-    }
-    break;
-  case 0x8E :
-    switch (str[2]) {
-    case 0x80 :
-      return "\x70\x61";
-      break;
-    case 0x81 :
-      return "\x6E\x61";
-      break;
-    case 0x82 :
-      return "\xCE\xBC\x61";
-      break;
-    case 0x83 :
-      return "\x6D\x61";
-      break;
-    case 0x84 :
-      return "\x6B\x61";
-      break;
-    case 0x85 :
-      return "\x6B\x62";
-      break;
-    case 0x86 :
-      return "\x6D\x62";
-      break;
-    case 0x87 :
-      return "\x67\x62";
-      break;
-    case 0x88 :
-      return "\x63\x61\x6C";
-      break;
-    case 0x89 :
-      return "\x6B\x63\x61\x6C";
-      break;
-    case 0x8A :
-      return "\x70\x66";
-      break;
-    case 0x8B :
-      return "\x6E\x66";
-      break;
-    case 0x8C :
-      return "\xCE\xBC\x66";
-      break;
-    case 0x8D :
-      return "\xCE\xBC\x67";
-      break;
-    case 0x8E :
-      return "\x6D\x67";
-      break;
-    case 0x8F :
-      return "\x6B\x67";
-      break;
-    case 0x90 :
-      return "\x68\x7A";
-      break;
-    case 0x91 :
-      return "\x6B\x68\x7A";
-      break;
-    case 0x92 :
-      return "\x6D\x68\x7A";
-      break;
-    case 0x93 :
-      return "\x67\x68\x7A";
-      break;
-    case 0x94 :
-      return "\x74\x68\x7A";
-      break;
-    case 0x95 :
-      return "\xCE\xBC\x6C";
-      break;
-    case 0x96 :
-      return "\x6D\x6C";
-      break;
-    case 0x97 :
-      return "\x64\x6C";
-      break;
-    case 0x98 :
-      return "\x6B\x6C";
-      break;
-    case 0x99 :
-      return "\x66\x6D";
-      break;
-    case 0x9A :
-      return "\x6E\x6D";
-      break;
-    case 0x9B :
-      return "\xCE\xBC\x6D";
-      break;
-    case 0x9C :
-      return "\x6D\x6D";
-      break;
-    case 0x9D :
-      return "\x63\x6D";
-      break;
-    case 0x9E :
-      return "\x6B\x6D";
-      break;
-    case 0x9F :
-      return "\x6D\x6D\x32";
-      break;
-    case 0xA0 :
-      return "\x63\x6D\x32";
-      break;
-    case 0xA1 :
-      return "\x6D\x32";
-      break;
-    case 0xA2 :
-      return "\x6B\x6D\x32";
-      break;
-    case 0xA3 :
-      return "\x6D\x6D\x33";
-      break;
-    case 0xA4 :
-      return "\x63\x6D\x33";
-      break;
-    case 0xA5 :
-      return "\x6D\x33";
-      break;
-    case 0xA6 :
-      return "\x6B\x6D\x33";
-      break;
-    case 0xA7 :
-      return "\x6D\xE2\x88\x95\x73";
-      break;
-    case 0xA8 :
-      return "\x6D\xE2\x88\x95\x73\x32";
-      break;
-    case 0xA9 :
-      return "\x70\x61";
-      break;
-    case 0xAA :
-      return "\x6B\x70\x61";
-      break;
-    case 0xAB :
-      return "\x6D\x70\x61";
-      break;
-    case 0xAC :
-      return "\x67\x70\x61";
-      break;
-    case 0xAD :
-      return "\x72\x61\x64";
-      break;
-    case 0xAE :
-      return "\x72\x61\x64\xE2\x88\x95\x73";
-      break;
-    case 0xAF :
-      return "\x72\x61\x64\xE2\x88\x95\x73\x32";
-      break;
-    case 0xB0 :
-      return "\x70\x73";
-      break;
-    case 0xB1 :
-      return "\x6E\x73";
-      break;
-    case 0xB2 :
-      return "\xCE\xBC\x73";
-      break;
-    case 0xB3 :
-      return "\x6D\x73";
-      break;
-    case 0xB4 :
-      return "\x70\x76";
-      break;
-    case 0xB5 :
-      return "\x6E\x76";
-      break;
-    case 0xB6 :
-      return "\xCE\xBC\x76";
-      break;
-    case 0xB7 :
-      return "\x6D\x76";
-      break;
-    case 0xB8 :
-      return "\x6B\x76";
-      break;
-    case 0xB9 :
-      return "\x6D\x76";
-      break;
-    case 0xBA :
-      return "\x70\x77";
-      break;
-    case 0xBB :
-      return "\x6E\x77";
-      break;
-    case 0xBC :
-      return "\xCE\xBC\x77";
-      break;
-    case 0xBD :
-      return "\x6D\x77";
-      break;
-    case 0xBE :
-      return "\x6B\x77";
-      break;
-    case 0xBF :
-      return "\x6D\x77";
-      break;
-    }
-    break;
-  case 0x8F :
-    switch (str[2]) {
-    case 0x80 :
-      return "\x6B\xCE\xA9";
-      break;
-    case 0x81 :
-      return "\x6D\xCE\xA9";
-      break;
-    case 0x82 :
-      return "\x61\x2E\x6D\x2E";
-      break;
-    case 0x83 :
-      return "\x62\x71";
-      break;
-    case 0x84 :
-      return "\x63\x63";
-      break;
-    case 0x85 :
-      return "\x63\x64";
-      break;
-    case 0x86 :
-      return "\x63\xE2\x88\x95\x6B\x67";
-      break;
-    case 0x87 :
-      return "\x63\x6F\x2E";
-      break;
-    case 0x88 :
-      return "\x64\x62";
-      break;
-    case 0x89 :
-      return "\x67\x79";
-      break;
-    case 0x8A :
-      return "\x68\x61";
-      break;
-    case 0x8B :
-      return "\x68\x70";
-      break;
-    case 0x8C :
-      return "\x69\x6E";
-      break;
-    case 0x8D :
-      return "\x6B\x6B";
-      break;
-    case 0x8E :
-      return "\x6B\x6D";
-      break;
-    case 0x8F :
-      return "\x6B\x74";
-      break;
-    case 0x90 :
-      return "\x6C\x6D";
-      break;
-    case 0x91 :
-      return "\x6C\x6E";
-      break;
-    case 0x92 :
-      return "\x6C\x6F\x67";
-      break;
-    case 0x93 :
-      return "\x6C\x78";
-      break;
-    case 0x94 :
-      return "\x6D\x62";
-      break;
-    case 0x95 :
-      return "\x6D\x69\x6C";
-      break;
-    case 0x96 :
-      return "\x6D\x6F\x6C";
-      break;
-    case 0x97 :
-      return "\x70\x68";
-      break;
-    case 0x98 :
-      return "\x70\x2E\x6D\x2E";
-      break;
-    case 0x99 :
-      return "\x70\x70\x6D";
-      break;
-    case 0x9A :
-      return "\x70\x72";
-      break;
-    case 0x9B :
-      return "\x73\x72";
-      break;
-    case 0x9C :
-      return "\x73\x76";
-      break;
-    case 0x9D :
-      return "\x77\x62";
-      break;
-    case 0x9E :
-      return "\x76\xE2\x88\x95\x6D";
-      break;
-    case 0x9F :
-      return "\x61\xE2\x88\x95\x6D";
-      break;
-    case 0xA0 :
-      return "\x31\xE6\x97\xA5";
-      break;
-    case 0xA1 :
-      return "\x32\xE6\x97\xA5";
-      break;
-    case 0xA2 :
-      return "\x33\xE6\x97\xA5";
-      break;
-    case 0xA3 :
-      return "\x34\xE6\x97\xA5";
-      break;
-    case 0xA4 :
-      return "\x35\xE6\x97\xA5";
-      break;
-    case 0xA5 :
-      return "\x36\xE6\x97\xA5";
-      break;
-    case 0xA6 :
-      return "\x37\xE6\x97\xA5";
-      break;
-    case 0xA7 :
-      return "\x38\xE6\x97\xA5";
-      break;
-    case 0xA8 :
-      return "\x39\xE6\x97\xA5";
-      break;
-    case 0xA9 :
-      return "\x31\x30\xE6\x97\xA5";
-      break;
-    case 0xAA :
-      return "\x31\x31\xE6\x97\xA5";
-      break;
-    case 0xAB :
-      return "\x31\x32\xE6\x97\xA5";
-      break;
-    case 0xAC :
-      return "\x31\x33\xE6\x97\xA5";
-      break;
-    case 0xAD :
-      return "\x31\x34\xE6\x97\xA5";
-      break;
-    case 0xAE :
-      return "\x31\x35\xE6\x97\xA5";
-      break;
-    case 0xAF :
-      return "\x31\x36\xE6\x97\xA5";
-      break;
-    case 0xB0 :
-      return "\x31\x37\xE6\x97\xA5";
-      break;
-    case 0xB1 :
-      return "\x31\x38\xE6\x97\xA5";
-      break;
-    case 0xB2 :
-      return "\x31\x39\xE6\x97\xA5";
-      break;
-    case 0xB3 :
-      return "\x32\x30\xE6\x97\xA5";
-      break;
-    case 0xB4 :
-      return "\x32\x31\xE6\x97\xA5";
-      break;
-    case 0xB5 :
-      return "\x32\x32\xE6\x97\xA5";
-      break;
-    case 0xB6 :
-      return "\x32\x33\xE6\x97\xA5";
-      break;
-    case 0xB7 :
-      return "\x32\x34\xE6\x97\xA5";
-      break;
-    case 0xB8 :
-      return "\x32\x35\xE6\x97\xA5";
-      break;
-    case 0xB9 :
-      return "\x32\x36\xE6\x97\xA5";
-      break;
-    case 0xBA :
-      return "\x32\x37\xE6\x97\xA5";
-      break;
-    case 0xBB :
-      return "\x32\x38\xE6\x97\xA5";
-      break;
-    case 0xBC :
-      return "\x32\x39\xE6\x97\xA5";
-      break;
-    case 0xBD :
-      return "\x33\x30\xE6\x97\xA5";
-      break;
-    case 0xBE :
-      return "\x33\x31\xE6\x97\xA5";
-      break;
-    case 0xBF :
-      return "\x67\x61\x6C";
-      break;
-    }
-    break;
-  }
-  break;
-case 0xEF :
-  switch (str[1]) {
-  case 0xA4 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE8\xB1\x88";
-      break;
-    case 0x81 :
-      return "\xE6\x9B\xB4";
-      break;
-    case 0x82 :
-      return "\xE8\xBB\x8A";
-      break;
-    case 0x83 :
-      return "\xE8\xB3\x88";
-      break;
-    case 0x84 :
-      return "\xE6\xBB\x91";
-      break;
-    case 0x85 :
-      return "\xE4\xB8\xB2";
-      break;
-    case 0x86 :
-      return "\xE5\x8F\xA5";
-      break;
-    case 0x87 :
-      return "\xE9\xBE\x9C";
-      break;
-    case 0x88 :
-      return "\xE9\xBE\x9C";
-      break;
-    case 0x89 :
-      return "\xE5\xA5\x91";
-      break;
-    case 0x8A :
-      return "\xE9\x87\x91";
-      break;
-    case 0x8B :
-      return "\xE5\x96\x87";
-      break;
-    case 0x8C :
-      return "\xE5\xA5\x88";
-      break;
-    case 0x8D :
-      return "\xE6\x87\xB6";
-      break;
-    case 0x8E :
-      return "\xE7\x99\xA9";
-      break;
-    case 0x8F :
-      return "\xE7\xBE\x85";
-      break;
-    case 0x90 :
-      return "\xE8\x98\xBF";
-      break;
-    case 0x91 :
-      return "\xE8\x9E\xBA";
-      break;
-    case 0x92 :
-      return "\xE8\xA3\xB8";
-      break;
-    case 0x93 :
-      return "\xE9\x82\x8F";
-      break;
-    case 0x94 :
-      return "\xE6\xA8\x82";
-      break;
-    case 0x95 :
-      return "\xE6\xB4\x9B";
-      break;
-    case 0x96 :
-      return "\xE7\x83\x99";
-      break;
-    case 0x97 :
-      return "\xE7\x8F\x9E";
-      break;
-    case 0x98 :
-      return "\xE8\x90\xBD";
-      break;
-    case 0x99 :
-      return "\xE9\x85\xAA";
-      break;
-    case 0x9A :
-      return "\xE9\xA7\xB1";
-      break;
-    case 0x9B :
-      return "\xE4\xBA\x82";
-      break;
-    case 0x9C :
-      return "\xE5\x8D\xB5";
-      break;
-    case 0x9D :
-      return "\xE6\xAC\x84";
-      break;
-    case 0x9E :
-      return "\xE7\x88\x9B";
-      break;
-    case 0x9F :
-      return "\xE8\x98\xAD";
-      break;
-    case 0xA0 :
-      return "\xE9\xB8\x9E";
-      break;
-    case 0xA1 :
-      return "\xE5\xB5\x90";
-      break;
-    case 0xA2 :
-      return "\xE6\xBF\xAB";
-      break;
-    case 0xA3 :
-      return "\xE8\x97\x8D";
-      break;
-    case 0xA4 :
-      return "\xE8\xA5\xA4";
-      break;
-    case 0xA5 :
-      return "\xE6\x8B\x89";
-      break;
-    case 0xA6 :
-      return "\xE8\x87\x98";
-      break;
-    case 0xA7 :
-      return "\xE8\xA0\x9F";
-      break;
-    case 0xA8 :
-      return "\xE5\xBB\x8A";
-      break;
-    case 0xA9 :
-      return "\xE6\x9C\x97";
-      break;
-    case 0xAA :
-      return "\xE6\xB5\xAA";
-      break;
-    case 0xAB :
-      return "\xE7\x8B\xBC";
-      break;
-    case 0xAC :
-      return "\xE9\x83\x8E";
-      break;
-    case 0xAD :
-      return "\xE4\xBE\x86";
-      break;
-    case 0xAE :
-      return "\xE5\x86\xB7";
-      break;
-    case 0xAF :
-      return "\xE5\x8B\x9E";
-      break;
-    case 0xB0 :
-      return "\xE6\x93\x84";
-      break;
-    case 0xB1 :
-      return "\xE6\xAB\x93";
-      break;
-    case 0xB2 :
-      return "\xE7\x88\x90";
-      break;
-    case 0xB3 :
-      return "\xE7\x9B\xA7";
-      break;
-    case 0xB4 :
-      return "\xE8\x80\x81";
-      break;
-    case 0xB5 :
-      return "\xE8\x98\x86";
-      break;
-    case 0xB6 :
-      return "\xE8\x99\x9C";
-      break;
-    case 0xB7 :
-      return "\xE8\xB7\xAF";
-      break;
-    case 0xB8 :
-      return "\xE9\x9C\xB2";
-      break;
-    case 0xB9 :
-      return "\xE9\xAD\xAF";
-      break;
-    case 0xBA :
-      return "\xE9\xB7\xBA";
-      break;
-    case 0xBB :
-      return "\xE7\xA2\x8C";
-      break;
-    case 0xBC :
-      return "\xE7\xA5\xBF";
-      break;
-    case 0xBD :
-      return "\xE7\xB6\xA0";
-      break;
-    case 0xBE :
-      return "\xE8\x8F\x89";
-      break;
-    case 0xBF :
-      return "\xE9\x8C\x84";
-      break;
-    }
-    break;
-  case 0xA5 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE9\xB9\xBF";
-      break;
-    case 0x81 :
-      return "\xE8\xAB\x96";
-      break;
-    case 0x82 :
-      return "\xE5\xA3\x9F";
-      break;
-    case 0x83 :
-      return "\xE5\xBC\x84";
-      break;
-    case 0x84 :
-      return "\xE7\xB1\xA0";
-      break;
-    case 0x85 :
-      return "\xE8\x81\xBE";
-      break;
-    case 0x86 :
-      return "\xE7\x89\xA2";
-      break;
-    case 0x87 :
-      return "\xE7\xA3\x8A";
-      break;
-    case 0x88 :
-      return "\xE8\xB3\x82";
-      break;
-    case 0x89 :
-      return "\xE9\x9B\xB7";
-      break;
-    case 0x8A :
-      return "\xE5\xA3\x98";
-      break;
-    case 0x8B :
-      return "\xE5\xB1\xA2";
-      break;
-    case 0x8C :
-      return "\xE6\xA8\x93";
-      break;
-    case 0x8D :
-      return "\xE6\xB7\x9A";
-      break;
-    case 0x8E :
-      return "\xE6\xBC\x8F";
-      break;
-    case 0x8F :
-      return "\xE7\xB4\xAF";
-      break;
-    case 0x90 :
-      return "\xE7\xB8\xB7";
-      break;
-    case 0x91 :
-      return "\xE9\x99\x8B";
-      break;
-    case 0x92 :
-      return "\xE5\x8B\x92";
-      break;
-    case 0x93 :
-      return "\xE8\x82\x8B";
-      break;
-    case 0x94 :
-      return "\xE5\x87\x9C";
-      break;
-    case 0x95 :
-      return "\xE5\x87\x8C";
-      break;
-    case 0x96 :
-      return "\xE7\xA8\x9C";
-      break;
-    case 0x97 :
-      return "\xE7\xB6\xBE";
-      break;
-    case 0x98 :
-      return "\xE8\x8F\xB1";
-      break;
-    case 0x99 :
-      return "\xE9\x99\xB5";
-      break;
-    case 0x9A :
-      return "\xE8\xAE\x80";
-      break;
-    case 0x9B :
-      return "\xE6\x8B\x8F";
-      break;
-    case 0x9C :
-      return "\xE6\xA8\x82";
-      break;
-    case 0x9D :
-      return "\xE8\xAB\xBE";
-      break;
-    case 0x9E :
-      return "\xE4\xB8\xB9";
-      break;
-    case 0x9F :
-      return "\xE5\xAF\xA7";
-      break;
-    case 0xA0 :
-      return "\xE6\x80\x92";
-      break;
-    case 0xA1 :
-      return "\xE7\x8E\x87";
-      break;
-    case 0xA2 :
-      return "\xE7\x95\xB0";
-      break;
-    case 0xA3 :
-      return "\xE5\x8C\x97";
-      break;
-    case 0xA4 :
-      return "\xE7\xA3\xBB";
-      break;
-    case 0xA5 :
-      return "\xE4\xBE\xBF";
-      break;
-    case 0xA6 :
-      return "\xE5\xBE\xA9";
-      break;
-    case 0xA7 :
-      return "\xE4\xB8\x8D";
-      break;
-    case 0xA8 :
-      return "\xE6\xB3\x8C";
-      break;
-    case 0xA9 :
-      return "\xE6\x95\xB8";
-      break;
-    case 0xAA :
-      return "\xE7\xB4\xA2";
-      break;
-    case 0xAB :
-      return "\xE5\x8F\x83";
-      break;
-    case 0xAC :
-      return "\xE5\xA1\x9E";
-      break;
-    case 0xAD :
-      return "\xE7\x9C\x81";
-      break;
-    case 0xAE :
-      return "\xE8\x91\x89";
-      break;
-    case 0xAF :
-      return "\xE8\xAA\xAA";
-      break;
-    case 0xB0 :
-      return "\xE6\xAE\xBA";
-      break;
-    case 0xB1 :
-      return "\xE8\xBE\xB0";
-      break;
-    case 0xB2 :
-      return "\xE6\xB2\x88";
-      break;
-    case 0xB3 :
-      return "\xE6\x8B\xBE";
-      break;
-    case 0xB4 :
-      return "\xE8\x8B\xA5";
-      break;
-    case 0xB5 :
-      return "\xE6\x8E\xA0";
-      break;
-    case 0xB6 :
-      return "\xE7\x95\xA5";
-      break;
-    case 0xB7 :
-      return "\xE4\xBA\xAE";
-      break;
-    case 0xB8 :
-      return "\xE5\x85\xA9";
-      break;
-    case 0xB9 :
-      return "\xE5\x87\x89";
-      break;
-    case 0xBA :
-      return "\xE6\xA2\x81";
-      break;
-    case 0xBB :
-      return "\xE7\xB3\xA7";
-      break;
-    case 0xBC :
-      return "\xE8\x89\xAF";
-      break;
-    case 0xBD :
-      return "\xE8\xAB\x92";
-      break;
-    case 0xBE :
-      return "\xE9\x87\x8F";
-      break;
-    case 0xBF :
-      return "\xE5\x8B\xB5";
-      break;
-    }
-    break;
-  case 0xA6 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE5\x91\x82";
-      break;
-    case 0x81 :
-      return "\xE5\xA5\xB3";
-      break;
-    case 0x82 :
-      return "\xE5\xBB\xAC";
-      break;
-    case 0x83 :
-      return "\xE6\x97\x85";
-      break;
-    case 0x84 :
-      return "\xE6\xBF\xBE";
-      break;
-    case 0x85 :
-      return "\xE7\xA4\xAA";
-      break;
-    case 0x86 :
-      return "\xE9\x96\xAD";
-      break;
-    case 0x87 :
-      return "\xE9\xA9\xAA";
-      break;
-    case 0x88 :
-      return "\xE9\xBA\x97";
-      break;
-    case 0x89 :
-      return "\xE9\xBB\x8E";
-      break;
-    case 0x8A :
-      return "\xE5\x8A\x9B";
-      break;
-    case 0x8B :
-      return "\xE6\x9B\x86";
-      break;
-    case 0x8C :
-      return "\xE6\xAD\xB7";
-      break;
-    case 0x8D :
-      return "\xE8\xBD\xA2";
-      break;
-    case 0x8E :
-      return "\xE5\xB9\xB4";
-      break;
-    case 0x8F :
-      return "\xE6\x86\x90";
-      break;
-    case 0x90 :
-      return "\xE6\x88\x80";
-      break;
-    case 0x91 :
-      return "\xE6\x92\x9A";
-      break;
-    case 0x92 :
-      return "\xE6\xBC\xA3";
-      break;
-    case 0x93 :
-      return "\xE7\x85\x89";
-      break;
-    case 0x94 :
-      return "\xE7\x92\x89";
-      break;
-    case 0x95 :
-      return "\xE7\xA7\x8A";
-      break;
-    case 0x96 :
-      return "\xE7\xB7\xB4";
-      break;
-    case 0x97 :
-      return "\xE8\x81\xAF";
-      break;
-    case 0x98 :
-      return "\xE8\xBC\xA6";
-      break;
-    case 0x99 :
-      return "\xE8\x93\xAE";
-      break;
-    case 0x9A :
-      return "\xE9\x80\xA3";
-      break;
-    case 0x9B :
-      return "\xE9\x8D\x8A";
-      break;
-    case 0x9C :
-      return "\xE5\x88\x97";
-      break;
-    case 0x9D :
-      return "\xE5\x8A\xA3";
-      break;
-    case 0x9E :
-      return "\xE5\x92\xBD";
-      break;
-    case 0x9F :
-      return "\xE7\x83\x88";
-      break;
-    case 0xA0 :
-      return "\xE8\xA3\x82";
-      break;
-    case 0xA1 :
-      return "\xE8\xAA\xAA";
-      break;
-    case 0xA2 :
-      return "\xE5\xBB\x89";
-      break;
-    case 0xA3 :
-      return "\xE5\xBF\xB5";
-      break;
-    case 0xA4 :
-      return "\xE6\x8D\xBB";
-      break;
-    case 0xA5 :
-      return "\xE6\xAE\xAE";
-      break;
-    case 0xA6 :
-      return "\xE7\xB0\xBE";
-      break;
-    case 0xA7 :
-      return "\xE7\x8D\xB5";
-      break;
-    case 0xA8 :
-      return "\xE4\xBB\xA4";
-      break;
-    case 0xA9 :
-      return "\xE5\x9B\xB9";
-      break;
-    case 0xAA :
-      return "\xE5\xAF\xA7";
-      break;
-    case 0xAB :
-      return "\xE5\xB6\xBA";
-      break;
-    case 0xAC :
-      return "\xE6\x80\x9C";
-      break;
-    case 0xAD :
-      return "\xE7\x8E\xB2";
-      break;
-    case 0xAE :
-      return "\xE7\x91\xA9";
-      break;
-    case 0xAF :
-      return "\xE7\xBE\x9A";
-      break;
-    case 0xB0 :
-      return "\xE8\x81\x86";
-      break;
-    case 0xB1 :
-      return "\xE9\x88\xB4";
-      break;
-    case 0xB2 :
-      return "\xE9\x9B\xB6";
-      break;
-    case 0xB3 :
-      return "\xE9\x9D\x88";
-      break;
-    case 0xB4 :
-      return "\xE9\xA0\x98";
-      break;
-    case 0xB5 :
-      return "\xE4\xBE\x8B";
-      break;
-    case 0xB6 :
-      return "\xE7\xA6\xAE";
-      break;
-    case 0xB7 :
-      return "\xE9\x86\xB4";
-      break;
-    case 0xB8 :
-      return "\xE9\x9A\xB8";
-      break;
-    case 0xB9 :
-      return "\xE6\x83\xA1";
-      break;
-    case 0xBA :
-      return "\xE4\xBA\x86";
-      break;
-    case 0xBB :
-      return "\xE5\x83\x9A";
-      break;
-    case 0xBC :
-      return "\xE5\xAF\xAE";
-      break;
-    case 0xBD :
-      return "\xE5\xB0\xBF";
-      break;
-    case 0xBE :
-      return "\xE6\x96\x99";
-      break;
-    case 0xBF :
-      return "\xE6\xA8\x82";
-      break;
-    }
-    break;
-  case 0xA7 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE7\x87\x8E";
-      break;
-    case 0x81 :
-      return "\xE7\x99\x82";
-      break;
-    case 0x82 :
-      return "\xE8\x93\xBC";
-      break;
-    case 0x83 :
-      return "\xE9\x81\xBC";
-      break;
-    case 0x84 :
-      return "\xE9\xBE\x8D";
-      break;
-    case 0x85 :
-      return "\xE6\x9A\x88";
-      break;
-    case 0x86 :
-      return "\xE9\x98\xAE";
-      break;
-    case 0x87 :
-      return "\xE5\x8A\x89";
-      break;
-    case 0x88 :
-      return "\xE6\x9D\xBB";
-      break;
-    case 0x89 :
-      return "\xE6\x9F\xB3";
-      break;
-    case 0x8A :
-      return "\xE6\xB5\x81";
-      break;
-    case 0x8B :
-      return "\xE6\xBA\x9C";
-      break;
-    case 0x8C :
-      return "\xE7\x90\x89";
-      break;
-    case 0x8D :
-      return "\xE7\x95\x99";
-      break;
-    case 0x8E :
-      return "\xE7\xA1\xAB";
-      break;
-    case 0x8F :
-      return "\xE7\xB4\x90";
-      break;
-    case 0x90 :
-      return "\xE9\xA1\x9E";
-      break;
-    case 0x91 :
-      return "\xE5\x85\xAD";
-      break;
-    case 0x92 :
-      return "\xE6\x88\xAE";
-      break;
-    case 0x93 :
-      return "\xE9\x99\xB8";
-      break;
-    case 0x94 :
-      return "\xE5\x80\xAB";
-      break;
-    case 0x95 :
-      return "\xE5\xB4\x99";
-      break;
-    case 0x96 :
-      return "\xE6\xB7\xAA";
-      break;
-    case 0x97 :
-      return "\xE8\xBC\xAA";
-      break;
-    case 0x98 :
-      return "\xE5\xBE\x8B";
-      break;
-    case 0x99 :
-      return "\xE6\x85\x84";
-      break;
-    case 0x9A :
-      return "\xE6\xA0\x97";
-      break;
-    case 0x9B :
-      return "\xE7\x8E\x87";
-      break;
-    case 0x9C :
-      return "\xE9\x9A\x86";
-      break;
-    case 0x9D :
-      return "\xE5\x88\xA9";
-      break;
-    case 0x9E :
-      return "\xE5\x90\x8F";
-      break;
-    case 0x9F :
-      return "\xE5\xB1\xA5";
-      break;
-    case 0xA0 :
-      return "\xE6\x98\x93";
-      break;
-    case 0xA1 :
-      return "\xE6\x9D\x8E";
-      break;
-    case 0xA2 :
-      return "\xE6\xA2\xA8";
-      break;
-    case 0xA3 :
-      return "\xE6\xB3\xA5";
-      break;
-    case 0xA4 :
-      return "\xE7\x90\x86";
-      break;
-    case 0xA5 :
-      return "\xE7\x97\xA2";
-      break;
-    case 0xA6 :
-      return "\xE7\xBD\xB9";
-      break;
-    case 0xA7 :
-      return "\xE8\xA3\x8F";
-      break;
-    case 0xA8 :
-      return "\xE8\xA3\xA1";
-      break;
-    case 0xA9 :
-      return "\xE9\x87\x8C";
-      break;
-    case 0xAA :
-      return "\xE9\x9B\xA2";
-      break;
-    case 0xAB :
-      return "\xE5\x8C\xBF";
-      break;
-    case 0xAC :
-      return "\xE6\xBA\xBA";
-      break;
-    case 0xAD :
-      return "\xE5\x90\x9D";
-      break;
-    case 0xAE :
-      return "\xE7\x87\x90";
-      break;
-    case 0xAF :
-      return "\xE7\x92\x98";
-      break;
-    case 0xB0 :
-      return "\xE8\x97\xBA";
-      break;
-    case 0xB1 :
-      return "\xE9\x9A\xA3";
-      break;
-    case 0xB2 :
-      return "\xE9\xB1\x97";
-      break;
-    case 0xB3 :
-      return "\xE9\xBA\x9F";
-      break;
-    case 0xB4 :
-      return "\xE6\x9E\x97";
-      break;
-    case 0xB5 :
-      return "\xE6\xB7\x8B";
-      break;
-    case 0xB6 :
-      return "\xE8\x87\xA8";
-      break;
-    case 0xB7 :
-      return "\xE7\xAB\x8B";
-      break;
-    case 0xB8 :
-      return "\xE7\xAC\xA0";
-      break;
-    case 0xB9 :
-      return "\xE7\xB2\x92";
-      break;
-    case 0xBA :
-      return "\xE7\x8B\x80";
-      break;
-    case 0xBB :
-      return "\xE7\x82\x99";
-      break;
-    case 0xBC :
-      return "\xE8\xAD\x98";
-      break;
-    case 0xBD :
-      return "\xE4\xBB\x80";
-      break;
-    case 0xBE :
-      return "\xE8\x8C\xB6";
-      break;
-    case 0xBF :
-      return "\xE5\x88\xBA";
-      break;
-    }
-    break;
-  case 0xA8 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE5\x88\x87";
-      break;
-    case 0x81 :
-      return "\xE5\xBA\xA6";
-      break;
-    case 0x82 :
-      return "\xE6\x8B\x93";
-      break;
-    case 0x83 :
-      return "\xE7\xB3\x96";
-      break;
-    case 0x84 :
-      return "\xE5\xAE\x85";
-      break;
-    case 0x85 :
-      return "\xE6\xB4\x9E";
-      break;
-    case 0x86 :
-      return "\xE6\x9A\xB4";
-      break;
-    case 0x87 :
-      return "\xE8\xBC\xBB";
-      break;
-    case 0x88 :
-      return "\xE8\xA1\x8C";
-      break;
-    case 0x89 :
-      return "\xE9\x99\x8D";
-      break;
-    case 0x8A :
-      return "\xE8\xA6\x8B";
-      break;
-    case 0x8B :
-      return "\xE5\xBB\x93";
-      break;
-    case 0x8C :
-      return "\xE5\x85\x80";
-      break;
-    case 0x8D :
-      return "\xE5\x97\x80";
-      break;
-    case 0x90 :
-      return "\xE5\xA1\x9A";
-      break;
-    case 0x92 :
-      return "\xE6\x99\xB4";
-      break;
-    case 0x95 :
-      return "\xE5\x87\x9E";
-      break;
-    case 0x96 :
-      return "\xE7\x8C\xAA";
-      break;
-    case 0x97 :
-      return "\xE7\x9B\x8A";
-      break;
-    case 0x98 :
-      return "\xE7\xA4\xBC";
-      break;
-    case 0x99 :
-      return "\xE7\xA5\x9E";
-      break;
-    case 0x9A :
-      return "\xE7\xA5\xA5";
-      break;
-    case 0x9B :
-      return "\xE7\xA6\x8F";
-      break;
-    case 0x9C :
-      return "\xE9\x9D\x96";
-      break;
-    case 0x9D :
-      return "\xE7\xB2\xBE";
-      break;
-    case 0x9E :
-      return "\xE7\xBE\xBD";
-      break;
-    case 0xA0 :
-      return "\xE8\x98\x92";
-      break;
-    case 0xA2 :
-      return "\xE8\xAB\xB8";
-      break;
-    case 0xA5 :
-      return "\xE9\x80\xB8";
-      break;
-    case 0xA6 :
-      return "\xE9\x83\xBD";
-      break;
-    case 0xAA :
-      return "\xE9\xA3\xAF";
-      break;
-    case 0xAB :
-      return "\xE9\xA3\xBC";
-      break;
-    case 0xAC :
-      return "\xE9\xA4\xA8";
-      break;
-    case 0xAD :
-      return "\xE9\xB6\xB4";
-      break;
-    case 0xB0 :
-      return "\xE4\xBE\xAE";
-      break;
-    case 0xB1 :
-      return "\xE5\x83\xA7";
-      break;
-    case 0xB2 :
-      return "\xE5\x85\x8D";
-      break;
-    case 0xB3 :
-      return "\xE5\x8B\x89";
-      break;
-    case 0xB4 :
-      return "\xE5\x8B\xA4";
-      break;
-    case 0xB5 :
-      return "\xE5\x8D\x91";
-      break;
-    case 0xB6 :
-      return "\xE5\x96\x9D";
-      break;
-    case 0xB7 :
-      return "\xE5\x98\x86";
-      break;
-    case 0xB8 :
-      return "\xE5\x99\xA8";
-      break;
-    case 0xB9 :
-      return "\xE5\xA1\x80";
-      break;
-    case 0xBA :
-      return "\xE5\xA2\xA8";
-      break;
-    case 0xBB :
-      return "\xE5\xB1\xA4";
-      break;
-    case 0xBC :
-      return "\xE5\xB1\xAE";
-      break;
-    case 0xBD :
-      return "\xE6\x82\x94";
-      break;
-    case 0xBE :
-      return "\xE6\x85\xA8";
-      break;
-    case 0xBF :
-      return "\xE6\x86\x8E";
-      break;
-    }
-    break;
-  case 0xA9 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE6\x87\xB2";
-      break;
-    case 0x81 :
-      return "\xE6\x95\x8F";
-      break;
-    case 0x82 :
-      return "\xE6\x97\xA2";
-      break;
-    case 0x83 :
-      return "\xE6\x9A\x91";
-      break;
-    case 0x84 :
-      return "\xE6\xA2\x85";
-      break;
-    case 0x85 :
-      return "\xE6\xB5\xB7";
-      break;
-    case 0x86 :
-      return "\xE6\xB8\x9A";
-      break;
-    case 0x87 :
-      return "\xE6\xBC\xA2";
-      break;
-    case 0x88 :
-      return "\xE7\x85\xAE";
-      break;
-    case 0x89 :
-      return "\xE7\x88\xAB";
-      break;
-    case 0x8A :
-      return "\xE7\x90\xA2";
-      break;
-    case 0x8B :
-      return "\xE7\xA2\x91";
-      break;
-    case 0x8C :
-      return "\xE7\xA4\xBE";
-      break;
-    case 0x8D :
-      return "\xE7\xA5\x89";
-      break;
-    case 0x8E :
-      return "\xE7\xA5\x88";
-      break;
-    case 0x8F :
-      return "\xE7\xA5\x90";
-      break;
-    case 0x90 :
-      return "\xE7\xA5\x96";
-      break;
-    case 0x91 :
-      return "\xE7\xA5\x9D";
-      break;
-    case 0x92 :
-      return "\xE7\xA6\x8D";
-      break;
-    case 0x93 :
-      return "\xE7\xA6\x8E";
-      break;
-    case 0x94 :
-      return "\xE7\xA9\x80";
-      break;
-    case 0x95 :
-      return "\xE7\xAA\x81";
-      break;
-    case 0x96 :
-      return "\xE7\xAF\x80";
-      break;
-    case 0x97 :
-      return "\xE7\xB7\xB4";
-      break;
-    case 0x98 :
-      return "\xE7\xB8\x89";
-      break;
-    case 0x99 :
-      return "\xE7\xB9\x81";
-      break;
-    case 0x9A :
-      return "\xE7\xBD\xB2";
-      break;
-    case 0x9B :
-      return "\xE8\x80\x85";
-      break;
-    case 0x9C :
-      return "\xE8\x87\xAD";
-      break;
-    case 0x9D :
-      return "\xE8\x89\xB9";
-      break;
-    case 0x9E :
-      return "\xE8\x89\xB9";
-      break;
-    case 0x9F :
-      return "\xE8\x91\x97";
-      break;
-    case 0xA0 :
-      return "\xE8\xA4\x90";
-      break;
-    case 0xA1 :
-      return "\xE8\xA6\x96";
-      break;
-    case 0xA2 :
-      return "\xE8\xAC\x81";
-      break;
-    case 0xA3 :
-      return "\xE8\xAC\xB9";
-      break;
-    case 0xA4 :
-      return "\xE8\xB3\x93";
-      break;
-    case 0xA5 :
-      return "\xE8\xB4\x88";
-      break;
-    case 0xA6 :
-      return "\xE8\xBE\xB6";
-      break;
-    case 0xA7 :
-      return "\xE9\x80\xB8";
-      break;
-    case 0xA8 :
-      return "\xE9\x9B\xA3";
-      break;
-    case 0xA9 :
-      return "\xE9\x9F\xBF";
-      break;
-    case 0xAA :
-      return "\xE9\xA0\xBB";
-      break;
-    case 0xB0 :
-      return "\xE4\xB8\xA6";
-      break;
-    case 0xB1 :
-      return "\xE5\x86\xB5";
-      break;
-    case 0xB2 :
-      return "\xE5\x85\xA8";
-      break;
-    case 0xB3 :
-      return "\xE4\xBE\x80";
-      break;
-    case 0xB4 :
-      return "\xE5\x85\x85";
-      break;
-    case 0xB5 :
-      return "\xE5\x86\x80";
-      break;
-    case 0xB6 :
-      return "\xE5\x8B\x87";
-      break;
-    case 0xB7 :
-      return "\xE5\x8B\xBA";
-      break;
-    case 0xB8 :
-      return "\xE5\x96\x9D";
-      break;
-    case 0xB9 :
-      return "\xE5\x95\x95";
-      break;
-    case 0xBA :
-      return "\xE5\x96\x99";
-      break;
-    case 0xBB :
-      return "\xE5\x97\xA2";
-      break;
-    case 0xBC :
-      return "\xE5\xA1\x9A";
-      break;
-    case 0xBD :
-      return "\xE5\xA2\xB3";
-      break;
-    case 0xBE :
-      return "\xE5\xA5\x84";
-      break;
-    case 0xBF :
-      return "\xE5\xA5\x94";
-      break;
-    }
-    break;
-  case 0xAA :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE5\xA9\xA2";
-      break;
-    case 0x81 :
-      return "\xE5\xAC\xA8";
-      break;
-    case 0x82 :
-      return "\xE5\xBB\x92";
-      break;
-    case 0x83 :
-      return "\xE5\xBB\x99";
-      break;
-    case 0x84 :
-      return "\xE5\xBD\xA9";
-      break;
-    case 0x85 :
-      return "\xE5\xBE\xAD";
-      break;
-    case 0x86 :
-      return "\xE6\x83\x98";
-      break;
-    case 0x87 :
-      return "\xE6\x85\x8E";
-      break;
-    case 0x88 :
-      return "\xE6\x84\x88";
-      break;
-    case 0x89 :
-      return "\xE6\x86\x8E";
-      break;
-    case 0x8A :
-      return "\xE6\x85\xA0";
-      break;
-    case 0x8B :
-      return "\xE6\x87\xB2";
-      break;
-    case 0x8C :
-      return "\xE6\x88\xB4";
-      break;
-    case 0x8D :
-      return "\xE6\x8F\x84";
-      break;
-    case 0x8E :
-      return "\xE6\x90\x9C";
-      break;
-    case 0x8F :
-      return "\xE6\x91\x92";
-      break;
-    case 0x90 :
-      return "\xE6\x95\x96";
-      break;
-    case 0x91 :
-      return "\xE6\x99\xB4";
-      break;
-    case 0x92 :
-      return "\xE6\x9C\x97";
-      break;
-    case 0x93 :
-      return "\xE6\x9C\x9B";
-      break;
-    case 0x94 :
-      return "\xE6\x9D\x96";
-      break;
-    case 0x95 :
-      return "\xE6\xAD\xB9";
-      break;
-    case 0x96 :
-      return "\xE6\xAE\xBA";
-      break;
-    case 0x97 :
-      return "\xE6\xB5\x81";
-      break;
-    case 0x98 :
-      return "\xE6\xBB\x9B";
-      break;
-    case 0x99 :
-      return "\xE6\xBB\x8B";
-      break;
-    case 0x9A :
-      return "\xE6\xBC\xA2";
-      break;
-    case 0x9B :
-      return "\xE7\x80\x9E";
-      break;
-    case 0x9C :
-      return "\xE7\x85\xAE";
-      break;
-    case 0x9D :
-      return "\xE7\x9E\xA7";
-      break;
-    case 0x9E :
-      return "\xE7\x88\xB5";
-      break;
-    case 0x9F :
-      return "\xE7\x8A\xAF";
-      break;
-    case 0xA0 :
-      return "\xE7\x8C\xAA";
-      break;
-    case 0xA1 :
-      return "\xE7\x91\xB1";
-      break;
-    case 0xA2 :
-      return "\xE7\x94\x86";
-      break;
-    case 0xA3 :
-      return "\xE7\x94\xBB";
-      break;
-    case 0xA4 :
-      return "\xE7\x98\x9D";
-      break;
-    case 0xA5 :
-      return "\xE7\x98\x9F";
-      break;
-    case 0xA6 :
-      return "\xE7\x9B\x8A";
-      break;
-    case 0xA7 :
-      return "\xE7\x9B\x9B";
-      break;
-    case 0xA8 :
-      return "\xE7\x9B\xB4";
-      break;
-    case 0xA9 :
-      return "\xE7\x9D\x8A";
-      break;
-    case 0xAA :
-      return "\xE7\x9D\x80";
-      break;
-    case 0xAB :
-      return "\xE7\xA3\x8C";
-      break;
-    case 0xAC :
-      return "\xE7\xAA\xB1";
-      break;
-    case 0xAD :
-      return "\xE7\xAF\x80";
-      break;
-    case 0xAE :
-      return "\xE7\xB1\xBB";
-      break;
-    case 0xAF :
-      return "\xE7\xB5\x9B";
-      break;
-    case 0xB0 :
-      return "\xE7\xB7\xB4";
-      break;
-    case 0xB1 :
-      return "\xE7\xBC\xBE";
-      break;
-    case 0xB2 :
-      return "\xE8\x80\x85";
-      break;
-    case 0xB3 :
-      return "\xE8\x8D\x92";
-      break;
-    case 0xB4 :
-      return "\xE8\x8F\xAF";
-      break;
-    case 0xB5 :
-      return "\xE8\x9D\xB9";
-      break;
-    case 0xB6 :
-      return "\xE8\xA5\x81";
-      break;
-    case 0xB7 :
-      return "\xE8\xA6\x86";
-      break;
-    case 0xB8 :
-      return "\xE8\xA6\x96";
-      break;
-    case 0xB9 :
-      return "\xE8\xAA\xBF";
-      break;
-    case 0xBA :
-      return "\xE8\xAB\xB8";
-      break;
-    case 0xBB :
-      return "\xE8\xAB\x8B";
-      break;
-    case 0xBC :
-      return "\xE8\xAC\x81";
-      break;
-    case 0xBD :
-      return "\xE8\xAB\xBE";
-      break;
-    case 0xBE :
-      return "\xE8\xAB\xAD";
-      break;
-    case 0xBF :
-      return "\xE8\xAC\xB9";
-      break;
-    }
-    break;
-  case 0xAB :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE8\xAE\x8A";
-      break;
-    case 0x81 :
-      return "\xE8\xB4\x88";
-      break;
-    case 0x82 :
-      return "\xE8\xBC\xB8";
-      break;
-    case 0x83 :
-      return "\xE9\x81\xB2";
-      break;
-    case 0x84 :
-      return "\xE9\x86\x99";
-      break;
-    case 0x85 :
-      return "\xE9\x89\xB6";
-      break;
-    case 0x86 :
-      return "\xE9\x99\xBC";
-      break;
-    case 0x87 :
-      return "\xE9\x9B\xA3";
-      break;
-    case 0x88 :
-      return "\xE9\x9D\x96";
-      break;
-    case 0x89 :
-      return "\xE9\x9F\x9B";
-      break;
-    case 0x8A :
-      return "\xE9\x9F\xBF";
-      break;
-    case 0x8B :
-      return "\xE9\xA0\x8B";
-      break;
-    case 0x8C :
-      return "\xE9\xA0\xBB";
-      break;
-    case 0x8D :
-      return "\xE9\xAC\x92";
-      break;
-    case 0x8E :
-      return "\xE9\xBE\x9C";
-      break;
-    case 0x8F :
-      return "\xF0\xA2\xA1\x8A";
-      break;
-    case 0x90 :
-      return "\xF0\xA2\xA1\x84";
-      break;
-    case 0x91 :
-      return "\xF0\xA3\x8F\x95";
-      break;
-    case 0x92 :
-      return "\xE3\xAE\x9D";
-      break;
-    case 0x93 :
-      return "\xE4\x80\x98";
-      break;
-    case 0x94 :
-      return "\xE4\x80\xB9";
-      break;
-    case 0x95 :
-      return "\xF0\xA5\x89\x89";
-      break;
-    case 0x96 :
-      return "\xF0\xA5\xB3\x90";
-      break;
-    case 0x97 :
-      return "\xF0\xA7\xBB\x93";
-      break;
-    case 0x98 :
-      return "\xE9\xBD\x83";
-      break;
-    case 0x99 :
-      return "\xE9\xBE\x8E";
-      break;
-    }
-    break;
-  case 0xAC :
-    switch (str[2]) {
-    case 0x80 :
-      return "\x66\x66";
-      break;
-    case 0x81 :
-      return "\x66\x69";
-      break;
-    case 0x82 :
-      return "\x66\x6C";
-      break;
-    case 0x83 :
-      return "\x66\x66\x69";
-      break;
-    case 0x84 :
-      return "\x66\x66\x6C";
-      break;
-    case 0x85 :
-      return "\x73\x74";
-      break;
-    case 0x86 :
-      return "\x73\x74";
-      break;
-    case 0x93 :
-      return "\xD5\xB4\xD5\xB6";
-      break;
-    case 0x94 :
-      return "\xD5\xB4\xD5\xA5";
-      break;
-    case 0x95 :
-      return "\xD5\xB4\xD5\xAB";
-      break;
-    case 0x96 :
-      return "\xD5\xBE\xD5\xB6";
-      break;
-    case 0x97 :
-      return "\xD5\xB4\xD5\xAD";
-      break;
-    case 0x9D :
-      return "\xD7\x99\xD6\xB4";
-      break;
-    case 0x9F :
-      return "\xD7\xB2\xD6\xB7";
-      break;
-    case 0xA0 :
-      return "\xD7\xA2";
-      break;
-    case 0xA1 :
-      return "\xD7\x90";
-      break;
-    case 0xA2 :
-      return "\xD7\x93";
-      break;
-    case 0xA3 :
-      return "\xD7\x94";
-      break;
-    case 0xA4 :
-      return "\xD7\x9B";
-      break;
-    case 0xA5 :
-      return "\xD7\x9C";
-      break;
-    case 0xA6 :
-      return "\xD7\x9D";
-      break;
-    case 0xA7 :
-      return "\xD7\xA8";
-      break;
-    case 0xA8 :
-      return "\xD7\xAA";
-      break;
-    case 0xA9 :
-      return "\x2B";
-      break;
-    case 0xAA :
-      return "\xD7\xA9\xD7\x81";
-      break;
-    case 0xAB :
-      return "\xD7\xA9\xD7\x82";
-      break;
-    case 0xAC :
-      return "\xD7\xA9\xD6\xBC\xD7\x81";
-      break;
-    case 0xAD :
-      return "\xD7\xA9\xD6\xBC\xD7\x82";
-      break;
-    case 0xAE :
-      return "\xD7\x90\xD6\xB7";
-      break;
-    case 0xAF :
-      return "\xD7\x90\xD6\xB8";
-      break;
-    case 0xB0 :
-      return "\xD7\x90\xD6\xBC";
-      break;
-    case 0xB1 :
-      return "\xD7\x91\xD6\xBC";
-      break;
-    case 0xB2 :
-      return "\xD7\x92\xD6\xBC";
-      break;
-    case 0xB3 :
-      return "\xD7\x93\xD6\xBC";
-      break;
-    case 0xB4 :
-      return "\xD7\x94\xD6\xBC";
-      break;
-    case 0xB5 :
-      return "\xD7\x95\xD6\xBC";
-      break;
-    case 0xB6 :
-      return "\xD7\x96\xD6\xBC";
-      break;
-    case 0xB8 :
-      return "\xD7\x98\xD6\xBC";
-      break;
-    case 0xB9 :
-      return "\xD7\x99\xD6\xBC";
-      break;
-    case 0xBA :
-      return "\xD7\x9A\xD6\xBC";
-      break;
-    case 0xBB :
-      return "\xD7\x9B\xD6\xBC";
-      break;
-    case 0xBC :
-      return "\xD7\x9C\xD6\xBC";
-      break;
-    case 0xBE :
-      return "\xD7\x9E\xD6\xBC";
-      break;
-    }
-    break;
-  case 0xAD :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xD7\xA0\xD6\xBC";
-      break;
-    case 0x81 :
-      return "\xD7\xA1\xD6\xBC";
-      break;
-    case 0x83 :
-      return "\xD7\xA3\xD6\xBC";
-      break;
-    case 0x84 :
-      return "\xD7\xA4\xD6\xBC";
-      break;
-    case 0x86 :
-      return "\xD7\xA6\xD6\xBC";
-      break;
-    case 0x87 :
-      return "\xD7\xA7\xD6\xBC";
-      break;
-    case 0x88 :
-      return "\xD7\xA8\xD6\xBC";
-      break;
-    case 0x89 :
-      return "\xD7\xA9\xD6\xBC";
-      break;
-    case 0x8A :
-      return "\xD7\xAA\xD6\xBC";
-      break;
-    case 0x8B :
-      return "\xD7\x95\xD6\xB9";
-      break;
-    case 0x8C :
-      return "\xD7\x91\xD6\xBF";
-      break;
-    case 0x8D :
-      return "\xD7\x9B\xD6\xBF";
-      break;
-    case 0x8E :
-      return "\xD7\xA4\xD6\xBF";
-      break;
-    case 0x8F :
-      return "\xD7\x90\xD7\x9C";
-      break;
-    case 0x90 :
-      return "\xD9\xB1";
-      break;
-    case 0x91 :
-      return "\xD9\xB1";
-      break;
-    case 0x92 :
-      return "\xD9\xBB";
-      break;
-    case 0x93 :
-      return "\xD9\xBB";
-      break;
-    case 0x94 :
-      return "\xD9\xBB";
-      break;
-    case 0x95 :
-      return "\xD9\xBB";
-      break;
-    case 0x96 :
-      return "\xD9\xBE";
-      break;
-    case 0x97 :
-      return "\xD9\xBE";
-      break;
-    case 0x98 :
-      return "\xD9\xBE";
-      break;
-    case 0x99 :
-      return "\xD9\xBE";
-      break;
-    case 0x9A :
-      return "\xDA\x80";
-      break;
-    case 0x9B :
-      return "\xDA\x80";
-      break;
-    case 0x9C :
-      return "\xDA\x80";
-      break;
-    case 0x9D :
-      return "\xDA\x80";
-      break;
-    case 0x9E :
-      return "\xD9\xBA";
-      break;
-    case 0x9F :
-      return "\xD9\xBA";
-      break;
-    case 0xA0 :
-      return "\xD9\xBA";
-      break;
-    case 0xA1 :
-      return "\xD9\xBA";
-      break;
-    case 0xA2 :
-      return "\xD9\xBF";
-      break;
-    case 0xA3 :
-      return "\xD9\xBF";
-      break;
-    case 0xA4 :
-      return "\xD9\xBF";
-      break;
-    case 0xA5 :
-      return "\xD9\xBF";
-      break;
-    case 0xA6 :
-      return "\xD9\xB9";
-      break;
-    case 0xA7 :
-      return "\xD9\xB9";
-      break;
-    case 0xA8 :
-      return "\xD9\xB9";
-      break;
-    case 0xA9 :
-      return "\xD9\xB9";
-      break;
-    case 0xAA :
-      return "\xDA\xA4";
-      break;
-    case 0xAB :
-      return "\xDA\xA4";
-      break;
-    case 0xAC :
-      return "\xDA\xA4";
-      break;
-    case 0xAD :
-      return "\xDA\xA4";
-      break;
-    case 0xAE :
-      return "\xDA\xA6";
-      break;
-    case 0xAF :
-      return "\xDA\xA6";
-      break;
-    case 0xB0 :
-      return "\xDA\xA6";
-      break;
-    case 0xB1 :
-      return "\xDA\xA6";
-      break;
-    case 0xB2 :
-      return "\xDA\x84";
-      break;
-    case 0xB3 :
-      return "\xDA\x84";
-      break;
-    case 0xB4 :
-      return "\xDA\x84";
-      break;
-    case 0xB5 :
-      return "\xDA\x84";
-      break;
-    case 0xB6 :
-      return "\xDA\x83";
-      break;
-    case 0xB7 :
-      return "\xDA\x83";
-      break;
-    case 0xB8 :
-      return "\xDA\x83";
-      break;
-    case 0xB9 :
-      return "\xDA\x83";
-      break;
-    case 0xBA :
-      return "\xDA\x86";
-      break;
-    case 0xBB :
-      return "\xDA\x86";
-      break;
-    case 0xBC :
-      return "\xDA\x86";
-      break;
-    case 0xBD :
-      return "\xDA\x86";
-      break;
-    case 0xBE :
-      return "\xDA\x87";
-      break;
-    case 0xBF :
-      return "\xDA\x87";
-      break;
-    }
-    break;
-  case 0xAE :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xDA\x87";
-      break;
-    case 0x81 :
-      return "\xDA\x87";
-      break;
-    case 0x82 :
-      return "\xDA\x8D";
-      break;
-    case 0x83 :
-      return "\xDA\x8D";
-      break;
-    case 0x84 :
-      return "\xDA\x8C";
-      break;
-    case 0x85 :
-      return "\xDA\x8C";
-      break;
-    case 0x86 :
-      return "\xDA\x8E";
-      break;
-    case 0x87 :
-      return "\xDA\x8E";
-      break;
-    case 0x88 :
-      return "\xDA\x88";
-      break;
-    case 0x89 :
-      return "\xDA\x88";
-      break;
-    case 0x8A :
-      return "\xDA\x98";
-      break;
-    case 0x8B :
-      return "\xDA\x98";
-      break;
-    case 0x8C :
-      return "\xDA\x91";
-      break;
-    case 0x8D :
-      return "\xDA\x91";
-      break;
-    case 0x8E :
-      return "\xDA\xA9";
-      break;
-    case 0x8F :
-      return "\xDA\xA9";
-      break;
-    case 0x90 :
-      return "\xDA\xA9";
-      break;
-    case 0x91 :
-      return "\xDA\xA9";
-      break;
-    case 0x92 :
-      return "\xDA\xAF";
-      break;
-    case 0x93 :
-      return "\xDA\xAF";
-      break;
-    case 0x94 :
-      return "\xDA\xAF";
-      break;
-    case 0x95 :
-      return "\xDA\xAF";
-      break;
-    case 0x96 :
-      return "\xDA\xB3";
-      break;
-    case 0x97 :
-      return "\xDA\xB3";
-      break;
-    case 0x98 :
-      return "\xDA\xB3";
-      break;
-    case 0x99 :
-      return "\xDA\xB3";
-      break;
-    case 0x9A :
-      return "\xDA\xB1";
-      break;
-    case 0x9B :
-      return "\xDA\xB1";
-      break;
-    case 0x9C :
-      return "\xDA\xB1";
-      break;
-    case 0x9D :
-      return "\xDA\xB1";
-      break;
-    case 0x9E :
-      return "\xDA\xBA";
-      break;
-    case 0x9F :
-      return "\xDA\xBA";
-      break;
-    case 0xA0 :
-      return "\xDA\xBB";
-      break;
-    case 0xA1 :
-      return "\xDA\xBB";
-      break;
-    case 0xA2 :
-      return "\xDA\xBB";
-      break;
-    case 0xA3 :
-      return "\xDA\xBB";
-      break;
-    case 0xA4 :
-      return "\xDB\x80";
-      break;
-    case 0xA5 :
-      return "\xDB\x80";
-      break;
-    case 0xA6 :
-      return "\xDB\x81";
-      break;
-    case 0xA7 :
-      return "\xDB\x81";
-      break;
-    case 0xA8 :
-      return "\xDB\x81";
-      break;
-    case 0xA9 :
-      return "\xDB\x81";
-      break;
-    case 0xAA :
-      return "\xDA\xBE";
-      break;
-    case 0xAB :
-      return "\xDA\xBE";
-      break;
-    case 0xAC :
-      return "\xDA\xBE";
-      break;
-    case 0xAD :
-      return "\xDA\xBE";
-      break;
-    case 0xAE :
-      return "\xDB\x92";
-      break;
-    case 0xAF :
-      return "\xDB\x92";
-      break;
-    case 0xB0 :
-      return "\xDB\x93";
-      break;
-    case 0xB1 :
-      return "\xDB\x93";
-      break;
-    }
-    break;
-  case 0xAF :
-    switch (str[2]) {
-    case 0x93 :
-      return "\xDA\xAD";
-      break;
-    case 0x94 :
-      return "\xDA\xAD";
-      break;
-    case 0x95 :
-      return "\xDA\xAD";
-      break;
-    case 0x96 :
-      return "\xDA\xAD";
-      break;
-    case 0x97 :
-      return "\xDB\x87";
-      break;
-    case 0x98 :
-      return "\xDB\x87";
-      break;
-    case 0x99 :
-      return "\xDB\x86";
-      break;
-    case 0x9A :
-      return "\xDB\x86";
-      break;
-    case 0x9B :
-      return "\xDB\x88";
-      break;
-    case 0x9C :
-      return "\xDB\x88";
-      break;
-    case 0x9D :
-      return "\xDB\x87\xD9\xB4";
-      break;
-    case 0x9E :
-      return "\xDB\x8B";
-      break;
-    case 0x9F :
-      return "\xDB\x8B";
-      break;
-    case 0xA0 :
-      return "\xDB\x85";
-      break;
-    case 0xA1 :
-      return "\xDB\x85";
-      break;
-    case 0xA2 :
-      return "\xDB\x89";
-      break;
-    case 0xA3 :
-      return "\xDB\x89";
-      break;
-    case 0xA4 :
-      return "\xDB\x90";
-      break;
-    case 0xA5 :
-      return "\xDB\x90";
-      break;
-    case 0xA6 :
-      return "\xDB\x90";
-      break;
-    case 0xA7 :
-      return "\xDB\x90";
-      break;
-    case 0xA8 :
-      return "\xD9\x89";
-      break;
-    case 0xA9 :
-      return "\xD9\x89";
-      break;
-    case 0xAA :
-      return "\xD8\xA6\xD8\xA7";
-      break;
-    case 0xAB :
-      return "\xD8\xA6\xD8\xA7";
-      break;
-    case 0xAC :
-      return "\xD8\xA6\xDB\x95";
-      break;
-    case 0xAD :
-      return "\xD8\xA6\xDB\x95";
-      break;
-    case 0xAE :
-      return "\xD8\xA6\xD9\x88";
-      break;
-    case 0xAF :
-      return "\xD8\xA6\xD9\x88";
-      break;
-    case 0xB0 :
-      return "\xD8\xA6\xDB\x87";
-      break;
-    case 0xB1 :
-      return "\xD8\xA6\xDB\x87";
-      break;
-    case 0xB2 :
-      return "\xD8\xA6\xDB\x86";
-      break;
-    case 0xB3 :
-      return "\xD8\xA6\xDB\x86";
-      break;
-    case 0xB4 :
-      return "\xD8\xA6\xDB\x88";
-      break;
-    case 0xB5 :
-      return "\xD8\xA6\xDB\x88";
-      break;
-    case 0xB6 :
-      return "\xD8\xA6\xDB\x90";
-      break;
-    case 0xB7 :
-      return "\xD8\xA6\xDB\x90";
-      break;
-    case 0xB8 :
-      return "\xD8\xA6\xDB\x90";
-      break;
-    case 0xB9 :
-      return "\xD8\xA6\xD9\x89";
-      break;
-    case 0xBA :
-      return "\xD8\xA6\xD9\x89";
-      break;
-    case 0xBB :
-      return "\xD8\xA6\xD9\x89";
-      break;
-    case 0xBC :
-      return "\xDB\x8C";
-      break;
-    case 0xBD :
-      return "\xDB\x8C";
-      break;
-    case 0xBE :
-      return "\xDB\x8C";
-      break;
-    case 0xBF :
-      return "\xDB\x8C";
-      break;
-    }
-    break;
-  case 0xB0 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xD8\xA6\xD8\xAC";
-      break;
-    case 0x81 :
-      return "\xD8\xA6\xD8\xAD";
-      break;
-    case 0x82 :
-      return "\xD8\xA6\xD9\x85";
-      break;
-    case 0x83 :
-      return "\xD8\xA6\xD9\x89";
-      break;
-    case 0x84 :
-      return "\xD8\xA6\xD9\x8A";
-      break;
-    case 0x85 :
-      return "\xD8\xA8\xD8\xAC";
-      break;
-    case 0x86 :
-      return "\xD8\xA8\xD8\xAD";
-      break;
-    case 0x87 :
-      return "\xD8\xA8\xD8\xAE";
-      break;
-    case 0x88 :
-      return "\xD8\xA8\xD9\x85";
-      break;
-    case 0x89 :
-      return "\xD8\xA8\xD9\x89";
-      break;
-    case 0x8A :
-      return "\xD8\xA8\xD9\x8A";
-      break;
-    case 0x8B :
-      return "\xD8\xAA\xD8\xAC";
-      break;
-    case 0x8C :
-      return "\xD8\xAA\xD8\xAD";
-      break;
-    case 0x8D :
-      return "\xD8\xAA\xD8\xAE";
-      break;
-    case 0x8E :
-      return "\xD8\xAA\xD9\x85";
-      break;
-    case 0x8F :
-      return "\xD8\xAA\xD9\x89";
-      break;
-    case 0x90 :
-      return "\xD8\xAA\xD9\x8A";
-      break;
-    case 0x91 :
-      return "\xD8\xAB\xD8\xAC";
-      break;
-    case 0x92 :
-      return "\xD8\xAB\xD9\x85";
-      break;
-    case 0x93 :
-      return "\xD8\xAB\xD9\x89";
-      break;
-    case 0x94 :
-      return "\xD8\xAB\xD9\x8A";
-      break;
-    case 0x95 :
-      return "\xD8\xAC\xD8\xAD";
-      break;
-    case 0x96 :
-      return "\xD8\xAC\xD9\x85";
-      break;
-    case 0x97 :
-      return "\xD8\xAD\xD8\xAC";
-      break;
-    case 0x98 :
-      return "\xD8\xAD\xD9\x85";
-      break;
-    case 0x99 :
-      return "\xD8\xAE\xD8\xAC";
-      break;
-    case 0x9A :
-      return "\xD8\xAE\xD8\xAD";
-      break;
-    case 0x9B :
-      return "\xD8\xAE\xD9\x85";
-      break;
-    case 0x9C :
-      return "\xD8\xB3\xD8\xAC";
-      break;
-    case 0x9D :
-      return "\xD8\xB3\xD8\xAD";
-      break;
-    case 0x9E :
-      return "\xD8\xB3\xD8\xAE";
-      break;
-    case 0x9F :
-      return "\xD8\xB3\xD9\x85";
-      break;
-    case 0xA0 :
-      return "\xD8\xB5\xD8\xAD";
-      break;
-    case 0xA1 :
-      return "\xD8\xB5\xD9\x85";
-      break;
-    case 0xA2 :
-      return "\xD8\xB6\xD8\xAC";
-      break;
-    case 0xA3 :
-      return "\xD8\xB6\xD8\xAD";
-      break;
-    case 0xA4 :
-      return "\xD8\xB6\xD8\xAE";
-      break;
-    case 0xA5 :
-      return "\xD8\xB6\xD9\x85";
-      break;
-    case 0xA6 :
-      return "\xD8\xB7\xD8\xAD";
-      break;
-    case 0xA7 :
-      return "\xD8\xB7\xD9\x85";
-      break;
-    case 0xA8 :
-      return "\xD8\xB8\xD9\x85";
-      break;
-    case 0xA9 :
-      return "\xD8\xB9\xD8\xAC";
-      break;
-    case 0xAA :
-      return "\xD8\xB9\xD9\x85";
-      break;
-    case 0xAB :
-      return "\xD8\xBA\xD8\xAC";
-      break;
-    case 0xAC :
-      return "\xD8\xBA\xD9\x85";
-      break;
-    case 0xAD :
-      return "\xD9\x81\xD8\xAC";
-      break;
-    case 0xAE :
-      return "\xD9\x81\xD8\xAD";
-      break;
-    case 0xAF :
-      return "\xD9\x81\xD8\xAE";
-      break;
-    case 0xB0 :
-      return "\xD9\x81\xD9\x85";
-      break;
-    case 0xB1 :
-      return "\xD9\x81\xD9\x89";
-      break;
-    case 0xB2 :
-      return "\xD9\x81\xD9\x8A";
-      break;
-    case 0xB3 :
-      return "\xD9\x82\xD8\xAD";
-      break;
-    case 0xB4 :
-      return "\xD9\x82\xD9\x85";
-      break;
-    case 0xB5 :
-      return "\xD9\x82\xD9\x89";
-      break;
-    case 0xB6 :
-      return "\xD9\x82\xD9\x8A";
-      break;
-    case 0xB7 :
-      return "\xD9\x83\xD8\xA7";
-      break;
-    case 0xB8 :
-      return "\xD9\x83\xD8\xAC";
-      break;
-    case 0xB9 :
-      return "\xD9\x83\xD8\xAD";
-      break;
-    case 0xBA :
-      return "\xD9\x83\xD8\xAE";
-      break;
-    case 0xBB :
-      return "\xD9\x83\xD9\x84";
-      break;
-    case 0xBC :
-      return "\xD9\x83\xD9\x85";
-      break;
-    case 0xBD :
-      return "\xD9\x83\xD9\x89";
-      break;
-    case 0xBE :
-      return "\xD9\x83\xD9\x8A";
-      break;
-    case 0xBF :
-      return "\xD9\x84\xD8\xAC";
-      break;
-    }
-    break;
-  case 0xB1 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xD9\x84\xD8\xAD";
-      break;
-    case 0x81 :
-      return "\xD9\x84\xD8\xAE";
-      break;
-    case 0x82 :
-      return "\xD9\x84\xD9\x85";
-      break;
-    case 0x83 :
-      return "\xD9\x84\xD9\x89";
-      break;
-    case 0x84 :
-      return "\xD9\x84\xD9\x8A";
-      break;
-    case 0x85 :
-      return "\xD9\x85\xD8\xAC";
-      break;
-    case 0x86 :
-      return "\xD9\x85\xD8\xAD";
-      break;
-    case 0x87 :
-      return "\xD9\x85\xD8\xAE";
-      break;
-    case 0x88 :
-      return "\xD9\x85\xD9\x85";
-      break;
-    case 0x89 :
-      return "\xD9\x85\xD9\x89";
-      break;
-    case 0x8A :
-      return "\xD9\x85\xD9\x8A";
-      break;
-    case 0x8B :
-      return "\xD9\x86\xD8\xAC";
-      break;
-    case 0x8C :
-      return "\xD9\x86\xD8\xAD";
-      break;
-    case 0x8D :
-      return "\xD9\x86\xD8\xAE";
-      break;
-    case 0x8E :
-      return "\xD9\x86\xD9\x85";
-      break;
-    case 0x8F :
-      return "\xD9\x86\xD9\x89";
-      break;
-    case 0x90 :
-      return "\xD9\x86\xD9\x8A";
-      break;
-    case 0x91 :
-      return "\xD9\x87\xD8\xAC";
-      break;
-    case 0x92 :
-      return "\xD9\x87\xD9\x85";
-      break;
-    case 0x93 :
-      return "\xD9\x87\xD9\x89";
-      break;
-    case 0x94 :
-      return "\xD9\x87\xD9\x8A";
-      break;
-    case 0x95 :
-      return "\xD9\x8A\xD8\xAC";
-      break;
-    case 0x96 :
-      return "\xD9\x8A\xD8\xAD";
-      break;
-    case 0x97 :
-      return "\xD9\x8A\xD8\xAE";
-      break;
-    case 0x98 :
-      return "\xD9\x8A\xD9\x85";
-      break;
-    case 0x99 :
-      return "\xD9\x8A\xD9\x89";
-      break;
-    case 0x9A :
-      return "\xD9\x8A\xD9\x8A";
-      break;
-    case 0x9B :
-      return "\xD8\xB0\xD9\xB0";
-      break;
-    case 0x9C :
-      return "\xD8\xB1\xD9\xB0";
-      break;
-    case 0x9D :
-      return "\xD9\x89\xD9\xB0";
-      break;
-    case 0x9E :
-      return "\xD9\x8C\xD9\x91";
-      break;
-    case 0x9F :
-      return "\xD9\x8D\xD9\x91";
-      break;
-    case 0xA0 :
-      return "\xD9\x8E\xD9\x91";
-      break;
-    case 0xA1 :
-      return "\xD9\x8F\xD9\x91";
-      break;
-    case 0xA2 :
-      return "\xD9\x90\xD9\x91";
-      break;
-    case 0xA3 :
-      return "\xD9\x91\xD9\xB0";
-      break;
-    case 0xA4 :
-      return "\xD8\xA6\xD8\xB1";
-      break;
-    case 0xA5 :
-      return "\xD8\xA6\xD8\xB2";
-      break;
-    case 0xA6 :
-      return "\xD8\xA6\xD9\x85";
-      break;
-    case 0xA7 :
-      return "\xD8\xA6\xD9\x86";
-      break;
-    case 0xA8 :
-      return "\xD8\xA6\xD9\x89";
-      break;
-    case 0xA9 :
-      return "\xD8\xA6\xD9\x8A";
-      break;
-    case 0xAA :
-      return "\xD8\xA8\xD8\xB1";
-      break;
-    case 0xAB :
-      return "\xD8\xA8\xD8\xB2";
-      break;
-    case 0xAC :
-      return "\xD8\xA8\xD9\x85";
-      break;
-    case 0xAD :
-      return "\xD8\xA8\xD9\x86";
-      break;
-    case 0xAE :
-      return "\xD8\xA8\xD9\x89";
-      break;
-    case 0xAF :
-      return "\xD8\xA8\xD9\x8A";
-      break;
-    case 0xB0 :
-      return "\xD8\xAA\xD8\xB1";
-      break;
-    case 0xB1 :
-      return "\xD8\xAA\xD8\xB2";
-      break;
-    case 0xB2 :
-      return "\xD8\xAA\xD9\x85";
-      break;
-    case 0xB3 :
-      return "\xD8\xAA\xD9\x86";
-      break;
-    case 0xB4 :
-      return "\xD8\xAA\xD9\x89";
-      break;
-    case 0xB5 :
-      return "\xD8\xAA\xD9\x8A";
-      break;
-    case 0xB6 :
-      return "\xD8\xAB\xD8\xB1";
-      break;
-    case 0xB7 :
-      return "\xD8\xAB\xD8\xB2";
-      break;
-    case 0xB8 :
-      return "\xD8\xAB\xD9\x85";
-      break;
-    case 0xB9 :
-      return "\xD8\xAB\xD9\x86";
-      break;
-    case 0xBA :
-      return "\xD8\xAB\xD9\x89";
-      break;
-    case 0xBB :
-      return "\xD8\xAB\xD9\x8A";
-      break;
-    case 0xBC :
-      return "\xD9\x81\xD9\x89";
-      break;
-    case 0xBD :
-      return "\xD9\x81\xD9\x8A";
-      break;
-    case 0xBE :
-      return "\xD9\x82\xD9\x89";
-      break;
-    case 0xBF :
-      return "\xD9\x82\xD9\x8A";
-      break;
-    }
-    break;
-  case 0xB2 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xD9\x83\xD8\xA7";
-      break;
-    case 0x81 :
-      return "\xD9\x83\xD9\x84";
-      break;
-    case 0x82 :
-      return "\xD9\x83\xD9\x85";
-      break;
-    case 0x83 :
-      return "\xD9\x83\xD9\x89";
-      break;
-    case 0x84 :
-      return "\xD9\x83\xD9\x8A";
-      break;
-    case 0x85 :
-      return "\xD9\x84\xD9\x85";
-      break;
-    case 0x86 :
-      return "\xD9\x84\xD9\x89";
-      break;
-    case 0x87 :
-      return "\xD9\x84\xD9\x8A";
-      break;
-    case 0x88 :
-      return "\xD9\x85\xD8\xA7";
-      break;
-    case 0x89 :
-      return "\xD9\x85\xD9\x85";
-      break;
-    case 0x8A :
-      return "\xD9\x86\xD8\xB1";
-      break;
-    case 0x8B :
-      return "\xD9\x86\xD8\xB2";
-      break;
-    case 0x8C :
-      return "\xD9\x86\xD9\x85";
-      break;
-    case 0x8D :
-      return "\xD9\x86\xD9\x86";
-      break;
-    case 0x8E :
-      return "\xD9\x86\xD9\x89";
-      break;
-    case 0x8F :
-      return "\xD9\x86\xD9\x8A";
-      break;
-    case 0x90 :
-      return "\xD9\x89\xD9\xB0";
-      break;
-    case 0x91 :
-      return "\xD9\x8A\xD8\xB1";
-      break;
-    case 0x92 :
-      return "\xD9\x8A\xD8\xB2";
-      break;
-    case 0x93 :
-      return "\xD9\x8A\xD9\x85";
-      break;
-    case 0x94 :
-      return "\xD9\x8A\xD9\x86";
-      break;
-    case 0x95 :
-      return "\xD9\x8A\xD9\x89";
-      break;
-    case 0x96 :
-      return "\xD9\x8A\xD9\x8A";
-      break;
-    case 0x97 :
-      return "\xD8\xA6\xD8\xAC";
-      break;
-    case 0x98 :
-      return "\xD8\xA6\xD8\xAD";
-      break;
-    case 0x99 :
-      return "\xD8\xA6\xD8\xAE";
-      break;
-    case 0x9A :
-      return "\xD8\xA6\xD9\x85";
-      break;
-    case 0x9B :
-      return "\xD8\xA6\xD9\x87";
-      break;
-    case 0x9C :
-      return "\xD8\xA8\xD8\xAC";
-      break;
-    case 0x9D :
-      return "\xD8\xA8\xD8\xAD";
-      break;
-    case 0x9E :
-      return "\xD8\xA8\xD8\xAE";
-      break;
-    case 0x9F :
-      return "\xD8\xA8\xD9\x85";
-      break;
-    case 0xA0 :
-      return "\xD8\xA8\xD9\x87";
-      break;
-    case 0xA1 :
-      return "\xD8\xAA\xD8\xAC";
-      break;
-    case 0xA2 :
-      return "\xD8\xAA\xD8\xAD";
-      break;
-    case 0xA3 :
-      return "\xD8\xAA\xD8\xAE";
-      break;
-    case 0xA4 :
-      return "\xD8\xAA\xD9\x85";
-      break;
-    case 0xA5 :
-      return "\xD8\xAA\xD9\x87";
-      break;
-    case 0xA6 :
-      return "\xD8\xAB\xD9\x85";
-      break;
-    case 0xA7 :
-      return "\xD8\xAC\xD8\xAD";
-      break;
-    case 0xA8 :
-      return "\xD8\xAC\xD9\x85";
-      break;
-    case 0xA9 :
-      return "\xD8\xAD\xD8\xAC";
-      break;
-    case 0xAA :
-      return "\xD8\xAD\xD9\x85";
-      break;
-    case 0xAB :
-      return "\xD8\xAE\xD8\xAC";
-      break;
-    case 0xAC :
-      return "\xD8\xAE\xD9\x85";
-      break;
-    case 0xAD :
-      return "\xD8\xB3\xD8\xAC";
-      break;
-    case 0xAE :
-      return "\xD8\xB3\xD8\xAD";
-      break;
-    case 0xAF :
-      return "\xD8\xB3\xD8\xAE";
-      break;
-    case 0xB0 :
-      return "\xD8\xB3\xD9\x85";
-      break;
-    case 0xB1 :
-      return "\xD8\xB5\xD8\xAD";
-      break;
-    case 0xB2 :
-      return "\xD8\xB5\xD8\xAE";
-      break;
-    case 0xB3 :
-      return "\xD8\xB5\xD9\x85";
-      break;
-    case 0xB4 :
-      return "\xD8\xB6\xD8\xAC";
-      break;
-    case 0xB5 :
-      return "\xD8\xB6\xD8\xAD";
-      break;
-    case 0xB6 :
-      return "\xD8\xB6\xD8\xAE";
-      break;
-    case 0xB7 :
-      return "\xD8\xB6\xD9\x85";
-      break;
-    case 0xB8 :
-      return "\xD8\xB7\xD8\xAD";
-      break;
-    case 0xB9 :
-      return "\xD8\xB8\xD9\x85";
-      break;
-    case 0xBA :
-      return "\xD8\xB9\xD8\xAC";
-      break;
-    case 0xBB :
-      return "\xD8\xB9\xD9\x85";
-      break;
-    case 0xBC :
-      return "\xD8\xBA\xD8\xAC";
-      break;
-    case 0xBD :
-      return "\xD8\xBA\xD9\x85";
-      break;
-    case 0xBE :
-      return "\xD9\x81\xD8\xAC";
-      break;
-    case 0xBF :
-      return "\xD9\x81\xD8\xAD";
-      break;
-    }
-    break;
-  case 0xB3 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xD9\x81\xD8\xAE";
-      break;
-    case 0x81 :
-      return "\xD9\x81\xD9\x85";
-      break;
-    case 0x82 :
-      return "\xD9\x82\xD8\xAD";
-      break;
-    case 0x83 :
-      return "\xD9\x82\xD9\x85";
-      break;
-    case 0x84 :
-      return "\xD9\x83\xD8\xAC";
-      break;
-    case 0x85 :
-      return "\xD9\x83\xD8\xAD";
-      break;
-    case 0x86 :
-      return "\xD9\x83\xD8\xAE";
-      break;
-    case 0x87 :
-      return "\xD9\x83\xD9\x84";
-      break;
-    case 0x88 :
-      return "\xD9\x83\xD9\x85";
-      break;
-    case 0x89 :
-      return "\xD9\x84\xD8\xAC";
-      break;
-    case 0x8A :
-      return "\xD9\x84\xD8\xAD";
-      break;
-    case 0x8B :
-      return "\xD9\x84\xD8\xAE";
-      break;
-    case 0x8C :
-      return "\xD9\x84\xD9\x85";
-      break;
-    case 0x8D :
-      return "\xD9\x84\xD9\x87";
-      break;
-    case 0x8E :
-      return "\xD9\x85\xD8\xAC";
-      break;
-    case 0x8F :
-      return "\xD9\x85\xD8\xAD";
-      break;
-    case 0x90 :
-      return "\xD9\x85\xD8\xAE";
-      break;
-    case 0x91 :
-      return "\xD9\x85\xD9\x85";
-      break;
-    case 0x92 :
-      return "\xD9\x86\xD8\xAC";
-      break;
-    case 0x93 :
-      return "\xD9\x86\xD8\xAD";
-      break;
-    case 0x94 :
-      return "\xD9\x86\xD8\xAE";
-      break;
-    case 0x95 :
-      return "\xD9\x86\xD9\x85";
-      break;
-    case 0x96 :
-      return "\xD9\x86\xD9\x87";
-      break;
-    case 0x97 :
-      return "\xD9\x87\xD8\xAC";
-      break;
-    case 0x98 :
-      return "\xD9\x87\xD9\x85";
-      break;
-    case 0x99 :
-      return "\xD9\x87\xD9\xB0";
-      break;
-    case 0x9A :
-      return "\xD9\x8A\xD8\xAC";
-      break;
-    case 0x9B :
-      return "\xD9\x8A\xD8\xAD";
-      break;
-    case 0x9C :
-      return "\xD9\x8A\xD8\xAE";
-      break;
-    case 0x9D :
-      return "\xD9\x8A\xD9\x85";
-      break;
-    case 0x9E :
-      return "\xD9\x8A\xD9\x87";
-      break;
-    case 0x9F :
-      return "\xD8\xA6\xD9\x85";
-      break;
-    case 0xA0 :
-      return "\xD8\xA6\xD9\x87";
-      break;
-    case 0xA1 :
-      return "\xD8\xA8\xD9\x85";
-      break;
-    case 0xA2 :
-      return "\xD8\xA8\xD9\x87";
-      break;
-    case 0xA3 :
-      return "\xD8\xAA\xD9\x85";
-      break;
-    case 0xA4 :
-      return "\xD8\xAA\xD9\x87";
-      break;
-    case 0xA5 :
-      return "\xD8\xAB\xD9\x85";
-      break;
-    case 0xA6 :
-      return "\xD8\xAB\xD9\x87";
-      break;
-    case 0xA7 :
-      return "\xD8\xB3\xD9\x85";
-      break;
-    case 0xA8 :
-      return "\xD8\xB3\xD9\x87";
-      break;
-    case 0xA9 :
-      return "\xD8\xB4\xD9\x85";
-      break;
-    case 0xAA :
-      return "\xD8\xB4\xD9\x87";
-      break;
-    case 0xAB :
-      return "\xD9\x83\xD9\x84";
-      break;
-    case 0xAC :
-      return "\xD9\x83\xD9\x85";
-      break;
-    case 0xAD :
-      return "\xD9\x84\xD9\x85";
-      break;
-    case 0xAE :
-      return "\xD9\x86\xD9\x85";
-      break;
-    case 0xAF :
-      return "\xD9\x86\xD9\x87";
-      break;
-    case 0xB0 :
-      return "\xD9\x8A\xD9\x85";
-      break;
-    case 0xB1 :
-      return "\xD9\x8A\xD9\x87";
-      break;
-    case 0xB2 :
-      return "\xD9\x80\xD9\x8E\xD9\x91";
-      break;
-    case 0xB3 :
-      return "\xD9\x80\xD9\x8F\xD9\x91";
-      break;
-    case 0xB4 :
-      return "\xD9\x80\xD9\x90\xD9\x91";
-      break;
-    case 0xB5 :
-      return "\xD8\xB7\xD9\x89";
-      break;
-    case 0xB6 :
-      return "\xD8\xB7\xD9\x8A";
-      break;
-    case 0xB7 :
-      return "\xD8\xB9\xD9\x89";
-      break;
-    case 0xB8 :
-      return "\xD8\xB9\xD9\x8A";
-      break;
-    case 0xB9 :
-      return "\xD8\xBA\xD9\x89";
-      break;
-    case 0xBA :
-      return "\xD8\xBA\xD9\x8A";
-      break;
-    case 0xBB :
-      return "\xD8\xB3\xD9\x89";
-      break;
-    case 0xBC :
-      return "\xD8\xB3\xD9\x8A";
-      break;
-    case 0xBD :
-      return "\xD8\xB4\xD9\x89";
-      break;
-    case 0xBE :
-      return "\xD8\xB4\xD9\x8A";
-      break;
-    case 0xBF :
-      return "\xD8\xAD\xD9\x89";
-      break;
-    }
-    break;
-  case 0xB4 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xD8\xAD\xD9\x8A";
-      break;
-    case 0x81 :
-      return "\xD8\xAC\xD9\x89";
-      break;
-    case 0x82 :
-      return "\xD8\xAC\xD9\x8A";
-      break;
-    case 0x83 :
-      return "\xD8\xAE\xD9\x89";
-      break;
-    case 0x84 :
-      return "\xD8\xAE\xD9\x8A";
-      break;
-    case 0x85 :
-      return "\xD8\xB5\xD9\x89";
-      break;
-    case 0x86 :
-      return "\xD8\xB5\xD9\x8A";
-      break;
-    case 0x87 :
-      return "\xD8\xB6\xD9\x89";
-      break;
-    case 0x88 :
-      return "\xD8\xB6\xD9\x8A";
-      break;
-    case 0x89 :
-      return "\xD8\xB4\xD8\xAC";
-      break;
-    case 0x8A :
-      return "\xD8\xB4\xD8\xAD";
-      break;
-    case 0x8B :
-      return "\xD8\xB4\xD8\xAE";
-      break;
-    case 0x8C :
-      return "\xD8\xB4\xD9\x85";
-      break;
-    case 0x8D :
-      return "\xD8\xB4\xD8\xB1";
-      break;
-    case 0x8E :
-      return "\xD8\xB3\xD8\xB1";
-      break;
-    case 0x8F :
-      return "\xD8\xB5\xD8\xB1";
-      break;
-    case 0x90 :
-      return "\xD8\xB6\xD8\xB1";
-      break;
-    case 0x91 :
-      return "\xD8\xB7\xD9\x89";
-      break;
-    case 0x92 :
-      return "\xD8\xB7\xD9\x8A";
-      break;
-    case 0x93 :
-      return "\xD8\xB9\xD9\x89";
-      break;
-    case 0x94 :
-      return "\xD8\xB9\xD9\x8A";
-      break;
-    case 0x95 :
-      return "\xD8\xBA\xD9\x89";
-      break;
-    case 0x96 :
-      return "\xD8\xBA\xD9\x8A";
-      break;
-    case 0x97 :
-      return "\xD8\xB3\xD9\x89";
-      break;
-    case 0x98 :
-      return "\xD8\xB3\xD9\x8A";
-      break;
-    case 0x99 :
-      return "\xD8\xB4\xD9\x89";
-      break;
-    case 0x9A :
-      return "\xD8\xB4\xD9\x8A";
-      break;
-    case 0x9B :
-      return "\xD8\xAD\xD9\x89";
-      break;
-    case 0x9C :
-      return "\xD8\xAD\xD9\x8A";
-      break;
-    case 0x9D :
-      return "\xD8\xAC\xD9\x89";
-      break;
-    case 0x9E :
-      return "\xD8\xAC\xD9\x8A";
-      break;
-    case 0x9F :
-      return "\xD8\xAE\xD9\x89";
-      break;
-    case 0xA0 :
-      return "\xD8\xAE\xD9\x8A";
-      break;
-    case 0xA1 :
-      return "\xD8\xB5\xD9\x89";
-      break;
-    case 0xA2 :
-      return "\xD8\xB5\xD9\x8A";
-      break;
-    case 0xA3 :
-      return "\xD8\xB6\xD9\x89";
-      break;
-    case 0xA4 :
-      return "\xD8\xB6\xD9\x8A";
-      break;
-    case 0xA5 :
-      return "\xD8\xB4\xD8\xAC";
-      break;
-    case 0xA6 :
-      return "\xD8\xB4\xD8\xAD";
-      break;
-    case 0xA7 :
-      return "\xD8\xB4\xD8\xAE";
-      break;
-    case 0xA8 :
-      return "\xD8\xB4\xD9\x85";
-      break;
-    case 0xA9 :
-      return "\xD8\xB4\xD8\xB1";
-      break;
-    case 0xAA :
-      return "\xD8\xB3\xD8\xB1";
-      break;
-    case 0xAB :
-      return "\xD8\xB5\xD8\xB1";
-      break;
-    case 0xAC :
-      return "\xD8\xB6\xD8\xB1";
-      break;
-    case 0xAD :
-      return "\xD8\xB4\xD8\xAC";
-      break;
-    case 0xAE :
-      return "\xD8\xB4\xD8\xAD";
-      break;
-    case 0xAF :
-      return "\xD8\xB4\xD8\xAE";
-      break;
-    case 0xB0 :
-      return "\xD8\xB4\xD9\x85";
-      break;
-    case 0xB1 :
-      return "\xD8\xB3\xD9\x87";
-      break;
-    case 0xB2 :
-      return "\xD8\xB4\xD9\x87";
-      break;
-    case 0xB3 :
-      return "\xD8\xB7\xD9\x85";
-      break;
-    case 0xB4 :
-      return "\xD8\xB3\xD8\xAC";
-      break;
-    case 0xB5 :
-      return "\xD8\xB3\xD8\xAD";
-      break;
-    case 0xB6 :
-      return "\xD8\xB3\xD8\xAE";
-      break;
-    case 0xB7 :
-      return "\xD8\xB4\xD8\xAC";
-      break;
-    case 0xB8 :
-      return "\xD8\xB4\xD8\xAD";
-      break;
-    case 0xB9 :
-      return "\xD8\xB4\xD8\xAE";
-      break;
-    case 0xBA :
-      return "\xD8\xB7\xD9\x85";
-      break;
-    case 0xBB :
-      return "\xD8\xB8\xD9\x85";
-      break;
-    case 0xBC :
-      return "\xD8\xA7\xD9\x8B";
-      break;
-    case 0xBD :
-      return "\xD8\xA7\xD9\x8B";
-      break;
-    }
-    break;
-  case 0xB5 :
-    switch (str[2]) {
-    case 0x90 :
-      return "\xD8\xAA\xD8\xAC\xD9\x85";
-      break;
-    case 0x91 :
-      return "\xD8\xAA\xD8\xAD\xD8\xAC";
-      break;
-    case 0x92 :
-      return "\xD8\xAA\xD8\xAD\xD8\xAC";
-      break;
-    case 0x93 :
-      return "\xD8\xAA\xD8\xAD\xD9\x85";
-      break;
-    case 0x94 :
-      return "\xD8\xAA\xD8\xAE\xD9\x85";
-      break;
-    case 0x95 :
-      return "\xD8\xAA\xD9\x85\xD8\xAC";
-      break;
-    case 0x96 :
-      return "\xD8\xAA\xD9\x85\xD8\xAD";
-      break;
-    case 0x97 :
-      return "\xD8\xAA\xD9\x85\xD8\xAE";
-      break;
-    case 0x98 :
-      return "\xD8\xAC\xD9\x85\xD8\xAD";
-      break;
-    case 0x99 :
-      return "\xD8\xAC\xD9\x85\xD8\xAD";
-      break;
-    case 0x9A :
-      return "\xD8\xAD\xD9\x85\xD9\x8A";
-      break;
-    case 0x9B :
-      return "\xD8\xAD\xD9\x85\xD9\x89";
-      break;
-    case 0x9C :
-      return "\xD8\xB3\xD8\xAD\xD8\xAC";
-      break;
-    case 0x9D :
-      return "\xD8\xB3\xD8\xAC\xD8\xAD";
-      break;
-    case 0x9E :
-      return "\xD8\xB3\xD8\xAC\xD9\x89";
-      break;
-    case 0x9F :
-      return "\xD8\xB3\xD9\x85\xD8\xAD";
-      break;
-    case 0xA0 :
-      return "\xD8\xB3\xD9\x85\xD8\xAD";
-      break;
-    case 0xA1 :
-      return "\xD8\xB3\xD9\x85\xD8\xAC";
-      break;
-    case 0xA2 :
-      return "\xD8\xB3\xD9\x85\xD9\x85";
-      break;
-    case 0xA3 :
-      return "\xD8\xB3\xD9\x85\xD9\x85";
-      break;
-    case 0xA4 :
-      return "\xD8\xB5\xD8\xAD\xD8\xAD";
-      break;
-    case 0xA5 :
-      return "\xD8\xB5\xD8\xAD\xD8\xAD";
-      break;
-    case 0xA6 :
-      return "\xD8\xB5\xD9\x85\xD9\x85";
-      break;
-    case 0xA7 :
-      return "\xD8\xB4\xD8\xAD\xD9\x85";
-      break;
-    case 0xA8 :
-      return "\xD8\xB4\xD8\xAD\xD9\x85";
-      break;
-    case 0xA9 :
-      return "\xD8\xB4\xD8\xAC\xD9\x8A";
-      break;
-    case 0xAA :
-      return "\xD8\xB4\xD9\x85\xD8\xAE";
-      break;
-    case 0xAB :
-      return "\xD8\xB4\xD9\x85\xD8\xAE";
-      break;
-    case 0xAC :
-      return "\xD8\xB4\xD9\x85\xD9\x85";
-      break;
-    case 0xAD :
-      return "\xD8\xB4\xD9\x85\xD9\x85";
-      break;
-    case 0xAE :
-      return "\xD8\xB6\xD8\xAD\xD9\x89";
-      break;
-    case 0xAF :
-      return "\xD8\xB6\xD8\xAE\xD9\x85";
-      break;
-    case 0xB0 :
-      return "\xD8\xB6\xD8\xAE\xD9\x85";
-      break;
-    case 0xB1 :
-      return "\xD8\xB7\xD9\x85\xD8\xAD";
-      break;
-    case 0xB2 :
-      return "\xD8\xB7\xD9\x85\xD8\xAD";
-      break;
-    case 0xB3 :
-      return "\xD8\xB7\xD9\x85\xD9\x85";
-      break;
-    case 0xB4 :
-      return "\xD8\xB7\xD9\x85\xD9\x8A";
-      break;
-    case 0xB5 :
-      return "\xD8\xB9\xD8\xAC\xD9\x85";
-      break;
-    case 0xB6 :
-      return "\xD8\xB9\xD9\x85\xD9\x85";
-      break;
-    case 0xB7 :
-      return "\xD8\xB9\xD9\x85\xD9\x85";
-      break;
-    case 0xB8 :
-      return "\xD8\xB9\xD9\x85\xD9\x89";
-      break;
-    case 0xB9 :
-      return "\xD8\xBA\xD9\x85\xD9\x85";
-      break;
-    case 0xBA :
-      return "\xD8\xBA\xD9\x85\xD9\x8A";
-      break;
-    case 0xBB :
-      return "\xD8\xBA\xD9\x85\xD9\x89";
-      break;
-    case 0xBC :
-      return "\xD9\x81\xD8\xAE\xD9\x85";
-      break;
-    case 0xBD :
-      return "\xD9\x81\xD8\xAE\xD9\x85";
-      break;
-    case 0xBE :
-      return "\xD9\x82\xD9\x85\xD8\xAD";
-      break;
-    case 0xBF :
-      return "\xD9\x82\xD9\x85\xD9\x85";
-      break;
-    }
-    break;
-  case 0xB6 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xD9\x84\xD8\xAD\xD9\x85";
-      break;
-    case 0x81 :
-      return "\xD9\x84\xD8\xAD\xD9\x8A";
-      break;
-    case 0x82 :
-      return "\xD9\x84\xD8\xAD\xD9\x89";
-      break;
-    case 0x83 :
-      return "\xD9\x84\xD8\xAC\xD8\xAC";
-      break;
-    case 0x84 :
-      return "\xD9\x84\xD8\xAC\xD8\xAC";
-      break;
-    case 0x85 :
-      return "\xD9\x84\xD8\xAE\xD9\x85";
-      break;
-    case 0x86 :
-      return "\xD9\x84\xD8\xAE\xD9\x85";
-      break;
-    case 0x87 :
-      return "\xD9\x84\xD9\x85\xD8\xAD";
-      break;
-    case 0x88 :
-      return "\xD9\x84\xD9\x85\xD8\xAD";
-      break;
-    case 0x89 :
-      return "\xD9\x85\xD8\xAD\xD8\xAC";
-      break;
-    case 0x8A :
-      return "\xD9\x85\xD8\xAD\xD9\x85";
-      break;
-    case 0x8B :
-      return "\xD9\x85\xD8\xAD\xD9\x8A";
-      break;
-    case 0x8C :
-      return "\xD9\x85\xD8\xAC\xD8\xAD";
-      break;
-    case 0x8D :
-      return "\xD9\x85\xD8\xAC\xD9\x85";
-      break;
-    case 0x8E :
-      return "\xD9\x85\xD8\xAE\xD8\xAC";
-      break;
-    case 0x8F :
-      return "\xD9\x85\xD8\xAE\xD9\x85";
-      break;
-    case 0x92 :
-      return "\xD9\x85\xD8\xAC\xD8\xAE";
-      break;
-    case 0x93 :
-      return "\xD9\x87\xD9\x85\xD8\xAC";
-      break;
-    case 0x94 :
-      return "\xD9\x87\xD9\x85\xD9\x85";
-      break;
-    case 0x95 :
-      return "\xD9\x86\xD8\xAD\xD9\x85";
-      break;
-    case 0x96 :
-      return "\xD9\x86\xD8\xAD\xD9\x89";
-      break;
-    case 0x97 :
-      return "\xD9\x86\xD8\xAC\xD9\x85";
-      break;
-    case 0x98 :
-      return "\xD9\x86\xD8\xAC\xD9\x85";
-      break;
-    case 0x99 :
-      return "\xD9\x86\xD8\xAC\xD9\x89";
-      break;
-    case 0x9A :
-      return "\xD9\x86\xD9\x85\xD9\x8A";
-      break;
-    case 0x9B :
-      return "\xD9\x86\xD9\x85\xD9\x89";
-      break;
-    case 0x9C :
-      return "\xD9\x8A\xD9\x85\xD9\x85";
-      break;
-    case 0x9D :
-      return "\xD9\x8A\xD9\x85\xD9\x85";
-      break;
-    case 0x9E :
-      return "\xD8\xA8\xD8\xAE\xD9\x8A";
-      break;
-    case 0x9F :
-      return "\xD8\xAA\xD8\xAC\xD9\x8A";
-      break;
-    case 0xA0 :
-      return "\xD8\xAA\xD8\xAC\xD9\x89";
-      break;
-    case 0xA1 :
-      return "\xD8\xAA\xD8\xAE\xD9\x8A";
-      break;
-    case 0xA2 :
-      return "\xD8\xAA\xD8\xAE\xD9\x89";
-      break;
-    case 0xA3 :
-      return "\xD8\xAA\xD9\x85\xD9\x8A";
-      break;
-    case 0xA4 :
-      return "\xD8\xAA\xD9\x85\xD9\x89";
-      break;
-    case 0xA5 :
-      return "\xD8\xAC\xD9\x85\xD9\x8A";
-      break;
-    case 0xA6 :
-      return "\xD8\xAC\xD8\xAD\xD9\x89";
-      break;
-    case 0xA7 :
-      return "\xD8\xAC\xD9\x85\xD9\x89";
-      break;
-    case 0xA8 :
-      return "\xD8\xB3\xD8\xAE\xD9\x89";
-      break;
-    case 0xA9 :
-      return "\xD8\xB5\xD8\xAD\xD9\x8A";
-      break;
-    case 0xAA :
-      return "\xD8\xB4\xD8\xAD\xD9\x8A";
-      break;
-    case 0xAB :
-      return "\xD8\xB6\xD8\xAD\xD9\x8A";
-      break;
-    case 0xAC :
-      return "\xD9\x84\xD8\xAC\xD9\x8A";
-      break;
-    case 0xAD :
-      return "\xD9\x84\xD9\x85\xD9\x8A";
-      break;
-    case 0xAE :
-      return "\xD9\x8A\xD8\xAD\xD9\x8A";
-      break;
-    case 0xAF :
-      return "\xD9\x8A\xD8\xAC\xD9\x8A";
-      break;
-    case 0xB0 :
-      return "\xD9\x8A\xD9\x85\xD9\x8A";
-      break;
-    case 0xB1 :
-      return "\xD9\x85\xD9\x85\xD9\x8A";
-      break;
-    case 0xB2 :
-      return "\xD9\x82\xD9\x85\xD9\x8A";
-      break;
-    case 0xB3 :
-      return "\xD9\x86\xD8\xAD\xD9\x8A";
-      break;
-    case 0xB4 :
-      return "\xD9\x82\xD9\x85\xD8\xAD";
-      break;
-    case 0xB5 :
-      return "\xD9\x84\xD8\xAD\xD9\x85";
-      break;
-    case 0xB6 :
-      return "\xD8\xB9\xD9\x85\xD9\x8A";
-      break;
-    case 0xB7 :
-      return "\xD9\x83\xD9\x85\xD9\x8A";
-      break;
-    case 0xB8 :
-      return "\xD9\x86\xD8\xAC\xD8\xAD";
-      break;
-    case 0xB9 :
-      return "\xD9\x85\xD8\xAE\xD9\x8A";
-      break;
-    case 0xBA :
-      return "\xD9\x84\xD8\xAC\xD9\x85";
-      break;
-    case 0xBB :
-      return "\xD9\x83\xD9\x85\xD9\x85";
-      break;
-    case 0xBC :
-      return "\xD9\x84\xD8\xAC\xD9\x85";
-      break;
-    case 0xBD :
-      return "\xD9\x86\xD8\xAC\xD8\xAD";
-      break;
-    case 0xBE :
-      return "\xD8\xAC\xD8\xAD\xD9\x8A";
-      break;
-    case 0xBF :
-      return "\xD8\xAD\xD8\xAC\xD9\x8A";
-      break;
-    }
-    break;
-  case 0xB7 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xD9\x85\xD8\xAC\xD9\x8A";
-      break;
-    case 0x81 :
-      return "\xD9\x81\xD9\x85\xD9\x8A";
-      break;
-    case 0x82 :
-      return "\xD8\xA8\xD8\xAD\xD9\x8A";
-      break;
-    case 0x83 :
-      return "\xD9\x83\xD9\x85\xD9\x85";
-      break;
-    case 0x84 :
-      return "\xD8\xB9\xD8\xAC\xD9\x85";
-      break;
-    case 0x85 :
-      return "\xD8\xB5\xD9\x85\xD9\x85";
-      break;
-    case 0x86 :
-      return "\xD8\xB3\xD8\xAE\xD9\x8A";
-      break;
-    case 0x87 :
-      return "\xD9\x86\xD8\xAC\xD9\x8A";
-      break;
-    case 0xB0 :
-      return "\xD8\xB5\xD9\x84\xDB\x92";
-      break;
-    case 0xB1 :
-      return "\xD9\x82\xD9\x84\xDB\x92";
-      break;
-    case 0xB2 :
-      return "\xD8\xA7\xD9\x84\xD9\x84\xD9\x87";
-      break;
-    case 0xB3 :
-      return "\xD8\xA7\xD9\x83\xD8\xA8\xD8\xB1";
-      break;
-    case 0xB4 :
-      return "\xD9\x85\xD8\xAD\xD9\x85\xD8\xAF";
-      break;
-    case 0xB5 :
-      return "\xD8\xB5\xD9\x84\xD8\xB9\xD9\x85";
-      break;
-    case 0xB6 :
-      return "\xD8\xB1\xD8\xB3\xD9\x88\xD9\x84";
-      break;
-    case 0xB7 :
-      return "\xD8\xB9\xD9\x84\xD9\x8A\xD9\x87";
-      break;
-    case 0xB8 :
-      return "\xD9\x88\xD8\xB3\xD9\x84\xD9\x85";
-      break;
-    case 0xB9 :
-      return "\xD8\xB5\xD9\x84\xD9\x89";
-      break;
-    case 0xBA :
-      return "\xD8\xB5\xD9\x84\xD9\x89\x20\xD8\xA7\xD9\x84\xD9\x84\xD9\x87\x20\xD8\xB9\xD9\x84\xD9\x8A\xD9\x87\x20\xD9\x88\xD8\xB3\xD9\x84\xD9\x85";
-      break;
-    case 0xBB :
-      return "\xD8\xAC\xD9\x84\x20\xD8\xAC\xD9\x84\xD8\xA7\xD9\x84\xD9\x87";
-      break;
-    case 0xBC :
-      return "\xD8\xB1\xDB\x8C\xD8\xA7\xD9\x84";
-      break;
-    }
-    break;
-  case 0xB8 :
-    switch (str[2]) {
-    case 0x90 :
-      return "\x2C";
-      break;
-    case 0x91 :
-      return "\xE3\x80\x81";
-      break;
-    case 0x92 :
-      return "\xE3\x80\x82";
-      break;
-    case 0x93 :
-      return "\x3A";
-      break;
-    case 0x94 :
-      return "\x3B";
-      break;
-    case 0x95 :
-      return "\x21";
-      break;
-    case 0x96 :
-      return "\x3F";
-      break;
-    case 0x97 :
-      return "\xE3\x80\x96";
-      break;
-    case 0x98 :
-      return "\xE3\x80\x97";
-      break;
-    case 0x99 :
-      return "\x2E\x2E\x2E";
-      break;
-    case 0xB0 :
-      return "\x2E\x2E";
-      break;
-    case 0xB1 :
-      return "\xE2\x80\x94";
-      break;
-    case 0xB2 :
-      return "\xE2\x80\x93";
-      break;
-    case 0xB3 :
-      return "\x5F";
-      break;
-    case 0xB4 :
-      return "\x5F";
-      break;
-    case 0xB5 :
-      return "\x28";
-      break;
-    case 0xB6 :
-      return "\x29";
-      break;
-    case 0xB7 :
-      return "\x7B";
-      break;
-    case 0xB8 :
-      return "\x7D";
-      break;
-    case 0xB9 :
-      return "\xE3\x80\x94";
-      break;
-    case 0xBA :
-      return "\xE3\x80\x95";
-      break;
-    case 0xBB :
-      return "\xE3\x80\x90";
-      break;
-    case 0xBC :
-      return "\xE3\x80\x91";
-      break;
-    case 0xBD :
-      return "\xE3\x80\x8A";
-      break;
-    case 0xBE :
-      return "\xE3\x80\x8B";
-      break;
-    case 0xBF :
-      return "\xE3\x80\x88";
-      break;
-    }
-    break;
-  case 0xB9 :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE3\x80\x89";
-      break;
-    case 0x81 :
-      return "\xE3\x80\x8C";
-      break;
-    case 0x82 :
-      return "\xE3\x80\x8D";
-      break;
-    case 0x83 :
-      return "\xE3\x80\x8E";
-      break;
-    case 0x84 :
-      return "\xE3\x80\x8F";
-      break;
-    case 0x87 :
-      return "\x5B";
-      break;
-    case 0x88 :
-      return "\x5D";
-      break;
-    case 0x89 :
-      return "\xCC\x85";
-      break;
-    case 0x8A :
-      return "\xCC\x85";
-      break;
-    case 0x8B :
-      return "\xCC\x85";
-      break;
-    case 0x8C :
-      return "\xCC\x85";
-      break;
-    case 0x8D :
-      return "\x5F";
-      break;
-    case 0x8E :
-      return "\x5F";
-      break;
-    case 0x8F :
-      return "\x5F";
-      break;
-    case 0x90 :
-      return "\x2C";
-      break;
-    case 0x91 :
-      return "\xE3\x80\x81";
-      break;
-    case 0x92 :
-      return "\x2E";
-      break;
-    case 0x94 :
-      return "\x3B";
-      break;
-    case 0x95 :
-      return "\x3A";
-      break;
-    case 0x96 :
-      return "\x3F";
-      break;
-    case 0x97 :
-      return "\x21";
-      break;
-    case 0x98 :
-      return "\xE2\x80\x94";
-      break;
-    case 0x99 :
-      return "\x28";
-      break;
-    case 0x9A :
-      return "\x29";
-      break;
-    case 0x9B :
-      return "\x7B";
-      break;
-    case 0x9C :
-      return "\x7D";
-      break;
-    case 0x9D :
-      return "\xE3\x80\x94";
-      break;
-    case 0x9E :
-      return "\xE3\x80\x95";
-      break;
-    case 0x9F :
-      return "\x23";
-      break;
-    case 0xA0 :
-      return "\x26";
-      break;
-    case 0xA1 :
-      return "\x2A";
-      break;
-    case 0xA2 :
-      return "\x2B";
-      break;
-    case 0xA3 :
-      return "\x2D";
-      break;
-    case 0xA4 :
-      return "\x3C";
-      break;
-    case 0xA5 :
-      return "\x3E";
-      break;
-    case 0xA6 :
-      return "\x3D";
-      break;
-    case 0xA8 :
-      return "\x5C";
-      break;
-    case 0xA9 :
-      return "\x24";
-      break;
-    case 0xAA :
-      return "\x25";
-      break;
-    case 0xAB :
-      return "\x40";
-      break;
-    case 0xB0 :
-      return "\xD9\x8B";
-      break;
-    case 0xB1 :
-      return "\xD9\x80\xD9\x8B";
-      break;
-    case 0xB2 :
-      return "\xD9\x8C";
-      break;
-    case 0xB4 :
-      return "\xD9\x8D";
-      break;
-    case 0xB6 :
-      return "\xD9\x8E";
-      break;
-    case 0xB7 :
-      return "\xD9\x80\xD9\x8E";
-      break;
-    case 0xB8 :
-      return "\xD9\x8F";
-      break;
-    case 0xB9 :
-      return "\xD9\x80\xD9\x8F";
-      break;
-    case 0xBA :
-      return "\xD9\x90";
-      break;
-    case 0xBB :
-      return "\xD9\x80\xD9\x90";
-      break;
-    case 0xBC :
-      return "\xD9\x91";
-      break;
-    case 0xBD :
-      return "\xD9\x80\xD9\x91";
-      break;
-    case 0xBE :
-      return "\xD9\x92";
-      break;
-    case 0xBF :
-      return "\xD9\x80\xD9\x92";
-      break;
-    }
-    break;
-  case 0xBA :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xD8\xA1";
-      break;
-    case 0x81 :
-      return "\xD8\xA2";
-      break;
-    case 0x82 :
-      return "\xD8\xA2";
-      break;
-    case 0x83 :
-      return "\xD8\xA3";
-      break;
-    case 0x84 :
-      return "\xD8\xA3";
-      break;
-    case 0x85 :
-      return "\xD8\xA4";
-      break;
-    case 0x86 :
-      return "\xD8\xA4";
-      break;
-    case 0x87 :
-      return "\xD8\xA5";
-      break;
-    case 0x88 :
-      return "\xD8\xA5";
-      break;
-    case 0x89 :
-      return "\xD8\xA6";
-      break;
-    case 0x8A :
-      return "\xD8\xA6";
-      break;
-    case 0x8B :
-      return "\xD8\xA6";
-      break;
-    case 0x8C :
-      return "\xD8\xA6";
-      break;
-    case 0x8D :
-      return "\xD8\xA7";
-      break;
-    case 0x8E :
-      return "\xD8\xA7";
-      break;
-    case 0x8F :
-      return "\xD8\xA8";
-      break;
-    case 0x90 :
-      return "\xD8\xA8";
-      break;
-    case 0x91 :
-      return "\xD8\xA8";
-      break;
-    case 0x92 :
-      return "\xD8\xA8";
-      break;
-    case 0x93 :
-      return "\xD8\xA9";
-      break;
-    case 0x94 :
-      return "\xD8\xA9";
-      break;
-    case 0x95 :
-      return "\xD8\xAA";
-      break;
-    case 0x96 :
-      return "\xD8\xAA";
-      break;
-    case 0x97 :
-      return "\xD8\xAA";
-      break;
-    case 0x98 :
-      return "\xD8\xAA";
-      break;
-    case 0x99 :
-      return "\xD8\xAB";
-      break;
-    case 0x9A :
-      return "\xD8\xAB";
-      break;
-    case 0x9B :
-      return "\xD8\xAB";
-      break;
-    case 0x9C :
-      return "\xD8\xAB";
-      break;
-    case 0x9D :
-      return "\xD8\xAC";
-      break;
-    case 0x9E :
-      return "\xD8\xAC";
-      break;
-    case 0x9F :
-      return "\xD8\xAC";
-      break;
-    case 0xA0 :
-      return "\xD8\xAC";
-      break;
-    case 0xA1 :
-      return "\xD8\xAD";
-      break;
-    case 0xA2 :
-      return "\xD8\xAD";
-      break;
-    case 0xA3 :
-      return "\xD8\xAD";
-      break;
-    case 0xA4 :
-      return "\xD8\xAD";
-      break;
-    case 0xA5 :
-      return "\xD8\xAE";
-      break;
-    case 0xA6 :
-      return "\xD8\xAE";
-      break;
-    case 0xA7 :
-      return "\xD8\xAE";
-      break;
-    case 0xA8 :
-      return "\xD8\xAE";
-      break;
-    case 0xA9 :
-      return "\xD8\xAF";
-      break;
-    case 0xAA :
-      return "\xD8\xAF";
-      break;
-    case 0xAB :
-      return "\xD8\xB0";
-      break;
-    case 0xAC :
-      return "\xD8\xB0";
-      break;
-    case 0xAD :
-      return "\xD8\xB1";
-      break;
-    case 0xAE :
-      return "\xD8\xB1";
-      break;
-    case 0xAF :
-      return "\xD8\xB2";
-      break;
-    case 0xB0 :
-      return "\xD8\xB2";
-      break;
-    case 0xB1 :
-      return "\xD8\xB3";
-      break;
-    case 0xB2 :
-      return "\xD8\xB3";
-      break;
-    case 0xB3 :
-      return "\xD8\xB3";
-      break;
-    case 0xB4 :
-      return "\xD8\xB3";
-      break;
-    case 0xB5 :
-      return "\xD8\xB4";
-      break;
-    case 0xB6 :
-      return "\xD8\xB4";
-      break;
-    case 0xB7 :
-      return "\xD8\xB4";
-      break;
-    case 0xB8 :
-      return "\xD8\xB4";
-      break;
-    case 0xB9 :
-      return "\xD8\xB5";
-      break;
-    case 0xBA :
-      return "\xD8\xB5";
-      break;
-    case 0xBB :
-      return "\xD8\xB5";
-      break;
-    case 0xBC :
-      return "\xD8\xB5";
-      break;
-    case 0xBD :
-      return "\xD8\xB6";
-      break;
-    case 0xBE :
-      return "\xD8\xB6";
-      break;
-    case 0xBF :
-      return "\xD8\xB6";
-      break;
-    }
-    break;
-  case 0xBB :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xD8\xB6";
-      break;
-    case 0x81 :
-      return "\xD8\xB7";
-      break;
-    case 0x82 :
-      return "\xD8\xB7";
-      break;
-    case 0x83 :
-      return "\xD8\xB7";
-      break;
-    case 0x84 :
-      return "\xD8\xB7";
-      break;
-    case 0x85 :
-      return "\xD8\xB8";
-      break;
-    case 0x86 :
-      return "\xD8\xB8";
-      break;
-    case 0x87 :
-      return "\xD8\xB8";
-      break;
-    case 0x88 :
-      return "\xD8\xB8";
-      break;
-    case 0x89 :
-      return "\xD8\xB9";
-      break;
-    case 0x8A :
-      return "\xD8\xB9";
-      break;
-    case 0x8B :
-      return "\xD8\xB9";
-      break;
-    case 0x8C :
-      return "\xD8\xB9";
-      break;
-    case 0x8D :
-      return "\xD8\xBA";
-      break;
-    case 0x8E :
-      return "\xD8\xBA";
-      break;
-    case 0x8F :
-      return "\xD8\xBA";
-      break;
-    case 0x90 :
-      return "\xD8\xBA";
-      break;
-    case 0x91 :
-      return "\xD9\x81";
-      break;
-    case 0x92 :
-      return "\xD9\x81";
-      break;
-    case 0x93 :
-      return "\xD9\x81";
-      break;
-    case 0x94 :
-      return "\xD9\x81";
-      break;
-    case 0x95 :
-      return "\xD9\x82";
-      break;
-    case 0x96 :
-      return "\xD9\x82";
-      break;
-    case 0x97 :
-      return "\xD9\x82";
-      break;
-    case 0x98 :
-      return "\xD9\x82";
-      break;
-    case 0x99 :
-      return "\xD9\x83";
-      break;
-    case 0x9A :
-      return "\xD9\x83";
-      break;
-    case 0x9B :
-      return "\xD9\x83";
-      break;
-    case 0x9C :
-      return "\xD9\x83";
-      break;
-    case 0x9D :
-      return "\xD9\x84";
-      break;
-    case 0x9E :
-      return "\xD9\x84";
-      break;
-    case 0x9F :
-      return "\xD9\x84";
-      break;
-    case 0xA0 :
-      return "\xD9\x84";
-      break;
-    case 0xA1 :
-      return "\xD9\x85";
-      break;
-    case 0xA2 :
-      return "\xD9\x85";
-      break;
-    case 0xA3 :
-      return "\xD9\x85";
-      break;
-    case 0xA4 :
-      return "\xD9\x85";
-      break;
-    case 0xA5 :
-      return "\xD9\x86";
-      break;
-    case 0xA6 :
-      return "\xD9\x86";
-      break;
-    case 0xA7 :
-      return "\xD9\x86";
-      break;
-    case 0xA8 :
-      return "\xD9\x86";
-      break;
-    case 0xA9 :
-      return "\xD9\x87";
-      break;
-    case 0xAA :
-      return "\xD9\x87";
-      break;
-    case 0xAB :
-      return "\xD9\x87";
-      break;
-    case 0xAC :
-      return "\xD9\x87";
-      break;
-    case 0xAD :
-      return "\xD9\x88";
-      break;
-    case 0xAE :
-      return "\xD9\x88";
-      break;
-    case 0xAF :
-      return "\xD9\x89";
-      break;
-    case 0xB0 :
-      return "\xD9\x89";
-      break;
-    case 0xB1 :
-      return "\xD9\x8A";
-      break;
-    case 0xB2 :
-      return "\xD9\x8A";
-      break;
-    case 0xB3 :
-      return "\xD9\x8A";
-      break;
-    case 0xB4 :
-      return "\xD9\x8A";
-      break;
-    case 0xB5 :
-      return "\xD9\x84\xD8\xA2";
-      break;
-    case 0xB6 :
-      return "\xD9\x84\xD8\xA2";
-      break;
-    case 0xB7 :
-      return "\xD9\x84\xD8\xA3";
-      break;
-    case 0xB8 :
-      return "\xD9\x84\xD8\xA3";
-      break;
-    case 0xB9 :
-      return "\xD9\x84\xD8\xA5";
-      break;
-    case 0xBA :
-      return "\xD9\x84\xD8\xA5";
-      break;
-    case 0xBB :
-      return "\xD9\x84\xD8\xA7";
-      break;
-    case 0xBC :
-      return "\xD9\x84\xD8\xA7";
-      break;
-    }
-    break;
-  case 0xBC :
-    switch (str[2]) {
-    case 0x81 :
-      return "\x21";
-      break;
-    case 0x82 :
-      return "\x22";
-      break;
-    case 0x83 :
-      return "\x23";
-      break;
-    case 0x84 :
-      return "\x24";
-      break;
-    case 0x85 :
-      return "\x25";
-      break;
-    case 0x86 :
-      return "\x26";
-      break;
-    case 0x87 :
-      return "\x27";
-      break;
-    case 0x88 :
-      return "\x28";
-      break;
-    case 0x89 :
-      return "\x29";
-      break;
-    case 0x8A :
-      return "\x2A";
-      break;
-    case 0x8B :
-      return "\x2B";
-      break;
-    case 0x8C :
-      return "\x2C";
-      break;
-    case 0x8D :
-      return "\x2D";
-      break;
-    case 0x8E :
-      return "\x2E";
-      break;
-    case 0x8F :
-      return "\x2F";
-      break;
-    case 0x90 :
-      return "\x30";
-      break;
-    case 0x91 :
-      return "\x31";
-      break;
-    case 0x92 :
-      return "\x32";
-      break;
-    case 0x93 :
-      return "\x33";
-      break;
-    case 0x94 :
-      return "\x34";
-      break;
-    case 0x95 :
-      return "\x35";
-      break;
-    case 0x96 :
-      return "\x36";
-      break;
-    case 0x97 :
-      return "\x37";
-      break;
-    case 0x98 :
-      return "\x38";
-      break;
-    case 0x99 :
-      return "\x39";
-      break;
-    case 0x9A :
-      return "\x3A";
-      break;
-    case 0x9B :
-      return "\x3B";
-      break;
-    case 0x9C :
-      return "\x3C";
-      break;
-    case 0x9D :
-      return "\x3D";
-      break;
-    case 0x9E :
-      return "\x3E";
-      break;
-    case 0x9F :
-      return "\x3F";
-      break;
-    case 0xA0 :
-      return "\x40";
-      break;
-    case 0xA1 :
-      return "\x61";
-      break;
-    case 0xA2 :
-      return "\x62";
-      break;
-    case 0xA3 :
-      return "\x63";
-      break;
-    case 0xA4 :
-      return "\x64";
-      break;
-    case 0xA5 :
-      return "\x65";
-      break;
-    case 0xA6 :
-      return "\x66";
-      break;
-    case 0xA7 :
-      return "\x67";
-      break;
-    case 0xA8 :
-      return "\x68";
-      break;
-    case 0xA9 :
-      return "\x69";
-      break;
-    case 0xAA :
-      return "\x6A";
-      break;
-    case 0xAB :
-      return "\x6B";
-      break;
-    case 0xAC :
-      return "\x6C";
-      break;
-    case 0xAD :
-      return "\x6D";
-      break;
-    case 0xAE :
-      return "\x6E";
-      break;
-    case 0xAF :
-      return "\x6F";
-      break;
-    case 0xB0 :
-      return "\x70";
-      break;
-    case 0xB1 :
-      return "\x71";
-      break;
-    case 0xB2 :
-      return "\x72";
-      break;
-    case 0xB3 :
-      return "\x73";
-      break;
-    case 0xB4 :
-      return "\x74";
-      break;
-    case 0xB5 :
-      return "\x75";
-      break;
-    case 0xB6 :
-      return "\x76";
-      break;
-    case 0xB7 :
-      return "\x77";
-      break;
-    case 0xB8 :
-      return "\x78";
-      break;
-    case 0xB9 :
-      return "\x79";
-      break;
-    case 0xBA :
-      return "\x7A";
-      break;
-    case 0xBB :
-      return "\x5B";
-      break;
-    case 0xBC :
-      return "\x5C";
-      break;
-    case 0xBD :
-      return "\x5D";
-      break;
-    case 0xBE :
-      return "\x5E";
-      break;
-    case 0xBF :
-      return "\x5F";
-      break;
-    }
-    break;
-  case 0xBD :
-    switch (str[2]) {
-    case 0x80 :
-      return "\x60";
-      break;
-    case 0x81 :
-      return "\x61";
-      break;
-    case 0x82 :
-      return "\x62";
-      break;
-    case 0x83 :
-      return "\x63";
-      break;
-    case 0x84 :
-      return "\x64";
-      break;
-    case 0x85 :
-      return "\x65";
-      break;
-    case 0x86 :
-      return "\x66";
-      break;
-    case 0x87 :
-      return "\x67";
-      break;
-    case 0x88 :
-      return "\x68";
-      break;
-    case 0x89 :
-      return "\x69";
-      break;
-    case 0x8A :
-      return "\x6A";
-      break;
-    case 0x8B :
-      return "\x6B";
-      break;
-    case 0x8C :
-      return "\x6C";
-      break;
-    case 0x8D :
-      return "\x6D";
-      break;
-    case 0x8E :
-      return "\x6E";
-      break;
-    case 0x8F :
-      return "\x6F";
-      break;
-    case 0x90 :
-      return "\x70";
-      break;
-    case 0x91 :
-      return "\x71";
-      break;
-    case 0x92 :
-      return "\x72";
-      break;
-    case 0x93 :
-      return "\x73";
-      break;
-    case 0x94 :
-      return "\x74";
-      break;
-    case 0x95 :
-      return "\x75";
-      break;
-    case 0x96 :
-      return "\x76";
-      break;
-    case 0x97 :
-      return "\x77";
-      break;
-    case 0x98 :
-      return "\x78";
-      break;
-    case 0x99 :
-      return "\x79";
-      break;
-    case 0x9A :
-      return "\x7A";
-      break;
-    case 0x9B :
-      return "\x7B";
-      break;
-    case 0x9C :
-      return "\x7C";
-      break;
-    case 0x9D :
-      return "\x7D";
-      break;
-    case 0x9E :
-      return "\x7E";
-      break;
-    case 0x9F :
-      return "\xE2\xA6\x85";
-      break;
-    case 0xA0 :
-      return "\xE2\xA6\x86";
-      break;
-    case 0xA1 :
-      return "\xE3\x80\x82";
-      break;
-    case 0xA2 :
-      return "\xE3\x80\x8C";
-      break;
-    case 0xA3 :
-      return "\xE3\x80\x8D";
-      break;
-    case 0xA4 :
-      return "\xE3\x80\x81";
-      break;
-    case 0xA5 :
-      return "\xE3\x83\xBB";
-      break;
-    case 0xA6 :
-      return "\xE3\x83\xB2";
-      break;
-    case 0xA7 :
-      return "\xE3\x82\xA1";
-      break;
-    case 0xA8 :
-      return "\xE3\x82\xA3";
-      break;
-    case 0xA9 :
-      return "\xE3\x82\xA5";
-      break;
-    case 0xAA :
-      return "\xE3\x82\xA7";
-      break;
-    case 0xAB :
-      return "\xE3\x82\xA9";
-      break;
-    case 0xAC :
-      return "\xE3\x83\xA3";
-      break;
-    case 0xAD :
-      return "\xE3\x83\xA5";
-      break;
-    case 0xAE :
-      return "\xE3\x83\xA7";
-      break;
-    case 0xAF :
-      return "\xE3\x83\x83";
-      break;
-    case 0xB0 :
-      return "\xE3\x83\xBC";
-      break;
-    case 0xB1 :
-      return "\xE3\x82\xA2";
-      break;
-    case 0xB2 :
-      return "\xE3\x82\xA4";
-      break;
-    case 0xB3 :
-      return "\xE3\x82\xA6";
-      break;
-    case 0xB4 :
-      return "\xE3\x82\xA8";
-      break;
-    case 0xB5 :
-      return "\xE3\x82\xAA";
-      break;
-    case 0xB6 :
-      return "\xE3\x82\xAB";
-      break;
-    case 0xB7 :
-      return "\xE3\x82\xAD";
-      break;
-    case 0xB8 :
-      return "\xE3\x82\xAF";
-      break;
-    case 0xB9 :
-      return "\xE3\x82\xB1";
-      break;
-    case 0xBA :
-      return "\xE3\x82\xB3";
-      break;
-    case 0xBB :
-      return "\xE3\x82\xB5";
-      break;
-    case 0xBC :
-      return "\xE3\x82\xB7";
-      break;
-    case 0xBD :
-      return "\xE3\x82\xB9";
-      break;
-    case 0xBE :
-      return "\xE3\x82\xBB";
-      break;
-    case 0xBF :
-      return "\xE3\x82\xBD";
-      break;
-    }
-    break;
-  case 0xBE :
-    switch (str[2]) {
-    case 0x80 :
-      return "\xE3\x82\xBF";
-      break;
-    case 0x81 :
-      return "\xE3\x83\x81";
-      break;
-    case 0x82 :
-      return "\xE3\x83\x84";
-      break;
-    case 0x83 :
-      return "\xE3\x83\x86";
-      break;
-    case 0x84 :
-      return "\xE3\x83\x88";
-      break;
-    case 0x85 :
-      return "\xE3\x83\x8A";
-      break;
-    case 0x86 :
-      return "\xE3\x83\x8B";
-      break;
-    case 0x87 :
-      return "\xE3\x83\x8C";
-      break;
-    case 0x88 :
-      return "\xE3\x83\x8D";
-      break;
-    case 0x89 :
-      return "\xE3\x83\x8E";
-      break;
-    case 0x8A :
-      return "\xE3\x83\x8F";
-      break;
-    case 0x8B :
-      return "\xE3\x83\x92";
-      break;
-    case 0x8C :
-      return "\xE3\x83\x95";
-      break;
-    case 0x8D :
-      return "\xE3\x83\x98";
-      break;
-    case 0x8E :
-      return "\xE3\x83\x9B";
-      break;
-    case 0x8F :
-      return "\xE3\x83\x9E";
-      break;
-    case 0x90 :
-      return "\xE3\x83\x9F";
-      break;
-    case 0x91 :
-      return "\xE3\x83\xA0";
-      break;
-    case 0x92 :
-      return "\xE3\x83\xA1";
-      break;
-    case 0x93 :
-      return "\xE3\x83\xA2";
-      break;
-    case 0x94 :
-      return "\xE3\x83\xA4";
-      break;
-    case 0x95 :
-      return "\xE3\x83\xA6";
-      break;
-    case 0x96 :
-      return "\xE3\x83\xA8";
-      break;
-    case 0x97 :
-      return "\xE3\x83\xA9";
-      break;
-    case 0x98 :
-      return "\xE3\x83\xAA";
-      break;
-    case 0x99 :
-      return "\xE3\x83\xAB";
-      break;
-    case 0x9A :
-      return "\xE3\x83\xAC";
-      break;
-    case 0x9B :
-      return "\xE3\x83\xAD";
-      break;
-    case 0x9C :
-      return "\xE3\x83\xAF";
-      break;
-    case 0x9D :
-      return "\xE3\x83\xB3";
-      break;
-    case 0x9E :
-      return "\xE3\x82\x99";
-      break;
-    case 0x9F :
-      return "\xE3\x82\x9A";
-      break;
-    case 0xA0 :
-      return "\xE1\x85\xA0";
-      break;
-    case 0xA1 :
-      return "\xE1\x84\x80";
-      break;
-    case 0xA2 :
-      return "\xE1\x84\x81";
-      break;
-    case 0xA3 :
-      return "\xE1\x86\xAA";
-      break;
-    case 0xA4 :
-      return "\xE1\x84\x82";
-      break;
-    case 0xA5 :
-      return "\xE1\x86\xAC";
-      break;
-    case 0xA6 :
-      return "\xE1\x86\xAD";
-      break;
-    case 0xA7 :
-      return "\xE1\x84\x83";
-      break;
-    case 0xA8 :
-      return "\xE1\x84\x84";
-      break;
-    case 0xA9 :
-      return "\xE1\x84\x85";
-      break;
-    case 0xAA :
-      return "\xE1\x86\xB0";
-      break;
-    case 0xAB :
-      return "\xE1\x86\xB1";
-      break;
-    case 0xAC :
-      return "\xE1\x86\xB2";
-      break;
-    case 0xAD :
-      return "\xE1\x86\xB3";
-      break;
-    case 0xAE :
-      return "\xE1\x86\xB4";
-      break;
-    case 0xAF :
-      return "\xE1\x86\xB5";
-      break;
-    case 0xB0 :
-      return "\xE1\x84\x9A";
-      break;
-    case 0xB1 :
-      return "\xE1\x84\x86";
-      break;
-    case 0xB2 :
-      return "\xE1\x84\x87";
-      break;
-    case 0xB3 :
-      return "\xE1\x84\x88";
-      break;
-    case 0xB4 :
-      return "\xE1\x84\xA1";
-      break;
-    case 0xB5 :
-      return "\xE1\x84\x89";
-      break;
-    case 0xB6 :
-      return "\xE1\x84\x8A";
-      break;
-    case 0xB7 :
-      return "\xE1\x84\x8B";
-      break;
-    case 0xB8 :
-      return "\xE1\x84\x8C";
-      break;
-    case 0xB9 :
-      return "\xE1\x84\x8D";
-      break;
-    case 0xBA :
-      return "\xE1\x84\x8E";
-      break;
-    case 0xBB :
-      return "\xE1\x84\x8F";
-      break;
-    case 0xBC :
-      return "\xE1\x84\x90";
-      break;
-    case 0xBD :
-      return "\xE1\x84\x91";
-      break;
-    case 0xBE :
-      return "\xE1\x84\x92";
-      break;
-    }
-    break;
-  case 0xBF :
-    switch (str[2]) {
-    case 0x82 :
-      return "\xE1\x85\xA1";
-      break;
-    case 0x83 :
-      return "\xE1\x85\xA2";
-      break;
-    case 0x84 :
-      return "\xE1\x85\xA3";
-      break;
-    case 0x85 :
-      return "\xE1\x85\xA4";
-      break;
-    case 0x86 :
-      return "\xE1\x85\xA5";
-      break;
-    case 0x87 :
-      return "\xE1\x85\xA6";
-      break;
-    case 0x8A :
-      return "\xE1\x85\xA7";
-      break;
-    case 0x8B :
-      return "\xE1\x85\xA8";
-      break;
-    case 0x8C :
-      return "\xE1\x85\xA9";
-      break;
-    case 0x8D :
-      return "\xE1\x85\xAA";
-      break;
-    case 0x8E :
-      return "\xE1\x85\xAB";
-      break;
-    case 0x8F :
-      return "\xE1\x85\xAC";
-      break;
-    case 0x92 :
-      return "\xE1\x85\xAD";
-      break;
-    case 0x93 :
-      return "\xE1\x85\xAE";
-      break;
-    case 0x94 :
-      return "\xE1\x85\xAF";
-      break;
-    case 0x95 :
-      return "\xE1\x85\xB0";
-      break;
-    case 0x96 :
-      return "\xE1\x85\xB1";
-      break;
-    case 0x97 :
-      return "\xE1\x85\xB2";
-      break;
-    case 0x9A :
-      return "\xE1\x85\xB3";
-      break;
-    case 0x9B :
-      return "\xE1\x85\xB4";
-      break;
-    case 0x9C :
-      return "\xE1\x85\xB5";
-      break;
-    case 0xA0 :
-      return "\xC2\xA2";
-      break;
-    case 0xA1 :
-      return "\xC2\xA3";
-      break;
-    case 0xA2 :
-      return "\xC2\xAC";
-      break;
-    case 0xA3 :
-      return "\xCC\x84";
-      break;
-    case 0xA4 :
-      return "\xC2\xA6";
-      break;
-    case 0xA5 :
-      return "\xC2\xA5";
-      break;
-    case 0xA6 :
-      return "\xE2\x82\xA9";
-      break;
-    case 0xA8 :
-      return "\xE2\x94\x82";
-      break;
-    case 0xA9 :
-      return "\xE2\x86\x90";
-      break;
-    case 0xAA :
-      return "\xE2\x86\x91";
-      break;
-    case 0xAB :
-      return "\xE2\x86\x92";
-      break;
-    case 0xAC :
-      return "\xE2\x86\x93";
-      break;
-    case 0xAD :
-      return "\xE2\x96\xA0";
-      break;
-    case 0xAE :
-      return "\xE2\x97\x8B";
-      break;
-    }
-    break;
-  }
-  break;
-case 0xF0 :
-  switch (str[1]) {
-  case 0x9D :
-    switch (str[2]) {
-    case 0x85 :
-      switch (str[3]) {
-      case 0x9E :
-        return "\xF0\x9D\x85\x97\xF0\x9D\x85\xA5";
-        break;
-      case 0x9F :
-        return "\xF0\x9D\x85\x98\xF0\x9D\x85\xA5";
-        break;
-      case 0xA0 :
-        return "\xF0\x9D\x85\x98\xF0\x9D\x85\xA5\xF0\x9D\x85\xAE";
-        break;
-      case 0xA1 :
-        return "\xF0\x9D\x85\x98\xF0\x9D\x85\xA5\xF0\x9D\x85\xAF";
-        break;
-      case 0xA2 :
-        return "\xF0\x9D\x85\x98\xF0\x9D\x85\xA5\xF0\x9D\x85\xB0";
-        break;
-      case 0xA3 :
-        return "\xF0\x9D\x85\x98\xF0\x9D\x85\xA5\xF0\x9D\x85\xB1";
-        break;
-      case 0xA4 :
-        return "\xF0\x9D\x85\x98\xF0\x9D\x85\xA5\xF0\x9D\x85\xB2";
-        break;
-      }
-      break;
-    case 0x86 :
-      switch (str[3]) {
-      case 0xBB :
-        return "\xF0\x9D\x86\xB9\xF0\x9D\x85\xA5";
-        break;
-      case 0xBC :
-        return "\xF0\x9D\x86\xBA\xF0\x9D\x85\xA5";
-        break;
-      case 0xBD :
-        return "\xF0\x9D\x86\xB9\xF0\x9D\x85\xA5\xF0\x9D\x85\xAE";
-        break;
-      case 0xBE :
-        return "\xF0\x9D\x86\xBA\xF0\x9D\x85\xA5\xF0\x9D\x85\xAE";
-        break;
-      case 0xBF :
-        return "\xF0\x9D\x86\xB9\xF0\x9D\x85\xA5\xF0\x9D\x85\xAF";
-        break;
-      }
-      break;
-    case 0x87 :
-      if (str[3] == 0x80) {
-        return "\xF0\x9D\x86\xBA\xF0\x9D\x85\xA5\xF0\x9D\x85\xAF";
-      }
-      break;
-    case 0x90 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\x61";
-        break;
-      case 0x81 :
-        return "\x62";
-        break;
-      case 0x82 :
-        return "\x63";
-        break;
-      case 0x83 :
-        return "\x64";
-        break;
-      case 0x84 :
-        return "\x65";
-        break;
-      case 0x85 :
-        return "\x66";
-        break;
-      case 0x86 :
-        return "\x67";
-        break;
-      case 0x87 :
-        return "\x68";
-        break;
-      case 0x88 :
-        return "\x69";
-        break;
-      case 0x89 :
-        return "\x6A";
-        break;
-      case 0x8A :
-        return "\x6B";
-        break;
-      case 0x8B :
-        return "\x6C";
-        break;
-      case 0x8C :
-        return "\x6D";
-        break;
-      case 0x8D :
-        return "\x6E";
-        break;
-      case 0x8E :
-        return "\x6F";
-        break;
-      case 0x8F :
-        return "\x70";
-        break;
-      case 0x90 :
-        return "\x71";
-        break;
-      case 0x91 :
-        return "\x72";
-        break;
-      case 0x92 :
-        return "\x73";
-        break;
-      case 0x93 :
-        return "\x74";
-        break;
-      case 0x94 :
-        return "\x75";
-        break;
-      case 0x95 :
-        return "\x76";
-        break;
-      case 0x96 :
-        return "\x77";
-        break;
-      case 0x97 :
-        return "\x78";
-        break;
-      case 0x98 :
-        return "\x79";
-        break;
-      case 0x99 :
-        return "\x7A";
-        break;
-      case 0x9A :
-        return "\x61";
-        break;
-      case 0x9B :
-        return "\x62";
-        break;
-      case 0x9C :
-        return "\x63";
-        break;
-      case 0x9D :
-        return "\x64";
-        break;
-      case 0x9E :
-        return "\x65";
-        break;
-      case 0x9F :
-        return "\x66";
-        break;
-      case 0xA0 :
-        return "\x67";
-        break;
-      case 0xA1 :
-        return "\x68";
-        break;
-      case 0xA2 :
-        return "\x69";
-        break;
-      case 0xA3 :
-        return "\x6A";
-        break;
-      case 0xA4 :
-        return "\x6B";
-        break;
-      case 0xA5 :
-        return "\x6C";
-        break;
-      case 0xA6 :
-        return "\x6D";
-        break;
-      case 0xA7 :
-        return "\x6E";
-        break;
-      case 0xA8 :
-        return "\x6F";
-        break;
-      case 0xA9 :
-        return "\x70";
-        break;
-      case 0xAA :
-        return "\x71";
-        break;
-      case 0xAB :
-        return "\x72";
-        break;
-      case 0xAC :
-        return "\x73";
-        break;
-      case 0xAD :
-        return "\x74";
-        break;
-      case 0xAE :
-        return "\x75";
-        break;
-      case 0xAF :
-        return "\x76";
-        break;
-      case 0xB0 :
-        return "\x77";
-        break;
-      case 0xB1 :
-        return "\x78";
-        break;
-      case 0xB2 :
-        return "\x79";
-        break;
-      case 0xB3 :
-        return "\x7A";
-        break;
-      case 0xB4 :
-        return "\x61";
-        break;
-      case 0xB5 :
-        return "\x62";
-        break;
-      case 0xB6 :
-        return "\x63";
-        break;
-      case 0xB7 :
-        return "\x64";
-        break;
-      case 0xB8 :
-        return "\x65";
-        break;
-      case 0xB9 :
-        return "\x66";
-        break;
-      case 0xBA :
-        return "\x67";
-        break;
-      case 0xBB :
-        return "\x68";
-        break;
-      case 0xBC :
-        return "\x69";
-        break;
-      case 0xBD :
-        return "\x6A";
-        break;
-      case 0xBE :
-        return "\x6B";
-        break;
-      case 0xBF :
-        return "\x6C";
-        break;
-      }
-      break;
-    case 0x91 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\x6D";
-        break;
-      case 0x81 :
-        return "\x6E";
-        break;
-      case 0x82 :
-        return "\x6F";
-        break;
-      case 0x83 :
-        return "\x70";
-        break;
-      case 0x84 :
-        return "\x71";
-        break;
-      case 0x85 :
-        return "\x72";
-        break;
-      case 0x86 :
-        return "\x73";
-        break;
-      case 0x87 :
-        return "\x74";
-        break;
-      case 0x88 :
-        return "\x75";
-        break;
-      case 0x89 :
-        return "\x76";
-        break;
-      case 0x8A :
-        return "\x77";
-        break;
-      case 0x8B :
-        return "\x78";
-        break;
-      case 0x8C :
-        return "\x79";
-        break;
-      case 0x8D :
-        return "\x7A";
-        break;
-      case 0x8E :
-        return "\x61";
-        break;
-      case 0x8F :
-        return "\x62";
-        break;
-      case 0x90 :
-        return "\x63";
-        break;
-      case 0x91 :
-        return "\x64";
-        break;
-      case 0x92 :
-        return "\x65";
-        break;
-      case 0x93 :
-        return "\x66";
-        break;
-      case 0x94 :
-        return "\x67";
-        break;
-      case 0x96 :
-        return "\x69";
-        break;
-      case 0x97 :
-        return "\x6A";
-        break;
-      case 0x98 :
-        return "\x6B";
-        break;
-      case 0x99 :
-        return "\x6C";
-        break;
-      case 0x9A :
-        return "\x6D";
-        break;
-      case 0x9B :
-        return "\x6E";
-        break;
-      case 0x9C :
-        return "\x6F";
-        break;
-      case 0x9D :
-        return "\x70";
-        break;
-      case 0x9E :
-        return "\x71";
-        break;
-      case 0x9F :
-        return "\x72";
-        break;
-      case 0xA0 :
-        return "\x73";
-        break;
-      case 0xA1 :
-        return "\x74";
-        break;
-      case 0xA2 :
-        return "\x75";
-        break;
-      case 0xA3 :
-        return "\x76";
-        break;
-      case 0xA4 :
-        return "\x77";
-        break;
-      case 0xA5 :
-        return "\x78";
-        break;
-      case 0xA6 :
-        return "\x79";
-        break;
-      case 0xA7 :
-        return "\x7A";
-        break;
-      case 0xA8 :
-        return "\x61";
-        break;
-      case 0xA9 :
-        return "\x62";
-        break;
-      case 0xAA :
-        return "\x63";
-        break;
-      case 0xAB :
-        return "\x64";
-        break;
-      case 0xAC :
-        return "\x65";
-        break;
-      case 0xAD :
-        return "\x66";
-        break;
-      case 0xAE :
-        return "\x67";
-        break;
-      case 0xAF :
-        return "\x68";
-        break;
-      case 0xB0 :
-        return "\x69";
-        break;
-      case 0xB1 :
-        return "\x6A";
-        break;
-      case 0xB2 :
-        return "\x6B";
-        break;
-      case 0xB3 :
-        return "\x6C";
-        break;
-      case 0xB4 :
-        return "\x6D";
-        break;
-      case 0xB5 :
-        return "\x6E";
-        break;
-      case 0xB6 :
-        return "\x6F";
-        break;
-      case 0xB7 :
-        return "\x70";
-        break;
-      case 0xB8 :
-        return "\x71";
-        break;
-      case 0xB9 :
-        return "\x72";
-        break;
-      case 0xBA :
-        return "\x73";
-        break;
-      case 0xBB :
-        return "\x74";
-        break;
-      case 0xBC :
-        return "\x75";
-        break;
-      case 0xBD :
-        return "\x76";
-        break;
-      case 0xBE :
-        return "\x77";
-        break;
-      case 0xBF :
-        return "\x78";
-        break;
-      }
-      break;
-    case 0x92 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\x79";
-        break;
-      case 0x81 :
-        return "\x7A";
-        break;
-      case 0x82 :
-        return "\x61";
-        break;
-      case 0x83 :
-        return "\x62";
-        break;
-      case 0x84 :
-        return "\x63";
-        break;
-      case 0x85 :
-        return "\x64";
-        break;
-      case 0x86 :
-        return "\x65";
-        break;
-      case 0x87 :
-        return "\x66";
-        break;
-      case 0x88 :
-        return "\x67";
-        break;
-      case 0x89 :
-        return "\x68";
-        break;
-      case 0x8A :
-        return "\x69";
-        break;
-      case 0x8B :
-        return "\x6A";
-        break;
-      case 0x8C :
-        return "\x6B";
-        break;
-      case 0x8D :
-        return "\x6C";
-        break;
-      case 0x8E :
-        return "\x6D";
-        break;
-      case 0x8F :
-        return "\x6E";
-        break;
-      case 0x90 :
-        return "\x6F";
-        break;
-      case 0x91 :
-        return "\x70";
-        break;
-      case 0x92 :
-        return "\x71";
-        break;
-      case 0x93 :
-        return "\x72";
-        break;
-      case 0x94 :
-        return "\x73";
-        break;
-      case 0x95 :
-        return "\x74";
-        break;
-      case 0x96 :
-        return "\x75";
-        break;
-      case 0x97 :
-        return "\x76";
-        break;
-      case 0x98 :
-        return "\x77";
-        break;
-      case 0x99 :
-        return "\x78";
-        break;
-      case 0x9A :
-        return "\x79";
-        break;
-      case 0x9B :
-        return "\x7A";
-        break;
-      case 0x9C :
-        return "\x61";
-        break;
-      case 0x9E :
-        return "\x63";
-        break;
-      case 0x9F :
-        return "\x64";
-        break;
-      case 0xA2 :
-        return "\x67";
-        break;
-      case 0xA5 :
-        return "\x6A";
-        break;
-      case 0xA6 :
-        return "\x6B";
-        break;
-      case 0xA9 :
-        return "\x6E";
-        break;
-      case 0xAA :
-        return "\x6F";
-        break;
-      case 0xAB :
-        return "\x70";
-        break;
-      case 0xAC :
-        return "\x71";
-        break;
-      case 0xAE :
-        return "\x73";
-        break;
-      case 0xAF :
-        return "\x74";
-        break;
-      case 0xB0 :
-        return "\x75";
-        break;
-      case 0xB1 :
-        return "\x76";
-        break;
-      case 0xB2 :
-        return "\x77";
-        break;
-      case 0xB3 :
-        return "\x78";
-        break;
-      case 0xB4 :
-        return "\x79";
-        break;
-      case 0xB5 :
-        return "\x7A";
-        break;
-      case 0xB6 :
-        return "\x61";
-        break;
-      case 0xB7 :
-        return "\x62";
-        break;
-      case 0xB8 :
-        return "\x63";
-        break;
-      case 0xB9 :
-        return "\x64";
-        break;
-      case 0xBB :
-        return "\x66";
-        break;
-      case 0xBD :
-        return "\x68";
-        break;
-      case 0xBE :
-        return "\x69";
-        break;
-      case 0xBF :
-        return "\x6A";
-        break;
-      }
-      break;
-    case 0x93 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\x6B";
-        break;
-      case 0x81 :
-        return "\x6C";
-        break;
-      case 0x82 :
-        return "\x6D";
-        break;
-      case 0x83 :
-        return "\x6E";
-        break;
-      case 0x85 :
-        return "\x70";
-        break;
-      case 0x86 :
-        return "\x71";
-        break;
-      case 0x87 :
-        return "\x72";
-        break;
-      case 0x88 :
-        return "\x73";
-        break;
-      case 0x89 :
-        return "\x74";
-        break;
-      case 0x8A :
-        return "\x75";
-        break;
-      case 0x8B :
-        return "\x76";
-        break;
-      case 0x8C :
-        return "\x77";
-        break;
-      case 0x8D :
-        return "\x78";
-        break;
-      case 0x8E :
-        return "\x79";
-        break;
-      case 0x8F :
-        return "\x7A";
-        break;
-      case 0x90 :
-        return "\x61";
-        break;
-      case 0x91 :
-        return "\x62";
-        break;
-      case 0x92 :
-        return "\x63";
-        break;
-      case 0x93 :
-        return "\x64";
-        break;
-      case 0x94 :
-        return "\x65";
-        break;
-      case 0x95 :
-        return "\x66";
-        break;
-      case 0x96 :
-        return "\x67";
-        break;
-      case 0x97 :
-        return "\x68";
-        break;
-      case 0x98 :
-        return "\x69";
-        break;
-      case 0x99 :
-        return "\x6A";
-        break;
-      case 0x9A :
-        return "\x6B";
-        break;
-      case 0x9B :
-        return "\x6C";
-        break;
-      case 0x9C :
-        return "\x6D";
-        break;
-      case 0x9D :
-        return "\x6E";
-        break;
-      case 0x9E :
-        return "\x6F";
-        break;
-      case 0x9F :
-        return "\x70";
-        break;
-      case 0xA0 :
-        return "\x71";
-        break;
-      case 0xA1 :
-        return "\x72";
-        break;
-      case 0xA2 :
-        return "\x73";
-        break;
-      case 0xA3 :
-        return "\x74";
-        break;
-      case 0xA4 :
-        return "\x75";
-        break;
-      case 0xA5 :
-        return "\x76";
-        break;
-      case 0xA6 :
-        return "\x77";
-        break;
-      case 0xA7 :
-        return "\x78";
-        break;
-      case 0xA8 :
-        return "\x79";
-        break;
-      case 0xA9 :
-        return "\x7A";
-        break;
-      case 0xAA :
-        return "\x61";
-        break;
-      case 0xAB :
-        return "\x62";
-        break;
-      case 0xAC :
-        return "\x63";
-        break;
-      case 0xAD :
-        return "\x64";
-        break;
-      case 0xAE :
-        return "\x65";
-        break;
-      case 0xAF :
-        return "\x66";
-        break;
-      case 0xB0 :
-        return "\x67";
-        break;
-      case 0xB1 :
-        return "\x68";
-        break;
-      case 0xB2 :
-        return "\x69";
-        break;
-      case 0xB3 :
-        return "\x6A";
-        break;
-      case 0xB4 :
-        return "\x6B";
-        break;
-      case 0xB5 :
-        return "\x6C";
-        break;
-      case 0xB6 :
-        return "\x6D";
-        break;
-      case 0xB7 :
-        return "\x6E";
-        break;
-      case 0xB8 :
-        return "\x6F";
-        break;
-      case 0xB9 :
-        return "\x70";
-        break;
-      case 0xBA :
-        return "\x71";
-        break;
-      case 0xBB :
-        return "\x72";
-        break;
-      case 0xBC :
-        return "\x73";
-        break;
-      case 0xBD :
-        return "\x74";
-        break;
-      case 0xBE :
-        return "\x75";
-        break;
-      case 0xBF :
-        return "\x76";
-        break;
-      }
-      break;
-    case 0x94 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\x77";
-        break;
-      case 0x81 :
-        return "\x78";
-        break;
-      case 0x82 :
-        return "\x79";
-        break;
-      case 0x83 :
-        return "\x7A";
-        break;
-      case 0x84 :
-        return "\x61";
-        break;
-      case 0x85 :
-        return "\x62";
-        break;
-      case 0x87 :
-        return "\x64";
-        break;
-      case 0x88 :
-        return "\x65";
-        break;
-      case 0x89 :
-        return "\x66";
-        break;
-      case 0x8A :
-        return "\x67";
-        break;
-      case 0x8D :
-        return "\x6A";
-        break;
-      case 0x8E :
-        return "\x6B";
-        break;
-      case 0x8F :
-        return "\x6C";
-        break;
-      case 0x90 :
-        return "\x6D";
-        break;
-      case 0x91 :
-        return "\x6E";
-        break;
-      case 0x92 :
-        return "\x6F";
-        break;
-      case 0x93 :
-        return "\x70";
-        break;
-      case 0x94 :
-        return "\x71";
-        break;
-      case 0x96 :
-        return "\x73";
-        break;
-      case 0x97 :
-        return "\x74";
-        break;
-      case 0x98 :
-        return "\x75";
-        break;
-      case 0x99 :
-        return "\x76";
-        break;
-      case 0x9A :
-        return "\x77";
-        break;
-      case 0x9B :
-        return "\x78";
-        break;
-      case 0x9C :
-        return "\x79";
-        break;
-      case 0x9E :
-        return "\x61";
-        break;
-      case 0x9F :
-        return "\x62";
-        break;
-      case 0xA0 :
-        return "\x63";
-        break;
-      case 0xA1 :
-        return "\x64";
-        break;
-      case 0xA2 :
-        return "\x65";
-        break;
-      case 0xA3 :
-        return "\x66";
-        break;
-      case 0xA4 :
-        return "\x67";
-        break;
-      case 0xA5 :
-        return "\x68";
-        break;
-      case 0xA6 :
-        return "\x69";
-        break;
-      case 0xA7 :
-        return "\x6A";
-        break;
-      case 0xA8 :
-        return "\x6B";
-        break;
-      case 0xA9 :
-        return "\x6C";
-        break;
-      case 0xAA :
-        return "\x6D";
-        break;
-      case 0xAB :
-        return "\x6E";
-        break;
-      case 0xAC :
-        return "\x6F";
-        break;
-      case 0xAD :
-        return "\x70";
-        break;
-      case 0xAE :
-        return "\x71";
-        break;
-      case 0xAF :
-        return "\x72";
-        break;
-      case 0xB0 :
-        return "\x73";
-        break;
-      case 0xB1 :
-        return "\x74";
-        break;
-      case 0xB2 :
-        return "\x75";
-        break;
-      case 0xB3 :
-        return "\x76";
-        break;
-      case 0xB4 :
-        return "\x77";
-        break;
-      case 0xB5 :
-        return "\x78";
-        break;
-      case 0xB6 :
-        return "\x79";
-        break;
-      case 0xB7 :
-        return "\x7A";
-        break;
-      case 0xB8 :
-        return "\x61";
-        break;
-      case 0xB9 :
-        return "\x62";
-        break;
-      case 0xBB :
-        return "\x64";
-        break;
-      case 0xBC :
-        return "\x65";
-        break;
-      case 0xBD :
-        return "\x66";
-        break;
-      case 0xBE :
-        return "\x67";
-        break;
-      }
-      break;
-    case 0x95 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\x69";
-        break;
-      case 0x81 :
-        return "\x6A";
-        break;
-      case 0x82 :
-        return "\x6B";
-        break;
-      case 0x83 :
-        return "\x6C";
-        break;
-      case 0x84 :
-        return "\x6D";
-        break;
-      case 0x86 :
-        return "\x6F";
-        break;
-      case 0x8A :
-        return "\x73";
-        break;
-      case 0x8B :
-        return "\x74";
-        break;
-      case 0x8C :
-        return "\x75";
-        break;
-      case 0x8D :
-        return "\x76";
-        break;
-      case 0x8E :
-        return "\x77";
-        break;
-      case 0x8F :
-        return "\x78";
-        break;
-      case 0x90 :
-        return "\x79";
-        break;
-      case 0x92 :
-        return "\x61";
-        break;
-      case 0x93 :
-        return "\x62";
-        break;
-      case 0x94 :
-        return "\x63";
-        break;
-      case 0x95 :
-        return "\x64";
-        break;
-      case 0x96 :
-        return "\x65";
-        break;
-      case 0x97 :
-        return "\x66";
-        break;
-      case 0x98 :
-        return "\x67";
-        break;
-      case 0x99 :
-        return "\x68";
-        break;
-      case 0x9A :
-        return "\x69";
-        break;
-      case 0x9B :
-        return "\x6A";
-        break;
-      case 0x9C :
-        return "\x6B";
-        break;
-      case 0x9D :
-        return "\x6C";
-        break;
-      case 0x9E :
-        return "\x6D";
-        break;
-      case 0x9F :
-        return "\x6E";
-        break;
-      case 0xA0 :
-        return "\x6F";
-        break;
-      case 0xA1 :
-        return "\x70";
-        break;
-      case 0xA2 :
-        return "\x71";
-        break;
-      case 0xA3 :
-        return "\x72";
-        break;
-      case 0xA4 :
-        return "\x73";
-        break;
-      case 0xA5 :
-        return "\x74";
-        break;
-      case 0xA6 :
-        return "\x75";
-        break;
-      case 0xA7 :
-        return "\x76";
-        break;
-      case 0xA8 :
-        return "\x77";
-        break;
-      case 0xA9 :
-        return "\x78";
-        break;
-      case 0xAA :
-        return "\x79";
-        break;
-      case 0xAB :
-        return "\x7A";
-        break;
-      case 0xAC :
-        return "\x61";
-        break;
-      case 0xAD :
-        return "\x62";
-        break;
-      case 0xAE :
-        return "\x63";
-        break;
-      case 0xAF :
-        return "\x64";
-        break;
-      case 0xB0 :
-        return "\x65";
-        break;
-      case 0xB1 :
-        return "\x66";
-        break;
-      case 0xB2 :
-        return "\x67";
-        break;
-      case 0xB3 :
-        return "\x68";
-        break;
-      case 0xB4 :
-        return "\x69";
-        break;
-      case 0xB5 :
-        return "\x6A";
-        break;
-      case 0xB6 :
-        return "\x6B";
-        break;
-      case 0xB7 :
-        return "\x6C";
-        break;
-      case 0xB8 :
-        return "\x6D";
-        break;
-      case 0xB9 :
-        return "\x6E";
-        break;
-      case 0xBA :
-        return "\x6F";
-        break;
-      case 0xBB :
-        return "\x70";
-        break;
-      case 0xBC :
-        return "\x71";
-        break;
-      case 0xBD :
-        return "\x72";
-        break;
-      case 0xBE :
-        return "\x73";
-        break;
-      case 0xBF :
-        return "\x74";
-        break;
-      }
-      break;
-    case 0x96 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\x75";
-        break;
-      case 0x81 :
-        return "\x76";
-        break;
-      case 0x82 :
-        return "\x77";
-        break;
-      case 0x83 :
-        return "\x78";
-        break;
-      case 0x84 :
-        return "\x79";
-        break;
-      case 0x85 :
-        return "\x7A";
-        break;
-      case 0x86 :
-        return "\x61";
-        break;
-      case 0x87 :
-        return "\x62";
-        break;
-      case 0x88 :
-        return "\x63";
-        break;
-      case 0x89 :
-        return "\x64";
-        break;
-      case 0x8A :
-        return "\x65";
-        break;
-      case 0x8B :
-        return "\x66";
-        break;
-      case 0x8C :
-        return "\x67";
-        break;
-      case 0x8D :
-        return "\x68";
-        break;
-      case 0x8E :
-        return "\x69";
-        break;
-      case 0x8F :
-        return "\x6A";
-        break;
-      case 0x90 :
-        return "\x6B";
-        break;
-      case 0x91 :
-        return "\x6C";
-        break;
-      case 0x92 :
-        return "\x6D";
-        break;
-      case 0x93 :
-        return "\x6E";
-        break;
-      case 0x94 :
-        return "\x6F";
-        break;
-      case 0x95 :
-        return "\x70";
-        break;
-      case 0x96 :
-        return "\x71";
-        break;
-      case 0x97 :
-        return "\x72";
-        break;
-      case 0x98 :
-        return "\x73";
-        break;
-      case 0x99 :
-        return "\x74";
-        break;
-      case 0x9A :
-        return "\x75";
-        break;
-      case 0x9B :
-        return "\x76";
-        break;
-      case 0x9C :
-        return "\x77";
-        break;
-      case 0x9D :
-        return "\x78";
-        break;
-      case 0x9E :
-        return "\x79";
-        break;
-      case 0x9F :
-        return "\x7A";
-        break;
-      case 0xA0 :
-        return "\x61";
-        break;
-      case 0xA1 :
-        return "\x62";
-        break;
-      case 0xA2 :
-        return "\x63";
-        break;
-      case 0xA3 :
-        return "\x64";
-        break;
-      case 0xA4 :
-        return "\x65";
-        break;
-      case 0xA5 :
-        return "\x66";
-        break;
-      case 0xA6 :
-        return "\x67";
-        break;
-      case 0xA7 :
-        return "\x68";
-        break;
-      case 0xA8 :
-        return "\x69";
-        break;
-      case 0xA9 :
-        return "\x6A";
-        break;
-      case 0xAA :
-        return "\x6B";
-        break;
-      case 0xAB :
-        return "\x6C";
-        break;
-      case 0xAC :
-        return "\x6D";
-        break;
-      case 0xAD :
-        return "\x6E";
-        break;
-      case 0xAE :
-        return "\x6F";
-        break;
-      case 0xAF :
-        return "\x70";
-        break;
-      case 0xB0 :
-        return "\x71";
-        break;
-      case 0xB1 :
-        return "\x72";
-        break;
-      case 0xB2 :
-        return "\x73";
-        break;
-      case 0xB3 :
-        return "\x74";
-        break;
-      case 0xB4 :
-        return "\x75";
-        break;
-      case 0xB5 :
-        return "\x76";
-        break;
-      case 0xB6 :
-        return "\x77";
-        break;
-      case 0xB7 :
-        return "\x78";
-        break;
-      case 0xB8 :
-        return "\x79";
-        break;
-      case 0xB9 :
-        return "\x7A";
-        break;
-      case 0xBA :
-        return "\x61";
-        break;
-      case 0xBB :
-        return "\x62";
-        break;
-      case 0xBC :
-        return "\x63";
-        break;
-      case 0xBD :
-        return "\x64";
-        break;
-      case 0xBE :
-        return "\x65";
-        break;
-      case 0xBF :
-        return "\x66";
-        break;
-      }
-      break;
-    case 0x97 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\x67";
-        break;
-      case 0x81 :
-        return "\x68";
-        break;
-      case 0x82 :
-        return "\x69";
-        break;
-      case 0x83 :
-        return "\x6A";
-        break;
-      case 0x84 :
-        return "\x6B";
-        break;
-      case 0x85 :
-        return "\x6C";
-        break;
-      case 0x86 :
-        return "\x6D";
-        break;
-      case 0x87 :
-        return "\x6E";
-        break;
-      case 0x88 :
-        return "\x6F";
-        break;
-      case 0x89 :
-        return "\x70";
-        break;
-      case 0x8A :
-        return "\x71";
-        break;
-      case 0x8B :
-        return "\x72";
-        break;
-      case 0x8C :
-        return "\x73";
-        break;
-      case 0x8D :
-        return "\x74";
-        break;
-      case 0x8E :
-        return "\x75";
-        break;
-      case 0x8F :
-        return "\x76";
-        break;
-      case 0x90 :
-        return "\x77";
-        break;
-      case 0x91 :
-        return "\x78";
-        break;
-      case 0x92 :
-        return "\x79";
-        break;
-      case 0x93 :
-        return "\x7A";
-        break;
-      case 0x94 :
-        return "\x61";
-        break;
-      case 0x95 :
-        return "\x62";
-        break;
-      case 0x96 :
-        return "\x63";
-        break;
-      case 0x97 :
-        return "\x64";
-        break;
-      case 0x98 :
-        return "\x65";
-        break;
-      case 0x99 :
-        return "\x66";
-        break;
-      case 0x9A :
-        return "\x67";
-        break;
-      case 0x9B :
-        return "\x68";
-        break;
-      case 0x9C :
-        return "\x69";
-        break;
-      case 0x9D :
-        return "\x6A";
-        break;
-      case 0x9E :
-        return "\x6B";
-        break;
-      case 0x9F :
-        return "\x6C";
-        break;
-      case 0xA0 :
-        return "\x6D";
-        break;
-      case 0xA1 :
-        return "\x6E";
-        break;
-      case 0xA2 :
-        return "\x6F";
-        break;
-      case 0xA3 :
-        return "\x70";
-        break;
-      case 0xA4 :
-        return "\x71";
-        break;
-      case 0xA5 :
-        return "\x72";
-        break;
-      case 0xA6 :
-        return "\x73";
-        break;
-      case 0xA7 :
-        return "\x74";
-        break;
-      case 0xA8 :
-        return "\x75";
-        break;
-      case 0xA9 :
-        return "\x76";
-        break;
-      case 0xAA :
-        return "\x77";
-        break;
-      case 0xAB :
-        return "\x78";
-        break;
-      case 0xAC :
-        return "\x79";
-        break;
-      case 0xAD :
-        return "\x7A";
-        break;
-      case 0xAE :
-        return "\x61";
-        break;
-      case 0xAF :
-        return "\x62";
-        break;
-      case 0xB0 :
-        return "\x63";
-        break;
-      case 0xB1 :
-        return "\x64";
-        break;
-      case 0xB2 :
-        return "\x65";
-        break;
-      case 0xB3 :
-        return "\x66";
-        break;
-      case 0xB4 :
-        return "\x67";
-        break;
-      case 0xB5 :
-        return "\x68";
-        break;
-      case 0xB6 :
-        return "\x69";
-        break;
-      case 0xB7 :
-        return "\x6A";
-        break;
-      case 0xB8 :
-        return "\x6B";
-        break;
-      case 0xB9 :
-        return "\x6C";
-        break;
-      case 0xBA :
-        return "\x6D";
-        break;
-      case 0xBB :
-        return "\x6E";
-        break;
-      case 0xBC :
-        return "\x6F";
-        break;
-      case 0xBD :
-        return "\x70";
-        break;
-      case 0xBE :
-        return "\x71";
-        break;
-      case 0xBF :
-        return "\x72";
-        break;
-      }
-      break;
-    case 0x98 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\x73";
-        break;
-      case 0x81 :
-        return "\x74";
-        break;
-      case 0x82 :
-        return "\x75";
-        break;
-      case 0x83 :
-        return "\x76";
-        break;
-      case 0x84 :
-        return "\x77";
-        break;
-      case 0x85 :
-        return "\x78";
-        break;
-      case 0x86 :
-        return "\x79";
-        break;
-      case 0x87 :
-        return "\x7A";
-        break;
-      case 0x88 :
-        return "\x61";
-        break;
-      case 0x89 :
-        return "\x62";
-        break;
-      case 0x8A :
-        return "\x63";
-        break;
-      case 0x8B :
-        return "\x64";
-        break;
-      case 0x8C :
-        return "\x65";
-        break;
-      case 0x8D :
-        return "\x66";
-        break;
-      case 0x8E :
-        return "\x67";
-        break;
-      case 0x8F :
-        return "\x68";
-        break;
-      case 0x90 :
-        return "\x69";
-        break;
-      case 0x91 :
-        return "\x6A";
-        break;
-      case 0x92 :
-        return "\x6B";
-        break;
-      case 0x93 :
-        return "\x6C";
-        break;
-      case 0x94 :
-        return "\x6D";
-        break;
-      case 0x95 :
-        return "\x6E";
-        break;
-      case 0x96 :
-        return "\x6F";
-        break;
-      case 0x97 :
-        return "\x70";
-        break;
-      case 0x98 :
-        return "\x71";
-        break;
-      case 0x99 :
-        return "\x72";
-        break;
-      case 0x9A :
-        return "\x73";
-        break;
-      case 0x9B :
-        return "\x74";
-        break;
-      case 0x9C :
-        return "\x75";
-        break;
-      case 0x9D :
-        return "\x76";
-        break;
-      case 0x9E :
-        return "\x77";
-        break;
-      case 0x9F :
-        return "\x78";
-        break;
-      case 0xA0 :
-        return "\x79";
-        break;
-      case 0xA1 :
-        return "\x7A";
-        break;
-      case 0xA2 :
-        return "\x61";
-        break;
-      case 0xA3 :
-        return "\x62";
-        break;
-      case 0xA4 :
-        return "\x63";
-        break;
-      case 0xA5 :
-        return "\x64";
-        break;
-      case 0xA6 :
-        return "\x65";
-        break;
-      case 0xA7 :
-        return "\x66";
-        break;
-      case 0xA8 :
-        return "\x67";
-        break;
-      case 0xA9 :
-        return "\x68";
-        break;
-      case 0xAA :
-        return "\x69";
-        break;
-      case 0xAB :
-        return "\x6A";
-        break;
-      case 0xAC :
-        return "\x6B";
-        break;
-      case 0xAD :
-        return "\x6C";
-        break;
-      case 0xAE :
-        return "\x6D";
-        break;
-      case 0xAF :
-        return "\x6E";
-        break;
-      case 0xB0 :
-        return "\x6F";
-        break;
-      case 0xB1 :
-        return "\x70";
-        break;
-      case 0xB2 :
-        return "\x71";
-        break;
-      case 0xB3 :
-        return "\x72";
-        break;
-      case 0xB4 :
-        return "\x73";
-        break;
-      case 0xB5 :
-        return "\x74";
-        break;
-      case 0xB6 :
-        return "\x75";
-        break;
-      case 0xB7 :
-        return "\x76";
-        break;
-      case 0xB8 :
-        return "\x77";
-        break;
-      case 0xB9 :
-        return "\x78";
-        break;
-      case 0xBA :
-        return "\x79";
-        break;
-      case 0xBB :
-        return "\x7A";
-        break;
-      case 0xBC :
-        return "\x61";
-        break;
-      case 0xBD :
-        return "\x62";
-        break;
-      case 0xBE :
-        return "\x63";
-        break;
-      case 0xBF :
-        return "\x64";
-        break;
-      }
-      break;
-    case 0x99 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\x65";
-        break;
-      case 0x81 :
-        return "\x66";
-        break;
-      case 0x82 :
-        return "\x67";
-        break;
-      case 0x83 :
-        return "\x68";
-        break;
-      case 0x84 :
-        return "\x69";
-        break;
-      case 0x85 :
-        return "\x6A";
-        break;
-      case 0x86 :
-        return "\x6B";
-        break;
-      case 0x87 :
-        return "\x6C";
-        break;
-      case 0x88 :
-        return "\x6D";
-        break;
-      case 0x89 :
-        return "\x6E";
-        break;
-      case 0x8A :
-        return "\x6F";
-        break;
-      case 0x8B :
-        return "\x70";
-        break;
-      case 0x8C :
-        return "\x71";
-        break;
-      case 0x8D :
-        return "\x72";
-        break;
-      case 0x8E :
-        return "\x73";
-        break;
-      case 0x8F :
-        return "\x74";
-        break;
-      case 0x90 :
-        return "\x75";
-        break;
-      case 0x91 :
-        return "\x76";
-        break;
-      case 0x92 :
-        return "\x77";
-        break;
-      case 0x93 :
-        return "\x78";
-        break;
-      case 0x94 :
-        return "\x79";
-        break;
-      case 0x95 :
-        return "\x7A";
-        break;
-      case 0x96 :
-        return "\x61";
-        break;
-      case 0x97 :
-        return "\x62";
-        break;
-      case 0x98 :
-        return "\x63";
-        break;
-      case 0x99 :
-        return "\x64";
-        break;
-      case 0x9A :
-        return "\x65";
-        break;
-      case 0x9B :
-        return "\x66";
-        break;
-      case 0x9C :
-        return "\x67";
-        break;
-      case 0x9D :
-        return "\x68";
-        break;
-      case 0x9E :
-        return "\x69";
-        break;
-      case 0x9F :
-        return "\x6A";
-        break;
-      case 0xA0 :
-        return "\x6B";
-        break;
-      case 0xA1 :
-        return "\x6C";
-        break;
-      case 0xA2 :
-        return "\x6D";
-        break;
-      case 0xA3 :
-        return "\x6E";
-        break;
-      case 0xA4 :
-        return "\x6F";
-        break;
-      case 0xA5 :
-        return "\x70";
-        break;
-      case 0xA6 :
-        return "\x71";
-        break;
-      case 0xA7 :
-        return "\x72";
-        break;
-      case 0xA8 :
-        return "\x73";
-        break;
-      case 0xA9 :
-        return "\x74";
-        break;
-      case 0xAA :
-        return "\x75";
-        break;
-      case 0xAB :
-        return "\x76";
-        break;
-      case 0xAC :
-        return "\x77";
-        break;
-      case 0xAD :
-        return "\x78";
-        break;
-      case 0xAE :
-        return "\x79";
-        break;
-      case 0xAF :
-        return "\x7A";
-        break;
-      case 0xB0 :
-        return "\x61";
-        break;
-      case 0xB1 :
-        return "\x62";
-        break;
-      case 0xB2 :
-        return "\x63";
-        break;
-      case 0xB3 :
-        return "\x64";
-        break;
-      case 0xB4 :
-        return "\x65";
-        break;
-      case 0xB5 :
-        return "\x66";
-        break;
-      case 0xB6 :
-        return "\x67";
-        break;
-      case 0xB7 :
-        return "\x68";
-        break;
-      case 0xB8 :
-        return "\x69";
-        break;
-      case 0xB9 :
-        return "\x6A";
-        break;
-      case 0xBA :
-        return "\x6B";
-        break;
-      case 0xBB :
-        return "\x6C";
-        break;
-      case 0xBC :
-        return "\x6D";
-        break;
-      case 0xBD :
-        return "\x6E";
-        break;
-      case 0xBE :
-        return "\x6F";
-        break;
-      case 0xBF :
-        return "\x70";
-        break;
-      }
-      break;
-    case 0x9A :
-      switch (str[3]) {
-      case 0x80 :
-        return "\x71";
-        break;
-      case 0x81 :
-        return "\x72";
-        break;
-      case 0x82 :
-        return "\x73";
-        break;
-      case 0x83 :
-        return "\x74";
-        break;
-      case 0x84 :
-        return "\x75";
-        break;
-      case 0x85 :
-        return "\x76";
-        break;
-      case 0x86 :
-        return "\x77";
-        break;
-      case 0x87 :
-        return "\x78";
-        break;
-      case 0x88 :
-        return "\x79";
-        break;
-      case 0x89 :
-        return "\x7A";
-        break;
-      case 0x8A :
-        return "\x61";
-        break;
-      case 0x8B :
-        return "\x62";
-        break;
-      case 0x8C :
-        return "\x63";
-        break;
-      case 0x8D :
-        return "\x64";
-        break;
-      case 0x8E :
-        return "\x65";
-        break;
-      case 0x8F :
-        return "\x66";
-        break;
-      case 0x90 :
-        return "\x67";
-        break;
-      case 0x91 :
-        return "\x68";
-        break;
-      case 0x92 :
-        return "\x69";
-        break;
-      case 0x93 :
-        return "\x6A";
-        break;
-      case 0x94 :
-        return "\x6B";
-        break;
-      case 0x95 :
-        return "\x6C";
-        break;
-      case 0x96 :
-        return "\x6D";
-        break;
-      case 0x97 :
-        return "\x6E";
-        break;
-      case 0x98 :
-        return "\x6F";
-        break;
-      case 0x99 :
-        return "\x70";
-        break;
-      case 0x9A :
-        return "\x71";
-        break;
-      case 0x9B :
-        return "\x72";
-        break;
-      case 0x9C :
-        return "\x73";
-        break;
-      case 0x9D :
-        return "\x74";
-        break;
-      case 0x9E :
-        return "\x75";
-        break;
-      case 0x9F :
-        return "\x76";
-        break;
-      case 0xA0 :
-        return "\x77";
-        break;
-      case 0xA1 :
-        return "\x78";
-        break;
-      case 0xA2 :
-        return "\x79";
-        break;
-      case 0xA3 :
-        return "\x7A";
-        break;
-      case 0xA4 :
-        return "\xC4\xB1";
-        break;
-      case 0xA5 :
-        return "\xC8\xB7";
-        break;
-      case 0xA8 :
-        return "\xCE\x91";
-        break;
-      case 0xA9 :
-        return "\xCE\x92";
-        break;
-      case 0xAA :
-        return "\xCE\x93";
-        break;
-      case 0xAB :
-        return "\xCE\x94";
-        break;
-      case 0xAC :
-        return "\xCE\x95";
-        break;
-      case 0xAD :
-        return "\xCE\x96";
-        break;
-      case 0xAE :
-        return "\xCE\x97";
-        break;
-      case 0xAF :
-        return "\xCE\x98";
-        break;
-      case 0xB0 :
-        return "\xCE\x99";
-        break;
-      case 0xB1 :
-        return "\xCE\x9A";
-        break;
-      case 0xB2 :
-        return "\xCE\x9B";
-        break;
-      case 0xB3 :
-        return "\xCE\x9C";
-        break;
-      case 0xB4 :
-        return "\xCE\x9D";
-        break;
-      case 0xB5 :
-        return "\xCE\x9E";
-        break;
-      case 0xB6 :
-        return "\xCE\x9F";
-        break;
-      case 0xB7 :
-        return "\xCE\xA0";
-        break;
-      case 0xB8 :
-        return "\xCE\xA1";
-        break;
-      case 0xB9 :
-        return "\xCE\x98";
-        break;
-      case 0xBA :
-        return "\xCE\xA3";
-        break;
-      case 0xBB :
-        return "\xCE\xA4";
-        break;
-      case 0xBC :
-        return "\xCE\xA5";
-        break;
-      case 0xBD :
-        return "\xCE\xA6";
-        break;
-      case 0xBE :
-        return "\xCE\xA7";
-        break;
-      case 0xBF :
-        return "\xCE\xA8";
-        break;
-      }
-      break;
-    case 0x9B :
-      switch (str[3]) {
-      case 0x80 :
-        return "\xCE\xA9";
-        break;
-      case 0x81 :
-        return "\xE2\x88\x87";
-        break;
-      case 0x82 :
-        return "\xCE\xB1";
-        break;
-      case 0x83 :
-        return "\xCE\xB2";
-        break;
-      case 0x84 :
-        return "\xCE\xB3";
-        break;
-      case 0x85 :
-        return "\xCE\xB4";
-        break;
-      case 0x86 :
-        return "\xCE\xB5";
-        break;
-      case 0x87 :
-        return "\xCE\xB6";
-        break;
-      case 0x88 :
-        return "\xCE\xB7";
-        break;
-      case 0x89 :
-        return "\xCE\xB8";
-        break;
-      case 0x8A :
-        return "\xCE\xB9";
-        break;
-      case 0x8B :
-        return "\xCE\xBA";
-        break;
-      case 0x8C :
-        return "\xCE\xBB";
-        break;
-      case 0x8D :
-        return "\xCE\xBC";
-        break;
-      case 0x8E :
-        return "\xCE\xBD";
-        break;
-      case 0x8F :
-        return "\xCE\xBE";
-        break;
-      case 0x90 :
-        return "\xCE\xBF";
-        break;
-      case 0x91 :
-        return "\xCF\x80";
-        break;
-      case 0x92 :
-        return "\xCF\x81";
-        break;
-      case 0x93 :
-        return "\xCF\x82";
-        break;
-      case 0x94 :
-        return "\xCF\x83";
-        break;
-      case 0x95 :
-        return "\xCF\x84";
-        break;
-      case 0x96 :
-        return "\xCF\x85";
-        break;
-      case 0x97 :
-        return "\xCF\x86";
-        break;
-      case 0x98 :
-        return "\xCF\x87";
-        break;
-      case 0x99 :
-        return "\xCF\x88";
-        break;
-      case 0x9A :
-        return "\xCF\x89";
-        break;
-      case 0x9B :
-        return "\xE2\x88\x82";
-        break;
-      case 0x9C :
-        return "\xCE\xB5";
-        break;
-      case 0x9D :
-        return "\xCE\xB8";
-        break;
-      case 0x9E :
-        return "\xCE\xBA";
-        break;
-      case 0x9F :
-        return "\xCF\x86";
-        break;
-      case 0xA0 :
-        return "\xCF\x81";
-        break;
-      case 0xA1 :
-        return "\xCF\x80";
-        break;
-      case 0xA2 :
-        return "\xCE\x91";
-        break;
-      case 0xA3 :
-        return "\xCE\x92";
-        break;
-      case 0xA4 :
-        return "\xCE\x93";
-        break;
-      case 0xA5 :
-        return "\xCE\x94";
-        break;
-      case 0xA6 :
-        return "\xCE\x95";
-        break;
-      case 0xA7 :
-        return "\xCE\x96";
-        break;
-      case 0xA8 :
-        return "\xCE\x97";
-        break;
-      case 0xA9 :
-        return "\xCE\x98";
-        break;
-      case 0xAA :
-        return "\xCE\x99";
-        break;
-      case 0xAB :
-        return "\xCE\x9A";
-        break;
-      case 0xAC :
-        return "\xCE\x9B";
-        break;
-      case 0xAD :
-        return "\xCE\x9C";
-        break;
-      case 0xAE :
-        return "\xCE\x9D";
-        break;
-      case 0xAF :
-        return "\xCE\x9E";
-        break;
-      case 0xB0 :
-        return "\xCE\x9F";
-        break;
-      case 0xB1 :
-        return "\xCE\xA0";
-        break;
-      case 0xB2 :
-        return "\xCE\xA1";
-        break;
-      case 0xB3 :
-        return "\xCE\x98";
-        break;
-      case 0xB4 :
-        return "\xCE\xA3";
-        break;
-      case 0xB5 :
-        return "\xCE\xA4";
-        break;
-      case 0xB6 :
-        return "\xCE\xA5";
-        break;
-      case 0xB7 :
-        return "\xCE\xA6";
-        break;
-      case 0xB8 :
-        return "\xCE\xA7";
-        break;
-      case 0xB9 :
-        return "\xCE\xA8";
-        break;
-      case 0xBA :
-        return "\xCE\xA9";
-        break;
-      case 0xBB :
-        return "\xE2\x88\x87";
-        break;
-      case 0xBC :
-        return "\xCE\xB1";
-        break;
-      case 0xBD :
-        return "\xCE\xB2";
-        break;
-      case 0xBE :
-        return "\xCE\xB3";
-        break;
-      case 0xBF :
-        return "\xCE\xB4";
-        break;
-      }
-      break;
-    case 0x9C :
-      switch (str[3]) {
-      case 0x80 :
-        return "\xCE\xB5";
-        break;
-      case 0x81 :
-        return "\xCE\xB6";
-        break;
-      case 0x82 :
-        return "\xCE\xB7";
-        break;
-      case 0x83 :
-        return "\xCE\xB8";
-        break;
-      case 0x84 :
-        return "\xCE\xB9";
-        break;
-      case 0x85 :
-        return "\xCE\xBA";
-        break;
-      case 0x86 :
-        return "\xCE\xBB";
-        break;
-      case 0x87 :
-        return "\xCE\xBC";
-        break;
-      case 0x88 :
-        return "\xCE\xBD";
-        break;
-      case 0x89 :
-        return "\xCE\xBE";
-        break;
-      case 0x8A :
-        return "\xCE\xBF";
-        break;
-      case 0x8B :
-        return "\xCF\x80";
-        break;
-      case 0x8C :
-        return "\xCF\x81";
-        break;
-      case 0x8D :
-        return "\xCF\x82";
-        break;
-      case 0x8E :
-        return "\xCF\x83";
-        break;
-      case 0x8F :
-        return "\xCF\x84";
-        break;
-      case 0x90 :
-        return "\xCF\x85";
-        break;
-      case 0x91 :
-        return "\xCF\x86";
-        break;
-      case 0x92 :
-        return "\xCF\x87";
-        break;
-      case 0x93 :
-        return "\xCF\x88";
-        break;
-      case 0x94 :
-        return "\xCF\x89";
-        break;
-      case 0x95 :
-        return "\xE2\x88\x82";
-        break;
-      case 0x96 :
-        return "\xCE\xB5";
-        break;
-      case 0x97 :
-        return "\xCE\xB8";
-        break;
-      case 0x98 :
-        return "\xCE\xBA";
-        break;
-      case 0x99 :
-        return "\xCF\x86";
-        break;
-      case 0x9A :
-        return "\xCF\x81";
-        break;
-      case 0x9B :
-        return "\xCF\x80";
-        break;
-      case 0x9C :
-        return "\xCE\x91";
-        break;
-      case 0x9D :
-        return "\xCE\x92";
-        break;
-      case 0x9E :
-        return "\xCE\x93";
-        break;
-      case 0x9F :
-        return "\xCE\x94";
-        break;
-      case 0xA0 :
-        return "\xCE\x95";
-        break;
-      case 0xA1 :
-        return "\xCE\x96";
-        break;
-      case 0xA2 :
-        return "\xCE\x97";
-        break;
-      case 0xA3 :
-        return "\xCE\x98";
-        break;
-      case 0xA4 :
-        return "\xCE\x99";
-        break;
-      case 0xA5 :
-        return "\xCE\x9A";
-        break;
-      case 0xA6 :
-        return "\xCE\x9B";
-        break;
-      case 0xA7 :
-        return "\xCE\x9C";
-        break;
-      case 0xA8 :
-        return "\xCE\x9D";
-        break;
-      case 0xA9 :
-        return "\xCE\x9E";
-        break;
-      case 0xAA :
-        return "\xCE\x9F";
-        break;
-      case 0xAB :
-        return "\xCE\xA0";
-        break;
-      case 0xAC :
-        return "\xCE\xA1";
-        break;
-      case 0xAD :
-        return "\xCE\x98";
-        break;
-      case 0xAE :
-        return "\xCE\xA3";
-        break;
-      case 0xAF :
-        return "\xCE\xA4";
-        break;
-      case 0xB0 :
-        return "\xCE\xA5";
-        break;
-      case 0xB1 :
-        return "\xCE\xA6";
-        break;
-      case 0xB2 :
-        return "\xCE\xA7";
-        break;
-      case 0xB3 :
-        return "\xCE\xA8";
-        break;
-      case 0xB4 :
-        return "\xCE\xA9";
-        break;
-      case 0xB5 :
-        return "\xE2\x88\x87";
-        break;
-      case 0xB6 :
-        return "\xCE\xB1";
-        break;
-      case 0xB7 :
-        return "\xCE\xB2";
-        break;
-      case 0xB8 :
-        return "\xCE\xB3";
-        break;
-      case 0xB9 :
-        return "\xCE\xB4";
-        break;
-      case 0xBA :
-        return "\xCE\xB5";
-        break;
-      case 0xBB :
-        return "\xCE\xB6";
-        break;
-      case 0xBC :
-        return "\xCE\xB7";
-        break;
-      case 0xBD :
-        return "\xCE\xB8";
-        break;
-      case 0xBE :
-        return "\xCE\xB9";
-        break;
-      case 0xBF :
-        return "\xCE\xBA";
-        break;
-      }
-      break;
-    case 0x9D :
-      switch (str[3]) {
-      case 0x80 :
-        return "\xCE\xBB";
-        break;
-      case 0x81 :
-        return "\xCE\xBC";
-        break;
-      case 0x82 :
-        return "\xCE\xBD";
-        break;
-      case 0x83 :
-        return "\xCE\xBE";
-        break;
-      case 0x84 :
-        return "\xCE\xBF";
-        break;
-      case 0x85 :
-        return "\xCF\x80";
-        break;
-      case 0x86 :
-        return "\xCF\x81";
-        break;
-      case 0x87 :
-        return "\xCF\x82";
-        break;
-      case 0x88 :
-        return "\xCF\x83";
-        break;
-      case 0x89 :
-        return "\xCF\x84";
-        break;
-      case 0x8A :
-        return "\xCF\x85";
-        break;
-      case 0x8B :
-        return "\xCF\x86";
-        break;
-      case 0x8C :
-        return "\xCF\x87";
-        break;
-      case 0x8D :
-        return "\xCF\x88";
-        break;
-      case 0x8E :
-        return "\xCF\x89";
-        break;
-      case 0x8F :
-        return "\xE2\x88\x82";
-        break;
-      case 0x90 :
-        return "\xCE\xB5";
-        break;
-      case 0x91 :
-        return "\xCE\xB8";
-        break;
-      case 0x92 :
-        return "\xCE\xBA";
-        break;
-      case 0x93 :
-        return "\xCF\x86";
-        break;
-      case 0x94 :
-        return "\xCF\x81";
-        break;
-      case 0x95 :
-        return "\xCF\x80";
-        break;
-      case 0x96 :
-        return "\xCE\x91";
-        break;
-      case 0x97 :
-        return "\xCE\x92";
-        break;
-      case 0x98 :
-        return "\xCE\x93";
-        break;
-      case 0x99 :
-        return "\xCE\x94";
-        break;
-      case 0x9A :
-        return "\xCE\x95";
-        break;
-      case 0x9B :
-        return "\xCE\x96";
-        break;
-      case 0x9C :
-        return "\xCE\x97";
-        break;
-      case 0x9D :
-        return "\xCE\x98";
-        break;
-      case 0x9E :
-        return "\xCE\x99";
-        break;
-      case 0x9F :
-        return "\xCE\x9A";
-        break;
-      case 0xA0 :
-        return "\xCE\x9B";
-        break;
-      case 0xA1 :
-        return "\xCE\x9C";
-        break;
-      case 0xA2 :
-        return "\xCE\x9D";
-        break;
-      case 0xA3 :
-        return "\xCE\x9E";
-        break;
-      case 0xA4 :
-        return "\xCE\x9F";
-        break;
-      case 0xA5 :
-        return "\xCE\xA0";
-        break;
-      case 0xA6 :
-        return "\xCE\xA1";
-        break;
-      case 0xA7 :
-        return "\xCE\x98";
-        break;
-      case 0xA8 :
-        return "\xCE\xA3";
-        break;
-      case 0xA9 :
-        return "\xCE\xA4";
-        break;
-      case 0xAA :
-        return "\xCE\xA5";
-        break;
-      case 0xAB :
-        return "\xCE\xA6";
-        break;
-      case 0xAC :
-        return "\xCE\xA7";
-        break;
-      case 0xAD :
-        return "\xCE\xA8";
-        break;
-      case 0xAE :
-        return "\xCE\xA9";
-        break;
-      case 0xAF :
-        return "\xE2\x88\x87";
-        break;
-      case 0xB0 :
-        return "\xCE\xB1";
-        break;
-      case 0xB1 :
-        return "\xCE\xB2";
-        break;
-      case 0xB2 :
-        return "\xCE\xB3";
-        break;
-      case 0xB3 :
-        return "\xCE\xB4";
-        break;
-      case 0xB4 :
-        return "\xCE\xB5";
-        break;
-      case 0xB5 :
-        return "\xCE\xB6";
-        break;
-      case 0xB6 :
-        return "\xCE\xB7";
-        break;
-      case 0xB7 :
-        return "\xCE\xB8";
-        break;
-      case 0xB8 :
-        return "\xCE\xB9";
-        break;
-      case 0xB9 :
-        return "\xCE\xBA";
-        break;
-      case 0xBA :
-        return "\xCE\xBB";
-        break;
-      case 0xBB :
-        return "\xCE\xBC";
-        break;
-      case 0xBC :
-        return "\xCE\xBD";
-        break;
-      case 0xBD :
-        return "\xCE\xBE";
-        break;
-      case 0xBE :
-        return "\xCE\xBF";
-        break;
-      case 0xBF :
-        return "\xCF\x80";
-        break;
-      }
-      break;
-    case 0x9E :
-      switch (str[3]) {
-      case 0x80 :
-        return "\xCF\x81";
-        break;
-      case 0x81 :
-        return "\xCF\x82";
-        break;
-      case 0x82 :
-        return "\xCF\x83";
-        break;
-      case 0x83 :
-        return "\xCF\x84";
-        break;
-      case 0x84 :
-        return "\xCF\x85";
-        break;
-      case 0x85 :
-        return "\xCF\x86";
-        break;
-      case 0x86 :
-        return "\xCF\x87";
-        break;
-      case 0x87 :
-        return "\xCF\x88";
-        break;
-      case 0x88 :
-        return "\xCF\x89";
-        break;
-      case 0x89 :
-        return "\xE2\x88\x82";
-        break;
-      case 0x8A :
-        return "\xCE\xB5";
-        break;
-      case 0x8B :
-        return "\xCE\xB8";
-        break;
-      case 0x8C :
-        return "\xCE\xBA";
-        break;
-      case 0x8D :
-        return "\xCF\x86";
-        break;
-      case 0x8E :
-        return "\xCF\x81";
-        break;
-      case 0x8F :
-        return "\xCF\x80";
-        break;
-      case 0x90 :
-        return "\xCE\x91";
-        break;
-      case 0x91 :
-        return "\xCE\x92";
-        break;
-      case 0x92 :
-        return "\xCE\x93";
-        break;
-      case 0x93 :
-        return "\xCE\x94";
-        break;
-      case 0x94 :
-        return "\xCE\x95";
-        break;
-      case 0x95 :
-        return "\xCE\x96";
-        break;
-      case 0x96 :
-        return "\xCE\x97";
-        break;
-      case 0x97 :
-        return "\xCE\x98";
-        break;
-      case 0x98 :
-        return "\xCE\x99";
-        break;
-      case 0x99 :
-        return "\xCE\x9A";
-        break;
-      case 0x9A :
-        return "\xCE\x9B";
-        break;
-      case 0x9B :
-        return "\xCE\x9C";
-        break;
-      case 0x9C :
-        return "\xCE\x9D";
-        break;
-      case 0x9D :
-        return "\xCE\x9E";
-        break;
-      case 0x9E :
-        return "\xCE\x9F";
-        break;
-      case 0x9F :
-        return "\xCE\xA0";
-        break;
-      case 0xA0 :
-        return "\xCE\xA1";
-        break;
-      case 0xA1 :
-        return "\xCE\x98";
-        break;
-      case 0xA2 :
-        return "\xCE\xA3";
-        break;
-      case 0xA3 :
-        return "\xCE\xA4";
-        break;
-      case 0xA4 :
-        return "\xCE\xA5";
-        break;
-      case 0xA5 :
-        return "\xCE\xA6";
-        break;
-      case 0xA6 :
-        return "\xCE\xA7";
-        break;
-      case 0xA7 :
-        return "\xCE\xA8";
-        break;
-      case 0xA8 :
-        return "\xCE\xA9";
-        break;
-      case 0xA9 :
-        return "\xE2\x88\x87";
-        break;
-      case 0xAA :
-        return "\xCE\xB1";
-        break;
-      case 0xAB :
-        return "\xCE\xB2";
-        break;
-      case 0xAC :
-        return "\xCE\xB3";
-        break;
-      case 0xAD :
-        return "\xCE\xB4";
-        break;
-      case 0xAE :
-        return "\xCE\xB5";
-        break;
-      case 0xAF :
-        return "\xCE\xB6";
-        break;
-      case 0xB0 :
-        return "\xCE\xB7";
-        break;
-      case 0xB1 :
-        return "\xCE\xB8";
-        break;
-      case 0xB2 :
-        return "\xCE\xB9";
-        break;
-      case 0xB3 :
-        return "\xCE\xBA";
-        break;
-      case 0xB4 :
-        return "\xCE\xBB";
-        break;
-      case 0xB5 :
-        return "\xCE\xBC";
-        break;
-      case 0xB6 :
-        return "\xCE\xBD";
-        break;
-      case 0xB7 :
-        return "\xCE\xBE";
-        break;
-      case 0xB8 :
-        return "\xCE\xBF";
-        break;
-      case 0xB9 :
-        return "\xCF\x80";
-        break;
-      case 0xBA :
-        return "\xCF\x81";
-        break;
-      case 0xBB :
-        return "\xCF\x82";
-        break;
-      case 0xBC :
-        return "\xCF\x83";
-        break;
-      case 0xBD :
-        return "\xCF\x84";
-        break;
-      case 0xBE :
-        return "\xCF\x85";
-        break;
-      case 0xBF :
-        return "\xCF\x86";
-        break;
-      }
-      break;
-    case 0x9F :
-      switch (str[3]) {
-      case 0x80 :
-        return "\xCF\x87";
-        break;
-      case 0x81 :
-        return "\xCF\x88";
-        break;
-      case 0x82 :
-        return "\xCF\x89";
-        break;
-      case 0x83 :
-        return "\xE2\x88\x82";
-        break;
-      case 0x84 :
-        return "\xCE\xB5";
-        break;
-      case 0x85 :
-        return "\xCE\xB8";
-        break;
-      case 0x86 :
-        return "\xCE\xBA";
-        break;
-      case 0x87 :
-        return "\xCF\x86";
-        break;
-      case 0x88 :
-        return "\xCF\x81";
-        break;
-      case 0x89 :
-        return "\xCF\x80";
-        break;
-      case 0x8A :
-        return "\xCF\x9C";
-        break;
-      case 0x8B :
-        return "\xCF\x9D";
-        break;
-      case 0x8E :
-        return "\x30";
-        break;
-      case 0x8F :
-        return "\x31";
-        break;
-      case 0x90 :
-        return "\x32";
-        break;
-      case 0x91 :
-        return "\x33";
-        break;
-      case 0x92 :
-        return "\x34";
-        break;
-      case 0x93 :
-        return "\x35";
-        break;
-      case 0x94 :
-        return "\x36";
-        break;
-      case 0x95 :
-        return "\x37";
-        break;
-      case 0x96 :
-        return "\x38";
-        break;
-      case 0x97 :
-        return "\x39";
-        break;
-      case 0x98 :
-        return "\x30";
-        break;
-      case 0x99 :
-        return "\x31";
-        break;
-      case 0x9A :
-        return "\x32";
-        break;
-      case 0x9B :
-        return "\x33";
-        break;
-      case 0x9C :
-        return "\x34";
-        break;
-      case 0x9D :
-        return "\x35";
-        break;
-      case 0x9E :
-        return "\x36";
-        break;
-      case 0x9F :
-        return "\x37";
-        break;
-      case 0xA0 :
-        return "\x38";
-        break;
-      case 0xA1 :
-        return "\x39";
-        break;
-      case 0xA2 :
-        return "\x30";
-        break;
-      case 0xA3 :
-        return "\x31";
-        break;
-      case 0xA4 :
-        return "\x32";
-        break;
-      case 0xA5 :
-        return "\x33";
-        break;
-      case 0xA6 :
-        return "\x34";
-        break;
-      case 0xA7 :
-        return "\x35";
-        break;
-      case 0xA8 :
-        return "\x36";
-        break;
-      case 0xA9 :
-        return "\x37";
-        break;
-      case 0xAA :
-        return "\x38";
-        break;
-      case 0xAB :
-        return "\x39";
-        break;
-      case 0xAC :
-        return "\x30";
-        break;
-      case 0xAD :
-        return "\x31";
-        break;
-      case 0xAE :
-        return "\x32";
-        break;
-      case 0xAF :
-        return "\x33";
-        break;
-      case 0xB0 :
-        return "\x34";
-        break;
-      case 0xB1 :
-        return "\x35";
-        break;
-      case 0xB2 :
-        return "\x36";
-        break;
-      case 0xB3 :
-        return "\x37";
-        break;
-      case 0xB4 :
-        return "\x38";
-        break;
-      case 0xB5 :
-        return "\x39";
-        break;
-      case 0xB6 :
-        return "\x30";
-        break;
-      case 0xB7 :
-        return "\x31";
-        break;
-      case 0xB8 :
-        return "\x32";
-        break;
-      case 0xB9 :
-        return "\x33";
-        break;
-      case 0xBA :
-        return "\x34";
-        break;
-      case 0xBB :
-        return "\x35";
-        break;
-      case 0xBC :
-        return "\x36";
-        break;
-      case 0xBD :
-        return "\x37";
-        break;
-      case 0xBE :
-        return "\x38";
-        break;
-      case 0xBF :
-        return "\x39";
-        break;
-      }
-      break;
-    }
-    break;
-  case 0xAF :
-    switch (str[2]) {
-    case 0xA0 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\xE4\xB8\xBD";
-        break;
-      case 0x81 :
-        return "\xE4\xB8\xB8";
-        break;
-      case 0x82 :
-        return "\xE4\xB9\x81";
-        break;
-      case 0x83 :
-        return "\xF0\xA0\x84\xA2";
-        break;
-      case 0x84 :
-        return "\xE4\xBD\xA0";
-        break;
-      case 0x85 :
-        return "\xE4\xBE\xAE";
-        break;
-      case 0x86 :
-        return "\xE4\xBE\xBB";
-        break;
-      case 0x87 :
-        return "\xE5\x80\x82";
-        break;
-      case 0x88 :
-        return "\xE5\x81\xBA";
-        break;
-      case 0x89 :
-        return "\xE5\x82\x99";
-        break;
-      case 0x8A :
-        return "\xE5\x83\xA7";
-        break;
-      case 0x8B :
-        return "\xE5\x83\x8F";
-        break;
-      case 0x8C :
-        return "\xE3\x92\x9E";
-        break;
-      case 0x8D :
-        return "\xF0\xA0\x98\xBA";
-        break;
-      case 0x8E :
-        return "\xE5\x85\x8D";
-        break;
-      case 0x8F :
-        return "\xE5\x85\x94";
-        break;
-      case 0x90 :
-        return "\xE5\x85\xA4";
-        break;
-      case 0x91 :
-        return "\xE5\x85\xB7";
-        break;
-      case 0x92 :
-        return "\xF0\xA0\x94\x9C";
-        break;
-      case 0x93 :
-        return "\xE3\x92\xB9";
-        break;
-      case 0x94 :
-        return "\xE5\x85\xA7";
-        break;
-      case 0x95 :
-        return "\xE5\x86\x8D";
-        break;
-      case 0x96 :
-        return "\xF0\xA0\x95\x8B";
-        break;
-      case 0x97 :
-        return "\xE5\x86\x97";
-        break;
-      case 0x98 :
-        return "\xE5\x86\xA4";
-        break;
-      case 0x99 :
-        return "\xE4\xBB\x8C";
-        break;
-      case 0x9A :
-        return "\xE5\x86\xAC";
-        break;
-      case 0x9B :
-        return "\xE5\x86\xB5";
-        break;
-      case 0x9C :
-        return "\xF0\xA9\x87\x9F";
-        break;
-      case 0x9D :
-        return "\xE5\x87\xB5";
-        break;
-      case 0x9E :
-        return "\xE5\x88\x83";
-        break;
-      case 0x9F :
-        return "\xE3\x93\x9F";
-        break;
-      case 0xA0 :
-        return "\xE5\x88\xBB";
-        break;
-      case 0xA1 :
-        return "\xE5\x89\x86";
-        break;
-      case 0xA2 :
-        return "\xE5\x89\xB2";
-        break;
-      case 0xA3 :
-        return "\xE5\x89\xB7";
-        break;
-      case 0xA4 :
-        return "\xE3\x94\x95";
-        break;
-      case 0xA5 :
-        return "\xE5\x8B\x87";
-        break;
-      case 0xA6 :
-        return "\xE5\x8B\x89";
-        break;
-      case 0xA7 :
-        return "\xE5\x8B\xA4";
-        break;
-      case 0xA8 :
-        return "\xE5\x8B\xBA";
-        break;
-      case 0xA9 :
-        return "\xE5\x8C\x85";
-        break;
-      case 0xAA :
-        return "\xE5\x8C\x86";
-        break;
-      case 0xAB :
-        return "\xE5\x8C\x97";
-        break;
-      case 0xAC :
-        return "\xE5\x8D\x89";
-        break;
-      case 0xAD :
-        return "\xE5\x8D\x91";
-        break;
-      case 0xAE :
-        return "\xE5\x8D\x9A";
-        break;
-      case 0xAF :
-        return "\xE5\x8D\xB3";
-        break;
-      case 0xB0 :
-        return "\xE5\x8D\xBD";
-        break;
-      case 0xB1 :
-        return "\xE5\x8D\xBF";
-        break;
-      case 0xB2 :
-        return "\xE5\x8D\xBF";
-        break;
-      case 0xB3 :
-        return "\xE5\x8D\xBF";
-        break;
-      case 0xB4 :
-        return "\xF0\xA0\xA8\xAC";
-        break;
-      case 0xB5 :
-        return "\xE7\x81\xB0";
-        break;
-      case 0xB6 :
-        return "\xE5\x8F\x8A";
-        break;
-      case 0xB7 :
-        return "\xE5\x8F\x9F";
-        break;
-      case 0xB8 :
-        return "\xF0\xA0\xAD\xA3";
-        break;
-      case 0xB9 :
-        return "\xE5\x8F\xAB";
-        break;
-      case 0xBA :
-        return "\xE5\x8F\xB1";
-        break;
-      case 0xBB :
-        return "\xE5\x90\x86";
-        break;
-      case 0xBC :
-        return "\xE5\x92\x9E";
-        break;
-      case 0xBD :
-        return "\xE5\x90\xB8";
-        break;
-      case 0xBE :
-        return "\xE5\x91\x88";
-        break;
-      case 0xBF :
-        return "\xE5\x91\xA8";
-        break;
-      }
-      break;
-    case 0xA1 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\xE5\x92\xA2";
-        break;
-      case 0x81 :
-        return "\xE5\x93\xB6";
-        break;
-      case 0x82 :
-        return "\xE5\x94\x90";
-        break;
-      case 0x83 :
-        return "\xE5\x95\x93";
-        break;
-      case 0x84 :
-        return "\xE5\x95\xA3";
-        break;
-      case 0x85 :
-        return "\xE5\x96\x84";
-        break;
-      case 0x86 :
-        return "\xE5\x96\x84";
-        break;
-      case 0x87 :
-        return "\xE5\x96\x99";
-        break;
-      case 0x88 :
-        return "\xE5\x96\xAB";
-        break;
-      case 0x89 :
-        return "\xE5\x96\xB3";
-        break;
-      case 0x8A :
-        return "\xE5\x97\x82";
-        break;
-      case 0x8B :
-        return "\xE5\x9C\x96";
-        break;
-      case 0x8C :
-        return "\xE5\x98\x86";
-        break;
-      case 0x8D :
-        return "\xE5\x9C\x97";
-        break;
-      case 0x8E :
-        return "\xE5\x99\x91";
-        break;
-      case 0x8F :
-        return "\xE5\x99\xB4";
-        break;
-      case 0x90 :
-        return "\xE5\x88\x87";
-        break;
-      case 0x91 :
-        return "\xE5\xA3\xAE";
-        break;
-      case 0x92 :
-        return "\xE5\x9F\x8E";
-        break;
-      case 0x93 :
-        return "\xE5\x9F\xB4";
-        break;
-      case 0x94 :
-        return "\xE5\xA0\x8D";
-        break;
-      case 0x95 :
-        return "\xE5\x9E\x8B";
-        break;
-      case 0x96 :
-        return "\xE5\xA0\xB2";
-        break;
-      case 0x97 :
-        return "\xE5\xA0\xB1";
-        break;
-      case 0x98 :
-        return "\xE5\xA2\xAC";
-        break;
-      case 0x99 :
-        return "\xF0\xA1\x93\xA4";
-        break;
-      case 0x9A :
-        return "\xE5\xA3\xB2";
-        break;
-      case 0x9B :
-        return "\xE5\xA3\xB7";
-        break;
-      case 0x9C :
-        return "\xE5\xA4\x86";
-        break;
-      case 0x9D :
-        return "\xE5\xA4\x9A";
-        break;
-      case 0x9E :
-        return "\xE5\xA4\xA2";
-        break;
-      case 0x9F :
-        return "\xE5\xA5\xA2";
-        break;
-      case 0xA0 :
-        return "\xF0\xA1\x9A\xA8";
-        break;
-      case 0xA1 :
-        return "\xF0\xA1\x9B\xAA";
-        break;
-      case 0xA2 :
-        return "\xE5\xA7\xAC";
-        break;
-      case 0xA3 :
-        return "\xE5\xA8\x9B";
-        break;
-      case 0xA4 :
-        return "\xE5\xA8\xA7";
-        break;
-      case 0xA5 :
-        return "\xE5\xA7\x98";
-        break;
-      case 0xA6 :
-        return "\xE5\xA9\xA6";
-        break;
-      case 0xA7 :
-        return "\xE3\x9B\xAE";
-        break;
-      case 0xA8 :
-        return "\xE3\x9B\xBC";
-        break;
-      case 0xA9 :
-        return "\xE5\xAC\x88";
-        break;
-      case 0xAA :
-        return "\xE5\xAC\xBE";
-        break;
-      case 0xAB :
-        return "\xE5\xAC\xBE";
-        break;
-      case 0xAC :
-        return "\xF0\xA1\xA7\x88";
-        break;
-      case 0xAD :
-        return "\xE5\xAF\x83";
-        break;
-      case 0xAE :
-        return "\xE5\xAF\x98";
-        break;
-      case 0xAF :
-        return "\xE5\xAF\xA7";
-        break;
-      case 0xB0 :
-        return "\xE5\xAF\xB3";
-        break;
-      case 0xB1 :
-        return "\xF0\xA1\xAC\x98";
-        break;
-      case 0xB2 :
-        return "\xE5\xAF\xBF";
-        break;
-      case 0xB3 :
-        return "\xE5\xB0\x86";
-        break;
-      case 0xB4 :
-        return "\xE5\xBD\x93";
-        break;
-      case 0xB5 :
-        return "\xE5\xB0\xA2";
-        break;
-      case 0xB6 :
-        return "\xE3\x9E\x81";
-        break;
-      case 0xB7 :
-        return "\xE5\xB1\xA0";
-        break;
-      case 0xB8 :
-        return "\xE5\xB1\xAE";
-        break;
-      case 0xB9 :
-        return "\xE5\xB3\x80";
-        break;
-      case 0xBA :
-        return "\xE5\xB2\x8D";
-        break;
-      case 0xBB :
-        return "\xF0\xA1\xB7\xA4";
-        break;
-      case 0xBC :
-        return "\xE5\xB5\x83";
-        break;
-      case 0xBD :
-        return "\xF0\xA1\xB7\xA6";
-        break;
-      case 0xBE :
-        return "\xE5\xB5\xAE";
-        break;
-      case 0xBF :
-        return "\xE5\xB5\xAB";
-        break;
-      }
-      break;
-    case 0xA2 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\xE5\xB5\xBC";
-        break;
-      case 0x81 :
-        return "\xE5\xB7\xA1";
-        break;
-      case 0x82 :
-        return "\xE5\xB7\xA2";
-        break;
-      case 0x83 :
-        return "\xE3\xA0\xAF";
-        break;
-      case 0x84 :
-        return "\xE5\xB7\xBD";
-        break;
-      case 0x85 :
-        return "\xE5\xB8\xA8";
-        break;
-      case 0x86 :
-        return "\xE5\xB8\xBD";
-        break;
-      case 0x87 :
-        return "\xE5\xB9\xA9";
-        break;
-      case 0x88 :
-        return "\xE3\xA1\xA2";
-        break;
-      case 0x89 :
-        return "\xF0\xA2\x86\x83";
-        break;
-      case 0x8A :
-        return "\xE3\xA1\xBC";
-        break;
-      case 0x8B :
-        return "\xE5\xBA\xB0";
-        break;
-      case 0x8C :
-        return "\xE5\xBA\xB3";
-        break;
-      case 0x8D :
-        return "\xE5\xBA\xB6";
-        break;
-      case 0x8E :
-        return "\xE5\xBB\x8A";
-        break;
-      case 0x8F :
-        return "\xF0\xAA\x8E\x92";
-        break;
-      case 0x90 :
-        return "\xE5\xBB\xBE";
-        break;
-      case 0x91 :
-        return "\xF0\xA2\x8C\xB1";
-        break;
-      case 0x92 :
-        return "\xF0\xA2\x8C\xB1";
-        break;
-      case 0x93 :
-        return "\xE8\x88\x81";
-        break;
-      case 0x94 :
-        return "\xE5\xBC\xA2";
-        break;
-      case 0x95 :
-        return "\xE5\xBC\xA2";
-        break;
-      case 0x96 :
-        return "\xE3\xA3\x87";
-        break;
-      case 0x97 :
-        return "\xF0\xA3\x8A\xB8";
-        break;
-      case 0x98 :
-        return "\xF0\xA6\x87\x9A";
-        break;
-      case 0x99 :
-        return "\xE5\xBD\xA2";
-        break;
-      case 0x9A :
-        return "\xE5\xBD\xAB";
-        break;
-      case 0x9B :
-        return "\xE3\xA3\xA3";
-        break;
-      case 0x9C :
-        return "\xE5\xBE\x9A";
-        break;
-      case 0x9D :
-        return "\xE5\xBF\x8D";
-        break;
-      case 0x9E :
-        return "\xE5\xBF\x97";
-        break;
-      case 0x9F :
-        return "\xE5\xBF\xB9";
-        break;
-      case 0xA0 :
-        return "\xE6\x82\x81";
-        break;
-      case 0xA1 :
-        return "\xE3\xA4\xBA";
-        break;
-      case 0xA2 :
-        return "\xE3\xA4\x9C";
-        break;
-      case 0xA3 :
-        return "\xE6\x82\x94";
-        break;
-      case 0xA4 :
-        return "\xF0\xA2\x9B\x94";
-        break;
-      case 0xA5 :
-        return "\xE6\x83\x87";
-        break;
-      case 0xA6 :
-        return "\xE6\x85\x88";
-        break;
-      case 0xA7 :
-        return "\xE6\x85\x8C";
-        break;
-      case 0xA8 :
-        return "\xE6\x85\x8E";
-        break;
-      case 0xA9 :
-        return "\xE6\x85\x8C";
-        break;
-      case 0xAA :
-        return "\xE6\x85\xBA";
-        break;
-      case 0xAB :
-        return "\xE6\x86\x8E";
-        break;
-      case 0xAC :
-        return "\xE6\x86\xB2";
-        break;
-      case 0xAD :
-        return "\xE6\x86\xA4";
-        break;
-      case 0xAE :
-        return "\xE6\x86\xAF";
-        break;
-      case 0xAF :
-        return "\xE6\x87\x9E";
-        break;
-      case 0xB0 :
-        return "\xE6\x87\xB2";
-        break;
-      case 0xB1 :
-        return "\xE6\x87\xB6";
-        break;
-      case 0xB2 :
-        return "\xE6\x88\x90";
-        break;
-      case 0xB3 :
-        return "\xE6\x88\x9B";
-        break;
-      case 0xB4 :
-        return "\xE6\x89\x9D";
-        break;
-      case 0xB5 :
-        return "\xE6\x8A\xB1";
-        break;
-      case 0xB6 :
-        return "\xE6\x8B\x94";
-        break;
-      case 0xB7 :
-        return "\xE6\x8D\x90";
-        break;
-      case 0xB8 :
-        return "\xF0\xA2\xAC\x8C";
-        break;
-      case 0xB9 :
-        return "\xE6\x8C\xBD";
-        break;
-      case 0xBA :
-        return "\xE6\x8B\xBC";
-        break;
-      case 0xBB :
-        return "\xE6\x8D\xA8";
-        break;
-      case 0xBC :
-        return "\xE6\x8E\x83";
-        break;
-      case 0xBD :
-        return "\xE6\x8F\xA4";
-        break;
-      case 0xBE :
-        return "\xF0\xA2\xAF\xB1";
-        break;
-      case 0xBF :
-        return "\xE6\x90\xA2";
-        break;
-      }
-      break;
-    case 0xA3 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\xE6\x8F\x85";
-        break;
-      case 0x81 :
-        return "\xE6\x8E\xA9";
-        break;
-      case 0x82 :
-        return "\xE3\xA8\xAE";
-        break;
-      case 0x83 :
-        return "\xE6\x91\xA9";
-        break;
-      case 0x84 :
-        return "\xE6\x91\xBE";
-        break;
-      case 0x85 :
-        return "\xE6\x92\x9D";
-        break;
-      case 0x86 :
-        return "\xE6\x91\xB7";
-        break;
-      case 0x87 :
-        return "\xE3\xA9\xAC";
-        break;
-      case 0x88 :
-        return "\xE6\x95\x8F";
-        break;
-      case 0x89 :
-        return "\xE6\x95\xAC";
-        break;
-      case 0x8A :
-        return "\xF0\xA3\x80\x8A";
-        break;
-      case 0x8B :
-        return "\xE6\x97\xA3";
-        break;
-      case 0x8C :
-        return "\xE6\x9B\xB8";
-        break;
-      case 0x8D :
-        return "\xE6\x99\x89";
-        break;
-      case 0x8E :
-        return "\xE3\xAC\x99";
-        break;
-      case 0x8F :
-        return "\xE6\x9A\x91";
-        break;
-      case 0x90 :
-        return "\xE3\xAC\x88";
-        break;
-      case 0x91 :
-        return "\xE3\xAB\xA4";
-        break;
-      case 0x92 :
-        return "\xE5\x86\x92";
-        break;
-      case 0x93 :
-        return "\xE5\x86\x95";
-        break;
-      case 0x94 :
-        return "\xE6\x9C\x80";
-        break;
-      case 0x95 :
-        return "\xE6\x9A\x9C";
-        break;
-      case 0x96 :
-        return "\xE8\x82\xAD";
-        break;
-      case 0x97 :
-        return "\xE4\x8F\x99";
-        break;
-      case 0x98 :
-        return "\xE6\x9C\x97";
-        break;
-      case 0x99 :
-        return "\xE6\x9C\x9B";
-        break;
-      case 0x9A :
-        return "\xE6\x9C\xA1";
-        break;
-      case 0x9B :
-        return "\xE6\x9D\x9E";
-        break;
-      case 0x9C :
-        return "\xE6\x9D\x93";
-        break;
-      case 0x9D :
-        return "\xF0\xA3\x8F\x83";
-        break;
-      case 0x9E :
-        return "\xE3\xAD\x89";
-        break;
-      case 0x9F :
-        return "\xE6\x9F\xBA";
-        break;
-      case 0xA0 :
-        return "\xE6\x9E\x85";
-        break;
-      case 0xA1 :
-        return "\xE6\xA1\x92";
-        break;
-      case 0xA2 :
-        return "\xE6\xA2\x85";
-        break;
-      case 0xA3 :
-        return "\xF0\xA3\x91\xAD";
-        break;
-      case 0xA4 :
-        return "\xE6\xA2\x8E";
-        break;
-      case 0xA5 :
-        return "\xE6\xA0\x9F";
-        break;
-      case 0xA6 :
-        return "\xE6\xA4\x94";
-        break;
-      case 0xA7 :
-        return "\xE3\xAE\x9D";
-        break;
-      case 0xA8 :
-        return "\xE6\xA5\x82";
-        break;
-      case 0xA9 :
-        return "\xE6\xA6\xA3";
-        break;
-      case 0xAA :
-        return "\xE6\xA7\xAA";
-        break;
-      case 0xAB :
-        return "\xE6\xAA\xA8";
-        break;
-      case 0xAC :
-        return "\xF0\xA3\x9A\xA3";
-        break;
-      case 0xAD :
-        return "\xE6\xAB\x9B";
-        break;
-      case 0xAE :
-        return "\xE3\xB0\x98";
-        break;
-      case 0xAF :
-        return "\xE6\xAC\xA1";
-        break;
-      case 0xB0 :
-        return "\xF0\xA3\xA2\xA7";
-        break;
-      case 0xB1 :
-        return "\xE6\xAD\x94";
-        break;
-      case 0xB2 :
-        return "\xE3\xB1\x8E";
-        break;
-      case 0xB3 :
-        return "\xE6\xAD\xB2";
-        break;
-      case 0xB4 :
-        return "\xE6\xAE\x9F";
-        break;
-      case 0xB5 :
-        return "\xE6\xAE\xBA";
-        break;
-      case 0xB6 :
-        return "\xE6\xAE\xBB";
-        break;
-      case 0xB7 :
-        return "\xF0\xA3\xAA\x8D";
-        break;
-      case 0xB8 :
-        return "\xF0\xA1\xB4\x8B";
-        break;
-      case 0xB9 :
-        return "\xF0\xA3\xAB\xBA";
-        break;
-      case 0xBA :
-        return "\xE6\xB1\x8E";
-        break;
-      case 0xBB :
-        return "\xF0\xA3\xB2\xBC";
-        break;
-      case 0xBC :
-        return "\xE6\xB2\xBF";
-        break;
-      case 0xBD :
-        return "\xE6\xB3\x8D";
-        break;
-      case 0xBE :
-        return "\xE6\xB1\xA7";
-        break;
-      case 0xBF :
-        return "\xE6\xB4\x96";
-        break;
-      }
-      break;
-    case 0xA4 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\xE6\xB4\xBE";
-        break;
-      case 0x81 :
-        return "\xE6\xB5\xB7";
-        break;
-      case 0x82 :
-        return "\xE6\xB5\x81";
-        break;
-      case 0x83 :
-        return "\xE6\xB5\xA9";
-        break;
-      case 0x84 :
-        return "\xE6\xB5\xB8";
-        break;
-      case 0x85 :
-        return "\xE6\xB6\x85";
-        break;
-      case 0x86 :
-        return "\xF0\xA3\xB4\x9E";
-        break;
-      case 0x87 :
-        return "\xE6\xB4\xB4";
-        break;
-      case 0x88 :
-        return "\xE6\xB8\xAF";
-        break;
-      case 0x89 :
-        return "\xE6\xB9\xAE";
-        break;
-      case 0x8A :
-        return "\xE3\xB4\xB3";
-        break;
-      case 0x8B :
-        return "\xE6\xBB\x8B";
-        break;
-      case 0x8C :
-        return "\xE6\xBB\x87";
-        break;
-      case 0x8D :
-        return "\xF0\xA3\xBB\x91";
-        break;
-      case 0x8E :
-        return "\xE6\xB7\xB9";
-        break;
-      case 0x8F :
-        return "\xE6\xBD\xAE";
-        break;
-      case 0x90 :
-        return "\xF0\xA3\xBD\x9E";
-        break;
-      case 0x91 :
-        return "\xF0\xA3\xBE\x8E";
-        break;
-      case 0x92 :
-        return "\xE6\xBF\x86";
-        break;
-      case 0x93 :
-        return "\xE7\x80\xB9";
-        break;
-      case 0x94 :
-        return "\xE7\x80\x9E";
-        break;
-      case 0x95 :
-        return "\xE7\x80\x9B";
-        break;
-      case 0x96 :
-        return "\xE3\xB6\x96";
-        break;
-      case 0x97 :
-        return "\xE7\x81\x8A";
-        break;
-      case 0x98 :
-        return "\xE7\x81\xBD";
-        break;
-      case 0x99 :
-        return "\xE7\x81\xB7";
-        break;
-      case 0x9A :
-        return "\xE7\x82\xAD";
-        break;
-      case 0x9B :
-        return "\xF0\xA0\x94\xA5";
-        break;
-      case 0x9C :
-        return "\xE7\x85\x85";
-        break;
-      case 0x9D :
-        return "\xF0\xA4\x89\xA3";
-        break;
-      case 0x9E :
-        return "\xE7\x86\x9C";
-        break;
-      case 0x9F :
-        return "\xF0\xA4\x8E\xAB";
-        break;
-      case 0xA0 :
-        return "\xE7\x88\xA8";
-        break;
-      case 0xA1 :
-        return "\xE7\x88\xB5";
-        break;
-      case 0xA2 :
-        return "\xE7\x89\x90";
-        break;
-      case 0xA3 :
-        return "\xF0\xA4\x98\x88";
-        break;
-      case 0xA4 :
-        return "\xE7\x8A\x80";
-        break;
-      case 0xA5 :
-        return "\xE7\x8A\x95";
-        break;
-      case 0xA6 :
-        return "\xF0\xA4\x9C\xB5";
-        break;
-      case 0xA7 :
-        return "\xF0\xA4\xA0\x94";
-        break;
-      case 0xA8 :
-        return "\xE7\x8D\xBA";
-        break;
-      case 0xA9 :
-        return "\xE7\x8E\x8B";
-        break;
-      case 0xAA :
-        return "\xE3\xBA\xAC";
-        break;
-      case 0xAB :
-        return "\xE7\x8E\xA5";
-        break;
-      case 0xAC :
-        return "\xE3\xBA\xB8";
-        break;
-      case 0xAD :
-        return "\xE3\xBA\xB8";
-        break;
-      case 0xAE :
-        return "\xE7\x91\x87";
-        break;
-      case 0xAF :
-        return "\xE7\x91\x9C";
-        break;
-      case 0xB0 :
-        return "\xE7\x91\xB1";
-        break;
-      case 0xB1 :
-        return "\xE7\x92\x85";
-        break;
-      case 0xB2 :
-        return "\xE7\x93\x8A";
-        break;
-      case 0xB3 :
-        return "\xE3\xBC\x9B";
-        break;
-      case 0xB4 :
-        return "\xE7\x94\xA4";
-        break;
-      case 0xB5 :
-        return "\xF0\xA4\xB0\xB6";
-        break;
-      case 0xB6 :
-        return "\xE7\x94\xBE";
-        break;
-      case 0xB7 :
-        return "\xF0\xA4\xB2\x92";
-        break;
-      case 0xB8 :
-        return "\xE7\x95\xB0";
-        break;
-      case 0xB9 :
-        return "\xF0\xA2\x86\x9F";
-        break;
-      case 0xBA :
-        return "\xE7\x98\x90";
-        break;
-      case 0xBB :
-        return "\xF0\xA4\xBE\xA1";
-        break;
-      case 0xBC :
-        return "\xF0\xA4\xBE\xB8";
-        break;
-      case 0xBD :
-        return "\xF0\xA5\x81\x84";
-        break;
-      case 0xBE :
-        return "\xE3\xBF\xBC";
-        break;
-      case 0xBF :
-        return "\xE4\x80\x88";
-        break;
-      }
-      break;
-    case 0xA5 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\xE7\x9B\xB4";
-        break;
-      case 0x81 :
-        return "\xF0\xA5\x83\xB3";
-        break;
-      case 0x82 :
-        return "\xF0\xA5\x83\xB2";
-        break;
-      case 0x83 :
-        return "\xF0\xA5\x84\x99";
-        break;
-      case 0x84 :
-        return "\xF0\xA5\x84\xB3";
-        break;
-      case 0x85 :
-        return "\xE7\x9C\x9E";
-        break;
-      case 0x86 :
-        return "\xE7\x9C\x9F";
-        break;
-      case 0x87 :
-        return "\xE7\x9C\x9F";
-        break;
-      case 0x88 :
-        return "\xE7\x9D\x8A";
-        break;
-      case 0x89 :
-        return "\xE4\x80\xB9";
-        break;
-      case 0x8A :
-        return "\xE7\x9E\x8B";
-        break;
-      case 0x8B :
-        return "\xE4\x81\x86";
-        break;
-      case 0x8C :
-        return "\xE4\x82\x96";
-        break;
-      case 0x8D :
-        return "\xF0\xA5\x90\x9D";
-        break;
-      case 0x8E :
-        return "\xE7\xA1\x8E";
-        break;
-      case 0x8F :
-        return "\xE7\xA2\x8C";
-        break;
-      case 0x90 :
-        return "\xE7\xA3\x8C";
-        break;
-      case 0x91 :
-        return "\xE4\x83\xA3";
-        break;
-      case 0x92 :
-        return "\xF0\xA5\x98\xA6";
-        break;
-      case 0x93 :
-        return "\xE7\xA5\x96";
-        break;
-      case 0x94 :
-        return "\xF0\xA5\x9A\x9A";
-        break;
-      case 0x95 :
-        return "\xF0\xA5\x9B\x85";
-        break;
-      case 0x96 :
-        return "\xE7\xA6\x8F";
-        break;
-      case 0x97 :
-        return "\xE7\xA7\xAB";
-        break;
-      case 0x98 :
-        return "\xE4\x84\xAF";
-        break;
-      case 0x99 :
-        return "\xE7\xA9\x80";
-        break;
-      case 0x9A :
-        return "\xE7\xA9\x8A";
-        break;
-      case 0x9B :
-        return "\xE7\xA9\x8F";
-        break;
-      case 0x9C :
-        return "\xF0\xA5\xA5\xBC";
-        break;
-      case 0x9D :
-        return "\xF0\xA5\xAA\xA7";
-        break;
-      case 0x9E :
-        return "\xF0\xA5\xAA\xA7";
-        break;
-      case 0x9F :
-        return "\xE7\xAB\xAE";
-        break;
-      case 0xA0 :
-        return "\xE4\x88\x82";
-        break;
-      case 0xA1 :
-        return "\xF0\xA5\xAE\xAB";
-        break;
-      case 0xA2 :
-        return "\xE7\xAF\x86";
-        break;
-      case 0xA3 :
-        return "\xE7\xAF\x89";
-        break;
-      case 0xA4 :
-        return "\xE4\x88\xA7";
-        break;
-      case 0xA5 :
-        return "\xF0\xA5\xB2\x80";
-        break;
-      case 0xA6 :
-        return "\xE7\xB3\x92";
-        break;
-      case 0xA7 :
-        return "\xE4\x8A\xA0";
-        break;
-      case 0xA8 :
-        return "\xE7\xB3\xA8";
-        break;
-      case 0xA9 :
-        return "\xE7\xB3\xA3";
-        break;
-      case 0xAA :
-        return "\xE7\xB4\x80";
-        break;
-      case 0xAB :
-        return "\xF0\xA5\xBE\x86";
-        break;
-      case 0xAC :
-        return "\xE7\xB5\xA3";
-        break;
-      case 0xAD :
-        return "\xE4\x8C\x81";
-        break;
-      case 0xAE :
-        return "\xE7\xB7\x87";
-        break;
-      case 0xAF :
-        return "\xE7\xB8\x82";
-        break;
-      case 0xB0 :
-        return "\xE7\xB9\x85";
-        break;
-      case 0xB1 :
-        return "\xE4\x8C\xB4";
-        break;
-      case 0xB2 :
-        return "\xF0\xA6\x88\xA8";
-        break;
-      case 0xB3 :
-        return "\xF0\xA6\x89\x87";
-        break;
-      case 0xB4 :
-        return "\xE4\x8D\x99";
-        break;
-      case 0xB5 :
-        return "\xF0\xA6\x8B\x99";
-        break;
-      case 0xB6 :
-        return "\xE7\xBD\xBA";
-        break;
-      case 0xB7 :
-        return "\xF0\xA6\x8C\xBE";
-        break;
-      case 0xB8 :
-        return "\xE7\xBE\x95";
-        break;
-      case 0xB9 :
-        return "\xE7\xBF\xBA";
-        break;
-      case 0xBA :
-        return "\xE8\x80\x85";
-        break;
-      case 0xBB :
-        return "\xF0\xA6\x93\x9A";
-        break;
-      case 0xBC :
-        return "\xF0\xA6\x94\xA3";
-        break;
-      case 0xBD :
-        return "\xE8\x81\xA0";
-        break;
-      case 0xBE :
-        return "\xF0\xA6\x96\xA8";
-        break;
-      case 0xBF :
-        return "\xE8\x81\xB0";
-        break;
-      }
-      break;
-    case 0xA6 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\xF0\xA3\x8D\x9F";
-        break;
-      case 0x81 :
-        return "\xE4\x8F\x95";
-        break;
-      case 0x82 :
-        return "\xE8\x82\xB2";
-        break;
-      case 0x83 :
-        return "\xE8\x84\x83";
-        break;
-      case 0x84 :
-        return "\xE4\x90\x8B";
-        break;
-      case 0x85 :
-        return "\xE8\x84\xBE";
-        break;
-      case 0x86 :
-        return "\xE5\xAA\xB5";
-        break;
-      case 0x87 :
-        return "\xF0\xA6\x9E\xA7";
-        break;
-      case 0x88 :
-        return "\xF0\xA6\x9E\xB5";
-        break;
-      case 0x89 :
-        return "\xF0\xA3\x8E\x93";
-        break;
-      case 0x8A :
-        return "\xF0\xA3\x8E\x9C";
-        break;
-      case 0x8B :
-        return "\xE8\x88\x81";
-        break;
-      case 0x8C :
-        return "\xE8\x88\x84";
-        break;
-      case 0x8D :
-        return "\xE8\xBE\x9E";
-        break;
-      case 0x8E :
-        return "\xE4\x91\xAB";
-        break;
-      case 0x8F :
-        return "\xE8\x8A\x91";
-        break;
-      case 0x90 :
-        return "\xE8\x8A\x8B";
-        break;
-      case 0x91 :
-        return "\xE8\x8A\x9D";
-        break;
-      case 0x92 :
-        return "\xE5\x8A\xB3";
-        break;
-      case 0x93 :
-        return "\xE8\x8A\xB1";
-        break;
-      case 0x94 :
-        return "\xE8\x8A\xB3";
-        break;
-      case 0x95 :
-        return "\xE8\x8A\xBD";
-        break;
-      case 0x96 :
-        return "\xE8\x8B\xA6";
-        break;
-      case 0x97 :
-        return "\xF0\xA6\xAC\xBC";
-        break;
-      case 0x98 :
-        return "\xE8\x8B\xA5";
-        break;
-      case 0x99 :
-        return "\xE8\x8C\x9D";
-        break;
-      case 0x9A :
-        return "\xE8\x8D\xA3";
-        break;
-      case 0x9B :
-        return "\xE8\x8E\xAD";
-        break;
-      case 0x9C :
-        return "\xE8\x8C\xA3";
-        break;
-      case 0x9D :
-        return "\xE8\x8E\xBD";
-        break;
-      case 0x9E :
-        return "\xE8\x8F\xA7";
-        break;
-      case 0x9F :
-        return "\xE8\x91\x97";
-        break;
-      case 0xA0 :
-        return "\xE8\x8D\x93";
-        break;
-      case 0xA1 :
-        return "\xE8\x8F\x8A";
-        break;
-      case 0xA2 :
-        return "\xE8\x8F\x8C";
-        break;
-      case 0xA3 :
-        return "\xE8\x8F\x9C";
-        break;
-      case 0xA4 :
-        return "\xF0\xA6\xB0\xB6";
-        break;
-      case 0xA5 :
-        return "\xF0\xA6\xB5\xAB";
-        break;
-      case 0xA6 :
-        return "\xF0\xA6\xB3\x95";
-        break;
-      case 0xA7 :
-        return "\xE4\x94\xAB";
-        break;
-      case 0xA8 :
-        return "\xE8\x93\xB1";
-        break;
-      case 0xA9 :
-        return "\xE8\x93\xB3";
-        break;
-      case 0xAA :
-        return "\xE8\x94\x96";
-        break;
-      case 0xAB :
-        return "\xF0\xA7\x8F\x8A";
-        break;
-      case 0xAC :
-        return "\xE8\x95\xA4";
-        break;
-      case 0xAD :
-        return "\xF0\xA6\xBC\xAC";
-        break;
-      case 0xAE :
-        return "\xE4\x95\x9D";
-        break;
-      case 0xAF :
-        return "\xE4\x95\xA1";
-        break;
-      case 0xB0 :
-        return "\xF0\xA6\xBE\xB1";
-        break;
-      case 0xB1 :
-        return "\xF0\xA7\x83\x92";
-        break;
-      case 0xB2 :
-        return "\xE4\x95\xAB";
-        break;
-      case 0xB3 :
-        return "\xE8\x99\x90";
-        break;
-      case 0xB4 :
-        return "\xE8\x99\x9C";
-        break;
-      case 0xB5 :
-        return "\xE8\x99\xA7";
-        break;
-      case 0xB6 :
-        return "\xE8\x99\xA9";
-        break;
-      case 0xB7 :
-        return "\xE8\x9A\xA9";
-        break;
-      case 0xB8 :
-        return "\xE8\x9A\x88";
-        break;
-      case 0xB9 :
-        return "\xE8\x9C\x8E";
-        break;
-      case 0xBA :
-        return "\xE8\x9B\xA2";
-        break;
-      case 0xBB :
-        return "\xE8\x9D\xB9";
-        break;
-      case 0xBC :
-        return "\xE8\x9C\xA8";
-        break;
-      case 0xBD :
-        return "\xE8\x9D\xAB";
-        break;
-      case 0xBE :
-        return "\xE8\x9E\x86";
-        break;
-      case 0xBF :
-        return "\xE4\x97\x97";
-        break;
-      }
-      break;
-    case 0xA7 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\xE8\x9F\xA1";
-        break;
-      case 0x81 :
-        return "\xE8\xA0\x81";
-        break;
-      case 0x82 :
-        return "\xE4\x97\xB9";
-        break;
-      case 0x83 :
-        return "\xE8\xA1\xA0";
-        break;
-      case 0x84 :
-        return "\xE8\xA1\xA3";
-        break;
-      case 0x85 :
-        return "\xF0\xA7\x99\xA7";
-        break;
-      case 0x86 :
-        return "\xE8\xA3\x97";
-        break;
-      case 0x87 :
-        return "\xE8\xA3\x9E";
-        break;
-      case 0x88 :
-        return "\xE4\x98\xB5";
-        break;
-      case 0x89 :
-        return "\xE8\xA3\xBA";
-        break;
-      case 0x8A :
-        return "\xE3\x92\xBB";
-        break;
-      case 0x8B :
-        return "\xF0\xA7\xA2\xAE";
-        break;
-      case 0x8C :
-        return "\xF0\xA7\xA5\xA6";
-        break;
-      case 0x8D :
-        return "\xE4\x9A\xBE";
-        break;
-      case 0x8E :
-        return "\xE4\x9B\x87";
-        break;
-      case 0x8F :
-        return "\xE8\xAA\xA0";
-        break;
-      case 0x90 :
-        return "\xE8\xAB\xAD";
-        break;
-      case 0x91 :
-        return "\xE8\xAE\x8A";
-        break;
-      case 0x92 :
-        return "\xE8\xB1\x95";
-        break;
-      case 0x93 :
-        return "\xF0\xA7\xB2\xA8";
-        break;
-      case 0x94 :
-        return "\xE8\xB2\xAB";
-        break;
-      case 0x95 :
-        return "\xE8\xB3\x81";
-        break;
-      case 0x96 :
-        return "\xE8\xB4\x9B";
-        break;
-      case 0x97 :
-        return "\xE8\xB5\xB7";
-        break;
-      case 0x98 :
-        return "\xF0\xA7\xBC\xAF";
-        break;
-      case 0x99 :
-        return "\xF0\xA0\xA0\x84";
-        break;
-      case 0x9A :
-        return "\xE8\xB7\x8B";
-        break;
-      case 0x9B :
-        return "\xE8\xB6\xBC";
-        break;
-      case 0x9C :
-        return "\xE8\xB7\xB0";
-        break;
-      case 0x9D :
-        return "\xF0\xA0\xA3\x9E";
-        break;
-      case 0x9E :
-        return "\xE8\xBB\x94";
-        break;
-      case 0x9F :
-        return "\xE8\xBC\xB8";
-        break;
-      case 0xA0 :
-        return "\xF0\xA8\x97\x92";
-        break;
-      case 0xA1 :
-        return "\xF0\xA8\x97\xAD";
-        break;
-      case 0xA2 :
-        return "\xE9\x82\x94";
-        break;
-      case 0xA3 :
-        return "\xE9\x83\xB1";
-        break;
-      case 0xA4 :
-        return "\xE9\x84\x91";
-        break;
-      case 0xA5 :
-        return "\xF0\xA8\x9C\xAE";
-        break;
-      case 0xA6 :
-        return "\xE9\x84\x9B";
-        break;
-      case 0xA7 :
-        return "\xE9\x88\xB8";
-        break;
-      case 0xA8 :
-        return "\xE9\x8B\x97";
-        break;
-      case 0xA9 :
-        return "\xE9\x8B\x98";
-        break;
-      case 0xAA :
-        return "\xE9\x89\xBC";
-        break;
-      case 0xAB :
-        return "\xE9\x8F\xB9";
-        break;
-      case 0xAC :
-        return "\xE9\x90\x95";
-        break;
-      case 0xAD :
-        return "\xF0\xA8\xAF\xBA";
-        break;
-      case 0xAE :
-        return "\xE9\x96\x8B";
-        break;
-      case 0xAF :
-        return "\xE4\xA6\x95";
-        break;
-      case 0xB0 :
-        return "\xE9\x96\xB7";
-        break;
-      case 0xB1 :
-        return "\xF0\xA8\xB5\xB7";
-        break;
-      case 0xB2 :
-        return "\xE4\xA7\xA6";
-        break;
-      case 0xB3 :
-        return "\xE9\x9B\x83";
-        break;
-      case 0xB4 :
-        return "\xE5\xB6\xB2";
-        break;
-      case 0xB5 :
-        return "\xE9\x9C\xA3";
-        break;
-      case 0xB6 :
-        return "\xF0\xA9\x85\x85";
-        break;
-      case 0xB7 :
-        return "\xF0\xA9\x88\x9A";
-        break;
-      case 0xB8 :
-        return "\xE4\xA9\xAE";
-        break;
-      case 0xB9 :
-        return "\xE4\xA9\xB6";
-        break;
-      case 0xBA :
-        return "\xE9\x9F\xA0";
-        break;
-      case 0xBB :
-        return "\xF0\xA9\x90\x8A";
-        break;
-      case 0xBC :
-        return "\xE4\xAA\xB2";
-        break;
-      case 0xBD :
-        return "\xF0\xA9\x92\x96";
-        break;
-      case 0xBE :
-        return "\xE9\xA0\x8B";
-        break;
-      case 0xBF :
-        return "\xE9\xA0\x8B";
-        break;
-      }
-      break;
-    case 0xA8 :
-      switch (str[3]) {
-      case 0x80 :
-        return "\xE9\xA0\xA9";
-        break;
-      case 0x81 :
-        return "\xF0\xA9\x96\xB6";
-        break;
-      case 0x82 :
-        return "\xE9\xA3\xA2";
-        break;
-      case 0x83 :
-        return "\xE4\xAC\xB3";
-        break;
-      case 0x84 :
-        return "\xE9\xA4\xA9";
-        break;
-      case 0x85 :
-        return "\xE9\xA6\xA7";
-        break;
-      case 0x86 :
-        return "\xE9\xA7\x82";
-        break;
-      case 0x87 :
-        return "\xE9\xA7\xBE";
-        break;
-      case 0x88 :
-        return "\xE4\xAF\x8E";
-        break;
-      case 0x89 :
-        return "\xF0\xA9\xAC\xB0";
-        break;
-      case 0x8A :
-        return "\xE9\xAC\x92";
-        break;
-      case 0x8B :
-        return "\xE9\xB1\x80";
-        break;
-      case 0x8C :
-        return "\xE9\xB3\xBD";
-        break;
-      case 0x8D :
-        return "\xE4\xB3\x8E";
-        break;
-      case 0x8E :
-        return "\xE4\xB3\xAD";
-        break;
-      case 0x8F :
-        return "\xE9\xB5\xA7";
-        break;
-      case 0x90 :
-        return "\xF0\xAA\x83\x8E";
-        break;
-      case 0x91 :
-        return "\xE4\xB3\xB8";
-        break;
-      case 0x92 :
-        return "\xF0\xAA\x84\x85";
-        break;
-      case 0x93 :
-        return "\xF0\xAA\x88\x8E";
-        break;
-      case 0x94 :
-        return "\xF0\xAA\x8A\x91";
-        break;
-      case 0x95 :
-        return "\xE9\xBA\xBB";
-        break;
-      case 0x96 :
-        return "\xE4\xB5\x96";
-        break;
-      case 0x97 :
-        return "\xE9\xBB\xB9";
-        break;
-      case 0x98 :
-        return "\xE9\xBB\xBE";
-        break;
-      case 0x99 :
-        return "\xE9\xBC\x85";
-        break;
-      case 0x9A :
-        return "\xE9\xBC\x8F";
-        break;
-      case 0x9B :
-        return "\xE9\xBC\x96";
-        break;
-      case 0x9C :
-        return "\xE9\xBC\xBB";
-        break;
-      case 0x9D :
-        return "\xF0\xAA\x98\x80";
-        break;
-      }
-      break;
-    }
-    break;
-  }
-  break;
-}
-  return 0;
+  return grn_nfkc50_map1(utf8);
 }
 
 const char *
-grn_nfkc_map2(const unsigned char *prefix, const unsigned char *suffix)
+grn_nfkc_map2(const unsigned char *prefix_utf8, const unsigned char *suffix_utf8)
 {
-switch (suffix[0]) {
-case 0xCC :
-  switch (suffix[1]) {
-  case 0x80 :
-    switch (prefix[0]) {
-    case 0x61 :
-      return "\xC3\xA0";
-      break;
-    case 0x65 :
-      return "\xC3\xA8";
-      break;
-    case 0x69 :
-      return "\xC3\xAC";
-      break;
-    case 0x6E :
-      return "\xC7\xB9";
-      break;
-    case 0x6F :
-      return "\xC3\xB2";
-      break;
-    case 0x75 :
-      return "\xC3\xB9";
-      break;
-    case 0x77 :
-      return "\xE1\xBA\x81";
-      break;
-    case 0x79 :
-      return "\xE1\xBB\xB3";
-      break;
-    case 0xC3 :
-      switch (prefix[1]) {
-      case 0xA2 :
-        return "\xE1\xBA\xA7";
-        break;
-      case 0xAA :
-        return "\xE1\xBB\x81";
-        break;
-      case 0xB4 :
-        return "\xE1\xBB\x93";
-        break;
-      case 0xBC :
-        return "\xC7\x9C";
-        break;
-      }
-      break;
-    case 0xC4 :
-      switch (prefix[1]) {
-      case 0x83 :
-        return "\xE1\xBA\xB1";
-        break;
-      case 0x93 :
-        return "\xE1\xB8\x95";
-        break;
-      }
-      break;
-    case 0xC5 :
-      if (prefix[1] == 0x8D) {
-        return "\xE1\xB9\x91";
-      }
-      break;
-    case 0xC6 :
-      switch (prefix[1]) {
-      case 0xA1 :
-        return "\xE1\xBB\x9D";
-        break;
-      case 0xB0 :
-        return "\xE1\xBB\xAB";
-        break;
-      }
-      break;
-    case 0xCE :
-      switch (prefix[1]) {
-      case 0x91 :
-        return "\xE1\xBE\xBA";
-        break;
-      case 0x95 :
-        return "\xE1\xBF\x88";
-        break;
-      case 0x97 :
-        return "\xE1\xBF\x8A";
-        break;
-      case 0x99 :
-        return "\xE1\xBF\x9A";
-        break;
-      case 0x9F :
-        return "\xE1\xBF\xB8";
-        break;
-      case 0xA5 :
-        return "\xE1\xBF\xAA";
-        break;
-      case 0xA9 :
-        return "\xE1\xBF\xBA";
-        break;
-      case 0xB1 :
-        return "\xE1\xBD\xB0";
-        break;
-      case 0xB5 :
-        return "\xE1\xBD\xB2";
-        break;
-      case 0xB7 :
-        return "\xE1\xBD\xB4";
-        break;
-      case 0xB9 :
-        return "\xE1\xBD\xB6";
-        break;
-      case 0xBF :
-        return "\xE1\xBD\xB8";
-        break;
-      }
-      break;
-    case 0xCF :
-      switch (prefix[1]) {
-      case 0x85 :
-        return "\xE1\xBD\xBA";
-        break;
-      case 0x89 :
-        return "\xE1\xBD\xBC";
-        break;
-      case 0x8A :
-        return "\xE1\xBF\x92";
-        break;
-      case 0x8B :
-        return "\xE1\xBF\xA2";
-        break;
-      }
-      break;
-    case 0xD0 :
-      switch (prefix[1]) {
-      case 0x95 :
-        return "\xD0\x80";
-        break;
-      case 0x98 :
-        return "\xD0\x8D";
-        break;
-      case 0xB5 :
-        return "\xD1\x90";
-        break;
-      case 0xB8 :
-        return "\xD1\x9D";
-        break;
-      }
-      break;
-    case 0xE1 :
-      switch (prefix[1]) {
-      case 0xBC :
-        switch (prefix[2]) {
-        case 0x80 :
-          return "\xE1\xBC\x82";
-          break;
-        case 0x81 :
-          return "\xE1\xBC\x83";
-          break;
-        case 0x88 :
-          return "\xE1\xBC\x8A";
-          break;
-        case 0x89 :
-          return "\xE1\xBC\x8B";
-          break;
-        case 0x90 :
-          return "\xE1\xBC\x92";
-          break;
-        case 0x91 :
-          return "\xE1\xBC\x93";
-          break;
-        case 0x98 :
-          return "\xE1\xBC\x9A";
-          break;
-        case 0x99 :
-          return "\xE1\xBC\x9B";
-          break;
-        case 0xA0 :
-          return "\xE1\xBC\xA2";
-          break;
-        case 0xA1 :
-          return "\xE1\xBC\xA3";
-          break;
-        case 0xA8 :
-          return "\xE1\xBC\xAA";
-          break;
-        case 0xA9 :
-          return "\xE1\xBC\xAB";
-          break;
-        case 0xB0 :
-          return "\xE1\xBC\xB2";
-          break;
-        case 0xB1 :
-          return "\xE1\xBC\xB3";
-          break;
-        case 0xB8 :
-          return "\xE1\xBC\xBA";
-          break;
-        case 0xB9 :
-          return "\xE1\xBC\xBB";
-          break;
-        }
-        break;
-      case 0xBD :
-        switch (prefix[2]) {
-        case 0x80 :
-          return "\xE1\xBD\x82";
-          break;
-        case 0x81 :
-          return "\xE1\xBD\x83";
-          break;
-        case 0x88 :
-          return "\xE1\xBD\x8A";
-          break;
-        case 0x89 :
-          return "\xE1\xBD\x8B";
-          break;
-        case 0x90 :
-          return "\xE1\xBD\x92";
-          break;
-        case 0x91 :
-          return "\xE1\xBD\x93";
-          break;
-        case 0x99 :
-          return "\xE1\xBD\x9B";
-          break;
-        case 0xA0 :
-          return "\xE1\xBD\xA2";
-          break;
-        case 0xA1 :
-          return "\xE1\xBD\xA3";
-          break;
-        case 0xA8 :
-          return "\xE1\xBD\xAA";
-          break;
-        case 0xA9 :
-          return "\xE1\xBD\xAB";
-          break;
-        }
-        break;
-      }
-      break;
-    }
-    break;
-  case 0x81 :
-    switch (prefix[0]) {
-    case 0x61 :
-      return "\xC3\xA1";
-      break;
-    case 0x63 :
-      return "\xC4\x87";
-      break;
-    case 0x65 :
-      return "\xC3\xA9";
-      break;
-    case 0x67 :
-      return "\xC7\xB5";
-      break;
-    case 0x69 :
-      return "\xC3\xAD";
-      break;
-    case 0x6B :
-      return "\xE1\xB8\xB1";
-      break;
-    case 0x6C :
-      return "\xC4\xBA";
-      break;
-    case 0x6D :
-      return "\xE1\xB8\xBF";
-      break;
-    case 0x6E :
-      return "\xC5\x84";
-      break;
-    case 0x6F :
-      return "\xC3\xB3";
-      break;
-    case 0x70 :
-      return "\xE1\xB9\x95";
-      break;
-    case 0x72 :
-      return "\xC5\x95";
-      break;
-    case 0x73 :
-      return "\xC5\x9B";
-      break;
-    case 0x75 :
-      return "\xC3\xBA";
-      break;
-    case 0x77 :
-      return "\xE1\xBA\x83";
-      break;
-    case 0x79 :
-      return "\xC3\xBD";
-      break;
-    case 0x7A :
-      return "\xC5\xBA";
-      break;
-    case 0xC3 :
-      switch (prefix[1]) {
-      case 0x86 :
-        return "\xC7\xBC";
-        break;
-      case 0x98 :
-        return "\xC7\xBE";
-        break;
-      case 0xA2 :
-        return "\xE1\xBA\xA5";
-        break;
-      case 0xA5 :
-        return "\xC7\xBB";
-        break;
-      case 0xA6 :
-        return "\xC7\xBD";
-        break;
-      case 0xA7 :
-        return "\xE1\xB8\x89";
-        break;
-      case 0xAA :
-        return "\xE1\xBA\xBF";
-        break;
-      case 0xAF :
-        return "\xE1\xB8\xAF";
-        break;
-      case 0xB4 :
-        return "\xE1\xBB\x91";
-        break;
-      case 0xB5 :
-        return "\xE1\xB9\x8D";
-        break;
-      case 0xB8 :
-        return "\xC7\xBF";
-        break;
-      case 0xBC :
-        return "\xC7\x98";
-        break;
-      }
-      break;
-    case 0xC4 :
-      switch (prefix[1]) {
-      case 0x83 :
-        return "\xE1\xBA\xAF";
-        break;
-      case 0x93 :
-        return "\xE1\xB8\x97";
-        break;
-      }
-      break;
-    case 0xC5 :
-      switch (prefix[1]) {
-      case 0x8D :
-        return "\xE1\xB9\x93";
-        break;
-      case 0xA9 :
-        return "\xE1\xB9\xB9";
-        break;
-      }
-      break;
-    case 0xC6 :
-      switch (prefix[1]) {
-      case 0xA1 :
-        return "\xE1\xBB\x9B";
-        break;
-      case 0xB0 :
-        return "\xE1\xBB\xA9";
-        break;
-      }
-      break;
-    case 0xCE :
-      switch (prefix[1]) {
-      case 0x91 :
-        return "\xCE\x86";
-        break;
-      case 0x95 :
-        return "\xCE\x88";
-        break;
-      case 0x97 :
-        return "\xCE\x89";
-        break;
-      case 0x99 :
-        return "\xCE\x8A";
-        break;
-      case 0x9F :
-        return "\xCE\x8C";
-        break;
-      case 0xA5 :
-        return "\xCE\x8E";
-        break;
-      case 0xA9 :
-        return "\xCE\x8F";
-        break;
-      case 0xB1 :
-        return "\xCE\xAC";
-        break;
-      case 0xB5 :
-        return "\xCE\xAD";
-        break;
-      case 0xB7 :
-        return "\xCE\xAE";
-        break;
-      case 0xB9 :
-        return "\xCE\xAF";
-        break;
-      case 0xBF :
-        return "\xCF\x8C";
-        break;
-      }
-      break;
-    case 0xCF :
-      switch (prefix[1]) {
-      case 0x85 :
-        return "\xCF\x8D";
-        break;
-      case 0x89 :
-        return "\xCF\x8E";
-        break;
-      case 0x8A :
-        return "\xCE\x90";
-        break;
-      case 0x8B :
-        return "\xCE\xB0";
-        break;
-      }
-      break;
-    case 0xD0 :
-      switch (prefix[1]) {
-      case 0x93 :
-        return "\xD0\x83";
-        break;
-      case 0x9A :
-        return "\xD0\x8C";
-        break;
-      case 0xB3 :
-        return "\xD1\x93";
-        break;
-      case 0xBA :
-        return "\xD1\x9C";
-        break;
-      }
-      break;
-    case 0xE1 :
-      switch (prefix[1]) {
-      case 0xBC :
-        switch (prefix[2]) {
-        case 0x80 :
-          return "\xE1\xBC\x84";
-          break;
-        case 0x81 :
-          return "\xE1\xBC\x85";
-          break;
-        case 0x88 :
-          return "\xE1\xBC\x8C";
-          break;
-        case 0x89 :
-          return "\xE1\xBC\x8D";
-          break;
-        case 0x90 :
-          return "\xE1\xBC\x94";
-          break;
-        case 0x91 :
-          return "\xE1\xBC\x95";
-          break;
-        case 0x98 :
-          return "\xE1\xBC\x9C";
-          break;
-        case 0x99 :
-          return "\xE1\xBC\x9D";
-          break;
-        case 0xA0 :
-          return "\xE1\xBC\xA4";
-          break;
-        case 0xA1 :
-          return "\xE1\xBC\xA5";
-          break;
-        case 0xA8 :
-          return "\xE1\xBC\xAC";
-          break;
-        case 0xA9 :
-          return "\xE1\xBC\xAD";
-          break;
-        case 0xB0 :
-          return "\xE1\xBC\xB4";
-          break;
-        case 0xB1 :
-          return "\xE1\xBC\xB5";
-          break;
-        case 0xB8 :
-          return "\xE1\xBC\xBC";
-          break;
-        case 0xB9 :
-          return "\xE1\xBC\xBD";
-          break;
-        }
-        break;
-      case 0xBD :
-        switch (prefix[2]) {
-        case 0x80 :
-          return "\xE1\xBD\x84";
-          break;
-        case 0x81 :
-          return "\xE1\xBD\x85";
-          break;
-        case 0x88 :
-          return "\xE1\xBD\x8C";
-          break;
-        case 0x89 :
-          return "\xE1\xBD\x8D";
-          break;
-        case 0x90 :
-          return "\xE1\xBD\x94";
-          break;
-        case 0x91 :
-          return "\xE1\xBD\x95";
-          break;
-        case 0x99 :
-          return "\xE1\xBD\x9D";
-          break;
-        case 0xA0 :
-          return "\xE1\xBD\xA4";
-          break;
-        case 0xA1 :
-          return "\xE1\xBD\xA5";
-          break;
-        case 0xA8 :
-          return "\xE1\xBD\xAC";
-          break;
-        case 0xA9 :
-          return "\xE1\xBD\xAD";
-          break;
-        }
-        break;
-      }
-      break;
-    }
-    break;
-  case 0x82 :
-    switch (prefix[0]) {
-    case 0x61 :
-      return "\xC3\xA2";
-      break;
-    case 0x63 :
-      return "\xC4\x89";
-      break;
-    case 0x65 :
-      return "\xC3\xAA";
-      break;
-    case 0x67 :
-      return "\xC4\x9D";
-      break;
-    case 0x68 :
-      return "\xC4\xA5";
-      break;
-    case 0x69 :
-      return "\xC3\xAE";
-      break;
-    case 0x6A :
-      return "\xC4\xB5";
-      break;
-    case 0x6F :
-      return "\xC3\xB4";
-      break;
-    case 0x73 :
-      return "\xC5\x9D";
-      break;
-    case 0x75 :
-      return "\xC3\xBB";
-      break;
-    case 0x77 :
-      return "\xC5\xB5";
-      break;
-    case 0x79 :
-      return "\xC5\xB7";
-      break;
-    case 0x7A :
-      return "\xE1\xBA\x91";
-      break;
-    case 0xE1 :
-      switch (prefix[1]) {
-      case 0xBA :
-        switch (prefix[2]) {
-        case 0xA1 :
-          return "\xE1\xBA\xAD";
-          break;
-        case 0xB9 :
-          return "\xE1\xBB\x87";
-          break;
-        }
-        break;
-      case 0xBB :
-        if (prefix[2] == 0x8D) {
-          return "\xE1\xBB\x99";
-        }
-        break;
-      }
-      break;
-    }
-    break;
-  case 0x83 :
-    switch (prefix[0]) {
-    case 0x61 :
-      return "\xC3\xA3";
-      break;
-    case 0x65 :
-      return "\xE1\xBA\xBD";
-      break;
-    case 0x69 :
-      return "\xC4\xA9";
-      break;
-    case 0x6E :
-      return "\xC3\xB1";
-      break;
-    case 0x6F :
-      return "\xC3\xB5";
-      break;
-    case 0x75 :
-      return "\xC5\xA9";
-      break;
-    case 0x76 :
-      return "\xE1\xB9\xBD";
-      break;
-    case 0x79 :
-      return "\xE1\xBB\xB9";
-      break;
-    case 0xC3 :
-      switch (prefix[1]) {
-      case 0xA2 :
-        return "\xE1\xBA\xAB";
-        break;
-      case 0xAA :
-        return "\xE1\xBB\x85";
-        break;
-      case 0xB4 :
-        return "\xE1\xBB\x97";
-        break;
-      }
-      break;
-    case 0xC4 :
-      if (prefix[1] == 0x83) {
-        return "\xE1\xBA\xB5";
-      }
-      break;
-    case 0xC6 :
-      switch (prefix[1]) {
-      case 0xA1 :
-        return "\xE1\xBB\xA1";
-        break;
-      case 0xB0 :
-        return "\xE1\xBB\xAF";
-        break;
-      }
-      break;
-    }
-    break;
-  case 0x84 :
-    switch (prefix[0]) {
-    case 0x61 :
-      return "\xC4\x81";
-      break;
-    case 0x65 :
-      return "\xC4\x93";
-      break;
-    case 0x67 :
-      return "\xE1\xB8\xA1";
-      break;
-    case 0x69 :
-      return "\xC4\xAB";
-      break;
-    case 0x6F :
-      return "\xC5\x8D";
-      break;
-    case 0x75 :
-      return "\xC5\xAB";
-      break;
-    case 0x79 :
-      return "\xC8\xB3";
-      break;
-    case 0xC3 :
-      switch (prefix[1]) {
-      case 0x86 :
-        return "\xC7\xA2";
-        break;
-      case 0xA4 :
-        return "\xC7\x9F";
-        break;
-      case 0xA6 :
-        return "\xC7\xA3";
-        break;
-      case 0xB5 :
-        return "\xC8\xAD";
-        break;
-      case 0xB6 :
-        return "\xC8\xAB";
-        break;
-      case 0xBC :
-        return "\xC7\x96";
-        break;
-      }
-      break;
-    case 0xC7 :
-      if (prefix[1] == 0xAB) {
-        return "\xC7\xAD";
-      }
-      break;
-    case 0xC8 :
-      switch (prefix[1]) {
-      case 0xA7 :
-        return "\xC7\xA1";
-        break;
-      case 0xAF :
-        return "\xC8\xB1";
-        break;
-      }
-      break;
-    case 0xCE :
-      switch (prefix[1]) {
-      case 0x91 :
-        return "\xE1\xBE\xB9";
-        break;
-      case 0x99 :
-        return "\xE1\xBF\x99";
-        break;
-      case 0xA5 :
-        return "\xE1\xBF\xA9";
-        break;
-      case 0xB1 :
-        return "\xE1\xBE\xB1";
-        break;
-      case 0xB9 :
-        return "\xE1\xBF\x91";
-        break;
-      }
-      break;
-    case 0xCF :
-      if (prefix[1] == 0x85) {
-        return "\xE1\xBF\xA1";
-      }
-      break;
-    case 0xD0 :
-      switch (prefix[1]) {
-      case 0x98 :
-        return "\xD3\xA2";
-        break;
-      case 0xA3 :
-        return "\xD3\xAE";
-        break;
-      case 0xB8 :
-        return "\xD3\xA3";
-        break;
-      }
-      break;
-    case 0xD1 :
-      if (prefix[1] == 0x83) {
-        return "\xD3\xAF";
-      }
-      break;
-    case 0xE1 :
-      switch (prefix[1]) {
-      case 0xB8 :
-        if (prefix[2] == 0xB7) {
-          return "\xE1\xB8\xB9";
-        }
-        break;
-      case 0xB9 :
-        if (prefix[2] == 0x9B) {
-          return "\xE1\xB9\x9D";
-        }
-        break;
-      }
-      break;
-    }
-    break;
-  case 0x86 :
-    switch (prefix[0]) {
-    case 0x61 :
-      return "\xC4\x83";
-      break;
-    case 0x65 :
-      return "\xC4\x95";
-      break;
-    case 0x67 :
-      return "\xC4\x9F";
-      break;
-    case 0x69 :
-      return "\xC4\xAD";
-      break;
-    case 0x6F :
-      return "\xC5\x8F";
-      break;
-    case 0x75 :
-      return "\xC5\xAD";
-      break;
-    case 0xC8 :
-      if (prefix[1] == 0xA9) {
-        return "\xE1\xB8\x9D";
-      }
-      break;
-    case 0xCE :
-      switch (prefix[1]) {
-      case 0x91 :
-        return "\xE1\xBE\xB8";
-        break;
-      case 0x99 :
-        return "\xE1\xBF\x98";
-        break;
-      case 0xA5 :
-        return "\xE1\xBF\xA8";
-        break;
-      case 0xB1 :
-        return "\xE1\xBE\xB0";
-        break;
-      case 0xB9 :
-        return "\xE1\xBF\x90";
-        break;
-      }
-      break;
-    case 0xCF :
-      if (prefix[1] == 0x85) {
-        return "\xE1\xBF\xA0";
-      }
-      break;
-    case 0xD0 :
-      switch (prefix[1]) {
-      case 0x90 :
-        return "\xD3\x90";
-        break;
-      case 0x95 :
-        return "\xD3\x96";
-        break;
-      case 0x96 :
-        return "\xD3\x81";
-        break;
-      case 0x98 :
-        return "\xD0\x99";
-        break;
-      case 0xA3 :
-        return "\xD0\x8E";
-        break;
-      case 0xB0 :
-        return "\xD3\x91";
-        break;
-      case 0xB5 :
-        return "\xD3\x97";
-        break;
-      case 0xB6 :
-        return "\xD3\x82";
-        break;
-      case 0xB8 :
-        return "\xD0\xB9";
-        break;
-      }
-      break;
-    case 0xD1 :
-      if (prefix[1] == 0x83) {
-        return "\xD1\x9E";
-      }
-      break;
-    case 0xE1 :
-      if (prefix[1] == 0xBA) {
-        if (prefix[2] == 0xA1) {
-          return "\xE1\xBA\xB7";
-        }
-      }
-      break;
-    }
-    break;
-  case 0x87 :
-    switch (prefix[0]) {
-    case 0x61 :
-      return "\xC8\xA7";
-      break;
-    case 0x62 :
-      return "\xE1\xB8\x83";
-      break;
-    case 0x63 :
-      return "\xC4\x8B";
-      break;
-    case 0x64 :
-      return "\xE1\xB8\x8B";
-      break;
-    case 0x65 :
-      return "\xC4\x97";
-      break;
-    case 0x66 :
-      return "\xE1\xB8\x9F";
-      break;
-    case 0x67 :
-      return "\xC4\xA1";
-      break;
-    case 0x68 :
-      return "\xE1\xB8\xA3";
-      break;
-    case 0x6D :
-      return "\xE1\xB9\x81";
-      break;
-    case 0x6E :
-      return "\xE1\xB9\x85";
-      break;
-    case 0x6F :
-      return "\xC8\xAF";
-      break;
-    case 0x70 :
-      return "\xE1\xB9\x97";
-      break;
-    case 0x72 :
-      return "\xE1\xB9\x99";
-      break;
-    case 0x73 :
-      return "\xE1\xB9\xA1";
-      break;
-    case 0x74 :
-      return "\xE1\xB9\xAB";
-      break;
-    case 0x77 :
-      return "\xE1\xBA\x87";
-      break;
-    case 0x78 :
-      return "\xE1\xBA\x8B";
-      break;
-    case 0x79 :
-      return "\xE1\xBA\x8F";
-      break;
-    case 0x7A :
-      return "\xC5\xBC";
-      break;
-    case 0xC5 :
-      switch (prefix[1]) {
-      case 0x9B :
-        return "\xE1\xB9\xA5";
-        break;
-      case 0xA1 :
-        return "\xE1\xB9\xA7";
-        break;
-      }
-      break;
-    case 0xE1 :
-      if (prefix[1] == 0xB9) {
-        if (prefix[2] == 0xA3) {
-          return "\xE1\xB9\xA9";
-        }
-      }
-      break;
-    }
-    break;
-  case 0x88 :
-    switch (prefix[0]) {
-    case 0x61 :
-      return "\xC3\xA4";
-      break;
-    case 0x65 :
-      return "\xC3\xAB";
-      break;
-    case 0x68 :
-      return "\xE1\xB8\xA7";
-      break;
-    case 0x69 :
-      return "\xC3\xAF";
-      break;
-    case 0x6F :
-      return "\xC3\xB6";
-      break;
-    case 0x74 :
-      return "\xE1\xBA\x97";
-      break;
-    case 0x75 :
-      return "\xC3\xBC";
-      break;
-    case 0x77 :
-      return "\xE1\xBA\x85";
-      break;
-    case 0x78 :
-      return "\xE1\xBA\x8D";
-      break;
-    case 0x79 :
-      return "\xC3\xBF";
-      break;
-    case 0xC3 :
-      if (prefix[1] == 0xB5) {
-        return "\xE1\xB9\x8F";
-      }
-      break;
-    case 0xC5 :
-      if (prefix[1] == 0xAB) {
-        return "\xE1\xB9\xBB";
-      }
-      break;
-    case 0xCE :
-      switch (prefix[1]) {
-      case 0x99 :
-        return "\xCE\xAA";
-        break;
-      case 0xA5 :
-        return "\xCE\xAB";
-        break;
-      case 0xB9 :
-        return "\xCF\x8A";
-        break;
-      }
-      break;
-    case 0xCF :
-      if (prefix[1] == 0x85) {
-        return "\xCF\x8B";
-      }
-      break;
-    case 0xD0 :
-      switch (prefix[1]) {
-      case 0x86 :
-        return "\xD0\x87";
-        break;
-      case 0x90 :
-        return "\xD3\x92";
-        break;
-      case 0x95 :
-        return "\xD0\x81";
-        break;
-      case 0x96 :
-        return "\xD3\x9C";
-        break;
-      case 0x97 :
-        return "\xD3\x9E";
-        break;
-      case 0x98 :
-        return "\xD3\xA4";
-        break;
-      case 0x9E :
-        return "\xD3\xA6";
-        break;
-      case 0xA3 :
-        return "\xD3\xB0";
-        break;
-      case 0xA7 :
-        return "\xD3\xB4";
-        break;
-      case 0xAB :
-        return "\xD3\xB8";
-        break;
-      case 0xAD :
-        return "\xD3\xAC";
-        break;
-      case 0xB0 :
-        return "\xD3\x93";
-        break;
-      case 0xB5 :
-        return "\xD1\x91";
-        break;
-      case 0xB6 :
-        return "\xD3\x9D";
-        break;
-      case 0xB7 :
-        return "\xD3\x9F";
-        break;
-      case 0xB8 :
-        return "\xD3\xA5";
-        break;
-      case 0xBE :
-        return "\xD3\xA7";
-        break;
-      }
-      break;
-    case 0xD1 :
-      switch (prefix[1]) {
-      case 0x83 :
-        return "\xD3\xB1";
-        break;
-      case 0x87 :
-        return "\xD3\xB5";
-        break;
-      case 0x8B :
-        return "\xD3\xB9";
-        break;
-      case 0x8D :
-        return "\xD3\xAD";
-        break;
-      case 0x96 :
-        return "\xD1\x97";
-        break;
-      }
-      break;
-    case 0xD3 :
-      switch (prefix[1]) {
-      case 0x98 :
-        return "\xD3\x9A";
-        break;
-      case 0x99 :
-        return "\xD3\x9B";
-        break;
-      case 0xA8 :
-        return "\xD3\xAA";
-        break;
-      case 0xA9 :
-        return "\xD3\xAB";
-        break;
-      }
-      break;
-    }
-    break;
-  case 0x89 :
-    switch (prefix[0]) {
-    case 0x61 :
-      return "\xE1\xBA\xA3";
-      break;
-    case 0x65 :
-      return "\xE1\xBA\xBB";
-      break;
-    case 0x69 :
-      return "\xE1\xBB\x89";
-      break;
-    case 0x6F :
-      return "\xE1\xBB\x8F";
-      break;
-    case 0x75 :
-      return "\xE1\xBB\xA7";
-      break;
-    case 0x79 :
-      return "\xE1\xBB\xB7";
-      break;
-    case 0xC3 :
-      switch (prefix[1]) {
-      case 0xA2 :
-        return "\xE1\xBA\xA9";
-        break;
-      case 0xAA :
-        return "\xE1\xBB\x83";
-        break;
-      case 0xB4 :
-        return "\xE1\xBB\x95";
-        break;
-      }
-      break;
-    case 0xC4 :
-      if (prefix[1] == 0x83) {
-        return "\xE1\xBA\xB3";
-      }
-      break;
-    case 0xC6 :
-      switch (prefix[1]) {
-      case 0xA1 :
-        return "\xE1\xBB\x9F";
-        break;
-      case 0xB0 :
-        return "\xE1\xBB\xAD";
-        break;
-      }
-      break;
-    }
-    break;
-  case 0x8A :
-    switch (prefix[0]) {
-    case 0x61 :
-      return "\xC3\xA5";
-      break;
-    case 0x75 :
-      return "\xC5\xAF";
-      break;
-    case 0x77 :
-      return "\xE1\xBA\x98";
-      break;
-    case 0x79 :
-      return "\xE1\xBA\x99";
-      break;
-    }
-    break;
-  case 0x8B :
-    switch (prefix[0]) {
-    case 0x6F :
-      return "\xC5\x91";
-      break;
-    case 0x75 :
-      return "\xC5\xB1";
-      break;
-    case 0xD0 :
-      if (prefix[1] == 0xA3) {
-        return "\xD3\xB2";
-      }
-      break;
-    case 0xD1 :
-      if (prefix[1] == 0x83) {
-        return "\xD3\xB3";
-      }
-      break;
-    }
-    break;
-  case 0x8C :
-    switch (prefix[0]) {
-    case 0x61 :
-      return "\xC7\x8E";
-      break;
-    case 0x63 :
-      return "\xC4\x8D";
-      break;
-    case 0x64 :
-      return "\xC4\x8F";
-      break;
-    case 0x65 :
-      return "\xC4\x9B";
-      break;
-    case 0x67 :
-      return "\xC7\xA7";
-      break;
-    case 0x68 :
-      return "\xC8\x9F";
-      break;
-    case 0x69 :
-      return "\xC7\x90";
-      break;
-    case 0x6A :
-      return "\xC7\xB0";
-      break;
-    case 0x6B :
-      return "\xC7\xA9";
-      break;
-    case 0x6C :
-      return "\xC4\xBE";
-      break;
-    case 0x6E :
-      return "\xC5\x88";
-      break;
-    case 0x6F :
-      return "\xC7\x92";
-      break;
-    case 0x72 :
-      return "\xC5\x99";
-      break;
-    case 0x73 :
-      return "\xC5\xA1";
-      break;
-    case 0x74 :
-      return "\xC5\xA5";
-      break;
-    case 0x75 :
-      return "\xC7\x94";
-      break;
-    case 0x7A :
-      return "\xC5\xBE";
-      break;
-    case 0xC3 :
-      if (prefix[1] == 0xBC) {
-        return "\xC7\x9A";
-      }
-      break;
-    case 0xC6 :
-      if (prefix[1] == 0xB7) {
-        return "\xC7\xAE";
-      }
-      break;
-    case 0xCA :
-      if (prefix[1] == 0x92) {
-        return "\xC7\xAF";
-      }
-      break;
-    }
-    break;
-  case 0x8F :
-    switch (prefix[0]) {
-    case 0x61 :
-      return "\xC8\x81";
-      break;
-    case 0x65 :
-      return "\xC8\x85";
-      break;
-    case 0x69 :
-      return "\xC8\x89";
-      break;
-    case 0x6F :
-      return "\xC8\x8D";
-      break;
-    case 0x72 :
-      return "\xC8\x91";
-      break;
-    case 0x75 :
-      return "\xC8\x95";
-      break;
-    case 0xD1 :
-      switch (prefix[1]) {
-      case 0xB4 :
-        return "\xD1\xB6";
-        break;
-      case 0xB5 :
-        return "\xD1\xB7";
-        break;
-      }
-      break;
-    }
-    break;
-  case 0x91 :
-    switch (prefix[0]) {
-    case 0x61 :
-      return "\xC8\x83";
-      break;
-    case 0x65 :
-      return "\xC8\x87";
-      break;
-    case 0x69 :
-      return "\xC8\x8B";
-      break;
-    case 0x6F :
-      return "\xC8\x8F";
-      break;
-    case 0x72 :
-      return "\xC8\x93";
-      break;
-    case 0x75 :
-      return "\xC8\x97";
-      break;
-    }
-    break;
-  case 0x93 :
-    switch (prefix[0]) {
-    case 0xCE :
-      switch (prefix[1]) {
-      case 0x91 :
-        return "\xE1\xBC\x88";
-        break;
-      case 0x95 :
-        return "\xE1\xBC\x98";
-        break;
-      case 0x97 :
-        return "\xE1\xBC\xA8";
-        break;
-      case 0x99 :
-        return "\xE1\xBC\xB8";
-        break;
-      case 0x9F :
-        return "\xE1\xBD\x88";
-        break;
-      case 0xA9 :
-        return "\xE1\xBD\xA8";
-        break;
-      case 0xB1 :
-        return "\xE1\xBC\x80";
-        break;
-      case 0xB5 :
-        return "\xE1\xBC\x90";
-        break;
-      case 0xB7 :
-        return "\xE1\xBC\xA0";
-        break;
-      case 0xB9 :
-        return "\xE1\xBC\xB0";
-        break;
-      case 0xBF :
-        return "\xE1\xBD\x80";
-        break;
-      }
-      break;
-    case 0xCF :
-      switch (prefix[1]) {
-      case 0x81 :
-        return "\xE1\xBF\xA4";
-        break;
-      case 0x85 :
-        return "\xE1\xBD\x90";
-        break;
-      case 0x89 :
-        return "\xE1\xBD\xA0";
-        break;
-      }
-      break;
-    }
-    break;
-  case 0x94 :
-    switch (prefix[0]) {
-    case 0xCE :
-      switch (prefix[1]) {
-      case 0x91 :
-        return "\xE1\xBC\x89";
-        break;
-      case 0x95 :
-        return "\xE1\xBC\x99";
-        break;
-      case 0x97 :
-        return "\xE1\xBC\xA9";
-        break;
-      case 0x99 :
-        return "\xE1\xBC\xB9";
-        break;
-      case 0x9F :
-        return "\xE1\xBD\x89";
-        break;
-      case 0xA1 :
-        return "\xE1\xBF\xAC";
-        break;
-      case 0xA5 :
-        return "\xE1\xBD\x99";
-        break;
-      case 0xA9 :
-        return "\xE1\xBD\xA9";
-        break;
-      case 0xB1 :
-        return "\xE1\xBC\x81";
-        break;
-      case 0xB5 :
-        return "\xE1\xBC\x91";
-        break;
-      case 0xB7 :
-        return "\xE1\xBC\xA1";
-        break;
-      case 0xB9 :
-        return "\xE1\xBC\xB1";
-        break;
-      case 0xBF :
-        return "\xE1\xBD\x81";
-        break;
-      }
-      break;
-    case 0xCF :
-      switch (prefix[1]) {
-      case 0x81 :
-        return "\xE1\xBF\xA5";
-        break;
-      case 0x85 :
-        return "\xE1\xBD\x91";
-        break;
-      case 0x89 :
-        return "\xE1\xBD\xA1";
-        break;
-      }
-      break;
-    }
-    break;
-  case 0x9B :
-    switch (prefix[0]) {
-    case 0x6F :
-      return "\xC6\xA1";
-      break;
-    case 0x75 :
-      return "\xC6\xB0";
-      break;
-    }
-    break;
-  case 0xA3 :
-    switch (prefix[0]) {
-    case 0x61 :
-      return "\xE1\xBA\xA1";
-      break;
-    case 0x62 :
-      return "\xE1\xB8\x85";
-      break;
-    case 0x64 :
-      return "\xE1\xB8\x8D";
-      break;
-    case 0x65 :
-      return "\xE1\xBA\xB9";
-      break;
-    case 0x68 :
-      return "\xE1\xB8\xA5";
-      break;
-    case 0x69 :
-      return "\xE1\xBB\x8B";
-      break;
-    case 0x6B :
-      return "\xE1\xB8\xB3";
-      break;
-    case 0x6C :
-      return "\xE1\xB8\xB7";
-      break;
-    case 0x6D :
-      return "\xE1\xB9\x83";
-      break;
-    case 0x6E :
-      return "\xE1\xB9\x87";
-      break;
-    case 0x6F :
-      return "\xE1\xBB\x8D";
-      break;
-    case 0x72 :
-      return "\xE1\xB9\x9B";
-      break;
-    case 0x73 :
-      return "\xE1\xB9\xA3";
-      break;
-    case 0x74 :
-      return "\xE1\xB9\xAD";
-      break;
-    case 0x75 :
-      return "\xE1\xBB\xA5";
-      break;
-    case 0x76 :
-      return "\xE1\xB9\xBF";
-      break;
-    case 0x77 :
-      return "\xE1\xBA\x89";
-      break;
-    case 0x79 :
-      return "\xE1\xBB\xB5";
-      break;
-    case 0x7A :
-      return "\xE1\xBA\x93";
-      break;
-    case 0xC6 :
-      switch (prefix[1]) {
-      case 0xA1 :
-        return "\xE1\xBB\xA3";
-        break;
-      case 0xB0 :
-        return "\xE1\xBB\xB1";
-        break;
-      }
-      break;
-    }
-    break;
-  case 0xA4 :
-    if (prefix[0] == 0x75) {
-      return "\xE1\xB9\xB3";
-    }
-    break;
-  case 0xA5 :
-    if (prefix[0] == 0x61) {
-      return "\xE1\xB8\x81";
-    }
-    break;
-  case 0xA6 :
-    switch (prefix[0]) {
-    case 0x73 :
-      return "\xC8\x99";
-      break;
-    case 0x74 :
-      return "\xC8\x9B";
-      break;
-    }
-    break;
-  case 0xA7 :
-    switch (prefix[0]) {
-    case 0x63 :
-      return "\xC3\xA7";
-      break;
-    case 0x64 :
-      return "\xE1\xB8\x91";
-      break;
-    case 0x65 :
-      return "\xC8\xA9";
-      break;
-    case 0x67 :
-      return "\xC4\xA3";
-      break;
-    case 0x68 :
-      return "\xE1\xB8\xA9";
-      break;
-    case 0x6B :
-      return "\xC4\xB7";
-      break;
-    case 0x6C :
-      return "\xC4\xBC";
-      break;
-    case 0x6E :
-      return "\xC5\x86";
-      break;
-    case 0x72 :
-      return "\xC5\x97";
-      break;
-    case 0x73 :
-      return "\xC5\x9F";
-      break;
-    case 0x74 :
-      return "\xC5\xA3";
-      break;
-    }
-    break;
-  case 0xA8 :
-    switch (prefix[0]) {
-    case 0x61 :
-      return "\xC4\x85";
-      break;
-    case 0x65 :
-      return "\xC4\x99";
-      break;
-    case 0x69 :
-      return "\xC4\xAF";
-      break;
-    case 0x6F :
-      return "\xC7\xAB";
-      break;
-    case 0x75 :
-      return "\xC5\xB3";
-      break;
-    }
-    break;
-  case 0xAD :
-    switch (prefix[0]) {
-    case 0x64 :
-      return "\xE1\xB8\x93";
-      break;
-    case 0x65 :
-      return "\xE1\xB8\x99";
-      break;
-    case 0x6C :
-      return "\xE1\xB8\xBD";
-      break;
-    case 0x6E :
-      return "\xE1\xB9\x8B";
-      break;
-    case 0x74 :
-      return "\xE1\xB9\xB1";
-      break;
-    case 0x75 :
-      return "\xE1\xB9\xB7";
-      break;
-    }
-    break;
-  case 0xAE :
-    if (prefix[0] == 0x68) {
-      return "\xE1\xB8\xAB";
-    }
-    break;
-  case 0xB0 :
-    switch (prefix[0]) {
-    case 0x65 :
-      return "\xE1\xB8\x9B";
-      break;
-    case 0x69 :
-      return "\xE1\xB8\xAD";
-      break;
-    case 0x75 :
-      return "\xE1\xB9\xB5";
-      break;
-    }
-    break;
-  case 0xB1 :
-    switch (prefix[0]) {
-    case 0x62 :
-      return "\xE1\xB8\x87";
-      break;
-    case 0x64 :
-      return "\xE1\xB8\x8F";
-      break;
-    case 0x68 :
-      return "\xE1\xBA\x96";
-      break;
-    case 0x6B :
-      return "\xE1\xB8\xB5";
-      break;
-    case 0x6C :
-      return "\xE1\xB8\xBB";
-      break;
-    case 0x6E :
-      return "\xE1\xB9\x89";
-      break;
-    case 0x72 :
-      return "\xE1\xB9\x9F";
-      break;
-    case 0x74 :
-      return "\xE1\xB9\xAF";
-      break;
-    case 0x7A :
-      return "\xE1\xBA\x95";
-      break;
-    }
-    break;
-  case 0xB8 :
-    switch (prefix[0]) {
-    case 0x3C :
-      return "\xE2\x89\xAE";
-      break;
-    case 0x3D :
-      return "\xE2\x89\xA0";
-      break;
-    case 0x3E :
-      return "\xE2\x89\xAF";
-      break;
-    case 0xE2 :
-      switch (prefix[1]) {
-      case 0x86 :
-        switch (prefix[2]) {
-        case 0x90 :
-          return "\xE2\x86\x9A";
-          break;
-        case 0x92 :
-          return "\xE2\x86\x9B";
-          break;
-        case 0x94 :
-          return "\xE2\x86\xAE";
-          break;
-        }
-        break;
-      case 0x87 :
-        switch (prefix[2]) {
-        case 0x90 :
-          return "\xE2\x87\x8D";
-          break;
-        case 0x92 :
-          return "\xE2\x87\x8F";
-          break;
-        case 0x94 :
-          return "\xE2\x87\x8E";
-          break;
-        }
-        break;
-      case 0x88 :
-        switch (prefix[2]) {
-        case 0x83 :
-          return "\xE2\x88\x84";
-          break;
-        case 0x88 :
-          return "\xE2\x88\x89";
-          break;
-        case 0x8B :
-          return "\xE2\x88\x8C";
-          break;
-        case 0xA3 :
-          return "\xE2\x88\xA4";
-          break;
-        case 0xA5 :
-          return "\xE2\x88\xA6";
-          break;
-        case 0xBC :
-          return "\xE2\x89\x81";
-          break;
-        }
-        break;
-      case 0x89 :
-        switch (prefix[2]) {
-        case 0x83 :
-          return "\xE2\x89\x84";
-          break;
-        case 0x85 :
-          return "\xE2\x89\x87";
-          break;
-        case 0x88 :
-          return "\xE2\x89\x89";
-          break;
-        case 0x8D :
-          return "\xE2\x89\xAD";
-          break;
-        case 0xA1 :
-          return "\xE2\x89\xA2";
-          break;
-        case 0xA4 :
-          return "\xE2\x89\xB0";
-          break;
-        case 0xA5 :
-          return "\xE2\x89\xB1";
-          break;
-        case 0xB2 :
-          return "\xE2\x89\xB4";
-          break;
-        case 0xB3 :
-          return "\xE2\x89\xB5";
-          break;
-        case 0xB6 :
-          return "\xE2\x89\xB8";
-          break;
-        case 0xB7 :
-          return "\xE2\x89\xB9";
-          break;
-        case 0xBA :
-          return "\xE2\x8A\x80";
-          break;
-        case 0xBB :
-          return "\xE2\x8A\x81";
-          break;
-        case 0xBC :
-          return "\xE2\x8B\xA0";
-          break;
-        case 0xBD :
-          return "\xE2\x8B\xA1";
-          break;
-        }
-        break;
-      case 0x8A :
-        switch (prefix[2]) {
-        case 0x82 :
-          return "\xE2\x8A\x84";
-          break;
-        case 0x83 :
-          return "\xE2\x8A\x85";
-          break;
-        case 0x86 :
-          return "\xE2\x8A\x88";
-          break;
-        case 0x87 :
-          return "\xE2\x8A\x89";
-          break;
-        case 0x91 :
-          return "\xE2\x8B\xA2";
-          break;
-        case 0x92 :
-          return "\xE2\x8B\xA3";
-          break;
-        case 0xA2 :
-          return "\xE2\x8A\xAC";
-          break;
-        case 0xA8 :
-          return "\xE2\x8A\xAD";
-          break;
-        case 0xA9 :
-          return "\xE2\x8A\xAE";
-          break;
-        case 0xAB :
-          return "\xE2\x8A\xAF";
-          break;
-        case 0xB2 :
-          return "\xE2\x8B\xAA";
-          break;
-        case 0xB3 :
-          return "\xE2\x8B\xAB";
-          break;
-        case 0xB4 :
-          return "\xE2\x8B\xAC";
-          break;
-        case 0xB5 :
-          return "\xE2\x8B\xAD";
-          break;
-        }
-        break;
-      }
-      break;
-    }
-    break;
-  }
-  break;
-case 0xCD :
-  switch (suffix[1]) {
-  case 0x82 :
-    switch (prefix[0]) {
-    case 0xCE :
-      switch (prefix[1]) {
-      case 0xB1 :
-        return "\xE1\xBE\xB6";
-        break;
-      case 0xB7 :
-        return "\xE1\xBF\x86";
-        break;
-      case 0xB9 :
-        return "\xE1\xBF\x96";
-        break;
-      }
-      break;
-    case 0xCF :
-      switch (prefix[1]) {
-      case 0x85 :
-        return "\xE1\xBF\xA6";
-        break;
-      case 0x89 :
-        return "\xE1\xBF\xB6";
-        break;
-      case 0x8A :
-        return "\xE1\xBF\x97";
-        break;
-      case 0x8B :
-        return "\xE1\xBF\xA7";
-        break;
-      }
-      break;
-    case 0xE1 :
-      switch (prefix[1]) {
-      case 0xBC :
-        switch (prefix[2]) {
-        case 0x80 :
-          return "\xE1\xBC\x86";
-          break;
-        case 0x81 :
-          return "\xE1\xBC\x87";
-          break;
-        case 0x88 :
-          return "\xE1\xBC\x8E";
-          break;
-        case 0x89 :
-          return "\xE1\xBC\x8F";
-          break;
-        case 0xA0 :
-          return "\xE1\xBC\xA6";
-          break;
-        case 0xA1 :
-          return "\xE1\xBC\xA7";
-          break;
-        case 0xA8 :
-          return "\xE1\xBC\xAE";
-          break;
-        case 0xA9 :
-          return "\xE1\xBC\xAF";
-          break;
-        case 0xB0 :
-          return "\xE1\xBC\xB6";
-          break;
-        case 0xB1 :
-          return "\xE1\xBC\xB7";
-          break;
-        case 0xB8 :
-          return "\xE1\xBC\xBE";
-          break;
-        case 0xB9 :
-          return "\xE1\xBC\xBF";
-          break;
-        }
-        break;
-      case 0xBD :
-        switch (prefix[2]) {
-        case 0x90 :
-          return "\xE1\xBD\x96";
-          break;
-        case 0x91 :
-          return "\xE1\xBD\x97";
-          break;
-        case 0x99 :
-          return "\xE1\xBD\x9F";
-          break;
-        case 0xA0 :
-          return "\xE1\xBD\xA6";
-          break;
-        case 0xA1 :
-          return "\xE1\xBD\xA7";
-          break;
-        case 0xA8 :
-          return "\xE1\xBD\xAE";
-          break;
-        case 0xA9 :
-          return "\xE1\xBD\xAF";
-          break;
-        }
-        break;
-      }
-      break;
-    }
-    break;
-  case 0x85 :
-    switch (prefix[0]) {
-    case 0xCE :
-      switch (prefix[1]) {
-      case 0x91 :
-        return "\xE1\xBE\xBC";
-        break;
-      case 0x97 :
-        return "\xE1\xBF\x8C";
-        break;
-      case 0xA9 :
-        return "\xE1\xBF\xBC";
-        break;
-      case 0xAC :
-        return "\xE1\xBE\xB4";
-        break;
-      case 0xAE :
-        return "\xE1\xBF\x84";
-        break;
-      case 0xB1 :
-        return "\xE1\xBE\xB3";
-        break;
-      case 0xB7 :
-        return "\xE1\xBF\x83";
-        break;
-      }
-      break;
-    case 0xCF :
-      switch (prefix[1]) {
-      case 0x89 :
-        return "\xE1\xBF\xB3";
-        break;
-      case 0x8E :
-        return "\xE1\xBF\xB4";
-        break;
-      }
-      break;
-    case 0xE1 :
-      switch (prefix[1]) {
-      case 0xBC :
-        switch (prefix[2]) {
-        case 0x80 :
-          return "\xE1\xBE\x80";
-          break;
-        case 0x81 :
-          return "\xE1\xBE\x81";
-          break;
-        case 0x82 :
-          return "\xE1\xBE\x82";
-          break;
-        case 0x83 :
-          return "\xE1\xBE\x83";
-          break;
-        case 0x84 :
-          return "\xE1\xBE\x84";
-          break;
-        case 0x85 :
-          return "\xE1\xBE\x85";
-          break;
-        case 0x86 :
-          return "\xE1\xBE\x86";
-          break;
-        case 0x87 :
-          return "\xE1\xBE\x87";
-          break;
-        case 0x88 :
-          return "\xE1\xBE\x88";
-          break;
-        case 0x89 :
-          return "\xE1\xBE\x89";
-          break;
-        case 0x8A :
-          return "\xE1\xBE\x8A";
-          break;
-        case 0x8B :
-          return "\xE1\xBE\x8B";
-          break;
-        case 0x8C :
-          return "\xE1\xBE\x8C";
-          break;
-        case 0x8D :
-          return "\xE1\xBE\x8D";
-          break;
-        case 0x8E :
-          return "\xE1\xBE\x8E";
-          break;
-        case 0x8F :
-          return "\xE1\xBE\x8F";
-          break;
-        case 0xA0 :
-          return "\xE1\xBE\x90";
-          break;
-        case 0xA1 :
-          return "\xE1\xBE\x91";
-          break;
-        case 0xA2 :
-          return "\xE1\xBE\x92";
-          break;
-        case 0xA3 :
-          return "\xE1\xBE\x93";
-          break;
-        case 0xA4 :
-          return "\xE1\xBE\x94";
-          break;
-        case 0xA5 :
-          return "\xE1\xBE\x95";
-          break;
-        case 0xA6 :
-          return "\xE1\xBE\x96";
-          break;
-        case 0xA7 :
-          return "\xE1\xBE\x97";
-          break;
-        case 0xA8 :
-          return "\xE1\xBE\x98";
-          break;
-        case 0xA9 :
-          return "\xE1\xBE\x99";
-          break;
-        case 0xAA :
-          return "\xE1\xBE\x9A";
-          break;
-        case 0xAB :
-          return "\xE1\xBE\x9B";
-          break;
-        case 0xAC :
-          return "\xE1\xBE\x9C";
-          break;
-        case 0xAD :
-          return "\xE1\xBE\x9D";
-          break;
-        case 0xAE :
-          return "\xE1\xBE\x9E";
-          break;
-        case 0xAF :
-          return "\xE1\xBE\x9F";
-          break;
-        }
-        break;
-      case 0xBD :
-        switch (prefix[2]) {
-        case 0xA0 :
-          return "\xE1\xBE\xA0";
-          break;
-        case 0xA1 :
-          return "\xE1\xBE\xA1";
-          break;
-        case 0xA2 :
-          return "\xE1\xBE\xA2";
-          break;
-        case 0xA3 :
-          return "\xE1\xBE\xA3";
-          break;
-        case 0xA4 :
-          return "\xE1\xBE\xA4";
-          break;
-        case 0xA5 :
-          return "\xE1\xBE\xA5";
-          break;
-        case 0xA6 :
-          return "\xE1\xBE\xA6";
-          break;
-        case 0xA7 :
-          return "\xE1\xBE\xA7";
-          break;
-        case 0xA8 :
-          return "\xE1\xBE\xA8";
-          break;
-        case 0xA9 :
-          return "\xE1\xBE\xA9";
-          break;
-        case 0xAA :
-          return "\xE1\xBE\xAA";
-          break;
-        case 0xAB :
-          return "\xE1\xBE\xAB";
-          break;
-        case 0xAC :
-          return "\xE1\xBE\xAC";
-          break;
-        case 0xAD :
-          return "\xE1\xBE\xAD";
-          break;
-        case 0xAE :
-          return "\xE1\xBE\xAE";
-          break;
-        case 0xAF :
-          return "\xE1\xBE\xAF";
-          break;
-        case 0xB0 :
-          return "\xE1\xBE\xB2";
-          break;
-        case 0xB4 :
-          return "\xE1\xBF\x82";
-          break;
-        case 0xBC :
-          return "\xE1\xBF\xB2";
-          break;
-        }
-        break;
-      case 0xBE :
-        if (prefix[2] == 0xB6) {
-          return "\xE1\xBE\xB7";
-        }
-        break;
-      case 0xBF :
-        switch (prefix[2]) {
-        case 0x86 :
-          return "\xE1\xBF\x87";
-          break;
-        case 0xB6 :
-          return "\xE1\xBF\xB7";
-          break;
-        }
-        break;
-      }
-      break;
-    }
-    break;
-  }
-  break;
-case 0xD9 :
-  switch (suffix[1]) {
-  case 0x93 :
-    if (prefix[0] == 0xD8) {
-      if (prefix[1] == 0xA7) {
-        return "\xD8\xA2";
-      }
-    }
-    break;
-  case 0x94 :
-    switch (prefix[0]) {
-    case 0xD8 :
-      if (prefix[1] == 0xA7) {
-        return "\xD8\xA3";
-      }
-      break;
-    case 0xD9 :
-      switch (prefix[1]) {
-      case 0x88 :
-        return "\xD8\xA4";
-        break;
-      case 0x8A :
-        return "\xD8\xA6";
-        break;
-      }
-      break;
-    case 0xDB :
-      switch (prefix[1]) {
-      case 0x81 :
-        return "\xDB\x82";
-        break;
-      case 0x92 :
-        return "\xDB\x93";
-        break;
-      case 0x95 :
-        return "\xDB\x80";
-        break;
-      }
-      break;
-    }
-    break;
-  case 0x95 :
-    if (prefix[0] == 0xD8) {
-      if (prefix[1] == 0xA7) {
-        return "\xD8\xA5";
-      }
-    }
-    break;
-  }
-  break;
-case 0xE0 :
-  switch (suffix[1]) {
-  case 0xA4 :
-    if (suffix[2] == 0xBC) {
-      if (prefix[0] == 0xE0) {
-        if (prefix[1] == 0xA4) {
-          switch (prefix[2]) {
-          case 0xA8 :
-            return "\xE0\xA4\xA9";
-            break;
-          case 0xB0 :
-            return "\xE0\xA4\xB1";
-            break;
-          case 0xB3 :
-            return "\xE0\xA4\xB4";
-            break;
-          }
-        }
-      }
-    }
-    break;
-  case 0xA6 :
-    if (suffix[2] == 0xBE) {
-      if (prefix[0] == 0xE0) {
-        if (prefix[1] == 0xA7) {
-          if (prefix[2] == 0x87) {
-            return "\xE0\xA7\x8B";
-          }
-        }
-      }
-    }
-    break;
-  case 0xA7 :
-    if (suffix[2] == 0x97) {
-      if (prefix[0] == 0xE0) {
-        if (prefix[1] == 0xA7) {
-          if (prefix[2] == 0x87) {
-            return "\xE0\xA7\x8C";
-          }
-        }
-      }
-    }
-    break;
-  case 0xAC :
-    if (suffix[2] == 0xBE) {
-      if (prefix[0] == 0xE0) {
-        if (prefix[1] == 0xAD) {
-          if (prefix[2] == 0x87) {
-            return "\xE0\xAD\x8B";
-          }
-        }
-      }
-    }
-    break;
-  case 0xAD :
-    switch (suffix[2]) {
-    case 0x96 :
-      if (prefix[0] == 0xE0) {
-        if (prefix[1] == 0xAD) {
-          if (prefix[2] == 0x87) {
-            return "\xE0\xAD\x88";
-          }
-        }
-      }
-      break;
-    case 0x97 :
-      if (prefix[0] == 0xE0) {
-        if (prefix[1] == 0xAD) {
-          if (prefix[2] == 0x87) {
-            return "\xE0\xAD\x8C";
-          }
-        }
-      }
-      break;
-    }
-    break;
-  case 0xAE :
-    if (suffix[2] == 0xBE) {
-      if (prefix[0] == 0xE0) {
-        if (prefix[1] == 0xAF) {
-          switch (prefix[2]) {
-          case 0x86 :
-            return "\xE0\xAF\x8A";
-            break;
-          case 0x87 :
-            return "\xE0\xAF\x8B";
-            break;
-          }
-        }
-      }
-    }
-    break;
-  case 0xAF :
-    if (suffix[2] == 0x97) {
-      if (prefix[0] == 0xE0) {
-        switch (prefix[1]) {
-        case 0xAE :
-          if (prefix[2] == 0x92) {
-            return "\xE0\xAE\x94";
-          }
-          break;
-        case 0xAF :
-          if (prefix[2] == 0x86) {
-            return "\xE0\xAF\x8C";
-          }
-          break;
-        }
-      }
-    }
-    break;
-  case 0xB1 :
-    if (suffix[2] == 0x96) {
-      if (prefix[0] == 0xE0) {
-        if (prefix[1] == 0xB1) {
-          if (prefix[2] == 0x86) {
-            return "\xE0\xB1\x88";
-          }
-        }
-      }
-    }
-    break;
-  case 0xB3 :
-    switch (suffix[2]) {
-    case 0x82 :
-      if (prefix[0] == 0xE0) {
-        if (prefix[1] == 0xB3) {
-          if (prefix[2] == 0x86) {
-            return "\xE0\xB3\x8A";
-          }
-        }
-      }
-      break;
-    case 0x95 :
-      if (prefix[0] == 0xE0) {
-        switch (prefix[1]) {
-        case 0xB2 :
-          if (prefix[2] == 0xBF) {
-            return "\xE0\xB3\x80";
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x86 :
-            return "\xE0\xB3\x87";
-            break;
-          case 0x8A :
-            return "\xE0\xB3\x8B";
-            break;
-          }
-          break;
-        }
-      }
-      break;
-    case 0x96 :
-      if (prefix[0] == 0xE0) {
-        if (prefix[1] == 0xB3) {
-          if (prefix[2] == 0x86) {
-            return "\xE0\xB3\x88";
-          }
-        }
-      }
-      break;
-    }
-    break;
-  case 0xB4 :
-    if (suffix[2] == 0xBE) {
-      if (prefix[0] == 0xE0) {
-        if (prefix[1] == 0xB5) {
-          switch (prefix[2]) {
-          case 0x86 :
-            return "\xE0\xB5\x8A";
-            break;
-          case 0x87 :
-            return "\xE0\xB5\x8B";
-            break;
-          }
-        }
-      }
-    }
-    break;
-  case 0xB5 :
-    if (suffix[2] == 0x97) {
-      if (prefix[0] == 0xE0) {
-        if (prefix[1] == 0xB5) {
-          if (prefix[2] == 0x86) {
-            return "\xE0\xB5\x8C";
-          }
-        }
-      }
-    }
-    break;
-  case 0xB7 :
-    switch (suffix[2]) {
-    case 0x8A :
-      if (prefix[0] == 0xE0) {
-        if (prefix[1] == 0xB7) {
-          switch (prefix[2]) {
-          case 0x99 :
-            return "\xE0\xB7\x9A";
-            break;
-          case 0x9C :
-            return "\xE0\xB7\x9D";
-            break;
-          }
-        }
-      }
-      break;
-    case 0x8F :
-      if (prefix[0] == 0xE0) {
-        if (prefix[1] == 0xB7) {
-          if (prefix[2] == 0x99) {
-            return "\xE0\xB7\x9C";
-          }
-        }
-      }
-      break;
-    case 0x9F :
-      if (prefix[0] == 0xE0) {
-        if (prefix[1] == 0xB7) {
-          if (prefix[2] == 0x99) {
-            return "\xE0\xB7\x9E";
-          }
-        }
-      }
-      break;
-    }
-    break;
-  }
-  break;
-case 0xE1 :
-  switch (suffix[1]) {
-  case 0x80 :
-    if (suffix[2] == 0xAE) {
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x80) {
-          if (prefix[2] == 0xA5) {
-            return "\xE1\x80\xA6";
-          }
-        }
-      }
-    }
-    break;
-  case 0x85 :
-    switch (suffix[2]) {
-    case 0xA1 :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB0\x80";
-            break;
-          case 0x81 :
-            return "\xEA\xB9\x8C";
-            break;
-          case 0x82 :
-            return "\xEB\x82\x98";
-            break;
-          case 0x83 :
-            return "\xEB\x8B\xA4";
-            break;
-          case 0x84 :
-            return "\xEB\x94\xB0";
-            break;
-          case 0x85 :
-            return "\xEB\x9D\xBC";
-            break;
-          case 0x86 :
-            return "\xEB\xA7\x88";
-            break;
-          case 0x87 :
-            return "\xEB\xB0\x94";
-            break;
-          case 0x88 :
-            return "\xEB\xB9\xA0";
-            break;
-          case 0x89 :
-            return "\xEC\x82\xAC";
-            break;
-          case 0x8A :
-            return "\xEC\x8B\xB8";
-            break;
-          case 0x8B :
-            return "\xEC\x95\x84";
-            break;
-          case 0x8C :
-            return "\xEC\x9E\x90";
-            break;
-          case 0x8D :
-            return "\xEC\xA7\x9C";
-            break;
-          case 0x8E :
-            return "\xEC\xB0\xA8";
-            break;
-          case 0x8F :
-            return "\xEC\xB9\xB4";
-            break;
-          case 0x90 :
-            return "\xED\x83\x80";
-            break;
-          case 0x91 :
-            return "\xED\x8C\x8C";
-            break;
-          case 0x92 :
-            return "\xED\x95\x98";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xA2 :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB0\x9C";
-            break;
-          case 0x81 :
-            return "\xEA\xB9\xA8";
-            break;
-          case 0x82 :
-            return "\xEB\x82\xB4";
-            break;
-          case 0x83 :
-            return "\xEB\x8C\x80";
-            break;
-          case 0x84 :
-            return "\xEB\x95\x8C";
-            break;
-          case 0x85 :
-            return "\xEB\x9E\x98";
-            break;
-          case 0x86 :
-            return "\xEB\xA7\xA4";
-            break;
-          case 0x87 :
-            return "\xEB\xB0\xB0";
-            break;
-          case 0x88 :
-            return "\xEB\xB9\xBC";
-            break;
-          case 0x89 :
-            return "\xEC\x83\x88";
-            break;
-          case 0x8A :
-            return "\xEC\x8C\x94";
-            break;
-          case 0x8B :
-            return "\xEC\x95\xA0";
-            break;
-          case 0x8C :
-            return "\xEC\x9E\xAC";
-            break;
-          case 0x8D :
-            return "\xEC\xA7\xB8";
-            break;
-          case 0x8E :
-            return "\xEC\xB1\x84";
-            break;
-          case 0x8F :
-            return "\xEC\xBA\x90";
-            break;
-          case 0x90 :
-            return "\xED\x83\x9C";
-            break;
-          case 0x91 :
-            return "\xED\x8C\xA8";
-            break;
-          case 0x92 :
-            return "\xED\x95\xB4";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xA3 :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB0\xB8";
-            break;
-          case 0x81 :
-            return "\xEA\xBA\x84";
-            break;
-          case 0x82 :
-            return "\xEB\x83\x90";
-            break;
-          case 0x83 :
-            return "\xEB\x8C\x9C";
-            break;
-          case 0x84 :
-            return "\xEB\x95\xA8";
-            break;
-          case 0x85 :
-            return "\xEB\x9E\xB4";
-            break;
-          case 0x86 :
-            return "\xEB\xA8\x80";
-            break;
-          case 0x87 :
-            return "\xEB\xB1\x8C";
-            break;
-          case 0x88 :
-            return "\xEB\xBA\x98";
-            break;
-          case 0x89 :
-            return "\xEC\x83\xA4";
-            break;
-          case 0x8A :
-            return "\xEC\x8C\xB0";
-            break;
-          case 0x8B :
-            return "\xEC\x95\xBC";
-            break;
-          case 0x8C :
-            return "\xEC\x9F\x88";
-            break;
-          case 0x8D :
-            return "\xEC\xA8\x94";
-            break;
-          case 0x8E :
-            return "\xEC\xB1\xA0";
-            break;
-          case 0x8F :
-            return "\xEC\xBA\xAC";
-            break;
-          case 0x90 :
-            return "\xED\x83\xB8";
-            break;
-          case 0x91 :
-            return "\xED\x8D\x84";
-            break;
-          case 0x92 :
-            return "\xED\x96\x90";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xA4 :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB1\x94";
-            break;
-          case 0x81 :
-            return "\xEA\xBA\xA0";
-            break;
-          case 0x82 :
-            return "\xEB\x83\xAC";
-            break;
-          case 0x83 :
-            return "\xEB\x8C\xB8";
-            break;
-          case 0x84 :
-            return "\xEB\x96\x84";
-            break;
-          case 0x85 :
-            return "\xEB\x9F\x90";
-            break;
-          case 0x86 :
-            return "\xEB\xA8\x9C";
-            break;
-          case 0x87 :
-            return "\xEB\xB1\xA8";
-            break;
-          case 0x88 :
-            return "\xEB\xBA\xB4";
-            break;
-          case 0x89 :
-            return "\xEC\x84\x80";
-            break;
-          case 0x8A :
-            return "\xEC\x8D\x8C";
-            break;
-          case 0x8B :
-            return "\xEC\x96\x98";
-            break;
-          case 0x8C :
-            return "\xEC\x9F\xA4";
-            break;
-          case 0x8D :
-            return "\xEC\xA8\xB0";
-            break;
-          case 0x8E :
-            return "\xEC\xB1\xBC";
-            break;
-          case 0x8F :
-            return "\xEC\xBB\x88";
-            break;
-          case 0x90 :
-            return "\xED\x84\x94";
-            break;
-          case 0x91 :
-            return "\xED\x8D\xA0";
-            break;
-          case 0x92 :
-            return "\xED\x96\xAC";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xA5 :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB1\xB0";
-            break;
-          case 0x81 :
-            return "\xEA\xBA\xBC";
-            break;
-          case 0x82 :
-            return "\xEB\x84\x88";
-            break;
-          case 0x83 :
-            return "\xEB\x8D\x94";
-            break;
-          case 0x84 :
-            return "\xEB\x96\xA0";
-            break;
-          case 0x85 :
-            return "\xEB\x9F\xAC";
-            break;
-          case 0x86 :
-            return "\xEB\xA8\xB8";
-            break;
-          case 0x87 :
-            return "\xEB\xB2\x84";
-            break;
-          case 0x88 :
-            return "\xEB\xBB\x90";
-            break;
-          case 0x89 :
-            return "\xEC\x84\x9C";
-            break;
-          case 0x8A :
-            return "\xEC\x8D\xA8";
-            break;
-          case 0x8B :
-            return "\xEC\x96\xB4";
-            break;
-          case 0x8C :
-            return "\xEC\xA0\x80";
-            break;
-          case 0x8D :
-            return "\xEC\xA9\x8C";
-            break;
-          case 0x8E :
-            return "\xEC\xB2\x98";
-            break;
-          case 0x8F :
-            return "\xEC\xBB\xA4";
-            break;
-          case 0x90 :
-            return "\xED\x84\xB0";
-            break;
-          case 0x91 :
-            return "\xED\x8D\xBC";
-            break;
-          case 0x92 :
-            return "\xED\x97\x88";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xA6 :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB2\x8C";
-            break;
-          case 0x81 :
-            return "\xEA\xBB\x98";
-            break;
-          case 0x82 :
-            return "\xEB\x84\xA4";
-            break;
-          case 0x83 :
-            return "\xEB\x8D\xB0";
-            break;
-          case 0x84 :
-            return "\xEB\x96\xBC";
-            break;
-          case 0x85 :
-            return "\xEB\xA0\x88";
-            break;
-          case 0x86 :
-            return "\xEB\xA9\x94";
-            break;
-          case 0x87 :
-            return "\xEB\xB2\xA0";
-            break;
-          case 0x88 :
-            return "\xEB\xBB\xAC";
-            break;
-          case 0x89 :
-            return "\xEC\x84\xB8";
-            break;
-          case 0x8A :
-            return "\xEC\x8E\x84";
-            break;
-          case 0x8B :
-            return "\xEC\x97\x90";
-            break;
-          case 0x8C :
-            return "\xEC\xA0\x9C";
-            break;
-          case 0x8D :
-            return "\xEC\xA9\xA8";
-            break;
-          case 0x8E :
-            return "\xEC\xB2\xB4";
-            break;
-          case 0x8F :
-            return "\xEC\xBC\x80";
-            break;
-          case 0x90 :
-            return "\xED\x85\x8C";
-            break;
-          case 0x91 :
-            return "\xED\x8E\x98";
-            break;
-          case 0x92 :
-            return "\xED\x97\xA4";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xA7 :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB2\xA8";
-            break;
-          case 0x81 :
-            return "\xEA\xBB\xB4";
-            break;
-          case 0x82 :
-            return "\xEB\x85\x80";
-            break;
-          case 0x83 :
-            return "\xEB\x8E\x8C";
-            break;
-          case 0x84 :
-            return "\xEB\x97\x98";
-            break;
-          case 0x85 :
-            return "\xEB\xA0\xA4";
-            break;
-          case 0x86 :
-            return "\xEB\xA9\xB0";
-            break;
-          case 0x87 :
-            return "\xEB\xB2\xBC";
-            break;
-          case 0x88 :
-            return "\xEB\xBC\x88";
-            break;
-          case 0x89 :
-            return "\xEC\x85\x94";
-            break;
-          case 0x8A :
-            return "\xEC\x8E\xA0";
-            break;
-          case 0x8B :
-            return "\xEC\x97\xAC";
-            break;
-          case 0x8C :
-            return "\xEC\xA0\xB8";
-            break;
-          case 0x8D :
-            return "\xEC\xAA\x84";
-            break;
-          case 0x8E :
-            return "\xEC\xB3\x90";
-            break;
-          case 0x8F :
-            return "\xEC\xBC\x9C";
-            break;
-          case 0x90 :
-            return "\xED\x85\xA8";
-            break;
-          case 0x91 :
-            return "\xED\x8E\xB4";
-            break;
-          case 0x92 :
-            return "\xED\x98\x80";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xA8 :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB3\x84";
-            break;
-          case 0x81 :
-            return "\xEA\xBC\x90";
-            break;
-          case 0x82 :
-            return "\xEB\x85\x9C";
-            break;
-          case 0x83 :
-            return "\xEB\x8E\xA8";
-            break;
-          case 0x84 :
-            return "\xEB\x97\xB4";
-            break;
-          case 0x85 :
-            return "\xEB\xA1\x80";
-            break;
-          case 0x86 :
-            return "\xEB\xAA\x8C";
-            break;
-          case 0x87 :
-            return "\xEB\xB3\x98";
-            break;
-          case 0x88 :
-            return "\xEB\xBC\xA4";
-            break;
-          case 0x89 :
-            return "\xEC\x85\xB0";
-            break;
-          case 0x8A :
-            return "\xEC\x8E\xBC";
-            break;
-          case 0x8B :
-            return "\xEC\x98\x88";
-            break;
-          case 0x8C :
-            return "\xEC\xA1\x94";
-            break;
-          case 0x8D :
-            return "\xEC\xAA\xA0";
-            break;
-          case 0x8E :
-            return "\xEC\xB3\xAC";
-            break;
-          case 0x8F :
-            return "\xEC\xBC\xB8";
-            break;
-          case 0x90 :
-            return "\xED\x86\x84";
-            break;
-          case 0x91 :
-            return "\xED\x8F\x90";
-            break;
-          case 0x92 :
-            return "\xED\x98\x9C";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xA9 :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB3\xA0";
-            break;
-          case 0x81 :
-            return "\xEA\xBC\xAC";
-            break;
-          case 0x82 :
-            return "\xEB\x85\xB8";
-            break;
-          case 0x83 :
-            return "\xEB\x8F\x84";
-            break;
-          case 0x84 :
-            return "\xEB\x98\x90";
-            break;
-          case 0x85 :
-            return "\xEB\xA1\x9C";
-            break;
-          case 0x86 :
-            return "\xEB\xAA\xA8";
-            break;
-          case 0x87 :
-            return "\xEB\xB3\xB4";
-            break;
-          case 0x88 :
-            return "\xEB\xBD\x80";
-            break;
-          case 0x89 :
-            return "\xEC\x86\x8C";
-            break;
-          case 0x8A :
-            return "\xEC\x8F\x98";
-            break;
-          case 0x8B :
-            return "\xEC\x98\xA4";
-            break;
-          case 0x8C :
-            return "\xEC\xA1\xB0";
-            break;
-          case 0x8D :
-            return "\xEC\xAA\xBC";
-            break;
-          case 0x8E :
-            return "\xEC\xB4\x88";
-            break;
-          case 0x8F :
-            return "\xEC\xBD\x94";
-            break;
-          case 0x90 :
-            return "\xED\x86\xA0";
-            break;
-          case 0x91 :
-            return "\xED\x8F\xAC";
-            break;
-          case 0x92 :
-            return "\xED\x98\xB8";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xAA :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB3\xBC";
-            break;
-          case 0x81 :
-            return "\xEA\xBD\x88";
-            break;
-          case 0x82 :
-            return "\xEB\x86\x94";
-            break;
-          case 0x83 :
-            return "\xEB\x8F\xA0";
-            break;
-          case 0x84 :
-            return "\xEB\x98\xAC";
-            break;
-          case 0x85 :
-            return "\xEB\xA1\xB8";
-            break;
-          case 0x86 :
-            return "\xEB\xAB\x84";
-            break;
-          case 0x87 :
-            return "\xEB\xB4\x90";
-            break;
-          case 0x88 :
-            return "\xEB\xBD\x9C";
-            break;
-          case 0x89 :
-            return "\xEC\x86\xA8";
-            break;
-          case 0x8A :
-            return "\xEC\x8F\xB4";
-            break;
-          case 0x8B :
-            return "\xEC\x99\x80";
-            break;
-          case 0x8C :
-            return "\xEC\xA2\x8C";
-            break;
-          case 0x8D :
-            return "\xEC\xAB\x98";
-            break;
-          case 0x8E :
-            return "\xEC\xB4\xA4";
-            break;
-          case 0x8F :
-            return "\xEC\xBD\xB0";
-            break;
-          case 0x90 :
-            return "\xED\x86\xBC";
-            break;
-          case 0x91 :
-            return "\xED\x90\x88";
-            break;
-          case 0x92 :
-            return "\xED\x99\x94";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xAB :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB4\x98";
-            break;
-          case 0x81 :
-            return "\xEA\xBD\xA4";
-            break;
-          case 0x82 :
-            return "\xEB\x86\xB0";
-            break;
-          case 0x83 :
-            return "\xEB\x8F\xBC";
-            break;
-          case 0x84 :
-            return "\xEB\x99\x88";
-            break;
-          case 0x85 :
-            return "\xEB\xA2\x94";
-            break;
-          case 0x86 :
-            return "\xEB\xAB\xA0";
-            break;
-          case 0x87 :
-            return "\xEB\xB4\xAC";
-            break;
-          case 0x88 :
-            return "\xEB\xBD\xB8";
-            break;
-          case 0x89 :
-            return "\xEC\x87\x84";
-            break;
-          case 0x8A :
-            return "\xEC\x90\x90";
-            break;
-          case 0x8B :
-            return "\xEC\x99\x9C";
-            break;
-          case 0x8C :
-            return "\xEC\xA2\xA8";
-            break;
-          case 0x8D :
-            return "\xEC\xAB\xB4";
-            break;
-          case 0x8E :
-            return "\xEC\xB5\x80";
-            break;
-          case 0x8F :
-            return "\xEC\xBE\x8C";
-            break;
-          case 0x90 :
-            return "\xED\x87\x98";
-            break;
-          case 0x91 :
-            return "\xED\x90\xA4";
-            break;
-          case 0x92 :
-            return "\xED\x99\xB0";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xAC :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB4\xB4";
-            break;
-          case 0x81 :
-            return "\xEA\xBE\x80";
-            break;
-          case 0x82 :
-            return "\xEB\x87\x8C";
-            break;
-          case 0x83 :
-            return "\xEB\x90\x98";
-            break;
-          case 0x84 :
-            return "\xEB\x99\xA4";
-            break;
-          case 0x85 :
-            return "\xEB\xA2\xB0";
-            break;
-          case 0x86 :
-            return "\xEB\xAB\xBC";
-            break;
-          case 0x87 :
-            return "\xEB\xB5\x88";
-            break;
-          case 0x88 :
-            return "\xEB\xBE\x94";
-            break;
-          case 0x89 :
-            return "\xEC\x87\xA0";
-            break;
-          case 0x8A :
-            return "\xEC\x90\xAC";
-            break;
-          case 0x8B :
-            return "\xEC\x99\xB8";
-            break;
-          case 0x8C :
-            return "\xEC\xA3\x84";
-            break;
-          case 0x8D :
-            return "\xEC\xAC\x90";
-            break;
-          case 0x8E :
-            return "\xEC\xB5\x9C";
-            break;
-          case 0x8F :
-            return "\xEC\xBE\xA8";
-            break;
-          case 0x90 :
-            return "\xED\x87\xB4";
-            break;
-          case 0x91 :
-            return "\xED\x91\x80";
-            break;
-          case 0x92 :
-            return "\xED\x9A\x8C";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xAD :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB5\x90";
-            break;
-          case 0x81 :
-            return "\xEA\xBE\x9C";
-            break;
-          case 0x82 :
-            return "\xEB\x87\xA8";
-            break;
-          case 0x83 :
-            return "\xEB\x90\xB4";
-            break;
-          case 0x84 :
-            return "\xEB\x9A\x80";
-            break;
-          case 0x85 :
-            return "\xEB\xA3\x8C";
-            break;
-          case 0x86 :
-            return "\xEB\xAC\x98";
-            break;
-          case 0x87 :
-            return "\xEB\xB5\xA4";
-            break;
-          case 0x88 :
-            return "\xEB\xBE\xB0";
-            break;
-          case 0x89 :
-            return "\xEC\x87\xBC";
-            break;
-          case 0x8A :
-            return "\xEC\x91\x88";
-            break;
-          case 0x8B :
-            return "\xEC\x9A\x94";
-            break;
-          case 0x8C :
-            return "\xEC\xA3\xA0";
-            break;
-          case 0x8D :
-            return "\xEC\xAC\xAC";
-            break;
-          case 0x8E :
-            return "\xEC\xB5\xB8";
-            break;
-          case 0x8F :
-            return "\xEC\xBF\x84";
-            break;
-          case 0x90 :
-            return "\xED\x88\x90";
-            break;
-          case 0x91 :
-            return "\xED\x91\x9C";
-            break;
-          case 0x92 :
-            return "\xED\x9A\xA8";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xAE :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB5\xAC";
-            break;
-          case 0x81 :
-            return "\xEA\xBE\xB8";
-            break;
-          case 0x82 :
-            return "\xEB\x88\x84";
-            break;
-          case 0x83 :
-            return "\xEB\x91\x90";
-            break;
-          case 0x84 :
-            return "\xEB\x9A\x9C";
-            break;
-          case 0x85 :
-            return "\xEB\xA3\xA8";
-            break;
-          case 0x86 :
-            return "\xEB\xAC\xB4";
-            break;
-          case 0x87 :
-            return "\xEB\xB6\x80";
-            break;
-          case 0x88 :
-            return "\xEB\xBF\x8C";
-            break;
-          case 0x89 :
-            return "\xEC\x88\x98";
-            break;
-          case 0x8A :
-            return "\xEC\x91\xA4";
-            break;
-          case 0x8B :
-            return "\xEC\x9A\xB0";
-            break;
-          case 0x8C :
-            return "\xEC\xA3\xBC";
-            break;
-          case 0x8D :
-            return "\xEC\xAD\x88";
-            break;
-          case 0x8E :
-            return "\xEC\xB6\x94";
-            break;
-          case 0x8F :
-            return "\xEC\xBF\xA0";
-            break;
-          case 0x90 :
-            return "\xED\x88\xAC";
-            break;
-          case 0x91 :
-            return "\xED\x91\xB8";
-            break;
-          case 0x92 :
-            return "\xED\x9B\x84";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xAF :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB6\x88";
-            break;
-          case 0x81 :
-            return "\xEA\xBF\x94";
-            break;
-          case 0x82 :
-            return "\xEB\x88\xA0";
-            break;
-          case 0x83 :
-            return "\xEB\x91\xAC";
-            break;
-          case 0x84 :
-            return "\xEB\x9A\xB8";
-            break;
-          case 0x85 :
-            return "\xEB\xA4\x84";
-            break;
-          case 0x86 :
-            return "\xEB\xAD\x90";
-            break;
-          case 0x87 :
-            return "\xEB\xB6\x9C";
-            break;
-          case 0x88 :
-            return "\xEB\xBF\xA8";
-            break;
-          case 0x89 :
-            return "\xEC\x88\xB4";
-            break;
-          case 0x8A :
-            return "\xEC\x92\x80";
-            break;
-          case 0x8B :
-            return "\xEC\x9B\x8C";
-            break;
-          case 0x8C :
-            return "\xEC\xA4\x98";
-            break;
-          case 0x8D :
-            return "\xEC\xAD\xA4";
-            break;
-          case 0x8E :
-            return "\xEC\xB6\xB0";
-            break;
-          case 0x8F :
-            return "\xEC\xBF\xBC";
-            break;
-          case 0x90 :
-            return "\xED\x89\x88";
-            break;
-          case 0x91 :
-            return "\xED\x92\x94";
-            break;
-          case 0x92 :
-            return "\xED\x9B\xA0";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xB0 :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB6\xA4";
-            break;
-          case 0x81 :
-            return "\xEA\xBF\xB0";
-            break;
-          case 0x82 :
-            return "\xEB\x88\xBC";
-            break;
-          case 0x83 :
-            return "\xEB\x92\x88";
-            break;
-          case 0x84 :
-            return "\xEB\x9B\x94";
-            break;
-          case 0x85 :
-            return "\xEB\xA4\xA0";
-            break;
-          case 0x86 :
-            return "\xEB\xAD\xAC";
-            break;
-          case 0x87 :
-            return "\xEB\xB6\xB8";
-            break;
-          case 0x88 :
-            return "\xEC\x80\x84";
-            break;
-          case 0x89 :
-            return "\xEC\x89\x90";
-            break;
-          case 0x8A :
-            return "\xEC\x92\x9C";
-            break;
-          case 0x8B :
-            return "\xEC\x9B\xA8";
-            break;
-          case 0x8C :
-            return "\xEC\xA4\xB4";
-            break;
-          case 0x8D :
-            return "\xEC\xAE\x80";
-            break;
-          case 0x8E :
-            return "\xEC\xB7\x8C";
-            break;
-          case 0x8F :
-            return "\xED\x80\x98";
-            break;
-          case 0x90 :
-            return "\xED\x89\xA4";
-            break;
-          case 0x91 :
-            return "\xED\x92\xB0";
-            break;
-          case 0x92 :
-            return "\xED\x9B\xBC";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xB1 :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB7\x80";
-            break;
-          case 0x81 :
-            return "\xEB\x80\x8C";
-            break;
-          case 0x82 :
-            return "\xEB\x89\x98";
-            break;
-          case 0x83 :
-            return "\xEB\x92\xA4";
-            break;
-          case 0x84 :
-            return "\xEB\x9B\xB0";
-            break;
-          case 0x85 :
-            return "\xEB\xA4\xBC";
-            break;
-          case 0x86 :
-            return "\xEB\xAE\x88";
-            break;
-          case 0x87 :
-            return "\xEB\xB7\x94";
-            break;
-          case 0x88 :
-            return "\xEC\x80\xA0";
-            break;
-          case 0x89 :
-            return "\xEC\x89\xAC";
-            break;
-          case 0x8A :
-            return "\xEC\x92\xB8";
-            break;
-          case 0x8B :
-            return "\xEC\x9C\x84";
-            break;
-          case 0x8C :
-            return "\xEC\xA5\x90";
-            break;
-          case 0x8D :
-            return "\xEC\xAE\x9C";
-            break;
-          case 0x8E :
-            return "\xEC\xB7\xA8";
-            break;
-          case 0x8F :
-            return "\xED\x80\xB4";
-            break;
-          case 0x90 :
-            return "\xED\x8A\x80";
-            break;
-          case 0x91 :
-            return "\xED\x93\x8C";
-            break;
-          case 0x92 :
-            return "\xED\x9C\x98";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xB2 :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB7\x9C";
-            break;
-          case 0x81 :
-            return "\xEB\x80\xA8";
-            break;
-          case 0x82 :
-            return "\xEB\x89\xB4";
-            break;
-          case 0x83 :
-            return "\xEB\x93\x80";
-            break;
-          case 0x84 :
-            return "\xEB\x9C\x8C";
-            break;
-          case 0x85 :
-            return "\xEB\xA5\x98";
-            break;
-          case 0x86 :
-            return "\xEB\xAE\xA4";
-            break;
-          case 0x87 :
-            return "\xEB\xB7\xB0";
-            break;
-          case 0x88 :
-            return "\xEC\x80\xBC";
-            break;
-          case 0x89 :
-            return "\xEC\x8A\x88";
-            break;
-          case 0x8A :
-            return "\xEC\x93\x94";
-            break;
-          case 0x8B :
-            return "\xEC\x9C\xA0";
-            break;
-          case 0x8C :
-            return "\xEC\xA5\xAC";
-            break;
-          case 0x8D :
-            return "\xEC\xAE\xB8";
-            break;
-          case 0x8E :
-            return "\xEC\xB8\x84";
-            break;
-          case 0x8F :
-            return "\xED\x81\x90";
-            break;
-          case 0x90 :
-            return "\xED\x8A\x9C";
-            break;
-          case 0x91 :
-            return "\xED\x93\xA8";
-            break;
-          case 0x92 :
-            return "\xED\x9C\xB4";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xB3 :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB7\xB8";
-            break;
-          case 0x81 :
-            return "\xEB\x81\x84";
-            break;
-          case 0x82 :
-            return "\xEB\x8A\x90";
-            break;
-          case 0x83 :
-            return "\xEB\x93\x9C";
-            break;
-          case 0x84 :
-            return "\xEB\x9C\xA8";
-            break;
-          case 0x85 :
-            return "\xEB\xA5\xB4";
-            break;
-          case 0x86 :
-            return "\xEB\xAF\x80";
-            break;
-          case 0x87 :
-            return "\xEB\xB8\x8C";
-            break;
-          case 0x88 :
-            return "\xEC\x81\x98";
-            break;
-          case 0x89 :
-            return "\xEC\x8A\xA4";
-            break;
-          case 0x8A :
-            return "\xEC\x93\xB0";
-            break;
-          case 0x8B :
-            return "\xEC\x9C\xBC";
-            break;
-          case 0x8C :
-            return "\xEC\xA6\x88";
-            break;
-          case 0x8D :
-            return "\xEC\xAF\x94";
-            break;
-          case 0x8E :
-            return "\xEC\xB8\xA0";
-            break;
-          case 0x8F :
-            return "\xED\x81\xAC";
-            break;
-          case 0x90 :
-            return "\xED\x8A\xB8";
-            break;
-          case 0x91 :
-            return "\xED\x94\x84";
-            break;
-          case 0x92 :
-            return "\xED\x9D\x90";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xB4 :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB8\x94";
-            break;
-          case 0x81 :
-            return "\xEB\x81\xA0";
-            break;
-          case 0x82 :
-            return "\xEB\x8A\xAC";
-            break;
-          case 0x83 :
-            return "\xEB\x93\xB8";
-            break;
-          case 0x84 :
-            return "\xEB\x9D\x84";
-            break;
-          case 0x85 :
-            return "\xEB\xA6\x90";
-            break;
-          case 0x86 :
-            return "\xEB\xAF\x9C";
-            break;
-          case 0x87 :
-            return "\xEB\xB8\xA8";
-            break;
-          case 0x88 :
-            return "\xEC\x81\xB4";
-            break;
-          case 0x89 :
-            return "\xEC\x8B\x80";
-            break;
-          case 0x8A :
-            return "\xEC\x94\x8C";
-            break;
-          case 0x8B :
-            return "\xEC\x9D\x98";
-            break;
-          case 0x8C :
-            return "\xEC\xA6\xA4";
-            break;
-          case 0x8D :
-            return "\xEC\xAF\xB0";
-            break;
-          case 0x8E :
-            return "\xEC\xB8\xBC";
-            break;
-          case 0x8F :
-            return "\xED\x82\x88";
-            break;
-          case 0x90 :
-            return "\xED\x8B\x94";
-            break;
-          case 0x91 :
-            return "\xED\x94\xA0";
-            break;
-          case 0x92 :
-            return "\xED\x9D\xAC";
-            break;
-          }
-        }
-      }
-      break;
-    case 0xB5 :
-      if (prefix[0] == 0xE1) {
-        if (prefix[1] == 0x84) {
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB8\xB0";
-            break;
-          case 0x81 :
-            return "\xEB\x81\xBC";
-            break;
-          case 0x82 :
-            return "\xEB\x8B\x88";
-            break;
-          case 0x83 :
-            return "\xEB\x94\x94";
-            break;
-          case 0x84 :
-            return "\xEB\x9D\xA0";
-            break;
-          case 0x85 :
-            return "\xEB\xA6\xAC";
-            break;
-          case 0x86 :
-            return "\xEB\xAF\xB8";
-            break;
-          case 0x87 :
-            return "\xEB\xB9\x84";
-            break;
-          case 0x88 :
-            return "\xEC\x82\x90";
-            break;
-          case 0x89 :
-            return "\xEC\x8B\x9C";
-            break;
-          case 0x8A :
-            return "\xEC\x94\xA8";
-            break;
-          case 0x8B :
-            return "\xEC\x9D\xB4";
-            break;
-          case 0x8C :
-            return "\xEC\xA7\x80";
-            break;
-          case 0x8D :
-            return "\xEC\xB0\x8C";
-            break;
-          case 0x8E :
-            return "\xEC\xB9\x98";
-            break;
-          case 0x8F :
-            return "\xED\x82\xA4";
-            break;
-          case 0x90 :
-            return "\xED\x8B\xB0";
-            break;
-          case 0x91 :
-            return "\xED\x94\xBC";
-            break;
-          case 0x92 :
-            return "\xED\x9E\x88";
-            break;
-          }
-        }
-      }
-      break;
-    }
-    break;
-  case 0x86 :
-    switch (suffix[2]) {
-    case 0xA8 :
-      switch (prefix[0]) {
-      case 0xEA :
-        switch (prefix[1]) {
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB0\x81";
-            break;
-          case 0x9C :
-            return "\xEA\xB0\x9D";
-            break;
-          case 0xB8 :
-            return "\xEA\xB0\xB9";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB1\x95";
-            break;
-          case 0xB0 :
-            return "\xEA\xB1\xB1";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB2\x8D";
-            break;
-          case 0xA8 :
-            return "\xEA\xB2\xA9";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xB3\x85";
-            break;
-          case 0xA0 :
-            return "\xEA\xB3\xA1";
-            break;
-          case 0xBC :
-            return "\xEA\xB3\xBD";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xB4\x99";
-            break;
-          case 0xB4 :
-            return "\xEA\xB4\xB5";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xB5\x91";
-            break;
-          case 0xAC :
-            return "\xEA\xB5\xAD";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xB6\x89";
-            break;
-          case 0xA4 :
-            return "\xEA\xB6\xA5";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB7\x81";
-            break;
-          case 0x9C :
-            return "\xEA\xB7\x9D";
-            break;
-          case 0xB8 :
-            return "\xEA\xB7\xB9";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB8\x95";
-            break;
-          case 0xB0 :
-            return "\xEA\xB8\xB1";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB9\x8D";
-            break;
-          case 0xA8 :
-            return "\xEA\xB9\xA9";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xBA\x85";
-            break;
-          case 0xA0 :
-            return "\xEA\xBA\xA1";
-            break;
-          case 0xBC :
-            return "\xEA\xBA\xBD";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xBB\x99";
-            break;
-          case 0xB4 :
-            return "\xEA\xBB\xB5";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xBC\x91";
-            break;
-          case 0xAC :
-            return "\xEA\xBC\xAD";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xBD\x89";
-            break;
-          case 0xA4 :
-            return "\xEA\xBD\xA5";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xBE\x81";
-            break;
-          case 0x9C :
-            return "\xEA\xBE\x9D";
-            break;
-          case 0xB8 :
-            return "\xEA\xBE\xB9";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xBF\x95";
-            break;
-          case 0xB0 :
-            return "\xEA\xBF\xB1";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEB :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x80\x8D";
-            break;
-          case 0xA8 :
-            return "\xEB\x80\xA9";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x81\x85";
-            break;
-          case 0xA0 :
-            return "\xEB\x81\xA1";
-            break;
-          case 0xBC :
-            return "\xEB\x81\xBD";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x82\x99";
-            break;
-          case 0xB4 :
-            return "\xEB\x82\xB5";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x83\x91";
-            break;
-          case 0xAC :
-            return "\xEB\x83\xAD";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x84\x89";
-            break;
-          case 0xA4 :
-            return "\xEB\x84\xA5";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x85\x81";
-            break;
-          case 0x9C :
-            return "\xEB\x85\x9D";
-            break;
-          case 0xB8 :
-            return "\xEB\x85\xB9";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x86\x95";
-            break;
-          case 0xB0 :
-            return "\xEB\x86\xB1";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x87\x8D";
-            break;
-          case 0xA8 :
-            return "\xEB\x87\xA9";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x88\x85";
-            break;
-          case 0xA0 :
-            return "\xEB\x88\xA1";
-            break;
-          case 0xBC :
-            return "\xEB\x88\xBD";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x89\x99";
-            break;
-          case 0xB4 :
-            return "\xEB\x89\xB5";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x8A\x91";
-            break;
-          case 0xAC :
-            return "\xEB\x8A\xAD";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x8B\x89";
-            break;
-          case 0xA4 :
-            return "\xEB\x8B\xA5";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x8C\x81";
-            break;
-          case 0x9C :
-            return "\xEB\x8C\x9D";
-            break;
-          case 0xB8 :
-            return "\xEB\x8C\xB9";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x8D\x95";
-            break;
-          case 0xB0 :
-            return "\xEB\x8D\xB1";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x8E\x8D";
-            break;
-          case 0xA8 :
-            return "\xEB\x8E\xA9";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x8F\x85";
-            break;
-          case 0xA0 :
-            return "\xEB\x8F\xA1";
-            break;
-          case 0xBC :
-            return "\xEB\x8F\xBD";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x90\x99";
-            break;
-          case 0xB4 :
-            return "\xEB\x90\xB5";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x91\x91";
-            break;
-          case 0xAC :
-            return "\xEB\x91\xAD";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x92\x89";
-            break;
-          case 0xA4 :
-            return "\xEB\x92\xA5";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x93\x81";
-            break;
-          case 0x9C :
-            return "\xEB\x93\x9D";
-            break;
-          case 0xB8 :
-            return "\xEB\x93\xB9";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x94\x95";
-            break;
-          case 0xB0 :
-            return "\xEB\x94\xB1";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x95\x8D";
-            break;
-          case 0xA8 :
-            return "\xEB\x95\xA9";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x96\x85";
-            break;
-          case 0xA0 :
-            return "\xEB\x96\xA1";
-            break;
-          case 0xBC :
-            return "\xEB\x96\xBD";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x97\x99";
-            break;
-          case 0xB4 :
-            return "\xEB\x97\xB5";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x98\x91";
-            break;
-          case 0xAC :
-            return "\xEB\x98\xAD";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x99\x89";
-            break;
-          case 0xA4 :
-            return "\xEB\x99\xA5";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x9A\x81";
-            break;
-          case 0x9C :
-            return "\xEB\x9A\x9D";
-            break;
-          case 0xB8 :
-            return "\xEB\x9A\xB9";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x9B\x95";
-            break;
-          case 0xB0 :
-            return "\xEB\x9B\xB1";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x9C\x8D";
-            break;
-          case 0xA8 :
-            return "\xEB\x9C\xA9";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x9D\x85";
-            break;
-          case 0xA0 :
-            return "\xEB\x9D\xA1";
-            break;
-          case 0xBC :
-            return "\xEB\x9D\xBD";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x9E\x99";
-            break;
-          case 0xB4 :
-            return "\xEB\x9E\xB5";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x9F\x91";
-            break;
-          case 0xAC :
-            return "\xEB\x9F\xAD";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA0\x89";
-            break;
-          case 0xA4 :
-            return "\xEB\xA0\xA5";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA1\x81";
-            break;
-          case 0x9C :
-            return "\xEB\xA1\x9D";
-            break;
-          case 0xB8 :
-            return "\xEB\xA1\xB9";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA2\x95";
-            break;
-          case 0xB0 :
-            return "\xEB\xA2\xB1";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xA3\x8D";
-            break;
-          case 0xA8 :
-            return "\xEB\xA3\xA9";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xA4\x85";
-            break;
-          case 0xA0 :
-            return "\xEB\xA4\xA1";
-            break;
-          case 0xBC :
-            return "\xEB\xA4\xBD";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xA5\x99";
-            break;
-          case 0xB4 :
-            return "\xEB\xA5\xB5";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xA6\x91";
-            break;
-          case 0xAC :
-            return "\xEB\xA6\xAD";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA7\x89";
-            break;
-          case 0xA4 :
-            return "\xEB\xA7\xA5";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA8\x81";
-            break;
-          case 0x9C :
-            return "\xEB\xA8\x9D";
-            break;
-          case 0xB8 :
-            return "\xEB\xA8\xB9";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA9\x95";
-            break;
-          case 0xB0 :
-            return "\xEB\xA9\xB1";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xAA\x8D";
-            break;
-          case 0xA8 :
-            return "\xEB\xAA\xA9";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xAB\x85";
-            break;
-          case 0xA0 :
-            return "\xEB\xAB\xA1";
-            break;
-          case 0xBC :
-            return "\xEB\xAB\xBD";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xAC\x99";
-            break;
-          case 0xB4 :
-            return "\xEB\xAC\xB5";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xAD\x91";
-            break;
-          case 0xAC :
-            return "\xEB\xAD\xAD";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xAE\x89";
-            break;
-          case 0xA4 :
-            return "\xEB\xAE\xA5";
-            break;
-          }
-          break;
-        case 0xAF :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xAF\x81";
-            break;
-          case 0x9C :
-            return "\xEB\xAF\x9D";
-            break;
-          case 0xB8 :
-            return "\xEB\xAF\xB9";
-            break;
-          }
-          break;
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xB0\x95";
-            break;
-          case 0xB0 :
-            return "\xEB\xB0\xB1";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xB1\x8D";
-            break;
-          case 0xA8 :
-            return "\xEB\xB1\xA9";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xB2\x85";
-            break;
-          case 0xA0 :
-            return "\xEB\xB2\xA1";
-            break;
-          case 0xBC :
-            return "\xEB\xB2\xBD";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xB3\x99";
-            break;
-          case 0xB4 :
-            return "\xEB\xB3\xB5";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xB4\x91";
-            break;
-          case 0xAC :
-            return "\xEB\xB4\xAD";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xB5\x89";
-            break;
-          case 0xA4 :
-            return "\xEB\xB5\xA5";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xB6\x81";
-            break;
-          case 0x9C :
-            return "\xEB\xB6\x9D";
-            break;
-          case 0xB8 :
-            return "\xEB\xB6\xB9";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xB7\x95";
-            break;
-          case 0xB0 :
-            return "\xEB\xB7\xB1";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xB8\x8D";
-            break;
-          case 0xA8 :
-            return "\xEB\xB8\xA9";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xB9\x85";
-            break;
-          case 0xA0 :
-            return "\xEB\xB9\xA1";
-            break;
-          case 0xBC :
-            return "\xEB\xB9\xBD";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xBA\x99";
-            break;
-          case 0xB4 :
-            return "\xEB\xBA\xB5";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xBB\x91";
-            break;
-          case 0xAC :
-            return "\xEB\xBB\xAD";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xBC\x89";
-            break;
-          case 0xA4 :
-            return "\xEB\xBC\xA5";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xBD\x81";
-            break;
-          case 0x9C :
-            return "\xEB\xBD\x9D";
-            break;
-          case 0xB8 :
-            return "\xEB\xBD\xB9";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xBE\x95";
-            break;
-          case 0xB0 :
-            return "\xEB\xBE\xB1";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xBF\x8D";
-            break;
-          case 0xA8 :
-            return "\xEB\xBF\xA9";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEC :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x80\x85";
-            break;
-          case 0xA0 :
-            return "\xEC\x80\xA1";
-            break;
-          case 0xBC :
-            return "\xEC\x80\xBD";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x81\x99";
-            break;
-          case 0xB4 :
-            return "\xEC\x81\xB5";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x82\x91";
-            break;
-          case 0xAC :
-            return "\xEC\x82\xAD";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x83\x89";
-            break;
-          case 0xA4 :
-            return "\xEC\x83\xA5";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x84\x81";
-            break;
-          case 0x9C :
-            return "\xEC\x84\x9D";
-            break;
-          case 0xB8 :
-            return "\xEC\x84\xB9";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x85\x95";
-            break;
-          case 0xB0 :
-            return "\xEC\x85\xB1";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x86\x8D";
-            break;
-          case 0xA8 :
-            return "\xEC\x86\xA9";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x87\x85";
-            break;
-          case 0xA0 :
-            return "\xEC\x87\xA1";
-            break;
-          case 0xBC :
-            return "\xEC\x87\xBD";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x88\x99";
-            break;
-          case 0xB4 :
-            return "\xEC\x88\xB5";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x89\x91";
-            break;
-          case 0xAC :
-            return "\xEC\x89\xAD";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x8A\x89";
-            break;
-          case 0xA4 :
-            return "\xEC\x8A\xA5";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x8B\x81";
-            break;
-          case 0x9C :
-            return "\xEC\x8B\x9D";
-            break;
-          case 0xB8 :
-            return "\xEC\x8B\xB9";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x8C\x95";
-            break;
-          case 0xB0 :
-            return "\xEC\x8C\xB1";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x8D\x8D";
-            break;
-          case 0xA8 :
-            return "\xEC\x8D\xA9";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x8E\x85";
-            break;
-          case 0xA0 :
-            return "\xEC\x8E\xA1";
-            break;
-          case 0xBC :
-            return "\xEC\x8E\xBD";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x8F\x99";
-            break;
-          case 0xB4 :
-            return "\xEC\x8F\xB5";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x90\x91";
-            break;
-          case 0xAC :
-            return "\xEC\x90\xAD";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x91\x89";
-            break;
-          case 0xA4 :
-            return "\xEC\x91\xA5";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x92\x81";
-            break;
-          case 0x9C :
-            return "\xEC\x92\x9D";
-            break;
-          case 0xB8 :
-            return "\xEC\x92\xB9";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x93\x95";
-            break;
-          case 0xB0 :
-            return "\xEC\x93\xB1";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x94\x8D";
-            break;
-          case 0xA8 :
-            return "\xEC\x94\xA9";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x95\x85";
-            break;
-          case 0xA0 :
-            return "\xEC\x95\xA1";
-            break;
-          case 0xBC :
-            return "\xEC\x95\xBD";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x96\x99";
-            break;
-          case 0xB4 :
-            return "\xEC\x96\xB5";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x97\x91";
-            break;
-          case 0xAC :
-            return "\xEC\x97\xAD";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x98\x89";
-            break;
-          case 0xA4 :
-            return "\xEC\x98\xA5";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x99\x81";
-            break;
-          case 0x9C :
-            return "\xEC\x99\x9D";
-            break;
-          case 0xB8 :
-            return "\xEC\x99\xB9";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x9A\x95";
-            break;
-          case 0xB0 :
-            return "\xEC\x9A\xB1";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x9B\x8D";
-            break;
-          case 0xA8 :
-            return "\xEC\x9B\xA9";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x9C\x85";
-            break;
-          case 0xA0 :
-            return "\xEC\x9C\xA1";
-            break;
-          case 0xBC :
-            return "\xEC\x9C\xBD";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x9D\x99";
-            break;
-          case 0xB4 :
-            return "\xEC\x9D\xB5";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x9E\x91";
-            break;
-          case 0xAC :
-            return "\xEC\x9E\xAD";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x9F\x89";
-            break;
-          case 0xA4 :
-            return "\xEC\x9F\xA5";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xA0\x81";
-            break;
-          case 0x9C :
-            return "\xEC\xA0\x9D";
-            break;
-          case 0xB8 :
-            return "\xEC\xA0\xB9";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xA1\x95";
-            break;
-          case 0xB0 :
-            return "\xEC\xA1\xB1";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xA2\x8D";
-            break;
-          case 0xA8 :
-            return "\xEC\xA2\xA9";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xA3\x85";
-            break;
-          case 0xA0 :
-            return "\xEC\xA3\xA1";
-            break;
-          case 0xBC :
-            return "\xEC\xA3\xBD";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xA4\x99";
-            break;
-          case 0xB4 :
-            return "\xEC\xA4\xB5";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xA5\x91";
-            break;
-          case 0xAC :
-            return "\xEC\xA5\xAD";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xA6\x89";
-            break;
-          case 0xA4 :
-            return "\xEC\xA6\xA5";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xA7\x81";
-            break;
-          case 0x9C :
-            return "\xEC\xA7\x9D";
-            break;
-          case 0xB8 :
-            return "\xEC\xA7\xB9";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xA8\x95";
-            break;
-          case 0xB0 :
-            return "\xEC\xA8\xB1";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xA9\x8D";
-            break;
-          case 0xA8 :
-            return "\xEC\xA9\xA9";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xAA\x85";
-            break;
-          case 0xA0 :
-            return "\xEC\xAA\xA1";
-            break;
-          case 0xBC :
-            return "\xEC\xAA\xBD";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xAB\x99";
-            break;
-          case 0xB4 :
-            return "\xEC\xAB\xB5";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xAC\x91";
-            break;
-          case 0xAC :
-            return "\xEC\xAC\xAD";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xAD\x89";
-            break;
-          case 0xA4 :
-            return "\xEC\xAD\xA5";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xAE\x81";
-            break;
-          case 0x9C :
-            return "\xEC\xAE\x9D";
-            break;
-          case 0xB8 :
-            return "\xEC\xAE\xB9";
-            break;
-          }
-          break;
-        case 0xAF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xAF\x95";
-            break;
-          case 0xB0 :
-            return "\xEC\xAF\xB1";
-            break;
-          }
-          break;
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xB0\x8D";
-            break;
-          case 0xA8 :
-            return "\xEC\xB0\xA9";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xB1\x85";
-            break;
-          case 0xA0 :
-            return "\xEC\xB1\xA1";
-            break;
-          case 0xBC :
-            return "\xEC\xB1\xBD";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xB2\x99";
-            break;
-          case 0xB4 :
-            return "\xEC\xB2\xB5";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xB3\x91";
-            break;
-          case 0xAC :
-            return "\xEC\xB3\xAD";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xB4\x89";
-            break;
-          case 0xA4 :
-            return "\xEC\xB4\xA5";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xB5\x81";
-            break;
-          case 0x9C :
-            return "\xEC\xB5\x9D";
-            break;
-          case 0xB8 :
-            return "\xEC\xB5\xB9";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xB6\x95";
-            break;
-          case 0xB0 :
-            return "\xEC\xB6\xB1";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xB7\x8D";
-            break;
-          case 0xA8 :
-            return "\xEC\xB7\xA9";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xB8\x85";
-            break;
-          case 0xA0 :
-            return "\xEC\xB8\xA1";
-            break;
-          case 0xBC :
-            return "\xEC\xB8\xBD";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xB9\x99";
-            break;
-          case 0xB4 :
-            return "\xEC\xB9\xB5";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xBA\x91";
-            break;
-          case 0xAC :
-            return "\xEC\xBA\xAD";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xBB\x89";
-            break;
-          case 0xA4 :
-            return "\xEC\xBB\xA5";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xBC\x81";
-            break;
-          case 0x9C :
-            return "\xEC\xBC\x9D";
-            break;
-          case 0xB8 :
-            return "\xEC\xBC\xB9";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xBD\x95";
-            break;
-          case 0xB0 :
-            return "\xEC\xBD\xB1";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xBE\x8D";
-            break;
-          case 0xA8 :
-            return "\xEC\xBE\xA9";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xBF\x85";
-            break;
-          case 0xA0 :
-            return "\xEC\xBF\xA1";
-            break;
-          case 0xBC :
-            return "\xEC\xBF\xBD";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xED :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x80\x99";
-            break;
-          case 0xB4 :
-            return "\xED\x80\xB5";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x81\x91";
-            break;
-          case 0xAC :
-            return "\xED\x81\xAD";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x82\x89";
-            break;
-          case 0xA4 :
-            return "\xED\x82\xA5";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x83\x81";
-            break;
-          case 0x9C :
-            return "\xED\x83\x9D";
-            break;
-          case 0xB8 :
-            return "\xED\x83\xB9";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x84\x95";
-            break;
-          case 0xB0 :
-            return "\xED\x84\xB1";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x85\x8D";
-            break;
-          case 0xA8 :
-            return "\xED\x85\xA9";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x86\x85";
-            break;
-          case 0xA0 :
-            return "\xED\x86\xA1";
-            break;
-          case 0xBC :
-            return "\xED\x86\xBD";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x87\x99";
-            break;
-          case 0xB4 :
-            return "\xED\x87\xB5";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x88\x91";
-            break;
-          case 0xAC :
-            return "\xED\x88\xAD";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x89\x89";
-            break;
-          case 0xA4 :
-            return "\xED\x89\xA5";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x8A\x81";
-            break;
-          case 0x9C :
-            return "\xED\x8A\x9D";
-            break;
-          case 0xB8 :
-            return "\xED\x8A\xB9";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x8B\x95";
-            break;
-          case 0xB0 :
-            return "\xED\x8B\xB1";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x8C\x8D";
-            break;
-          case 0xA8 :
-            return "\xED\x8C\xA9";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x8D\x85";
-            break;
-          case 0xA0 :
-            return "\xED\x8D\xA1";
-            break;
-          case 0xBC :
-            return "\xED\x8D\xBD";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x8E\x99";
-            break;
-          case 0xB4 :
-            return "\xED\x8E\xB5";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x8F\x91";
-            break;
-          case 0xAC :
-            return "\xED\x8F\xAD";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x90\x89";
-            break;
-          case 0xA4 :
-            return "\xED\x90\xA5";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x91\x81";
-            break;
-          case 0x9C :
-            return "\xED\x91\x9D";
-            break;
-          case 0xB8 :
-            return "\xED\x91\xB9";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x92\x95";
-            break;
-          case 0xB0 :
-            return "\xED\x92\xB1";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x93\x8D";
-            break;
-          case 0xA8 :
-            return "\xED\x93\xA9";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x94\x85";
-            break;
-          case 0xA0 :
-            return "\xED\x94\xA1";
-            break;
-          case 0xBC :
-            return "\xED\x94\xBD";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x95\x99";
-            break;
-          case 0xB4 :
-            return "\xED\x95\xB5";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x96\x91";
-            break;
-          case 0xAC :
-            return "\xED\x96\xAD";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x97\x89";
-            break;
-          case 0xA4 :
-            return "\xED\x97\xA5";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x98\x81";
-            break;
-          case 0x9C :
-            return "\xED\x98\x9D";
-            break;
-          case 0xB8 :
-            return "\xED\x98\xB9";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x99\x95";
-            break;
-          case 0xB0 :
-            return "\xED\x99\xB1";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x9A\x8D";
-            break;
-          case 0xA8 :
-            return "\xED\x9A\xA9";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x9B\x85";
-            break;
-          case 0xA0 :
-            return "\xED\x9B\xA1";
-            break;
-          case 0xBC :
-            return "\xED\x9B\xBD";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x9C\x99";
-            break;
-          case 0xB4 :
-            return "\xED\x9C\xB5";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x9D\x91";
-            break;
-          case 0xAC :
-            return "\xED\x9D\xAD";
-            break;
-          }
-          break;
-        case 0x9E :
-          if (prefix[2] == 0x88) {
-            return "\xED\x9E\x89";
-          }
-          break;
-        }
-        break;
-      }
-      break;
-    case 0xA9 :
-      switch (prefix[0]) {
-      case 0xEA :
-        switch (prefix[1]) {
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB0\x82";
-            break;
-          case 0x9C :
-            return "\xEA\xB0\x9E";
-            break;
-          case 0xB8 :
-            return "\xEA\xB0\xBA";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB1\x96";
-            break;
-          case 0xB0 :
-            return "\xEA\xB1\xB2";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB2\x8E";
-            break;
-          case 0xA8 :
-            return "\xEA\xB2\xAA";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xB3\x86";
-            break;
-          case 0xA0 :
-            return "\xEA\xB3\xA2";
-            break;
-          case 0xBC :
-            return "\xEA\xB3\xBE";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xB4\x9A";
-            break;
-          case 0xB4 :
-            return "\xEA\xB4\xB6";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xB5\x92";
-            break;
-          case 0xAC :
-            return "\xEA\xB5\xAE";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xB6\x8A";
-            break;
-          case 0xA4 :
-            return "\xEA\xB6\xA6";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB7\x82";
-            break;
-          case 0x9C :
-            return "\xEA\xB7\x9E";
-            break;
-          case 0xB8 :
-            return "\xEA\xB7\xBA";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB8\x96";
-            break;
-          case 0xB0 :
-            return "\xEA\xB8\xB2";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB9\x8E";
-            break;
-          case 0xA8 :
-            return "\xEA\xB9\xAA";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xBA\x86";
-            break;
-          case 0xA0 :
-            return "\xEA\xBA\xA2";
-            break;
-          case 0xBC :
-            return "\xEA\xBA\xBE";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xBB\x9A";
-            break;
-          case 0xB4 :
-            return "\xEA\xBB\xB6";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xBC\x92";
-            break;
-          case 0xAC :
-            return "\xEA\xBC\xAE";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xBD\x8A";
-            break;
-          case 0xA4 :
-            return "\xEA\xBD\xA6";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xBE\x82";
-            break;
-          case 0x9C :
-            return "\xEA\xBE\x9E";
-            break;
-          case 0xB8 :
-            return "\xEA\xBE\xBA";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xBF\x96";
-            break;
-          case 0xB0 :
-            return "\xEA\xBF\xB2";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEB :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x80\x8E";
-            break;
-          case 0xA8 :
-            return "\xEB\x80\xAA";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x81\x86";
-            break;
-          case 0xA0 :
-            return "\xEB\x81\xA2";
-            break;
-          case 0xBC :
-            return "\xEB\x81\xBE";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x82\x9A";
-            break;
-          case 0xB4 :
-            return "\xEB\x82\xB6";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x83\x92";
-            break;
-          case 0xAC :
-            return "\xEB\x83\xAE";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x84\x8A";
-            break;
-          case 0xA4 :
-            return "\xEB\x84\xA6";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x85\x82";
-            break;
-          case 0x9C :
-            return "\xEB\x85\x9E";
-            break;
-          case 0xB8 :
-            return "\xEB\x85\xBA";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x86\x96";
-            break;
-          case 0xB0 :
-            return "\xEB\x86\xB2";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x87\x8E";
-            break;
-          case 0xA8 :
-            return "\xEB\x87\xAA";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x88\x86";
-            break;
-          case 0xA0 :
-            return "\xEB\x88\xA2";
-            break;
-          case 0xBC :
-            return "\xEB\x88\xBE";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x89\x9A";
-            break;
-          case 0xB4 :
-            return "\xEB\x89\xB6";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x8A\x92";
-            break;
-          case 0xAC :
-            return "\xEB\x8A\xAE";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x8B\x8A";
-            break;
-          case 0xA4 :
-            return "\xEB\x8B\xA6";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x8C\x82";
-            break;
-          case 0x9C :
-            return "\xEB\x8C\x9E";
-            break;
-          case 0xB8 :
-            return "\xEB\x8C\xBA";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x8D\x96";
-            break;
-          case 0xB0 :
-            return "\xEB\x8D\xB2";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x8E\x8E";
-            break;
-          case 0xA8 :
-            return "\xEB\x8E\xAA";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x8F\x86";
-            break;
-          case 0xA0 :
-            return "\xEB\x8F\xA2";
-            break;
-          case 0xBC :
-            return "\xEB\x8F\xBE";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x90\x9A";
-            break;
-          case 0xB4 :
-            return "\xEB\x90\xB6";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x91\x92";
-            break;
-          case 0xAC :
-            return "\xEB\x91\xAE";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x92\x8A";
-            break;
-          case 0xA4 :
-            return "\xEB\x92\xA6";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x93\x82";
-            break;
-          case 0x9C :
-            return "\xEB\x93\x9E";
-            break;
-          case 0xB8 :
-            return "\xEB\x93\xBA";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x94\x96";
-            break;
-          case 0xB0 :
-            return "\xEB\x94\xB2";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x95\x8E";
-            break;
-          case 0xA8 :
-            return "\xEB\x95\xAA";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x96\x86";
-            break;
-          case 0xA0 :
-            return "\xEB\x96\xA2";
-            break;
-          case 0xBC :
-            return "\xEB\x96\xBE";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x97\x9A";
-            break;
-          case 0xB4 :
-            return "\xEB\x97\xB6";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x98\x92";
-            break;
-          case 0xAC :
-            return "\xEB\x98\xAE";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x99\x8A";
-            break;
-          case 0xA4 :
-            return "\xEB\x99\xA6";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x9A\x82";
-            break;
-          case 0x9C :
-            return "\xEB\x9A\x9E";
-            break;
-          case 0xB8 :
-            return "\xEB\x9A\xBA";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x9B\x96";
-            break;
-          case 0xB0 :
-            return "\xEB\x9B\xB2";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x9C\x8E";
-            break;
-          case 0xA8 :
-            return "\xEB\x9C\xAA";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x9D\x86";
-            break;
-          case 0xA0 :
-            return "\xEB\x9D\xA2";
-            break;
-          case 0xBC :
-            return "\xEB\x9D\xBE";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x9E\x9A";
-            break;
-          case 0xB4 :
-            return "\xEB\x9E\xB6";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x9F\x92";
-            break;
-          case 0xAC :
-            return "\xEB\x9F\xAE";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA0\x8A";
-            break;
-          case 0xA4 :
-            return "\xEB\xA0\xA6";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA1\x82";
-            break;
-          case 0x9C :
-            return "\xEB\xA1\x9E";
-            break;
-          case 0xB8 :
-            return "\xEB\xA1\xBA";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA2\x96";
-            break;
-          case 0xB0 :
-            return "\xEB\xA2\xB2";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xA3\x8E";
-            break;
-          case 0xA8 :
-            return "\xEB\xA3\xAA";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xA4\x86";
-            break;
-          case 0xA0 :
-            return "\xEB\xA4\xA2";
-            break;
-          case 0xBC :
-            return "\xEB\xA4\xBE";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xA5\x9A";
-            break;
-          case 0xB4 :
-            return "\xEB\xA5\xB6";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xA6\x92";
-            break;
-          case 0xAC :
-            return "\xEB\xA6\xAE";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA7\x8A";
-            break;
-          case 0xA4 :
-            return "\xEB\xA7\xA6";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA8\x82";
-            break;
-          case 0x9C :
-            return "\xEB\xA8\x9E";
-            break;
-          case 0xB8 :
-            return "\xEB\xA8\xBA";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA9\x96";
-            break;
-          case 0xB0 :
-            return "\xEB\xA9\xB2";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xAA\x8E";
-            break;
-          case 0xA8 :
-            return "\xEB\xAA\xAA";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xAB\x86";
-            break;
-          case 0xA0 :
-            return "\xEB\xAB\xA2";
-            break;
-          case 0xBC :
-            return "\xEB\xAB\xBE";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xAC\x9A";
-            break;
-          case 0xB4 :
-            return "\xEB\xAC\xB6";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xAD\x92";
-            break;
-          case 0xAC :
-            return "\xEB\xAD\xAE";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xAE\x8A";
-            break;
-          case 0xA4 :
-            return "\xEB\xAE\xA6";
-            break;
-          }
-          break;
-        case 0xAF :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xAF\x82";
-            break;
-          case 0x9C :
-            return "\xEB\xAF\x9E";
-            break;
-          case 0xB8 :
-            return "\xEB\xAF\xBA";
-            break;
-          }
-          break;
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xB0\x96";
-            break;
-          case 0xB0 :
-            return "\xEB\xB0\xB2";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xB1\x8E";
-            break;
-          case 0xA8 :
-            return "\xEB\xB1\xAA";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xB2\x86";
-            break;
-          case 0xA0 :
-            return "\xEB\xB2\xA2";
-            break;
-          case 0xBC :
-            return "\xEB\xB2\xBE";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xB3\x9A";
-            break;
-          case 0xB4 :
-            return "\xEB\xB3\xB6";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xB4\x92";
-            break;
-          case 0xAC :
-            return "\xEB\xB4\xAE";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xB5\x8A";
-            break;
-          case 0xA4 :
-            return "\xEB\xB5\xA6";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xB6\x82";
-            break;
-          case 0x9C :
-            return "\xEB\xB6\x9E";
-            break;
-          case 0xB8 :
-            return "\xEB\xB6\xBA";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xB7\x96";
-            break;
-          case 0xB0 :
-            return "\xEB\xB7\xB2";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xB8\x8E";
-            break;
-          case 0xA8 :
-            return "\xEB\xB8\xAA";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xB9\x86";
-            break;
-          case 0xA0 :
-            return "\xEB\xB9\xA2";
-            break;
-          case 0xBC :
-            return "\xEB\xB9\xBE";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xBA\x9A";
-            break;
-          case 0xB4 :
-            return "\xEB\xBA\xB6";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xBB\x92";
-            break;
-          case 0xAC :
-            return "\xEB\xBB\xAE";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xBC\x8A";
-            break;
-          case 0xA4 :
-            return "\xEB\xBC\xA6";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xBD\x82";
-            break;
-          case 0x9C :
-            return "\xEB\xBD\x9E";
-            break;
-          case 0xB8 :
-            return "\xEB\xBD\xBA";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xBE\x96";
-            break;
-          case 0xB0 :
-            return "\xEB\xBE\xB2";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xBF\x8E";
-            break;
-          case 0xA8 :
-            return "\xEB\xBF\xAA";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEC :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x80\x86";
-            break;
-          case 0xA0 :
-            return "\xEC\x80\xA2";
-            break;
-          case 0xBC :
-            return "\xEC\x80\xBE";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x81\x9A";
-            break;
-          case 0xB4 :
-            return "\xEC\x81\xB6";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x82\x92";
-            break;
-          case 0xAC :
-            return "\xEC\x82\xAE";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x83\x8A";
-            break;
-          case 0xA4 :
-            return "\xEC\x83\xA6";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x84\x82";
-            break;
-          case 0x9C :
-            return "\xEC\x84\x9E";
-            break;
-          case 0xB8 :
-            return "\xEC\x84\xBA";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x85\x96";
-            break;
-          case 0xB0 :
-            return "\xEC\x85\xB2";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x86\x8E";
-            break;
-          case 0xA8 :
-            return "\xEC\x86\xAA";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x87\x86";
-            break;
-          case 0xA0 :
-            return "\xEC\x87\xA2";
-            break;
-          case 0xBC :
-            return "\xEC\x87\xBE";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x88\x9A";
-            break;
-          case 0xB4 :
-            return "\xEC\x88\xB6";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x89\x92";
-            break;
-          case 0xAC :
-            return "\xEC\x89\xAE";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x8A\x8A";
-            break;
-          case 0xA4 :
-            return "\xEC\x8A\xA6";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x8B\x82";
-            break;
-          case 0x9C :
-            return "\xEC\x8B\x9E";
-            break;
-          case 0xB8 :
-            return "\xEC\x8B\xBA";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x8C\x96";
-            break;
-          case 0xB0 :
-            return "\xEC\x8C\xB2";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x8D\x8E";
-            break;
-          case 0xA8 :
-            return "\xEC\x8D\xAA";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x8E\x86";
-            break;
-          case 0xA0 :
-            return "\xEC\x8E\xA2";
-            break;
-          case 0xBC :
-            return "\xEC\x8E\xBE";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x8F\x9A";
-            break;
-          case 0xB4 :
-            return "\xEC\x8F\xB6";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x90\x92";
-            break;
-          case 0xAC :
-            return "\xEC\x90\xAE";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x91\x8A";
-            break;
-          case 0xA4 :
-            return "\xEC\x91\xA6";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x92\x82";
-            break;
-          case 0x9C :
-            return "\xEC\x92\x9E";
-            break;
-          case 0xB8 :
-            return "\xEC\x92\xBA";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x93\x96";
-            break;
-          case 0xB0 :
-            return "\xEC\x93\xB2";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x94\x8E";
-            break;
-          case 0xA8 :
-            return "\xEC\x94\xAA";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x95\x86";
-            break;
-          case 0xA0 :
-            return "\xEC\x95\xA2";
-            break;
-          case 0xBC :
-            return "\xEC\x95\xBE";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x96\x9A";
-            break;
-          case 0xB4 :
-            return "\xEC\x96\xB6";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x97\x92";
-            break;
-          case 0xAC :
-            return "\xEC\x97\xAE";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x98\x8A";
-            break;
-          case 0xA4 :
-            return "\xEC\x98\xA6";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x99\x82";
-            break;
-          case 0x9C :
-            return "\xEC\x99\x9E";
-            break;
-          case 0xB8 :
-            return "\xEC\x99\xBA";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x9A\x96";
-            break;
-          case 0xB0 :
-            return "\xEC\x9A\xB2";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x9B\x8E";
-            break;
-          case 0xA8 :
-            return "\xEC\x9B\xAA";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x9C\x86";
-            break;
-          case 0xA0 :
-            return "\xEC\x9C\xA2";
-            break;
-          case 0xBC :
-            return "\xEC\x9C\xBE";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x9D\x9A";
-            break;
-          case 0xB4 :
-            return "\xEC\x9D\xB6";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x9E\x92";
-            break;
-          case 0xAC :
-            return "\xEC\x9E\xAE";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x9F\x8A";
-            break;
-          case 0xA4 :
-            return "\xEC\x9F\xA6";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xA0\x82";
-            break;
-          case 0x9C :
-            return "\xEC\xA0\x9E";
-            break;
-          case 0xB8 :
-            return "\xEC\xA0\xBA";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xA1\x96";
-            break;
-          case 0xB0 :
-            return "\xEC\xA1\xB2";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xA2\x8E";
-            break;
-          case 0xA8 :
-            return "\xEC\xA2\xAA";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xA3\x86";
-            break;
-          case 0xA0 :
-            return "\xEC\xA3\xA2";
-            break;
-          case 0xBC :
-            return "\xEC\xA3\xBE";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xA4\x9A";
-            break;
-          case 0xB4 :
-            return "\xEC\xA4\xB6";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xA5\x92";
-            break;
-          case 0xAC :
-            return "\xEC\xA5\xAE";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xA6\x8A";
-            break;
-          case 0xA4 :
-            return "\xEC\xA6\xA6";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xA7\x82";
-            break;
-          case 0x9C :
-            return "\xEC\xA7\x9E";
-            break;
-          case 0xB8 :
-            return "\xEC\xA7\xBA";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xA8\x96";
-            break;
-          case 0xB0 :
-            return "\xEC\xA8\xB2";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xA9\x8E";
-            break;
-          case 0xA8 :
-            return "\xEC\xA9\xAA";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xAA\x86";
-            break;
-          case 0xA0 :
-            return "\xEC\xAA\xA2";
-            break;
-          case 0xBC :
-            return "\xEC\xAA\xBE";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xAB\x9A";
-            break;
-          case 0xB4 :
-            return "\xEC\xAB\xB6";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xAC\x92";
-            break;
-          case 0xAC :
-            return "\xEC\xAC\xAE";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xAD\x8A";
-            break;
-          case 0xA4 :
-            return "\xEC\xAD\xA6";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xAE\x82";
-            break;
-          case 0x9C :
-            return "\xEC\xAE\x9E";
-            break;
-          case 0xB8 :
-            return "\xEC\xAE\xBA";
-            break;
-          }
-          break;
-        case 0xAF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xAF\x96";
-            break;
-          case 0xB0 :
-            return "\xEC\xAF\xB2";
-            break;
-          }
-          break;
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xB0\x8E";
-            break;
-          case 0xA8 :
-            return "\xEC\xB0\xAA";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xB1\x86";
-            break;
-          case 0xA0 :
-            return "\xEC\xB1\xA2";
-            break;
-          case 0xBC :
-            return "\xEC\xB1\xBE";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xB2\x9A";
-            break;
-          case 0xB4 :
-            return "\xEC\xB2\xB6";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xB3\x92";
-            break;
-          case 0xAC :
-            return "\xEC\xB3\xAE";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xB4\x8A";
-            break;
-          case 0xA4 :
-            return "\xEC\xB4\xA6";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xB5\x82";
-            break;
-          case 0x9C :
-            return "\xEC\xB5\x9E";
-            break;
-          case 0xB8 :
-            return "\xEC\xB5\xBA";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xB6\x96";
-            break;
-          case 0xB0 :
-            return "\xEC\xB6\xB2";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xB7\x8E";
-            break;
-          case 0xA8 :
-            return "\xEC\xB7\xAA";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xB8\x86";
-            break;
-          case 0xA0 :
-            return "\xEC\xB8\xA2";
-            break;
-          case 0xBC :
-            return "\xEC\xB8\xBE";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xB9\x9A";
-            break;
-          case 0xB4 :
-            return "\xEC\xB9\xB6";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xBA\x92";
-            break;
-          case 0xAC :
-            return "\xEC\xBA\xAE";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xBB\x8A";
-            break;
-          case 0xA4 :
-            return "\xEC\xBB\xA6";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xBC\x82";
-            break;
-          case 0x9C :
-            return "\xEC\xBC\x9E";
-            break;
-          case 0xB8 :
-            return "\xEC\xBC\xBA";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xBD\x96";
-            break;
-          case 0xB0 :
-            return "\xEC\xBD\xB2";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xBE\x8E";
-            break;
-          case 0xA8 :
-            return "\xEC\xBE\xAA";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xBF\x86";
-            break;
-          case 0xA0 :
-            return "\xEC\xBF\xA2";
-            break;
-          case 0xBC :
-            return "\xEC\xBF\xBE";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xED :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x80\x9A";
-            break;
-          case 0xB4 :
-            return "\xED\x80\xB6";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x81\x92";
-            break;
-          case 0xAC :
-            return "\xED\x81\xAE";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x82\x8A";
-            break;
-          case 0xA4 :
-            return "\xED\x82\xA6";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x83\x82";
-            break;
-          case 0x9C :
-            return "\xED\x83\x9E";
-            break;
-          case 0xB8 :
-            return "\xED\x83\xBA";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x84\x96";
-            break;
-          case 0xB0 :
-            return "\xED\x84\xB2";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x85\x8E";
-            break;
-          case 0xA8 :
-            return "\xED\x85\xAA";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x86\x86";
-            break;
-          case 0xA0 :
-            return "\xED\x86\xA2";
-            break;
-          case 0xBC :
-            return "\xED\x86\xBE";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x87\x9A";
-            break;
-          case 0xB4 :
-            return "\xED\x87\xB6";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x88\x92";
-            break;
-          case 0xAC :
-            return "\xED\x88\xAE";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x89\x8A";
-            break;
-          case 0xA4 :
-            return "\xED\x89\xA6";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x8A\x82";
-            break;
-          case 0x9C :
-            return "\xED\x8A\x9E";
-            break;
-          case 0xB8 :
-            return "\xED\x8A\xBA";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x8B\x96";
-            break;
-          case 0xB0 :
-            return "\xED\x8B\xB2";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x8C\x8E";
-            break;
-          case 0xA8 :
-            return "\xED\x8C\xAA";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x8D\x86";
-            break;
-          case 0xA0 :
-            return "\xED\x8D\xA2";
-            break;
-          case 0xBC :
-            return "\xED\x8D\xBE";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x8E\x9A";
-            break;
-          case 0xB4 :
-            return "\xED\x8E\xB6";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x8F\x92";
-            break;
-          case 0xAC :
-            return "\xED\x8F\xAE";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x90\x8A";
-            break;
-          case 0xA4 :
-            return "\xED\x90\xA6";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x91\x82";
-            break;
-          case 0x9C :
-            return "\xED\x91\x9E";
-            break;
-          case 0xB8 :
-            return "\xED\x91\xBA";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x92\x96";
-            break;
-          case 0xB0 :
-            return "\xED\x92\xB2";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x93\x8E";
-            break;
-          case 0xA8 :
-            return "\xED\x93\xAA";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x94\x86";
-            break;
-          case 0xA0 :
-            return "\xED\x94\xA2";
-            break;
-          case 0xBC :
-            return "\xED\x94\xBE";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x95\x9A";
-            break;
-          case 0xB4 :
-            return "\xED\x95\xB6";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x96\x92";
-            break;
-          case 0xAC :
-            return "\xED\x96\xAE";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x97\x8A";
-            break;
-          case 0xA4 :
-            return "\xED\x97\xA6";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x98\x82";
-            break;
-          case 0x9C :
-            return "\xED\x98\x9E";
-            break;
-          case 0xB8 :
-            return "\xED\x98\xBA";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x99\x96";
-            break;
-          case 0xB0 :
-            return "\xED\x99\xB2";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x9A\x8E";
-            break;
-          case 0xA8 :
-            return "\xED\x9A\xAA";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x9B\x86";
-            break;
-          case 0xA0 :
-            return "\xED\x9B\xA2";
-            break;
-          case 0xBC :
-            return "\xED\x9B\xBE";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x9C\x9A";
-            break;
-          case 0xB4 :
-            return "\xED\x9C\xB6";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x9D\x92";
-            break;
-          case 0xAC :
-            return "\xED\x9D\xAE";
-            break;
-          }
-          break;
-        case 0x9E :
-          if (prefix[2] == 0x88) {
-            return "\xED\x9E\x8A";
-          }
-          break;
-        }
-        break;
-      }
-      break;
-    case 0xAA :
-      switch (prefix[0]) {
-      case 0xEA :
-        switch (prefix[1]) {
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB0\x83";
-            break;
-          case 0x9C :
-            return "\xEA\xB0\x9F";
-            break;
-          case 0xB8 :
-            return "\xEA\xB0\xBB";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB1\x97";
-            break;
-          case 0xB0 :
-            return "\xEA\xB1\xB3";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB2\x8F";
-            break;
-          case 0xA8 :
-            return "\xEA\xB2\xAB";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xB3\x87";
-            break;
-          case 0xA0 :
-            return "\xEA\xB3\xA3";
-            break;
-          case 0xBC :
-            return "\xEA\xB3\xBF";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xB4\x9B";
-            break;
-          case 0xB4 :
-            return "\xEA\xB4\xB7";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xB5\x93";
-            break;
-          case 0xAC :
-            return "\xEA\xB5\xAF";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xB6\x8B";
-            break;
-          case 0xA4 :
-            return "\xEA\xB6\xA7";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB7\x83";
-            break;
-          case 0x9C :
-            return "\xEA\xB7\x9F";
-            break;
-          case 0xB8 :
-            return "\xEA\xB7\xBB";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB8\x97";
-            break;
-          case 0xB0 :
-            return "\xEA\xB8\xB3";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB9\x8F";
-            break;
-          case 0xA8 :
-            return "\xEA\xB9\xAB";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xBA\x87";
-            break;
-          case 0xA0 :
-            return "\xEA\xBA\xA3";
-            break;
-          case 0xBC :
-            return "\xEA\xBA\xBF";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xBB\x9B";
-            break;
-          case 0xB4 :
-            return "\xEA\xBB\xB7";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xBC\x93";
-            break;
-          case 0xAC :
-            return "\xEA\xBC\xAF";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xBD\x8B";
-            break;
-          case 0xA4 :
-            return "\xEA\xBD\xA7";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xBE\x83";
-            break;
-          case 0x9C :
-            return "\xEA\xBE\x9F";
-            break;
-          case 0xB8 :
-            return "\xEA\xBE\xBB";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xBF\x97";
-            break;
-          case 0xB0 :
-            return "\xEA\xBF\xB3";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEB :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x80\x8F";
-            break;
-          case 0xA8 :
-            return "\xEB\x80\xAB";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x81\x87";
-            break;
-          case 0xA0 :
-            return "\xEB\x81\xA3";
-            break;
-          case 0xBC :
-            return "\xEB\x81\xBF";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x82\x9B";
-            break;
-          case 0xB4 :
-            return "\xEB\x82\xB7";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x83\x93";
-            break;
-          case 0xAC :
-            return "\xEB\x83\xAF";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x84\x8B";
-            break;
-          case 0xA4 :
-            return "\xEB\x84\xA7";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x85\x83";
-            break;
-          case 0x9C :
-            return "\xEB\x85\x9F";
-            break;
-          case 0xB8 :
-            return "\xEB\x85\xBB";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x86\x97";
-            break;
-          case 0xB0 :
-            return "\xEB\x86\xB3";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x87\x8F";
-            break;
-          case 0xA8 :
-            return "\xEB\x87\xAB";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x88\x87";
-            break;
-          case 0xA0 :
-            return "\xEB\x88\xA3";
-            break;
-          case 0xBC :
-            return "\xEB\x88\xBF";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x89\x9B";
-            break;
-          case 0xB4 :
-            return "\xEB\x89\xB7";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x8A\x93";
-            break;
-          case 0xAC :
-            return "\xEB\x8A\xAF";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x8B\x8B";
-            break;
-          case 0xA4 :
-            return "\xEB\x8B\xA7";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x8C\x83";
-            break;
-          case 0x9C :
-            return "\xEB\x8C\x9F";
-            break;
-          case 0xB8 :
-            return "\xEB\x8C\xBB";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x8D\x97";
-            break;
-          case 0xB0 :
-            return "\xEB\x8D\xB3";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x8E\x8F";
-            break;
-          case 0xA8 :
-            return "\xEB\x8E\xAB";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x8F\x87";
-            break;
-          case 0xA0 :
-            return "\xEB\x8F\xA3";
-            break;
-          case 0xBC :
-            return "\xEB\x8F\xBF";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x90\x9B";
-            break;
-          case 0xB4 :
-            return "\xEB\x90\xB7";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x91\x93";
-            break;
-          case 0xAC :
-            return "\xEB\x91\xAF";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x92\x8B";
-            break;
-          case 0xA4 :
-            return "\xEB\x92\xA7";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x93\x83";
-            break;
-          case 0x9C :
-            return "\xEB\x93\x9F";
-            break;
-          case 0xB8 :
-            return "\xEB\x93\xBB";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x94\x97";
-            break;
-          case 0xB0 :
-            return "\xEB\x94\xB3";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x95\x8F";
-            break;
-          case 0xA8 :
-            return "\xEB\x95\xAB";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x96\x87";
-            break;
-          case 0xA0 :
-            return "\xEB\x96\xA3";
-            break;
-          case 0xBC :
-            return "\xEB\x96\xBF";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x97\x9B";
-            break;
-          case 0xB4 :
-            return "\xEB\x97\xB7";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x98\x93";
-            break;
-          case 0xAC :
-            return "\xEB\x98\xAF";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x99\x8B";
-            break;
-          case 0xA4 :
-            return "\xEB\x99\xA7";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x9A\x83";
-            break;
-          case 0x9C :
-            return "\xEB\x9A\x9F";
-            break;
-          case 0xB8 :
-            return "\xEB\x9A\xBB";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x9B\x97";
-            break;
-          case 0xB0 :
-            return "\xEB\x9B\xB3";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x9C\x8F";
-            break;
-          case 0xA8 :
-            return "\xEB\x9C\xAB";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x9D\x87";
-            break;
-          case 0xA0 :
-            return "\xEB\x9D\xA3";
-            break;
-          case 0xBC :
-            return "\xEB\x9D\xBF";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x9E\x9B";
-            break;
-          case 0xB4 :
-            return "\xEB\x9E\xB7";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x9F\x93";
-            break;
-          case 0xAC :
-            return "\xEB\x9F\xAF";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA0\x8B";
-            break;
-          case 0xA4 :
-            return "\xEB\xA0\xA7";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA1\x83";
-            break;
-          case 0x9C :
-            return "\xEB\xA1\x9F";
-            break;
-          case 0xB8 :
-            return "\xEB\xA1\xBB";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA2\x97";
-            break;
-          case 0xB0 :
-            return "\xEB\xA2\xB3";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xA3\x8F";
-            break;
-          case 0xA8 :
-            return "\xEB\xA3\xAB";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xA4\x87";
-            break;
-          case 0xA0 :
-            return "\xEB\xA4\xA3";
-            break;
-          case 0xBC :
-            return "\xEB\xA4\xBF";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xA5\x9B";
-            break;
-          case 0xB4 :
-            return "\xEB\xA5\xB7";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xA6\x93";
-            break;
-          case 0xAC :
-            return "\xEB\xA6\xAF";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA7\x8B";
-            break;
-          case 0xA4 :
-            return "\xEB\xA7\xA7";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA8\x83";
-            break;
-          case 0x9C :
-            return "\xEB\xA8\x9F";
-            break;
-          case 0xB8 :
-            return "\xEB\xA8\xBB";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA9\x97";
-            break;
-          case 0xB0 :
-            return "\xEB\xA9\xB3";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xAA\x8F";
-            break;
-          case 0xA8 :
-            return "\xEB\xAA\xAB";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xAB\x87";
-            break;
-          case 0xA0 :
-            return "\xEB\xAB\xA3";
-            break;
-          case 0xBC :
-            return "\xEB\xAB\xBF";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xAC\x9B";
-            break;
-          case 0xB4 :
-            return "\xEB\xAC\xB7";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xAD\x93";
-            break;
-          case 0xAC :
-            return "\xEB\xAD\xAF";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xAE\x8B";
-            break;
-          case 0xA4 :
-            return "\xEB\xAE\xA7";
-            break;
-          }
-          break;
-        case 0xAF :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xAF\x83";
-            break;
-          case 0x9C :
-            return "\xEB\xAF\x9F";
-            break;
-          case 0xB8 :
-            return "\xEB\xAF\xBB";
-            break;
-          }
-          break;
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xB0\x97";
-            break;
-          case 0xB0 :
-            return "\xEB\xB0\xB3";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xB1\x8F";
-            break;
-          case 0xA8 :
-            return "\xEB\xB1\xAB";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xB2\x87";
-            break;
-          case 0xA0 :
-            return "\xEB\xB2\xA3";
-            break;
-          case 0xBC :
-            return "\xEB\xB2\xBF";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xB3\x9B";
-            break;
-          case 0xB4 :
-            return "\xEB\xB3\xB7";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xB4\x93";
-            break;
-          case 0xAC :
-            return "\xEB\xB4\xAF";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xB5\x8B";
-            break;
-          case 0xA4 :
-            return "\xEB\xB5\xA7";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xB6\x83";
-            break;
-          case 0x9C :
-            return "\xEB\xB6\x9F";
-            break;
-          case 0xB8 :
-            return "\xEB\xB6\xBB";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xB7\x97";
-            break;
-          case 0xB0 :
-            return "\xEB\xB7\xB3";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xB8\x8F";
-            break;
-          case 0xA8 :
-            return "\xEB\xB8\xAB";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xB9\x87";
-            break;
-          case 0xA0 :
-            return "\xEB\xB9\xA3";
-            break;
-          case 0xBC :
-            return "\xEB\xB9\xBF";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xBA\x9B";
-            break;
-          case 0xB4 :
-            return "\xEB\xBA\xB7";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xBB\x93";
-            break;
-          case 0xAC :
-            return "\xEB\xBB\xAF";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xBC\x8B";
-            break;
-          case 0xA4 :
-            return "\xEB\xBC\xA7";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xBD\x83";
-            break;
-          case 0x9C :
-            return "\xEB\xBD\x9F";
-            break;
-          case 0xB8 :
-            return "\xEB\xBD\xBB";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xBE\x97";
-            break;
-          case 0xB0 :
-            return "\xEB\xBE\xB3";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xBF\x8F";
-            break;
-          case 0xA8 :
-            return "\xEB\xBF\xAB";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEC :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x80\x87";
-            break;
-          case 0xA0 :
-            return "\xEC\x80\xA3";
-            break;
-          case 0xBC :
-            return "\xEC\x80\xBF";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x81\x9B";
-            break;
-          case 0xB4 :
-            return "\xEC\x81\xB7";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x82\x93";
-            break;
-          case 0xAC :
-            return "\xEC\x82\xAF";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x83\x8B";
-            break;
-          case 0xA4 :
-            return "\xEC\x83\xA7";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x84\x83";
-            break;
-          case 0x9C :
-            return "\xEC\x84\x9F";
-            break;
-          case 0xB8 :
-            return "\xEC\x84\xBB";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x85\x97";
-            break;
-          case 0xB0 :
-            return "\xEC\x85\xB3";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x86\x8F";
-            break;
-          case 0xA8 :
-            return "\xEC\x86\xAB";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x87\x87";
-            break;
-          case 0xA0 :
-            return "\xEC\x87\xA3";
-            break;
-          case 0xBC :
-            return "\xEC\x87\xBF";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x88\x9B";
-            break;
-          case 0xB4 :
-            return "\xEC\x88\xB7";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x89\x93";
-            break;
-          case 0xAC :
-            return "\xEC\x89\xAF";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x8A\x8B";
-            break;
-          case 0xA4 :
-            return "\xEC\x8A\xA7";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x8B\x83";
-            break;
-          case 0x9C :
-            return "\xEC\x8B\x9F";
-            break;
-          case 0xB8 :
-            return "\xEC\x8B\xBB";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x8C\x97";
-            break;
-          case 0xB0 :
-            return "\xEC\x8C\xB3";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x8D\x8F";
-            break;
-          case 0xA8 :
-            return "\xEC\x8D\xAB";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x8E\x87";
-            break;
-          case 0xA0 :
-            return "\xEC\x8E\xA3";
-            break;
-          case 0xBC :
-            return "\xEC\x8E\xBF";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x8F\x9B";
-            break;
-          case 0xB4 :
-            return "\xEC\x8F\xB7";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x90\x93";
-            break;
-          case 0xAC :
-            return "\xEC\x90\xAF";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x91\x8B";
-            break;
-          case 0xA4 :
-            return "\xEC\x91\xA7";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x92\x83";
-            break;
-          case 0x9C :
-            return "\xEC\x92\x9F";
-            break;
-          case 0xB8 :
-            return "\xEC\x92\xBB";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x93\x97";
-            break;
-          case 0xB0 :
-            return "\xEC\x93\xB3";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x94\x8F";
-            break;
-          case 0xA8 :
-            return "\xEC\x94\xAB";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x95\x87";
-            break;
-          case 0xA0 :
-            return "\xEC\x95\xA3";
-            break;
-          case 0xBC :
-            return "\xEC\x95\xBF";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x96\x9B";
-            break;
-          case 0xB4 :
-            return "\xEC\x96\xB7";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x97\x93";
-            break;
-          case 0xAC :
-            return "\xEC\x97\xAF";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x98\x8B";
-            break;
-          case 0xA4 :
-            return "\xEC\x98\xA7";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x99\x83";
-            break;
-          case 0x9C :
-            return "\xEC\x99\x9F";
-            break;
-          case 0xB8 :
-            return "\xEC\x99\xBB";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x9A\x97";
-            break;
-          case 0xB0 :
-            return "\xEC\x9A\xB3";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x9B\x8F";
-            break;
-          case 0xA8 :
-            return "\xEC\x9B\xAB";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x9C\x87";
-            break;
-          case 0xA0 :
-            return "\xEC\x9C\xA3";
-            break;
-          case 0xBC :
-            return "\xEC\x9C\xBF";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x9D\x9B";
-            break;
-          case 0xB4 :
-            return "\xEC\x9D\xB7";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x9E\x93";
-            break;
-          case 0xAC :
-            return "\xEC\x9E\xAF";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x9F\x8B";
-            break;
-          case 0xA4 :
-            return "\xEC\x9F\xA7";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xA0\x83";
-            break;
-          case 0x9C :
-            return "\xEC\xA0\x9F";
-            break;
-          case 0xB8 :
-            return "\xEC\xA0\xBB";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xA1\x97";
-            break;
-          case 0xB0 :
-            return "\xEC\xA1\xB3";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xA2\x8F";
-            break;
-          case 0xA8 :
-            return "\xEC\xA2\xAB";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xA3\x87";
-            break;
-          case 0xA0 :
-            return "\xEC\xA3\xA3";
-            break;
-          case 0xBC :
-            return "\xEC\xA3\xBF";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xA4\x9B";
-            break;
-          case 0xB4 :
-            return "\xEC\xA4\xB7";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xA5\x93";
-            break;
-          case 0xAC :
-            return "\xEC\xA5\xAF";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xA6\x8B";
-            break;
-          case 0xA4 :
-            return "\xEC\xA6\xA7";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xA7\x83";
-            break;
-          case 0x9C :
-            return "\xEC\xA7\x9F";
-            break;
-          case 0xB8 :
-            return "\xEC\xA7\xBB";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xA8\x97";
-            break;
-          case 0xB0 :
-            return "\xEC\xA8\xB3";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xA9\x8F";
-            break;
-          case 0xA8 :
-            return "\xEC\xA9\xAB";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xAA\x87";
-            break;
-          case 0xA0 :
-            return "\xEC\xAA\xA3";
-            break;
-          case 0xBC :
-            return "\xEC\xAA\xBF";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xAB\x9B";
-            break;
-          case 0xB4 :
-            return "\xEC\xAB\xB7";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xAC\x93";
-            break;
-          case 0xAC :
-            return "\xEC\xAC\xAF";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xAD\x8B";
-            break;
-          case 0xA4 :
-            return "\xEC\xAD\xA7";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xAE\x83";
-            break;
-          case 0x9C :
-            return "\xEC\xAE\x9F";
-            break;
-          case 0xB8 :
-            return "\xEC\xAE\xBB";
-            break;
-          }
-          break;
-        case 0xAF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xAF\x97";
-            break;
-          case 0xB0 :
-            return "\xEC\xAF\xB3";
-            break;
-          }
-          break;
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xB0\x8F";
-            break;
-          case 0xA8 :
-            return "\xEC\xB0\xAB";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xB1\x87";
-            break;
-          case 0xA0 :
-            return "\xEC\xB1\xA3";
-            break;
-          case 0xBC :
-            return "\xEC\xB1\xBF";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xB2\x9B";
-            break;
-          case 0xB4 :
-            return "\xEC\xB2\xB7";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xB3\x93";
-            break;
-          case 0xAC :
-            return "\xEC\xB3\xAF";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xB4\x8B";
-            break;
-          case 0xA4 :
-            return "\xEC\xB4\xA7";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xB5\x83";
-            break;
-          case 0x9C :
-            return "\xEC\xB5\x9F";
-            break;
-          case 0xB8 :
-            return "\xEC\xB5\xBB";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xB6\x97";
-            break;
-          case 0xB0 :
-            return "\xEC\xB6\xB3";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xB7\x8F";
-            break;
-          case 0xA8 :
-            return "\xEC\xB7\xAB";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xB8\x87";
-            break;
-          case 0xA0 :
-            return "\xEC\xB8\xA3";
-            break;
-          case 0xBC :
-            return "\xEC\xB8\xBF";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xB9\x9B";
-            break;
-          case 0xB4 :
-            return "\xEC\xB9\xB7";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xBA\x93";
-            break;
-          case 0xAC :
-            return "\xEC\xBA\xAF";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xBB\x8B";
-            break;
-          case 0xA4 :
-            return "\xEC\xBB\xA7";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xBC\x83";
-            break;
-          case 0x9C :
-            return "\xEC\xBC\x9F";
-            break;
-          case 0xB8 :
-            return "\xEC\xBC\xBB";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xBD\x97";
-            break;
-          case 0xB0 :
-            return "\xEC\xBD\xB3";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xBE\x8F";
-            break;
-          case 0xA8 :
-            return "\xEC\xBE\xAB";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xBF\x87";
-            break;
-          case 0xA0 :
-            return "\xEC\xBF\xA3";
-            break;
-          case 0xBC :
-            return "\xEC\xBF\xBF";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xED :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x80\x9B";
-            break;
-          case 0xB4 :
-            return "\xED\x80\xB7";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x81\x93";
-            break;
-          case 0xAC :
-            return "\xED\x81\xAF";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x82\x8B";
-            break;
-          case 0xA4 :
-            return "\xED\x82\xA7";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x83\x83";
-            break;
-          case 0x9C :
-            return "\xED\x83\x9F";
-            break;
-          case 0xB8 :
-            return "\xED\x83\xBB";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x84\x97";
-            break;
-          case 0xB0 :
-            return "\xED\x84\xB3";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x85\x8F";
-            break;
-          case 0xA8 :
-            return "\xED\x85\xAB";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x86\x87";
-            break;
-          case 0xA0 :
-            return "\xED\x86\xA3";
-            break;
-          case 0xBC :
-            return "\xED\x86\xBF";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x87\x9B";
-            break;
-          case 0xB4 :
-            return "\xED\x87\xB7";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x88\x93";
-            break;
-          case 0xAC :
-            return "\xED\x88\xAF";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x89\x8B";
-            break;
-          case 0xA4 :
-            return "\xED\x89\xA7";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x8A\x83";
-            break;
-          case 0x9C :
-            return "\xED\x8A\x9F";
-            break;
-          case 0xB8 :
-            return "\xED\x8A\xBB";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x8B\x97";
-            break;
-          case 0xB0 :
-            return "\xED\x8B\xB3";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x8C\x8F";
-            break;
-          case 0xA8 :
-            return "\xED\x8C\xAB";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x8D\x87";
-            break;
-          case 0xA0 :
-            return "\xED\x8D\xA3";
-            break;
-          case 0xBC :
-            return "\xED\x8D\xBF";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x8E\x9B";
-            break;
-          case 0xB4 :
-            return "\xED\x8E\xB7";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x8F\x93";
-            break;
-          case 0xAC :
-            return "\xED\x8F\xAF";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x90\x8B";
-            break;
-          case 0xA4 :
-            return "\xED\x90\xA7";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x91\x83";
-            break;
-          case 0x9C :
-            return "\xED\x91\x9F";
-            break;
-          case 0xB8 :
-            return "\xED\x91\xBB";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x92\x97";
-            break;
-          case 0xB0 :
-            return "\xED\x92\xB3";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x93\x8F";
-            break;
-          case 0xA8 :
-            return "\xED\x93\xAB";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x94\x87";
-            break;
-          case 0xA0 :
-            return "\xED\x94\xA3";
-            break;
-          case 0xBC :
-            return "\xED\x94\xBF";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x95\x9B";
-            break;
-          case 0xB4 :
-            return "\xED\x95\xB7";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x96\x93";
-            break;
-          case 0xAC :
-            return "\xED\x96\xAF";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x97\x8B";
-            break;
-          case 0xA4 :
-            return "\xED\x97\xA7";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x98\x83";
-            break;
-          case 0x9C :
-            return "\xED\x98\x9F";
-            break;
-          case 0xB8 :
-            return "\xED\x98\xBB";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x99\x97";
-            break;
-          case 0xB0 :
-            return "\xED\x99\xB3";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x9A\x8F";
-            break;
-          case 0xA8 :
-            return "\xED\x9A\xAB";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x9B\x87";
-            break;
-          case 0xA0 :
-            return "\xED\x9B\xA3";
-            break;
-          case 0xBC :
-            return "\xED\x9B\xBF";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x9C\x9B";
-            break;
-          case 0xB4 :
-            return "\xED\x9C\xB7";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x9D\x93";
-            break;
-          case 0xAC :
-            return "\xED\x9D\xAF";
-            break;
-          }
-          break;
-        case 0x9E :
-          if (prefix[2] == 0x88) {
-            return "\xED\x9E\x8B";
-          }
-          break;
-        }
-        break;
-      }
-      break;
-    case 0xAB :
-      switch (prefix[0]) {
-      case 0xEA :
-        switch (prefix[1]) {
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB0\x84";
-            break;
-          case 0x9C :
-            return "\xEA\xB0\xA0";
-            break;
-          case 0xB8 :
-            return "\xEA\xB0\xBC";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB1\x98";
-            break;
-          case 0xB0 :
-            return "\xEA\xB1\xB4";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB2\x90";
-            break;
-          case 0xA8 :
-            return "\xEA\xB2\xAC";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xB3\x88";
-            break;
-          case 0xA0 :
-            return "\xEA\xB3\xA4";
-            break;
-          case 0xBC :
-            return "\xEA\xB4\x80";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xB4\x9C";
-            break;
-          case 0xB4 :
-            return "\xEA\xB4\xB8";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xB5\x94";
-            break;
-          case 0xAC :
-            return "\xEA\xB5\xB0";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xB6\x8C";
-            break;
-          case 0xA4 :
-            return "\xEA\xB6\xA8";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB7\x84";
-            break;
-          case 0x9C :
-            return "\xEA\xB7\xA0";
-            break;
-          case 0xB8 :
-            return "\xEA\xB7\xBC";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB8\x98";
-            break;
-          case 0xB0 :
-            return "\xEA\xB8\xB4";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB9\x90";
-            break;
-          case 0xA8 :
-            return "\xEA\xB9\xAC";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xBA\x88";
-            break;
-          case 0xA0 :
-            return "\xEA\xBA\xA4";
-            break;
-          case 0xBC :
-            return "\xEA\xBB\x80";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xBB\x9C";
-            break;
-          case 0xB4 :
-            return "\xEA\xBB\xB8";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xBC\x94";
-            break;
-          case 0xAC :
-            return "\xEA\xBC\xB0";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xBD\x8C";
-            break;
-          case 0xA4 :
-            return "\xEA\xBD\xA8";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xBE\x84";
-            break;
-          case 0x9C :
-            return "\xEA\xBE\xA0";
-            break;
-          case 0xB8 :
-            return "\xEA\xBE\xBC";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xBF\x98";
-            break;
-          case 0xB0 :
-            return "\xEA\xBF\xB4";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEB :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x80\x90";
-            break;
-          case 0xA8 :
-            return "\xEB\x80\xAC";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x81\x88";
-            break;
-          case 0xA0 :
-            return "\xEB\x81\xA4";
-            break;
-          case 0xBC :
-            return "\xEB\x82\x80";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x82\x9C";
-            break;
-          case 0xB4 :
-            return "\xEB\x82\xB8";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x83\x94";
-            break;
-          case 0xAC :
-            return "\xEB\x83\xB0";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x84\x8C";
-            break;
-          case 0xA4 :
-            return "\xEB\x84\xA8";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x85\x84";
-            break;
-          case 0x9C :
-            return "\xEB\x85\xA0";
-            break;
-          case 0xB8 :
-            return "\xEB\x85\xBC";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x86\x98";
-            break;
-          case 0xB0 :
-            return "\xEB\x86\xB4";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x87\x90";
-            break;
-          case 0xA8 :
-            return "\xEB\x87\xAC";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x88\x88";
-            break;
-          case 0xA0 :
-            return "\xEB\x88\xA4";
-            break;
-          case 0xBC :
-            return "\xEB\x89\x80";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x89\x9C";
-            break;
-          case 0xB4 :
-            return "\xEB\x89\xB8";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x8A\x94";
-            break;
-          case 0xAC :
-            return "\xEB\x8A\xB0";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x8B\x8C";
-            break;
-          case 0xA4 :
-            return "\xEB\x8B\xA8";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x8C\x84";
-            break;
-          case 0x9C :
-            return "\xEB\x8C\xA0";
-            break;
-          case 0xB8 :
-            return "\xEB\x8C\xBC";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x8D\x98";
-            break;
-          case 0xB0 :
-            return "\xEB\x8D\xB4";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x8E\x90";
-            break;
-          case 0xA8 :
-            return "\xEB\x8E\xAC";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x8F\x88";
-            break;
-          case 0xA0 :
-            return "\xEB\x8F\xA4";
-            break;
-          case 0xBC :
-            return "\xEB\x90\x80";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x90\x9C";
-            break;
-          case 0xB4 :
-            return "\xEB\x90\xB8";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x91\x94";
-            break;
-          case 0xAC :
-            return "\xEB\x91\xB0";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x92\x8C";
-            break;
-          case 0xA4 :
-            return "\xEB\x92\xA8";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x93\x84";
-            break;
-          case 0x9C :
-            return "\xEB\x93\xA0";
-            break;
-          case 0xB8 :
-            return "\xEB\x93\xBC";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x94\x98";
-            break;
-          case 0xB0 :
-            return "\xEB\x94\xB4";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x95\x90";
-            break;
-          case 0xA8 :
-            return "\xEB\x95\xAC";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x96\x88";
-            break;
-          case 0xA0 :
-            return "\xEB\x96\xA4";
-            break;
-          case 0xBC :
-            return "\xEB\x97\x80";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x97\x9C";
-            break;
-          case 0xB4 :
-            return "\xEB\x97\xB8";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x98\x94";
-            break;
-          case 0xAC :
-            return "\xEB\x98\xB0";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x99\x8C";
-            break;
-          case 0xA4 :
-            return "\xEB\x99\xA8";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x9A\x84";
-            break;
-          case 0x9C :
-            return "\xEB\x9A\xA0";
-            break;
-          case 0xB8 :
-            return "\xEB\x9A\xBC";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x9B\x98";
-            break;
-          case 0xB0 :
-            return "\xEB\x9B\xB4";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x9C\x90";
-            break;
-          case 0xA8 :
-            return "\xEB\x9C\xAC";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x9D\x88";
-            break;
-          case 0xA0 :
-            return "\xEB\x9D\xA4";
-            break;
-          case 0xBC :
-            return "\xEB\x9E\x80";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x9E\x9C";
-            break;
-          case 0xB4 :
-            return "\xEB\x9E\xB8";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x9F\x94";
-            break;
-          case 0xAC :
-            return "\xEB\x9F\xB0";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA0\x8C";
-            break;
-          case 0xA4 :
-            return "\xEB\xA0\xA8";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA1\x84";
-            break;
-          case 0x9C :
-            return "\xEB\xA1\xA0";
-            break;
-          case 0xB8 :
-            return "\xEB\xA1\xBC";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA2\x98";
-            break;
-          case 0xB0 :
-            return "\xEB\xA2\xB4";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xA3\x90";
-            break;
-          case 0xA8 :
-            return "\xEB\xA3\xAC";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xA4\x88";
-            break;
-          case 0xA0 :
-            return "\xEB\xA4\xA4";
-            break;
-          case 0xBC :
-            return "\xEB\xA5\x80";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xA5\x9C";
-            break;
-          case 0xB4 :
-            return "\xEB\xA5\xB8";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xA6\x94";
-            break;
-          case 0xAC :
-            return "\xEB\xA6\xB0";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA7\x8C";
-            break;
-          case 0xA4 :
-            return "\xEB\xA7\xA8";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA8\x84";
-            break;
-          case 0x9C :
-            return "\xEB\xA8\xA0";
-            break;
-          case 0xB8 :
-            return "\xEB\xA8\xBC";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA9\x98";
-            break;
-          case 0xB0 :
-            return "\xEB\xA9\xB4";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xAA\x90";
-            break;
-          case 0xA8 :
-            return "\xEB\xAA\xAC";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xAB\x88";
-            break;
-          case 0xA0 :
-            return "\xEB\xAB\xA4";
-            break;
-          case 0xBC :
-            return "\xEB\xAC\x80";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xAC\x9C";
-            break;
-          case 0xB4 :
-            return "\xEB\xAC\xB8";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xAD\x94";
-            break;
-          case 0xAC :
-            return "\xEB\xAD\xB0";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xAE\x8C";
-            break;
-          case 0xA4 :
-            return "\xEB\xAE\xA8";
-            break;
-          }
-          break;
-        case 0xAF :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xAF\x84";
-            break;
-          case 0x9C :
-            return "\xEB\xAF\xA0";
-            break;
-          case 0xB8 :
-            return "\xEB\xAF\xBC";
-            break;
-          }
-          break;
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xB0\x98";
-            break;
-          case 0xB0 :
-            return "\xEB\xB0\xB4";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xB1\x90";
-            break;
-          case 0xA8 :
-            return "\xEB\xB1\xAC";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xB2\x88";
-            break;
-          case 0xA0 :
-            return "\xEB\xB2\xA4";
-            break;
-          case 0xBC :
-            return "\xEB\xB3\x80";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xB3\x9C";
-            break;
-          case 0xB4 :
-            return "\xEB\xB3\xB8";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xB4\x94";
-            break;
-          case 0xAC :
-            return "\xEB\xB4\xB0";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xB5\x8C";
-            break;
-          case 0xA4 :
-            return "\xEB\xB5\xA8";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xB6\x84";
-            break;
-          case 0x9C :
-            return "\xEB\xB6\xA0";
-            break;
-          case 0xB8 :
-            return "\xEB\xB6\xBC";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xB7\x98";
-            break;
-          case 0xB0 :
-            return "\xEB\xB7\xB4";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xB8\x90";
-            break;
-          case 0xA8 :
-            return "\xEB\xB8\xAC";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xB9\x88";
-            break;
-          case 0xA0 :
-            return "\xEB\xB9\xA4";
-            break;
-          case 0xBC :
-            return "\xEB\xBA\x80";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xBA\x9C";
-            break;
-          case 0xB4 :
-            return "\xEB\xBA\xB8";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xBB\x94";
-            break;
-          case 0xAC :
-            return "\xEB\xBB\xB0";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xBC\x8C";
-            break;
-          case 0xA4 :
-            return "\xEB\xBC\xA8";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xBD\x84";
-            break;
-          case 0x9C :
-            return "\xEB\xBD\xA0";
-            break;
-          case 0xB8 :
-            return "\xEB\xBD\xBC";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xBE\x98";
-            break;
-          case 0xB0 :
-            return "\xEB\xBE\xB4";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xBF\x90";
-            break;
-          case 0xA8 :
-            return "\xEB\xBF\xAC";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEC :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x80\x88";
-            break;
-          case 0xA0 :
-            return "\xEC\x80\xA4";
-            break;
-          case 0xBC :
-            return "\xEC\x81\x80";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x81\x9C";
-            break;
-          case 0xB4 :
-            return "\xEC\x81\xB8";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x82\x94";
-            break;
-          case 0xAC :
-            return "\xEC\x82\xB0";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x83\x8C";
-            break;
-          case 0xA4 :
-            return "\xEC\x83\xA8";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x84\x84";
-            break;
-          case 0x9C :
-            return "\xEC\x84\xA0";
-            break;
-          case 0xB8 :
-            return "\xEC\x84\xBC";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x85\x98";
-            break;
-          case 0xB0 :
-            return "\xEC\x85\xB4";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x86\x90";
-            break;
-          case 0xA8 :
-            return "\xEC\x86\xAC";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x87\x88";
-            break;
-          case 0xA0 :
-            return "\xEC\x87\xA4";
-            break;
-          case 0xBC :
-            return "\xEC\x88\x80";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x88\x9C";
-            break;
-          case 0xB4 :
-            return "\xEC\x88\xB8";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x89\x94";
-            break;
-          case 0xAC :
-            return "\xEC\x89\xB0";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x8A\x8C";
-            break;
-          case 0xA4 :
-            return "\xEC\x8A\xA8";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x8B\x84";
-            break;
-          case 0x9C :
-            return "\xEC\x8B\xA0";
-            break;
-          case 0xB8 :
-            return "\xEC\x8B\xBC";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x8C\x98";
-            break;
-          case 0xB0 :
-            return "\xEC\x8C\xB4";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x8D\x90";
-            break;
-          case 0xA8 :
-            return "\xEC\x8D\xAC";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x8E\x88";
-            break;
-          case 0xA0 :
-            return "\xEC\x8E\xA4";
-            break;
-          case 0xBC :
-            return "\xEC\x8F\x80";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x8F\x9C";
-            break;
-          case 0xB4 :
-            return "\xEC\x8F\xB8";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x90\x94";
-            break;
-          case 0xAC :
-            return "\xEC\x90\xB0";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x91\x8C";
-            break;
-          case 0xA4 :
-            return "\xEC\x91\xA8";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x92\x84";
-            break;
-          case 0x9C :
-            return "\xEC\x92\xA0";
-            break;
-          case 0xB8 :
-            return "\xEC\x92\xBC";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x93\x98";
-            break;
-          case 0xB0 :
-            return "\xEC\x93\xB4";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x94\x90";
-            break;
-          case 0xA8 :
-            return "\xEC\x94\xAC";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x95\x88";
-            break;
-          case 0xA0 :
-            return "\xEC\x95\xA4";
-            break;
-          case 0xBC :
-            return "\xEC\x96\x80";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x96\x9C";
-            break;
-          case 0xB4 :
-            return "\xEC\x96\xB8";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x97\x94";
-            break;
-          case 0xAC :
-            return "\xEC\x97\xB0";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x98\x8C";
-            break;
-          case 0xA4 :
-            return "\xEC\x98\xA8";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x99\x84";
-            break;
-          case 0x9C :
-            return "\xEC\x99\xA0";
-            break;
-          case 0xB8 :
-            return "\xEC\x99\xBC";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x9A\x98";
-            break;
-          case 0xB0 :
-            return "\xEC\x9A\xB4";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x9B\x90";
-            break;
-          case 0xA8 :
-            return "\xEC\x9B\xAC";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x9C\x88";
-            break;
-          case 0xA0 :
-            return "\xEC\x9C\xA4";
-            break;
-          case 0xBC :
-            return "\xEC\x9D\x80";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x9D\x9C";
-            break;
-          case 0xB4 :
-            return "\xEC\x9D\xB8";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x9E\x94";
-            break;
-          case 0xAC :
-            return "\xEC\x9E\xB0";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x9F\x8C";
-            break;
-          case 0xA4 :
-            return "\xEC\x9F\xA8";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xA0\x84";
-            break;
-          case 0x9C :
-            return "\xEC\xA0\xA0";
-            break;
-          case 0xB8 :
-            return "\xEC\xA0\xBC";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xA1\x98";
-            break;
-          case 0xB0 :
-            return "\xEC\xA1\xB4";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xA2\x90";
-            break;
-          case 0xA8 :
-            return "\xEC\xA2\xAC";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xA3\x88";
-            break;
-          case 0xA0 :
-            return "\xEC\xA3\xA4";
-            break;
-          case 0xBC :
-            return "\xEC\xA4\x80";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xA4\x9C";
-            break;
-          case 0xB4 :
-            return "\xEC\xA4\xB8";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xA5\x94";
-            break;
-          case 0xAC :
-            return "\xEC\xA5\xB0";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xA6\x8C";
-            break;
-          case 0xA4 :
-            return "\xEC\xA6\xA8";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xA7\x84";
-            break;
-          case 0x9C :
-            return "\xEC\xA7\xA0";
-            break;
-          case 0xB8 :
-            return "\xEC\xA7\xBC";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xA8\x98";
-            break;
-          case 0xB0 :
-            return "\xEC\xA8\xB4";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xA9\x90";
-            break;
-          case 0xA8 :
-            return "\xEC\xA9\xAC";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xAA\x88";
-            break;
-          case 0xA0 :
-            return "\xEC\xAA\xA4";
-            break;
-          case 0xBC :
-            return "\xEC\xAB\x80";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xAB\x9C";
-            break;
-          case 0xB4 :
-            return "\xEC\xAB\xB8";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xAC\x94";
-            break;
-          case 0xAC :
-            return "\xEC\xAC\xB0";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xAD\x8C";
-            break;
-          case 0xA4 :
-            return "\xEC\xAD\xA8";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xAE\x84";
-            break;
-          case 0x9C :
-            return "\xEC\xAE\xA0";
-            break;
-          case 0xB8 :
-            return "\xEC\xAE\xBC";
-            break;
-          }
-          break;
-        case 0xAF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xAF\x98";
-            break;
-          case 0xB0 :
-            return "\xEC\xAF\xB4";
-            break;
-          }
-          break;
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xB0\x90";
-            break;
-          case 0xA8 :
-            return "\xEC\xB0\xAC";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xB1\x88";
-            break;
-          case 0xA0 :
-            return "\xEC\xB1\xA4";
-            break;
-          case 0xBC :
-            return "\xEC\xB2\x80";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xB2\x9C";
-            break;
-          case 0xB4 :
-            return "\xEC\xB2\xB8";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xB3\x94";
-            break;
-          case 0xAC :
-            return "\xEC\xB3\xB0";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xB4\x8C";
-            break;
-          case 0xA4 :
-            return "\xEC\xB4\xA8";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xB5\x84";
-            break;
-          case 0x9C :
-            return "\xEC\xB5\xA0";
-            break;
-          case 0xB8 :
-            return "\xEC\xB5\xBC";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xB6\x98";
-            break;
-          case 0xB0 :
-            return "\xEC\xB6\xB4";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xB7\x90";
-            break;
-          case 0xA8 :
-            return "\xEC\xB7\xAC";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xB8\x88";
-            break;
-          case 0xA0 :
-            return "\xEC\xB8\xA4";
-            break;
-          case 0xBC :
-            return "\xEC\xB9\x80";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xB9\x9C";
-            break;
-          case 0xB4 :
-            return "\xEC\xB9\xB8";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xBA\x94";
-            break;
-          case 0xAC :
-            return "\xEC\xBA\xB0";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xBB\x8C";
-            break;
-          case 0xA4 :
-            return "\xEC\xBB\xA8";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xBC\x84";
-            break;
-          case 0x9C :
-            return "\xEC\xBC\xA0";
-            break;
-          case 0xB8 :
-            return "\xEC\xBC\xBC";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xBD\x98";
-            break;
-          case 0xB0 :
-            return "\xEC\xBD\xB4";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xBE\x90";
-            break;
-          case 0xA8 :
-            return "\xEC\xBE\xAC";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xBF\x88";
-            break;
-          case 0xA0 :
-            return "\xEC\xBF\xA4";
-            break;
-          case 0xBC :
-            return "\xED\x80\x80";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xED :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x80\x9C";
-            break;
-          case 0xB4 :
-            return "\xED\x80\xB8";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x81\x94";
-            break;
-          case 0xAC :
-            return "\xED\x81\xB0";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x82\x8C";
-            break;
-          case 0xA4 :
-            return "\xED\x82\xA8";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x83\x84";
-            break;
-          case 0x9C :
-            return "\xED\x83\xA0";
-            break;
-          case 0xB8 :
-            return "\xED\x83\xBC";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x84\x98";
-            break;
-          case 0xB0 :
-            return "\xED\x84\xB4";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x85\x90";
-            break;
-          case 0xA8 :
-            return "\xED\x85\xAC";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x86\x88";
-            break;
-          case 0xA0 :
-            return "\xED\x86\xA4";
-            break;
-          case 0xBC :
-            return "\xED\x87\x80";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x87\x9C";
-            break;
-          case 0xB4 :
-            return "\xED\x87\xB8";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x88\x94";
-            break;
-          case 0xAC :
-            return "\xED\x88\xB0";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x89\x8C";
-            break;
-          case 0xA4 :
-            return "\xED\x89\xA8";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x8A\x84";
-            break;
-          case 0x9C :
-            return "\xED\x8A\xA0";
-            break;
-          case 0xB8 :
-            return "\xED\x8A\xBC";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x8B\x98";
-            break;
-          case 0xB0 :
-            return "\xED\x8B\xB4";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x8C\x90";
-            break;
-          case 0xA8 :
-            return "\xED\x8C\xAC";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x8D\x88";
-            break;
-          case 0xA0 :
-            return "\xED\x8D\xA4";
-            break;
-          case 0xBC :
-            return "\xED\x8E\x80";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x8E\x9C";
-            break;
-          case 0xB4 :
-            return "\xED\x8E\xB8";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x8F\x94";
-            break;
-          case 0xAC :
-            return "\xED\x8F\xB0";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x90\x8C";
-            break;
-          case 0xA4 :
-            return "\xED\x90\xA8";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x91\x84";
-            break;
-          case 0x9C :
-            return "\xED\x91\xA0";
-            break;
-          case 0xB8 :
-            return "\xED\x91\xBC";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x92\x98";
-            break;
-          case 0xB0 :
-            return "\xED\x92\xB4";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x93\x90";
-            break;
-          case 0xA8 :
-            return "\xED\x93\xAC";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x94\x88";
-            break;
-          case 0xA0 :
-            return "\xED\x94\xA4";
-            break;
-          case 0xBC :
-            return "\xED\x95\x80";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x95\x9C";
-            break;
-          case 0xB4 :
-            return "\xED\x95\xB8";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x96\x94";
-            break;
-          case 0xAC :
-            return "\xED\x96\xB0";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x97\x8C";
-            break;
-          case 0xA4 :
-            return "\xED\x97\xA8";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x98\x84";
-            break;
-          case 0x9C :
-            return "\xED\x98\xA0";
-            break;
-          case 0xB8 :
-            return "\xED\x98\xBC";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x99\x98";
-            break;
-          case 0xB0 :
-            return "\xED\x99\xB4";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x9A\x90";
-            break;
-          case 0xA8 :
-            return "\xED\x9A\xAC";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x9B\x88";
-            break;
-          case 0xA0 :
-            return "\xED\x9B\xA4";
-            break;
-          case 0xBC :
-            return "\xED\x9C\x80";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x9C\x9C";
-            break;
-          case 0xB4 :
-            return "\xED\x9C\xB8";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x9D\x94";
-            break;
-          case 0xAC :
-            return "\xED\x9D\xB0";
-            break;
-          }
-          break;
-        case 0x9E :
-          if (prefix[2] == 0x88) {
-            return "\xED\x9E\x8C";
-          }
-          break;
-        }
-        break;
-      }
-      break;
-    case 0xAC :
-      switch (prefix[0]) {
-      case 0xEA :
-        switch (prefix[1]) {
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB0\x85";
-            break;
-          case 0x9C :
-            return "\xEA\xB0\xA1";
-            break;
-          case 0xB8 :
-            return "\xEA\xB0\xBD";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB1\x99";
-            break;
-          case 0xB0 :
-            return "\xEA\xB1\xB5";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB2\x91";
-            break;
-          case 0xA8 :
-            return "\xEA\xB2\xAD";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xB3\x89";
-            break;
-          case 0xA0 :
-            return "\xEA\xB3\xA5";
-            break;
-          case 0xBC :
-            return "\xEA\xB4\x81";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xB4\x9D";
-            break;
-          case 0xB4 :
-            return "\xEA\xB4\xB9";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xB5\x95";
-            break;
-          case 0xAC :
-            return "\xEA\xB5\xB1";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xB6\x8D";
-            break;
-          case 0xA4 :
-            return "\xEA\xB6\xA9";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB7\x85";
-            break;
-          case 0x9C :
-            return "\xEA\xB7\xA1";
-            break;
-          case 0xB8 :
-            return "\xEA\xB7\xBD";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB8\x99";
-            break;
-          case 0xB0 :
-            return "\xEA\xB8\xB5";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB9\x91";
-            break;
-          case 0xA8 :
-            return "\xEA\xB9\xAD";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xBA\x89";
-            break;
-          case 0xA0 :
-            return "\xEA\xBA\xA5";
-            break;
-          case 0xBC :
-            return "\xEA\xBB\x81";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xBB\x9D";
-            break;
-          case 0xB4 :
-            return "\xEA\xBB\xB9";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xBC\x95";
-            break;
-          case 0xAC :
-            return "\xEA\xBC\xB1";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xBD\x8D";
-            break;
-          case 0xA4 :
-            return "\xEA\xBD\xA9";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xBE\x85";
-            break;
-          case 0x9C :
-            return "\xEA\xBE\xA1";
-            break;
-          case 0xB8 :
-            return "\xEA\xBE\xBD";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xBF\x99";
-            break;
-          case 0xB0 :
-            return "\xEA\xBF\xB5";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEB :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x80\x91";
-            break;
-          case 0xA8 :
-            return "\xEB\x80\xAD";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x81\x89";
-            break;
-          case 0xA0 :
-            return "\xEB\x81\xA5";
-            break;
-          case 0xBC :
-            return "\xEB\x82\x81";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x82\x9D";
-            break;
-          case 0xB4 :
-            return "\xEB\x82\xB9";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x83\x95";
-            break;
-          case 0xAC :
-            return "\xEB\x83\xB1";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x84\x8D";
-            break;
-          case 0xA4 :
-            return "\xEB\x84\xA9";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x85\x85";
-            break;
-          case 0x9C :
-            return "\xEB\x85\xA1";
-            break;
-          case 0xB8 :
-            return "\xEB\x85\xBD";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x86\x99";
-            break;
-          case 0xB0 :
-            return "\xEB\x86\xB5";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x87\x91";
-            break;
-          case 0xA8 :
-            return "\xEB\x87\xAD";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x88\x89";
-            break;
-          case 0xA0 :
-            return "\xEB\x88\xA5";
-            break;
-          case 0xBC :
-            return "\xEB\x89\x81";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x89\x9D";
-            break;
-          case 0xB4 :
-            return "\xEB\x89\xB9";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x8A\x95";
-            break;
-          case 0xAC :
-            return "\xEB\x8A\xB1";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x8B\x8D";
-            break;
-          case 0xA4 :
-            return "\xEB\x8B\xA9";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x8C\x85";
-            break;
-          case 0x9C :
-            return "\xEB\x8C\xA1";
-            break;
-          case 0xB8 :
-            return "\xEB\x8C\xBD";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x8D\x99";
-            break;
-          case 0xB0 :
-            return "\xEB\x8D\xB5";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x8E\x91";
-            break;
-          case 0xA8 :
-            return "\xEB\x8E\xAD";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x8F\x89";
-            break;
-          case 0xA0 :
-            return "\xEB\x8F\xA5";
-            break;
-          case 0xBC :
-            return "\xEB\x90\x81";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x90\x9D";
-            break;
-          case 0xB4 :
-            return "\xEB\x90\xB9";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x91\x95";
-            break;
-          case 0xAC :
-            return "\xEB\x91\xB1";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x92\x8D";
-            break;
-          case 0xA4 :
-            return "\xEB\x92\xA9";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x93\x85";
-            break;
-          case 0x9C :
-            return "\xEB\x93\xA1";
-            break;
-          case 0xB8 :
-            return "\xEB\x93\xBD";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x94\x99";
-            break;
-          case 0xB0 :
-            return "\xEB\x94\xB5";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x95\x91";
-            break;
-          case 0xA8 :
-            return "\xEB\x95\xAD";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x96\x89";
-            break;
-          case 0xA0 :
-            return "\xEB\x96\xA5";
-            break;
-          case 0xBC :
-            return "\xEB\x97\x81";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x97\x9D";
-            break;
-          case 0xB4 :
-            return "\xEB\x97\xB9";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x98\x95";
-            break;
-          case 0xAC :
-            return "\xEB\x98\xB1";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x99\x8D";
-            break;
-          case 0xA4 :
-            return "\xEB\x99\xA9";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x9A\x85";
-            break;
-          case 0x9C :
-            return "\xEB\x9A\xA1";
-            break;
-          case 0xB8 :
-            return "\xEB\x9A\xBD";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x9B\x99";
-            break;
-          case 0xB0 :
-            return "\xEB\x9B\xB5";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x9C\x91";
-            break;
-          case 0xA8 :
-            return "\xEB\x9C\xAD";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x9D\x89";
-            break;
-          case 0xA0 :
-            return "\xEB\x9D\xA5";
-            break;
-          case 0xBC :
-            return "\xEB\x9E\x81";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x9E\x9D";
-            break;
-          case 0xB4 :
-            return "\xEB\x9E\xB9";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x9F\x95";
-            break;
-          case 0xAC :
-            return "\xEB\x9F\xB1";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA0\x8D";
-            break;
-          case 0xA4 :
-            return "\xEB\xA0\xA9";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA1\x85";
-            break;
-          case 0x9C :
-            return "\xEB\xA1\xA1";
-            break;
-          case 0xB8 :
-            return "\xEB\xA1\xBD";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA2\x99";
-            break;
-          case 0xB0 :
-            return "\xEB\xA2\xB5";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xA3\x91";
-            break;
-          case 0xA8 :
-            return "\xEB\xA3\xAD";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xA4\x89";
-            break;
-          case 0xA0 :
-            return "\xEB\xA4\xA5";
-            break;
-          case 0xBC :
-            return "\xEB\xA5\x81";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xA5\x9D";
-            break;
-          case 0xB4 :
-            return "\xEB\xA5\xB9";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xA6\x95";
-            break;
-          case 0xAC :
-            return "\xEB\xA6\xB1";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA7\x8D";
-            break;
-          case 0xA4 :
-            return "\xEB\xA7\xA9";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA8\x85";
-            break;
-          case 0x9C :
-            return "\xEB\xA8\xA1";
-            break;
-          case 0xB8 :
-            return "\xEB\xA8\xBD";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA9\x99";
-            break;
-          case 0xB0 :
-            return "\xEB\xA9\xB5";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xAA\x91";
-            break;
-          case 0xA8 :
-            return "\xEB\xAA\xAD";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xAB\x89";
-            break;
-          case 0xA0 :
-            return "\xEB\xAB\xA5";
-            break;
-          case 0xBC :
-            return "\xEB\xAC\x81";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xAC\x9D";
-            break;
-          case 0xB4 :
-            return "\xEB\xAC\xB9";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xAD\x95";
-            break;
-          case 0xAC :
-            return "\xEB\xAD\xB1";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xAE\x8D";
-            break;
-          case 0xA4 :
-            return "\xEB\xAE\xA9";
-            break;
-          }
-          break;
-        case 0xAF :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xAF\x85";
-            break;
-          case 0x9C :
-            return "\xEB\xAF\xA1";
-            break;
-          case 0xB8 :
-            return "\xEB\xAF\xBD";
-            break;
-          }
-          break;
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xB0\x99";
-            break;
-          case 0xB0 :
-            return "\xEB\xB0\xB5";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xB1\x91";
-            break;
-          case 0xA8 :
-            return "\xEB\xB1\xAD";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xB2\x89";
-            break;
-          case 0xA0 :
-            return "\xEB\xB2\xA5";
-            break;
-          case 0xBC :
-            return "\xEB\xB3\x81";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xB3\x9D";
-            break;
-          case 0xB4 :
-            return "\xEB\xB3\xB9";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xB4\x95";
-            break;
-          case 0xAC :
-            return "\xEB\xB4\xB1";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xB5\x8D";
-            break;
-          case 0xA4 :
-            return "\xEB\xB5\xA9";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xB6\x85";
-            break;
-          case 0x9C :
-            return "\xEB\xB6\xA1";
-            break;
-          case 0xB8 :
-            return "\xEB\xB6\xBD";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xB7\x99";
-            break;
-          case 0xB0 :
-            return "\xEB\xB7\xB5";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xB8\x91";
-            break;
-          case 0xA8 :
-            return "\xEB\xB8\xAD";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xB9\x89";
-            break;
-          case 0xA0 :
-            return "\xEB\xB9\xA5";
-            break;
-          case 0xBC :
-            return "\xEB\xBA\x81";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xBA\x9D";
-            break;
-          case 0xB4 :
-            return "\xEB\xBA\xB9";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xBB\x95";
-            break;
-          case 0xAC :
-            return "\xEB\xBB\xB1";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xBC\x8D";
-            break;
-          case 0xA4 :
-            return "\xEB\xBC\xA9";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xBD\x85";
-            break;
-          case 0x9C :
-            return "\xEB\xBD\xA1";
-            break;
-          case 0xB8 :
-            return "\xEB\xBD\xBD";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xBE\x99";
-            break;
-          case 0xB0 :
-            return "\xEB\xBE\xB5";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xBF\x91";
-            break;
-          case 0xA8 :
-            return "\xEB\xBF\xAD";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEC :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x80\x89";
-            break;
-          case 0xA0 :
-            return "\xEC\x80\xA5";
-            break;
-          case 0xBC :
-            return "\xEC\x81\x81";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x81\x9D";
-            break;
-          case 0xB4 :
-            return "\xEC\x81\xB9";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x82\x95";
-            break;
-          case 0xAC :
-            return "\xEC\x82\xB1";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x83\x8D";
-            break;
-          case 0xA4 :
-            return "\xEC\x83\xA9";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x84\x85";
-            break;
-          case 0x9C :
-            return "\xEC\x84\xA1";
-            break;
-          case 0xB8 :
-            return "\xEC\x84\xBD";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x85\x99";
-            break;
-          case 0xB0 :
-            return "\xEC\x85\xB5";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x86\x91";
-            break;
-          case 0xA8 :
-            return "\xEC\x86\xAD";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x87\x89";
-            break;
-          case 0xA0 :
-            return "\xEC\x87\xA5";
-            break;
-          case 0xBC :
-            return "\xEC\x88\x81";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x88\x9D";
-            break;
-          case 0xB4 :
-            return "\xEC\x88\xB9";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x89\x95";
-            break;
-          case 0xAC :
-            return "\xEC\x89\xB1";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x8A\x8D";
-            break;
-          case 0xA4 :
-            return "\xEC\x8A\xA9";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x8B\x85";
-            break;
-          case 0x9C :
-            return "\xEC\x8B\xA1";
-            break;
-          case 0xB8 :
-            return "\xEC\x8B\xBD";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x8C\x99";
-            break;
-          case 0xB0 :
-            return "\xEC\x8C\xB5";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x8D\x91";
-            break;
-          case 0xA8 :
-            return "\xEC\x8D\xAD";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x8E\x89";
-            break;
-          case 0xA0 :
-            return "\xEC\x8E\xA5";
-            break;
-          case 0xBC :
-            return "\xEC\x8F\x81";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x8F\x9D";
-            break;
-          case 0xB4 :
-            return "\xEC\x8F\xB9";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x90\x95";
-            break;
-          case 0xAC :
-            return "\xEC\x90\xB1";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x91\x8D";
-            break;
-          case 0xA4 :
-            return "\xEC\x91\xA9";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x92\x85";
-            break;
-          case 0x9C :
-            return "\xEC\x92\xA1";
-            break;
-          case 0xB8 :
-            return "\xEC\x92\xBD";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x93\x99";
-            break;
-          case 0xB0 :
-            return "\xEC\x93\xB5";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x94\x91";
-            break;
-          case 0xA8 :
-            return "\xEC\x94\xAD";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x95\x89";
-            break;
-          case 0xA0 :
-            return "\xEC\x95\xA5";
-            break;
-          case 0xBC :
-            return "\xEC\x96\x81";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x96\x9D";
-            break;
-          case 0xB4 :
-            return "\xEC\x96\xB9";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x97\x95";
-            break;
-          case 0xAC :
-            return "\xEC\x97\xB1";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x98\x8D";
-            break;
-          case 0xA4 :
-            return "\xEC\x98\xA9";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x99\x85";
-            break;
-          case 0x9C :
-            return "\xEC\x99\xA1";
-            break;
-          case 0xB8 :
-            return "\xEC\x99\xBD";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x9A\x99";
-            break;
-          case 0xB0 :
-            return "\xEC\x9A\xB5";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x9B\x91";
-            break;
-          case 0xA8 :
-            return "\xEC\x9B\xAD";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x9C\x89";
-            break;
-          case 0xA0 :
-            return "\xEC\x9C\xA5";
-            break;
-          case 0xBC :
-            return "\xEC\x9D\x81";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x9D\x9D";
-            break;
-          case 0xB4 :
-            return "\xEC\x9D\xB9";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x9E\x95";
-            break;
-          case 0xAC :
-            return "\xEC\x9E\xB1";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x9F\x8D";
-            break;
-          case 0xA4 :
-            return "\xEC\x9F\xA9";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xA0\x85";
-            break;
-          case 0x9C :
-            return "\xEC\xA0\xA1";
-            break;
-          case 0xB8 :
-            return "\xEC\xA0\xBD";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xA1\x99";
-            break;
-          case 0xB0 :
-            return "\xEC\xA1\xB5";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xA2\x91";
-            break;
-          case 0xA8 :
-            return "\xEC\xA2\xAD";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xA3\x89";
-            break;
-          case 0xA0 :
-            return "\xEC\xA3\xA5";
-            break;
-          case 0xBC :
-            return "\xEC\xA4\x81";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xA4\x9D";
-            break;
-          case 0xB4 :
-            return "\xEC\xA4\xB9";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xA5\x95";
-            break;
-          case 0xAC :
-            return "\xEC\xA5\xB1";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xA6\x8D";
-            break;
-          case 0xA4 :
-            return "\xEC\xA6\xA9";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xA7\x85";
-            break;
-          case 0x9C :
-            return "\xEC\xA7\xA1";
-            break;
-          case 0xB8 :
-            return "\xEC\xA7\xBD";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xA8\x99";
-            break;
-          case 0xB0 :
-            return "\xEC\xA8\xB5";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xA9\x91";
-            break;
-          case 0xA8 :
-            return "\xEC\xA9\xAD";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xAA\x89";
-            break;
-          case 0xA0 :
-            return "\xEC\xAA\xA5";
-            break;
-          case 0xBC :
-            return "\xEC\xAB\x81";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xAB\x9D";
-            break;
-          case 0xB4 :
-            return "\xEC\xAB\xB9";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xAC\x95";
-            break;
-          case 0xAC :
-            return "\xEC\xAC\xB1";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xAD\x8D";
-            break;
-          case 0xA4 :
-            return "\xEC\xAD\xA9";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xAE\x85";
-            break;
-          case 0x9C :
-            return "\xEC\xAE\xA1";
-            break;
-          case 0xB8 :
-            return "\xEC\xAE\xBD";
-            break;
-          }
-          break;
-        case 0xAF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xAF\x99";
-            break;
-          case 0xB0 :
-            return "\xEC\xAF\xB5";
-            break;
-          }
-          break;
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xB0\x91";
-            break;
-          case 0xA8 :
-            return "\xEC\xB0\xAD";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xB1\x89";
-            break;
-          case 0xA0 :
-            return "\xEC\xB1\xA5";
-            break;
-          case 0xBC :
-            return "\xEC\xB2\x81";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xB2\x9D";
-            break;
-          case 0xB4 :
-            return "\xEC\xB2\xB9";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xB3\x95";
-            break;
-          case 0xAC :
-            return "\xEC\xB3\xB1";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xB4\x8D";
-            break;
-          case 0xA4 :
-            return "\xEC\xB4\xA9";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xB5\x85";
-            break;
-          case 0x9C :
-            return "\xEC\xB5\xA1";
-            break;
-          case 0xB8 :
-            return "\xEC\xB5\xBD";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xB6\x99";
-            break;
-          case 0xB0 :
-            return "\xEC\xB6\xB5";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xB7\x91";
-            break;
-          case 0xA8 :
-            return "\xEC\xB7\xAD";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xB8\x89";
-            break;
-          case 0xA0 :
-            return "\xEC\xB8\xA5";
-            break;
-          case 0xBC :
-            return "\xEC\xB9\x81";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xB9\x9D";
-            break;
-          case 0xB4 :
-            return "\xEC\xB9\xB9";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xBA\x95";
-            break;
-          case 0xAC :
-            return "\xEC\xBA\xB1";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xBB\x8D";
-            break;
-          case 0xA4 :
-            return "\xEC\xBB\xA9";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xBC\x85";
-            break;
-          case 0x9C :
-            return "\xEC\xBC\xA1";
-            break;
-          case 0xB8 :
-            return "\xEC\xBC\xBD";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xBD\x99";
-            break;
-          case 0xB0 :
-            return "\xEC\xBD\xB5";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xBE\x91";
-            break;
-          case 0xA8 :
-            return "\xEC\xBE\xAD";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xBF\x89";
-            break;
-          case 0xA0 :
-            return "\xEC\xBF\xA5";
-            break;
-          case 0xBC :
-            return "\xED\x80\x81";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xED :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x80\x9D";
-            break;
-          case 0xB4 :
-            return "\xED\x80\xB9";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x81\x95";
-            break;
-          case 0xAC :
-            return "\xED\x81\xB1";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x82\x8D";
-            break;
-          case 0xA4 :
-            return "\xED\x82\xA9";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x83\x85";
-            break;
-          case 0x9C :
-            return "\xED\x83\xA1";
-            break;
-          case 0xB8 :
-            return "\xED\x83\xBD";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x84\x99";
-            break;
-          case 0xB0 :
-            return "\xED\x84\xB5";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x85\x91";
-            break;
-          case 0xA8 :
-            return "\xED\x85\xAD";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x86\x89";
-            break;
-          case 0xA0 :
-            return "\xED\x86\xA5";
-            break;
-          case 0xBC :
-            return "\xED\x87\x81";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x87\x9D";
-            break;
-          case 0xB4 :
-            return "\xED\x87\xB9";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x88\x95";
-            break;
-          case 0xAC :
-            return "\xED\x88\xB1";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x89\x8D";
-            break;
-          case 0xA4 :
-            return "\xED\x89\xA9";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x8A\x85";
-            break;
-          case 0x9C :
-            return "\xED\x8A\xA1";
-            break;
-          case 0xB8 :
-            return "\xED\x8A\xBD";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x8B\x99";
-            break;
-          case 0xB0 :
-            return "\xED\x8B\xB5";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x8C\x91";
-            break;
-          case 0xA8 :
-            return "\xED\x8C\xAD";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x8D\x89";
-            break;
-          case 0xA0 :
-            return "\xED\x8D\xA5";
-            break;
-          case 0xBC :
-            return "\xED\x8E\x81";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x8E\x9D";
-            break;
-          case 0xB4 :
-            return "\xED\x8E\xB9";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x8F\x95";
-            break;
-          case 0xAC :
-            return "\xED\x8F\xB1";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x90\x8D";
-            break;
-          case 0xA4 :
-            return "\xED\x90\xA9";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x91\x85";
-            break;
-          case 0x9C :
-            return "\xED\x91\xA1";
-            break;
-          case 0xB8 :
-            return "\xED\x91\xBD";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x92\x99";
-            break;
-          case 0xB0 :
-            return "\xED\x92\xB5";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x93\x91";
-            break;
-          case 0xA8 :
-            return "\xED\x93\xAD";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x94\x89";
-            break;
-          case 0xA0 :
-            return "\xED\x94\xA5";
-            break;
-          case 0xBC :
-            return "\xED\x95\x81";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x95\x9D";
-            break;
-          case 0xB4 :
-            return "\xED\x95\xB9";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x96\x95";
-            break;
-          case 0xAC :
-            return "\xED\x96\xB1";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x97\x8D";
-            break;
-          case 0xA4 :
-            return "\xED\x97\xA9";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x98\x85";
-            break;
-          case 0x9C :
-            return "\xED\x98\xA1";
-            break;
-          case 0xB8 :
-            return "\xED\x98\xBD";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x99\x99";
-            break;
-          case 0xB0 :
-            return "\xED\x99\xB5";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x9A\x91";
-            break;
-          case 0xA8 :
-            return "\xED\x9A\xAD";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x9B\x89";
-            break;
-          case 0xA0 :
-            return "\xED\x9B\xA5";
-            break;
-          case 0xBC :
-            return "\xED\x9C\x81";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x9C\x9D";
-            break;
-          case 0xB4 :
-            return "\xED\x9C\xB9";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x9D\x95";
-            break;
-          case 0xAC :
-            return "\xED\x9D\xB1";
-            break;
-          }
-          break;
-        case 0x9E :
-          if (prefix[2] == 0x88) {
-            return "\xED\x9E\x8D";
-          }
-          break;
-        }
-        break;
-      }
-      break;
-    case 0xAD :
-      switch (prefix[0]) {
-      case 0xEA :
-        switch (prefix[1]) {
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB0\x86";
-            break;
-          case 0x9C :
-            return "\xEA\xB0\xA2";
-            break;
-          case 0xB8 :
-            return "\xEA\xB0\xBE";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB1\x9A";
-            break;
-          case 0xB0 :
-            return "\xEA\xB1\xB6";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB2\x92";
-            break;
-          case 0xA8 :
-            return "\xEA\xB2\xAE";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xB3\x8A";
-            break;
-          case 0xA0 :
-            return "\xEA\xB3\xA6";
-            break;
-          case 0xBC :
-            return "\xEA\xB4\x82";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xB4\x9E";
-            break;
-          case 0xB4 :
-            return "\xEA\xB4\xBA";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xB5\x96";
-            break;
-          case 0xAC :
-            return "\xEA\xB5\xB2";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xB6\x8E";
-            break;
-          case 0xA4 :
-            return "\xEA\xB6\xAA";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB7\x86";
-            break;
-          case 0x9C :
-            return "\xEA\xB7\xA2";
-            break;
-          case 0xB8 :
-            return "\xEA\xB7\xBE";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB8\x9A";
-            break;
-          case 0xB0 :
-            return "\xEA\xB8\xB6";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB9\x92";
-            break;
-          case 0xA8 :
-            return "\xEA\xB9\xAE";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xBA\x8A";
-            break;
-          case 0xA0 :
-            return "\xEA\xBA\xA6";
-            break;
-          case 0xBC :
-            return "\xEA\xBB\x82";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xBB\x9E";
-            break;
-          case 0xB4 :
-            return "\xEA\xBB\xBA";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xBC\x96";
-            break;
-          case 0xAC :
-            return "\xEA\xBC\xB2";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xBD\x8E";
-            break;
-          case 0xA4 :
-            return "\xEA\xBD\xAA";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xBE\x86";
-            break;
-          case 0x9C :
-            return "\xEA\xBE\xA2";
-            break;
-          case 0xB8 :
-            return "\xEA\xBE\xBE";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xBF\x9A";
-            break;
-          case 0xB0 :
-            return "\xEA\xBF\xB6";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEB :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x80\x92";
-            break;
-          case 0xA8 :
-            return "\xEB\x80\xAE";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x81\x8A";
-            break;
-          case 0xA0 :
-            return "\xEB\x81\xA6";
-            break;
-          case 0xBC :
-            return "\xEB\x82\x82";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x82\x9E";
-            break;
-          case 0xB4 :
-            return "\xEB\x82\xBA";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x83\x96";
-            break;
-          case 0xAC :
-            return "\xEB\x83\xB2";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x84\x8E";
-            break;
-          case 0xA4 :
-            return "\xEB\x84\xAA";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x85\x86";
-            break;
-          case 0x9C :
-            return "\xEB\x85\xA2";
-            break;
-          case 0xB8 :
-            return "\xEB\x85\xBE";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x86\x9A";
-            break;
-          case 0xB0 :
-            return "\xEB\x86\xB6";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x87\x92";
-            break;
-          case 0xA8 :
-            return "\xEB\x87\xAE";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x88\x8A";
-            break;
-          case 0xA0 :
-            return "\xEB\x88\xA6";
-            break;
-          case 0xBC :
-            return "\xEB\x89\x82";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x89\x9E";
-            break;
-          case 0xB4 :
-            return "\xEB\x89\xBA";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x8A\x96";
-            break;
-          case 0xAC :
-            return "\xEB\x8A\xB2";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x8B\x8E";
-            break;
-          case 0xA4 :
-            return "\xEB\x8B\xAA";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x8C\x86";
-            break;
-          case 0x9C :
-            return "\xEB\x8C\xA2";
-            break;
-          case 0xB8 :
-            return "\xEB\x8C\xBE";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x8D\x9A";
-            break;
-          case 0xB0 :
-            return "\xEB\x8D\xB6";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x8E\x92";
-            break;
-          case 0xA8 :
-            return "\xEB\x8E\xAE";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x8F\x8A";
-            break;
-          case 0xA0 :
-            return "\xEB\x8F\xA6";
-            break;
-          case 0xBC :
-            return "\xEB\x90\x82";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x90\x9E";
-            break;
-          case 0xB4 :
-            return "\xEB\x90\xBA";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x91\x96";
-            break;
-          case 0xAC :
-            return "\xEB\x91\xB2";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x92\x8E";
-            break;
-          case 0xA4 :
-            return "\xEB\x92\xAA";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x93\x86";
-            break;
-          case 0x9C :
-            return "\xEB\x93\xA2";
-            break;
-          case 0xB8 :
-            return "\xEB\x93\xBE";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x94\x9A";
-            break;
-          case 0xB0 :
-            return "\xEB\x94\xB6";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x95\x92";
-            break;
-          case 0xA8 :
-            return "\xEB\x95\xAE";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x96\x8A";
-            break;
-          case 0xA0 :
-            return "\xEB\x96\xA6";
-            break;
-          case 0xBC :
-            return "\xEB\x97\x82";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x97\x9E";
-            break;
-          case 0xB4 :
-            return "\xEB\x97\xBA";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x98\x96";
-            break;
-          case 0xAC :
-            return "\xEB\x98\xB2";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x99\x8E";
-            break;
-          case 0xA4 :
-            return "\xEB\x99\xAA";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x9A\x86";
-            break;
-          case 0x9C :
-            return "\xEB\x9A\xA2";
-            break;
-          case 0xB8 :
-            return "\xEB\x9A\xBE";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x9B\x9A";
-            break;
-          case 0xB0 :
-            return "\xEB\x9B\xB6";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x9C\x92";
-            break;
-          case 0xA8 :
-            return "\xEB\x9C\xAE";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x9D\x8A";
-            break;
-          case 0xA0 :
-            return "\xEB\x9D\xA6";
-            break;
-          case 0xBC :
-            return "\xEB\x9E\x82";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x9E\x9E";
-            break;
-          case 0xB4 :
-            return "\xEB\x9E\xBA";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x9F\x96";
-            break;
-          case 0xAC :
-            return "\xEB\x9F\xB2";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA0\x8E";
-            break;
-          case 0xA4 :
-            return "\xEB\xA0\xAA";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA1\x86";
-            break;
-          case 0x9C :
-            return "\xEB\xA1\xA2";
-            break;
-          case 0xB8 :
-            return "\xEB\xA1\xBE";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA2\x9A";
-            break;
-          case 0xB0 :
-            return "\xEB\xA2\xB6";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xA3\x92";
-            break;
-          case 0xA8 :
-            return "\xEB\xA3\xAE";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xA4\x8A";
-            break;
-          case 0xA0 :
-            return "\xEB\xA4\xA6";
-            break;
-          case 0xBC :
-            return "\xEB\xA5\x82";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xA5\x9E";
-            break;
-          case 0xB4 :
-            return "\xEB\xA5\xBA";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xA6\x96";
-            break;
-          case 0xAC :
-            return "\xEB\xA6\xB2";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA7\x8E";
-            break;
-          case 0xA4 :
-            return "\xEB\xA7\xAA";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA8\x86";
-            break;
-          case 0x9C :
-            return "\xEB\xA8\xA2";
-            break;
-          case 0xB8 :
-            return "\xEB\xA8\xBE";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA9\x9A";
-            break;
-          case 0xB0 :
-            return "\xEB\xA9\xB6";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xAA\x92";
-            break;
-          case 0xA8 :
-            return "\xEB\xAA\xAE";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xAB\x8A";
-            break;
-          case 0xA0 :
-            return "\xEB\xAB\xA6";
-            break;
-          case 0xBC :
-            return "\xEB\xAC\x82";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xAC\x9E";
-            break;
-          case 0xB4 :
-            return "\xEB\xAC\xBA";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xAD\x96";
-            break;
-          case 0xAC :
-            return "\xEB\xAD\xB2";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xAE\x8E";
-            break;
-          case 0xA4 :
-            return "\xEB\xAE\xAA";
-            break;
-          }
-          break;
-        case 0xAF :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xAF\x86";
-            break;
-          case 0x9C :
-            return "\xEB\xAF\xA2";
-            break;
-          case 0xB8 :
-            return "\xEB\xAF\xBE";
-            break;
-          }
-          break;
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xB0\x9A";
-            break;
-          case 0xB0 :
-            return "\xEB\xB0\xB6";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xB1\x92";
-            break;
-          case 0xA8 :
-            return "\xEB\xB1\xAE";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xB2\x8A";
-            break;
-          case 0xA0 :
-            return "\xEB\xB2\xA6";
-            break;
-          case 0xBC :
-            return "\xEB\xB3\x82";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xB3\x9E";
-            break;
-          case 0xB4 :
-            return "\xEB\xB3\xBA";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xB4\x96";
-            break;
-          case 0xAC :
-            return "\xEB\xB4\xB2";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xB5\x8E";
-            break;
-          case 0xA4 :
-            return "\xEB\xB5\xAA";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xB6\x86";
-            break;
-          case 0x9C :
-            return "\xEB\xB6\xA2";
-            break;
-          case 0xB8 :
-            return "\xEB\xB6\xBE";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xB7\x9A";
-            break;
-          case 0xB0 :
-            return "\xEB\xB7\xB6";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xB8\x92";
-            break;
-          case 0xA8 :
-            return "\xEB\xB8\xAE";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xB9\x8A";
-            break;
-          case 0xA0 :
-            return "\xEB\xB9\xA6";
-            break;
-          case 0xBC :
-            return "\xEB\xBA\x82";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xBA\x9E";
-            break;
-          case 0xB4 :
-            return "\xEB\xBA\xBA";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xBB\x96";
-            break;
-          case 0xAC :
-            return "\xEB\xBB\xB2";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xBC\x8E";
-            break;
-          case 0xA4 :
-            return "\xEB\xBC\xAA";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xBD\x86";
-            break;
-          case 0x9C :
-            return "\xEB\xBD\xA2";
-            break;
-          case 0xB8 :
-            return "\xEB\xBD\xBE";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xBE\x9A";
-            break;
-          case 0xB0 :
-            return "\xEB\xBE\xB6";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xBF\x92";
-            break;
-          case 0xA8 :
-            return "\xEB\xBF\xAE";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEC :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x80\x8A";
-            break;
-          case 0xA0 :
-            return "\xEC\x80\xA6";
-            break;
-          case 0xBC :
-            return "\xEC\x81\x82";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x81\x9E";
-            break;
-          case 0xB4 :
-            return "\xEC\x81\xBA";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x82\x96";
-            break;
-          case 0xAC :
-            return "\xEC\x82\xB2";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x83\x8E";
-            break;
-          case 0xA4 :
-            return "\xEC\x83\xAA";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x84\x86";
-            break;
-          case 0x9C :
-            return "\xEC\x84\xA2";
-            break;
-          case 0xB8 :
-            return "\xEC\x84\xBE";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x85\x9A";
-            break;
-          case 0xB0 :
-            return "\xEC\x85\xB6";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x86\x92";
-            break;
-          case 0xA8 :
-            return "\xEC\x86\xAE";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x87\x8A";
-            break;
-          case 0xA0 :
-            return "\xEC\x87\xA6";
-            break;
-          case 0xBC :
-            return "\xEC\x88\x82";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x88\x9E";
-            break;
-          case 0xB4 :
-            return "\xEC\x88\xBA";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x89\x96";
-            break;
-          case 0xAC :
-            return "\xEC\x89\xB2";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x8A\x8E";
-            break;
-          case 0xA4 :
-            return "\xEC\x8A\xAA";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x8B\x86";
-            break;
-          case 0x9C :
-            return "\xEC\x8B\xA2";
-            break;
-          case 0xB8 :
-            return "\xEC\x8B\xBE";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x8C\x9A";
-            break;
-          case 0xB0 :
-            return "\xEC\x8C\xB6";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x8D\x92";
-            break;
-          case 0xA8 :
-            return "\xEC\x8D\xAE";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x8E\x8A";
-            break;
-          case 0xA0 :
-            return "\xEC\x8E\xA6";
-            break;
-          case 0xBC :
-            return "\xEC\x8F\x82";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x8F\x9E";
-            break;
-          case 0xB4 :
-            return "\xEC\x8F\xBA";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x90\x96";
-            break;
-          case 0xAC :
-            return "\xEC\x90\xB2";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x91\x8E";
-            break;
-          case 0xA4 :
-            return "\xEC\x91\xAA";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x92\x86";
-            break;
-          case 0x9C :
-            return "\xEC\x92\xA2";
-            break;
-          case 0xB8 :
-            return "\xEC\x92\xBE";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x93\x9A";
-            break;
-          case 0xB0 :
-            return "\xEC\x93\xB6";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x94\x92";
-            break;
-          case 0xA8 :
-            return "\xEC\x94\xAE";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x95\x8A";
-            break;
-          case 0xA0 :
-            return "\xEC\x95\xA6";
-            break;
-          case 0xBC :
-            return "\xEC\x96\x82";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x96\x9E";
-            break;
-          case 0xB4 :
-            return "\xEC\x96\xBA";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x97\x96";
-            break;
-          case 0xAC :
-            return "\xEC\x97\xB2";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x98\x8E";
-            break;
-          case 0xA4 :
-            return "\xEC\x98\xAA";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x99\x86";
-            break;
-          case 0x9C :
-            return "\xEC\x99\xA2";
-            break;
-          case 0xB8 :
-            return "\xEC\x99\xBE";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x9A\x9A";
-            break;
-          case 0xB0 :
-            return "\xEC\x9A\xB6";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x9B\x92";
-            break;
-          case 0xA8 :
-            return "\xEC\x9B\xAE";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x9C\x8A";
-            break;
-          case 0xA0 :
-            return "\xEC\x9C\xA6";
-            break;
-          case 0xBC :
-            return "\xEC\x9D\x82";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x9D\x9E";
-            break;
-          case 0xB4 :
-            return "\xEC\x9D\xBA";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x9E\x96";
-            break;
-          case 0xAC :
-            return "\xEC\x9E\xB2";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x9F\x8E";
-            break;
-          case 0xA4 :
-            return "\xEC\x9F\xAA";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xA0\x86";
-            break;
-          case 0x9C :
-            return "\xEC\xA0\xA2";
-            break;
-          case 0xB8 :
-            return "\xEC\xA0\xBE";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xA1\x9A";
-            break;
-          case 0xB0 :
-            return "\xEC\xA1\xB6";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xA2\x92";
-            break;
-          case 0xA8 :
-            return "\xEC\xA2\xAE";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xA3\x8A";
-            break;
-          case 0xA0 :
-            return "\xEC\xA3\xA6";
-            break;
-          case 0xBC :
-            return "\xEC\xA4\x82";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xA4\x9E";
-            break;
-          case 0xB4 :
-            return "\xEC\xA4\xBA";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xA5\x96";
-            break;
-          case 0xAC :
-            return "\xEC\xA5\xB2";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xA6\x8E";
-            break;
-          case 0xA4 :
-            return "\xEC\xA6\xAA";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xA7\x86";
-            break;
-          case 0x9C :
-            return "\xEC\xA7\xA2";
-            break;
-          case 0xB8 :
-            return "\xEC\xA7\xBE";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xA8\x9A";
-            break;
-          case 0xB0 :
-            return "\xEC\xA8\xB6";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xA9\x92";
-            break;
-          case 0xA8 :
-            return "\xEC\xA9\xAE";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xAA\x8A";
-            break;
-          case 0xA0 :
-            return "\xEC\xAA\xA6";
-            break;
-          case 0xBC :
-            return "\xEC\xAB\x82";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xAB\x9E";
-            break;
-          case 0xB4 :
-            return "\xEC\xAB\xBA";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xAC\x96";
-            break;
-          case 0xAC :
-            return "\xEC\xAC\xB2";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xAD\x8E";
-            break;
-          case 0xA4 :
-            return "\xEC\xAD\xAA";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xAE\x86";
-            break;
-          case 0x9C :
-            return "\xEC\xAE\xA2";
-            break;
-          case 0xB8 :
-            return "\xEC\xAE\xBE";
-            break;
-          }
-          break;
-        case 0xAF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xAF\x9A";
-            break;
-          case 0xB0 :
-            return "\xEC\xAF\xB6";
-            break;
-          }
-          break;
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xB0\x92";
-            break;
-          case 0xA8 :
-            return "\xEC\xB0\xAE";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xB1\x8A";
-            break;
-          case 0xA0 :
-            return "\xEC\xB1\xA6";
-            break;
-          case 0xBC :
-            return "\xEC\xB2\x82";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xB2\x9E";
-            break;
-          case 0xB4 :
-            return "\xEC\xB2\xBA";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xB3\x96";
-            break;
-          case 0xAC :
-            return "\xEC\xB3\xB2";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xB4\x8E";
-            break;
-          case 0xA4 :
-            return "\xEC\xB4\xAA";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xB5\x86";
-            break;
-          case 0x9C :
-            return "\xEC\xB5\xA2";
-            break;
-          case 0xB8 :
-            return "\xEC\xB5\xBE";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xB6\x9A";
-            break;
-          case 0xB0 :
-            return "\xEC\xB6\xB6";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xB7\x92";
-            break;
-          case 0xA8 :
-            return "\xEC\xB7\xAE";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xB8\x8A";
-            break;
-          case 0xA0 :
-            return "\xEC\xB8\xA6";
-            break;
-          case 0xBC :
-            return "\xEC\xB9\x82";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xB9\x9E";
-            break;
-          case 0xB4 :
-            return "\xEC\xB9\xBA";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xBA\x96";
-            break;
-          case 0xAC :
-            return "\xEC\xBA\xB2";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xBB\x8E";
-            break;
-          case 0xA4 :
-            return "\xEC\xBB\xAA";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xBC\x86";
-            break;
-          case 0x9C :
-            return "\xEC\xBC\xA2";
-            break;
-          case 0xB8 :
-            return "\xEC\xBC\xBE";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xBD\x9A";
-            break;
-          case 0xB0 :
-            return "\xEC\xBD\xB6";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xBE\x92";
-            break;
-          case 0xA8 :
-            return "\xEC\xBE\xAE";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xBF\x8A";
-            break;
-          case 0xA0 :
-            return "\xEC\xBF\xA6";
-            break;
-          case 0xBC :
-            return "\xED\x80\x82";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xED :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x80\x9E";
-            break;
-          case 0xB4 :
-            return "\xED\x80\xBA";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x81\x96";
-            break;
-          case 0xAC :
-            return "\xED\x81\xB2";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x82\x8E";
-            break;
-          case 0xA4 :
-            return "\xED\x82\xAA";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x83\x86";
-            break;
-          case 0x9C :
-            return "\xED\x83\xA2";
-            break;
-          case 0xB8 :
-            return "\xED\x83\xBE";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x84\x9A";
-            break;
-          case 0xB0 :
-            return "\xED\x84\xB6";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x85\x92";
-            break;
-          case 0xA8 :
-            return "\xED\x85\xAE";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x86\x8A";
-            break;
-          case 0xA0 :
-            return "\xED\x86\xA6";
-            break;
-          case 0xBC :
-            return "\xED\x87\x82";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x87\x9E";
-            break;
-          case 0xB4 :
-            return "\xED\x87\xBA";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x88\x96";
-            break;
-          case 0xAC :
-            return "\xED\x88\xB2";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x89\x8E";
-            break;
-          case 0xA4 :
-            return "\xED\x89\xAA";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x8A\x86";
-            break;
-          case 0x9C :
-            return "\xED\x8A\xA2";
-            break;
-          case 0xB8 :
-            return "\xED\x8A\xBE";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x8B\x9A";
-            break;
-          case 0xB0 :
-            return "\xED\x8B\xB6";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x8C\x92";
-            break;
-          case 0xA8 :
-            return "\xED\x8C\xAE";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x8D\x8A";
-            break;
-          case 0xA0 :
-            return "\xED\x8D\xA6";
-            break;
-          case 0xBC :
-            return "\xED\x8E\x82";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x8E\x9E";
-            break;
-          case 0xB4 :
-            return "\xED\x8E\xBA";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x8F\x96";
-            break;
-          case 0xAC :
-            return "\xED\x8F\xB2";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x90\x8E";
-            break;
-          case 0xA4 :
-            return "\xED\x90\xAA";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x91\x86";
-            break;
-          case 0x9C :
-            return "\xED\x91\xA2";
-            break;
-          case 0xB8 :
-            return "\xED\x91\xBE";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x92\x9A";
-            break;
-          case 0xB0 :
-            return "\xED\x92\xB6";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x93\x92";
-            break;
-          case 0xA8 :
-            return "\xED\x93\xAE";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x94\x8A";
-            break;
-          case 0xA0 :
-            return "\xED\x94\xA6";
-            break;
-          case 0xBC :
-            return "\xED\x95\x82";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x95\x9E";
-            break;
-          case 0xB4 :
-            return "\xED\x95\xBA";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x96\x96";
-            break;
-          case 0xAC :
-            return "\xED\x96\xB2";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x97\x8E";
-            break;
-          case 0xA4 :
-            return "\xED\x97\xAA";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x98\x86";
-            break;
-          case 0x9C :
-            return "\xED\x98\xA2";
-            break;
-          case 0xB8 :
-            return "\xED\x98\xBE";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x99\x9A";
-            break;
-          case 0xB0 :
-            return "\xED\x99\xB6";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x9A\x92";
-            break;
-          case 0xA8 :
-            return "\xED\x9A\xAE";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x9B\x8A";
-            break;
-          case 0xA0 :
-            return "\xED\x9B\xA6";
-            break;
-          case 0xBC :
-            return "\xED\x9C\x82";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x9C\x9E";
-            break;
-          case 0xB4 :
-            return "\xED\x9C\xBA";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x9D\x96";
-            break;
-          case 0xAC :
-            return "\xED\x9D\xB2";
-            break;
-          }
-          break;
-        case 0x9E :
-          if (prefix[2] == 0x88) {
-            return "\xED\x9E\x8E";
-          }
-          break;
-        }
-        break;
-      }
-      break;
-    case 0xAE :
-      switch (prefix[0]) {
-      case 0xEA :
-        switch (prefix[1]) {
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB0\x87";
-            break;
-          case 0x9C :
-            return "\xEA\xB0\xA3";
-            break;
-          case 0xB8 :
-            return "\xEA\xB0\xBF";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB1\x9B";
-            break;
-          case 0xB0 :
-            return "\xEA\xB1\xB7";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB2\x93";
-            break;
-          case 0xA8 :
-            return "\xEA\xB2\xAF";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xB3\x8B";
-            break;
-          case 0xA0 :
-            return "\xEA\xB3\xA7";
-            break;
-          case 0xBC :
-            return "\xEA\xB4\x83";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xB4\x9F";
-            break;
-          case 0xB4 :
-            return "\xEA\xB4\xBB";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xB5\x97";
-            break;
-          case 0xAC :
-            return "\xEA\xB5\xB3";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xB6\x8F";
-            break;
-          case 0xA4 :
-            return "\xEA\xB6\xAB";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB7\x87";
-            break;
-          case 0x9C :
-            return "\xEA\xB7\xA3";
-            break;
-          case 0xB8 :
-            return "\xEA\xB7\xBF";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB8\x9B";
-            break;
-          case 0xB0 :
-            return "\xEA\xB8\xB7";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB9\x93";
-            break;
-          case 0xA8 :
-            return "\xEA\xB9\xAF";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xBA\x8B";
-            break;
-          case 0xA0 :
-            return "\xEA\xBA\xA7";
-            break;
-          case 0xBC :
-            return "\xEA\xBB\x83";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xBB\x9F";
-            break;
-          case 0xB4 :
-            return "\xEA\xBB\xBB";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xBC\x97";
-            break;
-          case 0xAC :
-            return "\xEA\xBC\xB3";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xBD\x8F";
-            break;
-          case 0xA4 :
-            return "\xEA\xBD\xAB";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xBE\x87";
-            break;
-          case 0x9C :
-            return "\xEA\xBE\xA3";
-            break;
-          case 0xB8 :
-            return "\xEA\xBE\xBF";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xBF\x9B";
-            break;
-          case 0xB0 :
-            return "\xEA\xBF\xB7";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEB :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x80\x93";
-            break;
-          case 0xA8 :
-            return "\xEB\x80\xAF";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x81\x8B";
-            break;
-          case 0xA0 :
-            return "\xEB\x81\xA7";
-            break;
-          case 0xBC :
-            return "\xEB\x82\x83";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x82\x9F";
-            break;
-          case 0xB4 :
-            return "\xEB\x82\xBB";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x83\x97";
-            break;
-          case 0xAC :
-            return "\xEB\x83\xB3";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x84\x8F";
-            break;
-          case 0xA4 :
-            return "\xEB\x84\xAB";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x85\x87";
-            break;
-          case 0x9C :
-            return "\xEB\x85\xA3";
-            break;
-          case 0xB8 :
-            return "\xEB\x85\xBF";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x86\x9B";
-            break;
-          case 0xB0 :
-            return "\xEB\x86\xB7";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x87\x93";
-            break;
-          case 0xA8 :
-            return "\xEB\x87\xAF";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x88\x8B";
-            break;
-          case 0xA0 :
-            return "\xEB\x88\xA7";
-            break;
-          case 0xBC :
-            return "\xEB\x89\x83";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x89\x9F";
-            break;
-          case 0xB4 :
-            return "\xEB\x89\xBB";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x8A\x97";
-            break;
-          case 0xAC :
-            return "\xEB\x8A\xB3";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x8B\x8F";
-            break;
-          case 0xA4 :
-            return "\xEB\x8B\xAB";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x8C\x87";
-            break;
-          case 0x9C :
-            return "\xEB\x8C\xA3";
-            break;
-          case 0xB8 :
-            return "\xEB\x8C\xBF";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x8D\x9B";
-            break;
-          case 0xB0 :
-            return "\xEB\x8D\xB7";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x8E\x93";
-            break;
-          case 0xA8 :
-            return "\xEB\x8E\xAF";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x8F\x8B";
-            break;
-          case 0xA0 :
-            return "\xEB\x8F\xA7";
-            break;
-          case 0xBC :
-            return "\xEB\x90\x83";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x90\x9F";
-            break;
-          case 0xB4 :
-            return "\xEB\x90\xBB";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x91\x97";
-            break;
-          case 0xAC :
-            return "\xEB\x91\xB3";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x92\x8F";
-            break;
-          case 0xA4 :
-            return "\xEB\x92\xAB";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x93\x87";
-            break;
-          case 0x9C :
-            return "\xEB\x93\xA3";
-            break;
-          case 0xB8 :
-            return "\xEB\x93\xBF";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x94\x9B";
-            break;
-          case 0xB0 :
-            return "\xEB\x94\xB7";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x95\x93";
-            break;
-          case 0xA8 :
-            return "\xEB\x95\xAF";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x96\x8B";
-            break;
-          case 0xA0 :
-            return "\xEB\x96\xA7";
-            break;
-          case 0xBC :
-            return "\xEB\x97\x83";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x97\x9F";
-            break;
-          case 0xB4 :
-            return "\xEB\x97\xBB";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x98\x97";
-            break;
-          case 0xAC :
-            return "\xEB\x98\xB3";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x99\x8F";
-            break;
-          case 0xA4 :
-            return "\xEB\x99\xAB";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x9A\x87";
-            break;
-          case 0x9C :
-            return "\xEB\x9A\xA3";
-            break;
-          case 0xB8 :
-            return "\xEB\x9A\xBF";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x9B\x9B";
-            break;
-          case 0xB0 :
-            return "\xEB\x9B\xB7";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x9C\x93";
-            break;
-          case 0xA8 :
-            return "\xEB\x9C\xAF";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x9D\x8B";
-            break;
-          case 0xA0 :
-            return "\xEB\x9D\xA7";
-            break;
-          case 0xBC :
-            return "\xEB\x9E\x83";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x9E\x9F";
-            break;
-          case 0xB4 :
-            return "\xEB\x9E\xBB";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x9F\x97";
-            break;
-          case 0xAC :
-            return "\xEB\x9F\xB3";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA0\x8F";
-            break;
-          case 0xA4 :
-            return "\xEB\xA0\xAB";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA1\x87";
-            break;
-          case 0x9C :
-            return "\xEB\xA1\xA3";
-            break;
-          case 0xB8 :
-            return "\xEB\xA1\xBF";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA2\x9B";
-            break;
-          case 0xB0 :
-            return "\xEB\xA2\xB7";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xA3\x93";
-            break;
-          case 0xA8 :
-            return "\xEB\xA3\xAF";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xA4\x8B";
-            break;
-          case 0xA0 :
-            return "\xEB\xA4\xA7";
-            break;
-          case 0xBC :
-            return "\xEB\xA5\x83";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xA5\x9F";
-            break;
-          case 0xB4 :
-            return "\xEB\xA5\xBB";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xA6\x97";
-            break;
-          case 0xAC :
-            return "\xEB\xA6\xB3";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA7\x8F";
-            break;
-          case 0xA4 :
-            return "\xEB\xA7\xAB";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA8\x87";
-            break;
-          case 0x9C :
-            return "\xEB\xA8\xA3";
-            break;
-          case 0xB8 :
-            return "\xEB\xA8\xBF";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA9\x9B";
-            break;
-          case 0xB0 :
-            return "\xEB\xA9\xB7";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xAA\x93";
-            break;
-          case 0xA8 :
-            return "\xEB\xAA\xAF";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xAB\x8B";
-            break;
-          case 0xA0 :
-            return "\xEB\xAB\xA7";
-            break;
-          case 0xBC :
-            return "\xEB\xAC\x83";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xAC\x9F";
-            break;
-          case 0xB4 :
-            return "\xEB\xAC\xBB";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xAD\x97";
-            break;
-          case 0xAC :
-            return "\xEB\xAD\xB3";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xAE\x8F";
-            break;
-          case 0xA4 :
-            return "\xEB\xAE\xAB";
-            break;
-          }
-          break;
-        case 0xAF :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xAF\x87";
-            break;
-          case 0x9C :
-            return "\xEB\xAF\xA3";
-            break;
-          case 0xB8 :
-            return "\xEB\xAF\xBF";
-            break;
-          }
-          break;
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xB0\x9B";
-            break;
-          case 0xB0 :
-            return "\xEB\xB0\xB7";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xB1\x93";
-            break;
-          case 0xA8 :
-            return "\xEB\xB1\xAF";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xB2\x8B";
-            break;
-          case 0xA0 :
-            return "\xEB\xB2\xA7";
-            break;
-          case 0xBC :
-            return "\xEB\xB3\x83";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xB3\x9F";
-            break;
-          case 0xB4 :
-            return "\xEB\xB3\xBB";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xB4\x97";
-            break;
-          case 0xAC :
-            return "\xEB\xB4\xB3";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xB5\x8F";
-            break;
-          case 0xA4 :
-            return "\xEB\xB5\xAB";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xB6\x87";
-            break;
-          case 0x9C :
-            return "\xEB\xB6\xA3";
-            break;
-          case 0xB8 :
-            return "\xEB\xB6\xBF";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xB7\x9B";
-            break;
-          case 0xB0 :
-            return "\xEB\xB7\xB7";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xB8\x93";
-            break;
-          case 0xA8 :
-            return "\xEB\xB8\xAF";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xB9\x8B";
-            break;
-          case 0xA0 :
-            return "\xEB\xB9\xA7";
-            break;
-          case 0xBC :
-            return "\xEB\xBA\x83";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xBA\x9F";
-            break;
-          case 0xB4 :
-            return "\xEB\xBA\xBB";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xBB\x97";
-            break;
-          case 0xAC :
-            return "\xEB\xBB\xB3";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xBC\x8F";
-            break;
-          case 0xA4 :
-            return "\xEB\xBC\xAB";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xBD\x87";
-            break;
-          case 0x9C :
-            return "\xEB\xBD\xA3";
-            break;
-          case 0xB8 :
-            return "\xEB\xBD\xBF";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xBE\x9B";
-            break;
-          case 0xB0 :
-            return "\xEB\xBE\xB7";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xBF\x93";
-            break;
-          case 0xA8 :
-            return "\xEB\xBF\xAF";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEC :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x80\x8B";
-            break;
-          case 0xA0 :
-            return "\xEC\x80\xA7";
-            break;
-          case 0xBC :
-            return "\xEC\x81\x83";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x81\x9F";
-            break;
-          case 0xB4 :
-            return "\xEC\x81\xBB";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x82\x97";
-            break;
-          case 0xAC :
-            return "\xEC\x82\xB3";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x83\x8F";
-            break;
-          case 0xA4 :
-            return "\xEC\x83\xAB";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x84\x87";
-            break;
-          case 0x9C :
-            return "\xEC\x84\xA3";
-            break;
-          case 0xB8 :
-            return "\xEC\x84\xBF";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x85\x9B";
-            break;
-          case 0xB0 :
-            return "\xEC\x85\xB7";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x86\x93";
-            break;
-          case 0xA8 :
-            return "\xEC\x86\xAF";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x87\x8B";
-            break;
-          case 0xA0 :
-            return "\xEC\x87\xA7";
-            break;
-          case 0xBC :
-            return "\xEC\x88\x83";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x88\x9F";
-            break;
-          case 0xB4 :
-            return "\xEC\x88\xBB";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x89\x97";
-            break;
-          case 0xAC :
-            return "\xEC\x89\xB3";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x8A\x8F";
-            break;
-          case 0xA4 :
-            return "\xEC\x8A\xAB";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x8B\x87";
-            break;
-          case 0x9C :
-            return "\xEC\x8B\xA3";
-            break;
-          case 0xB8 :
-            return "\xEC\x8B\xBF";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x8C\x9B";
-            break;
-          case 0xB0 :
-            return "\xEC\x8C\xB7";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x8D\x93";
-            break;
-          case 0xA8 :
-            return "\xEC\x8D\xAF";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x8E\x8B";
-            break;
-          case 0xA0 :
-            return "\xEC\x8E\xA7";
-            break;
-          case 0xBC :
-            return "\xEC\x8F\x83";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x8F\x9F";
-            break;
-          case 0xB4 :
-            return "\xEC\x8F\xBB";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x90\x97";
-            break;
-          case 0xAC :
-            return "\xEC\x90\xB3";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x91\x8F";
-            break;
-          case 0xA4 :
-            return "\xEC\x91\xAB";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x92\x87";
-            break;
-          case 0x9C :
-            return "\xEC\x92\xA3";
-            break;
-          case 0xB8 :
-            return "\xEC\x92\xBF";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x93\x9B";
-            break;
-          case 0xB0 :
-            return "\xEC\x93\xB7";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x94\x93";
-            break;
-          case 0xA8 :
-            return "\xEC\x94\xAF";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x95\x8B";
-            break;
-          case 0xA0 :
-            return "\xEC\x95\xA7";
-            break;
-          case 0xBC :
-            return "\xEC\x96\x83";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x96\x9F";
-            break;
-          case 0xB4 :
-            return "\xEC\x96\xBB";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x97\x97";
-            break;
-          case 0xAC :
-            return "\xEC\x97\xB3";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x98\x8F";
-            break;
-          case 0xA4 :
-            return "\xEC\x98\xAB";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x99\x87";
-            break;
-          case 0x9C :
-            return "\xEC\x99\xA3";
-            break;
-          case 0xB8 :
-            return "\xEC\x99\xBF";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x9A\x9B";
-            break;
-          case 0xB0 :
-            return "\xEC\x9A\xB7";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x9B\x93";
-            break;
-          case 0xA8 :
-            return "\xEC\x9B\xAF";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x9C\x8B";
-            break;
-          case 0xA0 :
-            return "\xEC\x9C\xA7";
-            break;
-          case 0xBC :
-            return "\xEC\x9D\x83";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x9D\x9F";
-            break;
-          case 0xB4 :
-            return "\xEC\x9D\xBB";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x9E\x97";
-            break;
-          case 0xAC :
-            return "\xEC\x9E\xB3";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x9F\x8F";
-            break;
-          case 0xA4 :
-            return "\xEC\x9F\xAB";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xA0\x87";
-            break;
-          case 0x9C :
-            return "\xEC\xA0\xA3";
-            break;
-          case 0xB8 :
-            return "\xEC\xA0\xBF";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xA1\x9B";
-            break;
-          case 0xB0 :
-            return "\xEC\xA1\xB7";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xA2\x93";
-            break;
-          case 0xA8 :
-            return "\xEC\xA2\xAF";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xA3\x8B";
-            break;
-          case 0xA0 :
-            return "\xEC\xA3\xA7";
-            break;
-          case 0xBC :
-            return "\xEC\xA4\x83";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xA4\x9F";
-            break;
-          case 0xB4 :
-            return "\xEC\xA4\xBB";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xA5\x97";
-            break;
-          case 0xAC :
-            return "\xEC\xA5\xB3";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xA6\x8F";
-            break;
-          case 0xA4 :
-            return "\xEC\xA6\xAB";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xA7\x87";
-            break;
-          case 0x9C :
-            return "\xEC\xA7\xA3";
-            break;
-          case 0xB8 :
-            return "\xEC\xA7\xBF";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xA8\x9B";
-            break;
-          case 0xB0 :
-            return "\xEC\xA8\xB7";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xA9\x93";
-            break;
-          case 0xA8 :
-            return "\xEC\xA9\xAF";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xAA\x8B";
-            break;
-          case 0xA0 :
-            return "\xEC\xAA\xA7";
-            break;
-          case 0xBC :
-            return "\xEC\xAB\x83";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xAB\x9F";
-            break;
-          case 0xB4 :
-            return "\xEC\xAB\xBB";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xAC\x97";
-            break;
-          case 0xAC :
-            return "\xEC\xAC\xB3";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xAD\x8F";
-            break;
-          case 0xA4 :
-            return "\xEC\xAD\xAB";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xAE\x87";
-            break;
-          case 0x9C :
-            return "\xEC\xAE\xA3";
-            break;
-          case 0xB8 :
-            return "\xEC\xAE\xBF";
-            break;
-          }
-          break;
-        case 0xAF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xAF\x9B";
-            break;
-          case 0xB0 :
-            return "\xEC\xAF\xB7";
-            break;
-          }
-          break;
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xB0\x93";
-            break;
-          case 0xA8 :
-            return "\xEC\xB0\xAF";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xB1\x8B";
-            break;
-          case 0xA0 :
-            return "\xEC\xB1\xA7";
-            break;
-          case 0xBC :
-            return "\xEC\xB2\x83";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xB2\x9F";
-            break;
-          case 0xB4 :
-            return "\xEC\xB2\xBB";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xB3\x97";
-            break;
-          case 0xAC :
-            return "\xEC\xB3\xB3";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xB4\x8F";
-            break;
-          case 0xA4 :
-            return "\xEC\xB4\xAB";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xB5\x87";
-            break;
-          case 0x9C :
-            return "\xEC\xB5\xA3";
-            break;
-          case 0xB8 :
-            return "\xEC\xB5\xBF";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xB6\x9B";
-            break;
-          case 0xB0 :
-            return "\xEC\xB6\xB7";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xB7\x93";
-            break;
-          case 0xA8 :
-            return "\xEC\xB7\xAF";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xB8\x8B";
-            break;
-          case 0xA0 :
-            return "\xEC\xB8\xA7";
-            break;
-          case 0xBC :
-            return "\xEC\xB9\x83";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xB9\x9F";
-            break;
-          case 0xB4 :
-            return "\xEC\xB9\xBB";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xBA\x97";
-            break;
-          case 0xAC :
-            return "\xEC\xBA\xB3";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xBB\x8F";
-            break;
-          case 0xA4 :
-            return "\xEC\xBB\xAB";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xBC\x87";
-            break;
-          case 0x9C :
-            return "\xEC\xBC\xA3";
-            break;
-          case 0xB8 :
-            return "\xEC\xBC\xBF";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xBD\x9B";
-            break;
-          case 0xB0 :
-            return "\xEC\xBD\xB7";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xBE\x93";
-            break;
-          case 0xA8 :
-            return "\xEC\xBE\xAF";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xBF\x8B";
-            break;
-          case 0xA0 :
-            return "\xEC\xBF\xA7";
-            break;
-          case 0xBC :
-            return "\xED\x80\x83";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xED :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x80\x9F";
-            break;
-          case 0xB4 :
-            return "\xED\x80\xBB";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x81\x97";
-            break;
-          case 0xAC :
-            return "\xED\x81\xB3";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x82\x8F";
-            break;
-          case 0xA4 :
-            return "\xED\x82\xAB";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x83\x87";
-            break;
-          case 0x9C :
-            return "\xED\x83\xA3";
-            break;
-          case 0xB8 :
-            return "\xED\x83\xBF";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x84\x9B";
-            break;
-          case 0xB0 :
-            return "\xED\x84\xB7";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x85\x93";
-            break;
-          case 0xA8 :
-            return "\xED\x85\xAF";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x86\x8B";
-            break;
-          case 0xA0 :
-            return "\xED\x86\xA7";
-            break;
-          case 0xBC :
-            return "\xED\x87\x83";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x87\x9F";
-            break;
-          case 0xB4 :
-            return "\xED\x87\xBB";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x88\x97";
-            break;
-          case 0xAC :
-            return "\xED\x88\xB3";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x89\x8F";
-            break;
-          case 0xA4 :
-            return "\xED\x89\xAB";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x8A\x87";
-            break;
-          case 0x9C :
-            return "\xED\x8A\xA3";
-            break;
-          case 0xB8 :
-            return "\xED\x8A\xBF";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x8B\x9B";
-            break;
-          case 0xB0 :
-            return "\xED\x8B\xB7";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x8C\x93";
-            break;
-          case 0xA8 :
-            return "\xED\x8C\xAF";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x8D\x8B";
-            break;
-          case 0xA0 :
-            return "\xED\x8D\xA7";
-            break;
-          case 0xBC :
-            return "\xED\x8E\x83";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x8E\x9F";
-            break;
-          case 0xB4 :
-            return "\xED\x8E\xBB";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x8F\x97";
-            break;
-          case 0xAC :
-            return "\xED\x8F\xB3";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x90\x8F";
-            break;
-          case 0xA4 :
-            return "\xED\x90\xAB";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x91\x87";
-            break;
-          case 0x9C :
-            return "\xED\x91\xA3";
-            break;
-          case 0xB8 :
-            return "\xED\x91\xBF";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x92\x9B";
-            break;
-          case 0xB0 :
-            return "\xED\x92\xB7";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x93\x93";
-            break;
-          case 0xA8 :
-            return "\xED\x93\xAF";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x94\x8B";
-            break;
-          case 0xA0 :
-            return "\xED\x94\xA7";
-            break;
-          case 0xBC :
-            return "\xED\x95\x83";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x95\x9F";
-            break;
-          case 0xB4 :
-            return "\xED\x95\xBB";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x96\x97";
-            break;
-          case 0xAC :
-            return "\xED\x96\xB3";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x97\x8F";
-            break;
-          case 0xA4 :
-            return "\xED\x97\xAB";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x98\x87";
-            break;
-          case 0x9C :
-            return "\xED\x98\xA3";
-            break;
-          case 0xB8 :
-            return "\xED\x98\xBF";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x99\x9B";
-            break;
-          case 0xB0 :
-            return "\xED\x99\xB7";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x9A\x93";
-            break;
-          case 0xA8 :
-            return "\xED\x9A\xAF";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x9B\x8B";
-            break;
-          case 0xA0 :
-            return "\xED\x9B\xA7";
-            break;
-          case 0xBC :
-            return "\xED\x9C\x83";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x9C\x9F";
-            break;
-          case 0xB4 :
-            return "\xED\x9C\xBB";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x9D\x97";
-            break;
-          case 0xAC :
-            return "\xED\x9D\xB3";
-            break;
-          }
-          break;
-        case 0x9E :
-          if (prefix[2] == 0x88) {
-            return "\xED\x9E\x8F";
-          }
-          break;
-        }
-        break;
-      }
-      break;
-    case 0xAF :
-      switch (prefix[0]) {
-      case 0xEA :
-        switch (prefix[1]) {
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB0\x88";
-            break;
-          case 0x9C :
-            return "\xEA\xB0\xA4";
-            break;
-          case 0xB8 :
-            return "\xEA\xB1\x80";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB1\x9C";
-            break;
-          case 0xB0 :
-            return "\xEA\xB1\xB8";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB2\x94";
-            break;
-          case 0xA8 :
-            return "\xEA\xB2\xB0";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xB3\x8C";
-            break;
-          case 0xA0 :
-            return "\xEA\xB3\xA8";
-            break;
-          case 0xBC :
-            return "\xEA\xB4\x84";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xB4\xA0";
-            break;
-          case 0xB4 :
-            return "\xEA\xB4\xBC";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xB5\x98";
-            break;
-          case 0xAC :
-            return "\xEA\xB5\xB4";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xB6\x90";
-            break;
-          case 0xA4 :
-            return "\xEA\xB6\xAC";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB7\x88";
-            break;
-          case 0x9C :
-            return "\xEA\xB7\xA4";
-            break;
-          case 0xB8 :
-            return "\xEA\xB8\x80";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB8\x9C";
-            break;
-          case 0xB0 :
-            return "\xEA\xB8\xB8";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB9\x94";
-            break;
-          case 0xA8 :
-            return "\xEA\xB9\xB0";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xBA\x8C";
-            break;
-          case 0xA0 :
-            return "\xEA\xBA\xA8";
-            break;
-          case 0xBC :
-            return "\xEA\xBB\x84";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xBB\xA0";
-            break;
-          case 0xB4 :
-            return "\xEA\xBB\xBC";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xBC\x98";
-            break;
-          case 0xAC :
-            return "\xEA\xBC\xB4";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xBD\x90";
-            break;
-          case 0xA4 :
-            return "\xEA\xBD\xAC";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xBE\x88";
-            break;
-          case 0x9C :
-            return "\xEA\xBE\xA4";
-            break;
-          case 0xB8 :
-            return "\xEA\xBF\x80";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xBF\x9C";
-            break;
-          case 0xB0 :
-            return "\xEA\xBF\xB8";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEB :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x80\x94";
-            break;
-          case 0xA8 :
-            return "\xEB\x80\xB0";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x81\x8C";
-            break;
-          case 0xA0 :
-            return "\xEB\x81\xA8";
-            break;
-          case 0xBC :
-            return "\xEB\x82\x84";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x82\xA0";
-            break;
-          case 0xB4 :
-            return "\xEB\x82\xBC";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x83\x98";
-            break;
-          case 0xAC :
-            return "\xEB\x83\xB4";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x84\x90";
-            break;
-          case 0xA4 :
-            return "\xEB\x84\xAC";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x85\x88";
-            break;
-          case 0x9C :
-            return "\xEB\x85\xA4";
-            break;
-          case 0xB8 :
-            return "\xEB\x86\x80";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x86\x9C";
-            break;
-          case 0xB0 :
-            return "\xEB\x86\xB8";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x87\x94";
-            break;
-          case 0xA8 :
-            return "\xEB\x87\xB0";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x88\x8C";
-            break;
-          case 0xA0 :
-            return "\xEB\x88\xA8";
-            break;
-          case 0xBC :
-            return "\xEB\x89\x84";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x89\xA0";
-            break;
-          case 0xB4 :
-            return "\xEB\x89\xBC";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x8A\x98";
-            break;
-          case 0xAC :
-            return "\xEB\x8A\xB4";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x8B\x90";
-            break;
-          case 0xA4 :
-            return "\xEB\x8B\xAC";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x8C\x88";
-            break;
-          case 0x9C :
-            return "\xEB\x8C\xA4";
-            break;
-          case 0xB8 :
-            return "\xEB\x8D\x80";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x8D\x9C";
-            break;
-          case 0xB0 :
-            return "\xEB\x8D\xB8";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x8E\x94";
-            break;
-          case 0xA8 :
-            return "\xEB\x8E\xB0";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x8F\x8C";
-            break;
-          case 0xA0 :
-            return "\xEB\x8F\xA8";
-            break;
-          case 0xBC :
-            return "\xEB\x90\x84";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x90\xA0";
-            break;
-          case 0xB4 :
-            return "\xEB\x90\xBC";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x91\x98";
-            break;
-          case 0xAC :
-            return "\xEB\x91\xB4";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x92\x90";
-            break;
-          case 0xA4 :
-            return "\xEB\x92\xAC";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x93\x88";
-            break;
-          case 0x9C :
-            return "\xEB\x93\xA4";
-            break;
-          case 0xB8 :
-            return "\xEB\x94\x80";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x94\x9C";
-            break;
-          case 0xB0 :
-            return "\xEB\x94\xB8";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x95\x94";
-            break;
-          case 0xA8 :
-            return "\xEB\x95\xB0";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x96\x8C";
-            break;
-          case 0xA0 :
-            return "\xEB\x96\xA8";
-            break;
-          case 0xBC :
-            return "\xEB\x97\x84";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x97\xA0";
-            break;
-          case 0xB4 :
-            return "\xEB\x97\xBC";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x98\x98";
-            break;
-          case 0xAC :
-            return "\xEB\x98\xB4";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x99\x90";
-            break;
-          case 0xA4 :
-            return "\xEB\x99\xAC";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x9A\x88";
-            break;
-          case 0x9C :
-            return "\xEB\x9A\xA4";
-            break;
-          case 0xB8 :
-            return "\xEB\x9B\x80";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x9B\x9C";
-            break;
-          case 0xB0 :
-            return "\xEB\x9B\xB8";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x9C\x94";
-            break;
-          case 0xA8 :
-            return "\xEB\x9C\xB0";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x9D\x8C";
-            break;
-          case 0xA0 :
-            return "\xEB\x9D\xA8";
-            break;
-          case 0xBC :
-            return "\xEB\x9E\x84";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x9E\xA0";
-            break;
-          case 0xB4 :
-            return "\xEB\x9E\xBC";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x9F\x98";
-            break;
-          case 0xAC :
-            return "\xEB\x9F\xB4";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA0\x90";
-            break;
-          case 0xA4 :
-            return "\xEB\xA0\xAC";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA1\x88";
-            break;
-          case 0x9C :
-            return "\xEB\xA1\xA4";
-            break;
-          case 0xB8 :
-            return "\xEB\xA2\x80";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA2\x9C";
-            break;
-          case 0xB0 :
-            return "\xEB\xA2\xB8";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xA3\x94";
-            break;
-          case 0xA8 :
-            return "\xEB\xA3\xB0";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xA4\x8C";
-            break;
-          case 0xA0 :
-            return "\xEB\xA4\xA8";
-            break;
-          case 0xBC :
-            return "\xEB\xA5\x84";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xA5\xA0";
-            break;
-          case 0xB4 :
-            return "\xEB\xA5\xBC";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xA6\x98";
-            break;
-          case 0xAC :
-            return "\xEB\xA6\xB4";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA7\x90";
-            break;
-          case 0xA4 :
-            return "\xEB\xA7\xAC";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA8\x88";
-            break;
-          case 0x9C :
-            return "\xEB\xA8\xA4";
-            break;
-          case 0xB8 :
-            return "\xEB\xA9\x80";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA9\x9C";
-            break;
-          case 0xB0 :
-            return "\xEB\xA9\xB8";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xAA\x94";
-            break;
-          case 0xA8 :
-            return "\xEB\xAA\xB0";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xAB\x8C";
-            break;
-          case 0xA0 :
-            return "\xEB\xAB\xA8";
-            break;
-          case 0xBC :
-            return "\xEB\xAC\x84";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xAC\xA0";
-            break;
-          case 0xB4 :
-            return "\xEB\xAC\xBC";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xAD\x98";
-            break;
-          case 0xAC :
-            return "\xEB\xAD\xB4";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xAE\x90";
-            break;
-          case 0xA4 :
-            return "\xEB\xAE\xAC";
-            break;
-          }
-          break;
-        case 0xAF :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xAF\x88";
-            break;
-          case 0x9C :
-            return "\xEB\xAF\xA4";
-            break;
-          case 0xB8 :
-            return "\xEB\xB0\x80";
-            break;
-          }
-          break;
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xB0\x9C";
-            break;
-          case 0xB0 :
-            return "\xEB\xB0\xB8";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xB1\x94";
-            break;
-          case 0xA8 :
-            return "\xEB\xB1\xB0";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xB2\x8C";
-            break;
-          case 0xA0 :
-            return "\xEB\xB2\xA8";
-            break;
-          case 0xBC :
-            return "\xEB\xB3\x84";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xB3\xA0";
-            break;
-          case 0xB4 :
-            return "\xEB\xB3\xBC";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xB4\x98";
-            break;
-          case 0xAC :
-            return "\xEB\xB4\xB4";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xB5\x90";
-            break;
-          case 0xA4 :
-            return "\xEB\xB5\xAC";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xB6\x88";
-            break;
-          case 0x9C :
-            return "\xEB\xB6\xA4";
-            break;
-          case 0xB8 :
-            return "\xEB\xB7\x80";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xB7\x9C";
-            break;
-          case 0xB0 :
-            return "\xEB\xB7\xB8";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xB8\x94";
-            break;
-          case 0xA8 :
-            return "\xEB\xB8\xB0";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xB9\x8C";
-            break;
-          case 0xA0 :
-            return "\xEB\xB9\xA8";
-            break;
-          case 0xBC :
-            return "\xEB\xBA\x84";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xBA\xA0";
-            break;
-          case 0xB4 :
-            return "\xEB\xBA\xBC";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xBB\x98";
-            break;
-          case 0xAC :
-            return "\xEB\xBB\xB4";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xBC\x90";
-            break;
-          case 0xA4 :
-            return "\xEB\xBC\xAC";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xBD\x88";
-            break;
-          case 0x9C :
-            return "\xEB\xBD\xA4";
-            break;
-          case 0xB8 :
-            return "\xEB\xBE\x80";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xBE\x9C";
-            break;
-          case 0xB0 :
-            return "\xEB\xBE\xB8";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xBF\x94";
-            break;
-          case 0xA8 :
-            return "\xEB\xBF\xB0";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEC :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x80\x8C";
-            break;
-          case 0xA0 :
-            return "\xEC\x80\xA8";
-            break;
-          case 0xBC :
-            return "\xEC\x81\x84";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x81\xA0";
-            break;
-          case 0xB4 :
-            return "\xEC\x81\xBC";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x82\x98";
-            break;
-          case 0xAC :
-            return "\xEC\x82\xB4";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x83\x90";
-            break;
-          case 0xA4 :
-            return "\xEC\x83\xAC";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x84\x88";
-            break;
-          case 0x9C :
-            return "\xEC\x84\xA4";
-            break;
-          case 0xB8 :
-            return "\xEC\x85\x80";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x85\x9C";
-            break;
-          case 0xB0 :
-            return "\xEC\x85\xB8";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x86\x94";
-            break;
-          case 0xA8 :
-            return "\xEC\x86\xB0";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x87\x8C";
-            break;
-          case 0xA0 :
-            return "\xEC\x87\xA8";
-            break;
-          case 0xBC :
-            return "\xEC\x88\x84";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x88\xA0";
-            break;
-          case 0xB4 :
-            return "\xEC\x88\xBC";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x89\x98";
-            break;
-          case 0xAC :
-            return "\xEC\x89\xB4";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x8A\x90";
-            break;
-          case 0xA4 :
-            return "\xEC\x8A\xAC";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x8B\x88";
-            break;
-          case 0x9C :
-            return "\xEC\x8B\xA4";
-            break;
-          case 0xB8 :
-            return "\xEC\x8C\x80";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x8C\x9C";
-            break;
-          case 0xB0 :
-            return "\xEC\x8C\xB8";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x8D\x94";
-            break;
-          case 0xA8 :
-            return "\xEC\x8D\xB0";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x8E\x8C";
-            break;
-          case 0xA0 :
-            return "\xEC\x8E\xA8";
-            break;
-          case 0xBC :
-            return "\xEC\x8F\x84";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x8F\xA0";
-            break;
-          case 0xB4 :
-            return "\xEC\x8F\xBC";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x90\x98";
-            break;
-          case 0xAC :
-            return "\xEC\x90\xB4";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x91\x90";
-            break;
-          case 0xA4 :
-            return "\xEC\x91\xAC";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x92\x88";
-            break;
-          case 0x9C :
-            return "\xEC\x92\xA4";
-            break;
-          case 0xB8 :
-            return "\xEC\x93\x80";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x93\x9C";
-            break;
-          case 0xB0 :
-            return "\xEC\x93\xB8";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x94\x94";
-            break;
-          case 0xA8 :
-            return "\xEC\x94\xB0";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x95\x8C";
-            break;
-          case 0xA0 :
-            return "\xEC\x95\xA8";
-            break;
-          case 0xBC :
-            return "\xEC\x96\x84";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x96\xA0";
-            break;
-          case 0xB4 :
-            return "\xEC\x96\xBC";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x97\x98";
-            break;
-          case 0xAC :
-            return "\xEC\x97\xB4";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x98\x90";
-            break;
-          case 0xA4 :
-            return "\xEC\x98\xAC";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x99\x88";
-            break;
-          case 0x9C :
-            return "\xEC\x99\xA4";
-            break;
-          case 0xB8 :
-            return "\xEC\x9A\x80";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x9A\x9C";
-            break;
-          case 0xB0 :
-            return "\xEC\x9A\xB8";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x9B\x94";
-            break;
-          case 0xA8 :
-            return "\xEC\x9B\xB0";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x9C\x8C";
-            break;
-          case 0xA0 :
-            return "\xEC\x9C\xA8";
-            break;
-          case 0xBC :
-            return "\xEC\x9D\x84";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x9D\xA0";
-            break;
-          case 0xB4 :
-            return "\xEC\x9D\xBC";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x9E\x98";
-            break;
-          case 0xAC :
-            return "\xEC\x9E\xB4";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x9F\x90";
-            break;
-          case 0xA4 :
-            return "\xEC\x9F\xAC";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xA0\x88";
-            break;
-          case 0x9C :
-            return "\xEC\xA0\xA4";
-            break;
-          case 0xB8 :
-            return "\xEC\xA1\x80";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xA1\x9C";
-            break;
-          case 0xB0 :
-            return "\xEC\xA1\xB8";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xA2\x94";
-            break;
-          case 0xA8 :
-            return "\xEC\xA2\xB0";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xA3\x8C";
-            break;
-          case 0xA0 :
-            return "\xEC\xA3\xA8";
-            break;
-          case 0xBC :
-            return "\xEC\xA4\x84";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xA4\xA0";
-            break;
-          case 0xB4 :
-            return "\xEC\xA4\xBC";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xA5\x98";
-            break;
-          case 0xAC :
-            return "\xEC\xA5\xB4";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xA6\x90";
-            break;
-          case 0xA4 :
-            return "\xEC\xA6\xAC";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xA7\x88";
-            break;
-          case 0x9C :
-            return "\xEC\xA7\xA4";
-            break;
-          case 0xB8 :
-            return "\xEC\xA8\x80";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xA8\x9C";
-            break;
-          case 0xB0 :
-            return "\xEC\xA8\xB8";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xA9\x94";
-            break;
-          case 0xA8 :
-            return "\xEC\xA9\xB0";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xAA\x8C";
-            break;
-          case 0xA0 :
-            return "\xEC\xAA\xA8";
-            break;
-          case 0xBC :
-            return "\xEC\xAB\x84";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xAB\xA0";
-            break;
-          case 0xB4 :
-            return "\xEC\xAB\xBC";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xAC\x98";
-            break;
-          case 0xAC :
-            return "\xEC\xAC\xB4";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xAD\x90";
-            break;
-          case 0xA4 :
-            return "\xEC\xAD\xAC";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xAE\x88";
-            break;
-          case 0x9C :
-            return "\xEC\xAE\xA4";
-            break;
-          case 0xB8 :
-            return "\xEC\xAF\x80";
-            break;
-          }
-          break;
-        case 0xAF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xAF\x9C";
-            break;
-          case 0xB0 :
-            return "\xEC\xAF\xB8";
-            break;
-          }
-          break;
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xB0\x94";
-            break;
-          case 0xA8 :
-            return "\xEC\xB0\xB0";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xB1\x8C";
-            break;
-          case 0xA0 :
-            return "\xEC\xB1\xA8";
-            break;
-          case 0xBC :
-            return "\xEC\xB2\x84";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xB2\xA0";
-            break;
-          case 0xB4 :
-            return "\xEC\xB2\xBC";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xB3\x98";
-            break;
-          case 0xAC :
-            return "\xEC\xB3\xB4";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xB4\x90";
-            break;
-          case 0xA4 :
-            return "\xEC\xB4\xAC";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xB5\x88";
-            break;
-          case 0x9C :
-            return "\xEC\xB5\xA4";
-            break;
-          case 0xB8 :
-            return "\xEC\xB6\x80";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xB6\x9C";
-            break;
-          case 0xB0 :
-            return "\xEC\xB6\xB8";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xB7\x94";
-            break;
-          case 0xA8 :
-            return "\xEC\xB7\xB0";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xB8\x8C";
-            break;
-          case 0xA0 :
-            return "\xEC\xB8\xA8";
-            break;
-          case 0xBC :
-            return "\xEC\xB9\x84";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xB9\xA0";
-            break;
-          case 0xB4 :
-            return "\xEC\xB9\xBC";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xBA\x98";
-            break;
-          case 0xAC :
-            return "\xEC\xBA\xB4";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xBB\x90";
-            break;
-          case 0xA4 :
-            return "\xEC\xBB\xAC";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xBC\x88";
-            break;
-          case 0x9C :
-            return "\xEC\xBC\xA4";
-            break;
-          case 0xB8 :
-            return "\xEC\xBD\x80";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xBD\x9C";
-            break;
-          case 0xB0 :
-            return "\xEC\xBD\xB8";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xBE\x94";
-            break;
-          case 0xA8 :
-            return "\xEC\xBE\xB0";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xBF\x8C";
-            break;
-          case 0xA0 :
-            return "\xEC\xBF\xA8";
-            break;
-          case 0xBC :
-            return "\xED\x80\x84";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xED :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x80\xA0";
-            break;
-          case 0xB4 :
-            return "\xED\x80\xBC";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x81\x98";
-            break;
-          case 0xAC :
-            return "\xED\x81\xB4";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x82\x90";
-            break;
-          case 0xA4 :
-            return "\xED\x82\xAC";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x83\x88";
-            break;
-          case 0x9C :
-            return "\xED\x83\xA4";
-            break;
-          case 0xB8 :
-            return "\xED\x84\x80";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x84\x9C";
-            break;
-          case 0xB0 :
-            return "\xED\x84\xB8";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x85\x94";
-            break;
-          case 0xA8 :
-            return "\xED\x85\xB0";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x86\x8C";
-            break;
-          case 0xA0 :
-            return "\xED\x86\xA8";
-            break;
-          case 0xBC :
-            return "\xED\x87\x84";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x87\xA0";
-            break;
-          case 0xB4 :
-            return "\xED\x87\xBC";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x88\x98";
-            break;
-          case 0xAC :
-            return "\xED\x88\xB4";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x89\x90";
-            break;
-          case 0xA4 :
-            return "\xED\x89\xAC";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x8A\x88";
-            break;
-          case 0x9C :
-            return "\xED\x8A\xA4";
-            break;
-          case 0xB8 :
-            return "\xED\x8B\x80";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x8B\x9C";
-            break;
-          case 0xB0 :
-            return "\xED\x8B\xB8";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x8C\x94";
-            break;
-          case 0xA8 :
-            return "\xED\x8C\xB0";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x8D\x8C";
-            break;
-          case 0xA0 :
-            return "\xED\x8D\xA8";
-            break;
-          case 0xBC :
-            return "\xED\x8E\x84";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x8E\xA0";
-            break;
-          case 0xB4 :
-            return "\xED\x8E\xBC";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x8F\x98";
-            break;
-          case 0xAC :
-            return "\xED\x8F\xB4";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x90\x90";
-            break;
-          case 0xA4 :
-            return "\xED\x90\xAC";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x91\x88";
-            break;
-          case 0x9C :
-            return "\xED\x91\xA4";
-            break;
-          case 0xB8 :
-            return "\xED\x92\x80";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x92\x9C";
-            break;
-          case 0xB0 :
-            return "\xED\x92\xB8";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x93\x94";
-            break;
-          case 0xA8 :
-            return "\xED\x93\xB0";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x94\x8C";
-            break;
-          case 0xA0 :
-            return "\xED\x94\xA8";
-            break;
-          case 0xBC :
-            return "\xED\x95\x84";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x95\xA0";
-            break;
-          case 0xB4 :
-            return "\xED\x95\xBC";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x96\x98";
-            break;
-          case 0xAC :
-            return "\xED\x96\xB4";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x97\x90";
-            break;
-          case 0xA4 :
-            return "\xED\x97\xAC";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x98\x88";
-            break;
-          case 0x9C :
-            return "\xED\x98\xA4";
-            break;
-          case 0xB8 :
-            return "\xED\x99\x80";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x99\x9C";
-            break;
-          case 0xB0 :
-            return "\xED\x99\xB8";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x9A\x94";
-            break;
-          case 0xA8 :
-            return "\xED\x9A\xB0";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x9B\x8C";
-            break;
-          case 0xA0 :
-            return "\xED\x9B\xA8";
-            break;
-          case 0xBC :
-            return "\xED\x9C\x84";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x9C\xA0";
-            break;
-          case 0xB4 :
-            return "\xED\x9C\xBC";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x9D\x98";
-            break;
-          case 0xAC :
-            return "\xED\x9D\xB4";
-            break;
-          }
-          break;
-        case 0x9E :
-          if (prefix[2] == 0x88) {
-            return "\xED\x9E\x90";
-          }
-          break;
-        }
-        break;
-      }
-      break;
-    case 0xB0 :
-      switch (prefix[0]) {
-      case 0xEA :
-        switch (prefix[1]) {
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB0\x89";
-            break;
-          case 0x9C :
-            return "\xEA\xB0\xA5";
-            break;
-          case 0xB8 :
-            return "\xEA\xB1\x81";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB1\x9D";
-            break;
-          case 0xB0 :
-            return "\xEA\xB1\xB9";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB2\x95";
-            break;
-          case 0xA8 :
-            return "\xEA\xB2\xB1";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xB3\x8D";
-            break;
-          case 0xA0 :
-            return "\xEA\xB3\xA9";
-            break;
-          case 0xBC :
-            return "\xEA\xB4\x85";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xB4\xA1";
-            break;
-          case 0xB4 :
-            return "\xEA\xB4\xBD";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xB5\x99";
-            break;
-          case 0xAC :
-            return "\xEA\xB5\xB5";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xB6\x91";
-            break;
-          case 0xA4 :
-            return "\xEA\xB6\xAD";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB7\x89";
-            break;
-          case 0x9C :
-            return "\xEA\xB7\xA5";
-            break;
-          case 0xB8 :
-            return "\xEA\xB8\x81";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB8\x9D";
-            break;
-          case 0xB0 :
-            return "\xEA\xB8\xB9";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB9\x95";
-            break;
-          case 0xA8 :
-            return "\xEA\xB9\xB1";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xBA\x8D";
-            break;
-          case 0xA0 :
-            return "\xEA\xBA\xA9";
-            break;
-          case 0xBC :
-            return "\xEA\xBB\x85";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xBB\xA1";
-            break;
-          case 0xB4 :
-            return "\xEA\xBB\xBD";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xBC\x99";
-            break;
-          case 0xAC :
-            return "\xEA\xBC\xB5";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xBD\x91";
-            break;
-          case 0xA4 :
-            return "\xEA\xBD\xAD";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xBE\x89";
-            break;
-          case 0x9C :
-            return "\xEA\xBE\xA5";
-            break;
-          case 0xB8 :
-            return "\xEA\xBF\x81";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xBF\x9D";
-            break;
-          case 0xB0 :
-            return "\xEA\xBF\xB9";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEB :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x80\x95";
-            break;
-          case 0xA8 :
-            return "\xEB\x80\xB1";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x81\x8D";
-            break;
-          case 0xA0 :
-            return "\xEB\x81\xA9";
-            break;
-          case 0xBC :
-            return "\xEB\x82\x85";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x82\xA1";
-            break;
-          case 0xB4 :
-            return "\xEB\x82\xBD";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x83\x99";
-            break;
-          case 0xAC :
-            return "\xEB\x83\xB5";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x84\x91";
-            break;
-          case 0xA4 :
-            return "\xEB\x84\xAD";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x85\x89";
-            break;
-          case 0x9C :
-            return "\xEB\x85\xA5";
-            break;
-          case 0xB8 :
-            return "\xEB\x86\x81";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x86\x9D";
-            break;
-          case 0xB0 :
-            return "\xEB\x86\xB9";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x87\x95";
-            break;
-          case 0xA8 :
-            return "\xEB\x87\xB1";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x88\x8D";
-            break;
-          case 0xA0 :
-            return "\xEB\x88\xA9";
-            break;
-          case 0xBC :
-            return "\xEB\x89\x85";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x89\xA1";
-            break;
-          case 0xB4 :
-            return "\xEB\x89\xBD";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x8A\x99";
-            break;
-          case 0xAC :
-            return "\xEB\x8A\xB5";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x8B\x91";
-            break;
-          case 0xA4 :
-            return "\xEB\x8B\xAD";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x8C\x89";
-            break;
-          case 0x9C :
-            return "\xEB\x8C\xA5";
-            break;
-          case 0xB8 :
-            return "\xEB\x8D\x81";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x8D\x9D";
-            break;
-          case 0xB0 :
-            return "\xEB\x8D\xB9";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x8E\x95";
-            break;
-          case 0xA8 :
-            return "\xEB\x8E\xB1";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x8F\x8D";
-            break;
-          case 0xA0 :
-            return "\xEB\x8F\xA9";
-            break;
-          case 0xBC :
-            return "\xEB\x90\x85";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x90\xA1";
-            break;
-          case 0xB4 :
-            return "\xEB\x90\xBD";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x91\x99";
-            break;
-          case 0xAC :
-            return "\xEB\x91\xB5";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x92\x91";
-            break;
-          case 0xA4 :
-            return "\xEB\x92\xAD";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x93\x89";
-            break;
-          case 0x9C :
-            return "\xEB\x93\xA5";
-            break;
-          case 0xB8 :
-            return "\xEB\x94\x81";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x94\x9D";
-            break;
-          case 0xB0 :
-            return "\xEB\x94\xB9";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x95\x95";
-            break;
-          case 0xA8 :
-            return "\xEB\x95\xB1";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x96\x8D";
-            break;
-          case 0xA0 :
-            return "\xEB\x96\xA9";
-            break;
-          case 0xBC :
-            return "\xEB\x97\x85";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x97\xA1";
-            break;
-          case 0xB4 :
-            return "\xEB\x97\xBD";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x98\x99";
-            break;
-          case 0xAC :
-            return "\xEB\x98\xB5";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x99\x91";
-            break;
-          case 0xA4 :
-            return "\xEB\x99\xAD";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x9A\x89";
-            break;
-          case 0x9C :
-            return "\xEB\x9A\xA5";
-            break;
-          case 0xB8 :
-            return "\xEB\x9B\x81";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x9B\x9D";
-            break;
-          case 0xB0 :
-            return "\xEB\x9B\xB9";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x9C\x95";
-            break;
-          case 0xA8 :
-            return "\xEB\x9C\xB1";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x9D\x8D";
-            break;
-          case 0xA0 :
-            return "\xEB\x9D\xA9";
-            break;
-          case 0xBC :
-            return "\xEB\x9E\x85";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x9E\xA1";
-            break;
-          case 0xB4 :
-            return "\xEB\x9E\xBD";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x9F\x99";
-            break;
-          case 0xAC :
-            return "\xEB\x9F\xB5";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA0\x91";
-            break;
-          case 0xA4 :
-            return "\xEB\xA0\xAD";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA1\x89";
-            break;
-          case 0x9C :
-            return "\xEB\xA1\xA5";
-            break;
-          case 0xB8 :
-            return "\xEB\xA2\x81";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA2\x9D";
-            break;
-          case 0xB0 :
-            return "\xEB\xA2\xB9";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xA3\x95";
-            break;
-          case 0xA8 :
-            return "\xEB\xA3\xB1";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xA4\x8D";
-            break;
-          case 0xA0 :
-            return "\xEB\xA4\xA9";
-            break;
-          case 0xBC :
-            return "\xEB\xA5\x85";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xA5\xA1";
-            break;
-          case 0xB4 :
-            return "\xEB\xA5\xBD";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xA6\x99";
-            break;
-          case 0xAC :
-            return "\xEB\xA6\xB5";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA7\x91";
-            break;
-          case 0xA4 :
-            return "\xEB\xA7\xAD";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA8\x89";
-            break;
-          case 0x9C :
-            return "\xEB\xA8\xA5";
-            break;
-          case 0xB8 :
-            return "\xEB\xA9\x81";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA9\x9D";
-            break;
-          case 0xB0 :
-            return "\xEB\xA9\xB9";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xAA\x95";
-            break;
-          case 0xA8 :
-            return "\xEB\xAA\xB1";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xAB\x8D";
-            break;
-          case 0xA0 :
-            return "\xEB\xAB\xA9";
-            break;
-          case 0xBC :
-            return "\xEB\xAC\x85";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xAC\xA1";
-            break;
-          case 0xB4 :
-            return "\xEB\xAC\xBD";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xAD\x99";
-            break;
-          case 0xAC :
-            return "\xEB\xAD\xB5";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xAE\x91";
-            break;
-          case 0xA4 :
-            return "\xEB\xAE\xAD";
-            break;
-          }
-          break;
-        case 0xAF :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xAF\x89";
-            break;
-          case 0x9C :
-            return "\xEB\xAF\xA5";
-            break;
-          case 0xB8 :
-            return "\xEB\xB0\x81";
-            break;
-          }
-          break;
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xB0\x9D";
-            break;
-          case 0xB0 :
-            return "\xEB\xB0\xB9";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xB1\x95";
-            break;
-          case 0xA8 :
-            return "\xEB\xB1\xB1";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xB2\x8D";
-            break;
-          case 0xA0 :
-            return "\xEB\xB2\xA9";
-            break;
-          case 0xBC :
-            return "\xEB\xB3\x85";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xB3\xA1";
-            break;
-          case 0xB4 :
-            return "\xEB\xB3\xBD";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xB4\x99";
-            break;
-          case 0xAC :
-            return "\xEB\xB4\xB5";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xB5\x91";
-            break;
-          case 0xA4 :
-            return "\xEB\xB5\xAD";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xB6\x89";
-            break;
-          case 0x9C :
-            return "\xEB\xB6\xA5";
-            break;
-          case 0xB8 :
-            return "\xEB\xB7\x81";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xB7\x9D";
-            break;
-          case 0xB0 :
-            return "\xEB\xB7\xB9";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xB8\x95";
-            break;
-          case 0xA8 :
-            return "\xEB\xB8\xB1";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xB9\x8D";
-            break;
-          case 0xA0 :
-            return "\xEB\xB9\xA9";
-            break;
-          case 0xBC :
-            return "\xEB\xBA\x85";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xBA\xA1";
-            break;
-          case 0xB4 :
-            return "\xEB\xBA\xBD";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xBB\x99";
-            break;
-          case 0xAC :
-            return "\xEB\xBB\xB5";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xBC\x91";
-            break;
-          case 0xA4 :
-            return "\xEB\xBC\xAD";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xBD\x89";
-            break;
-          case 0x9C :
-            return "\xEB\xBD\xA5";
-            break;
-          case 0xB8 :
-            return "\xEB\xBE\x81";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xBE\x9D";
-            break;
-          case 0xB0 :
-            return "\xEB\xBE\xB9";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xBF\x95";
-            break;
-          case 0xA8 :
-            return "\xEB\xBF\xB1";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEC :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x80\x8D";
-            break;
-          case 0xA0 :
-            return "\xEC\x80\xA9";
-            break;
-          case 0xBC :
-            return "\xEC\x81\x85";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x81\xA1";
-            break;
-          case 0xB4 :
-            return "\xEC\x81\xBD";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x82\x99";
-            break;
-          case 0xAC :
-            return "\xEC\x82\xB5";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x83\x91";
-            break;
-          case 0xA4 :
-            return "\xEC\x83\xAD";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x84\x89";
-            break;
-          case 0x9C :
-            return "\xEC\x84\xA5";
-            break;
-          case 0xB8 :
-            return "\xEC\x85\x81";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x85\x9D";
-            break;
-          case 0xB0 :
-            return "\xEC\x85\xB9";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x86\x95";
-            break;
-          case 0xA8 :
-            return "\xEC\x86\xB1";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x87\x8D";
-            break;
-          case 0xA0 :
-            return "\xEC\x87\xA9";
-            break;
-          case 0xBC :
-            return "\xEC\x88\x85";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x88\xA1";
-            break;
-          case 0xB4 :
-            return "\xEC\x88\xBD";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x89\x99";
-            break;
-          case 0xAC :
-            return "\xEC\x89\xB5";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x8A\x91";
-            break;
-          case 0xA4 :
-            return "\xEC\x8A\xAD";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x8B\x89";
-            break;
-          case 0x9C :
-            return "\xEC\x8B\xA5";
-            break;
-          case 0xB8 :
-            return "\xEC\x8C\x81";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x8C\x9D";
-            break;
-          case 0xB0 :
-            return "\xEC\x8C\xB9";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x8D\x95";
-            break;
-          case 0xA8 :
-            return "\xEC\x8D\xB1";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x8E\x8D";
-            break;
-          case 0xA0 :
-            return "\xEC\x8E\xA9";
-            break;
-          case 0xBC :
-            return "\xEC\x8F\x85";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x8F\xA1";
-            break;
-          case 0xB4 :
-            return "\xEC\x8F\xBD";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x90\x99";
-            break;
-          case 0xAC :
-            return "\xEC\x90\xB5";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x91\x91";
-            break;
-          case 0xA4 :
-            return "\xEC\x91\xAD";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x92\x89";
-            break;
-          case 0x9C :
-            return "\xEC\x92\xA5";
-            break;
-          case 0xB8 :
-            return "\xEC\x93\x81";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x93\x9D";
-            break;
-          case 0xB0 :
-            return "\xEC\x93\xB9";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x94\x95";
-            break;
-          case 0xA8 :
-            return "\xEC\x94\xB1";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x95\x8D";
-            break;
-          case 0xA0 :
-            return "\xEC\x95\xA9";
-            break;
-          case 0xBC :
-            return "\xEC\x96\x85";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x96\xA1";
-            break;
-          case 0xB4 :
-            return "\xEC\x96\xBD";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x97\x99";
-            break;
-          case 0xAC :
-            return "\xEC\x97\xB5";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x98\x91";
-            break;
-          case 0xA4 :
-            return "\xEC\x98\xAD";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\x99\x89";
-            break;
-          case 0x9C :
-            return "\xEC\x99\xA5";
-            break;
-          case 0xB8 :
-            return "\xEC\x9A\x81";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\x9A\x9D";
-            break;
-          case 0xB0 :
-            return "\xEC\x9A\xB9";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\x9B\x95";
-            break;
-          case 0xA8 :
-            return "\xEC\x9B\xB1";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\x9C\x8D";
-            break;
-          case 0xA0 :
-            return "\xEC\x9C\xA9";
-            break;
-          case 0xBC :
-            return "\xEC\x9D\x85";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\x9D\xA1";
-            break;
-          case 0xB4 :
-            return "\xEC\x9D\xBD";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\x9E\x99";
-            break;
-          case 0xAC :
-            return "\xEC\x9E\xB5";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\x9F\x91";
-            break;
-          case 0xA4 :
-            return "\xEC\x9F\xAD";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xA0\x89";
-            break;
-          case 0x9C :
-            return "\xEC\xA0\xA5";
-            break;
-          case 0xB8 :
-            return "\xEC\xA1\x81";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xA1\x9D";
-            break;
-          case 0xB0 :
-            return "\xEC\xA1\xB9";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xA2\x95";
-            break;
-          case 0xA8 :
-            return "\xEC\xA2\xB1";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xA3\x8D";
-            break;
-          case 0xA0 :
-            return "\xEC\xA3\xA9";
-            break;
-          case 0xBC :
-            return "\xEC\xA4\x85";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xA4\xA1";
-            break;
-          case 0xB4 :
-            return "\xEC\xA4\xBD";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xA5\x99";
-            break;
-          case 0xAC :
-            return "\xEC\xA5\xB5";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xA6\x91";
-            break;
-          case 0xA4 :
-            return "\xEC\xA6\xAD";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xA7\x89";
-            break;
-          case 0x9C :
-            return "\xEC\xA7\xA5";
-            break;
-          case 0xB8 :
-            return "\xEC\xA8\x81";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xA8\x9D";
-            break;
-          case 0xB0 :
-            return "\xEC\xA8\xB9";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xA9\x95";
-            break;
-          case 0xA8 :
-            return "\xEC\xA9\xB1";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xAA\x8D";
-            break;
-          case 0xA0 :
-            return "\xEC\xAA\xA9";
-            break;
-          case 0xBC :
-            return "\xEC\xAB\x85";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xAB\xA1";
-            break;
-          case 0xB4 :
-            return "\xEC\xAB\xBD";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xAC\x99";
-            break;
-          case 0xAC :
-            return "\xEC\xAC\xB5";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xAD\x91";
-            break;
-          case 0xA4 :
-            return "\xEC\xAD\xAD";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xAE\x89";
-            break;
-          case 0x9C :
-            return "\xEC\xAE\xA5";
-            break;
-          case 0xB8 :
-            return "\xEC\xAF\x81";
-            break;
-          }
-          break;
-        case 0xAF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xAF\x9D";
-            break;
-          case 0xB0 :
-            return "\xEC\xAF\xB9";
-            break;
-          }
-          break;
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xB0\x95";
-            break;
-          case 0xA8 :
-            return "\xEC\xB0\xB1";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xB1\x8D";
-            break;
-          case 0xA0 :
-            return "\xEC\xB1\xA9";
-            break;
-          case 0xBC :
-            return "\xEC\xB2\x85";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xB2\xA1";
-            break;
-          case 0xB4 :
-            return "\xEC\xB2\xBD";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xB3\x99";
-            break;
-          case 0xAC :
-            return "\xEC\xB3\xB5";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xB4\x91";
-            break;
-          case 0xA4 :
-            return "\xEC\xB4\xAD";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xB5\x89";
-            break;
-          case 0x9C :
-            return "\xEC\xB5\xA5";
-            break;
-          case 0xB8 :
-            return "\xEC\xB6\x81";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xB6\x9D";
-            break;
-          case 0xB0 :
-            return "\xEC\xB6\xB9";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xB7\x95";
-            break;
-          case 0xA8 :
-            return "\xEC\xB7\xB1";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xB8\x8D";
-            break;
-          case 0xA0 :
-            return "\xEC\xB8\xA9";
-            break;
-          case 0xBC :
-            return "\xEC\xB9\x85";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEC\xB9\xA1";
-            break;
-          case 0xB4 :
-            return "\xEC\xB9\xBD";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEC\xBA\x99";
-            break;
-          case 0xAC :
-            return "\xEC\xBA\xB5";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEC\xBB\x91";
-            break;
-          case 0xA4 :
-            return "\xEC\xBB\xAD";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEC\xBC\x89";
-            break;
-          case 0x9C :
-            return "\xEC\xBC\xA5";
-            break;
-          case 0xB8 :
-            return "\xEC\xBD\x81";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEC\xBD\x9D";
-            break;
-          case 0xB0 :
-            return "\xEC\xBD\xB9";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEC\xBE\x95";
-            break;
-          case 0xA8 :
-            return "\xEC\xBE\xB1";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEC\xBF\x8D";
-            break;
-          case 0xA0 :
-            return "\xEC\xBF\xA9";
-            break;
-          case 0xBC :
-            return "\xED\x80\x85";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xED :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x80\xA1";
-            break;
-          case 0xB4 :
-            return "\xED\x80\xBD";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x81\x99";
-            break;
-          case 0xAC :
-            return "\xED\x81\xB5";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x82\x91";
-            break;
-          case 0xA4 :
-            return "\xED\x82\xAD";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x83\x89";
-            break;
-          case 0x9C :
-            return "\xED\x83\xA5";
-            break;
-          case 0xB8 :
-            return "\xED\x84\x81";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x84\x9D";
-            break;
-          case 0xB0 :
-            return "\xED\x84\xB9";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x85\x95";
-            break;
-          case 0xA8 :
-            return "\xED\x85\xB1";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x86\x8D";
-            break;
-          case 0xA0 :
-            return "\xED\x86\xA9";
-            break;
-          case 0xBC :
-            return "\xED\x87\x85";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x87\xA1";
-            break;
-          case 0xB4 :
-            return "\xED\x87\xBD";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x88\x99";
-            break;
-          case 0xAC :
-            return "\xED\x88\xB5";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x89\x91";
-            break;
-          case 0xA4 :
-            return "\xED\x89\xAD";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x8A\x89";
-            break;
-          case 0x9C :
-            return "\xED\x8A\xA5";
-            break;
-          case 0xB8 :
-            return "\xED\x8B\x81";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x8B\x9D";
-            break;
-          case 0xB0 :
-            return "\xED\x8B\xB9";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x8C\x95";
-            break;
-          case 0xA8 :
-            return "\xED\x8C\xB1";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x8D\x8D";
-            break;
-          case 0xA0 :
-            return "\xED\x8D\xA9";
-            break;
-          case 0xBC :
-            return "\xED\x8E\x85";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x8E\xA1";
-            break;
-          case 0xB4 :
-            return "\xED\x8E\xBD";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x8F\x99";
-            break;
-          case 0xAC :
-            return "\xED\x8F\xB5";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x90\x91";
-            break;
-          case 0xA4 :
-            return "\xED\x90\xAD";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x91\x89";
-            break;
-          case 0x9C :
-            return "\xED\x91\xA5";
-            break;
-          case 0xB8 :
-            return "\xED\x92\x81";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x92\x9D";
-            break;
-          case 0xB0 :
-            return "\xED\x92\xB9";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x93\x95";
-            break;
-          case 0xA8 :
-            return "\xED\x93\xB1";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x94\x8D";
-            break;
-          case 0xA0 :
-            return "\xED\x94\xA9";
-            break;
-          case 0xBC :
-            return "\xED\x95\x85";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x95\xA1";
-            break;
-          case 0xB4 :
-            return "\xED\x95\xBD";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x96\x99";
-            break;
-          case 0xAC :
-            return "\xED\x96\xB5";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xED\x97\x91";
-            break;
-          case 0xA4 :
-            return "\xED\x97\xAD";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xED\x98\x89";
-            break;
-          case 0x9C :
-            return "\xED\x98\xA5";
-            break;
-          case 0xB8 :
-            return "\xED\x99\x81";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xED\x99\x9D";
-            break;
-          case 0xB0 :
-            return "\xED\x99\xB9";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xED\x9A\x95";
-            break;
-          case 0xA8 :
-            return "\xED\x9A\xB1";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xED\x9B\x8D";
-            break;
-          case 0xA0 :
-            return "\xED\x9B\xA9";
-            break;
-          case 0xBC :
-            return "\xED\x9C\x85";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xED\x9C\xA1";
-            break;
-          case 0xB4 :
-            return "\xED\x9C\xBD";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xED\x9D\x99";
-            break;
-          case 0xAC :
-            return "\xED\x9D\xB5";
-            break;
-          }
-          break;
-        case 0x9E :
-          if (prefix[2] == 0x88) {
-            return "\xED\x9E\x91";
-          }
-          break;
-        }
-        break;
-      }
-      break;
-    case 0xB1 :
-      switch (prefix[0]) {
-      case 0xEA :
-        switch (prefix[1]) {
-        case 0xB0 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB0\x8A";
-            break;
-          case 0x9C :
-            return "\xEA\xB0\xA6";
-            break;
-          case 0xB8 :
-            return "\xEA\xB1\x82";
-            break;
-          }
-          break;
-        case 0xB1 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB1\x9E";
-            break;
-          case 0xB0 :
-            return "\xEA\xB1\xBA";
-            break;
-          }
-          break;
-        case 0xB2 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB2\x96";
-            break;
-          case 0xA8 :
-            return "\xEA\xB2\xB2";
-            break;
-          }
-          break;
-        case 0xB3 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xB3\x8E";
-            break;
-          case 0xA0 :
-            return "\xEA\xB3\xAA";
-            break;
-          case 0xBC :
-            return "\xEA\xB4\x86";
-            break;
-          }
-          break;
-        case 0xB4 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xB4\xA2";
-            break;
-          case 0xB4 :
-            return "\xEA\xB4\xBE";
-            break;
-          }
-          break;
-        case 0xB5 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xB5\x9A";
-            break;
-          case 0xAC :
-            return "\xEA\xB5\xB6";
-            break;
-          }
-          break;
-        case 0xB6 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xB6\x92";
-            break;
-          case 0xA4 :
-            return "\xEA\xB6\xAE";
-            break;
-          }
-          break;
-        case 0xB7 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xB7\x8A";
-            break;
-          case 0x9C :
-            return "\xEA\xB7\xA6";
-            break;
-          case 0xB8 :
-            return "\xEA\xB8\x82";
-            break;
-          }
-          break;
-        case 0xB8 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xB8\x9E";
-            break;
-          case 0xB0 :
-            return "\xEA\xB8\xBA";
-            break;
-          }
-          break;
-        case 0xB9 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEA\xB9\x96";
-            break;
-          case 0xA8 :
-            return "\xEA\xB9\xB2";
-            break;
-          }
-          break;
-        case 0xBA :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEA\xBA\x8E";
-            break;
-          case 0xA0 :
-            return "\xEA\xBA\xAA";
-            break;
-          case 0xBC :
-            return "\xEA\xBB\x86";
-            break;
-          }
-          break;
-        case 0xBB :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEA\xBB\xA2";
-            break;
-          case 0xB4 :
-            return "\xEA\xBB\xBE";
-            break;
-          }
-          break;
-        case 0xBC :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEA\xBC\x9A";
-            break;
-          case 0xAC :
-            return "\xEA\xBC\xB6";
-            break;
-          }
-          break;
-        case 0xBD :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEA\xBD\x92";
-            break;
-          case 0xA4 :
-            return "\xEA\xBD\xAE";
-            break;
-          }
-          break;
-        case 0xBE :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEA\xBE\x8A";
-            break;
-          case 0x9C :
-            return "\xEA\xBE\xA6";
-            break;
-          case 0xB8 :
-            return "\xEA\xBF\x82";
-            break;
-          }
-          break;
-        case 0xBF :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEA\xBF\x9E";
-            break;
-          case 0xB0 :
-            return "\xEA\xBF\xBA";
-            break;
-          }
-          break;
-        }
-        break;
-      case 0xEB :
-        switch (prefix[1]) {
-        case 0x80 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x80\x96";
-            break;
-          case 0xA8 :
-            return "\xEB\x80\xB2";
-            break;
-          }
-          break;
-        case 0x81 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x81\x8E";
-            break;
-          case 0xA0 :
-            return "\xEB\x81\xAA";
-            break;
-          case 0xBC :
-            return "\xEB\x82\x86";
-            break;
-          }
-          break;
-        case 0x82 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x82\xA2";
-            break;
-          case 0xB4 :
-            return "\xEB\x82\xBE";
-            break;
-          }
-          break;
-        case 0x83 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x83\x9A";
-            break;
-          case 0xAC :
-            return "\xEB\x83\xB6";
-            break;
-          }
-          break;
-        case 0x84 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x84\x92";
-            break;
-          case 0xA4 :
-            return "\xEB\x84\xAE";
-            break;
-          }
-          break;
-        case 0x85 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x85\x8A";
-            break;
-          case 0x9C :
-            return "\xEB\x85\xA6";
-            break;
-          case 0xB8 :
-            return "\xEB\x86\x82";
-            break;
-          }
-          break;
-        case 0x86 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x86\x9E";
-            break;
-          case 0xB0 :
-            return "\xEB\x86\xBA";
-            break;
-          }
-          break;
-        case 0x87 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x87\x96";
-            break;
-          case 0xA8 :
-            return "\xEB\x87\xB2";
-            break;
-          }
-          break;
-        case 0x88 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x88\x8E";
-            break;
-          case 0xA0 :
-            return "\xEB\x88\xAA";
-            break;
-          case 0xBC :
-            return "\xEB\x89\x86";
-            break;
-          }
-          break;
-        case 0x89 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x89\xA2";
-            break;
-          case 0xB4 :
-            return "\xEB\x89\xBE";
-            break;
-          }
-          break;
-        case 0x8A :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x8A\x9A";
-            break;
-          case 0xAC :
-            return "\xEB\x8A\xB6";
-            break;
-          }
-          break;
-        case 0x8B :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x8B\x92";
-            break;
-          case 0xA4 :
-            return "\xEB\x8B\xAE";
-            break;
-          }
-          break;
-        case 0x8C :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x8C\x8A";
-            break;
-          case 0x9C :
-            return "\xEB\x8C\xA6";
-            break;
-          case 0xB8 :
-            return "\xEB\x8D\x82";
-            break;
-          }
-          break;
-        case 0x8D :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x8D\x9E";
-            break;
-          case 0xB0 :
-            return "\xEB\x8D\xBA";
-            break;
-          }
-          break;
-        case 0x8E :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x8E\x96";
-            break;
-          case 0xA8 :
-            return "\xEB\x8E\xB2";
-            break;
-          }
-          break;
-        case 0x8F :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x8F\x8E";
-            break;
-          case 0xA0 :
-            return "\xEB\x8F\xAA";
-            break;
-          case 0xBC :
-            return "\xEB\x90\x86";
-            break;
-          }
-          break;
-        case 0x90 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x90\xA2";
-            break;
-          case 0xB4 :
-            return "\xEB\x90\xBE";
-            break;
-          }
-          break;
-        case 0x91 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x91\x9A";
-            break;
-          case 0xAC :
-            return "\xEB\x91\xB6";
-            break;
-          }
-          break;
-        case 0x92 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x92\x92";
-            break;
-          case 0xA4 :
-            return "\xEB\x92\xAE";
-            break;
-          }
-          break;
-        case 0x93 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x93\x8A";
-            break;
-          case 0x9C :
-            return "\xEB\x93\xA6";
-            break;
-          case 0xB8 :
-            return "\xEB\x94\x82";
-            break;
-          }
-          break;
-        case 0x94 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x94\x9E";
-            break;
-          case 0xB0 :
-            return "\xEB\x94\xBA";
-            break;
-          }
-          break;
-        case 0x95 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x95\x96";
-            break;
-          case 0xA8 :
-            return "\xEB\x95\xB2";
-            break;
-          }
-          break;
-        case 0x96 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x96\x8E";
-            break;
-          case 0xA0 :
-            return "\xEB\x96\xAA";
-            break;
-          case 0xBC :
-            return "\xEB\x97\x86";
-            break;
-          }
-          break;
-        case 0x97 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x97\xA2";
-            break;
-          case 0xB4 :
-            return "\xEB\x97\xBE";
-            break;
-          }
-          break;
-        case 0x98 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x98\x9A";
-            break;
-          case 0xAC :
-            return "\xEB\x98\xB6";
-            break;
-          }
-          break;
-        case 0x99 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\x99\x92";
-            break;
-          case 0xA4 :
-            return "\xEB\x99\xAE";
-            break;
-          }
-          break;
-        case 0x9A :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\x9A\x8A";
-            break;
-          case 0x9C :
-            return "\xEB\x9A\xA6";
-            break;
-          case 0xB8 :
-            return "\xEB\x9B\x82";
-            break;
-          }
-          break;
-        case 0x9B :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\x9B\x9E";
-            break;
-          case 0xB0 :
-            return "\xEB\x9B\xBA";
-            break;
-          }
-          break;
-        case 0x9C :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\x9C\x96";
-            break;
-          case 0xA8 :
-            return "\xEB\x9C\xB2";
-            break;
-          }
-          break;
-        case 0x9D :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\x9D\x8E";
-            break;
-          case 0xA0 :
-            return "\xEB\x9D\xAA";
-            break;
-          case 0xBC :
-            return "\xEB\x9E\x86";
-            break;
-          }
-          break;
-        case 0x9E :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\x9E\xA2";
-            break;
-          case 0xB4 :
-            return "\xEB\x9E\xBE";
-            break;
-          }
-          break;
-        case 0x9F :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\x9F\x9A";
-            break;
-          case 0xAC :
-            return "\xEB\x9F\xB6";
-            break;
-          }
-          break;
-        case 0xA0 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA0\x92";
-            break;
-          case 0xA4 :
-            return "\xEB\xA0\xAE";
-            break;
-          }
-          break;
-        case 0xA1 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA1\x8A";
-            break;
-          case 0x9C :
-            return "\xEB\xA1\xA6";
-            break;
-          case 0xB8 :
-            return "\xEB\xA2\x82";
-            break;
-          }
-          break;
-        case 0xA2 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA2\x9E";
-            break;
-          case 0xB0 :
-            return "\xEB\xA2\xBA";
-            break;
-          }
-          break;
-        case 0xA3 :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xA3\x96";
-            break;
-          case 0xA8 :
-            return "\xEB\xA3\xB2";
-            break;
-          }
-          break;
-        case 0xA4 :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xA4\x8E";
-            break;
-          case 0xA0 :
-            return "\xEB\xA4\xAA";
-            break;
-          case 0xBC :
-            return "\xEB\xA5\x86";
-            break;
-          }
-          break;
-        case 0xA5 :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xA5\xA2";
-            break;
-          case 0xB4 :
-            return "\xEB\xA5\xBE";
-            break;
-          }
-          break;
-        case 0xA6 :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xA6\x9A";
-            break;
-          case 0xAC :
-            return "\xEB\xA6\xB6";
-            break;
-          }
-          break;
-        case 0xA7 :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xA7\x92";
-            break;
-          case 0xA4 :
-            return "\xEB\xA7\xAE";
-            break;
-          }
-          break;
-        case 0xA8 :
-          switch (prefix[2]) {
-          case 0x80 :
-            return "\xEB\xA8\x8A";
-            break;
-          case 0x9C :
-            return "\xEB\xA8\xA6";
-            break;
-          case 0xB8 :
-            return "\xEB\xA9\x82";
-            break;
-          }
-          break;
-        case 0xA9 :
-          switch (prefix[2]) {
-          case 0x94 :
-            return "\xEB\xA9\x9E";
-            break;
-          case 0xB0 :
-            return "\xEB\xA9\xBA";
-            break;
-          }
-          break;
-        case 0xAA :
-          switch (prefix[2]) {
-          case 0x8C :
-            return "\xEB\xAA\x96";
-            break;
-          case 0xA8 :
-            return "\xEB\xAA\xB2";
-            break;
-          }
-          break;
-        case 0xAB :
-          switch (prefix[2]) {
-          case 0x84 :
-            return "\xEB\xAB\x8E";
-            break;
-          case 0xA0 :
-            return "\xEB\xAB\xAA";
-            break;
-          case 0xBC :
-            return "\xEB\xAC\x86";
-            break;
-          }
-          break;
-        case 0xAC :
-          switch (prefix[2]) {
-          case 0x98 :
-            return "\xEB\xAC\xA2";
-            break;
-          case 0xB4 :
-            return "\xEB\xAC\xBE";
-            break;
-          }
-          break;
-        case 0xAD :
-          switch (prefix[2]) {
-          case 0x90 :
-            return "\xEB\xAD\x9A";
-            break;
-          case 0xAC :
-            return "\xEB\xAD\xB6";
-            break;
-          }
-          break;
-        case 0xAE :
-          switch (prefix[2]) {
-          case 0x88 :
-            return "\xEB\xAE\x92";
-            break;
-          case 0xA4 :
-            return "\xEB\xAE\xAE";
-            break;
-          }
-          break;
-        case 0xAF :
... truncated to 1.0MB




More information about the Groonga-commit mailing list
Zurück zum Archiv-Index