VerQueryValue (const void * datablock, const gunichar2 * subblock, void * * buffer, guint32 * len)
{
  gboolean D.10669;
  int D.10096;
  int iftmp.0;
  int D.10095;
  const char[25] * D.10673;
  unsigned char D.10674;
  int D.10675;
  unsigned char D.10676;
  int D.10677;
  _Bool D.10678;
  _Bool D.10679;
  _Bool D.10680;
  const unsigned char * D.10683;
  unsigned char D.10684;
  int D.10685;
  const unsigned char * D.10686;
  unsigned char D.10687;
  int D.10688;
  _Bool D.10689;
  _Bool D.10690;
  const unsigned char * D.10693;
  unsigned char D.10694;
  int D.10695;
  const unsigned char * D.10696;
  unsigned char D.10697;
  int D.10698;
  _Bool D.10699;
  _Bool D.10700;
  const unsigned char * D.10703;
  unsigned char D.10704;
  int D.10705;
  const unsigned char * D.10706;
  unsigned char D.10707;
  int D.10708;
  int D.10713;
  const gunichar2 * D.10716;
  int D.10114;
  int iftmp.1;
  int D.10113;
  const char[2] * D.10720;
  unsigned char D.10721;
  int D.10722;
  unsigned char D.10723;
  int D.10724;
  _Bool D.10725;
  _Bool D.10726;
  _Bool D.10727;
  const unsigned char * D.10730;
  unsigned char D.10731;
  int D.10732;
  const unsigned char * D.10733;
  unsigned char D.10734;
  int D.10735;
  _Bool D.10736;
  _Bool D.10737;
  const unsigned char * D.10740;
  unsigned char D.10741;
  int D.10742;
  const unsigned char * D.10743;
  unsigned char D.10744;
  int D.10745;
  _Bool D.10746;
  _Bool D.10747;
  const unsigned char * D.10750;
  unsigned char D.10751;
  int D.10752;
  const unsigned char * D.10753;
  unsigned char D.10754;
  int D.10755;
  short unsigned int D.10761;
  unsigned int D.10762;
  int D.10764;
  short unsigned int D.10769;
  int D.10770;
  sizetype data_ptr.2;
  sizetype D.10772;
  sizetype D.10773;
  gunichar2 * D.10775;
  int D.10776;
  sizetype D.10781;
  int D.10783;
  void * string_value.3;
  unsigned int string_value_len.4;
  unsigned int D.10793;
  unsigned int D.10794;
  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.10667>; else goto <D.10668>;
      <D.10667>:
      D.10669 = 0;
      return D.10669;
      <D.10668>:
      {
        size_t __s1_len;
        size_t __s2_len;

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

          __s2 = subblock_utf8;
          D.10673 = "\\VarFileInfo\\Translation";
          D.10674 = MEM[(const unsigned char *)D.10673];
          D.10675 = (int) D.10674;
          D.10676 = *__s2;
          D.10677 = (int) D.10676;
          __result = D.10675 - D.10677;
          {
            D.10678 = __s2_len != 0;
            D.10679 = __result == 0;
            D.10680 = D.10678 & D.10679;
            if (D.10680 != 0) goto <D.10681>; else goto <D.10682>;
            <D.10681>:
            D.10683 = &MEM[(void *)"\\VarFileInfo\\Translation" + 1B];
            D.10684 = *D.10683;
            D.10685 = (int) D.10684;
            D.10686 = __s2 + 1;
            D.10687 = *D.10686;
            D.10688 = (int) D.10687;
            __result = D.10685 - D.10688;
            D.10689 = __s2_len > 1;
            D.10679 = __result == 0;
            D.10690 = D.10689 & D.10679;
            if (D.10690 != 0) goto <D.10691>; else goto <D.10692>;
            <D.10691>:
            D.10693 = &MEM[(void *)"\\VarFileInfo\\Translation" + 2B];
            D.10694 = *D.10693;
            D.10695 = (int) D.10694;
            D.10696 = __s2 + 2;
            D.10697 = *D.10696;
            D.10698 = (int) D.10697;
            __result = D.10695 - D.10698;
            D.10699 = __s2_len > 2;
            D.10679 = __result == 0;
            D.10700 = D.10699 & D.10679;
            if (D.10700 != 0) goto <D.10701>; else goto <D.10702>;
            <D.10701>:
            D.10703 = &MEM[(void *)"\\VarFileInfo\\Translation" + 3B];
            D.10704 = *D.10703;
            D.10705 = (int) D.10704;
            D.10706 = __s2 + 3;
            D.10707 = *D.10706;
            D.10708 = (int) D.10707;
            __result = D.10705 - D.10708;
            <D.10702>:
            <D.10692>:
            <D.10682>:
          }
          D.10095 = __result;
        }
        iftmp.0 = -D.10095;
        goto <D.10709>;
        <D.10672>:
        iftmp.0 = __builtin_strcmp (subblock_utf8, "\\VarFileInfo\\Translation");
        <D.10709>:
        D.10096 = iftmp.0;
      }
      if (D.10096 == 0) goto <D.10710>; else goto <D.10711>;
      <D.10710>:
      want_var = 1;
      goto <D.10712>;
      <D.10711>:
      D.10713 = strncmp (subblock_utf8, "\\StringFileInfo\\", 16);
      if (D.10713 == 0) goto <D.10714>; else goto <D.10715>;
      <D.10714>:
      want_string = 1;
      D.10716 = subblock + 32;
      memcpy (&lang, D.10716, 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.10715>:
      <D.10712>:
      {
        size_t __s1_len;
        size_t __s2_len;

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

          __s2 = subblock_utf8;
          D.10720 = "\\";
          D.10721 = MEM[(const unsigned char *)D.10720];
          D.10722 = (int) D.10721;
          D.10723 = *__s2;
          D.10724 = (int) D.10723;
          __result = D.10722 - D.10724;
          {
            D.10725 = __s2_len != 0;
            D.10726 = __result == 0;
            D.10727 = D.10725 & D.10726;
            if (D.10727 != 0) goto <D.10728>; else goto <D.10729>;
            <D.10728>:
            D.10730 = &MEM[(void *)"\\" + 1B];
            D.10731 = *D.10730;
            D.10732 = (int) D.10731;
            D.10733 = __s2 + 1;
            D.10734 = *D.10733;
            D.10735 = (int) D.10734;
            __result = D.10732 - D.10735;
            D.10736 = __s2_len > 1;
            D.10726 = __result == 0;
            D.10737 = D.10736 & D.10726;
            if (D.10737 != 0) goto <D.10738>; else goto <D.10739>;
            <D.10738>:
            D.10740 = &MEM[(void *)"\\" + 2B];
            D.10741 = *D.10740;
            D.10742 = (int) D.10741;
            D.10743 = __s2 + 2;
            D.10744 = *D.10743;
            D.10745 = (int) D.10744;
            __result = D.10742 - D.10745;
            D.10746 = __s2_len > 2;
            D.10726 = __result == 0;
            D.10747 = D.10746 & D.10726;
            if (D.10747 != 0) goto <D.10748>; else goto <D.10749>;
            <D.10748>:
            D.10750 = &MEM[(void *)"\\" + 3B];
            D.10751 = *D.10750;
            D.10752 = (int) D.10751;
            D.10753 = __s2 + 3;
            D.10754 = *D.10753;
            D.10755 = (int) D.10754;
            __result = D.10752 - D.10755;
            <D.10749>:
            <D.10739>:
            <D.10729>:
          }
          D.10113 = __result;
        }
        iftmp.1 = -D.10113;
        goto <D.10756>;
        <D.10719>:
        iftmp.1 = __builtin_strcmp (subblock_utf8, "\\");
        <D.10756>:
        D.10114 = iftmp.1;
      }
      if (D.10114 == 0) goto <D.10757>; else goto <D.10758>;
      <D.10757>:
      data_ptr = get_fixedfileinfo_block (datablock, &block);
      if (data_ptr != 0B) goto <D.10759>; else goto <D.10760>;
      <D.10759>:
      *buffer = data_ptr;
      D.10761 = block.value_len;
      D.10762 = (unsigned int) D.10761;
      *len = D.10762;
      ret = 1;
      <D.10760>:
      goto <D.10763>;
      <D.10758>:
      D.10764 = want_var | want_string;
      if (D.10764 != 0) goto <D.10765>; else goto <D.10766>;
      <D.10765>:
      data_ptr = get_fixedfileinfo_block (datablock, &block);
      if (data_ptr != 0B) goto <D.10767>; else goto <D.10768>;
      <D.10767>:
      data_ptr = data_ptr + 52;
      D.10769 = block.data_len;
      D.10770 = (int) D.10769;
      data_len = D.10770 + -92;
      goto <D.10117>;
      <D.10116>:
      data_ptr = data_ptr + 3;
      data_ptr.2 = (sizetype) data_ptr;
      D.10772 = data_ptr.2 & 3;
      D.10773 = -D.10772;
      data_ptr = data_ptr + D.10773;
      data_ptr = get_versioninfo_block (data_ptr, &block);
      D.10769 = block.data_len;
      if (D.10769 == 0) goto done; else goto <D.10774>;
      <D.10774>:
      D.10769 = block.data_len;
      D.10770 = (int) D.10769;
      data_len = data_len - D.10770;
      D.10775 = block.key;
      D.10776 = unicode_string_equals (D.10775, "VarFileInfo");
      if (D.10776 != 0) goto <D.10777>; else goto <D.10778>;
      <D.10777>:
      data_ptr = get_varfileinfo_block (data_ptr, &block);
      if (want_var != 0) goto <D.10779>; else goto <D.10780>;
      <D.10779>:
      *buffer = data_ptr;
      D.10761 = block.value_len;
      D.10762 = (unsigned int) D.10761;
      *len = D.10762;
      ret = 1;
      goto done;
      <D.10780>:
      D.10761 = block.value_len;
      D.10781 = (sizetype) D.10761;
      data_ptr = data_ptr + D.10781;
      goto <D.10782>;
      <D.10778>:
      D.10775 = block.key;
      D.10783 = unicode_string_equals (D.10775, "StringFileInfo");
      if (D.10783 != 0) goto <D.10784>; else goto done;
      <D.10784>:
      data_ptr = get_stringtable_block (data_ptr, lang_utf8, string_key, &string_value, &string_value_len, &block);
      if (want_string != 0) goto <D.10785>; else goto <D.10786>;
      <D.10785>:
      string_value.3 = string_value;
      if (string_value.3 != 0B) goto <D.10788>; else goto <D.10789>;
      <D.10788>:
      string_value_len.4 = string_value_len;
      if (string_value_len.4 != 0) goto <D.10791>; else goto <D.10792>;
      <D.10791>:
      string_value.3 = string_value;
      *buffer = string_value.3;
      string_value.3 = string_value;
      D.10793 = unicode_chars (string_value.3);
      D.10794 = D.10793 + 1;
      *len = D.10794;
      ret = 1;
      goto done;
      <D.10792>:
      <D.10789>:
      <D.10786>:
      <D.10782>:
      if (data_ptr == 0B) goto done; else goto <D.10795>;
      <D.10795>:
      <D.10117>:
      if (data_len > 0) goto <D.10116>; else goto <D.10118>;
      <D.10118>:
      <D.10768>:
      <D.10766>:
      <D.10763>:
      done:
      if (lang_utf8 != 0B) goto <D.10796>; else goto <D.10797>;
      <D.10796>:
      monoeg_g_free (lang_utf8);
      <D.10797>:
      monoeg_g_free (subblock_utf8);
      D.10669 = ret;
      return D.10669;
    }
  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.10800;
  unsigned int D.10801;

  D.10801 = __builtin_object_size (__dest, 0);
  D.10800 = __builtin___memcpy_chk (__dest, __src, __len, D.10801);
  return D.10800;
}


get_fixedfileinfo_block (const void * data, struct version_data * block)
{
  short unsigned int D.10803;
  short unsigned int D.10804;
  const void * D.10807;
  gunichar2 * D.10808;
  int D.10809;
  unsigned int D.10814;
  unsigned int D.10816;
  const void * data_ptr;
  gint32 data_len;
  struct WapiFixedFileInfo * ffi;

  data_ptr = get_versioninfo_block (data, block);
  D.10803 = block->data_len;
  data_len = (gint32) D.10803;
  D.10804 = block->value_len;
  if (D.10804 != 52) goto <D.10805>; else goto <D.10806>;
  <D.10805>:
  D.10807 = 0B;
  return D.10807;
  <D.10806>:
  D.10808 = block->key;
  D.10809 = unicode_string_equals (D.10808, "VS_VERSION_INFO");
  if (D.10809 == 0) goto <D.10810>; else goto <D.10811>;
  <D.10810>:
  D.10807 = 0B;
  return D.10807;
  <D.10811>:
  ffi = data_ptr;
  D.10814 = ffi->dwSignature;
  if (D.10814 != 4277077181) goto <D.10812>; else goto <D.10815>;
  <D.10815>:
  D.10816 = ffi->dwStrucVersion;
  if (D.10816 != 65536) goto <D.10812>; else goto <D.10813>;
  <D.10812>:
  D.10807 = 0B;
  return D.10807;
  <D.10813>:
  D.10807 = data_ptr;
  return D.10807;
}


get_versioninfo_block (const void * data, struct version_data * block)
{
  short unsigned int D.10818;
  gunichar2 * D.10819;
  unsigned int D.10820;
  sizetype D.10821;
  sizetype D.10822;
  sizetype data.5;
  sizetype D.10824;
  sizetype D.10825;
  const void * D.10826;

  D.10818 = MEM[(guint16 *)data];
  block->data_len = D.10818;
  data = data + 2;
  D.10818 = MEM[(guint16 *)data];
  block->value_len = D.10818;
  data = data + 2;
  D.10818 = MEM[(guint16 *)data];
  block->type = D.10818;
  data = data + 2;
  block->key = data;
  D.10819 = block->key;
  D.10820 = unicode_chars (D.10819);
  D.10821 = D.10820 + 1;
  D.10822 = D.10821 * 2;
  data = data + D.10822;
  data = data + 3;
  data.5 = (sizetype) data;
  D.10824 = data.5 & 3;
  D.10825 = -D.10824;
  data = data + D.10825;
  D.10826 = data;
  return D.10826;
}


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

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


unicode_string_equals (const gunichar2 * str1, const gchar * str2)
{
  short unsigned int D.10830;
  int D.10831;
  char D.10832;
  int D.10833;
  gboolean D.10836;
  _Bool D.10838;

  goto <D.10009>;
  <D.10008>:
  D.10830 = *str1;
  D.10831 = (int) D.10830;
  D.10832 = *str2;
  D.10833 = (int) D.10832;
  if (D.10831 != D.10833) goto <D.10834>; else goto <D.10835>;
  <D.10834>:
  D.10836 = 0;
  return D.10836;
  <D.10835>:
  str1 = str1 + 2;
  str2 = str2 + 1;
  <D.10009>:
  D.10830 = *str1;
  if (D.10830 != 0) goto <D.10837>; else goto <D.10010>;
  <D.10837>:
  D.10832 = *str2;
  if (D.10832 != 0) goto <D.10008>; else goto <D.10010>;
  <D.10010>:
  D.10830 = *str1;
  D.10831 = (int) D.10830;
  D.10832 = *str2;
  D.10833 = (int) D.10832;
  D.10838 = D.10831 == D.10833;
  D.10836 = (gboolean) D.10838;
  return D.10836;
}


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.10841;
  sizetype D.10842;
  short unsigned int D.10843;
  const void * D.10846;
  gunichar2 * D.10847;
  int D.10065;
  guint16 data_len;
  guint16 string_len;
  gchar * found_lang;
  gchar * lowercase_lang;

  data_len = block->data_len;
  string_len = 36;
  goto <D.10067>;
  <D.10066>:
  data_ptr = data_ptr + 3;
  data_ptr.6 = (sizetype) data_ptr;
  D.10841 = data_ptr.6 & 3;
  D.10842 = -D.10841;
  data_ptr = data_ptr + D.10842;
  data_ptr = get_versioninfo_block (data_ptr, block);
  D.10843 = block->data_len;
  if (D.10843 == 0) goto <D.10844>; else goto <D.10845>;
  <D.10844>:
  D.10846 = 0B;
  return D.10846;
  <D.10845>:
  D.10843 = block->data_len;
  string_len = D.10843 + string_len;
  D.10847 = block->key;
  found_lang = monoeg_g_utf16_to_utf8 (D.10847, 8, 0B, 0B, 0B);
  if (found_lang == 0B) goto <D.10848>; else goto <D.10849>;
  <D.10848>:
  D.10846 = 0B;
  return D.10846;
  <D.10849>:
  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.10852>; else goto <D.10850>;
  <D.10852>:
  {
    size_t __s1_len;
    size_t __s2_len;

    D.10065 = __builtin_strcmp (found_lang, lang);
  }
  if (D.10065 == 0) goto <D.10853>; else goto <D.10850>;
  <D.10853>:
  data_ptr = get_string_block (data_ptr, string_key, string_value, string_value_len, block);
  goto <D.10851>;
  <D.10850>:
  data_ptr = get_string_block (data_ptr, 0B, 0B, 0B, block);
  <D.10851>:
  monoeg_g_free (found_lang);
  if (data_ptr == 0B) goto <D.10854>; else goto <D.10855>;
  <D.10854>:
  D.10846 = 0B;
  return D.10846;
  <D.10855>:
  <D.10067>:
  if (string_len < data_len) goto <D.10066>; else goto <D.10068>;
  <D.10068>:
  D.10846 = data_ptr;
  return D.10846;
}


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.10858;
  sizetype D.10859;
  short unsigned int D.10860;
  const void * D.10863;
  _Bool D.10864;
  _Bool D.10865;
  _Bool D.10866;
  gunichar2 * D.10871;
  int D.10872;
  short unsigned int D.10875;
  unsigned int D.10876;
  unsigned int D.10877;
  unsigned int D.10878;
  int data_ptr.8;
  int orig_data_ptr.9;
  int D.10881;
  int D.10882;
  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.10043>;
  <D.10042>:
  data_ptr = data_ptr + 3;
  data_ptr.7 = (sizetype) data_ptr;
  D.10858 = data_ptr.7 & 3;
  D.10859 = -D.10858;
  data_ptr = data_ptr + D.10859;
  data_ptr = get_versioninfo_block (data_ptr, block);
  D.10860 = block->data_len;
  if (D.10860 == 0) goto <D.10861>; else goto <D.10862>;
  <D.10861>:
  D.10863 = 0B;
  return D.10863;
  <D.10862>:
  D.10860 = block->data_len;
  string_len = D.10860 + string_len;
  D.10864 = string_key != 0B;
  D.10865 = string_value != 0B;
  D.10866 = D.10864 & D.10865;
  if (D.10866 != 0) goto <D.10867>; else goto <D.10868>;
  <D.10867>:
  if (string_value_len != 0B) goto <D.10869>; else goto <D.10870>;
  <D.10869>:
  D.10871 = block->key;
  D.10872 = unicode_compare (string_key, D.10871);
  if (D.10872 == 1) goto <D.10873>; else goto <D.10874>;
  <D.10873>:
  *string_value = data_ptr;
  D.10875 = block->value_len;
  D.10876 = (unsigned int) D.10875;
  *string_value_len = D.10876;
  <D.10874>:
  <D.10870>:
  <D.10868>:
  D.10875 = block->value_len;
  D.10877 = (unsigned int) D.10875;
  D.10878 = D.10877 * 2;
  data_ptr = data_ptr + D.10878;
  <D.10043>:
  data_ptr.8 = (int) data_ptr;
  orig_data_ptr.9 = (int) orig_data_ptr;
  D.10881 = data_ptr.8 - orig_data_ptr.9;
  D.10882 = (int) data_len;
  if (D.10881 < D.10882) goto <D.10042>; else goto <D.10044>;
  <D.10044>:
  D.10863 = data_ptr;
  return D.10863;
}


unicode_compare (const gunichar2 * str1, const gunichar2 * str2)
{
  short unsigned int D.10884;
  short unsigned int D.10885;
  gboolean D.10888;
  _Bool D.10890;

  goto <D.10002>;
  <D.10001>:
  D.10884 = *str1;
  D.10885 = *str2;
  if (D.10884 != D.10885) goto <D.10886>; else goto <D.10887>;
  <D.10886>:
  D.10888 = 0;
  return D.10888;
  <D.10887>:
  str1 = str1 + 2;
  str2 = str2 + 2;
  <D.10002>:
  D.10884 = *str1;
  if (D.10884 != 0) goto <D.10889>; else goto <D.10003>;
  <D.10889>:
  D.10885 = *str2;
  if (D.10885 != 0) goto <D.10001>; else goto <D.10003>;
  <D.10003>:
  D.10884 = *str1;
  D.10885 = *str2;
  D.10890 = D.10884 == D.10885;
  D.10888 = (gboolean) D.10890;
  return D.10888;
}


unicode_chars (const gunichar2 * str)
{
  unsigned int D.10892;
  const gunichar2 * D.10893;
  short unsigned int D.10894;
  guint32 D.10897;
  guint32 len;

  len = 0;
  <D.9996>:
  D.10892 = len * 2;
  D.10893 = str + D.10892;
  D.10894 = *D.10893;
  if (D.10894 == 0) goto <D.10895>; else goto <D.10896>;
  <D.10895>:
  D.10897 = len;
  return D.10897;
  <D.10896>:
  len = len + 1;
  goto <D.9996>;
}


GetFileVersionInfoSize (gunichar2 * filename, guint32 * handle)
{
  guint32 D.10901;
  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.10899>; else goto <D.10900>;
      <D.10899>:
      D.10901 = 0;
      return D.10901;
      <D.10900>:
      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.10904>; else goto <D.10905>;
      <D.10904>:
      size = 0;
      <D.10905>:
      map_handle.12 = map_handle;
      unmap_pe_file (file_map, map_handle.12);
      D.10901 = size;
      return D.10901;
    }
  finally
    {
      map_handle = {CLOBBER};
      map_size = {CLOBBER};
      size = {CLOBBER};
    }
}


map_pe_file (gunichar2 * filename, gint32 * map_size, void * * handle)
{
  void * D.10911;
  int * D.10914;
  int D.10915;
  int D.10916;
  unsigned int D.10917;
  int D.10918;
  int D.10921;
  unsigned int D.10922;
  long long int D.10923;
  int D.10924;
  unsigned int D.10927;
  int D.10930;
  unsigned int D.10931;
  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.10909>; else goto <D.10910>;
      <D.10909>:
      SetLastError (123);
      D.10911 = 0B;
      return D.10911;
      <D.10910>:
      fd = _wapi_open (filename_ext, 0, 0);
      if (fd == -1) goto <D.10912>; else goto <D.10913>;
      <D.10912>:
      D.10914 = __errno_location ();
      D.10915 = *D.10914;
      D.10916 = _wapi_get_win32_file_error (D.10915);
      D.10917 = (unsigned int) D.10916;
      SetLastError (D.10917);
      monoeg_g_free (filename_ext);
      D.10911 = 0B;
      return D.10911;
      <D.10913>:
      D.10918 = fstat (fd, &statbuf);
      if (D.10918 == -1) goto <D.10919>; else goto <D.10920>;
      <D.10919>:
      D.10914 = __errno_location ();
      D.10915 = *D.10914;
      D.10921 = _wapi_get_win32_file_error (D.10915);
      D.10922 = (unsigned int) D.10921;
      SetLastError (D.10922);
      monoeg_g_free (filename_ext);
      close (fd);
      D.10911 = 0B;
      return D.10911;
      <D.10920>:
      D.10923 = statbuf.st_size;
      D.10924 = (int) D.10923;
      *map_size = D.10924;
      D.10923 = statbuf.st_size;
      if (D.10923 <= 63) goto <D.10925>; else goto <D.10926>;
      <D.10925>:
      SetLastError (24);
      monoeg_g_free (filename_ext);
      close (fd);
      D.10911 = 0B;
      return D.10911;
      <D.10926>:
      D.10923 = statbuf.st_size;
      D.10927 = (unsigned int) D.10923;
      file_map = mono_file_map (D.10927, 17, fd, 0, handle);
      if (file_map == 0B) goto <D.10928>; else goto <D.10929>;
      <D.10928>:
      D.10914 = __errno_location ();
      D.10915 = *D.10914;
      D.10930 = _wapi_get_win32_file_error (D.10915);
      D.10931 = (unsigned int) D.10930;
      SetLastError (D.10931);
      monoeg_g_free (filename_ext);
      close (fd);
      D.10911 = 0B;
      return D.10911;
      <D.10929>:
      close (fd);
      monoeg_g_free (filename_ext);
      D.10911 = file_map;
      return D.10911;
    }
  finally
    {
      statbuf = {CLOBBER};
    }
}


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

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


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

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


find_pe_file_resources32 (void * file_map, guint32 map_size, guint32 res_id, guint32 lang_id, guint32 * size)
{
  short unsigned int D.10940;
  void * D.10943;
  unsigned int D.10944;
  unsigned int D.10945;
  unsigned int D.10948;
  short unsigned int D.10951;
  short unsigned int D.10959;
  int D.10960;
  short unsigned int D.10961;
  int D.10962;
  int D.10963;
  unsigned int D.10964;
  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.10940 = dos_header->e_magic;
  if (D.10940 != 23117) goto <D.10941>; else goto <D.10942>;
  <D.10941>:
  SetLastError (13);
  D.10943 = 0B;
  return D.10943;
  <D.10942>:
  D.10944 = dos_header->e_lfanew;
  D.10945 = D.10944 + 248;
  if (D.10945 > map_size) goto <D.10946>; else goto <D.10947>;
  <D.10946>:
  SetLastError (24);
  D.10943 = 0B;
  return D.10943;
  <D.10947>:
  D.10944 = dos_header->e_lfanew;
  nt_headers = file_map + D.10944;
  D.10948 = nt_headers->Signature;
  if (D.10948 != 17744) goto <D.10949>; else goto <D.10950>;
  <D.10949>:
  SetLastError (13);
  D.10943 = 0B;
  return D.10943;
  <D.10950>:
  D.10951 = nt_headers->OptionalHeader.Magic;
  if (D.10951 == 523) goto <D.10952>; else goto <D.10953>;
  <D.10952>:
  resource_rva = MEM[(struct WapiImageNTHeaders64 *)nt_headers].OptionalHeader.DataDirectory[2].VirtualAddress;
  goto <D.10954>;
  <D.10953>:
  resource_rva = nt_headers->OptionalHeader.DataDirectory[2].VirtualAddress;
  <D.10954>:
  if (resource_rva == 0) goto <D.10955>; else goto <D.10956>;
  <D.10955>:
  SetLastError (13);
  D.10943 = 0B;
  return D.10943;
  <D.10956>:
  resource_dir = get_ptr_from_rva (resource_rva, nt_headers, file_map);
  if (resource_dir == 0B) goto <D.10957>; else goto <D.10958>;
  <D.10957>:
  SetLastError (13);
  D.10943 = 0B;
  return D.10943;
  <D.10958>:
  D.10959 = resource_dir->NumberOfNamedEntries;
  D.10960 = (int) D.10959;
  D.10961 = resource_dir->NumberOfIdEntries;
  D.10962 = (int) D.10961;
  D.10963 = D.10960 + D.10962;
  entries = (guint32) D.10963;
  resource_dir_entry = resource_dir + 16;
  i = 0;
  goto <D.9951>;
  <D.9950>:
  {
    struct WapiImageResourceDirectoryEntry * direntry;

    D.10964 = i * 8;
    direntry = resource_dir_entry + D.10964;
    ret = scan_resource_dir (resource_dir, nt_headers, file_map, direntry, 0, res_id, lang_id, size);
    if (ret != 0B) goto <D.10965>; else goto <D.10966>;
    <D.10965>:
    D.10943 = ret;
    return D.10943;
    <D.10966>:
  }
  i = i + 1;
  <D.9951>:
  if (i < entries) goto <D.9950>; else goto <D.9952>;
  <D.9952>:
  D.10943 = 0B;
  return D.10943;
}


get_ptr_from_rva (guint32 rva, struct WapiImageNTHeaders32 * ntheaders, void * file_map)
{
  void * D.10970;
  unsigned int D.10971;
  unsigned int D.10972;
  sizetype D.10973;
  struct WapiImageSectionHeader * section_header;
  guint32 delta;

  section_header = get_enclosing_section_header (rva, ntheaders);
  if (section_header == 0B) goto <D.10968>; else goto <D.10969>;
  <D.10968>:
  D.10970 = 0B;
  return D.10970;
  <D.10969>:
  D.10971 = section_header->VirtualAddress;
  D.10972 = section_header->PointerToRawData;
  delta = D.10971 - D.10972;
  D.10973 = rva - delta;
  D.10970 = file_map + D.10973;
  return D.10970;
}


get_enclosing_section_header (guint32 rva, struct WapiImageNTHeaders32 * nt_headers)
{
  short unsigned int D.10975;
  unsigned int D.10976;
  unsigned int nt_headers.13;
  unsigned int D.10978;
  unsigned int D.10979;
  unsigned int D.10982;
  unsigned int D.10985;
  struct WapiImageSectionHeader * D.10988;
  short unsigned int D.10989;
  unsigned int D.10990;
  struct WapiImageSectionHeader * section;
  guint32 i;

  D.10975 = nt_headers->FileHeader.SizeOfOptionalHeader;
  D.10976 = (unsigned int) D.10975;
  nt_headers.13 = (unsigned int) nt_headers;
  D.10978 = D.10976 + nt_headers.13;
  D.10979 = D.10978 + 24;
  section = (struct WapiImageSectionHeader *) D.10979;
  i = 0;
  goto <D.9899>;
  <D.9898>:
  {
    guint32 size;

    size = section->Misc.VirtualSize;
    if (size == 0) goto <D.10980>; else goto <D.10981>;
    <D.10980>:
    size = section->SizeOfRawData;
    <D.10981>:
    D.10982 = section->VirtualAddress;
    if (D.10982 <= rva) goto <D.10983>; else goto <D.10984>;
    <D.10983>:
    D.10982 = section->VirtualAddress;
    D.10985 = D.10982 + size;
    if (D.10985 > rva) goto <D.10986>; else goto <D.10987>;
    <D.10986>:
    D.10988 = section;
    return D.10988;
    <D.10987>:
    <D.10984>:
  }
  i = i + 1;
  section = section + 40;
  <D.9899>:
  D.10989 = nt_headers->FileHeader.NumberOfSections;
  D.10990 = (unsigned int) D.10989;
  if (D.10990 > i) goto <D.9898>; else goto <D.9900>;
  <D.9900>:
  D.10988 = 0B;
  return D.10988;
}


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.10992;
  unsigned int D.10993;
  <unnamed-unsigned:1> D.10994;
  <unnamed-unsigned:1> D.10995;
  <unnamed-unsigned:31> D.10996;
  <unnamed-unsigned:31> D.10997;
  _Bool D.11002;
  _Bool D.11003;
  _Bool D.11004;
  void * D.11006;
  _Bool D.11016;
  _Bool D.11017;
  short unsigned int D.11022;
  int D.11023;
  short unsigned int D.11024;
  int D.11025;
  int D.11026;
  unsigned int D.11027;
  int D.11028;
  unsigned int D.11031;
  unsigned int D.11032;
  struct WapiImageResourceDirectoryEntry swapped_entry;
  gboolean is_string;
  gboolean is_dir;
  guint32 name_offset;
  guint32 dir_offset;
  guint32 data_offset;

  try
    {
      D.10992 = entry->D.8811.Name;
      swapped_entry.D.8811.Name = D.10992;
      D.10993 = entry->D.8819.OffsetToData;
      swapped_entry.D.8819.OffsetToData = D.10993;
      D.10994 = swapped_entry.D.8811.D.8808.NameIsString;
      is_string = (gboolean) D.10994;
      D.10995 = swapped_entry.D.8819.D.8818.DataIsDirectory;
      is_dir = (gboolean) D.10995;
      D.10996 = swapped_entry.D.8811.D.8808.NameOffset;
      name_offset = (guint32) D.10996;
      D.10997 = swapped_entry.D.8819.D.8818.OffsetToDirectory;
      dir_offset = (guint32) D.10997;
      data_offset = swapped_entry.D.8819.OffsetToData;
      if (level == 0) goto <D.10998>; else goto <D.10999>;
      <D.10998>:
      D.11002 = is_string == 0;
      D.11003 = name_offset != res_id;
      D.11004 = D.11002 & D.11003;
      if (D.11004 != 0) goto <D.11000>; else goto <D.11005>;
      <D.11005>:
      if (is_string == 1) goto <D.11000>; else goto <D.11001>;
      <D.11000>:
      D.11006 = 0B;
      return D.11006;
      <D.11001>:
      goto <D.11007>;
      <D.10999>:
      if (level == 1) goto <D.11008>; else goto <D.11009>;
      <D.11008>:
      goto <D.11010>;
      <D.11009>:
      if (level == 2) goto <D.11011>; else goto <D.11012>;
      <D.11011>:
      D.11002 = is_string == 0;
      D.11016 = name_offset != lang_id;
      D.11017 = D.11002 & D.11016;
      if (D.11017 != 0) goto <D.11018>; else goto <D.11013>;
      <D.11018>:
      if (lang_id != 0) goto <D.11014>; else goto <D.11013>;
      <D.11013>:
      if (is_string == 1) goto <D.11014>; else goto <D.11015>;
      <D.11014>:
      D.11006 = 0B;
      return D.11006;
      <D.11015>:
      goto <D.11019>;
      <D.11012>:
      monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "versioninfo.c", 121);
      <D.11019>:
      <D.11010>:
      <D.11007>:
      if (is_dir == 1) goto <D.11020>; else goto <D.11021>;
      <D.11020>:
      {
        struct WapiImageResourceDirectory * res_dir;
        struct WapiImageResourceDirectoryEntry * sub_entries;
        guint32 entries;
        guint32 i;

        res_dir = root + dir_offset;
        sub_entries = res_dir + 16;
        D.11022 = res_dir->NumberOfNamedEntries;
        D.11023 = (int) D.11022;
        D.11024 = res_dir->NumberOfIdEntries;
        D.11025 = (int) D.11024;
        D.11026 = D.11023 + D.11025;
        entries = (guint32) D.11026;
        i = 0;
        goto <D.9931>;
        <D.9930>:
        {
          struct WapiImageResourceDirectoryEntry * sub_entry;
          void * ret;

          D.11027 = i * 8;
          sub_entry = sub_entries + D.11027;
          D.11028 = level + 1;
          ret = scan_resource_dir (root, nt_headers, file_map, sub_entry, D.11028, res_id, lang_id, size);
          if (ret != 0B) goto <D.11029>; else goto <D.11030>;
          <D.11029>:
          D.11006 = ret;
          return D.11006;
          <D.11030>:
        }
        i = i + 1;
        <D.9931>:
        if (i < entries) goto <D.9930>; else goto <D.9932>;
        <D.9932>:
        D.11006 = 0B;
        return D.11006;
      }
      <D.11021>:
      {
        struct WapiImageResourceDataEntry * data_entry;

        data_entry = root + data_offset;
        D.11031 = data_entry->Size;
        *size = D.11031;
        D.11032 = data_entry->OffsetToData;
        D.11006 = get_ptr_from_rva (D.11032, nt_headers, file_map);
        return D.11006;
      }
    }
  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.11037;
  int map_size.14;
  unsigned int map_size.15;
  unsigned int size.16;
  unsigned int D.11043;
  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.11035>; else goto <D.11036>;
      <D.11035>:
      D.11037 = 0;
      return D.11037;
      <D.11036>:
      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.11040>; else goto <D.11041>;
      <D.11040>:
      size.16 = size;
      D.11043 = MIN_EXPR <size.16, len>;
      memcpy (data, versioninfo, D.11043);
      ret = 1;
      <D.11041>:
      map_handle.17 = map_handle;
      unmap_pe_file (file_map, map_handle.17);
      D.11037 = ret;
      return D.11037;
    }
  finally
    {
      map_handle = {CLOBBER};
      map_size = {CLOBBER};
      size = {CLOBBER};
    }
}


VerLanguageName (guint32 lang, gunichar2 * lang_out, guint32 lang_len)
{
  int lang.18;
  unsigned int D.11048;
  int D.11049;
  guint32 D.11165;
  int primary;
  int secondary;
  const char * name;

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


copy_lang (gunichar2 * lang_out, guint32 lang_len, const gchar * text)
{
  unsigned int D.11168;
  _Bool D.11169;
  long int D.11170;
  long int D.11171;
  unsigned int chars.19;
  unsigned int D.11175;
  int D.11178;
  unsigned int D.11179;
  unsigned int chars.20;
  unsigned int D.11181;
  gunichar2 * D.11182;
  unsigned int D.11184;
  unsigned int D.11185;
  unsigned int D.11186;
  gunichar2 * D.11187;
  guint32 D.11188;
  gunichar2 * unitext;
  int chars;
  int ret;

  D.11168 = strlen (text);
  chars = (int) D.11168;
  unitext = monoeg_g_utf8_to_utf16 (text, -1, 0B, 0B, 0B);
  D.11169 = unitext == 0B;
  D.11170 = (long int) D.11169;
  D.11171 = __builtin_expect (D.11170, 0);
  if (D.11171 != 0) goto <D.11172>; else goto <D.11173>;
  <D.11172>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "versioninfo.c", 1008, "unitext != NULL");
  <D.11173>:
  chars.19 = (unsigned int) chars;
  D.11175 = lang_len + 4294967295;
  if (chars.19 < D.11175) goto <D.11176>; else goto <D.11177>;
  <D.11176>:
  D.11178 = chars * 2;
  D.11179 = (unsigned int) D.11178;
  memcpy (lang_out, unitext, D.11179);
  chars.20 = (unsigned int) chars;
  D.11181 = chars.20 * 2;
  D.11182 = lang_out + D.11181;
  *D.11182 = 0;
  ret = chars;
  goto <D.11183>;
  <D.11177>:
  D.11184 = lang_len + 2147483647;
  D.11185 = D.11184 * 2;
  memcpy (lang_out, unitext, D.11185);
  D.11186 = lang_len * 2;
  D.11187 = lang_out + D.11186;
  *D.11187 = 0;
  ret = (int) lang_len;
  <D.11183>:
  monoeg_g_free (unitext);
  D.11188 = (guint32) ret;
  return D.11188;
}


