monoeg_g_unichar_type (gunichar c)
{
  unsigned int D.5934;
  unsigned int D.5935;
  unsigned int D.5938;
  GUnicodeType D.5941;
  const guint8 * D.5942;
  unsigned int D.5943;
  sizetype D.5944;
  const guint8 * D.5945;
  unsigned char D.5946;
  short unsigned int D.5947;
  short unsigned int D.5950;
  short unsigned int D.5953;
  short unsigned int D.5956;
  short unsigned int D.5959;
  int i;
  guint16 cp;

  cp = (guint16) c;
  i = 0;
  goto <D.5856>;
  <D.5855>:
  D.5934 = (unsigned int) cp;
  D.5935 = unicode_category_ranges[i].start;
  if (D.5934 < D.5935) goto <D.5936>; else goto <D.5937>;
  <D.5936>:
  // predicted unlikely by continue predictor.
  goto <D.5854>;
  <D.5937>:
  D.5938 = unicode_category_ranges[i].end;
  D.5934 = (unsigned int) cp;
  if (D.5938 <= D.5934) goto <D.5939>; else goto <D.5940>;
  <D.5939>:
  // predicted unlikely by continue predictor.
  goto <D.5854>;
  <D.5940>:
  D.5942 = unicode_category[i];
  D.5934 = (unsigned int) cp;
  D.5935 = unicode_category_ranges[i].start;
  D.5943 = D.5934 - D.5935;
  D.5944 = (sizetype) D.5943;
  D.5945 = D.5942 + D.5944;
  D.5946 = *D.5945;
  D.5941 = (GUnicodeType) D.5946;
  return D.5941;
  <D.5854>:
  i = i + 1;
  <D.5856>:
  if (i <= 10) goto <D.5855>; else goto <D.5857>;
  <D.5857>:
  D.5947 = cp + 52224;
  if (D.5947 <= 6580) goto <D.5948>; else goto <D.5949>;
  <D.5948>:
  D.5941 = 7;
  return D.5941;
  <D.5949>:
  D.5950 = cp + 45568;
  if (D.5950 <= 20930) goto <D.5951>; else goto <D.5952>;
  <D.5951>:
  D.5941 = 7;
  return D.5941;
  <D.5952>:
  D.5953 = cp + 21504;
  if (D.5953 <= 11170) goto <D.5954>; else goto <D.5955>;
  <D.5954>:
  D.5941 = 7;
  return D.5941;
  <D.5955>:
  D.5956 = cp + 10240;
  if (D.5956 <= 2046) goto <D.5957>; else goto <D.5958>;
  <D.5957>:
  D.5941 = 4;
  return D.5941;
  <D.5958>:
  D.5959 = cp + 8192;
  if (D.5959 <= 6398) goto <D.5960>; else goto <D.5961>;
  <D.5960>:
  D.5941 = 3;
  return D.5941;
  <D.5961>:
  D.5941 = 0;
  return D.5941;
}


monoeg_unichar_break_type (gunichar c)
{
  GUnicodeBreakType D.5963;

  D.5963 = 28;
  return D.5963;
}


monoeg_g_unichar_case (gunichar c, gboolean upper)
{
  int D.5965;
  unsigned int D.5966;
  gunichar D.5969;
  unsigned int D.5970;
  const guint16 * iftmp.0;
  unsigned int D.5979;
  long unsigned int D.5980;
  long unsigned int D.5981;
  const guint16 * D.5982;
  short unsigned int D.5983;
  unsigned char i.1;
  unsigned char D.5986;
  const guint32 * iftmp.2;
  int D.5990;
  long unsigned int D.5992;
  const guint32 * D.5993;
  gunichar iftmp.3;
  signed char i.4;
  unsigned char i.5;
  unsigned char D.6000;
  gint8 i;
  gint8 i2;
  guint32 cp;
  guint32 v;

  cp = c;
  i = 0;
  goto <D.5873>;
  <D.5872>:
  D.5965 = (int) i;
  D.5966 = simple_case_map_ranges[D.5965].start;
  if (D.5966 > cp) goto <D.5967>; else goto <D.5968>;
  <D.5967>:
  D.5969 = c;
  return D.5969;
  <D.5968>:
  D.5965 = (int) i;
  D.5970 = simple_case_map_ranges[D.5965].end;
  if (D.5970 <= cp) goto <D.5971>; else goto <D.5972>;
  <D.5971>:
  // predicted unlikely by continue predictor.
  goto <D.5869>;
  <D.5972>:
  if (c <= 65535) goto <D.5973>; else goto <D.5974>;
  <D.5973>:
  {
    const guint16 * tab;

    if (upper != 0) goto <D.5976>; else goto <D.5977>;
    <D.5976>:
    D.5965 = (int) i;
    iftmp.0 = simple_upper_case_mapping_lowarea[D.5965];
    goto <D.5978>;
    <D.5977>:
    D.5965 = (int) i;
    iftmp.0 = simple_lower_case_mapping_lowarea[D.5965];
    <D.5978>:
    tab = iftmp.0;
    D.5965 = (int) i;
    D.5966 = simple_case_map_ranges[D.5965].start;
    D.5979 = cp - D.5966;
    D.5980 = (long unsigned int) D.5979;
    D.5981 = D.5980 * 2;
    D.5982 = tab + D.5981;
    D.5983 = *D.5982;
    v = (guint32) D.5983;
  }
  goto <D.5984>;
  <D.5974>:
  {
    const guint32 * tab;

    i.1 = (unsigned char) i;
    D.5986 = i.1 + 248;
    i2 = (gint8) D.5986;
    if (upper != 0) goto <D.5988>; else goto <D.5989>;
    <D.5988>:
    D.5990 = (int) i2;
    iftmp.2 = simple_upper_case_mapping_higharea[D.5990];
    goto <D.5991>;
    <D.5989>:
    D.5990 = (int) i2;
    iftmp.2 = simple_lower_case_mapping_higharea[D.5990];
    <D.5991>:
    tab = iftmp.2;
    D.5965 = (int) i;
    D.5966 = simple_case_map_ranges[D.5965].start;
    D.5979 = cp - D.5966;
    D.5980 = (long unsigned int) D.5979;
    D.5992 = D.5980 * 4;
    D.5993 = tab + D.5992;
    v = *D.5993;
  }
  <D.5984>:
  if (v != 0) goto <D.5995>; else goto <D.5996>;
  <D.5995>:
  iftmp.3 = v;
  goto <D.5997>;
  <D.5996>:
  iftmp.3 = c;
  <D.5997>:
  D.5969 = iftmp.3;
  return D.5969;
  <D.5869>:
  i.4 = i;
  i.5 = (unsigned char) i.4;
  D.6000 = i.5 + 1;
  i = (gint8) D.6000;
  <D.5873>:
  if (i <= 8) goto <D.5872>; else goto <D.5874>;
  <D.5874>:
  D.5969 = c;
  return D.5969;
}


monoeg_g_unichar_toupper (gunichar c)
{
  gunichar D.6002;

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


monoeg_g_unichar_tolower (gunichar c)
{
  gunichar D.6004;

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


monoeg_g_unichar_totitle (gunichar c)
{
  int D.6006;
  unsigned int D.6007;
  gunichar D.6010;
  unsigned char i.6;
  guint8 i;
  guint32 cp;

  cp = c;
  i = 0;
  goto <D.5888>;
  <D.5887>:
  D.6006 = (int) i;
  D.6007 = simple_titlecase_mapping[D.6006].codepoint;
  if (D.6007 == cp) goto <D.6008>; else goto <D.6009>;
  <D.6008>:
  D.6006 = (int) i;
  D.6010 = simple_titlecase_mapping[D.6006].title;
  return D.6010;
  <D.6009>:
  D.6006 = (int) i;
  D.6007 = simple_titlecase_mapping[D.6006].codepoint;
  if (D.6007 > cp) goto <D.5886>; else goto <D.6011>;
  <D.6011>:
  i.6 = i;
  i = i.6 + 1;
  <D.5888>:
  if (i <= 11) goto <D.5887>; else goto <D.5886>;
  <D.5886>:
  D.6010 = monoeg_g_unichar_toupper (c);
  return D.6010;
}


monoeg_g_unichar_isxdigit (gunichar c)
{
  gboolean D.6014;
  int D.6015;
  _Bool D.6016;

  D.6015 = monoeg_g_unichar_xdigit_value (c);
  D.6016 = D.6015 != -1;
  D.6014 = (gboolean) D.6016;
  return D.6014;
}


monoeg_g_unichar_xdigit_value (gunichar c)
{
  unsigned int D.6018;
  gint D.6021;
  unsigned int D.6022;
  unsigned int D.6025;
  unsigned int D.6026;
  unsigned int D.6029;

  D.6018 = c + 4294967248;
  if (D.6018 <= 9) goto <D.6019>; else goto <D.6020>;
  <D.6019>:
  D.6018 = c + 4294967248;
  D.6021 = (gint) D.6018;
  return D.6021;
  <D.6020>:
  D.6022 = c + 4294967231;
  if (D.6022 <= 5) goto <D.6023>; else goto <D.6024>;
  <D.6023>:
  D.6025 = c + 4294967241;
  D.6021 = (gint) D.6025;
  return D.6021;
  <D.6024>:
  D.6026 = c + 4294967199;
  if (D.6026 <= 5) goto <D.6027>; else goto <D.6028>;
  <D.6027>:
  D.6029 = c + 4294967209;
  D.6021 = (gint) D.6029;
  return D.6021;
  <D.6028>:
  D.6021 = -1;
  return D.6021;
}


monoeg_unichar_isspace (gunichar c)
{
  unsigned int D.6031;
  gboolean D.6034;
  GUnicodeType type;

  type = monoeg_g_unichar_type (c);
  D.6031 = type + 4294967269;
  if (D.6031 <= 2) goto <D.6032>; else goto <D.6033>;
  <D.6032>:
  D.6034 = 1;
  return D.6034;
  <D.6033>:
  D.6034 = 0;
  return D.6034;
}


monoeg_g_filename_from_utf8 (const gchar * utf8string, gssize len, gsize * bytes_read, gsize * bytes_written, struct GError * * error)
{
  long unsigned int D.6038;
  long int D.6039;
  long unsigned int D.6040;
  gchar * D.6041;
  char * res;

  if (len == -1) goto <D.6036>; else goto <D.6037>;
  <D.6036>:
  D.6038 = strlen (utf8string);
  len = (gssize) D.6038;
  <D.6037>:
  D.6039 = len + 1;
  D.6040 = (long unsigned int) D.6039;
  res = monoeg_malloc (D.6040);
  D.6039 = len + 1;
  D.6040 = (long unsigned int) D.6039;
  monoeg_g_strlcpy (res, utf8string, D.6040);
  D.6041 = res;
  return D.6041;
}


monoeg_g_get_charset (const char * * charset)
{
  const char * my_charset.7;
  char * my_charset.8;
  int D.5918;
  int iftmp.9;
  int D.5917;
  char[6] * D.6050;
  unsigned char D.6051;
  int D.6052;
  unsigned char D.6053;
  int D.6054;
  const unsigned char * D.6059;
  unsigned char D.6060;
  int D.6061;
  const unsigned char * D.6062;
  unsigned char D.6063;
  int D.6064;
  const unsigned char * D.6069;
  unsigned char D.6070;
  int D.6071;
  const unsigned char * D.6072;
  unsigned char D.6073;
  int D.6074;
  const unsigned char * D.6079;
  unsigned char D.6080;
  int D.6081;
  const unsigned char * D.6082;
  unsigned char D.6083;
  int D.6084;
  _Bool D.6086;
  int is_utf8.10;
  gboolean D.6090;

  my_charset.7 = my_charset;
  if (my_charset.7 == 0B) goto <D.6044>; else goto <D.6045>;
  <D.6044>:
  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.6048>; else goto <D.6049>;
    <D.6048>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = my_charset;
      D.6050 = "UTF-8";
      D.6051 = MEM[(const unsigned char *)D.6050];
      D.6052 = (int) D.6051;
      D.6053 = *__s2;
      D.6054 = (int) D.6053;
      __result = D.6052 - D.6054;
      {
        if (__s2_len != 0) goto <D.6055>; else goto <D.6056>;
        <D.6055>:
        if (__result == 0) goto <D.6057>; else goto <D.6058>;
        <D.6057>:
        D.6059 = &MEM[(void *)"UTF-8" + 1B];
        D.6060 = *D.6059;
        D.6061 = (int) D.6060;
        D.6062 = __s2 + 1;
        D.6063 = *D.6062;
        D.6064 = (int) D.6063;
        __result = D.6061 - D.6064;
        if (__s2_len > 1) goto <D.6065>; else goto <D.6066>;
        <D.6065>:
        if (__result == 0) goto <D.6067>; else goto <D.6068>;
        <D.6067>:
        D.6069 = &MEM[(void *)"UTF-8" + 2B];
        D.6070 = *D.6069;
        D.6071 = (int) D.6070;
        D.6072 = __s2 + 2;
        D.6073 = *D.6072;
        D.6074 = (int) D.6073;
        __result = D.6071 - D.6074;
        if (__s2_len > 2) goto <D.6075>; else goto <D.6076>;
        <D.6075>:
        if (__result == 0) goto <D.6077>; else goto <D.6078>;
        <D.6077>:
        D.6079 = &MEM[(void *)"UTF-8" + 3B];
        D.6080 = *D.6079;
        D.6081 = (int) D.6080;
        D.6082 = __s2 + 3;
        D.6083 = *D.6082;
        D.6084 = (int) D.6083;
        __result = D.6081 - D.6084;
        <D.6078>:
        <D.6076>:
        <D.6068>:
        <D.6066>:
        <D.6058>:
        <D.6056>:
      }
      D.5917 = __result;
    }
    iftmp.9 = -D.5917;
    goto <D.6085>;
    <D.6049>:
    my_charset.7 = my_charset;
    iftmp.9 = __builtin_strcmp (my_charset.7, "UTF-8");
    <D.6085>:
    D.5918 = iftmp.9;
  }
  D.6086 = D.5918 == 0;
  is_utf8.10 = (int) D.6086;
  is_utf8 = is_utf8.10;
  <D.6045>:
  if (charset != 0B) goto <D.6088>; else goto <D.6089>;
  <D.6088>:
  my_charset.7 = my_charset;
  *charset = my_charset.7;
  <D.6089>:
  D.6090 = is_utf8;
  return D.6090;
}


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

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


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

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


