monoeg_g_unichar_type (gunichar c)
{
  unsigned int D.5090;
  unsigned int D.5091;
  unsigned int D.5094;
  GUnicodeType D.5097;
  const guint8 * D.5098;
  unsigned int D.5099;
  const guint8 * D.5100;
  unsigned char D.5101;
  short unsigned int D.5102;
  short unsigned int D.5105;
  short unsigned int D.5108;
  short unsigned int D.5111;
  short unsigned int D.5114;
  int i;
  guint16 cp;

  cp = (guint16) c;
  i = 0;
  goto <D.5012>;
  <D.5011>:
  D.5090 = (unsigned int) cp;
  D.5091 = unicode_category_ranges[i].start;
  if (D.5090 < D.5091) goto <D.5092>; else goto <D.5093>;
  <D.5092>:
  // predicted unlikely by continue predictor.
  goto <D.5010>;
  <D.5093>:
  D.5094 = unicode_category_ranges[i].end;
  D.5090 = (unsigned int) cp;
  if (D.5094 <= D.5090) goto <D.5095>; else goto <D.5096>;
  <D.5095>:
  // predicted unlikely by continue predictor.
  goto <D.5010>;
  <D.5096>:
  D.5098 = unicode_category[i];
  D.5090 = (unsigned int) cp;
  D.5091 = unicode_category_ranges[i].start;
  D.5099 = D.5090 - D.5091;
  D.5100 = D.5098 + D.5099;
  D.5101 = *D.5100;
  D.5097 = (GUnicodeType) D.5101;
  return D.5097;
  <D.5010>:
  i = i + 1;
  <D.5012>:
  if (i <= 10) goto <D.5011>; else goto <D.5013>;
  <D.5013>:
  D.5102 = cp + 52224;
  if (D.5102 <= 6580) goto <D.5103>; else goto <D.5104>;
  <D.5103>:
  D.5097 = 7;
  return D.5097;
  <D.5104>:
  D.5105 = cp + 45568;
  if (D.5105 <= 20930) goto <D.5106>; else goto <D.5107>;
  <D.5106>:
  D.5097 = 7;
  return D.5097;
  <D.5107>:
  D.5108 = cp + 21504;
  if (D.5108 <= 11170) goto <D.5109>; else goto <D.5110>;
  <D.5109>:
  D.5097 = 7;
  return D.5097;
  <D.5110>:
  D.5111 = cp + 10240;
  if (D.5111 <= 2046) goto <D.5112>; else goto <D.5113>;
  <D.5112>:
  D.5097 = 4;
  return D.5097;
  <D.5113>:
  D.5114 = cp + 8192;
  if (D.5114 <= 6398) goto <D.5115>; else goto <D.5116>;
  <D.5115>:
  D.5097 = 3;
  return D.5097;
  <D.5116>:
  D.5097 = 0;
  return D.5097;
}


monoeg_unichar_break_type (gunichar c)
{
  GUnicodeBreakType D.5118;

  D.5118 = 28;
  return D.5118;
}


monoeg_g_unichar_case (gunichar c, gboolean upper)
{
  int D.5120;
  unsigned int D.5121;
  gunichar D.5124;
  unsigned int D.5125;
  const guint16 * iftmp.0;
  unsigned int D.5134;
  unsigned int D.5135;
  const guint16 * D.5136;
  short unsigned int D.5137;
  unsigned char i.1;
  unsigned char D.5140;
  const guint32 * iftmp.2;
  int D.5144;
  unsigned int D.5146;
  const guint32 * D.5147;
  gunichar iftmp.3;
  signed char i.4;
  unsigned char i.5;
  unsigned char D.5154;
  gint8 i;
  gint8 i2;
  guint32 cp;
  guint32 v;

  cp = c;
  i = 0;
  goto <D.5029>;
  <D.5028>:
  D.5120 = (int) i;
  D.5121 = simple_case_map_ranges[D.5120].start;
  if (D.5121 > cp) goto <D.5122>; else goto <D.5123>;
  <D.5122>:
  D.5124 = c;
  return D.5124;
  <D.5123>:
  D.5120 = (int) i;
  D.5125 = simple_case_map_ranges[D.5120].end;
  if (D.5125 <= cp) goto <D.5126>; else goto <D.5127>;
  <D.5126>:
  // predicted unlikely by continue predictor.
  goto <D.5025>;
  <D.5127>:
  if (c <= 65535) goto <D.5128>; else goto <D.5129>;
  <D.5128>:
  {
    const guint16 * tab;

    if (upper != 0) goto <D.5131>; else goto <D.5132>;
    <D.5131>:
    D.5120 = (int) i;
    iftmp.0 = simple_upper_case_mapping_lowarea[D.5120];
    goto <D.5133>;
    <D.5132>:
    D.5120 = (int) i;
    iftmp.0 = simple_lower_case_mapping_lowarea[D.5120];
    <D.5133>:
    tab = iftmp.0;
    D.5120 = (int) i;
    D.5121 = simple_case_map_ranges[D.5120].start;
    D.5134 = cp - D.5121;
    D.5135 = D.5134 * 2;
    D.5136 = tab + D.5135;
    D.5137 = *D.5136;
    v = (guint32) D.5137;
  }
  goto <D.5138>;
  <D.5129>:
  {
    const guint32 * tab;

    i.1 = (unsigned char) i;
    D.5140 = i.1 + 248;
    i2 = (gint8) D.5140;
    if (upper != 0) goto <D.5142>; else goto <D.5143>;
    <D.5142>:
    D.5144 = (int) i2;
    iftmp.2 = simple_upper_case_mapping_higharea[D.5144];
    goto <D.5145>;
    <D.5143>:
    D.5144 = (int) i2;
    iftmp.2 = simple_lower_case_mapping_higharea[D.5144];
    <D.5145>:
    tab = iftmp.2;
    D.5120 = (int) i;
    D.5121 = simple_case_map_ranges[D.5120].start;
    D.5134 = cp - D.5121;
    D.5146 = D.5134 * 4;
    D.5147 = tab + D.5146;
    v = *D.5147;
  }
  <D.5138>:
  if (v != 0) goto <D.5149>; else goto <D.5150>;
  <D.5149>:
  iftmp.3 = v;
  goto <D.5151>;
  <D.5150>:
  iftmp.3 = c;
  <D.5151>:
  D.5124 = iftmp.3;
  return D.5124;
  <D.5025>:
  i.4 = i;
  i.5 = (unsigned char) i.4;
  D.5154 = i.5 + 1;
  i = (gint8) D.5154;
  <D.5029>:
  if (i <= 8) goto <D.5028>; else goto <D.5030>;
  <D.5030>:
  D.5124 = c;
  return D.5124;
}


monoeg_g_unichar_toupper (gunichar c)
{
  gunichar D.5156;

  D.5156 = monoeg_g_unichar_case (c, 1);
  return D.5156;
}


monoeg_g_unichar_tolower (gunichar c)
{
  gunichar D.5158;

  D.5158 = monoeg_g_unichar_case (c, 0);
  return D.5158;
}


monoeg_g_unichar_totitle (gunichar c)
{
  int D.5160;
  unsigned int D.5161;
  gunichar D.5164;
  unsigned char i.6;
  guint8 i;
  guint32 cp;

  cp = c;
  i = 0;
  goto <D.5044>;
  <D.5043>:
  D.5160 = (int) i;
  D.5161 = simple_titlecase_mapping[D.5160].codepoint;
  if (D.5161 == cp) goto <D.5162>; else goto <D.5163>;
  <D.5162>:
  D.5160 = (int) i;
  D.5164 = simple_titlecase_mapping[D.5160].title;
  return D.5164;
  <D.5163>:
  D.5160 = (int) i;
  D.5161 = simple_titlecase_mapping[D.5160].codepoint;
  if (D.5161 > cp) goto <D.5042>; else goto <D.5165>;
  <D.5165>:
  i.6 = i;
  i = i.6 + 1;
  <D.5044>:
  if (i <= 11) goto <D.5043>; else goto <D.5042>;
  <D.5042>:
  D.5164 = monoeg_g_unichar_toupper (c);
  return D.5164;
}


monoeg_g_unichar_isxdigit (gunichar c)
{
  gboolean D.5168;
  int D.5169;
  _Bool D.5170;

  D.5169 = monoeg_g_unichar_xdigit_value (c);
  D.5170 = D.5169 != -1;
  D.5168 = (gboolean) D.5170;
  return D.5168;
}


monoeg_g_unichar_xdigit_value (gunichar c)
{
  unsigned int D.5172;
  gint D.5175;
  unsigned int D.5176;
  unsigned int D.5179;
  unsigned int D.5180;
  unsigned int D.5183;

  D.5172 = c + 4294967248;
  if (D.5172 <= 9) goto <D.5173>; else goto <D.5174>;
  <D.5173>:
  D.5172 = c + 4294967248;
  D.5175 = (gint) D.5172;
  return D.5175;
  <D.5174>:
  D.5176 = c + 4294967231;
  if (D.5176 <= 5) goto <D.5177>; else goto <D.5178>;
  <D.5177>:
  D.5179 = c + 4294967241;
  D.5175 = (gint) D.5179;
  return D.5175;
  <D.5178>:
  D.5180 = c + 4294967199;
  if (D.5180 <= 5) goto <D.5181>; else goto <D.5182>;
  <D.5181>:
  D.5183 = c + 4294967209;
  D.5175 = (gint) D.5183;
  return D.5175;
  <D.5182>:
  D.5175 = -1;
  return D.5175;
}


monoeg_unichar_isspace (gunichar c)
{
  unsigned int D.5185;
  gboolean D.5188;
  GUnicodeType type;

  type = monoeg_g_unichar_type (c);
  D.5185 = type + 4294967269;
  if (D.5185 <= 2) goto <D.5186>; else goto <D.5187>;
  <D.5186>:
  D.5188 = 1;
  return D.5188;
  <D.5187>:
  D.5188 = 0;
  return D.5188;
}


monoeg_g_filename_from_utf8 (const gchar * utf8string, gssize len, gsize * bytes_read, gsize * bytes_written, struct GError * * error)
{
  unsigned int D.5192;
  int D.5193;
  unsigned int D.5194;
  gchar * D.5195;
  char * res;

  if (len == -1) goto <D.5190>; else goto <D.5191>;
  <D.5190>:
  D.5192 = strlen (utf8string);
  len = (gssize) D.5192;
  <D.5191>:
  D.5193 = len + 1;
  D.5194 = (unsigned int) D.5193;
  res = monoeg_malloc (D.5194);
  D.5193 = len + 1;
  D.5194 = (unsigned int) D.5193;
  monoeg_g_strlcpy (res, utf8string, D.5194);
  D.5195 = res;
  return D.5195;
}


monoeg_g_get_charset (const char * * charset)
{
  const char * my_charset.7;
  char * my_charset.8;
  int D.5074;
  int iftmp.9;
  int D.5073;
  char[6] * D.5204;
  unsigned char D.5205;
  int D.5206;
  unsigned char D.5207;
  int D.5208;
  const unsigned char * D.5213;
  unsigned char D.5214;
  int D.5215;
  const unsigned char * D.5216;
  unsigned char D.5217;
  int D.5218;
  const unsigned char * D.5223;
  unsigned char D.5224;
  int D.5225;
  const unsigned char * D.5226;
  unsigned char D.5227;
  int D.5228;
  const unsigned char * D.5233;
  unsigned char D.5234;
  int D.5235;
  const unsigned char * D.5236;
  unsigned char D.5237;
  int D.5238;
  _Bool D.5240;
  int is_utf8.10;
  gboolean D.5244;

  my_charset.7 = my_charset;
  if (my_charset.7 == 0B) goto <D.5198>; else goto <D.5199>;
  <D.5198>:
  my_charset.8 = nl_langinfo (14);
  my_charset = my_charset.8;
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 5;
    if (__s2_len <= 3) goto <D.5202>; else goto <D.5203>;
    <D.5202>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = my_charset;
      D.5204 = "UTF-8";
      D.5205 = MEM[(const unsigned char *)D.5204];
      D.5206 = (int) D.5205;
      D.5207 = *__s2;
      D.5208 = (int) D.5207;
      __result = D.5206 - D.5208;
      {
        if (__s2_len != 0) goto <D.5209>; else goto <D.5210>;
        <D.5209>:
        if (__result == 0) goto <D.5211>; else goto <D.5212>;
        <D.5211>:
        D.5213 = &MEM[(void *)"UTF-8" + 1B];
        D.5214 = *D.5213;
        D.5215 = (int) D.5214;
        D.5216 = __s2 + 1;
        D.5217 = *D.5216;
        D.5218 = (int) D.5217;
        __result = D.5215 - D.5218;
        if (__s2_len > 1) goto <D.5219>; else goto <D.5220>;
        <D.5219>:
        if (__result == 0) goto <D.5221>; else goto <D.5222>;
        <D.5221>:
        D.5223 = &MEM[(void *)"UTF-8" + 2B];
        D.5224 = *D.5223;
        D.5225 = (int) D.5224;
        D.5226 = __s2 + 2;
        D.5227 = *D.5226;
        D.5228 = (int) D.5227;
        __result = D.5225 - D.5228;
        if (__s2_len > 2) goto <D.5229>; else goto <D.5230>;
        <D.5229>:
        if (__result == 0) goto <D.5231>; else goto <D.5232>;
        <D.5231>:
        D.5233 = &MEM[(void *)"UTF-8" + 3B];
        D.5234 = *D.5233;
        D.5235 = (int) D.5234;
        D.5236 = __s2 + 3;
        D.5237 = *D.5236;
        D.5238 = (int) D.5237;
        __result = D.5235 - D.5238;
        <D.5232>:
        <D.5230>:
        <D.5222>:
        <D.5220>:
        <D.5212>:
        <D.5210>:
      }
      D.5073 = __result;
    }
    iftmp.9 = -D.5073;
    goto <D.5239>;
    <D.5203>:
    my_charset.7 = my_charset;
    iftmp.9 = __builtin_strcmp (my_charset.7, "UTF-8");
    <D.5239>:
    D.5074 = iftmp.9;
  }
  D.5240 = D.5074 == 0;
  is_utf8.10 = (int) D.5240;
  is_utf8 = is_utf8.10;
  <D.5199>:
  if (charset != 0B) goto <D.5242>; else goto <D.5243>;
  <D.5242>:
  my_charset.7 = my_charset;
  *charset = my_charset.7;
  <D.5243>:
  D.5244 = is_utf8;
  return D.5244;
}


monoeg_g_locale_to_utf8 (const gchar * opsysstring, gssize len, gsize * bytes_read, gsize * bytes_written, struct GError * * error)
{
  gchar * D.5246;
  const char * my_charset.11;

  monoeg_g_get_charset (0B);
  my_charset.11 = my_charset;
  D.5246 = monoeg_g_convert (opsysstring, len, "UTF-8", my_charset.11, bytes_read, bytes_written, error);
  return D.5246;
}


monoeg_g_locale_from_utf8 (const gchar * utf8string, gssize len, gsize * bytes_read, gsize * bytes_written, struct GError * * error)
{
  gchar * D.5249;
  const char * my_charset.12;

  monoeg_g_get_charset (0B);
  my_charset.12 = my_charset;
  D.5249 = monoeg_g_convert (utf8string, len, my_charset.12, "UTF-8", bytes_read, bytes_written, error);
  return D.5249;
}


