monoeg_g_unichar_type (gunichar c)
{
  unsigned int D.5420;
  unsigned int D.5421;
  unsigned int D.5424;
  GUnicodeType D.5427;
  const guint8 * D.5428;
  unsigned int D.5429;
  sizetype D.5430;
  const guint8 * D.5431;
  unsigned char D.5432;
  short unsigned int D.5433;
  short unsigned int D.5436;
  short unsigned int D.5439;
  short unsigned int D.5442;
  short unsigned int D.5445;
  int i;
  guint16 cp;

  cp = (guint16) c;
  i = 0;
  goto <D.5342>;
  <D.5341>:
  D.5420 = (unsigned int) cp;
  D.5421 = unicode_category_ranges[i].start;
  if (D.5420 < D.5421) goto <D.5422>; else goto <D.5423>;
  <D.5422>:
  // predicted unlikely by continue predictor.
  goto <D.5340>;
  <D.5423>:
  D.5424 = unicode_category_ranges[i].end;
  D.5420 = (unsigned int) cp;
  if (D.5424 <= D.5420) goto <D.5425>; else goto <D.5426>;
  <D.5425>:
  // predicted unlikely by continue predictor.
  goto <D.5340>;
  <D.5426>:
  D.5428 = unicode_category[i];
  D.5420 = (unsigned int) cp;
  D.5421 = unicode_category_ranges[i].start;
  D.5429 = D.5420 - D.5421;
  D.5430 = (sizetype) D.5429;
  D.5431 = D.5428 + D.5430;
  D.5432 = *D.5431;
  D.5427 = (GUnicodeType) D.5432;
  return D.5427;
  <D.5340>:
  i = i + 1;
  <D.5342>:
  if (i <= 10) goto <D.5341>; else goto <D.5343>;
  <D.5343>:
  D.5433 = cp + 52224;
  if (D.5433 <= 6580) goto <D.5434>; else goto <D.5435>;
  <D.5434>:
  D.5427 = 7;
  return D.5427;
  <D.5435>:
  D.5436 = cp + 45568;
  if (D.5436 <= 20930) goto <D.5437>; else goto <D.5438>;
  <D.5437>:
  D.5427 = 7;
  return D.5427;
  <D.5438>:
  D.5439 = cp + 21504;
  if (D.5439 <= 11170) goto <D.5440>; else goto <D.5441>;
  <D.5440>:
  D.5427 = 7;
  return D.5427;
  <D.5441>:
  D.5442 = cp + 10240;
  if (D.5442 <= 2046) goto <D.5443>; else goto <D.5444>;
  <D.5443>:
  D.5427 = 4;
  return D.5427;
  <D.5444>:
  D.5445 = cp + 8192;
  if (D.5445 <= 6398) goto <D.5446>; else goto <D.5447>;
  <D.5446>:
  D.5427 = 3;
  return D.5427;
  <D.5447>:
  D.5427 = 0;
  return D.5427;
}


monoeg_unichar_break_type (gunichar c)
{
  GUnicodeBreakType D.5449;

  D.5449 = 28;
  return D.5449;
}


monoeg_g_unichar_case (gunichar c, gboolean upper)
{
  int D.5451;
  unsigned int D.5452;
  gunichar D.5455;
  unsigned int D.5456;
  const guint16 * iftmp.0;
  unsigned int D.5465;
  long unsigned int D.5466;
  long unsigned int D.5467;
  const guint16 * D.5468;
  short unsigned int D.5469;
  unsigned char i.1;
  unsigned char D.5472;
  const guint32 * iftmp.2;
  int D.5476;
  long unsigned int D.5478;
  const guint32 * D.5479;
  gunichar iftmp.3;
  signed char i.4;
  unsigned char i.5;
  unsigned char D.5486;
  gint8 i;
  gint8 i2;
  guint32 cp;
  guint32 v;

  cp = c;
  i = 0;
  goto <D.5359>;
  <D.5358>:
  D.5451 = (int) i;
  D.5452 = simple_case_map_ranges[D.5451].start;
  if (D.5452 > cp) goto <D.5453>; else goto <D.5454>;
  <D.5453>:
  D.5455 = c;
  return D.5455;
  <D.5454>:
  D.5451 = (int) i;
  D.5456 = simple_case_map_ranges[D.5451].end;
  if (D.5456 <= cp) goto <D.5457>; else goto <D.5458>;
  <D.5457>:
  // predicted unlikely by continue predictor.
  goto <D.5355>;
  <D.5458>:
  if (c <= 65535) goto <D.5459>; else goto <D.5460>;
  <D.5459>:
  {
    const guint16 * tab;

    if (upper != 0) goto <D.5462>; else goto <D.5463>;
    <D.5462>:
    D.5451 = (int) i;
    iftmp.0 = simple_upper_case_mapping_lowarea[D.5451];
    goto <D.5464>;
    <D.5463>:
    D.5451 = (int) i;
    iftmp.0 = simple_lower_case_mapping_lowarea[D.5451];
    <D.5464>:
    tab = iftmp.0;
    D.5451 = (int) i;
    D.5452 = simple_case_map_ranges[D.5451].start;
    D.5465 = cp - D.5452;
    D.5466 = (long unsigned int) D.5465;
    D.5467 = D.5466 * 2;
    D.5468 = tab + D.5467;
    D.5469 = *D.5468;
    v = (guint32) D.5469;
  }
  goto <D.5470>;
  <D.5460>:
  {
    const guint32 * tab;

    i.1 = (unsigned char) i;
    D.5472 = i.1 + 248;
    i2 = (gint8) D.5472;
    if (upper != 0) goto <D.5474>; else goto <D.5475>;
    <D.5474>:
    D.5476 = (int) i2;
    iftmp.2 = simple_upper_case_mapping_higharea[D.5476];
    goto <D.5477>;
    <D.5475>:
    D.5476 = (int) i2;
    iftmp.2 = simple_lower_case_mapping_higharea[D.5476];
    <D.5477>:
    tab = iftmp.2;
    D.5451 = (int) i;
    D.5452 = simple_case_map_ranges[D.5451].start;
    D.5465 = cp - D.5452;
    D.5466 = (long unsigned int) D.5465;
    D.5478 = D.5466 * 4;
    D.5479 = tab + D.5478;
    v = *D.5479;
  }
  <D.5470>:
  if (v != 0) goto <D.5481>; else goto <D.5482>;
  <D.5481>:
  iftmp.3 = v;
  goto <D.5483>;
  <D.5482>:
  iftmp.3 = c;
  <D.5483>:
  D.5455 = iftmp.3;
  return D.5455;
  <D.5355>:
  i.4 = i;
  i.5 = (unsigned char) i.4;
  D.5486 = i.5 + 1;
  i = (gint8) D.5486;
  <D.5359>:
  if (i <= 8) goto <D.5358>; else goto <D.5360>;
  <D.5360>:
  D.5455 = c;
  return D.5455;
}


monoeg_g_unichar_toupper (gunichar c)
{
  gunichar D.5488;

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


monoeg_g_unichar_tolower (gunichar c)
{
  gunichar D.5490;

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


monoeg_g_unichar_totitle (gunichar c)
{
  int D.5492;
  unsigned int D.5493;
  gunichar D.5496;
  unsigned char i.6;
  guint8 i;
  guint32 cp;

  cp = c;
  i = 0;
  goto <D.5374>;
  <D.5373>:
  D.5492 = (int) i;
  D.5493 = simple_titlecase_mapping[D.5492].codepoint;
  if (D.5493 == cp) goto <D.5494>; else goto <D.5495>;
  <D.5494>:
  D.5492 = (int) i;
  D.5496 = simple_titlecase_mapping[D.5492].title;
  return D.5496;
  <D.5495>:
  D.5492 = (int) i;
  D.5493 = simple_titlecase_mapping[D.5492].codepoint;
  if (D.5493 > cp) goto <D.5372>; else goto <D.5497>;
  <D.5497>:
  i.6 = i;
  i = i.6 + 1;
  <D.5374>:
  if (i <= 11) goto <D.5373>; else goto <D.5372>;
  <D.5372>:
  D.5496 = monoeg_g_unichar_toupper (c);
  return D.5496;
}


monoeg_g_unichar_isxdigit (gunichar c)
{
  gboolean D.5500;
  int D.5501;
  _Bool D.5502;

  D.5501 = monoeg_g_unichar_xdigit_value (c);
  D.5502 = D.5501 != -1;
  D.5500 = (gboolean) D.5502;
  return D.5500;
}


monoeg_g_unichar_xdigit_value (gunichar c)
{
  unsigned int D.5504;
  gint D.5507;
  unsigned int D.5508;
  unsigned int D.5511;
  unsigned int D.5512;
  unsigned int D.5515;

  D.5504 = c + 4294967248;
  if (D.5504 <= 9) goto <D.5505>; else goto <D.5506>;
  <D.5505>:
  D.5504 = c + 4294967248;
  D.5507 = (gint) D.5504;
  return D.5507;
  <D.5506>:
  D.5508 = c + 4294967231;
  if (D.5508 <= 5) goto <D.5509>; else goto <D.5510>;
  <D.5509>:
  D.5511 = c + 4294967241;
  D.5507 = (gint) D.5511;
  return D.5507;
  <D.5510>:
  D.5512 = c + 4294967199;
  if (D.5512 <= 5) goto <D.5513>; else goto <D.5514>;
  <D.5513>:
  D.5515 = c + 4294967209;
  D.5507 = (gint) D.5515;
  return D.5507;
  <D.5514>:
  D.5507 = -1;
  return D.5507;
}


monoeg_unichar_isspace (gunichar c)
{
  unsigned int D.5517;
  gboolean D.5520;
  GUnicodeType type;

  type = monoeg_g_unichar_type (c);
  D.5517 = type + 4294967269;
  if (D.5517 <= 2) goto <D.5518>; else goto <D.5519>;
  <D.5518>:
  D.5520 = 1;
  return D.5520;
  <D.5519>:
  D.5520 = 0;
  return D.5520;
}


monoeg_g_filename_from_utf8 (const gchar * utf8string, gssize len, gsize * bytes_read, gsize * bytes_written, struct GError * * error)
{
  long unsigned int D.5524;
  long int D.5525;
  long unsigned int D.5526;
  gchar * D.5527;
  char * res;

  if (len == -1) goto <D.5522>; else goto <D.5523>;
  <D.5522>:
  D.5524 = strlen (utf8string);
  len = (gssize) D.5524;
  <D.5523>:
  D.5525 = len + 1;
  D.5526 = (long unsigned int) D.5525;
  res = monoeg_malloc (D.5526);
  D.5525 = len + 1;
  D.5526 = (long unsigned int) D.5525;
  monoeg_g_strlcpy (res, utf8string, D.5526);
  D.5527 = res;
  return D.5527;
}


monoeg_g_get_charset (const char * * charset)
{
  const char * my_charset.7;
  char * my_charset.8;
  int D.5404;
  int iftmp.9;
  int D.5403;
  char[6] * D.5536;
  unsigned char D.5537;
  int D.5538;
  unsigned char D.5539;
  int D.5540;
  _Bool D.5541;
  _Bool D.5542;
  _Bool D.5543;
  const unsigned char * D.5546;
  unsigned char D.5547;
  int D.5548;
  const unsigned char * D.5549;
  unsigned char D.5550;
  int D.5551;
  _Bool D.5552;
  _Bool D.5553;
  const unsigned char * D.5556;
  unsigned char D.5557;
  int D.5558;
  const unsigned char * D.5559;
  unsigned char D.5560;
  int D.5561;
  _Bool D.5562;
  _Bool D.5563;
  const unsigned char * D.5566;
  unsigned char D.5567;
  int D.5568;
  const unsigned char * D.5569;
  unsigned char D.5570;
  int D.5571;
  _Bool D.5573;
  int is_utf8.10;
  gboolean D.5577;

  my_charset.7 = my_charset;
  if (my_charset.7 == 0B) goto <D.5530>; else goto <D.5531>;
  <D.5530>:
  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.5534>; else goto <D.5535>;
    <D.5534>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = my_charset;
      D.5536 = "UTF-8";
      D.5537 = MEM[(const unsigned char *)D.5536];
      D.5538 = (int) D.5537;
      D.5539 = *__s2;
      D.5540 = (int) D.5539;
      __result = D.5538 - D.5540;
      {
        D.5541 = __s2_len != 0;
        D.5542 = __result == 0;
        D.5543 = D.5541 & D.5542;
        if (D.5543 != 0) goto <D.5544>; else goto <D.5545>;
        <D.5544>:
        D.5546 = &MEM[(void *)"UTF-8" + 1B];
        D.5547 = *D.5546;
        D.5548 = (int) D.5547;
        D.5549 = __s2 + 1;
        D.5550 = *D.5549;
        D.5551 = (int) D.5550;
        __result = D.5548 - D.5551;
        D.5552 = __s2_len > 1;
        D.5542 = __result == 0;
        D.5553 = D.5552 & D.5542;
        if (D.5553 != 0) goto <D.5554>; else goto <D.5555>;
        <D.5554>:
        D.5556 = &MEM[(void *)"UTF-8" + 2B];
        D.5557 = *D.5556;
        D.5558 = (int) D.5557;
        D.5559 = __s2 + 2;
        D.5560 = *D.5559;
        D.5561 = (int) D.5560;
        __result = D.5558 - D.5561;
        D.5562 = __s2_len > 2;
        D.5542 = __result == 0;
        D.5563 = D.5562 & D.5542;
        if (D.5563 != 0) goto <D.5564>; else goto <D.5565>;
        <D.5564>:
        D.5566 = &MEM[(void *)"UTF-8" + 3B];
        D.5567 = *D.5566;
        D.5568 = (int) D.5567;
        D.5569 = __s2 + 3;
        D.5570 = *D.5569;
        D.5571 = (int) D.5570;
        __result = D.5568 - D.5571;
        <D.5565>:
        <D.5555>:
        <D.5545>:
      }
      D.5403 = __result;
    }
    iftmp.9 = -D.5403;
    goto <D.5572>;
    <D.5535>:
    my_charset.7 = my_charset;
    iftmp.9 = __builtin_strcmp (my_charset.7, "UTF-8");
    <D.5572>:
    D.5404 = iftmp.9;
  }
  D.5573 = D.5404 == 0;
  is_utf8.10 = (int) D.5573;
  is_utf8 = is_utf8.10;
  <D.5531>:
  if (charset != 0B) goto <D.5575>; else goto <D.5576>;
  <D.5575>:
  my_charset.7 = my_charset;
  *charset = my_charset.7;
  <D.5576>:
  D.5577 = is_utf8;
  return D.5577;
}


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

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


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

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


