monoeg_g_unichar_type (gunichar c)
{
  unsigned int D.5070;
  unsigned int D.5071;
  unsigned int D.5074;
  GUnicodeType D.5077;
  const guint8 * D.5078;
  unsigned int D.5079;
  const guint8 * D.5080;
  unsigned char D.5081;
  short unsigned int D.5082;
  short unsigned int D.5085;
  short unsigned int D.5088;
  short unsigned int D.5091;
  short unsigned int D.5094;
  int i;
  guint16 cp;

  cp = (guint16) c;
  i = 0;
  goto <D.4992>;
  <D.4991>:
  D.5070 = (unsigned int) cp;
  D.5071 = unicode_category_ranges[i].start;
  if (D.5070 < D.5071) goto <D.5072>; else goto <D.5073>;
  <D.5072>:
  // predicted unlikely by continue predictor.
  goto <D.4990>;
  <D.5073>:
  D.5074 = unicode_category_ranges[i].end;
  D.5070 = (unsigned int) cp;
  if (D.5074 <= D.5070) goto <D.5075>; else goto <D.5076>;
  <D.5075>:
  // predicted unlikely by continue predictor.
  goto <D.4990>;
  <D.5076>:
  D.5078 = unicode_category[i];
  D.5070 = (unsigned int) cp;
  D.5071 = unicode_category_ranges[i].start;
  D.5079 = D.5070 - D.5071;
  D.5080 = D.5078 + D.5079;
  D.5081 = *D.5080;
  D.5077 = (GUnicodeType) D.5081;
  return D.5077;
  <D.4990>:
  i = i + 1;
  <D.4992>:
  if (i <= 10) goto <D.4991>; else goto <D.4993>;
  <D.4993>:
  D.5082 = cp + 52224;
  if (D.5082 <= 6580) goto <D.5083>; else goto <D.5084>;
  <D.5083>:
  D.5077 = 7;
  return D.5077;
  <D.5084>:
  D.5085 = cp + 45568;
  if (D.5085 <= 20930) goto <D.5086>; else goto <D.5087>;
  <D.5086>:
  D.5077 = 7;
  return D.5077;
  <D.5087>:
  D.5088 = cp + 21504;
  if (D.5088 <= 11170) goto <D.5089>; else goto <D.5090>;
  <D.5089>:
  D.5077 = 7;
  return D.5077;
  <D.5090>:
  D.5091 = cp + 10240;
  if (D.5091 <= 2046) goto <D.5092>; else goto <D.5093>;
  <D.5092>:
  D.5077 = 4;
  return D.5077;
  <D.5093>:
  D.5094 = cp + 8192;
  if (D.5094 <= 6398) goto <D.5095>; else goto <D.5096>;
  <D.5095>:
  D.5077 = 3;
  return D.5077;
  <D.5096>:
  D.5077 = 0;
  return D.5077;
}


monoeg_unichar_break_type (gunichar c)
{
  GUnicodeBreakType D.5098;

  D.5098 = 28;
  return D.5098;
}


monoeg_g_unichar_case (gunichar c, gboolean upper)
{
  int D.5100;
  unsigned int D.5101;
  gunichar D.5104;
  unsigned int D.5105;
  const guint16 * iftmp.0;
  unsigned int D.5114;
  unsigned int D.5115;
  const guint16 * D.5116;
  short unsigned int D.5117;
  unsigned char i.1;
  unsigned char D.5120;
  const guint32 * iftmp.2;
  int D.5124;
  unsigned int D.5126;
  const guint32 * D.5127;
  gunichar iftmp.3;
  signed char i.4;
  unsigned char i.5;
  unsigned char D.5134;
  gint8 i;
  gint8 i2;
  guint32 cp;
  guint32 v;

  cp = c;
  i = 0;
  goto <D.5009>;
  <D.5008>:
  D.5100 = (int) i;
  D.5101 = simple_case_map_ranges[D.5100].start;
  if (D.5101 > cp) goto <D.5102>; else goto <D.5103>;
  <D.5102>:
  D.5104 = c;
  return D.5104;
  <D.5103>:
  D.5100 = (int) i;
  D.5105 = simple_case_map_ranges[D.5100].end;
  if (D.5105 <= cp) goto <D.5106>; else goto <D.5107>;
  <D.5106>:
  // predicted unlikely by continue predictor.
  goto <D.5005>;
  <D.5107>:
  if (c <= 65535) goto <D.5108>; else goto <D.5109>;
  <D.5108>:
  {
    const guint16 * tab;

    if (upper != 0) goto <D.5111>; else goto <D.5112>;
    <D.5111>:
    D.5100 = (int) i;
    iftmp.0 = simple_upper_case_mapping_lowarea[D.5100];
    goto <D.5113>;
    <D.5112>:
    D.5100 = (int) i;
    iftmp.0 = simple_lower_case_mapping_lowarea[D.5100];
    <D.5113>:
    tab = iftmp.0;
    D.5100 = (int) i;
    D.5101 = simple_case_map_ranges[D.5100].start;
    D.5114 = cp - D.5101;
    D.5115 = D.5114 * 2;
    D.5116 = tab + D.5115;
    D.5117 = *D.5116;
    v = (guint32) D.5117;
  }
  goto <D.5118>;
  <D.5109>:
  {
    const guint32 * tab;

    i.1 = (unsigned char) i;
    D.5120 = i.1 + 248;
    i2 = (gint8) D.5120;
    if (upper != 0) goto <D.5122>; else goto <D.5123>;
    <D.5122>:
    D.5124 = (int) i2;
    iftmp.2 = simple_upper_case_mapping_higharea[D.5124];
    goto <D.5125>;
    <D.5123>:
    D.5124 = (int) i2;
    iftmp.2 = simple_lower_case_mapping_higharea[D.5124];
    <D.5125>:
    tab = iftmp.2;
    D.5100 = (int) i;
    D.5101 = simple_case_map_ranges[D.5100].start;
    D.5114 = cp - D.5101;
    D.5126 = D.5114 * 4;
    D.5127 = tab + D.5126;
    v = *D.5127;
  }
  <D.5118>:
  if (v != 0) goto <D.5129>; else goto <D.5130>;
  <D.5129>:
  iftmp.3 = v;
  goto <D.5131>;
  <D.5130>:
  iftmp.3 = c;
  <D.5131>:
  D.5104 = iftmp.3;
  return D.5104;
  <D.5005>:
  i.4 = i;
  i.5 = (unsigned char) i.4;
  D.5134 = i.5 + 1;
  i = (gint8) D.5134;
  <D.5009>:
  if (i <= 8) goto <D.5008>; else goto <D.5010>;
  <D.5010>:
  D.5104 = c;
  return D.5104;
}


monoeg_g_unichar_toupper (gunichar c)
{
  gunichar D.5136;

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


monoeg_g_unichar_tolower (gunichar c)
{
  gunichar D.5138;

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


monoeg_g_unichar_totitle (gunichar c)
{
  int D.5140;
  unsigned int D.5141;
  gunichar D.5144;
  unsigned char i.6;
  guint8 i;
  guint32 cp;

  cp = c;
  i = 0;
  goto <D.5024>;
  <D.5023>:
  D.5140 = (int) i;
  D.5141 = simple_titlecase_mapping[D.5140].codepoint;
  if (D.5141 == cp) goto <D.5142>; else goto <D.5143>;
  <D.5142>:
  D.5140 = (int) i;
  D.5144 = simple_titlecase_mapping[D.5140].title;
  return D.5144;
  <D.5143>:
  D.5140 = (int) i;
  D.5141 = simple_titlecase_mapping[D.5140].codepoint;
  if (D.5141 > cp) goto <D.5022>; else goto <D.5145>;
  <D.5145>:
  i.6 = i;
  i = i.6 + 1;
  <D.5024>:
  if (i <= 11) goto <D.5023>; else goto <D.5022>;
  <D.5022>:
  D.5144 = monoeg_g_unichar_toupper (c);
  return D.5144;
}


monoeg_g_unichar_isxdigit (gunichar c)
{
  gboolean D.5148;
  int D.5149;
  _Bool D.5150;

  D.5149 = monoeg_g_unichar_xdigit_value (c);
  D.5150 = D.5149 != -1;
  D.5148 = (gboolean) D.5150;
  return D.5148;
}


monoeg_g_unichar_xdigit_value (gunichar c)
{
  unsigned int D.5152;
  gint D.5155;
  unsigned int D.5156;
  unsigned int D.5159;
  unsigned int D.5160;
  unsigned int D.5163;

  D.5152 = c + 4294967248;
  if (D.5152 <= 9) goto <D.5153>; else goto <D.5154>;
  <D.5153>:
  D.5152 = c + 4294967248;
  D.5155 = (gint) D.5152;
  return D.5155;
  <D.5154>:
  D.5156 = c + 4294967231;
  if (D.5156 <= 5) goto <D.5157>; else goto <D.5158>;
  <D.5157>:
  D.5159 = c + 4294967241;
  D.5155 = (gint) D.5159;
  return D.5155;
  <D.5158>:
  D.5160 = c + 4294967199;
  if (D.5160 <= 5) goto <D.5161>; else goto <D.5162>;
  <D.5161>:
  D.5163 = c + 4294967209;
  D.5155 = (gint) D.5163;
  return D.5155;
  <D.5162>:
  D.5155 = -1;
  return D.5155;
}


monoeg_unichar_isspace (gunichar c)
{
  unsigned int D.5165;
  gboolean D.5168;
  GUnicodeType type;

  type = monoeg_g_unichar_type (c);
  D.5165 = type + 4294967269;
  if (D.5165 <= 2) goto <D.5166>; else goto <D.5167>;
  <D.5166>:
  D.5168 = 1;
  return D.5168;
  <D.5167>:
  D.5168 = 0;
  return D.5168;
}


monoeg_g_filename_from_utf8 (const gchar * utf8string, gssize len, gsize * bytes_read, gsize * bytes_written, struct GError * * error)
{
  unsigned int D.5172;
  int D.5173;
  unsigned int D.5174;
  gchar * D.5175;
  char * res;

  if (len == -1) goto <D.5170>; else goto <D.5171>;
  <D.5170>:
  D.5172 = strlen (utf8string);
  len = (gssize) D.5172;
  <D.5171>:
  D.5173 = len + 1;
  D.5174 = (unsigned int) D.5173;
  res = monoeg_malloc (D.5174);
  D.5173 = len + 1;
  D.5174 = (unsigned int) D.5173;
  monoeg_g_strlcpy (res, utf8string, D.5174);
  D.5175 = res;
  return D.5175;
}


monoeg_g_get_charset (const char * * charset)
{
  const char * my_charset.7;
  char * my_charset.8;
  int D.5054;
  int iftmp.9;
  int D.5053;
  char[6] * D.5184;
  unsigned char D.5185;
  int D.5186;
  unsigned char D.5187;
  int D.5188;
  _Bool D.5189;
  _Bool D.5190;
  _Bool D.5191;
  const unsigned char * D.5194;
  unsigned char D.5195;
  int D.5196;
  const unsigned char * D.5197;
  unsigned char D.5198;
  int D.5199;
  _Bool D.5200;
  _Bool D.5201;
  const unsigned char * D.5204;
  unsigned char D.5205;
  int D.5206;
  const unsigned char * D.5207;
  unsigned char D.5208;
  int D.5209;
  _Bool D.5210;
  _Bool D.5211;
  const unsigned char * D.5214;
  unsigned char D.5215;
  int D.5216;
  const unsigned char * D.5217;
  unsigned char D.5218;
  int D.5219;
  _Bool D.5221;
  int is_utf8.10;
  gboolean D.5225;

  my_charset.7 = my_charset;
  if (my_charset.7 == 0B) goto <D.5178>; else goto <D.5179>;
  <D.5178>:
  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.5182>; else goto <D.5183>;
    <D.5182>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = my_charset;
      D.5184 = "UTF-8";
      D.5185 = MEM[(const unsigned char *)D.5184];
      D.5186 = (int) D.5185;
      D.5187 = *__s2;
      D.5188 = (int) D.5187;
      __result = D.5186 - D.5188;
      {
        D.5189 = __s2_len != 0;
        D.5190 = __result == 0;
        D.5191 = D.5189 & D.5190;
        if (D.5191 != 0) goto <D.5192>; else goto <D.5193>;
        <D.5192>:
        D.5194 = &MEM[(void *)"UTF-8" + 1B];
        D.5195 = *D.5194;
        D.5196 = (int) D.5195;
        D.5197 = __s2 + 1;
        D.5198 = *D.5197;
        D.5199 = (int) D.5198;
        __result = D.5196 - D.5199;
        D.5200 = __s2_len > 1;
        D.5190 = __result == 0;
        D.5201 = D.5200 & D.5190;
        if (D.5201 != 0) goto <D.5202>; else goto <D.5203>;
        <D.5202>:
        D.5204 = &MEM[(void *)"UTF-8" + 2B];
        D.5205 = *D.5204;
        D.5206 = (int) D.5205;
        D.5207 = __s2 + 2;
        D.5208 = *D.5207;
        D.5209 = (int) D.5208;
        __result = D.5206 - D.5209;
        D.5210 = __s2_len > 2;
        D.5190 = __result == 0;
        D.5211 = D.5210 & D.5190;
        if (D.5211 != 0) goto <D.5212>; else goto <D.5213>;
        <D.5212>:
        D.5214 = &MEM[(void *)"UTF-8" + 3B];
        D.5215 = *D.5214;
        D.5216 = (int) D.5215;
        D.5217 = __s2 + 3;
        D.5218 = *D.5217;
        D.5219 = (int) D.5218;
        __result = D.5216 - D.5219;
        <D.5213>:
        <D.5203>:
        <D.5193>:
      }
      D.5053 = __result;
    }
    iftmp.9 = -D.5053;
    goto <D.5220>;
    <D.5183>:
    my_charset.7 = my_charset;
    iftmp.9 = __builtin_strcmp (my_charset.7, "UTF-8");
    <D.5220>:
    D.5054 = iftmp.9;
  }
  D.5221 = D.5054 == 0;
  is_utf8.10 = (int) D.5221;
  is_utf8 = is_utf8.10;
  <D.5179>:
  if (charset != 0B) goto <D.5223>; else goto <D.5224>;
  <D.5223>:
  my_charset.7 = my_charset;
  *charset = my_charset.7;
  <D.5224>:
  D.5225 = is_utf8;
  return D.5225;
}


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

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


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

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


