10 utf8_mbtowc (conv_t conv, ucs4_t *pwc, 
const unsigned char *s, 
int n)
    12   unsigned char c = s[0];
    17   } 
else if (c < 0xc2) {
    19   } 
else if (c < 0xe0) {
    22     if (!((s[1] ^ 0x80) < 0x40))
    24     *pwc = ((ucs4_t) (c & 0x1f) << 6)
    25            | (ucs4_t) (s[1] ^ 0x80);
    27   } 
else if (c < 0xf0) {
    30     if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
    31           && (c >= 0xe1 || s[1] >= 0xa0)))
    33     *pwc = ((ucs4_t) (c & 0x0f) << 12)
    34            | ((ucs4_t) (s[1] ^ 0x80) << 6)
    35            | (ucs4_t) (s[2] ^ 0x80);
    37   } 
else if (c < 0xf8) {
    40     if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
    41           && (s[3] ^ 0x80) < 0x40
    42           && (c >= 0xf1 || s[1] >= 0x90)))
    44     *pwc = ((ucs4_t) (c & 0x07) << 18)
    45            | ((ucs4_t) (s[1] ^ 0x80) << 12)
    46            | ((ucs4_t) (s[2] ^ 0x80) << 6)
    47            | (ucs4_t) (s[3] ^ 0x80);
    49   } 
else if (c < 0xfc) {
    52     if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
    53           && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
    54           && (c >= 0xf9 || s[1] >= 0x88)))
    56     *pwc = ((ucs4_t) (c & 0x03) << 24)
    57            | ((ucs4_t) (s[1] ^ 0x80) << 18)
    58            | ((ucs4_t) (s[2] ^ 0x80) << 12)
    59            | ((ucs4_t) (s[3] ^ 0x80) << 6)
    60            | (ucs4_t) (s[4] ^ 0x80);
    62   } 
else if (c < 0xfe) {
    65     if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
    66           && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
    67           && (s[5] ^ 0x80) < 0x40
    68           && (c >= 0xfd || s[1] >= 0x84)))
    70     *pwc = ((ucs4_t) (c & 0x01) << 30)
    71            | ((ucs4_t) (s[1] ^ 0x80) << 24)
    72            | ((ucs4_t) (s[2] ^ 0x80) << 18)
    73            | ((ucs4_t) (s[3] ^ 0x80) << 12)
    74            | ((ucs4_t) (s[4] ^ 0x80) << 6)
    75            | (ucs4_t) (s[5] ^ 0x80);
    82 utf8_wctomb (conv_t conv, 
unsigned char *r, ucs4_t wc, 
int n) 
    89   else if (wc < 0x10000)
    91   else if (wc < 0x200000)
    93   else if (wc < 0x4000000)
    95   else if (wc <= 0x7fffffff)
   102     case 6: r[5] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x4000000;
   103     case 5: r[4] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x200000;
   104     case 4: r[3] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x10000;
   105     case 3: r[2] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x800;
   106     case 2: r[1] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0xc0;