VerQueryValue (const void * datablock, const gunichar2 * subblock, void * * buffer, guint32 * len)
{
  gboolean D.10700;
  int D.10127;
  int iftmp.0;
  int D.10126;
  const char[25] * D.10704;
  unsigned char D.10705;
  int D.10706;
  unsigned char D.10707;
  int D.10708;
  const unsigned char * D.10713;
  unsigned char D.10714;
  int D.10715;
  const unsigned char * D.10716;
  unsigned char D.10717;
  int D.10718;
  const unsigned char * D.10723;
  unsigned char D.10724;
  int D.10725;
  const unsigned char * D.10726;
  unsigned char D.10727;
  int D.10728;
  const unsigned char * D.10733;
  unsigned char D.10734;
  int D.10735;
  const unsigned char * D.10736;
  unsigned char D.10737;
  int D.10738;
  int D.10743;
  const gunichar2 * D.10746;
  int D.10145;
  int iftmp.1;
  int D.10144;
  const char[2] * D.10750;
  unsigned char D.10751;
  int D.10752;
  unsigned char D.10753;
  int D.10754;
  const unsigned char * D.10759;
  unsigned char D.10760;
  int D.10761;
  const unsigned char * D.10762;
  unsigned char D.10763;
  int D.10764;
  const unsigned char * D.10769;
  unsigned char D.10770;
  int D.10771;
  const unsigned char * D.10772;
  unsigned char D.10773;
  int D.10774;
  const unsigned char * D.10779;
  unsigned char D.10780;
  int D.10781;
  const unsigned char * D.10782;
  unsigned char D.10783;
  int D.10784;
  short unsigned int D.10790;
  unsigned int D.10791;
  short unsigned int D.10798;
  int D.10799;
  sizetype data_ptr.2;
  sizetype D.10801;
  sizetype D.10802;
  gunichar2 * D.10804;
  int D.10805;
  sizetype D.10810;
  int D.10812;
  void * string_value.3;
  unsigned int string_value_len.4;
  unsigned int D.10822;
  unsigned int D.10823;
  gchar * subblock_utf8;
  gchar * lang_utf8;
  gboolean ret;
  struct version_data block;
  const void * data_ptr;
  gint32 data_len;
  gboolean want_var;
  gboolean want_string;
  gunichar2 lang[8];
  const gunichar2 * string_key;
  void * string_value;
  guint32 string_value_len;
  gchar * lowercase_lang;
  void done = <<< error >>>;

  try
    {
      lang_utf8 = 0B;
      ret = 0;
      want_var = 0;
      want_string = 0;
      string_key = 0B;
      string_value = 0B;
      string_value_len = 0;
      subblock_utf8 = monoeg_g_utf16_to_utf8 (subblock, -1, 0B, 0B, 0B);
      if (subblock_utf8 == 0B) goto <D.10698>; else goto <D.10699>;
      <D.10698>:
      D.10700 = 0;
      return D.10700;
      <D.10699>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 24;
        if (__s2_len <= 3) goto <D.10702>; else goto <D.10703>;
        <D.10702>:
        {
          const unsigned char * __s2;
          int __result;

          __s2 = subblock_utf8;
          D.10704 = "\\VarFileInfo\\Translation";
          D.10705 = MEM[(const unsigned char *)D.10704];
          D.10706 = (int) D.10705;
          D.10707 = *__s2;
          D.10708 = (int) D.10707;
          __result = D.10706 - D.10708;
          {
            if (__s2_len != 0) goto <D.10709>; else goto <D.10710>;
            <D.10709>:
            if (__result == 0) goto <D.10711>; else goto <D.10712>;
            <D.10711>:
            D.10713 = &MEM[(void *)"\\VarFileInfo\\Translation" + 1B];
            D.10714 = *D.10713;
            D.10715 = (int) D.10714;
            D.10716 = __s2 + 1;
            D.10717 = *D.10716;
            D.10718 = (int) D.10717;
            __result = D.10715 - D.10718;
            if (__s2_len > 1) goto <D.10719>; else goto <D.10720>;
            <D.10719>:
            if (__result == 0) goto <D.10721>; else goto <D.10722>;
            <D.10721>:
            D.10723 = &MEM[(void *)"\\VarFileInfo\\Translation" + 2B];
            D.10724 = *D.10723;
            D.10725 = (int) D.10724;
            D.10726 = __s2 + 2;
            D.10727 = *D.10726;
            D.10728 = (int) D.10727;
            __result = D.10725 - D.10728;
            if (__s2_len > 2) goto <D.10729>; else goto <D.10730>;
            <D.10729>:
            if (__result == 0) goto <D.10731>; else goto <D.10732>;
            <D.10731>:
            D.10733 = &MEM[(void *)"\\VarFileInfo\\Translation" + 3B];
            D.10734 = *D.10733;
            D.10735 = (int) D.10734;
            D.10736 = __s2 + 3;
            D.10737 = *D.10736;
            D.10738 = (int) D.10737;
            __result = D.10735 - D.10738;
            <D.10732>:
            <D.10730>:
            <D.10722>:
            <D.10720>:
            <D.10712>:
            <D.10710>:
          }
          D.10126 = __result;
        }
        iftmp.0 = -D.10126;
        goto <D.10739>;
        <D.10703>:
        iftmp.0 = __builtin_strcmp (subblock_utf8, "\\VarFileInfo\\Translation");
        <D.10739>:
        D.10127 = iftmp.0;
      }
      if (D.10127 == 0) goto <D.10740>; else goto <D.10741>;
      <D.10740>:
      want_var = 1;
      goto <D.10742>;
      <D.10741>:
      D.10743 = strncmp (subblock_utf8, "\\StringFileInfo\\", 16);
      if (D.10743 == 0) goto <D.10744>; else goto <D.10745>;
      <D.10744>:
      want_string = 1;
      D.10746 = subblock + 32;
      memcpy (&lang, D.10746, 16);
      lang_utf8 = monoeg_g_utf16_to_utf8 (&lang, 8, 0B, 0B, 0B);
      lowercase_lang = monoeg_g_utf8_strdown (lang_utf8, -1);
      monoeg_g_free (lang_utf8);
      lang_utf8 = lowercase_lang;
      lowercase_lang = 0B;
      string_key = subblock + 50;
      <D.10745>:
      <D.10742>:
      {
        size_t __s1_len;
        size_t __s2_len;

        __s2_len = 1;
        if (__s2_len <= 3) goto <D.10748>; else goto <D.10749>;
        <D.10748>:
        {
          const unsigned char * __s2;
          int __result;

          __s2 = subblock_utf8;
          D.10750 = "\\";
          D.10751 = MEM[(const unsigned char *)D.10750];
          D.10752 = (int) D.10751;
          D.10753 = *__s2;
          D.10754 = (int) D.10753;
          __result = D.10752 - D.10754;
          {
            if (__s2_len != 0) goto <D.10755>; else goto <D.10756>;
            <D.10755>:
            if (__result == 0) goto <D.10757>; else goto <D.10758>;
            <D.10757>:
            D.10759 = &MEM[(void *)"\\" + 1B];
            D.10760 = *D.10759;
            D.10761 = (int) D.10760;
            D.10762 = __s2 + 1;
            D.10763 = *D.10762;
            D.10764 = (int) D.10763;
            __result = D.10761 - D.10764;
            if (__s2_len > 1) goto <D.10765>; else goto <D.10766>;
            <D.10765>:
            if (__result == 0) goto <D.10767>; else goto <D.10768>;
            <D.10767>:
            D.10769 = &MEM[(void *)"\\" + 2B];
            D.10770 = *D.10769;
            D.10771 = (int) D.10770;
            D.10772 = __s2 + 2;
            D.10773 = *D.10772;
            D.10774 = (int) D.10773;
            __result = D.10771 - D.10774;
            if (__s2_len > 2) goto <D.10775>; else goto <D.10776>;
            <D.10775>:
            if (__result == 0) goto <D.10777>; else goto <D.10778>;
            <D.10777>:
            D.10779 = &MEM[(void *)"\\" + 3B];
            D.10780 = *D.10779;
            D.10781 = (int) D.10780;
            D.10782 = __s2 + 3;
            D.10783 = *D.10782;
            D.10784 = (int) D.10783;
            __result = D.10781 - D.10784;
            <D.10778>:
            <D.10776>:
            <D.10768>:
            <D.10766>:
            <D.10758>:
            <D.10756>:
          }
          D.10144 = __result;
        }
        iftmp.1 = -D.10144;
        goto <D.10785>;
        <D.10749>:
        iftmp.1 = __builtin_strcmp (subblock_utf8, "\\");
        <D.10785>:
        D.10145 = iftmp.1;
      }
      if (D.10145 == 0) goto <D.10786>; else goto <D.10787>;
      <D.10786>:
      data_ptr = get_fixedfileinfo_block (datablock, &block);
      if (data_ptr != 0B) goto <D.10788>; else goto <D.10789>;
      <D.10788>:
      *buffer = data_ptr;
      D.10790 = block.value_len;
      D.10791 = (unsigned int) D.10790;
      *len = D.10791;
      ret = 1;
      <D.10789>:
      goto <D.10792>;
      <D.10787>:
      if (want_var != 0) goto <D.10793>; else goto <D.10795>;
      <D.10795>:
      if (want_string != 0) goto <D.10793>; else goto <D.10794>;
      <D.10793>:
      data_ptr = get_fixedfileinfo_block (datablock, &block);
      if (data_ptr != 0B) goto <D.10796>; else goto <D.10797>;
      <D.10796>:
      data_ptr = data_ptr + 52;
      D.10798 = block.data_len;
      D.10799 = (int) D.10798;
      data_len = D.10799 + -92;
      goto <D.10148>;
      <D.10147>:
      data_ptr = data_ptr + 3;
      data_ptr.2 = (sizetype) data_ptr;
      D.10801 = data_ptr.2 & 3;
      D.10802 = -D.10801;
      data_ptr = data_ptr + D.10802;
      data_ptr = get_versioninfo_block (data_ptr, &block);
      D.10798 = block.data_len;
      if (D.10798 == 0) goto done; else goto <D.10803>;
      <D.10803>:
      D.10798 = block.data_len;
      D.10799 = (int) D.10798;
      data_len = data_len - D.10799;
      D.10804 = block.key;
      D.10805 = unicode_string_equals (D.10804, "VarFileInfo");
      if (D.10805 != 0) goto <D.10806>; else goto <D.10807>;
      <D.10806>:
      data_ptr = get_varfileinfo_block (data_ptr, &block);
      if (want_var != 0) goto <D.10808>; else goto <D.10809>;
      <D.10808>:
      *buffer = data_ptr;
      D.10790 = block.value_len;
      D.10791 = (unsigned int) D.10790;
      *len = D.10791;
      ret = 1;
      goto done;
      <D.10809>:
      D.10790 = block.value_len;
      D.10810 = (sizetype) D.10790;
      data_ptr = data_ptr + D.10810;
      goto <D.10811>;
      <D.10807>:
      D.10804 = block.key;
      D.10812 = unicode_string_equals (D.10804, "StringFileInfo");
      if (D.10812 != 0) goto <D.10813>; else goto done;
      <D.10813>:
      data_ptr = get_stringtable_block (data_ptr, lang_utf8, string_key, &string_value, &string_value_len, &block);
      if (want_string != 0) goto <D.10814>; else goto <D.10815>;
      <D.10814>:
      string_value.3 = string_value;
      if (string_value.3 != 0B) goto <D.10817>; else goto <D.10818>;
      <D.10817>:
      string_value_len.4 = string_value_len;
      if (string_value_len.4 != 0) goto <D.10820>; else goto <D.10821>;
      <D.10820>:
      string_value.3 = string_value;
      *buffer = string_value.3;
      string_value.3 = string_value;
      D.10822 = unicode_chars (string_value.3);
      D.10823 = D.10822 + 1;
      *len = D.10823;
      ret = 1;
      goto done;
      <D.10821>:
      <D.10818>:
      <D.10815>:
      <D.10811>:
      if (data_ptr == 0B) goto done; else goto <D.10824>;
      <D.10824>:
      <D.10148>:
      if (data_len > 0) goto <D.10147>; else goto <D.10149>;
      <D.10149>:
      <D.10797>:
      <D.10794>:
      <D.10792>:
      done:
      if (lang_utf8 != 0B) goto <D.10825>; else goto <D.10826>;
      <D.10825>:
      monoeg_g_free (lang_utf8);
      <D.10826>:
      monoeg_g_free (subblock_utf8);
      D.10700 = ret;
      return D.10700;
    }
  finally
    {
      block = {CLOBBER};
      lang = {CLOBBER};
      string_value = {CLOBBER};
      string_value_len = {CLOBBER};
    }
}


memcpy (void * restrict __dest, const void * restrict __src, size_t __len)
{
  void * D.10829;
  unsigned int D.10830;

  D.10830 = __builtin_object_size (__dest, 0);
  D.10829 = __builtin___memcpy_chk (__dest, __src, __len, D.10830);
  return D.10829;
}


get_fixedfileinfo_block (const void * data, struct version_data * block)
{
  short unsigned int D.10832;
  short unsigned int D.10833;
  const void * D.10836;
  gunichar2 * D.10837;
  int D.10838;
  unsigned int D.10843;
  unsigned int D.10845;
  const void * data_ptr;
  gint32 data_len;
  struct WapiFixedFileInfo * ffi;

  data_ptr = get_versioninfo_block (data, block);
  D.10832 = block->data_len;
  data_len = (gint32) D.10832;
  D.10833 = block->value_len;
  if (D.10833 != 52) goto <D.10834>; else goto <D.10835>;
  <D.10834>:
  D.10836 = 0B;
  return D.10836;
  <D.10835>:
  D.10837 = block->key;
  D.10838 = unicode_string_equals (D.10837, "VS_VERSION_INFO");
  if (D.10838 == 0) goto <D.10839>; else goto <D.10840>;
  <D.10839>:
  D.10836 = 0B;
  return D.10836;
  <D.10840>:
  ffi = data_ptr;
  D.10843 = ffi->dwSignature;
  if (D.10843 != 4277077181) goto <D.10841>; else goto <D.10844>;
  <D.10844>:
  D.10845 = ffi->dwStrucVersion;
  if (D.10845 != 65536) goto <D.10841>; else goto <D.10842>;
  <D.10841>:
  D.10836 = 0B;
  return D.10836;
  <D.10842>:
  D.10836 = data_ptr;
  return D.10836;
}


get_versioninfo_block (const void * data, struct version_data * block)
{
  short unsigned int D.10847;
  gunichar2 * D.10848;
  unsigned int D.10849;
  sizetype D.10850;
  sizetype D.10851;
  sizetype data.5;
  sizetype D.10853;
  sizetype D.10854;
  const void * D.10855;

  D.10847 = MEM[(guint16 *)data];
  block->data_len = D.10847;
  data = data + 2;
  D.10847 = MEM[(guint16 *)data];
  block->value_len = D.10847;
  data = data + 2;
  D.10847 = MEM[(guint16 *)data];
  block->type = D.10847;
  data = data + 2;
  block->key = data;
  D.10848 = block->key;
  D.10849 = unicode_chars (D.10848);
  D.10850 = D.10849 + 1;
  D.10851 = D.10850 * 2;
  data = data + D.10851;
  data = data + 3;
  data.5 = (sizetype) data;
  D.10853 = data.5 & 3;
  D.10854 = -D.10853;
  data = data + D.10854;
  D.10855 = data;
  return D.10855;
}


get_varfileinfo_block (const void * data_ptr, struct version_data * block)
{
  const void * D.10857;

  data_ptr = get_versioninfo_block (data_ptr, block);
  D.10857 = data_ptr;
  return D.10857;
}


unicode_string_equals (const gunichar2 * str1, const gchar * str2)
{
  short unsigned int D.10859;
  int D.10860;
  char D.10861;
  int D.10862;
  gboolean D.10865;
  _Bool D.10867;

  goto <D.10040>;
  <D.10039>:
  D.10859 = *str1;
  D.10860 = (int) D.10859;
  D.10861 = *str2;
  D.10862 = (int) D.10861;
  if (D.10860 != D.10862) goto <D.10863>; else goto <D.10864>;
  <D.10863>:
  D.10865 = 0;
  return D.10865;
  <D.10864>:
  str1 = str1 + 2;
  str2 = str2 + 1;
  <D.10040>:
  D.10859 = *str1;
  if (D.10859 != 0) goto <D.10866>; else goto <D.10041>;
  <D.10866>:
  D.10861 = *str2;
  if (D.10861 != 0) goto <D.10039>; else goto <D.10041>;
  <D.10041>:
  D.10859 = *str1;
  D.10860 = (int) D.10859;
  D.10861 = *str2;
  D.10862 = (int) D.10861;
  D.10867 = D.10860 == D.10862;
  D.10865 = (gboolean) D.10867;
  return D.10865;
}


get_stringtable_block (const void * data_ptr, gchar * lang, const gunichar2 * string_key, void * * string_value, guint32 * string_value_len, struct version_data * block)
{
  sizetype data_ptr.6;
  sizetype D.10870;
  sizetype D.10871;
  short unsigned int D.10872;
  const void * D.10875;
  gunichar2 * D.10876;
  int D.10096;
  guint16 data_len;
  guint16 string_len;
  gchar * found_lang;
  gchar * lowercase_lang;

  data_len = block->data_len;
  string_len = 36;
  goto <D.10098>;
  <D.10097>:
  data_ptr = data_ptr + 3;
  data_ptr.6 = (sizetype) data_ptr;
  D.10870 = data_ptr.6 & 3;
  D.10871 = -D.10870;
  data_ptr = data_ptr + D.10871;
  data_ptr = get_versioninfo_block (data_ptr, block);
  D.10872 = block->data_len;
  if (D.10872 == 0) goto <D.10873>; else goto <D.10874>;
  <D.10873>:
  D.10875 = 0B;
  return D.10875;
  <D.10874>:
  D.10872 = block->data_len;
  string_len = D.10872 + string_len;
  D.10876 = block->key;
  found_lang = monoeg_g_utf16_to_utf8 (D.10876, 8, 0B, 0B, 0B);
  if (found_lang == 0B) goto <D.10877>; else goto <D.10878>;
  <D.10877>:
  D.10875 = 0B;
  return D.10875;
  <D.10878>:
  lowercase_lang = monoeg_g_utf8_strdown (found_lang, -1);
  monoeg_g_free (found_lang);
  found_lang = lowercase_lang;
  lowercase_lang = 0B;
  if (lang != 0B) goto <D.10881>; else goto <D.10879>;
  <D.10881>:
  {
    size_t __s1_len;
    size_t __s2_len;

    D.10096 = __builtin_strcmp (found_lang, lang);
  }
  if (D.10096 == 0) goto <D.10882>; else goto <D.10879>;
  <D.10882>:
  data_ptr = get_string_block (data_ptr, string_key, string_value, string_value_len, block);
  goto <D.10880>;
  <D.10879>:
  data_ptr = get_string_block (data_ptr, 0B, 0B, 0B, block);
  <D.10880>:
  monoeg_g_free (found_lang);
  if (data_ptr == 0B) goto <D.10883>; else goto <D.10884>;
  <D.10883>:
  D.10875 = 0B;
  return D.10875;
  <D.10884>:
  <D.10098>:
  if (string_len < data_len) goto <D.10097>; else goto <D.10099>;
  <D.10099>:
  D.10875 = data_ptr;
  return D.10875;
}


get_string_block (const void * data_ptr, const gunichar2 * string_key, void * * string_value, guint32 * string_value_len, struct version_data * block)
{
  sizetype data_ptr.7;
  sizetype D.10887;
  sizetype D.10888;
  short unsigned int D.10889;
  const void * D.10892;
  gunichar2 * D.10899;
  int D.10900;
  short unsigned int D.10903;
  unsigned int D.10904;
  unsigned int D.10905;
  unsigned int D.10906;
  int data_ptr.8;
  int orig_data_ptr.9;
  int D.10909;
  int D.10910;
  guint16 data_len;
  guint16 string_len;
  char * orig_data_ptr;

  data_len = block->data_len;
  string_len = 28;
  orig_data_ptr = data_ptr + 4294967268;
  goto <D.10074>;
  <D.10073>:
  data_ptr = data_ptr + 3;
  data_ptr.7 = (sizetype) data_ptr;
  D.10887 = data_ptr.7 & 3;
  D.10888 = -D.10887;
  data_ptr = data_ptr + D.10888;
  data_ptr = get_versioninfo_block (data_ptr, block);
  D.10889 = block->data_len;
  if (D.10889 == 0) goto <D.10890>; else goto <D.10891>;
  <D.10890>:
  D.10892 = 0B;
  return D.10892;
  <D.10891>:
  D.10889 = block->data_len;
  string_len = D.10889 + string_len;
  if (string_key != 0B) goto <D.10893>; else goto <D.10894>;
  <D.10893>:
  if (string_value != 0B) goto <D.10895>; else goto <D.10896>;
  <D.10895>:
  if (string_value_len != 0B) goto <D.10897>; else goto <D.10898>;
  <D.10897>:
  D.10899 = block->key;
  D.10900 = unicode_compare (string_key, D.10899);
  if (D.10900 == 1) goto <D.10901>; else goto <D.10902>;
  <D.10901>:
  *string_value = data_ptr;
  D.10903 = block->value_len;
  D.10904 = (unsigned int) D.10903;
  *string_value_len = D.10904;
  <D.10902>:
  <D.10898>:
  <D.10896>:
  <D.10894>:
  D.10903 = block->value_len;
  D.10905 = (unsigned int) D.10903;
  D.10906 = D.10905 * 2;
  data_ptr = data_ptr + D.10906;
  <D.10074>:
  data_ptr.8 = (int) data_ptr;
  orig_data_ptr.9 = (int) orig_data_ptr;
  D.10909 = data_ptr.8 - orig_data_ptr.9;
  D.10910 = (int) data_len;
  if (D.10909 < D.10910) goto <D.10073>; else goto <D.10075>;
  <D.10075>:
  D.10892 = data_ptr;
  return D.10892;
}


unicode_compare (const gunichar2 * str1, const gunichar2 * str2)
{
  short unsigned int D.10912;
  short unsigned int D.10913;
  gboolean D.10916;
  _Bool D.10918;

  goto <D.10033>;
  <D.10032>:
  D.10912 = *str1;
  D.10913 = *str2;
  if (D.10912 != D.10913) goto <D.10914>; else goto <D.10915>;
  <D.10914>:
  D.10916 = 0;
  return D.10916;
  <D.10915>:
  str1 = str1 + 2;
  str2 = str2 + 2;
  <D.10033>:
  D.10912 = *str1;
  if (D.10912 != 0) goto <D.10917>; else goto <D.10034>;
  <D.10917>:
  D.10913 = *str2;
  if (D.10913 != 0) goto <D.10032>; else goto <D.10034>;
  <D.10034>:
  D.10912 = *str1;
  D.10913 = *str2;
  D.10918 = D.10912 == D.10913;
  D.10916 = (gboolean) D.10918;
  return D.10916;
}


unicode_chars (const gunichar2 * str)
{
  unsigned int D.10920;
  const gunichar2 * D.10921;
  short unsigned int D.10922;
  guint32 D.10925;
  guint32 len;

  len = 0;
  <D.10027>:
  D.10920 = len * 2;
  D.10921 = str + D.10920;
  D.10922 = *D.10921;
  if (D.10922 == 0) goto <D.10923>; else goto <D.10924>;
  <D.10923>:
  D.10925 = len;
  return D.10925;
  <D.10924>:
  len = len + 1;
  goto <D.10027>;
}


GetFileVersionInfoSize (gunichar2 * filename, guint32 * handle)
{
  guint32 D.10929;
  int map_size.10;
  unsigned int map_size.11;
  void * map_handle.12;
  void * file_map;
  void * versioninfo;
  void * map_handle;
  gint32 map_size;
  guint32 size;

  try
    {
      *handle = 0;
      file_map = map_pe_file (filename, &map_size, &map_handle);
      if (file_map == 0B) goto <D.10927>; else goto <D.10928>;
      <D.10927>:
      D.10929 = 0;
      return D.10929;
      <D.10928>:
      map_size.10 = map_size;
      map_size.11 = (unsigned int) map_size.10;
      versioninfo = find_pe_file_resources (file_map, map_size.11, 16, 0, &size);
      if (versioninfo == 0B) goto <D.10932>; else goto <D.10933>;
      <D.10932>:
      size = 0;
      <D.10933>:
      map_handle.12 = map_handle;
      unmap_pe_file (file_map, map_handle.12);
      D.10929 = size;
      return D.10929;
    }
  finally
    {
      map_handle = {CLOBBER};
      map_size = {CLOBBER};
      size = {CLOBBER};
    }
}


map_pe_file (gunichar2 * filename, gint32 * map_size, void * * handle)
{
  void * D.10939;
  int * D.10942;
  int D.10943;
  int D.10944;
  unsigned int D.10945;
  int D.10946;
  int D.10949;
  unsigned int D.10950;
  long long int D.10951;
  int D.10952;
  unsigned int D.10955;
  int D.10958;
  unsigned int D.10959;
  gchar * filename_ext;
  int fd;
  struct stat statbuf;
  void * file_map;

  try
    {
      filename_ext = mono_unicode_to_external (filename);
      if (filename_ext == 0B) goto <D.10937>; else goto <D.10938>;
      <D.10937>:
      SetLastError (123);
      D.10939 = 0B;
      return D.10939;
      <D.10938>:
      fd = _wapi_open (filename_ext, 0, 0);
      if (fd == -1) goto <D.10940>; else goto <D.10941>;
      <D.10940>:
      D.10942 = __errno_location ();
      D.10943 = *D.10942;
      D.10944 = _wapi_get_win32_file_error (D.10943);
      D.10945 = (unsigned int) D.10944;
      SetLastError (D.10945);
      monoeg_g_free (filename_ext);
      D.10939 = 0B;
      return D.10939;
      <D.10941>:
      D.10946 = fstat (fd, &statbuf);
      if (D.10946 == -1) goto <D.10947>; else goto <D.10948>;
      <D.10947>:
      D.10942 = __errno_location ();
      D.10943 = *D.10942;
      D.10949 = _wapi_get_win32_file_error (D.10943);
      D.10950 = (unsigned int) D.10949;
      SetLastError (D.10950);
      monoeg_g_free (filename_ext);
      close (fd);
      D.10939 = 0B;
      return D.10939;
      <D.10948>:
      D.10951 = statbuf.st_size;
      D.10952 = (int) D.10951;
      *map_size = D.10952;
      D.10951 = statbuf.st_size;
      if (D.10951 <= 63) goto <D.10953>; else goto <D.10954>;
      <D.10953>:
      SetLastError (24);
      monoeg_g_free (filename_ext);
      close (fd);
      D.10939 = 0B;
      return D.10939;
      <D.10954>:
      D.10951 = statbuf.st_size;
      D.10955 = (unsigned int) D.10951;
      file_map = mono_file_map (D.10955, 17, fd, 0, handle);
      if (file_map == 0B) goto <D.10956>; else goto <D.10957>;
      <D.10956>:
      D.10942 = __errno_location ();
      D.10943 = *D.10942;
      D.10958 = _wapi_get_win32_file_error (D.10943);
      D.10959 = (unsigned int) D.10958;
      SetLastError (D.10959);
      monoeg_g_free (filename_ext);
      close (fd);
      D.10939 = 0B;
      return D.10939;
      <D.10957>:
      close (fd);
      monoeg_g_free (filename_ext);
      D.10939 = file_map;
      return D.10939;
    }
  finally
    {
      statbuf = {CLOBBER};
    }
}


fstat (int __fd, struct stat * __statbuf)
{
  int D.10962;

  D.10962 = __fxstat (3, __fd, __statbuf);
  return D.10962;
}


find_pe_file_resources (void * file_map, guint32 map_size, guint32 res_id, guint32 lang_id, guint32 * size)
{
  void * D.10966;

  if (1 != 0) goto <D.10964>; else goto <D.10965>;
  <D.10964>:
  D.10966 = find_pe_file_resources32 (file_map, map_size, res_id, lang_id, size);
  return D.10966;
  <D.10965>:
  D.10966 = find_pe_file_resources64 (file_map, map_size, res_id, lang_id, size);
  return D.10966;
}


find_pe_file_resources32 (void * file_map, guint32 map_size, guint32 res_id, guint32 lang_id, guint32 * size)
{
  short unsigned int D.10968;
  void * D.10971;
  unsigned int D.10972;
  unsigned int D.10973;
  unsigned int D.10976;
  short unsigned int D.10979;
  short unsigned int D.10987;
  int D.10988;
  short unsigned int D.10989;
  int D.10990;
  int D.10991;
  unsigned int D.10992;
  struct WapiImageDosHeader * dos_header;
  struct WapiImageNTHeaders32 * nt_headers;
  struct WapiImageResourceDirectory * resource_dir;
  struct WapiImageResourceDirectoryEntry * resource_dir_entry;
  guint32 resource_rva;
  guint32 entries;
  guint32 i;
  void * ret;

  ret = 0B;
  dos_header = file_map;
  D.10968 = dos_header->e_magic;
  if (D.10968 != 23117) goto <D.10969>; else goto <D.10970>;
  <D.10969>:
  SetLastError (13);
  D.10971 = 0B;
  return D.10971;
  <D.10970>:
  D.10972 = dos_header->e_lfanew;
  D.10973 = D.10972 + 248;
  if (D.10973 > map_size) goto <D.10974>; else goto <D.10975>;
  <D.10974>:
  SetLastError (24);
  D.10971 = 0B;
  return D.10971;
  <D.10975>:
  D.10972 = dos_header->e_lfanew;
  nt_headers = file_map + D.10972;
  D.10976 = nt_headers->Signature;
  if (D.10976 != 17744) goto <D.10977>; else goto <D.10978>;
  <D.10977>:
  SetLastError (13);
  D.10971 = 0B;
  return D.10971;
  <D.10978>:
  D.10979 = nt_headers->OptionalHeader.Magic;
  if (D.10979 == 523) goto <D.10980>; else goto <D.10981>;
  <D.10980>:
  resource_rva = MEM[(struct WapiImageNTHeaders64 *)nt_headers].OptionalHeader.DataDirectory[2].VirtualAddress;
  goto <D.10982>;
  <D.10981>:
  resource_rva = nt_headers->OptionalHeader.DataDirectory[2].VirtualAddress;
  <D.10982>:
  if (resource_rva == 0) goto <D.10983>; else goto <D.10984>;
  <D.10983>:
  SetLastError (13);
  D.10971 = 0B;
  return D.10971;
  <D.10984>:
  resource_dir = get_ptr_from_rva (resource_rva, nt_headers, file_map);
  if (resource_dir == 0B) goto <D.10985>; else goto <D.10986>;
  <D.10985>:
  SetLastError (13);
  D.10971 = 0B;
  return D.10971;
  <D.10986>:
  D.10987 = resource_dir->NumberOfNamedEntries;
  D.10988 = (int) D.10987;
  D.10989 = resource_dir->NumberOfIdEntries;
  D.10990 = (int) D.10989;
  D.10991 = D.10988 + D.10990;
  entries = (guint32) D.10991;
  resource_dir_entry = resource_dir + 16;
  i = 0;
  goto <D.9982>;
  <D.9981>:
  {
    struct WapiImageResourceDirectoryEntry * direntry;

    D.10992 = i * 8;
    direntry = resource_dir_entry + D.10992;
    ret = scan_resource_dir (resource_dir, nt_headers, file_map, direntry, 0, res_id, lang_id, size);
    if (ret != 0B) goto <D.10993>; else goto <D.10994>;
    <D.10993>:
    D.10971 = ret;
    return D.10971;
    <D.10994>:
  }
  i = i + 1;
  <D.9982>:
  if (i < entries) goto <D.9981>; else goto <D.9983>;
  <D.9983>:
  D.10971 = 0B;
  return D.10971;
}


get_ptr_from_rva (guint32 rva, struct WapiImageNTHeaders32 * ntheaders, void * file_map)
{
  void * D.10998;
  unsigned int D.10999;
  unsigned int D.11000;
  sizetype D.11001;
  struct WapiImageSectionHeader * section_header;
  guint32 delta;

  section_header = get_enclosing_section_header (rva, ntheaders);
  if (section_header == 0B) goto <D.10996>; else goto <D.10997>;
  <D.10996>:
  D.10998 = 0B;
  return D.10998;
  <D.10997>:
  D.10999 = section_header->VirtualAddress;
  D.11000 = section_header->PointerToRawData;
  delta = D.10999 - D.11000;
  D.11001 = rva - delta;
  D.10998 = file_map + D.11001;
  return D.10998;
}


get_enclosing_section_header (guint32 rva, struct WapiImageNTHeaders32 * nt_headers)
{
  short unsigned int D.11003;
  unsigned int D.11004;
  unsigned int nt_headers.13;
  unsigned int D.11006;
  unsigned int D.11007;
  unsigned int D.11010;
  unsigned int D.11013;
  struct WapiImageSectionHeader * D.11016;
  short unsigned int D.11017;
  unsigned int D.11018;
  struct WapiImageSectionHeader * section;
  guint32 i;

  D.11003 = nt_headers->FileHeader.SizeOfOptionalHeader;
  D.11004 = (unsigned int) D.11003;
  nt_headers.13 = (unsigned int) nt_headers;
  D.11006 = D.11004 + nt_headers.13;
  D.11007 = D.11006 + 24;
  section = (struct WapiImageSectionHeader *) D.11007;
  i = 0;
  goto <D.9930>;
  <D.9929>:
  {
    guint32 size;

    size = section->Misc.VirtualSize;
    if (size == 0) goto <D.11008>; else goto <D.11009>;
    <D.11008>:
    size = section->SizeOfRawData;
    <D.11009>:
    D.11010 = section->VirtualAddress;
    if (D.11010 <= rva) goto <D.11011>; else goto <D.11012>;
    <D.11011>:
    D.11010 = section->VirtualAddress;
    D.11013 = D.11010 + size;
    if (D.11013 > rva) goto <D.11014>; else goto <D.11015>;
    <D.11014>:
    D.11016 = section;
    return D.11016;
    <D.11015>:
    <D.11012>:
  }
  i = i + 1;
  section = section + 40;
  <D.9930>:
  D.11017 = nt_headers->FileHeader.NumberOfSections;
  D.11018 = (unsigned int) D.11017;
  if (D.11018 > i) goto <D.9929>; else goto <D.9931>;
  <D.9931>:
  D.11016 = 0B;
  return D.11016;
}


scan_resource_dir (struct WapiImageResourceDirectory * root, struct WapiImageNTHeaders32 * nt_headers, void * file_map, struct WapiImageResourceDirectoryEntry * entry, int level, guint32 res_id, guint32 lang_id, guint32 * size)
{
  unsigned int D.11020;
  unsigned int D.11021;
  <unnamed-unsigned:1> D.11022;
  <unnamed-unsigned:1> D.11023;
  <unnamed-unsigned:31> D.11024;
  <unnamed-unsigned:31> D.11025;
  void * D.11032;
  short unsigned int D.11047;
  int D.11048;
  short unsigned int D.11049;
  int D.11050;
  int D.11051;
  unsigned int D.11052;
  int D.11053;
  unsigned int D.11056;
  unsigned int D.11057;
  struct WapiImageResourceDirectoryEntry swapped_entry;
  gboolean is_string;
  gboolean is_dir;
  guint32 name_offset;
  guint32 dir_offset;
  guint32 data_offset;

  try
    {
      D.11020 = entry->D.8842.Name;
      swapped_entry.D.8842.Name = D.11020;
      D.11021 = entry->D.8850.OffsetToData;
      swapped_entry.D.8850.OffsetToData = D.11021;
      D.11022 = swapped_entry.D.8842.D.8839.NameIsString;
      is_string = (gboolean) D.11022;
      D.11023 = swapped_entry.D.8850.D.8849.DataIsDirectory;
      is_dir = (gboolean) D.11023;
      D.11024 = swapped_entry.D.8842.D.8839.NameOffset;
      name_offset = (guint32) D.11024;
      D.11025 = swapped_entry.D.8850.D.8849.OffsetToDirectory;
      dir_offset = (guint32) D.11025;
      data_offset = swapped_entry.D.8850.OffsetToData;
      if (level == 0) goto <D.11026>; else goto <D.11027>;
      <D.11026>:
      if (is_string == 0) goto <D.11031>; else goto <D.11028>;
      <D.11031>:
      if (name_offset != res_id) goto <D.11029>; else goto <D.11028>;
      <D.11028>:
      if (is_string == 1) goto <D.11029>; else goto <D.11030>;
      <D.11029>:
      D.11032 = 0B;
      return D.11032;
      <D.11030>:
      goto <D.11033>;
      <D.11027>:
      if (level == 1) goto <D.11034>; else goto <D.11035>;
      <D.11034>:
      goto <D.11036>;
      <D.11035>:
      if (level == 2) goto <D.11037>; else goto <D.11038>;
      <D.11037>:
      if (is_string == 0) goto <D.11042>; else goto <D.11039>;
      <D.11042>:
      if (name_offset != lang_id) goto <D.11043>; else goto <D.11039>;
      <D.11043>:
      if (lang_id != 0) goto <D.11040>; else goto <D.11039>;
      <D.11039>:
      if (is_string == 1) goto <D.11040>; else goto <D.11041>;
      <D.11040>:
      D.11032 = 0B;
      return D.11032;
      <D.11041>:
      goto <D.11044>;
      <D.11038>:
      monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "versioninfo.c", 121);
      <D.11044>:
      <D.11036>:
      <D.11033>:
      if (is_dir == 1) goto <D.11045>; else goto <D.11046>;
      <D.11045>:
      {
        struct WapiImageResourceDirectory * res_dir;
        struct WapiImageResourceDirectoryEntry * sub_entries;
        guint32 entries;
        guint32 i;

        res_dir = root + dir_offset;
        sub_entries = res_dir + 16;
        D.11047 = res_dir->NumberOfNamedEntries;
        D.11048 = (int) D.11047;
        D.11049 = res_dir->NumberOfIdEntries;
        D.11050 = (int) D.11049;
        D.11051 = D.11048 + D.11050;
        entries = (guint32) D.11051;
        i = 0;
        goto <D.9962>;
        <D.9961>:
        {
          struct WapiImageResourceDirectoryEntry * sub_entry;
          void * ret;

          D.11052 = i * 8;
          sub_entry = sub_entries + D.11052;
          D.11053 = level + 1;
          ret = scan_resource_dir (root, nt_headers, file_map, sub_entry, D.11053, res_id, lang_id, size);
          if (ret != 0B) goto <D.11054>; else goto <D.11055>;
          <D.11054>:
          D.11032 = ret;
          return D.11032;
          <D.11055>:
        }
        i = i + 1;
        <D.9962>:
        if (i < entries) goto <D.9961>; else goto <D.9963>;
        <D.9963>:
        D.11032 = 0B;
        return D.11032;
      }
      <D.11046>:
      {
        struct WapiImageResourceDataEntry * data_entry;

        data_entry = root + data_offset;
        D.11056 = data_entry->Size;
        *size = D.11056;
        D.11057 = data_entry->OffsetToData;
        D.11032 = get_ptr_from_rva (D.11057, nt_headers, file_map);
        return D.11032;
      }
    }
  finally
    {
      swapped_entry = {CLOBBER};
    }
}


unmap_pe_file (void * file_map, void * handle)
{
  mono_file_unmap (file_map, handle);
}


GetFileVersionInfo (gunichar2 * filename, guint32 handle, guint32 len, void * data)
{
  gboolean D.11062;
  int map_size.14;
  unsigned int map_size.15;
  unsigned int size.16;
  unsigned int D.11068;
  void * map_handle.17;
  void * file_map;
  void * versioninfo;
  void * map_handle;
  gint32 map_size;
  guint32 size;
  gboolean ret;

  try
    {
      ret = 0;
      file_map = map_pe_file (filename, &map_size, &map_handle);
      if (file_map == 0B) goto <D.11060>; else goto <D.11061>;
      <D.11060>:
      D.11062 = 0;
      return D.11062;
      <D.11061>:
      map_size.14 = map_size;
      map_size.15 = (unsigned int) map_size.14;
      versioninfo = find_pe_file_resources (file_map, map_size.15, 16, 0, &size);
      if (versioninfo != 0B) goto <D.11065>; else goto <D.11066>;
      <D.11065>:
      size.16 = size;
      D.11068 = MIN_EXPR <size.16, len>;
      memcpy (data, versioninfo, D.11068);
      ret = 1;
      <D.11066>:
      map_handle.17 = map_handle;
      unmap_pe_file (file_map, map_handle.17);
      D.11062 = ret;
      return D.11062;
    }
  finally
    {
      map_handle = {CLOBBER};
      map_size = {CLOBBER};
      size = {CLOBBER};
    }
}


VerLanguageName (guint32 lang, gunichar2 * lang_out, guint32 lang_len)
{
  int lang.18;
  unsigned int D.11073;
  int D.11074;
  guint32 D.11190;
  int primary;
  int secondary;
  const char * name;

  name = 0B;
  lang.18 = (int) lang;
  primary = lang.18 & 1023;
  D.11073 = lang >> 10;
  D.11074 = (int) D.11073;
  secondary = D.11074 & 63;
  switch (primary) <default: <D.10696>, case 0: <D.10187>, case 1: <D.10191>, case 2: <D.10210>, case 3: <D.10214>, case 4: <D.10218>, case 5: <D.10226>, case 6: <D.10230>, case 7: <D.10234>, case 8: <D.10242>, case 9: <D.10246>, case 10: <D.10265>, case 11: <D.10289>, case 12: <D.10293>, case 13: <D.10302>, case 14: <D.10306>, case 15: <D.10310>, case 16: <D.10314>, case 17: <D.10319>, case 18: <D.10323>, case 19: <D.10327>, case 20: <D.10332>, case 21: <D.10337>, case 22: <D.10341>, case 23: <D.10346>, case 24: <D.10349>, case 25: <D.10353>, case 26: <D.10357>, case 27: <D.10368>, case 28: <D.10372>, case 29: <D.10376>, case 30: <D.10381>, case 31: <D.10385>, case 32: <D.10389>, case 33: <D.10393>, case 34: <D.10397>, case 35: <D.10401>, case 36: <D.10405>, case 37: <D.10409>, case 38: <D.10413>, case 39: <D.10417>, case 40: <D.10421>, case 41: <D.10424>, case 42: <D.10428>, case 43: <D.10432>, case 44: <D.10436>, case 45: <D.10441>, case 46: <D.10445>, case 47: <D.10449>, case 50: <D.10453>, case 52: <D.10457>, case 53: <D.10461>, case 54: <D.10465>, case 55: <D.10469>, case 56: <D.10473>, case 57: <D.10477>, case 58: <D.10481>, case 59: <D.10485>, case 60: <D.10497>, case 62: <D.10500>, case 63: <D.10505>, case 64: <D.10509>, case 65: <D.10513>, case 66: <D.10517>, case 67: <D.10520>, case 68: <D.10525>, case 69: <D.10529>, case 70: <D.10533>, case 71: <D.10537>, case 73: <D.10541>, case 74: <D.10545>, case 75: <D.10549>, case 76: <D.10553>, case 77: <D.10557>, case 78: <D.10560>, case 79: <D.10564>, case 80: <D.10568>, case 81: <D.10573>, case 82: <D.10577>, case 83: <D.10581>, case 84: <D.10584>, case 86: <D.10587>, case 87: <D.10591>, case 90: <D.10595>, case 91: <D.10599>, case 93: <D.10602>, case 94: <D.10606>, case 95: <D.10609>, case 97: <D.10612>, case 98: <D.10615>, case 99: <D.10618>, case 100: <D.10621>, case 101: <D.10624>, case 104: <D.10628>, case 106: <D.10631>, case 107: <D.10634>, case 108: <D.10640>, case 109: <D.10644>, case 110: <D.10647>, case 111: <D.10650>, case 120: <D.10653>, case 122: <D.10656>, case 124: <D.10659>, case 126: <D.10662>, case 127: <D.10665>, case 128: <D.10668>, case 129: <D.10671>, case 131: <D.10675>, case 132: <D.10678>, case 133: <D.10681>, case 134: <D.10684>, case 135: <D.10687>, case 136: <D.10690>, case 140: <D.10693>>
  <D.10187>:
  switch (secondary) <default: <D.11075>, case 1: <D.10188>>
  <D.10188>:
  name = "Process Default Language";
  goto <D.10189>;
  <D.11075>:
  <D.10189>:
  goto <D.10190>;
  <D.10191>:
  switch (secondary) <default: <D.11076>, case 0: <D.10192>, case 1: <D.10193>, case 2: <D.10195>, case 3: <D.10196>, case 4: <D.10197>, case 5: <D.10198>, case 6: <D.10199>, case 7: <D.10200>, case 8: <D.10201>, case 9: <D.10202>, case 10: <D.10203>, case 11: <D.10204>, case 12: <D.10205>, case 13: <D.10206>, case 14: <D.10207>, case 15: <D.10208>, case 16: <D.10209>>
  <D.10192>:
  <D.10193>:
  name = "Arabic (Saudi Arabia)";
  goto <D.10194>;
  <D.10195>:
  name = "Arabic (Iraq)";
  goto <D.10194>;
  <D.10196>:
  name = "Arabic (Egypt)";
  goto <D.10194>;
  <D.10197>:
  name = "Arabic (Libya)";
  goto <D.10194>;
  <D.10198>:
  name = "Arabic (Algeria)";
  goto <D.10194>;
  <D.10199>:
  name = "Arabic (Morocco)";
  goto <D.10194>;
  <D.10200>:
  name = "Arabic (Tunisia)";
  goto <D.10194>;
  <D.10201>:
  name = "Arabic (Oman)";
  goto <D.10194>;
  <D.10202>:
  name = "Arabic (Yemen)";
  goto <D.10194>;
  <D.10203>:
  name = "Arabic (Syria)";
  goto <D.10194>;
  <D.10204>:
  name = "Arabic (Jordan)";
  goto <D.10194>;
  <D.10205>:
  name = "Arabic (Lebanon)";
  goto <D.10194>;
  <D.10206>:
  name = "Arabic (Kuwait)";
  goto <D.10194>;
  <D.10207>:
  name = "Arabic (U.A.E.)";
  goto <D.10194>;
  <D.10208>:
  name = "Arabic (Bahrain)";
  goto <D.10194>;
  <D.10209>:
  name = "Arabic (Qatar)";
  goto <D.10194>;
  <D.11076>:
  <D.10194>:
  goto <D.10190>;
  <D.10210>:
  switch (secondary) <default: <D.11077>, case 0: <D.10211>, case 1: <D.10213>>
  <D.10211>:
  name = "Bulgarian (Bulgaria)";
  goto <D.10212>;
  <D.10213>:
  name = "Bulgarian";
  goto <D.10212>;
  <D.11077>:
  <D.10212>:
  goto <D.10190>;
  <D.10214>:
  switch (secondary) <default: <D.11078>, case 0: <D.10215>, case 1: <D.10217>>
  <D.10215>:
  name = "Catalan (Spain)";
  goto <D.10216>;
  <D.10217>:
  name = "Catalan";
  goto <D.10216>;
  <D.11078>:
  <D.10216>:
  goto <D.10190>;
  <D.10218>:
  switch (secondary) <default: <D.11079>, case 0: <D.10219>, case 1: <D.10220>, case 2: <D.10222>, case 3: <D.10223>, case 4: <D.10224>, case 5: <D.10225>>
  <D.10219>:
  <D.10220>:
  name = "Chinese (Taiwan)";
  goto <D.10221>;
  <D.10222>:
  name = "Chinese (PRC)";
  goto <D.10221>;
  <D.10223>:
  name = "Chinese (Hong Kong S.A.R.)";
  goto <D.10221>;
  <D.10224>:
  name = "Chinese (Singapore)";
  goto <D.10221>;
  <D.10225>:
  name = "Chinese (Macau S.A.R.)";
  goto <D.10221>;
  <D.11079>:
  <D.10221>:
  goto <D.10190>;
  <D.10226>:
  switch (secondary) <default: <D.11080>, case 0: <D.10227>, case 1: <D.10229>>
  <D.10227>:
  name = "Czech (Czech Republic)";
  goto <D.10228>;
  <D.10229>:
  name = "Czech";
  goto <D.10228>;
  <D.11080>:
  <D.10228>:
  goto <D.10190>;
  <D.10230>:
  switch (secondary) <default: <D.11081>, case 0: <D.10231>, case 1: <D.10233>>
  <D.10231>:
  name = "Danish (Denmark)";
  goto <D.10232>;
  <D.10233>:
  name = "Danish";
  goto <D.10232>;
  <D.11081>:
  <D.10232>:
  goto <D.10190>;
  <D.10234>:
  switch (secondary) <default: <D.11082>, case 0: <D.10235>, case 1: <D.10236>, case 2: <D.10238>, case 3: <D.10239>, case 4: <D.10240>, case 5: <D.10241>>
  <D.10235>:
  <D.10236>:
  name = "German (Germany)";
  goto <D.10237>;
  <D.10238>:
  name = "German (Switzerland)";
  goto <D.10237>;
  <D.10239>:
  name = "German (Austria)";
  goto <D.10237>;
  <D.10240>:
  name = "German (Luxembourg)";
  goto <D.10237>;
  <D.10241>:
  name = "German (Liechtenstein)";
  goto <D.10237>;
  <D.11082>:
  <D.10237>:
  goto <D.10190>;
  <D.10242>:
  switch (secondary) <default: <D.11083>, case 0: <D.10243>, case 1: <D.10245>>
  <D.10243>:
  name = "Greek (Greece)";
  goto <D.10244>;
  <D.10245>:
  name = "Greek";
  goto <D.10244>;
  <D.11083>:
  <D.10244>:
  goto <D.10190>;
  <D.10246>:
  switch (secondary) <default: <D.11084>, case 0: <D.10247>, case 1: <D.10248>, case 2: <D.10250>, case 3: <D.10251>, case 4: <D.10252>, case 5: <D.10253>, case 6: <D.10254>, case 7: <D.10255>, case 8: <D.10256>, case 9: <D.10257>, case 10: <D.10258>, case 11: <D.10259>, case 12: <D.10260>, case 13: <D.10261>, case 16: <D.10262>, case 17: <D.10263>, case 18: <D.10264>>
  <D.10247>:
  <D.10248>:
  name = "English (United States)";
  goto <D.10249>;
  <D.10250>:
  name = "English (United Kingdom)";
  goto <D.10249>;
  <D.10251>:
  name = "English (Australia)";
  goto <D.10249>;
  <D.10252>:
  name = "English (Canada)";
  goto <D.10249>;
  <D.10253>:
  name = "English (New Zealand)";
  goto <D.10249>;
  <D.10254>:
  name = "English (Ireland)";
  goto <D.10249>;
  <D.10255>:
  name = "English (South Africa)";
  goto <D.10249>;
  <D.10256>:
  name = "English (Jamaica)";
  goto <D.10249>;
  <D.10257>:
  name = "English (Caribbean)";
  goto <D.10249>;
  <D.10258>:
  name = "English (Belize)";
  goto <D.10249>;
  <D.10259>:
  name = "English (Trinidad and Tobago)";
  goto <D.10249>;
  <D.10260>:
  name = "English (Zimbabwe)";
  goto <D.10249>;
  <D.10261>:
  name = "English (Philippines)";
  goto <D.10249>;
  <D.10262>:
  name = "English (India)";
  goto <D.10249>;
  <D.10263>:
  name = "English (Malaysia)";
  goto <D.10249>;
  <D.10264>:
  name = "English (Singapore)";
  goto <D.10249>;
  <D.11084>:
  <D.10249>:
  goto <D.10190>;
  <D.10265>:
  switch (secondary) <default: <D.11085>, case 0: <D.10266>, case 1: <D.10268>, case 2: <D.10269>, case 3: <D.10270>, case 4: <D.10271>, case 5: <D.10272>, case 6: <D.10273>, case 7: <D.10274>, case 8: <D.10275>, case 9: <D.10276>, case 10: <D.10277>, case 11: <D.10278>, case 12: <D.10279>, case 13: <D.10280>, case 14: <D.10281>, case 15: <D.10282>, case 16: <D.10283>, case 17: <D.10284>, case 18: <D.10285>, case 19: <D.10286>, case 20: <D.10287>, case 21: <D.10288>>
  <D.10266>:
  name = "Spanish (Spain)";
  goto <D.10267>;
  <D.10268>:
  name = "Spanish (Traditional Sort)";
  goto <D.10267>;
  <D.10269>:
  name = "Spanish (Mexico)";
  goto <D.10267>;
  <D.10270>:
  name = "Spanish (International Sort)";
  goto <D.10267>;
  <D.10271>:
  name = "Spanish (Guatemala)";
  goto <D.10267>;
  <D.10272>:
  name = "Spanish (Costa Rica)";
  goto <D.10267>;
  <D.10273>:
  name = "Spanish (Panama)";
  goto <D.10267>;
  <D.10274>:
  name = "Spanish (Dominican Republic)";
  goto <D.10267>;
  <D.10275>:
  name = "Spanish (Venezuela)";
  goto <D.10267>;
  <D.10276>:
  name = "Spanish (Colombia)";
  goto <D.10267>;
  <D.10277>:
  name = "Spanish (Peru)";
  goto <D.10267>;
  <D.10278>:
  name = "Spanish (Argentina)";
  goto <D.10267>;
  <D.10279>:
  name = "Spanish (Ecuador)";
  goto <D.10267>;
  <D.10280>:
  name = "Spanish (Chile)";
  goto <D.10267>;
  <D.10281>:
  name = "Spanish (Uruguay)";
  goto <D.10267>;
  <D.10282>:
  name = "Spanish (Paraguay)";
  goto <D.10267>;
  <D.10283>:
  name = "Spanish (Bolivia)";
  goto <D.10267>;
  <D.10284>:
  name = "Spanish (El Salvador)";
  goto <D.10267>;
  <D.10285>:
  name = "Spanish (Honduras)";
  goto <D.10267>;
  <D.10286>:
  name = "Spanish (Nicaragua)";
  goto <D.10267>;
  <D.10287>:
  name = "Spanish (Puerto Rico)";
  goto <D.10267>;
  <D.10288>:
  name = "Spanish (United States)";
  goto <D.10267>;
  <D.11085>:
  <D.10267>:
  goto <D.10190>;
  <D.10289>:
  switch (secondary) <default: <D.11086>, case 0: <D.10290>, case 1: <D.10292>>
  <D.10290>:
  name = "Finnish (Finland)";
  goto <D.10291>;
  <D.10292>:
  name = "Finnish";
  goto <D.10291>;
  <D.11086>:
  <D.10291>:
  goto <D.10190>;
  <D.10293>:
  switch (secondary) <default: <D.11087>, case 0: <D.10294>, case 1: <D.10295>, case 2: <D.10297>, case 3: <D.10298>, case 4: <D.10299>, case 5: <D.10300>, case 6: <D.10301>>
  <D.10294>:
  <D.10295>:
  name = "French (France)";
  goto <D.10296>;
  <D.10297>:
  name = "French (Belgium)";
  goto <D.10296>;
  <D.10298>:
  name = "French (Canada)";
  goto <D.10296>;
  <D.10299>:
  name = "French (Switzerland)";
  goto <D.10296>;
  <D.10300>:
  name = "French (Luxembourg)";
  goto <D.10296>;
  <D.10301>:
  name = "French (Monaco)";
  goto <D.10296>;
  <D.11087>:
  <D.10296>:
  goto <D.10190>;
  <D.10302>:
  switch (secondary) <default: <D.11088>, case 0: <D.10303>, case 1: <D.10305>>
  <D.10303>:
  name = "Hebrew (Israel)";
  goto <D.10304>;
  <D.10305>:
  name = "Hebrew";
  goto <D.10304>;
  <D.11088>:
  <D.10304>:
  goto <D.10190>;
  <D.10306>:
  switch (secondary) <default: <D.11089>, case 0: <D.10307>, case 1: <D.10309>>
  <D.10307>:
  name = "Hungarian (Hungary)";
  goto <D.10308>;
  <D.10309>:
  name = "Hungarian";
  goto <D.10308>;
  <D.11089>:
  <D.10308>:
  goto <D.10190>;
  <D.10310>:
  switch (secondary) <default: <D.11090>, case 0: <D.10311>, case 1: <D.10313>>
  <D.10311>:
  name = "Icelandic (Iceland)";
  goto <D.10312>;
  <D.10313>:
  name = "Icelandic";
  goto <D.10312>;
  <D.11090>:
  <D.10312>:
  goto <D.10190>;
  <D.10314>:
  switch (secondary) <default: <D.11091>, case 0: <D.10315>, case 1: <D.10316>, case 2: <D.10318>>
  <D.10315>:
  <D.10316>:
  name = "Italian (Italy)";
  goto <D.10317>;
  <D.10318>:
  name = "Italian (Switzerland)";
  goto <D.10317>;
  <D.11091>:
  <D.10317>:
  goto <D.10190>;
  <D.10319>:
  switch (secondary) <default: <D.11092>, case 0: <D.10320>, case 1: <D.10322>>
  <D.10320>:
  name = "Japanese (Japan)";
  goto <D.10321>;
  <D.10322>:
  name = "Japanese";
  goto <D.10321>;
  <D.11092>:
  <D.10321>:
  goto <D.10190>;
  <D.10323>:
  switch (secondary) <default: <D.11093>, case 0: <D.10324>, case 1: <D.10326>>
  <D.10324>:
  name = "Korean (Korea)";
  goto <D.10325>;
  <D.10326>:
  name = "Korean";
  goto <D.10325>;
  <D.11093>:
  <D.10325>:
  goto <D.10190>;
  <D.10327>:
  switch (secondary) <default: <D.11094>, case 0: <D.10328>, case 1: <D.10329>, case 2: <D.10331>>
  <D.10328>:
  <D.10329>:
  name = "Dutch (Netherlands)";
  goto <D.10330>;
  <D.10331>:
  name = "Dutch (Belgium)";
  goto <D.10330>;
  <D.11094>:
  <D.10330>:
  goto <D.10190>;
  <D.10332>:
  switch (secondary) <default: <D.11095>, case 0: <D.10333>, case 1: <D.10334>, case 2: <D.10336>>
  <D.10333>:
  <D.10334>:
  name = "Norwegian (Bokmal)";
  goto <D.10335>;
  <D.10336>:
  name = "Norwegian (Nynorsk)";
  goto <D.10335>;
  <D.11095>:
  <D.10335>:
  goto <D.10190>;
  <D.10337>:
  switch (secondary) <default: <D.11096>, case 0: <D.10338>, case 1: <D.10340>>
  <D.10338>:
  name = "Polish (Poland)";
  goto <D.10339>;
  <D.10340>:
  name = "Polish";
  goto <D.10339>;
  <D.11096>:
  <D.10339>:
  goto <D.10190>;
  <D.10341>:
  switch (secondary) <default: <D.11097>, case 0: <D.10342>, case 1: <D.10343>, case 2: <D.10345>>
  <D.10342>:
  <D.10343>:
  name = "Portuguese (Brazil)";
  goto <D.10344>;
  <D.10345>:
  name = "Portuguese (Portugal)";
  goto <D.10344>;
  <D.11097>:
  <D.10344>:
  goto <D.10190>;
  <D.10346>:
  switch (secondary) <default: <D.11098>, case 1: <D.10347>>
  <D.10347>:
  name = "Romansh (Switzerland)";
  goto <D.10348>;
  <D.11098>:
  <D.10348>:
  goto <D.10190>;
  <D.10349>:
  switch (secondary) <default: <D.11099>, case 0: <D.10350>, case 1: <D.10352>>
  <D.10350>:
  name = "Romanian (Romania)";
  goto <D.10351>;
  <D.10352>:
  name = "Romanian";
  goto <D.10351>;
  <D.11099>:
  <D.10351>:
  goto <D.10190>;
  <D.10353>:
  switch (secondary) <default: <D.11100>, case 0: <D.10354>, case 1: <D.10356>>
  <D.10354>:
  name = "Russian (Russia)";
  goto <D.10355>;
  <D.10356>:
  name = "Russian";
  goto <D.10355>;
  <D.11100>:
  <D.10355>:
  goto <D.10190>;
  <D.10357>:
  switch (secondary) <default: <D.11101>, case 0: <D.10358>, case 1: <D.10360>, case 2: <D.10361>, case 3: <D.10362>, case 4: <D.10363>, case 5: <D.10364>, case 6: <D.10365>, case 7: <D.10366>, case 8: <D.10367>>
  <D.10358>:
  name = "Croatian (Croatia)";
  goto <D.10359>;
  <D.10360>:
  name = "Croatian";
  goto <D.10359>;
  <D.10361>:
  name = "Serbian (Latin)";
  goto <D.10359>;
  <D.10362>:
  name = "Serbian (Cyrillic)";
  goto <D.10359>;
  <D.10363>:
  name = "Croatian (Bosnia and Herzegovina)";
  goto <D.10359>;
  <D.10364>:
  name = "Bosnian (Latin, Bosnia and Herzegovina)";
  goto <D.10359>;
  <D.10365>:
  name = "Serbian (Latin, Bosnia and Herzegovina)";
  goto <D.10359>;
  <D.10366>:
  name = "Serbian (Cyrillic, Bosnia and Herzegovina)";
  goto <D.10359>;
  <D.10367>:
  name = "Bosnian (Cyrillic, Bosnia and Herzegovina)";
  goto <D.10359>;
  <D.11101>:
  <D.10359>:
  goto <D.10190>;
  <D.10368>:
  switch (secondary) <default: <D.11102>, case 0: <D.10369>, case 1: <D.10371>>
  <D.10369>:
  name = "Slovak (Slovakia)";
  goto <D.10370>;
  <D.10371>:
  name = "Slovak";
  goto <D.10370>;
  <D.11102>:
  <D.10370>:
  goto <D.10190>;
  <D.10372>:
  switch (secondary) <default: <D.11103>, case 0: <D.10373>, case 1: <D.10375>>
  <D.10373>:
  name = "Albanian (Albania)";
  goto <D.10374>;
  <D.10375>:
  name = "Albanian";
  goto <D.10374>;
  <D.11103>:
  <D.10374>:
  goto <D.10190>;
  <D.10376>:
  switch (secondary) <default: <D.11104>, case 0: <D.10377>, case 1: <D.10379>, case 2: <D.10380>>
  <D.10377>:
  name = "Swedish (Sweden)";
  goto <D.10378>;
  <D.10379>:
  name = "Swedish";
  goto <D.10378>;
  <D.10380>:
  name = "Swedish (Finland)";
  goto <D.10378>;
  <D.11104>:
  <D.10378>:
  goto <D.10190>;
  <D.10381>:
  switch (secondary) <default: <D.11105>, case 0: <D.10382>, case 1: <D.10384>>
  <D.10382>:
  name = "Thai (Thailand)";
  goto <D.10383>;
  <D.10384>:
  name = "Thai";
  goto <D.10383>;
  <D.11105>:
  <D.10383>:
  goto <D.10190>;
  <D.10385>:
  switch (secondary) <default: <D.11106>, case 0: <D.10386>, case 1: <D.10388>>
  <D.10386>:
  name = "Turkish (Turkey)";
  goto <D.10387>;
  <D.10388>:
  name = "Turkish";
  goto <D.10387>;
  <D.11106>:
  <D.10387>:
  goto <D.10190>;
  <D.10389>:
  switch (secondary) <default: <D.11107>, case 0: <D.10390>, case 1: <D.10392>>
  <D.10390>:
  name = "Urdu (Islamic Republic of Pakistan)";
  goto <D.10391>;
  <D.10392>:
  name = "Urdu";
  goto <D.10391>;
  <D.11107>:
  <D.10391>:
  goto <D.10190>;
  <D.10393>:
  switch (secondary) <default: <D.11108>, case 0: <D.10394>, case 1: <D.10396>>
  <D.10394>:
  name = "Indonesian (Indonesia)";
  goto <D.10395>;
  <D.10396>:
  name = "Indonesian";
  goto <D.10395>;
  <D.11108>:
  <D.10395>:
  goto <D.10190>;
  <D.10397>:
  switch (secondary) <default: <D.11109>, case 0: <D.10398>, case 1: <D.10400>>
  <D.10398>:
  name = "Ukrainian (Ukraine)";
  goto <D.10399>;
  <D.10400>:
  name = "Ukrainian";
  goto <D.10399>;
  <D.11109>:
  <D.10399>:
  goto <D.10190>;
  <D.10401>:
  switch (secondary) <default: <D.11110>, case 0: <D.10402>, case 1: <D.10404>>
  <D.10402>:
  name = "Belarusian (Belarus)";
  goto <D.10403>;
  <D.10404>:
  name = "Belarusian";
  goto <D.10403>;
  <D.11110>:
  <D.10403>:
  goto <D.10190>;
  <D.10405>:
  switch (secondary) <default: <D.11111>, case 0: <D.10406>, case 1: <D.10408>>
  <D.10406>:
  name = "Slovenian (Slovenia)";
  goto <D.10407>;
  <D.10408>:
  name = "Slovenian";
  goto <D.10407>;
  <D.11111>:
  <D.10407>:
  goto <D.10190>;
  <D.10409>:
  switch (secondary) <default: <D.11112>, case 0: <D.10410>, case 1: <D.10412>>
  <D.10410>:
  name = "Estonian (Estonia)";
  goto <D.10411>;
  <D.10412>:
  name = "Estonian";
  goto <D.10411>;
  <D.11112>:
  <D.10411>:
  goto <D.10190>;
  <D.10413>:
  switch (secondary) <default: <D.11113>, case 0: <D.10414>, case 1: <D.10416>>
  <D.10414>:
  name = "Latvian (Latvia)";
  goto <D.10415>;
  <D.10416>:
  name = "Latvian";
  goto <D.10415>;
  <D.11113>:
  <D.10415>:
  goto <D.10190>;
  <D.10417>:
  switch (secondary) <default: <D.11114>, case 0: <D.10418>, case 1: <D.10420>>
  <D.10418>:
  name = "Lithuanian (Lithuania)";
  goto <D.10419>;
  <D.10420>:
  name = "Lithuanian";
  goto <D.10419>;
  <D.11114>:
  <D.10419>:
  goto <D.10190>;
  <D.10421>:
  switch (secondary) <default: <D.11115>, case 1: <D.10422>>
  <D.10422>:
  name = "Tajik (Tajikistan)";
  goto <D.10423>;
  <D.11115>:
  <D.10423>:
  goto <D.10190>;
  <D.10424>:
  switch (secondary) <default: <D.11116>, case 0: <D.10425>, case 1: <D.10427>>
  <D.10425>:
  name = "Farsi (Iran)";
  goto <D.10426>;
  <D.10427>:
  name = "Farsi";
  goto <D.10426>;
  <D.11116>:
  <D.10426>:
  goto <D.10190>;
  <D.10428>:
  switch (secondary) <default: <D.11117>, case 0: <D.10429>, case 1: <D.10431>>
  <D.10429>:
  name = "Vietnamese (Viet Nam)";
  goto <D.10430>;
  <D.10431>:
  name = "Vietnamese";
  goto <D.10430>;
  <D.11117>:
  <D.10430>:
  goto <D.10190>;
  <D.10432>:
  switch (secondary) <default: <D.11118>, case 0: <D.10433>, case 1: <D.10435>>
  <D.10433>:
  name = "Armenian (Armenia)";
  goto <D.10434>;
  <D.10435>:
  name = "Armenian";
  goto <D.10434>;
  <D.11118>:
  <D.10434>:
  goto <D.10190>;
  <D.10436>:
  switch (secondary) <default: <D.11119>, case 0: <D.10437>, case 1: <D.10439>, case 2: <D.10440>>
  <D.10437>:
  name = "Azeri (Latin) (Azerbaijan)";
  goto <D.10438>;
  <D.10439>:
  name = "Azeri (Latin)";
  goto <D.10438>;
  <D.10440>:
  name = "Azeri (Cyrillic)";
  goto <D.10438>;
  <D.11119>:
  <D.10438>:
  goto <D.10190>;
  <D.10441>:
  switch (secondary) <default: <D.11120>, case 0: <D.10442>, case 1: <D.10444>>
  <D.10442>:
  name = "Basque (Spain)";
  goto <D.10443>;
  <D.10444>:
  name = "Basque";
  goto <D.10443>;
  <D.11120>:
  <D.10443>:
  goto <D.10190>;
  <D.10445>:
  switch (secondary) <default: <D.11121>, case 1: <D.10446>, case 2: <D.10448>>
  <D.10446>:
  name = "Upper Sorbian (Germany)";
  goto <D.10447>;
  <D.10448>:
  name = "Lower Sorbian (Germany)";
  goto <D.10447>;
  <D.11121>:
  <D.10447>:
  goto <D.10190>;
  <D.10449>:
  switch (secondary) <default: <D.11122>, case 0: <D.10450>, case 1: <D.10452>>
  <D.10450>:
  name = "FYRO Macedonian (Former Yugoslav Republic of Macedonia)";
  goto <D.10451>;
  <D.10452>:
  name = "FYRO Macedonian";
  goto <D.10451>;
  <D.11122>:
  <D.10451>:
  goto <D.10190>;
  <D.10453>:
  switch (secondary) <default: <D.11123>, case 0: <D.10454>, case 1: <D.10456>>
  <D.10454>:
  name = "Tswana (South Africa)";
  goto <D.10455>;
  <D.10456>:
  name = "Tswana";
  goto <D.10455>;
  <D.11123>:
  <D.10455>:
  goto <D.10190>;
  <D.10457>:
  switch (secondary) <default: <D.11124>, case 0: <D.10458>, case 1: <D.10460>>
  <D.10458>:
  name = "Xhosa (South Africa)";
  goto <D.10459>;
  <D.10460>:
  name = "Xhosa";
  goto <D.10459>;
  <D.11124>:
  <D.10459>:
  goto <D.10190>;
  <D.10461>:
  switch (secondary) <default: <D.11125>, case 0: <D.10462>, case 1: <D.10464>>
  <D.10462>:
  name = "Zulu (South Africa)";
  goto <D.10463>;
  <D.10464>:
  name = "Zulu";
  goto <D.10463>;
  <D.11125>:
  <D.10463>:
  goto <D.10190>;
  <D.10465>:
  switch (secondary) <default: <D.11126>, case 0: <D.10466>, case 1: <D.10468>>
  <D.10466>:
  name = "Afrikaans (South Africa)";
  goto <D.10467>;
  <D.10468>:
  name = "Afrikaans";
  goto <D.10467>;
  <D.11126>:
  <D.10467>:
  goto <D.10190>;
  <D.10469>:
  switch (secondary) <default: <D.11127>, case 0: <D.10470>, case 1: <D.10472>>
  <D.10470>:
  name = "Georgian (Georgia)";
  goto <D.10471>;
  <D.10472>:
  name = "Georgian";
  goto <D.10471>;
  <D.11127>:
  <D.10471>:
  goto <D.10190>;
  <D.10473>:
  switch (secondary) <default: <D.11128>, case 0: <D.10474>, case 1: <D.10476>>
  <D.10474>:
  name = "Faroese (Faroe Islands)";
  goto <D.10475>;
  <D.10476>:
  name = "Faroese";
  goto <D.10475>;
  <D.11128>:
  <D.10475>:
  goto <D.10190>;
  <D.10477>:
  switch (secondary) <default: <D.11129>, case 0: <D.10478>, case 1: <D.10480>>
  <D.10478>:
  name = "Hindi (India)";
  goto <D.10479>;
  <D.10480>:
  name = "Hindi";
  goto <D.10479>;
  <D.11129>:
  <D.10479>:
  goto <D.10190>;
  <D.10481>:
  switch (secondary) <default: <D.11130>, case 0: <D.10482>, case 1: <D.10484>>
  <D.10482>:
  name = "Maltese (Malta)";
  goto <D.10483>;
  <D.10484>:
  name = "Maltese";
  goto <D.10483>;
  <D.11130>:
  <D.10483>:
  goto <D.10190>;
  <D.10485>:
  switch (secondary) <default: <D.11131>, case 0: <D.10486>, case 1: <D.10488>, case 2: <D.10489>, case 3: <D.10490>, case 4: <D.10491>, case 5: <D.10492>, case 6: <D.10493>, case 7: <D.10494>, case 8: <D.10495>, case 9: <D.10496>>
  <D.10486>:
  name = "Sami (Northern) (Norway)";
  goto <D.10487>;
  <D.10488>:
  name = "Sami, Northern (Norway)";
  goto <D.10487>;
  <D.10489>:
  name = "Sami, Northern (Sweden)";
  goto <D.10487>;
  <D.10490>:
  name = "Sami, Northern (Finland)";
  goto <D.10487>;
  <D.10491>:
  name = "Sami, Lule (Norway)";
  goto <D.10487>;
  <D.10492>:
  name = "Sami, Lule (Sweden)";
  goto <D.10487>;
  <D.10493>:
  name = "Sami, Southern (Norway)";
  goto <D.10487>;
  <D.10494>:
  name = "Sami, Southern (Sweden)";
  goto <D.10487>;
  <D.10495>:
  name = "Sami, Skolt (Finland)";
  goto <D.10487>;
  <D.10496>:
  name = "Sami, Inari (Finland)";
  goto <D.10487>;
  <D.11131>:
  <D.10487>:
  goto <D.10190>;
  <D.10497>:
  switch (secondary) <default: <D.11132>, case 2: <D.10498>>
  <D.10498>:
  name = "Irish (Ireland)";
  goto <D.10499>;
  <D.11132>:
  <D.10499>:
  goto <D.10190>;
  <D.10500>:
  switch (secondary) <default: <D.11133>, case 0: <D.10501>, case 1: <D.10502>, case 2: <D.10504>>
  <D.10501>:
  <D.10502>:
  name = "Malay (Malaysia)";
  goto <D.10503>;
  <D.10504>:
  name = "Malay (Brunei Darussalam)";
  goto <D.10503>;
  <D.11133>:
  <D.10503>:
  goto <D.10190>;
  <D.10505>:
  switch (secondary) <default: <D.11134>, case 0: <D.10506>, case 1: <D.10508>>
  <D.10506>:
  name = "Kazakh (Kazakhstan)";
  goto <D.10507>;
  <D.10508>:
  name = "Kazakh";
  goto <D.10507>;
  <D.11134>:
  <D.10507>:
  goto <D.10190>;
  <D.10509>:
  switch (secondary) <default: <D.11135>, case 0: <D.10510>, case 1: <D.10512>>
  <D.10510>:
  name = "Kyrgyz (Kyrgyzstan)";
  goto <D.10511>;
  <D.10512>:
  name = "Kyrgyz (Cyrillic)";
  goto <D.10511>;
  <D.11135>:
  <D.10511>:
  goto <D.10190>;
  <D.10513>:
  switch (secondary) <default: <D.11136>, case 0: <D.10514>, case 1: <D.10516>>
  <D.10514>:
  name = "Swahili (Kenya)";
  goto <D.10515>;
  <D.10516>:
  name = "Swahili";
  goto <D.10515>;
  <D.11136>:
  <D.10515>:
  goto <D.10190>;
  <D.10517>:
  switch (secondary) <default: <D.11137>, case 1: <D.10518>>
  <D.10518>:
  name = "Turkmen (Turkmenistan)";
  goto <D.10519>;
  <D.11137>:
  <D.10519>:
  goto <D.10190>;
  <D.10520>:
  switch (secondary) <default: <D.11138>, case 0: <D.10521>, case 1: <D.10523>, case 2: <D.10524>>
  <D.10521>:
  name = "Uzbek (Latin) (Uzbekistan)";
  goto <D.10522>;
  <D.10523>:
  name = "Uzbek (Latin)";
  goto <D.10522>;
  <D.10524>:
  name = "Uzbek (Cyrillic)";
  goto <D.10522>;
  <D.11138>:
  <D.10522>:
  goto <D.10190>;
  <D.10525>:
  switch (secondary) <default: <D.11139>, case 0: <D.10526>, case 1: <D.10528>>
  <D.10526>:
  name = "Tatar (Russia)";
  goto <D.10527>;
  <D.10528>:
  name = "Tatar";
  goto <D.10527>;
  <D.11139>:
  <D.10527>:
  goto <D.10190>;
  <D.10529>:
  switch (secondary) <default: <D.11140>, case 0: <D.10530>, case 1: <D.10531>>
  <D.10530>:
  <D.10531>:
  name = "Bengali (India)";
  goto <D.10532>;
  <D.11140>:
  <D.10532>:
  goto <D.10190>;
  <D.10533>:
  switch (secondary) <default: <D.11141>, case 0: <D.10534>, case 1: <D.10536>>
  <D.10534>:
  name = "Punjabi (India)";
  goto <D.10535>;
  <D.10536>:
  name = "Punjabi";
  goto <D.10535>;
  <D.11141>:
  <D.10535>:
  goto <D.10190>;
  <D.10537>:
  switch (secondary) <default: <D.11142>, case 0: <D.10538>, case 1: <D.10540>>
  <D.10538>:
  name = "Gujarati (India)";
  goto <D.10539>;
  <D.10540>:
  name = "Gujarati";
  goto <D.10539>;
  <D.11142>:
  <D.10539>:
  goto <D.10190>;
  <D.10541>:
  switch (secondary) <default: <D.11143>, case 0: <D.10542>, case 1: <D.10544>>
  <D.10542>:
  name = "Tamil (India)";
  goto <D.10543>;
  <D.10544>:
  name = "Tamil";
  goto <D.10543>;
  <D.11143>:
  <D.10543>:
  goto <D.10190>;
  <D.10545>:
  switch (secondary) <default: <D.11144>, case 0: <D.10546>, case 1: <D.10548>>
  <D.10546>:
  name = "Telugu (India)";
  goto <D.10547>;
  <D.10548>:
  name = "Telugu";
  goto <D.10547>;
  <D.11144>:
  <D.10547>:
  goto <D.10190>;
  <D.10549>:
  switch (secondary) <default: <D.11145>, case 0: <D.10550>, case 1: <D.10552>>
  <D.10550>:
  name = "Kannada (India)";
  goto <D.10551>;
  <D.10552>:
  name = "Kannada";
  goto <D.10551>;
  <D.11145>:
  <D.10551>:
  goto <D.10190>;
  <D.10553>:
  switch (secondary) <default: <D.11146>, case 0: <D.10554>, case 1: <D.10555>>
  <D.10554>:
  <D.10555>:
  name = "Malayalam (India)";
  goto <D.10556>;
  <D.11146>:
  <D.10556>:
  goto <D.10190>;
  <D.10557>:
  switch (secondary) <default: <D.11147>, case 1: <D.10558>>
  <D.10558>:
  name = "Assamese (India)";
  goto <D.10559>;
  <D.11147>:
  <D.10559>:
  goto <D.10190>;
  <D.10560>:
  switch (secondary) <default: <D.11148>, case 0: <D.10561>, case 1: <D.10563>>
  <D.10561>:
  name = "Marathi (India)";
  goto <D.10562>;
  <D.10563>:
  name = "Marathi";
  goto <D.10562>;
  <D.11148>:
  <D.10562>:
  goto <D.10190>;
  <D.10564>:
  switch (secondary) <default: <D.11149>, case 0: <D.10565>, case 1: <D.10567>>
  <D.10565>:
  name = "Sanskrit (India)";
  goto <D.10566>;
  <D.10567>:
  name = "Sanskrit";
  goto <D.10566>;
  <D.11149>:
  <D.10566>:
  goto <D.10190>;
  <D.10568>:
  switch (secondary) <default: <D.11150>, case 0: <D.10569>, case 1: <D.10571>, case 2: <D.10572>>
  <D.10569>:
  name = "Mongolian (Mongolia)";
  goto <D.10570>;
  <D.10571>:
  name = "Mongolian (Cyrillic)";
  goto <D.10570>;
  <D.10572>:
  name = "Mongolian (PRC)";
  goto <D.10570>;
  <D.11150>:
  <D.10570>:
  goto <D.10190>;
  <D.10573>:
  switch (secondary) <default: <D.11151>, case 1: <D.10574>, case 2: <D.10576>>
  <D.10574>:
  name = "Tibetan (PRC)";
  goto <D.10575>;
  <D.10576>:
  name = "Tibetan (Bhutan)";
  goto <D.10575>;
  <D.11151>:
  <D.10575>:
  goto <D.10190>;
  <D.10577>:
  switch (secondary) <default: <D.11152>, case 0: <D.10578>, case 1: <D.10580>>
  <D.10578>:
  name = "Welsh (United Kingdom)";
  goto <D.10579>;
  <D.10580>:
  name = "Welsh";
  goto <D.10579>;
  <D.11152>:
  <D.10579>:
  goto <D.10190>;
  <D.10581>:
  switch (secondary) <default: <D.11153>, case 1: <D.10582>>
  <D.10582>:
  name = "Khmer (Cambodia)";
  goto <D.10583>;
  <D.11153>:
  <D.10583>:
  goto <D.10190>;
  <D.10584>:
  switch (secondary) <default: <D.11154>, case 1: <D.10585>>
  <D.10585>:
  name = "Lao (Lao PDR)";
  goto <D.10586>;
  <D.11154>:
  <D.10586>:
  goto <D.10190>;
  <D.10587>:
  switch (secondary) <default: <D.11155>, case 0: <D.10588>, case 1: <D.10590>>
  <D.10588>:
  name = "Galician (Spain)";
  goto <D.10589>;
  <D.10590>:
  name = "Galician";
  goto <D.10589>;
  <D.11155>:
  <D.10589>:
  goto <D.10190>;
  <D.10591>:
  switch (secondary) <default: <D.11156>, case 0: <D.10592>, case 1: <D.10594>>
  <D.10592>:
  name = "Konkani (India)";
  goto <D.10593>;
  <D.10594>:
  name = "Konkani";
  goto <D.10593>;
  <D.11156>:
  <D.10593>:
  goto <D.10190>;
  <D.10595>:
  switch (secondary) <default: <D.11157>, case 0: <D.10596>, case 1: <D.10598>>
  <D.10596>:
  name = "Syriac (Syria)";
  goto <D.10597>;
  <D.10598>:
  name = "Syriac";
  goto <D.10597>;
  <D.11157>:
  <D.10597>:
  goto <D.10190>;
  <D.10599>:
  switch (secondary) <default: <D.11158>, case 1: <D.10600>>
  <D.10600>:
  name = "Sinhala (Sri Lanka)";
  goto <D.10601>;
  <D.11158>:
  <D.10601>:
  goto <D.10190>;
  <D.10602>:
  switch (secondary) <default: <D.11159>, case 1: <D.10603>, case 2: <D.10605>>
  <D.10603>:
  name = "Inuktitut (Syllabics, Canada)";
  goto <D.10604>;
  <D.10605>:
  name = "Inuktitut (Latin, Canada)";
  goto <D.10604>;
  <D.11159>:
  <D.10604>:
  goto <D.10190>;
  <D.10606>:
  switch (secondary) <default: <D.11160>, case 1: <D.10607>>
  <D.10607>:
  name = "Amharic (Ethiopia)";
  goto <D.10608>;
  <D.11160>:
  <D.10608>:
  goto <D.10190>;
  <D.10609>:
  switch (secondary) <default: <D.11161>, case 2: <D.10610>>
  <D.10610>:
  name = "Tamazight (Algeria, Latin)";
  goto <D.10611>;
  <D.11161>:
  <D.10611>:
  goto <D.10190>;
  <D.10612>:
  switch (secondary) <default: <D.11162>, case 1: <D.10613>>
  <D.10613>:
  name = "Nepali (Nepal)";
  goto <D.10614>;
  <D.11162>:
  <D.10614>:
  goto <D.10190>;
  <D.10615>:
  switch (secondary) <default: <D.11163>, case 1: <D.10616>>
  <D.10616>:
  name = "Frisian (Netherlands)";
  goto <D.10617>;
  <D.11163>:
  <D.10617>:
  goto <D.10190>;
  <D.10618>:
  switch (secondary) <default: <D.11164>, case 1: <D.10619>>
  <D.10619>:
  name = "Pashto (Afghanistan)";
  goto <D.10620>;
  <D.11164>:
  <D.10620>:
  goto <D.10190>;
  <D.10621>:
  switch (secondary) <default: <D.11165>, case 1: <D.10622>>
  <D.10622>:
  name = "Filipino (Philippines)";
  goto <D.10623>;
  <D.11165>:
  <D.10623>:
  goto <D.10190>;
  <D.10624>:
  switch (secondary) <default: <D.11166>, case 0: <D.10625>, case 1: <D.10627>>
  <D.10625>:
  name = "Divehi (Maldives)";
  goto <D.10626>;
  <D.10627>:
  name = "Divehi";
  goto <D.10626>;
  <D.11166>:
  <D.10626>:
  goto <D.10190>;
  <D.10628>:
  switch (secondary) <default: <D.11167>, case 1: <D.10629>>
  <D.10629>:
  name = "Hausa (Nigeria, Latin)";
  goto <D.10630>;
  <D.11167>:
  <D.10630>:
  goto <D.10190>;
  <D.10631>:
  switch (secondary) <default: <D.11168>, case 1: <D.10632>>
  <D.10632>:
  name = "Yoruba (Nigeria)";
  goto <D.10633>;
  <D.11168>:
  <D.10633>:
  goto <D.10190>;
  <D.10634>:
  switch (secondary) <default: <D.11169>, case 0: <D.10635>, case 1: <D.10636>, case 2: <D.10638>, case 3: <D.10639>>
  <D.10635>:
  <D.10636>:
  name = "Quechua (Bolivia)";
  goto <D.10637>;
  <D.10638>:
  name = "Quechua (Ecuador)";
  goto <D.10637>;
  <D.10639>:
  name = "Quechua (Peru)";
  goto <D.10637>;
  <D.11169>:
  <D.10637>:
  goto <D.10190>;
  <D.10640>:
  switch (secondary) <default: <D.11170>, case 0: <D.10641>, case 1: <D.10643>>
  <D.10641>:
  name = "Northern Sotho (South Africa)";
  goto <D.10642>;
  <D.10643>:
  name = "Northern Sotho";
  goto <D.10642>;
  <D.11170>:
  <D.10642>:
  goto <D.10190>;
  <D.10644>:
  switch (secondary) <default: <D.11171>, case 1: <D.10645>>
  <D.10645>:
  name = "Bashkir (Russia)";
  goto <D.10646>;
  <D.11171>:
  <D.10646>:
  goto <D.10190>;
  <D.10647>:
  switch (secondary) <default: <D.11172>, case 1: <D.10648>>
  <D.10648>:
  name = "Luxembourgish (Luxembourg)";
  goto <D.10649>;
  <D.11172>:
  <D.10649>:
  goto <D.10190>;
  <D.10650>:
  switch (secondary) <default: <D.11173>, case 1: <D.10651>>
  <D.10651>:
  name = "Greenlandic (Greenland)";
  goto <D.10652>;
  <D.11173>:
  <D.10652>:
  goto <D.10190>;
  <D.10653>:
  switch (secondary) <default: <D.11174>, case 1: <D.10654>>
  <D.10654>:
  name = "Yi (PRC)";
  goto <D.10655>;
  <D.11174>:
  <D.10655>:
  goto <D.10190>;
  <D.10656>:
  switch (secondary) <default: <D.11175>, case 1: <D.10657>>
  <D.10657>:
  name = "Mapudungun (Chile)";
  goto <D.10658>;
  <D.11175>:
  <D.10658>:
  goto <D.10190>;
  <D.10659>:
  switch (secondary) <default: <D.11176>, case 1: <D.10660>>
  <D.10660>:
  name = "Mohawk (Mohawk)";
  goto <D.10661>;
  <D.11176>:
  <D.10661>:
  goto <D.10190>;
  <D.10662>:
  switch (secondary) <default: <D.11177>, case 1: <D.10663>>
  <D.10663>:
  name = "Breton (France)";
  goto <D.10664>;
  <D.11177>:
  <D.10664>:
  goto <D.10190>;
  <D.10665>:
  switch (secondary) <default: <D.11178>, case 0: <D.10666>>
  <D.10666>:
  name = "Invariant Language (Invariant Country)";
  goto <D.10667>;
  <D.11178>:
  <D.10667>:
  goto <D.10190>;
  <D.10668>:
  switch (secondary) <default: <D.11179>, case 1: <D.10669>>
  <D.10669>:
  name = "Uighur (PRC)";
  goto <D.10670>;
  <D.11179>:
  <D.10670>:
  goto <D.10190>;
  <D.10671>:
  switch (secondary) <default: <D.11180>, case 0: <D.10672>, case 1: <D.10674>>
  <D.10672>:
  name = "Maori (New Zealand)";
  goto <D.10673>;
  <D.10674>:
  name = "Maori";
  goto <D.10673>;
  <D.11180>:
  <D.10673>:
  goto <D.10190>;
  <D.10675>:
  switch (secondary) <default: <D.11181>, case 1: <D.10676>>
  <D.10676>:
  name = "Corsican (France)";
  goto <D.10677>;
  <D.11181>:
  <D.10677>:
  goto <D.10190>;
  <D.10678>:
  switch (secondary) <default: <D.11182>, case 1: <D.10679>>
  <D.10679>:
  name = "Alsatian (France)";
  goto <D.10680>;
  <D.11182>:
  <D.10680>:
  goto <D.10190>;
  <D.10681>:
  switch (secondary) <default: <D.11183>, case 1: <D.10682>>
  <D.10682>:
  name = "Yakut (Russia)";
  goto <D.10683>;
  <D.11183>:
  <D.10683>:
  goto <D.10190>;
  <D.10684>:
  switch (secondary) <default: <D.11184>, case 1: <D.10685>>
  <D.10685>:
  name = "K\'iche (Guatemala)";
  goto <D.10686>;
  <D.11184>:
  <D.10686>:
  goto <D.10190>;
  <D.10687>:
  switch (secondary) <default: <D.11185>, case 1: <D.10688>>
  <D.10688>:
  name = "Kinyarwanda (Rwanda)";
  goto <D.10689>;
  <D.11185>:
  <D.10689>:
  goto <D.10190>;
  <D.10690>:
  switch (secondary) <default: <D.11186>, case 1: <D.10691>>
  <D.10691>:
  name = "Wolof (Senegal)";
  goto <D.10692>;
  <D.11186>:
  <D.10692>:
  goto <D.10190>;
  <D.10693>:
  switch (secondary) <default: <D.11187>, case 1: <D.10694>>
  <D.10694>:
  name = "Dari (Afghanistan)";
  goto <D.10695>;
  <D.11187>:
  <D.10695>:
  goto <D.10190>;
  <D.10696>:
  name = "Language Neutral";
  <D.10190>:
  if (name == 0B) goto <D.11188>; else goto <D.11189>;
  <D.11188>:
  name = "Language Neutral";
  <D.11189>:
  D.11190 = copy_lang (lang_out, lang_len, name);
  return D.11190;
}


copy_lang (gunichar2 * lang_out, guint32 lang_len, const gchar * text)
{
  unsigned int D.11193;
  _Bool D.11194;
  long int D.11195;
  long int D.11196;
  unsigned int chars.19;
  unsigned int D.11200;
  int D.11203;
  unsigned int D.11204;
  unsigned int chars.20;
  unsigned int D.11206;
  gunichar2 * D.11207;
  unsigned int D.11209;
  unsigned int D.11210;
  unsigned int D.11211;
  gunichar2 * D.11212;
  guint32 D.11213;
  gunichar2 * unitext;
  int chars;
  int ret;

  D.11193 = strlen (text);
  chars = (int) D.11193;
  unitext = monoeg_g_utf8_to_utf16 (text, -1, 0B, 0B, 0B);
  D.11194 = unitext == 0B;
  D.11195 = (long int) D.11194;
  D.11196 = __builtin_expect (D.11195, 0);
  if (D.11196 != 0) goto <D.11197>; else goto <D.11198>;
  <D.11197>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "versioninfo.c", 1008, "unitext != NULL");
  <D.11198>:
  chars.19 = (unsigned int) chars;
  D.11200 = lang_len + 4294967295;
  if (chars.19 < D.11200) goto <D.11201>; else goto <D.11202>;
  <D.11201>:
  D.11203 = chars * 2;
  D.11204 = (unsigned int) D.11203;
  memcpy (lang_out, unitext, D.11204);
  chars.20 = (unsigned int) chars;
  D.11206 = chars.20 * 2;
  D.11207 = lang_out + D.11206;
  *D.11207 = 0;
  ret = chars;
  goto <D.11208>;
  <D.11202>:
  D.11209 = lang_len + 2147483647;
  D.11210 = D.11209 * 2;
  memcpy (lang_out, unitext, D.11210);
  D.11211 = lang_len * 2;
  D.11212 = lang_out + D.11211;
  *D.11212 = 0;
  ret = (int) lang_len;
  <D.11208>:
  monoeg_g_free (unitext);
  D.11213 = (guint32) ret;
  return D.11213;
}


