monoeg_g_unichar_type (gunichar c)
{
  unsigned int D.5523;
  unsigned int D.5524;
  unsigned int D.5527;
  GUnicodeType D.5530;
  const guint8 * D.5531;
  unsigned int D.5532;
  sizetype D.5533;
  const guint8 * D.5534;
  unsigned char D.5535;
  short unsigned int D.5536;
  short unsigned int D.5539;
  short unsigned int D.5542;
  short unsigned int D.5545;
  short unsigned int D.5548;
  int i;
  guint16 cp;

  cp = (guint16) c;
  i = 0;
  goto <D.5445>;
  <D.5444>:
  D.5523 = (unsigned int) cp;
  D.5524 = unicode_category_ranges[i].start;
  if (D.5523 < D.5524) goto <D.5525>; else goto <D.5526>;
  <D.5525>:
  // predicted unlikely by continue predictor.
  goto <D.5443>;
  <D.5526>:
  D.5527 = unicode_category_ranges[i].end;
  D.5523 = (unsigned int) cp;
  if (D.5527 <= D.5523) goto <D.5528>; else goto <D.5529>;
  <D.5528>:
  // predicted unlikely by continue predictor.
  goto <D.5443>;
  <D.5529>:
  D.5531 = unicode_category[i];
  D.5523 = (unsigned int) cp;
  D.5524 = unicode_category_ranges[i].start;
  D.5532 = D.5523 - D.5524;
  D.5533 = (sizetype) D.5532;
  D.5534 = D.5531 + D.5533;
  D.5535 = *D.5534;
  D.5530 = (GUnicodeType) D.5535;
  return D.5530;
  <D.5443>:
  i = i + 1;
  <D.5445>:
  if (i <= 10) goto <D.5444>; else goto <D.5446>;
  <D.5446>:
  D.5536 = cp + 52224;
  if (D.5536 <= 6580) goto <D.5537>; else goto <D.5538>;
  <D.5537>:
  D.5530 = 7;
  return D.5530;
  <D.5538>:
  D.5539 = cp + 45568;
  if (D.5539 <= 20930) goto <D.5540>; else goto <D.5541>;
  <D.5540>:
  D.5530 = 7;
  return D.5530;
  <D.5541>:
  D.5542 = cp + 21504;
  if (D.5542 <= 11170) goto <D.5543>; else goto <D.5544>;
  <D.5543>:
  D.5530 = 7;
  return D.5530;
  <D.5544>:
  D.5545 = cp + 10240;
  if (D.5545 <= 2046) goto <D.5546>; else goto <D.5547>;
  <D.5546>:
  D.5530 = 4;
  return D.5530;
  <D.5547>:
  D.5548 = cp + 8192;
  if (D.5548 <= 6398) goto <D.5549>; else goto <D.5550>;
  <D.5549>:
  D.5530 = 3;
  return D.5530;
  <D.5550>:
  D.5530 = 0;
  return D.5530;
}


monoeg_unichar_break_type (gunichar c)
{
  GUnicodeBreakType D.5552;

  D.5552 = 28;
  return D.5552;
}


monoeg_g_unichar_case (gunichar c, gboolean upper)
{
  int D.5554;
  unsigned int D.5555;
  gunichar D.5558;
  unsigned int D.5559;
  const guint16 * iftmp.0;
  unsigned int D.5568;
  long unsigned int D.5569;
  long unsigned int D.5570;
  const guint16 * D.5571;
  short unsigned int D.5572;
  unsigned char i.1;
  unsigned char D.5575;
  const guint32 * iftmp.2;
  int D.5579;
  long unsigned int D.5581;
  const guint32 * D.5582;
  gunichar iftmp.3;
  signed char i.4;
  unsigned char i.5;
  unsigned char D.5589;
  gint8 i;
  gint8 i2;
  guint32 cp;
  guint32 v;

  cp = c;
  i = 0;
  goto <D.5462>;
  <D.5461>:
  D.5554 = (int) i;
  D.5555 = simple_case_map_ranges[D.5554].start;
  if (D.5555 > cp) goto <D.5556>; else goto <D.5557>;
  <D.5556>:
  D.5558 = c;
  return D.5558;
  <D.5557>:
  D.5554 = (int) i;
  D.5559 = simple_case_map_ranges[D.5554].end;
  if (D.5559 <= cp) goto <D.5560>; else goto <D.5561>;
  <D.5560>:
  // predicted unlikely by continue predictor.
  goto <D.5458>;
  <D.5561>:
  if (c <= 65535) goto <D.5562>; else goto <D.5563>;
  <D.5562>:
  {
    const guint16 * tab;

    if (upper != 0) goto <D.5565>; else goto <D.5566>;
    <D.5565>:
    D.5554 = (int) i;
    iftmp.0 = simple_upper_case_mapping_lowarea[D.5554];
    goto <D.5567>;
    <D.5566>:
    D.5554 = (int) i;
    iftmp.0 = simple_lower_case_mapping_lowarea[D.5554];
    <D.5567>:
    tab = iftmp.0;
    D.5554 = (int) i;
    D.5555 = simple_case_map_ranges[D.5554].start;
    D.5568 = cp - D.5555;
    D.5569 = (long unsigned int) D.5568;
    D.5570 = D.5569 * 2;
    D.5571 = tab + D.5570;
    D.5572 = *D.5571;
    v = (guint32) D.5572;
  }
  goto <D.5573>;
  <D.5563>:
  {
    const guint32 * tab;

    i.1 = (unsigned char) i;
    D.5575 = i.1 + 248;
    i2 = (gint8) D.5575;
    if (upper != 0) goto <D.5577>; else goto <D.5578>;
    <D.5577>:
    D.5579 = (int) i2;
    iftmp.2 = simple_upper_case_mapping_higharea[D.5579];
    goto <D.5580>;
    <D.5578>:
    D.5579 = (int) i2;
    iftmp.2 = simple_lower_case_mapping_higharea[D.5579];
    <D.5580>:
    tab = iftmp.2;
    D.5554 = (int) i;
    D.5555 = simple_case_map_ranges[D.5554].start;
    D.5568 = cp - D.5555;
    D.5569 = (long unsigned int) D.5568;
    D.5581 = D.5569 * 4;
    D.5582 = tab + D.5581;
    v = *D.5582;
  }
  <D.5573>:
  if (v != 0) goto <D.5584>; else goto <D.5585>;
  <D.5584>:
  iftmp.3 = v;
  goto <D.5586>;
  <D.5585>:
  iftmp.3 = c;
  <D.5586>:
  D.5558 = iftmp.3;
  return D.5558;
  <D.5458>:
  i.4 = i;
  i.5 = (unsigned char) i.4;
  D.5589 = i.5 + 1;
  i = (gint8) D.5589;
  <D.5462>:
  if (i <= 8) goto <D.5461>; else goto <D.5463>;
  <D.5463>:
  D.5558 = c;
  return D.5558;
}


monoeg_g_unichar_toupper (gunichar c)
{
  gunichar D.5591;

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


monoeg_g_unichar_tolower (gunichar c)
{
  gunichar D.5593;

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


monoeg_g_unichar_totitle (gunichar c)
{
  int D.5595;
  unsigned int D.5596;
  gunichar D.5599;
  unsigned char i.6;
  guint8 i;
  guint32 cp;

  cp = c;
  i = 0;
  goto <D.5477>;
  <D.5476>:
  D.5595 = (int) i;
  D.5596 = simple_titlecase_mapping[D.5595].codepoint;
  if (D.5596 == cp) goto <D.5597>; else goto <D.5598>;
  <D.5597>:
  D.5595 = (int) i;
  D.5599 = simple_titlecase_mapping[D.5595].title;
  return D.5599;
  <D.5598>:
  D.5595 = (int) i;
  D.5596 = simple_titlecase_mapping[D.5595].codepoint;
  if (D.5596 > cp) goto <D.5475>; else goto <D.5600>;
  <D.5600>:
  i.6 = i;
  i = i.6 + 1;
  <D.5477>:
  if (i <= 11) goto <D.5476>; else goto <D.5475>;
  <D.5475>:
  D.5599 = monoeg_g_unichar_toupper (c);
  return D.5599;
}


monoeg_g_unichar_isxdigit (gunichar c)
{
  gboolean D.5603;
  int D.5604;
  _Bool D.5605;

  D.5604 = monoeg_g_unichar_xdigit_value (c);
  D.5605 = D.5604 != -1;
  D.5603 = (gboolean) D.5605;
  return D.5603;
}


monoeg_g_unichar_xdigit_value (gunichar c)
{
  unsigned int D.5607;
  gint D.5610;
  unsigned int D.5611;
  unsigned int D.5614;
  unsigned int D.5615;
  unsigned int D.5618;

  D.5607 = c + 4294967248;
  if (D.5607 <= 9) goto <D.5608>; else goto <D.5609>;
  <D.5608>:
  D.5607 = c + 4294967248;
  D.5610 = (gint) D.5607;
  return D.5610;
  <D.5609>:
  D.5611 = c + 4294967231;
  if (D.5611 <= 5) goto <D.5612>; else goto <D.5613>;
  <D.5612>:
  D.5614 = c + 4294967241;
  D.5610 = (gint) D.5614;
  return D.5610;
  <D.5613>:
  D.5615 = c + 4294967199;
  if (D.5615 <= 5) goto <D.5616>; else goto <D.5617>;
  <D.5616>:
  D.5618 = c + 4294967209;
  D.5610 = (gint) D.5618;
  return D.5610;
  <D.5617>:
  D.5610 = -1;
  return D.5610;
}


monoeg_unichar_isspace (gunichar c)
{
  unsigned int D.5620;
  gboolean D.5623;
  GUnicodeType type;

  type = monoeg_g_unichar_type (c);
  D.5620 = type + 4294967269;
  if (D.5620 <= 2) goto <D.5621>; else goto <D.5622>;
  <D.5621>:
  D.5623 = 1;
  return D.5623;
  <D.5622>:
  D.5623 = 0;
  return D.5623;
}


monoeg_g_filename_from_utf8 (const gchar * utf8string, gssize len, gsize * bytes_read, gsize * bytes_written, struct GError * * error)
{
  long unsigned int D.5627;
  long int D.5628;
  long unsigned int D.5629;
  gchar * D.5630;
  char * res;

  if (len == -1) goto <D.5625>; else goto <D.5626>;
  <D.5625>:
  D.5627 = strlen (utf8string);
  len = (gssize) D.5627;
  <D.5626>:
  D.5628 = len + 1;
  D.5629 = (long unsigned int) D.5628;
  res = monoeg_malloc (D.5629);
  D.5628 = len + 1;
  D.5629 = (long unsigned int) D.5628;
  monoeg_g_strlcpy (res, utf8string, D.5629);
  D.5630 = res;
  return D.5630;
}


monoeg_g_get_charset (const char * * charset)
{
  const char * my_charset.7;
  char * D.5635;
  int D.5507;
  int iftmp.8;
  int D.5506;
  char[6] * D.5639;
  unsigned char D.5640;
  int D.5641;
  unsigned char D.5642;
  int D.5643;
  const unsigned char * D.5648;
  unsigned char D.5649;
  int D.5650;
  const unsigned char * D.5651;
  unsigned char D.5652;
  int D.5653;
  const unsigned char * D.5658;
  unsigned char D.5659;
  int D.5660;
  const unsigned char * D.5661;
  unsigned char D.5662;
  int D.5663;
  const unsigned char * D.5668;
  unsigned char D.5669;
  int D.5670;
  const unsigned char * D.5671;
  unsigned char D.5672;
  int D.5673;
  _Bool D.5675;
  int D.5676;
  gboolean D.5679;

  my_charset.7 = my_charset;
  if (my_charset.7 == 0B) goto <D.5633>; else goto <D.5634>;
  <D.5633>:
  D.5635 = nl_langinfo (14);
  my_charset = D.5635;
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = my_charset;
      D.5639 = "UTF-8";
      D.5640 = MEM[(const unsigned char *)D.5639];
      D.5641 = (int) D.5640;
      D.5642 = *__s2;
      D.5643 = (int) D.5642;
      __result = D.5641 - D.5643;
      {
        if (__s2_len != 0) goto <D.5644>; else goto <D.5645>;
        <D.5644>:
        if (__result == 0) goto <D.5646>; else goto <D.5647>;
        <D.5646>:
        D.5648 = "UTF-8" + 1;
        D.5649 = *D.5648;
        D.5650 = (int) D.5649;
        D.5651 = __s2 + 1;
        D.5652 = *D.5651;
        D.5653 = (int) D.5652;
        __result = D.5650 - D.5653;
        if (__s2_len > 1) goto <D.5654>; else goto <D.5655>;
        <D.5654>:
        if (__result == 0) goto <D.5656>; else goto <D.5657>;
        <D.5656>:
        D.5658 = "UTF-8" + 2;
        D.5659 = *D.5658;
        D.5660 = (int) D.5659;
        D.5661 = __s2 + 2;
        D.5662 = *D.5661;
        D.5663 = (int) D.5662;
        __result = D.5660 - D.5663;
        if (__s2_len > 2) goto <D.5664>; else goto <D.5665>;
        <D.5664>:
        if (__result == 0) goto <D.5666>; else goto <D.5667>;
        <D.5666>:
        D.5668 = "UTF-8" + 3;
        D.5669 = *D.5668;
        D.5670 = (int) D.5669;
        D.5671 = __s2 + 3;
        D.5672 = *D.5671;
        D.5673 = (int) D.5672;
        __result = D.5670 - D.5673;
        <D.5667>:
        <D.5665>:
        <D.5657>:
        <D.5655>:
        <D.5647>:
        <D.5645>:
      }
      D.5506 = __result;
    }
    iftmp.8 = -D.5506;
    goto <D.5674>;
    <D.5638>:
    my_charset.7 = my_charset;
    iftmp.8 = __builtin_strcmp (my_charset.7, "UTF-8");
    <D.5674>:
    D.5507 = iftmp.8;
  }
  D.5675 = D.5507 == 0;
  D.5676 = (int) D.5675;
  is_utf8 = D.5676;
  <D.5634>:
  if (charset != 0B) goto <D.5677>; else goto <D.5678>;
  <D.5677>:
  my_charset.7 = my_charset;
  *charset = my_charset.7;
  <D.5678>:
  D.5679 = is_utf8;
  return D.5679;
}


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

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


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

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


