monoeg_g_unichar_type (gunichar c)
{
  unsigned int D.7679;
  unsigned int D.7680;
  unsigned int D.7683;
  GUnicodeType D.7686;
  const guint8 * D.7687;
  unsigned int D.7688;
  const guint8 * D.7689;
  unsigned char D.7690;
  short unsigned int D.7691;
  short unsigned int D.7694;
  short unsigned int D.7697;
  short unsigned int D.7700;
  short unsigned int D.7703;
  int i;
  guint16 cp;

  cp = (guint16) c;
  i = 0;
  goto <D.7599>;
  <D.7598>:
  D.7679 = (unsigned int) cp;
  D.7680 = unicode_category_ranges[i].start;
  if (D.7679 < D.7680) goto <D.7681>; else goto <D.7682>;
  <D.7681>:
  // predicted unlikely by continue predictor.
  goto <D.7597>;
  <D.7682>:
  D.7683 = unicode_category_ranges[i].end;
  D.7679 = (unsigned int) cp;
  if (D.7683 <= D.7679) goto <D.7684>; else goto <D.7685>;
  <D.7684>:
  // predicted unlikely by continue predictor.
  goto <D.7597>;
  <D.7685>:
  D.7687 = unicode_category[i];
  D.7679 = (unsigned int) cp;
  D.7680 = unicode_category_ranges[i].start;
  D.7688 = D.7679 - D.7680;
  D.7689 = D.7687 + D.7688;
  D.7690 = *D.7689;
  D.7686 = (GUnicodeType) D.7690;
  return D.7686;
  <D.7597>:
  i = i + 1;
  <D.7599>:
  if (i <= 10) goto <D.7598>; else goto <D.7600>;
  <D.7600>:
  D.7691 = cp + 52224;
  if (D.7691 <= 6580) goto <D.7692>; else goto <D.7693>;
  <D.7692>:
  D.7686 = 7;
  return D.7686;
  <D.7693>:
  D.7694 = cp + 45568;
  if (D.7694 <= 20930) goto <D.7695>; else goto <D.7696>;
  <D.7695>:
  D.7686 = 7;
  return D.7686;
  <D.7696>:
  D.7697 = cp + 21504;
  if (D.7697 <= 11170) goto <D.7698>; else goto <D.7699>;
  <D.7698>:
  D.7686 = 7;
  return D.7686;
  <D.7699>:
  D.7700 = cp + 10240;
  if (D.7700 <= 2046) goto <D.7701>; else goto <D.7702>;
  <D.7701>:
  D.7686 = 4;
  return D.7686;
  <D.7702>:
  D.7703 = cp + 8192;
  if (D.7703 <= 6398) goto <D.7704>; else goto <D.7705>;
  <D.7704>:
  D.7686 = 3;
  return D.7686;
  <D.7705>:
  D.7686 = 0;
  return D.7686;
}


monoeg_unichar_break_type (gunichar c)
{
  GUnicodeBreakType D.7707;

  D.7707 = 28;
  return D.7707;
}


monoeg_g_unichar_case (gunichar c, gboolean upper)
{
  int D.7709;
  unsigned int D.7710;
  gunichar D.7713;
  unsigned int D.7714;
  const guint16 * iftmp.0;
  unsigned int D.7723;
  unsigned int D.7724;
  const guint16 * D.7725;
  short unsigned int D.7726;
  unsigned char i.1;
  unsigned char D.7729;
  const guint32 * iftmp.2;
  int D.7733;
  unsigned int D.7735;
  const guint32 * D.7736;
  gunichar iftmp.3;
  signed char i.4;
  unsigned char i.5;
  unsigned char D.7743;
  gint8 i;
  gint8 i2;
  guint32 cp;
  guint32 v;

  cp = c;
  i = 0;
  goto <D.7616>;
  <D.7615>:
  D.7709 = (int) i;
  D.7710 = simple_case_map_ranges[D.7709].start;
  if (D.7710 > cp) goto <D.7711>; else goto <D.7712>;
  <D.7711>:
  D.7713 = c;
  return D.7713;
  <D.7712>:
  D.7709 = (int) i;
  D.7714 = simple_case_map_ranges[D.7709].end;
  if (D.7714 <= cp) goto <D.7715>; else goto <D.7716>;
  <D.7715>:
  // predicted unlikely by continue predictor.
  goto <D.7612>;
  <D.7716>:
  if (c <= 65535) goto <D.7717>; else goto <D.7718>;
  <D.7717>:
  {
    const guint16 * tab;

    if (upper != 0) goto <D.7720>; else goto <D.7721>;
    <D.7720>:
    D.7709 = (int) i;
    iftmp.0 = simple_upper_case_mapping_lowarea[D.7709];
    goto <D.7722>;
    <D.7721>:
    D.7709 = (int) i;
    iftmp.0 = simple_lower_case_mapping_lowarea[D.7709];
    <D.7722>:
    tab = iftmp.0;
    D.7709 = (int) i;
    D.7710 = simple_case_map_ranges[D.7709].start;
    D.7723 = cp - D.7710;
    D.7724 = D.7723 * 2;
    D.7725 = tab + D.7724;
    D.7726 = *D.7725;
    v = (guint32) D.7726;
  }
  goto <D.7727>;
  <D.7718>:
  {
    const guint32 * tab;

    i.1 = (unsigned char) i;
    D.7729 = i.1 + 248;
    i2 = (gint8) D.7729;
    if (upper != 0) goto <D.7731>; else goto <D.7732>;
    <D.7731>:
    D.7733 = (int) i2;
    iftmp.2 = simple_upper_case_mapping_higharea[D.7733];
    goto <D.7734>;
    <D.7732>:
    D.7733 = (int) i2;
    iftmp.2 = simple_lower_case_mapping_higharea[D.7733];
    <D.7734>:
    tab = iftmp.2;
    D.7709 = (int) i;
    D.7710 = simple_case_map_ranges[D.7709].start;
    D.7723 = cp - D.7710;
    D.7735 = D.7723 * 4;
    D.7736 = tab + D.7735;
    v = *D.7736;
  }
  <D.7727>:
  if (v != 0) goto <D.7738>; else goto <D.7739>;
  <D.7738>:
  iftmp.3 = v;
  goto <D.7740>;
  <D.7739>:
  iftmp.3 = c;
  <D.7740>:
  D.7713 = iftmp.3;
  return D.7713;
  <D.7612>:
  i.4 = i;
  i.5 = (unsigned char) i.4;
  D.7743 = i.5 + 1;
  i = (gint8) D.7743;
  <D.7616>:
  if (i <= 8) goto <D.7615>; else goto <D.7617>;
  <D.7617>:
  D.7713 = c;
  return D.7713;
}


monoeg_g_unichar_toupper (gunichar c)
{
  gunichar D.7745;

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


monoeg_g_unichar_tolower (gunichar c)
{
  gunichar D.7747;

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


monoeg_g_unichar_totitle (gunichar c)
{
  int D.7749;
  unsigned int D.7750;
  gunichar D.7753;
  unsigned char i.6;
  guint8 i;
  guint32 cp;

  cp = c;
  i = 0;
  goto <D.7631>;
  <D.7630>:
  D.7749 = (int) i;
  D.7750 = simple_titlecase_mapping[D.7749].codepoint;
  if (D.7750 == cp) goto <D.7751>; else goto <D.7752>;
  <D.7751>:
  D.7749 = (int) i;
  D.7753 = simple_titlecase_mapping[D.7749].title;
  return D.7753;
  <D.7752>:
  D.7749 = (int) i;
  D.7750 = simple_titlecase_mapping[D.7749].codepoint;
  if (D.7750 > cp) goto <D.7629>; else goto <D.7754>;
  <D.7754>:
  i.6 = i;
  i = i.6 + 1;
  <D.7631>:
  if (i <= 11) goto <D.7630>; else goto <D.7629>;
  <D.7629>:
  D.7753 = monoeg_g_unichar_toupper (c);
  return D.7753;
}


monoeg_g_unichar_isxdigit (gunichar c)
{
  gboolean D.7757;
  int D.7758;
  _Bool D.7759;

  D.7758 = monoeg_g_unichar_xdigit_value (c);
  D.7759 = D.7758 != -1;
  D.7757 = (gboolean) D.7759;
  return D.7757;
}


monoeg_g_unichar_xdigit_value (gunichar c)
{
  unsigned int D.7761;
  gint D.7764;
  unsigned int D.7765;
  unsigned int D.7768;
  unsigned int D.7769;
  unsigned int D.7772;

  D.7761 = c + 4294967248;
  if (D.7761 <= 9) goto <D.7762>; else goto <D.7763>;
  <D.7762>:
  D.7761 = c + 4294967248;
  D.7764 = (gint) D.7761;
  return D.7764;
  <D.7763>:
  D.7765 = c + 4294967231;
  if (D.7765 <= 5) goto <D.7766>; else goto <D.7767>;
  <D.7766>:
  D.7768 = c + 4294967241;
  D.7764 = (gint) D.7768;
  return D.7764;
  <D.7767>:
  D.7769 = c + 4294967199;
  if (D.7769 <= 5) goto <D.7770>; else goto <D.7771>;
  <D.7770>:
  D.7772 = c + 4294967209;
  D.7764 = (gint) D.7772;
  return D.7764;
  <D.7771>:
  D.7764 = -1;
  return D.7764;
}


monoeg_unichar_isspace (gunichar c)
{
  unsigned int D.7774;
  gboolean D.7777;
  GUnicodeType type;

  type = monoeg_g_unichar_type (c);
  D.7774 = type + 4294967269;
  if (D.7774 <= 2) goto <D.7775>; else goto <D.7776>;
  <D.7775>:
  D.7777 = 1;
  return D.7777;
  <D.7776>:
  D.7777 = 0;
  return D.7777;
}


monoeg_g_filename_from_utf8 (const gchar * utf8string, gssize len, gsize * bytes_read, gsize * bytes_written, struct GError * * error)
{
  unsigned int D.7781;
  int D.7782;
  unsigned int D.7783;
  gchar * D.7784;
  char * res;

  if (len == -1) goto <D.7779>; else goto <D.7780>;
  <D.7779>:
  D.7781 = strlen (utf8string);
  len = (gssize) D.7781;
  <D.7780>:
  D.7782 = len + 1;
  D.7783 = (unsigned int) D.7782;
  res = monoeg_malloc (D.7783);
  D.7782 = len + 1;
  D.7783 = (unsigned int) D.7782;
  monoeg_g_strlcpy (res, utf8string, D.7783);
  D.7784 = res;
  return D.7784;
}


monoeg_g_get_charset (const char * * charset)
{
  const char * my_charset.7;
  char * my_charset.8;
  int D.7661;
  int iftmp.9;
  int D.7660;
  char[6] * D.7793;
  unsigned char D.7794;
  int D.7795;
  unsigned char D.7796;
  int D.7797;
  _Bool D.7798;
  _Bool D.7799;
  _Bool D.7800;
  const unsigned char * D.7803;
  unsigned char D.7804;
  int D.7805;
  const unsigned char * D.7806;
  unsigned char D.7807;
  int D.7808;
  _Bool D.7809;
  _Bool D.7810;
  const unsigned char * D.7813;
  unsigned char D.7814;
  int D.7815;
  const unsigned char * D.7816;
  unsigned char D.7817;
  int D.7818;
  _Bool D.7819;
  _Bool D.7820;
  const unsigned char * D.7823;
  unsigned char D.7824;
  int D.7825;
  const unsigned char * D.7826;
  unsigned char D.7827;
  int D.7828;
  _Bool D.7830;
  int is_utf8.10;
  gboolean D.7834;

  my_charset.7 = my_charset;
  if (my_charset.7 == 0B) goto <D.7787>; else goto <D.7788>;
  <D.7787>:
  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.7791>; else goto <D.7792>;
    <D.7791>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = my_charset;
      D.7793 = "UTF-8";
      D.7794 = MEM[(const unsigned char *)D.7793];
      D.7795 = (int) D.7794;
      D.7796 = *__s2;
      D.7797 = (int) D.7796;
      __result = D.7795 - D.7797;
      {
        D.7798 = __s2_len != 0;
        D.7799 = __result == 0;
        D.7800 = D.7798 & D.7799;
        if (D.7800 != 0) goto <D.7801>; else goto <D.7802>;
        <D.7801>:
        D.7803 = &MEM[(void *)"UTF-8" + 1B];
        D.7804 = *D.7803;
        D.7805 = (int) D.7804;
        D.7806 = __s2 + 1;
        D.7807 = *D.7806;
        D.7808 = (int) D.7807;
        __result = D.7805 - D.7808;
        D.7809 = __s2_len > 1;
        D.7799 = __result == 0;
        D.7810 = D.7809 & D.7799;
        if (D.7810 != 0) goto <D.7811>; else goto <D.7812>;
        <D.7811>:
        D.7813 = &MEM[(void *)"UTF-8" + 2B];
        D.7814 = *D.7813;
        D.7815 = (int) D.7814;
        D.7816 = __s2 + 2;
        D.7817 = *D.7816;
        D.7818 = (int) D.7817;
        __result = D.7815 - D.7818;
        D.7819 = __s2_len > 2;
        D.7799 = __result == 0;
        D.7820 = D.7819 & D.7799;
        if (D.7820 != 0) goto <D.7821>; else goto <D.7822>;
        <D.7821>:
        D.7823 = &MEM[(void *)"UTF-8" + 3B];
        D.7824 = *D.7823;
        D.7825 = (int) D.7824;
        D.7826 = __s2 + 3;
        D.7827 = *D.7826;
        D.7828 = (int) D.7827;
        __result = D.7825 - D.7828;
        <D.7822>:
        <D.7812>:
        <D.7802>:
      }
      D.7660 = __result;
    }
    iftmp.9 = -D.7660;
    goto <D.7829>;
    <D.7792>:
    my_charset.7 = my_charset;
    iftmp.9 = __builtin_strcmp (my_charset.7, "UTF-8");
    <D.7829>:
    D.7661 = iftmp.9;
  }
  D.7830 = D.7661 == 0;
  is_utf8.10 = (int) D.7830;
  is_utf8 = is_utf8.10;
  <D.7788>:
  if (charset != 0B) goto <D.7832>; else goto <D.7833>;
  <D.7832>:
  my_charset.7 = my_charset;
  *charset = my_charset.7;
  <D.7833>:
  D.7834 = is_utf8;
  return D.7834;
}


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

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


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

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


