VerQueryValue (const void * datablock, const gunichar2 * subblock, void * * buffer, guint32 * len)
{
  gboolean D.11535;
  int D.10962;
  int iftmp.0;
  int D.10961;
  const char[25] * D.11539;
  unsigned char D.11540;
  int D.11541;
  unsigned char D.11542;
  int D.11543;
  const unsigned char * D.11548;
  unsigned char D.11549;
  int D.11550;
  const unsigned char * D.11551;
  unsigned char D.11552;
  int D.11553;
  const unsigned char * D.11558;
  unsigned char D.11559;
  int D.11560;
  const unsigned char * D.11561;
  unsigned char D.11562;
  int D.11563;
  const unsigned char * D.11568;
  unsigned char D.11569;
  int D.11570;
  const unsigned char * D.11571;
  unsigned char D.11572;
  int D.11573;
  int D.11578;
  const gunichar2 * D.11581;
  int D.10980;
  int iftmp.1;
  int D.10979;
  const char[2] * D.11585;
  unsigned char D.11586;
  int D.11587;
  unsigned char D.11588;
  int D.11589;
  const unsigned char * D.11594;
  unsigned char D.11595;
  int D.11596;
  const unsigned char * D.11597;
  unsigned char D.11598;
  int D.11599;
  const unsigned char * D.11604;
  unsigned char D.11605;
  int D.11606;
  const unsigned char * D.11607;
  unsigned char D.11608;
  int D.11609;
  const unsigned char * D.11614;
  unsigned char D.11615;
  int D.11616;
  const unsigned char * D.11617;
  unsigned char D.11618;
  int D.11619;
  short unsigned int D.11625;
  unsigned int D.11626;
  int D.11628;
  short unsigned int D.11633;
  int D.11634;
  sizetype data_ptr.2;
  sizetype D.11636;
  sizetype D.11637;
  gunichar2 * D.11639;
  int D.11640;
  sizetype D.11645;
  int D.11647;
  void * string_value.3;
  unsigned int string_value_len.4;
  unsigned int D.11657;
  unsigned int D.11658;
  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.11533>; else goto <D.11534>;
      <D.11533>:
      D.11535 = 0;
      return D.11535;
      <D.11534>:
      {
        size_t __s1_len;
        size_t __s2_len;

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

          __s2 = subblock_utf8;
          D.11539 = "\\VarFileInfo\\Translation";
          D.11540 = MEM[(const unsigned char *)D.11539];
          D.11541 = (int) D.11540;
          D.11542 = *__s2;
          D.11543 = (int) D.11542;
          __result = D.11541 - D.11543;
          {
            if (__s2_len != 0) goto <D.11544>; else goto <D.11545>;
            <D.11544>:
            if (__result == 0) goto <D.11546>; else goto <D.11547>;
            <D.11546>:
            D.11548 = &MEM[(void *)"\\VarFileInfo\\Translation" + 1B];
            D.11549 = *D.11548;
            D.11550 = (int) D.11549;
            D.11551 = __s2 + 1;
            D.11552 = *D.11551;
            D.11553 = (int) D.11552;
            __result = D.11550 - D.11553;
            if (__s2_len > 1) goto <D.11554>; else goto <D.11555>;
            <D.11554>:
            if (__result == 0) goto <D.11556>; else goto <D.11557>;
            <D.11556>:
            D.11558 = &MEM[(void *)"\\VarFileInfo\\Translation" + 2B];
            D.11559 = *D.11558;
            D.11560 = (int) D.11559;
            D.11561 = __s2 + 2;
            D.11562 = *D.11561;
            D.11563 = (int) D.11562;
            __result = D.11560 - D.11563;
            if (__s2_len > 2) goto <D.11564>; else goto <D.11565>;
            <D.11564>:
            if (__result == 0) goto <D.11566>; else goto <D.11567>;
            <D.11566>:
            D.11568 = &MEM[(void *)"\\VarFileInfo\\Translation" + 3B];
            D.11569 = *D.11568;
            D.11570 = (int) D.11569;
            D.11571 = __s2 + 3;
            D.11572 = *D.11571;
            D.11573 = (int) D.11572;
            __result = D.11570 - D.11573;
            <D.11567>:
            <D.11565>:
            <D.11557>:
            <D.11555>:
            <D.11547>:
            <D.11545>:
          }
          D.10961 = __result;
        }
        iftmp.0 = -D.10961;
        goto <D.11574>;
        <D.11538>:
        iftmp.0 = __builtin_strcmp (subblock_utf8, "\\VarFileInfo\\Translation");
        <D.11574>:
        D.10962 = iftmp.0;
      }
      if (D.10962 == 0) goto <D.11575>; else goto <D.11576>;
      <D.11575>:
      want_var = 1;
      goto <D.11577>;
      <D.11576>:
      D.11578 = strncmp (subblock_utf8, "\\StringFileInfo\\", 16);
      if (D.11578 == 0) goto <D.11579>; else goto <D.11580>;
      <D.11579>:
      want_string = 1;
      D.11581 = subblock + 32;
      memcpy (&lang, D.11581, 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.11580>:
      <D.11577>:
      {
        size_t __s1_len;
        size_t __s2_len;

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

          __s2 = subblock_utf8;
          D.11585 = "\\";
          D.11586 = MEM[(const unsigned char *)D.11585];
          D.11587 = (int) D.11586;
          D.11588 = *__s2;
          D.11589 = (int) D.11588;
          __result = D.11587 - D.11589;
          {
            if (__s2_len != 0) goto <D.11590>; else goto <D.11591>;
            <D.11590>:
            if (__result == 0) goto <D.11592>; else goto <D.11593>;
            <D.11592>:
            D.11594 = &MEM[(void *)"\\" + 1B];
            D.11595 = *D.11594;
            D.11596 = (int) D.11595;
            D.11597 = __s2 + 1;
            D.11598 = *D.11597;
            D.11599 = (int) D.11598;
            __result = D.11596 - D.11599;
            if (__s2_len > 1) goto <D.11600>; else goto <D.11601>;
            <D.11600>:
            if (__result == 0) goto <D.11602>; else goto <D.11603>;
            <D.11602>:
            D.11604 = &MEM[(void *)"\\" + 2B];
            D.11605 = *D.11604;
            D.11606 = (int) D.11605;
            D.11607 = __s2 + 2;
            D.11608 = *D.11607;
            D.11609 = (int) D.11608;
            __result = D.11606 - D.11609;
            if (__s2_len > 2) goto <D.11610>; else goto <D.11611>;
            <D.11610>:
            if (__result == 0) goto <D.11612>; else goto <D.11613>;
            <D.11612>:
            D.11614 = &MEM[(void *)"\\" + 3B];
            D.11615 = *D.11614;
            D.11616 = (int) D.11615;
            D.11617 = __s2 + 3;
            D.11618 = *D.11617;
            D.11619 = (int) D.11618;
            __result = D.11616 - D.11619;
            <D.11613>:
            <D.11611>:
            <D.11603>:
            <D.11601>:
            <D.11593>:
            <D.11591>:
          }
          D.10979 = __result;
        }
        iftmp.1 = -D.10979;
        goto <D.11620>;
        <D.11584>:
        iftmp.1 = __builtin_strcmp (subblock_utf8, "\\");
        <D.11620>:
        D.10980 = iftmp.1;
      }
      if (D.10980 == 0) goto <D.11621>; else goto <D.11622>;
      <D.11621>:
      data_ptr = get_fixedfileinfo_block (datablock, &block);
      if (data_ptr != 0B) goto <D.11623>; else goto <D.11624>;
      <D.11623>:
      *buffer = data_ptr;
      D.11625 = block.value_len;
      D.11626 = (unsigned int) D.11625;
      *len = D.11626;
      ret = 1;
      <D.11624>:
      goto <D.11627>;
      <D.11622>:
      D.11628 = want_var | want_string;
      if (D.11628 != 0) goto <D.11629>; else goto <D.11630>;
      <D.11629>:
      data_ptr = get_fixedfileinfo_block (datablock, &block);
      if (data_ptr != 0B) goto <D.11631>; else goto <D.11632>;
      <D.11631>:
      data_ptr = data_ptr + 52;
      D.11633 = block.data_len;
      D.11634 = (int) D.11633;
      data_len = D.11634 + -92;
      goto <D.10983>;
      <D.10982>:
      data_ptr = data_ptr + 3;
      data_ptr.2 = (sizetype) data_ptr;
      D.11636 = data_ptr.2 & 3;
      D.11637 = -D.11636;
      data_ptr = data_ptr + D.11637;
      data_ptr = get_versioninfo_block (data_ptr, &block);
      D.11633 = block.data_len;
      if (D.11633 == 0) goto done; else goto <D.11638>;
      <D.11638>:
      D.11633 = block.data_len;
      D.11634 = (int) D.11633;
      data_len = data_len - D.11634;
      D.11639 = block.key;
      D.11640 = unicode_string_equals (D.11639, "VarFileInfo");
      if (D.11640 != 0) goto <D.11641>; else goto <D.11642>;
      <D.11641>:
      data_ptr = get_varfileinfo_block (data_ptr, &block);
      if (want_var != 0) goto <D.11643>; else goto <D.11644>;
      <D.11643>:
      *buffer = data_ptr;
      D.11625 = block.value_len;
      D.11626 = (unsigned int) D.11625;
      *len = D.11626;
      ret = 1;
      goto done;
      <D.11644>:
      D.11625 = block.value_len;
      D.11645 = (sizetype) D.11625;
      data_ptr = data_ptr + D.11645;
      goto <D.11646>;
      <D.11642>:
      D.11639 = block.key;
      D.11647 = unicode_string_equals (D.11639, "StringFileInfo");
      if (D.11647 != 0) goto <D.11648>; else goto done;
      <D.11648>:
      data_ptr = get_stringtable_block (data_ptr, lang_utf8, string_key, &string_value, &string_value_len, &block);
      if (want_string != 0) goto <D.11649>; else goto <D.11650>;
      <D.11649>:
      string_value.3 = string_value;
      if (string_value.3 != 0B) goto <D.11652>; else goto <D.11653>;
      <D.11652>:
      string_value_len.4 = string_value_len;
      if (string_value_len.4 != 0) goto <D.11655>; else goto <D.11656>;
      <D.11655>:
      string_value.3 = string_value;
      *buffer = string_value.3;
      string_value.3 = string_value;
      D.11657 = unicode_chars (string_value.3);
      D.11658 = D.11657 + 1;
      *len = D.11658;
      ret = 1;
      goto done;
      <D.11656>:
      <D.11653>:
      <D.11650>:
      <D.11646>:
      if (data_ptr == 0B) goto done; else goto <D.11659>;
      <D.11659>:
      <D.10983>:
      if (data_len > 0) goto <D.10982>; else goto <D.10984>;
      <D.10984>:
      <D.11632>:
      <D.11630>:
      <D.11627>:
      done:
      if (lang_utf8 != 0B) goto <D.11660>; else goto <D.11661>;
      <D.11660>:
      monoeg_g_free (lang_utf8);
      <D.11661>:
      monoeg_g_free (subblock_utf8);
      D.11535 = ret;
      return D.11535;
    }
  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.11664;
  long unsigned int D.11665;

  D.11665 = __builtin_object_size (__dest, 0);
  D.11664 = __builtin___memcpy_chk (__dest, __src, __len, D.11665);
  return D.11664;
}


get_fixedfileinfo_block (const void * data, struct version_data * block)
{
  short unsigned int D.11667;
  short unsigned int D.11668;
  const void * D.11671;
  gunichar2 * D.11672;
  int D.11673;
  unsigned int D.11678;
  unsigned int D.11680;
  const void * data_ptr;
  gint32 data_len;
  struct WapiFixedFileInfo * ffi;

  data_ptr = get_versioninfo_block (data, block);
  D.11667 = block->data_len;
  data_len = (gint32) D.11667;
  D.11668 = block->value_len;
  if (D.11668 != 52) goto <D.11669>; else goto <D.11670>;
  <D.11669>:
  D.11671 = 0B;
  return D.11671;
  <D.11670>:
  D.11672 = block->key;
  D.11673 = unicode_string_equals (D.11672, "VS_VERSION_INFO");
  if (D.11673 == 0) goto <D.11674>; else goto <D.11675>;
  <D.11674>:
  D.11671 = 0B;
  return D.11671;
  <D.11675>:
  ffi = data_ptr;
  D.11678 = ffi->dwSignature;
  if (D.11678 != 4277077181) goto <D.11676>; else goto <D.11679>;
  <D.11679>:
  D.11680 = ffi->dwStrucVersion;
  if (D.11680 != 65536) goto <D.11676>; else goto <D.11677>;
  <D.11676>:
  D.11671 = 0B;
  return D.11671;
  <D.11677>:
  D.11671 = data_ptr;
  return D.11671;
}


get_versioninfo_block (const void * data, struct version_data * block)
{
  short unsigned int D.11682;
  gunichar2 * D.11683;
  unsigned int D.11684;
  unsigned int D.11685;
  long unsigned int D.11686;
  long unsigned int D.11687;
  sizetype data.5;
  sizetype D.11689;
  sizetype D.11690;
  const void * D.11691;

  D.11682 = MEM[(guint16 *)data];
  block->data_len = D.11682;
  data = data + 2;
  D.11682 = MEM[(guint16 *)data];
  block->value_len = D.11682;
  data = data + 2;
  D.11682 = MEM[(guint16 *)data];
  block->type = D.11682;
  data = data + 2;
  block->key = data;
  D.11683 = block->key;
  D.11684 = unicode_chars (D.11683);
  D.11685 = D.11684 + 1;
  D.11686 = (long unsigned int) D.11685;
  D.11687 = D.11686 * 2;
  data = data + D.11687;
  data = data + 3;
  data.5 = (sizetype) data;
  D.11689 = data.5 & 3;
  D.11690 = -D.11689;
  data = data + D.11690;
  D.11691 = data;
  return D.11691;
}


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

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


unicode_string_equals (const gunichar2 * str1, const gchar * str2)
{
  short unsigned int D.11695;
  char D.11696;
  short unsigned int D.11697;
  gboolean D.11700;
  _Bool D.11702;

  goto <D.10875>;
  <D.10874>:
  D.11695 = *str1;
  D.11696 = *str2;
  D.11697 = (short unsigned int) D.11696;
  if (D.11695 != D.11697) goto <D.11698>; else goto <D.11699>;
  <D.11698>:
  D.11700 = 0;
  return D.11700;
  <D.11699>:
  str1 = str1 + 2;
  str2 = str2 + 1;
  <D.10875>:
  D.11695 = *str1;
  if (D.11695 != 0) goto <D.11701>; else goto <D.10876>;
  <D.11701>:
  D.11696 = *str2;
  if (D.11696 != 0) goto <D.10874>; else goto <D.10876>;
  <D.10876>:
  D.11695 = *str1;
  D.11696 = *str2;
  D.11697 = (short unsigned int) D.11696;
  D.11702 = D.11695 == D.11697;
  D.11700 = (gboolean) D.11702;
  return D.11700;
}


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.11705;
  sizetype D.11706;
  short unsigned int D.11707;
  const void * D.11710;
  gunichar2 * D.11711;
  int D.10931;
  guint16 data_len;
  guint16 string_len;
  gchar * found_lang;
  gchar * lowercase_lang;

  data_len = block->data_len;
  string_len = 36;
  goto <D.10933>;
  <D.10932>:
  data_ptr = data_ptr + 3;
  data_ptr.6 = (sizetype) data_ptr;
  D.11705 = data_ptr.6 & 3;
  D.11706 = -D.11705;
  data_ptr = data_ptr + D.11706;
  data_ptr = get_versioninfo_block (data_ptr, block);
  D.11707 = block->data_len;
  if (D.11707 == 0) goto <D.11708>; else goto <D.11709>;
  <D.11708>:
  D.11710 = 0B;
  return D.11710;
  <D.11709>:
  D.11707 = block->data_len;
  string_len = D.11707 + string_len;
  D.11711 = block->key;
  found_lang = monoeg_g_utf16_to_utf8 (D.11711, 8, 0B, 0B, 0B);
  if (found_lang == 0B) goto <D.11712>; else goto <D.11713>;
  <D.11712>:
  D.11710 = 0B;
  return D.11710;
  <D.11713>:
  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.11716>; else goto <D.11714>;
  <D.11716>:
  {
    size_t __s1_len;
    size_t __s2_len;

    D.10931 = __builtin_strcmp (found_lang, lang);
  }
  if (D.10931 == 0) goto <D.11717>; else goto <D.11714>;
  <D.11717>:
  data_ptr = get_string_block (data_ptr, string_key, string_value, string_value_len, block);
  goto <D.11715>;
  <D.11714>:
  data_ptr = get_string_block (data_ptr, 0B, 0B, 0B, block);
  <D.11715>:
  monoeg_g_free (found_lang);
  if (data_ptr == 0B) goto <D.11718>; else goto <D.11719>;
  <D.11718>:
  D.11710 = 0B;
  return D.11710;
  <D.11719>:
  <D.10933>:
  if (string_len < data_len) goto <D.10932>; else goto <D.10934>;
  <D.10934>:
  D.11710 = data_ptr;
  return D.11710;
}


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.11722;
  sizetype D.11723;
  short unsigned int D.11724;
  const void * D.11727;
  gunichar2 * D.11734;
  int D.11735;
  short unsigned int D.11738;
  unsigned int D.11739;
  long unsigned int D.11740;
  long unsigned int D.11741;
  long int data_ptr.8;
  long int orig_data_ptr.9;
  long int D.11744;
  long int D.11745;
  guint16 data_len;
  guint16 string_len;
  char * orig_data_ptr;

  data_len = block->data_len;
  string_len = 28;
  orig_data_ptr = data_ptr + 18446744073709551588;
  goto <D.10909>;
  <D.10908>:
  data_ptr = data_ptr + 3;
  data_ptr.7 = (sizetype) data_ptr;
  D.11722 = data_ptr.7 & 3;
  D.11723 = -D.11722;
  data_ptr = data_ptr + D.11723;
  data_ptr = get_versioninfo_block (data_ptr, block);
  D.11724 = block->data_len;
  if (D.11724 == 0) goto <D.11725>; else goto <D.11726>;
  <D.11725>:
  D.11727 = 0B;
  return D.11727;
  <D.11726>:
  D.11724 = block->data_len;
  string_len = D.11724 + string_len;
  if (string_key != 0B) goto <D.11728>; else goto <D.11729>;
  <D.11728>:
  if (string_value != 0B) goto <D.11730>; else goto <D.11731>;
  <D.11730>:
  if (string_value_len != 0B) goto <D.11732>; else goto <D.11733>;
  <D.11732>:
  D.11734 = block->key;
  D.11735 = unicode_compare (string_key, D.11734);
  if (D.11735 == 1) goto <D.11736>; else goto <D.11737>;
  <D.11736>:
  *string_value = data_ptr;
  D.11738 = block->value_len;
  D.11739 = (unsigned int) D.11738;
  *string_value_len = D.11739;
  <D.11737>:
  <D.11733>:
  <D.11731>:
  <D.11729>:
  D.11738 = block->value_len;
  D.11740 = (long unsigned int) D.11738;
  D.11741 = D.11740 * 2;
  data_ptr = data_ptr + D.11741;
  <D.10909>:
  data_ptr.8 = (long int) data_ptr;
  orig_data_ptr.9 = (long int) orig_data_ptr;
  D.11744 = data_ptr.8 - orig_data_ptr.9;
  D.11745 = (long int) data_len;
  if (D.11744 < D.11745) goto <D.10908>; else goto <D.10910>;
  <D.10910>:
  D.11727 = data_ptr;
  return D.11727;
}


unicode_compare (const gunichar2 * str1, const gunichar2 * str2)
{
  short unsigned int D.11747;
  short unsigned int D.11748;
  gboolean D.11751;
  _Bool D.11753;

  goto <D.10868>;
  <D.10867>:
  D.11747 = *str1;
  D.11748 = *str2;
  if (D.11747 != D.11748) goto <D.11749>; else goto <D.11750>;
  <D.11749>:
  D.11751 = 0;
  return D.11751;
  <D.11750>:
  str1 = str1 + 2;
  str2 = str2 + 2;
  <D.10868>:
  D.11747 = *str1;
  if (D.11747 != 0) goto <D.11752>; else goto <D.10869>;
  <D.11752>:
  D.11748 = *str2;
  if (D.11748 != 0) goto <D.10867>; else goto <D.10869>;
  <D.10869>:
  D.11747 = *str1;
  D.11748 = *str2;
  D.11753 = D.11747 == D.11748;
  D.11751 = (gboolean) D.11753;
  return D.11751;
}


unicode_chars (const gunichar2 * str)
{
  long unsigned int D.11755;
  long unsigned int D.11756;
  const gunichar2 * D.11757;
  short unsigned int D.11758;
  guint32 D.11761;
  guint32 len;

  len = 0;
  <D.10862>:
  D.11755 = (long unsigned int) len;
  D.11756 = D.11755 * 2;
  D.11757 = str + D.11756;
  D.11758 = *D.11757;
  if (D.11758 == 0) goto <D.11759>; else goto <D.11760>;
  <D.11759>:
  D.11761 = len;
  return D.11761;
  <D.11760>:
  len = len + 1;
  goto <D.10862>;
}


GetFileVersionInfoSize (gunichar2 * filename, guint32 * handle)
{
  guint32 D.11765;
  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.11763>; else goto <D.11764>;
      <D.11763>:
      D.11765 = 0;
      return D.11765;
      <D.11764>:
      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.11768>; else goto <D.11769>;
      <D.11768>:
      size = 0;
      <D.11769>:
      map_handle.12 = map_handle;
      unmap_pe_file (file_map, map_handle.12);
      D.11765 = size;
      return D.11765;
    }
  finally
    {
      map_handle = {CLOBBER};
      map_size = {CLOBBER};
      size = {CLOBBER};
    }
}


map_pe_file (gunichar2 * filename, gint32 * map_size, void * * handle)
{
  void * D.11775;
  int * D.11778;
  int D.11779;
  int D.11780;
  unsigned int D.11781;
  int D.11782;
  int D.11785;
  unsigned int D.11786;
  long int D.11787;
  int D.11788;
  long unsigned int D.11789;
  long unsigned int D.11792;
  int D.11795;
  unsigned int D.11796;
  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.11773>; else goto <D.11774>;
      <D.11773>:
      SetLastError (123);
      D.11775 = 0B;
      return D.11775;
      <D.11774>:
      fd = _wapi_open (filename_ext, 0, 0);
      if (fd == -1) goto <D.11776>; else goto <D.11777>;
      <D.11776>:
      D.11778 = __errno_location ();
      D.11779 = *D.11778;
      D.11780 = _wapi_get_win32_file_error (D.11779);
      D.11781 = (unsigned int) D.11780;
      SetLastError (D.11781);
      monoeg_g_free (filename_ext);
      D.11775 = 0B;
      return D.11775;
      <D.11777>:
      D.11782 = fstat (fd, &statbuf);
      if (D.11782 == -1) goto <D.11783>; else goto <D.11784>;
      <D.11783>:
      D.11778 = __errno_location ();
      D.11779 = *D.11778;
      D.11785 = _wapi_get_win32_file_error (D.11779);
      D.11786 = (unsigned int) D.11785;
      SetLastError (D.11786);
      monoeg_g_free (filename_ext);
      close (fd);
      D.11775 = 0B;
      return D.11775;
      <D.11784>:
      D.11787 = statbuf.st_size;
      D.11788 = (int) D.11787;
      *map_size = D.11788;
      D.11787 = statbuf.st_size;
      D.11789 = (long unsigned int) D.11787;
      if (D.11789 <= 63) goto <D.11790>; else goto <D.11791>;
      <D.11790>:
      SetLastError (24);
      monoeg_g_free (filename_ext);
      close (fd);
      D.11775 = 0B;
      return D.11775;
      <D.11791>:
      D.11787 = statbuf.st_size;
      D.11792 = (long unsigned int) D.11787;
      file_map = mono_file_map (D.11792, 17, fd, 0, handle);
      if (file_map == 0B) goto <D.11793>; else goto <D.11794>;
      <D.11793>:
      D.11778 = __errno_location ();
      D.11779 = *D.11778;
      D.11795 = _wapi_get_win32_file_error (D.11779);
      D.11796 = (unsigned int) D.11795;
      SetLastError (D.11796);
      monoeg_g_free (filename_ext);
      close (fd);
      D.11775 = 0B;
      return D.11775;
      <D.11794>:
      close (fd);
      monoeg_g_free (filename_ext);
      D.11775 = file_map;
      return D.11775;
    }
  finally
    {
      statbuf = {CLOBBER};
    }
}


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

  D.11799 = __fxstat (1, __fd, __statbuf);
  return D.11799;
}


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

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


find_pe_file_resources32 (void * file_map, guint32 map_size, guint32 res_id, guint32 lang_id, guint32 * size)
{
  short unsigned int D.11805;
  void * D.11808;
  long unsigned int D.11809;
  unsigned int D.11810;
  long unsigned int D.11811;
  long unsigned int D.11812;
  sizetype D.11815;
  unsigned int D.11816;
  short unsigned int D.11819;
  short unsigned int D.11827;
  int D.11828;
  short unsigned int D.11829;
  int D.11830;
  int D.11831;
  long unsigned int D.11832;
  long unsigned int D.11833;
  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.11805 = dos_header->e_magic;
  if (D.11805 != 23117) goto <D.11806>; else goto <D.11807>;
  <D.11806>:
  SetLastError (13);
  D.11808 = 0B;
  return D.11808;
  <D.11807>:
  D.11809 = (long unsigned int) map_size;
  D.11810 = dos_header->e_lfanew;
  D.11811 = (long unsigned int) D.11810;
  D.11812 = D.11811 + 248;
  if (D.11809 < D.11812) goto <D.11813>; else goto <D.11814>;
  <D.11813>:
  SetLastError (24);
  D.11808 = 0B;
  return D.11808;
  <D.11814>:
  D.11810 = dos_header->e_lfanew;
  D.11815 = (sizetype) D.11810;
  nt_headers = file_map + D.11815;
  D.11816 = nt_headers->Signature;
  if (D.11816 != 17744) goto <D.11817>; else goto <D.11818>;
  <D.11817>:
  SetLastError (13);
  D.11808 = 0B;
  return D.11808;
  <D.11818>:
  D.11819 = nt_headers->OptionalHeader.Magic;
  if (D.11819 == 523) goto <D.11820>; else goto <D.11821>;
  <D.11820>:
  resource_rva = MEM[(struct WapiImageNTHeaders64 *)nt_headers].OptionalHeader.DataDirectory[2].VirtualAddress;
  goto <D.11822>;
  <D.11821>:
  resource_rva = nt_headers->OptionalHeader.DataDirectory[2].VirtualAddress;
  <D.11822>:
  if (resource_rva == 0) goto <D.11823>; else goto <D.11824>;
  <D.11823>:
  SetLastError (13);
  D.11808 = 0B;
  return D.11808;
  <D.11824>:
  resource_dir = get_ptr_from_rva (resource_rva, nt_headers, file_map);
  if (resource_dir == 0B) goto <D.11825>; else goto <D.11826>;
  <D.11825>:
  SetLastError (13);
  D.11808 = 0B;
  return D.11808;
  <D.11826>:
  D.11827 = resource_dir->NumberOfNamedEntries;
  D.11828 = (int) D.11827;
  D.11829 = resource_dir->NumberOfIdEntries;
  D.11830 = (int) D.11829;
  D.11831 = D.11828 + D.11830;
  entries = (guint32) D.11831;
  resource_dir_entry = resource_dir + 16;
  i = 0;
  goto <D.10817>;
  <D.10816>:
  {
    struct WapiImageResourceDirectoryEntry * direntry;

    D.11832 = (long unsigned int) i;
    D.11833 = D.11832 * 8;
    direntry = resource_dir_entry + D.11833;
    ret = scan_resource_dir (resource_dir, nt_headers, file_map, direntry, 0, res_id, lang_id, size);
    if (ret != 0B) goto <D.11834>; else goto <D.11835>;
    <D.11834>:
    D.11808 = ret;
    return D.11808;
    <D.11835>:
  }
  i = i + 1;
  <D.10817>:
  if (i < entries) goto <D.10816>; else goto <D.10818>;
  <D.10818>:
  D.11808 = 0B;
  return D.11808;
}


get_ptr_from_rva (guint32 rva, struct WapiImageNTHeaders32 * ntheaders, void * file_map)
{
  void * D.11839;
  unsigned int D.11840;
  unsigned int D.11841;
  sizetype D.11842;
  sizetype D.11843;
  sizetype D.11844;
  struct WapiImageSectionHeader * section_header;
  guint32 delta;

  section_header = get_enclosing_section_header (rva, ntheaders);
  if (section_header == 0B) goto <D.11837>; else goto <D.11838>;
  <D.11837>:
  D.11839 = 0B;
  return D.11839;
  <D.11838>:
  D.11840 = section_header->VirtualAddress;
  D.11841 = section_header->PointerToRawData;
  delta = D.11840 - D.11841;
  D.11842 = (sizetype) rva;
  D.11843 = (sizetype) delta;
  D.11844 = D.11842 - D.11843;
  D.11839 = file_map + D.11844;
  return D.11839;
}


get_enclosing_section_header (guint32 rva, struct WapiImageNTHeaders32 * nt_headers)
{
  short unsigned int D.11846;
  long unsigned int D.11847;
  long unsigned int nt_headers.13;
  long unsigned int D.11849;
  long unsigned int D.11850;
  unsigned int D.11853;
  unsigned int D.11856;
  struct WapiImageSectionHeader * D.11859;
  short unsigned int D.11860;
  unsigned int D.11861;
  struct WapiImageSectionHeader * section;
  guint32 i;

  D.11846 = nt_headers->FileHeader.SizeOfOptionalHeader;
  D.11847 = (long unsigned int) D.11846;
  nt_headers.13 = (long unsigned int) nt_headers;
  D.11849 = D.11847 + nt_headers.13;
  D.11850 = D.11849 + 24;
  section = (struct WapiImageSectionHeader *) D.11850;
  i = 0;
  goto <D.10765>;
  <D.10764>:
  {
    guint32 size;

    size = section->Misc.VirtualSize;
    if (size == 0) goto <D.11851>; else goto <D.11852>;
    <D.11851>:
    size = section->SizeOfRawData;
    <D.11852>:
    D.11853 = section->VirtualAddress;
    if (D.11853 <= rva) goto <D.11854>; else goto <D.11855>;
    <D.11854>:
    D.11853 = section->VirtualAddress;
    D.11856 = D.11853 + size;
    if (D.11856 > rva) goto <D.11857>; else goto <D.11858>;
    <D.11857>:
    D.11859 = section;
    return D.11859;
    <D.11858>:
    <D.11855>:
  }
  i = i + 1;
  section = section + 40;
  <D.10765>:
  D.11860 = nt_headers->FileHeader.NumberOfSections;
  D.11861 = (unsigned int) D.11860;
  if (D.11861 > i) goto <D.10764>; else goto <D.10766>;
  <D.10766>:
  D.11859 = 0B;
  return D.11859;
}


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.11863;
  unsigned int D.11864;
  <unnamed-unsigned:1> D.11865;
  <unnamed-unsigned:1> D.11866;
  <unnamed-unsigned:31> D.11867;
  <unnamed-unsigned:31> D.11868;
  void * D.11875;
  sizetype D.11890;
  short unsigned int D.11891;
  int D.11892;
  short unsigned int D.11893;
  int D.11894;
  int D.11895;
  long unsigned int D.11896;
  long unsigned int D.11897;
  int D.11898;
  sizetype D.11901;
  unsigned int D.11902;
  unsigned int D.11903;
  struct WapiImageResourceDirectoryEntry swapped_entry;
  gboolean is_string;
  gboolean is_dir;
  guint32 name_offset;
  guint32 dir_offset;
  guint32 data_offset;

  try
    {
      D.11863 = entry->D.9677.Name;
      swapped_entry.D.9677.Name = D.11863;
      D.11864 = entry->D.9685.OffsetToData;
      swapped_entry.D.9685.OffsetToData = D.11864;
      D.11865 = swapped_entry.D.9677.D.9674.NameIsString;
      is_string = (gboolean) D.11865;
      D.11866 = swapped_entry.D.9685.D.9684.DataIsDirectory;
      is_dir = (gboolean) D.11866;
      D.11867 = swapped_entry.D.9677.D.9674.NameOffset;
      name_offset = (guint32) D.11867;
      D.11868 = swapped_entry.D.9685.D.9684.OffsetToDirectory;
      dir_offset = (guint32) D.11868;
      data_offset = swapped_entry.D.9685.OffsetToData;
      if (level == 0) goto <D.11869>; else goto <D.11870>;
      <D.11869>:
      if (is_string == 0) goto <D.11874>; else goto <D.11871>;
      <D.11874>:
      if (name_offset != res_id) goto <D.11872>; else goto <D.11871>;
      <D.11871>:
      if (is_string == 1) goto <D.11872>; else goto <D.11873>;
      <D.11872>:
      D.11875 = 0B;
      return D.11875;
      <D.11873>:
      goto <D.11876>;
      <D.11870>:
      if (level == 1) goto <D.11877>; else goto <D.11878>;
      <D.11877>:
      goto <D.11879>;
      <D.11878>:
      if (level == 2) goto <D.11880>; else goto <D.11881>;
      <D.11880>:
      if (is_string == 0) goto <D.11885>; else goto <D.11882>;
      <D.11885>:
      if (name_offset != lang_id) goto <D.11886>; else goto <D.11882>;
      <D.11886>:
      if (lang_id != 0) goto <D.11883>; else goto <D.11882>;
      <D.11882>:
      if (is_string == 1) goto <D.11883>; else goto <D.11884>;
      <D.11883>:
      D.11875 = 0B;
      return D.11875;
      <D.11884>:
      goto <D.11887>;
      <D.11881>:
      monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "versioninfo.c", 121);
      <D.11887>:
      <D.11879>:
      <D.11876>:
      if (is_dir == 1) goto <D.11888>; else goto <D.11889>;
      <D.11888>:
      {
        struct WapiImageResourceDirectory * res_dir;
        struct WapiImageResourceDirectoryEntry * sub_entries;
        guint32 entries;
        guint32 i;

        D.11890 = (sizetype) dir_offset;
        res_dir = root + D.11890;
        sub_entries = res_dir + 16;
        D.11891 = res_dir->NumberOfNamedEntries;
        D.11892 = (int) D.11891;
        D.11893 = res_dir->NumberOfIdEntries;
        D.11894 = (int) D.11893;
        D.11895 = D.11892 + D.11894;
        entries = (guint32) D.11895;
        i = 0;
        goto <D.10797>;
        <D.10796>:
        {
          struct WapiImageResourceDirectoryEntry * sub_entry;
          void * ret;

          D.11896 = (long unsigned int) i;
          D.11897 = D.11896 * 8;
          sub_entry = sub_entries + D.11897;
          D.11898 = level + 1;
          ret = scan_resource_dir (root, nt_headers, file_map, sub_entry, D.11898, res_id, lang_id, size);
          if (ret != 0B) goto <D.11899>; else goto <D.11900>;
          <D.11899>:
          D.11875 = ret;
          return D.11875;
          <D.11900>:
        }
        i = i + 1;
        <D.10797>:
        if (i < entries) goto <D.10796>; else goto <D.10798>;
        <D.10798>:
        D.11875 = 0B;
        return D.11875;
      }
      <D.11889>:
      {
        struct WapiImageResourceDataEntry * data_entry;

        D.11901 = (sizetype) data_offset;
        data_entry = root + D.11901;
        D.11902 = data_entry->Size;
        *size = D.11902;
        D.11903 = data_entry->OffsetToData;
        D.11875 = get_ptr_from_rva (D.11903, nt_headers, file_map);
        return D.11875;
      }
    }
  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.11908;
  int map_size.14;
  unsigned int map_size.15;
  unsigned int size.16;
  unsigned int D.11914;
  long unsigned int D.11915;
  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.11906>; else goto <D.11907>;
      <D.11906>:
      D.11908 = 0;
      return D.11908;
      <D.11907>:
      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.11911>; else goto <D.11912>;
      <D.11911>:
      size.16 = size;
      D.11914 = MIN_EXPR <size.16, len>;
      D.11915 = (long unsigned int) D.11914;
      memcpy (data, versioninfo, D.11915);
      ret = 1;
      <D.11912>:
      map_handle.17 = map_handle;
      unmap_pe_file (file_map, map_handle.17);
      D.11908 = ret;
      return D.11908;
    }
  finally
    {
      map_handle = {CLOBBER};
      map_size = {CLOBBER};
      size = {CLOBBER};
    }
}


VerLanguageName (guint32 lang, gunichar2 * lang_out, guint32 lang_len)
{
  int lang.18;
  unsigned int D.11920;
  int D.11921;
  guint32 D.12037;
  int primary;
  int secondary;
  const char * name;

  name = 0B;
  lang.18 = (int) lang;
  primary = lang.18 & 1023;
  D.11920 = lang >> 10;
  D.11921 = (int) D.11920;
  secondary = D.11921 & 63;
  switch (primary) <default: <D.11531>, case 0: <D.11022>, case 1: <D.11026>, case 2: <D.11045>, case 3: <D.11049>, case 4: <D.11053>, case 5: <D.11061>, case 6: <D.11065>, case 7: <D.11069>, case 8: <D.11077>, case 9: <D.11081>, case 10: <D.11100>, case 11: <D.11124>, case 12: <D.11128>, case 13: <D.11137>, case 14: <D.11141>, case 15: <D.11145>, case 16: <D.11149>, case 17: <D.11154>, case 18: <D.11158>, case 19: <D.11162>, case 20: <D.11167>, case 21: <D.11172>, case 22: <D.11176>, case 23: <D.11181>, case 24: <D.11184>, case 25: <D.11188>, case 26: <D.11192>, case 27: <D.11203>, case 28: <D.11207>, case 29: <D.11211>, case 30: <D.11216>, case 31: <D.11220>, case 32: <D.11224>, case 33: <D.11228>, case 34: <D.11232>, case 35: <D.11236>, case 36: <D.11240>, case 37: <D.11244>, case 38: <D.11248>, case 39: <D.11252>, case 40: <D.11256>, case 41: <D.11259>, case 42: <D.11263>, case 43: <D.11267>, case 44: <D.11271>, case 45: <D.11276>, case 46: <D.11280>, case 47: <D.11284>, case 50: <D.11288>, case 52: <D.11292>, case 53: <D.11296>, case 54: <D.11300>, case 55: <D.11304>, case 56: <D.11308>, case 57: <D.11312>, case 58: <D.11316>, case 59: <D.11320>, case 60: <D.11332>, case 62: <D.11335>, case 63: <D.11340>, case 64: <D.11344>, case 65: <D.11348>, case 66: <D.11352>, case 67: <D.11355>, case 68: <D.11360>, case 69: <D.11364>, case 70: <D.11368>, case 71: <D.11372>, case 73: <D.11376>, case 74: <D.11380>, case 75: <D.11384>, case 76: <D.11388>, case 77: <D.11392>, case 78: <D.11395>, case 79: <D.11399>, case 80: <D.11403>, case 81: <D.11408>, case 82: <D.11412>, case 83: <D.11416>, case 84: <D.11419>, case 86: <D.11422>, case 87: <D.11426>, case 90: <D.11430>, case 91: <D.11434>, case 93: <D.11437>, case 94: <D.11441>, case 95: <D.11444>, case 97: <D.11447>, case 98: <D.11450>, case 99: <D.11453>, case 100: <D.11456>, case 101: <D.11459>, case 104: <D.11463>, case 106: <D.11466>, case 107: <D.11469>, case 108: <D.11475>, case 109: <D.11479>, case 110: <D.11482>, case 111: <D.11485>, case 120: <D.11488>, case 122: <D.11491>, case 124: <D.11494>, case 126: <D.11497>, case 127: <D.11500>, case 128: <D.11503>, case 129: <D.11506>, case 131: <D.11510>, case 132: <D.11513>, case 133: <D.11516>, case 134: <D.11519>, case 135: <D.11522>, case 136: <D.11525>, case 140: <D.11528>>
  <D.11022>:
  switch (secondary) <default: <D.11922>, case 1: <D.11023>>
  <D.11023>:
  name = "Process Default Language";
  goto <D.11024>;
  <D.11922>:
  <D.11024>:
  goto <D.11025>;
  <D.11026>:
  switch (secondary) <default: <D.11923>, case 0: <D.11027>, case 1: <D.11028>, case 2: <D.11030>, case 3: <D.11031>, case 4: <D.11032>, case 5: <D.11033>, case 6: <D.11034>, case 7: <D.11035>, case 8: <D.11036>, case 9: <D.11037>, case 10: <D.11038>, case 11: <D.11039>, case 12: <D.11040>, case 13: <D.11041>, case 14: <D.11042>, case 15: <D.11043>, case 16: <D.11044>>
  <D.11027>:
  <D.11028>:
  name = "Arabic (Saudi Arabia)";
  goto <D.11029>;
  <D.11030>:
  name = "Arabic (Iraq)";
  goto <D.11029>;
  <D.11031>:
  name = "Arabic (Egypt)";
  goto <D.11029>;
  <D.11032>:
  name = "Arabic (Libya)";
  goto <D.11029>;
  <D.11033>:
  name = "Arabic (Algeria)";
  goto <D.11029>;
  <D.11034>:
  name = "Arabic (Morocco)";
  goto <D.11029>;
  <D.11035>:
  name = "Arabic (Tunisia)";
  goto <D.11029>;
  <D.11036>:
  name = "Arabic (Oman)";
  goto <D.11029>;
  <D.11037>:
  name = "Arabic (Yemen)";
  goto <D.11029>;
  <D.11038>:
  name = "Arabic (Syria)";
  goto <D.11029>;
  <D.11039>:
  name = "Arabic (Jordan)";
  goto <D.11029>;
  <D.11040>:
  name = "Arabic (Lebanon)";
  goto <D.11029>;
  <D.11041>:
  name = "Arabic (Kuwait)";
  goto <D.11029>;
  <D.11042>:
  name = "Arabic (U.A.E.)";
  goto <D.11029>;
  <D.11043>:
  name = "Arabic (Bahrain)";
  goto <D.11029>;
  <D.11044>:
  name = "Arabic (Qatar)";
  goto <D.11029>;
  <D.11923>:
  <D.11029>:
  goto <D.11025>;
  <D.11045>:
  switch (secondary) <default: <D.11924>, case 0: <D.11046>, case 1: <D.11048>>
  <D.11046>:
  name = "Bulgarian (Bulgaria)";
  goto <D.11047>;
  <D.11048>:
  name = "Bulgarian";
  goto <D.11047>;
  <D.11924>:
  <D.11047>:
  goto <D.11025>;
  <D.11049>:
  switch (secondary) <default: <D.11925>, case 0: <D.11050>, case 1: <D.11052>>
  <D.11050>:
  name = "Catalan (Spain)";
  goto <D.11051>;
  <D.11052>:
  name = "Catalan";
  goto <D.11051>;
  <D.11925>:
  <D.11051>:
  goto <D.11025>;
  <D.11053>:
  switch (secondary) <default: <D.11926>, case 0: <D.11054>, case 1: <D.11055>, case 2: <D.11057>, case 3: <D.11058>, case 4: <D.11059>, case 5: <D.11060>>
  <D.11054>:
  <D.11055>:
  name = "Chinese (Taiwan)";
  goto <D.11056>;
  <D.11057>:
  name = "Chinese (PRC)";
  goto <D.11056>;
  <D.11058>:
  name = "Chinese (Hong Kong S.A.R.)";
  goto <D.11056>;
  <D.11059>:
  name = "Chinese (Singapore)";
  goto <D.11056>;
  <D.11060>:
  name = "Chinese (Macau S.A.R.)";
  goto <D.11056>;
  <D.11926>:
  <D.11056>:
  goto <D.11025>;
  <D.11061>:
  switch (secondary) <default: <D.11927>, case 0: <D.11062>, case 1: <D.11064>>
  <D.11062>:
  name = "Czech (Czech Republic)";
  goto <D.11063>;
  <D.11064>:
  name = "Czech";
  goto <D.11063>;
  <D.11927>:
  <D.11063>:
  goto <D.11025>;
  <D.11065>:
  switch (secondary) <default: <D.11928>, case 0: <D.11066>, case 1: <D.11068>>
  <D.11066>:
  name = "Danish (Denmark)";
  goto <D.11067>;
  <D.11068>:
  name = "Danish";
  goto <D.11067>;
  <D.11928>:
  <D.11067>:
  goto <D.11025>;
  <D.11069>:
  switch (secondary) <default: <D.11929>, case 0: <D.11070>, case 1: <D.11071>, case 2: <D.11073>, case 3: <D.11074>, case 4: <D.11075>, case 5: <D.11076>>
  <D.11070>:
  <D.11071>:
  name = "German (Germany)";
  goto <D.11072>;
  <D.11073>:
  name = "German (Switzerland)";
  goto <D.11072>;
  <D.11074>:
  name = "German (Austria)";
  goto <D.11072>;
  <D.11075>:
  name = "German (Luxembourg)";
  goto <D.11072>;
  <D.11076>:
  name = "German (Liechtenstein)";
  goto <D.11072>;
  <D.11929>:
  <D.11072>:
  goto <D.11025>;
  <D.11077>:
  switch (secondary) <default: <D.11930>, case 0: <D.11078>, case 1: <D.11080>>
  <D.11078>:
  name = "Greek (Greece)";
  goto <D.11079>;
  <D.11080>:
  name = "Greek";
  goto <D.11079>;
  <D.11930>:
  <D.11079>:
  goto <D.11025>;
  <D.11081>:
  switch (secondary) <default: <D.11931>, case 0: <D.11082>, case 1: <D.11083>, case 2: <D.11085>, case 3: <D.11086>, case 4: <D.11087>, case 5: <D.11088>, case 6: <D.11089>, case 7: <D.11090>, case 8: <D.11091>, case 9: <D.11092>, case 10: <D.11093>, case 11: <D.11094>, case 12: <D.11095>, case 13: <D.11096>, case 16: <D.11097>, case 17: <D.11098>, case 18: <D.11099>>
  <D.11082>:
  <D.11083>:
  name = "English (United States)";
  goto <D.11084>;
  <D.11085>:
  name = "English (United Kingdom)";
  goto <D.11084>;
  <D.11086>:
  name = "English (Australia)";
  goto <D.11084>;
  <D.11087>:
  name = "English (Canada)";
  goto <D.11084>;
  <D.11088>:
  name = "English (New Zealand)";
  goto <D.11084>;
  <D.11089>:
  name = "English (Ireland)";
  goto <D.11084>;
  <D.11090>:
  name = "English (South Africa)";
  goto <D.11084>;
  <D.11091>:
  name = "English (Jamaica)";
  goto <D.11084>;
  <D.11092>:
  name = "English (Caribbean)";
  goto <D.11084>;
  <D.11093>:
  name = "English (Belize)";
  goto <D.11084>;
  <D.11094>:
  name = "English (Trinidad and Tobago)";
  goto <D.11084>;
  <D.11095>:
  name = "English (Zimbabwe)";
  goto <D.11084>;
  <D.11096>:
  name = "English (Philippines)";
  goto <D.11084>;
  <D.11097>:
  name = "English (India)";
  goto <D.11084>;
  <D.11098>:
  name = "English (Malaysia)";
  goto <D.11084>;
  <D.11099>:
  name = "English (Singapore)";
  goto <D.11084>;
  <D.11931>:
  <D.11084>:
  goto <D.11025>;
  <D.11100>:
  switch (secondary) <default: <D.11932>, case 0: <D.11101>, case 1: <D.11103>, case 2: <D.11104>, case 3: <D.11105>, case 4: <D.11106>, case 5: <D.11107>, case 6: <D.11108>, case 7: <D.11109>, case 8: <D.11110>, case 9: <D.11111>, case 10: <D.11112>, case 11: <D.11113>, case 12: <D.11114>, case 13: <D.11115>, case 14: <D.11116>, case 15: <D.11117>, case 16: <D.11118>, case 17: <D.11119>, case 18: <D.11120>, case 19: <D.11121>, case 20: <D.11122>, case 21: <D.11123>>
  <D.11101>:
  name = "Spanish (Spain)";
  goto <D.11102>;
  <D.11103>:
  name = "Spanish (Traditional Sort)";
  goto <D.11102>;
  <D.11104>:
  name = "Spanish (Mexico)";
  goto <D.11102>;
  <D.11105>:
  name = "Spanish (International Sort)";
  goto <D.11102>;
  <D.11106>:
  name = "Spanish (Guatemala)";
  goto <D.11102>;
  <D.11107>:
  name = "Spanish (Costa Rica)";
  goto <D.11102>;
  <D.11108>:
  name = "Spanish (Panama)";
  goto <D.11102>;
  <D.11109>:
  name = "Spanish (Dominican Republic)";
  goto <D.11102>;
  <D.11110>:
  name = "Spanish (Venezuela)";
  goto <D.11102>;
  <D.11111>:
  name = "Spanish (Colombia)";
  goto <D.11102>;
  <D.11112>:
  name = "Spanish (Peru)";
  goto <D.11102>;
  <D.11113>:
  name = "Spanish (Argentina)";
  goto <D.11102>;
  <D.11114>:
  name = "Spanish (Ecuador)";
  goto <D.11102>;
  <D.11115>:
  name = "Spanish (Chile)";
  goto <D.11102>;
  <D.11116>:
  name = "Spanish (Uruguay)";
  goto <D.11102>;
  <D.11117>:
  name = "Spanish (Paraguay)";
  goto <D.11102>;
  <D.11118>:
  name = "Spanish (Bolivia)";
  goto <D.11102>;
  <D.11119>:
  name = "Spanish (El Salvador)";
  goto <D.11102>;
  <D.11120>:
  name = "Spanish (Honduras)";
  goto <D.11102>;
  <D.11121>:
  name = "Spanish (Nicaragua)";
  goto <D.11102>;
  <D.11122>:
  name = "Spanish (Puerto Rico)";
  goto <D.11102>;
  <D.11123>:
  name = "Spanish (United States)";
  goto <D.11102>;
  <D.11932>:
  <D.11102>:
  goto <D.11025>;
  <D.11124>:
  switch (secondary) <default: <D.11933>, case 0: <D.11125>, case 1: <D.11127>>
  <D.11125>:
  name = "Finnish (Finland)";
  goto <D.11126>;
  <D.11127>:
  name = "Finnish";
  goto <D.11126>;
  <D.11933>:
  <D.11126>:
  goto <D.11025>;
  <D.11128>:
  switch (secondary) <default: <D.11934>, case 0: <D.11129>, case 1: <D.11130>, case 2: <D.11132>, case 3: <D.11133>, case 4: <D.11134>, case 5: <D.11135>, case 6: <D.11136>>
  <D.11129>:
  <D.11130>:
  name = "French (France)";
  goto <D.11131>;
  <D.11132>:
  name = "French (Belgium)";
  goto <D.11131>;
  <D.11133>:
  name = "French (Canada)";
  goto <D.11131>;
  <D.11134>:
  name = "French (Switzerland)";
  goto <D.11131>;
  <D.11135>:
  name = "French (Luxembourg)";
  goto <D.11131>;
  <D.11136>:
  name = "French (Monaco)";
  goto <D.11131>;
  <D.11934>:
  <D.11131>:
  goto <D.11025>;
  <D.11137>:
  switch (secondary) <default: <D.11935>, case 0: <D.11138>, case 1: <D.11140>>
  <D.11138>:
  name = "Hebrew (Israel)";
  goto <D.11139>;
  <D.11140>:
  name = "Hebrew";
  goto <D.11139>;
  <D.11935>:
  <D.11139>:
  goto <D.11025>;
  <D.11141>:
  switch (secondary) <default: <D.11936>, case 0: <D.11142>, case 1: <D.11144>>
  <D.11142>:
  name = "Hungarian (Hungary)";
  goto <D.11143>;
  <D.11144>:
  name = "Hungarian";
  goto <D.11143>;
  <D.11936>:
  <D.11143>:
  goto <D.11025>;
  <D.11145>:
  switch (secondary) <default: <D.11937>, case 0: <D.11146>, case 1: <D.11148>>
  <D.11146>:
  name = "Icelandic (Iceland)";
  goto <D.11147>;
  <D.11148>:
  name = "Icelandic";
  goto <D.11147>;
  <D.11937>:
  <D.11147>:
  goto <D.11025>;
  <D.11149>:
  switch (secondary) <default: <D.11938>, case 0: <D.11150>, case 1: <D.11151>, case 2: <D.11153>>
  <D.11150>:
  <D.11151>:
  name = "Italian (Italy)";
  goto <D.11152>;
  <D.11153>:
  name = "Italian (Switzerland)";
  goto <D.11152>;
  <D.11938>:
  <D.11152>:
  goto <D.11025>;
  <D.11154>:
  switch (secondary) <default: <D.11939>, case 0: <D.11155>, case 1: <D.11157>>
  <D.11155>:
  name = "Japanese (Japan)";
  goto <D.11156>;
  <D.11157>:
  name = "Japanese";
  goto <D.11156>;
  <D.11939>:
  <D.11156>:
  goto <D.11025>;
  <D.11158>:
  switch (secondary) <default: <D.11940>, case 0: <D.11159>, case 1: <D.11161>>
  <D.11159>:
  name = "Korean (Korea)";
  goto <D.11160>;
  <D.11161>:
  name = "Korean";
  goto <D.11160>;
  <D.11940>:
  <D.11160>:
  goto <D.11025>;
  <D.11162>:
  switch (secondary) <default: <D.11941>, case 0: <D.11163>, case 1: <D.11164>, case 2: <D.11166>>
  <D.11163>:
  <D.11164>:
  name = "Dutch (Netherlands)";
  goto <D.11165>;
  <D.11166>:
  name = "Dutch (Belgium)";
  goto <D.11165>;
  <D.11941>:
  <D.11165>:
  goto <D.11025>;
  <D.11167>:
  switch (secondary) <default: <D.11942>, case 0: <D.11168>, case 1: <D.11169>, case 2: <D.11171>>
  <D.11168>:
  <D.11169>:
  name = "Norwegian (Bokmal)";
  goto <D.11170>;
  <D.11171>:
  name = "Norwegian (Nynorsk)";
  goto <D.11170>;
  <D.11942>:
  <D.11170>:
  goto <D.11025>;
  <D.11172>:
  switch (secondary) <default: <D.11943>, case 0: <D.11173>, case 1: <D.11175>>
  <D.11173>:
  name = "Polish (Poland)";
  goto <D.11174>;
  <D.11175>:
  name = "Polish";
  goto <D.11174>;
  <D.11943>:
  <D.11174>:
  goto <D.11025>;
  <D.11176>:
  switch (secondary) <default: <D.11944>, case 0: <D.11177>, case 1: <D.11178>, case 2: <D.11180>>
  <D.11177>:
  <D.11178>:
  name = "Portuguese (Brazil)";
  goto <D.11179>;
  <D.11180>:
  name = "Portuguese (Portugal)";
  goto <D.11179>;
  <D.11944>:
  <D.11179>:
  goto <D.11025>;
  <D.11181>:
  switch (secondary) <default: <D.11945>, case 1: <D.11182>>
  <D.11182>:
  name = "Romansh (Switzerland)";
  goto <D.11183>;
  <D.11945>:
  <D.11183>:
  goto <D.11025>;
  <D.11184>:
  switch (secondary) <default: <D.11946>, case 0: <D.11185>, case 1: <D.11187>>
  <D.11185>:
  name = "Romanian (Romania)";
  goto <D.11186>;
  <D.11187>:
  name = "Romanian";
  goto <D.11186>;
  <D.11946>:
  <D.11186>:
  goto <D.11025>;
  <D.11188>:
  switch (secondary) <default: <D.11947>, case 0: <D.11189>, case 1: <D.11191>>
  <D.11189>:
  name = "Russian (Russia)";
  goto <D.11190>;
  <D.11191>:
  name = "Russian";
  goto <D.11190>;
  <D.11947>:
  <D.11190>:
  goto <D.11025>;
  <D.11192>:
  switch (secondary) <default: <D.11948>, case 0: <D.11193>, case 1: <D.11195>, case 2: <D.11196>, case 3: <D.11197>, case 4: <D.11198>, case 5: <D.11199>, case 6: <D.11200>, case 7: <D.11201>, case 8: <D.11202>>
  <D.11193>:
  name = "Croatian (Croatia)";
  goto <D.11194>;
  <D.11195>:
  name = "Croatian";
  goto <D.11194>;
  <D.11196>:
  name = "Serbian (Latin)";
  goto <D.11194>;
  <D.11197>:
  name = "Serbian (Cyrillic)";
  goto <D.11194>;
  <D.11198>:
  name = "Croatian (Bosnia and Herzegovina)";
  goto <D.11194>;
  <D.11199>:
  name = "Bosnian (Latin, Bosnia and Herzegovina)";
  goto <D.11194>;
  <D.11200>:
  name = "Serbian (Latin, Bosnia and Herzegovina)";
  goto <D.11194>;
  <D.11201>:
  name = "Serbian (Cyrillic, Bosnia and Herzegovina)";
  goto <D.11194>;
  <D.11202>:
  name = "Bosnian (Cyrillic, Bosnia and Herzegovina)";
  goto <D.11194>;
  <D.11948>:
  <D.11194>:
  goto <D.11025>;
  <D.11203>:
  switch (secondary) <default: <D.11949>, case 0: <D.11204>, case 1: <D.11206>>
  <D.11204>:
  name = "Slovak (Slovakia)";
  goto <D.11205>;
  <D.11206>:
  name = "Slovak";
  goto <D.11205>;
  <D.11949>:
  <D.11205>:
  goto <D.11025>;
  <D.11207>:
  switch (secondary) <default: <D.11950>, case 0: <D.11208>, case 1: <D.11210>>
  <D.11208>:
  name = "Albanian (Albania)";
  goto <D.11209>;
  <D.11210>:
  name = "Albanian";
  goto <D.11209>;
  <D.11950>:
  <D.11209>:
  goto <D.11025>;
  <D.11211>:
  switch (secondary) <default: <D.11951>, case 0: <D.11212>, case 1: <D.11214>, case 2: <D.11215>>
  <D.11212>:
  name = "Swedish (Sweden)";
  goto <D.11213>;
  <D.11214>:
  name = "Swedish";
  goto <D.11213>;
  <D.11215>:
  name = "Swedish (Finland)";
  goto <D.11213>;
  <D.11951>:
  <D.11213>:
  goto <D.11025>;
  <D.11216>:
  switch (secondary) <default: <D.11952>, case 0: <D.11217>, case 1: <D.11219>>
  <D.11217>:
  name = "Thai (Thailand)";
  goto <D.11218>;
  <D.11219>:
  name = "Thai";
  goto <D.11218>;
  <D.11952>:
  <D.11218>:
  goto <D.11025>;
  <D.11220>:
  switch (secondary) <default: <D.11953>, case 0: <D.11221>, case 1: <D.11223>>
  <D.11221>:
  name = "Turkish (Turkey)";
  goto <D.11222>;
  <D.11223>:
  name = "Turkish";
  goto <D.11222>;
  <D.11953>:
  <D.11222>:
  goto <D.11025>;
  <D.11224>:
  switch (secondary) <default: <D.11954>, case 0: <D.11225>, case 1: <D.11227>>
  <D.11225>:
  name = "Urdu (Islamic Republic of Pakistan)";
  goto <D.11226>;
  <D.11227>:
  name = "Urdu";
  goto <D.11226>;
  <D.11954>:
  <D.11226>:
  goto <D.11025>;
  <D.11228>:
  switch (secondary) <default: <D.11955>, case 0: <D.11229>, case 1: <D.11231>>
  <D.11229>:
  name = "Indonesian (Indonesia)";
  goto <D.11230>;
  <D.11231>:
  name = "Indonesian";
  goto <D.11230>;
  <D.11955>:
  <D.11230>:
  goto <D.11025>;
  <D.11232>:
  switch (secondary) <default: <D.11956>, case 0: <D.11233>, case 1: <D.11235>>
  <D.11233>:
  name = "Ukrainian (Ukraine)";
  goto <D.11234>;
  <D.11235>:
  name = "Ukrainian";
  goto <D.11234>;
  <D.11956>:
  <D.11234>:
  goto <D.11025>;
  <D.11236>:
  switch (secondary) <default: <D.11957>, case 0: <D.11237>, case 1: <D.11239>>
  <D.11237>:
  name = "Belarusian (Belarus)";
  goto <D.11238>;
  <D.11239>:
  name = "Belarusian";
  goto <D.11238>;
  <D.11957>:
  <D.11238>:
  goto <D.11025>;
  <D.11240>:
  switch (secondary) <default: <D.11958>, case 0: <D.11241>, case 1: <D.11243>>
  <D.11241>:
  name = "Slovenian (Slovenia)";
  goto <D.11242>;
  <D.11243>:
  name = "Slovenian";
  goto <D.11242>;
  <D.11958>:
  <D.11242>:
  goto <D.11025>;
  <D.11244>:
  switch (secondary) <default: <D.11959>, case 0: <D.11245>, case 1: <D.11247>>
  <D.11245>:
  name = "Estonian (Estonia)";
  goto <D.11246>;
  <D.11247>:
  name = "Estonian";
  goto <D.11246>;
  <D.11959>:
  <D.11246>:
  goto <D.11025>;
  <D.11248>:
  switch (secondary) <default: <D.11960>, case 0: <D.11249>, case 1: <D.11251>>
  <D.11249>:
  name = "Latvian (Latvia)";
  goto <D.11250>;
  <D.11251>:
  name = "Latvian";
  goto <D.11250>;
  <D.11960>:
  <D.11250>:
  goto <D.11025>;
  <D.11252>:
  switch (secondary) <default: <D.11961>, case 0: <D.11253>, case 1: <D.11255>>
  <D.11253>:
  name = "Lithuanian (Lithuania)";
  goto <D.11254>;
  <D.11255>:
  name = "Lithuanian";
  goto <D.11254>;
  <D.11961>:
  <D.11254>:
  goto <D.11025>;
  <D.11256>:
  switch (secondary) <default: <D.11962>, case 1: <D.11257>>
  <D.11257>:
  name = "Tajik (Tajikistan)";
  goto <D.11258>;
  <D.11962>:
  <D.11258>:
  goto <D.11025>;
  <D.11259>:
  switch (secondary) <default: <D.11963>, case 0: <D.11260>, case 1: <D.11262>>
  <D.11260>:
  name = "Farsi (Iran)";
  goto <D.11261>;
  <D.11262>:
  name = "Farsi";
  goto <D.11261>;
  <D.11963>:
  <D.11261>:
  goto <D.11025>;
  <D.11263>:
  switch (secondary) <default: <D.11964>, case 0: <D.11264>, case 1: <D.11266>>
  <D.11264>:
  name = "Vietnamese (Viet Nam)";
  goto <D.11265>;
  <D.11266>:
  name = "Vietnamese";
  goto <D.11265>;
  <D.11964>:
  <D.11265>:
  goto <D.11025>;
  <D.11267>:
  switch (secondary) <default: <D.11965>, case 0: <D.11268>, case 1: <D.11270>>
  <D.11268>:
  name = "Armenian (Armenia)";
  goto <D.11269>;
  <D.11270>:
  name = "Armenian";
  goto <D.11269>;
  <D.11965>:
  <D.11269>:
  goto <D.11025>;
  <D.11271>:
  switch (secondary) <default: <D.11966>, case 0: <D.11272>, case 1: <D.11274>, case 2: <D.11275>>
  <D.11272>:
  name = "Azeri (Latin) (Azerbaijan)";
  goto <D.11273>;
  <D.11274>:
  name = "Azeri (Latin)";
  goto <D.11273>;
  <D.11275>:
  name = "Azeri (Cyrillic)";
  goto <D.11273>;
  <D.11966>:
  <D.11273>:
  goto <D.11025>;
  <D.11276>:
  switch (secondary) <default: <D.11967>, case 0: <D.11277>, case 1: <D.11279>>
  <D.11277>:
  name = "Basque (Spain)";
  goto <D.11278>;
  <D.11279>:
  name = "Basque";
  goto <D.11278>;
  <D.11967>:
  <D.11278>:
  goto <D.11025>;
  <D.11280>:
  switch (secondary) <default: <D.11968>, case 1: <D.11281>, case 2: <D.11283>>
  <D.11281>:
  name = "Upper Sorbian (Germany)";
  goto <D.11282>;
  <D.11283>:
  name = "Lower Sorbian (Germany)";
  goto <D.11282>;
  <D.11968>:
  <D.11282>:
  goto <D.11025>;
  <D.11284>:
  switch (secondary) <default: <D.11969>, case 0: <D.11285>, case 1: <D.11287>>
  <D.11285>:
  name = "FYRO Macedonian (Former Yugoslav Republic of Macedonia)";
  goto <D.11286>;
  <D.11287>:
  name = "FYRO Macedonian";
  goto <D.11286>;
  <D.11969>:
  <D.11286>:
  goto <D.11025>;
  <D.11288>:
  switch (secondary) <default: <D.11970>, case 0: <D.11289>, case 1: <D.11291>>
  <D.11289>:
  name = "Tswana (South Africa)";
  goto <D.11290>;
  <D.11291>:
  name = "Tswana";
  goto <D.11290>;
  <D.11970>:
  <D.11290>:
  goto <D.11025>;
  <D.11292>:
  switch (secondary) <default: <D.11971>, case 0: <D.11293>, case 1: <D.11295>>
  <D.11293>:
  name = "Xhosa (South Africa)";
  goto <D.11294>;
  <D.11295>:
  name = "Xhosa";
  goto <D.11294>;
  <D.11971>:
  <D.11294>:
  goto <D.11025>;
  <D.11296>:
  switch (secondary) <default: <D.11972>, case 0: <D.11297>, case 1: <D.11299>>
  <D.11297>:
  name = "Zulu (South Africa)";
  goto <D.11298>;
  <D.11299>:
  name = "Zulu";
  goto <D.11298>;
  <D.11972>:
  <D.11298>:
  goto <D.11025>;
  <D.11300>:
  switch (secondary) <default: <D.11973>, case 0: <D.11301>, case 1: <D.11303>>
  <D.11301>:
  name = "Afrikaans (South Africa)";
  goto <D.11302>;
  <D.11303>:
  name = "Afrikaans";
  goto <D.11302>;
  <D.11973>:
  <D.11302>:
  goto <D.11025>;
  <D.11304>:
  switch (secondary) <default: <D.11974>, case 0: <D.11305>, case 1: <D.11307>>
  <D.11305>:
  name = "Georgian (Georgia)";
  goto <D.11306>;
  <D.11307>:
  name = "Georgian";
  goto <D.11306>;
  <D.11974>:
  <D.11306>:
  goto <D.11025>;
  <D.11308>:
  switch (secondary) <default: <D.11975>, case 0: <D.11309>, case 1: <D.11311>>
  <D.11309>:
  name = "Faroese (Faroe Islands)";
  goto <D.11310>;
  <D.11311>:
  name = "Faroese";
  goto <D.11310>;
  <D.11975>:
  <D.11310>:
  goto <D.11025>;
  <D.11312>:
  switch (secondary) <default: <D.11976>, case 0: <D.11313>, case 1: <D.11315>>
  <D.11313>:
  name = "Hindi (India)";
  goto <D.11314>;
  <D.11315>:
  name = "Hindi";
  goto <D.11314>;
  <D.11976>:
  <D.11314>:
  goto <D.11025>;
  <D.11316>:
  switch (secondary) <default: <D.11977>, case 0: <D.11317>, case 1: <D.11319>>
  <D.11317>:
  name = "Maltese (Malta)";
  goto <D.11318>;
  <D.11319>:
  name = "Maltese";
  goto <D.11318>;
  <D.11977>:
  <D.11318>:
  goto <D.11025>;
  <D.11320>:
  switch (secondary) <default: <D.11978>, case 0: <D.11321>, case 1: <D.11323>, case 2: <D.11324>, case 3: <D.11325>, case 4: <D.11326>, case 5: <D.11327>, case 6: <D.11328>, case 7: <D.11329>, case 8: <D.11330>, case 9: <D.11331>>
  <D.11321>:
  name = "Sami (Northern) (Norway)";
  goto <D.11322>;
  <D.11323>:
  name = "Sami, Northern (Norway)";
  goto <D.11322>;
  <D.11324>:
  name = "Sami, Northern (Sweden)";
  goto <D.11322>;
  <D.11325>:
  name = "Sami, Northern (Finland)";
  goto <D.11322>;
  <D.11326>:
  name = "Sami, Lule (Norway)";
  goto <D.11322>;
  <D.11327>:
  name = "Sami, Lule (Sweden)";
  goto <D.11322>;
  <D.11328>:
  name = "Sami, Southern (Norway)";
  goto <D.11322>;
  <D.11329>:
  name = "Sami, Southern (Sweden)";
  goto <D.11322>;
  <D.11330>:
  name = "Sami, Skolt (Finland)";
  goto <D.11322>;
  <D.11331>:
  name = "Sami, Inari (Finland)";
  goto <D.11322>;
  <D.11978>:
  <D.11322>:
  goto <D.11025>;
  <D.11332>:
  switch (secondary) <default: <D.11979>, case 2: <D.11333>>
  <D.11333>:
  name = "Irish (Ireland)";
  goto <D.11334>;
  <D.11979>:
  <D.11334>:
  goto <D.11025>;
  <D.11335>:
  switch (secondary) <default: <D.11980>, case 0: <D.11336>, case 1: <D.11337>, case 2: <D.11339>>
  <D.11336>:
  <D.11337>:
  name = "Malay (Malaysia)";
  goto <D.11338>;
  <D.11339>:
  name = "Malay (Brunei Darussalam)";
  goto <D.11338>;
  <D.11980>:
  <D.11338>:
  goto <D.11025>;
  <D.11340>:
  switch (secondary) <default: <D.11981>, case 0: <D.11341>, case 1: <D.11343>>
  <D.11341>:
  name = "Kazakh (Kazakhstan)";
  goto <D.11342>;
  <D.11343>:
  name = "Kazakh";
  goto <D.11342>;
  <D.11981>:
  <D.11342>:
  goto <D.11025>;
  <D.11344>:
  switch (secondary) <default: <D.11982>, case 0: <D.11345>, case 1: <D.11347>>
  <D.11345>:
  name = "Kyrgyz (Kyrgyzstan)";
  goto <D.11346>;
  <D.11347>:
  name = "Kyrgyz (Cyrillic)";
  goto <D.11346>;
  <D.11982>:
  <D.11346>:
  goto <D.11025>;
  <D.11348>:
  switch (secondary) <default: <D.11983>, case 0: <D.11349>, case 1: <D.11351>>
  <D.11349>:
  name = "Swahili (Kenya)";
  goto <D.11350>;
  <D.11351>:
  name = "Swahili";
  goto <D.11350>;
  <D.11983>:
  <D.11350>:
  goto <D.11025>;
  <D.11352>:
  switch (secondary) <default: <D.11984>, case 1: <D.11353>>
  <D.11353>:
  name = "Turkmen (Turkmenistan)";
  goto <D.11354>;
  <D.11984>:
  <D.11354>:
  goto <D.11025>;
  <D.11355>:
  switch (secondary) <default: <D.11985>, case 0: <D.11356>, case 1: <D.11358>, case 2: <D.11359>>
  <D.11356>:
  name = "Uzbek (Latin) (Uzbekistan)";
  goto <D.11357>;
  <D.11358>:
  name = "Uzbek (Latin)";
  goto <D.11357>;
  <D.11359>:
  name = "Uzbek (Cyrillic)";
  goto <D.11357>;
  <D.11985>:
  <D.11357>:
  goto <D.11025>;
  <D.11360>:
  switch (secondary) <default: <D.11986>, case 0: <D.11361>, case 1: <D.11363>>
  <D.11361>:
  name = "Tatar (Russia)";
  goto <D.11362>;
  <D.11363>:
  name = "Tatar";
  goto <D.11362>;
  <D.11986>:
  <D.11362>:
  goto <D.11025>;
  <D.11364>:
  switch (secondary) <default: <D.11987>, case 0: <D.11365>, case 1: <D.11366>>
  <D.11365>:
  <D.11366>:
  name = "Bengali (India)";
  goto <D.11367>;
  <D.11987>:
  <D.11367>:
  goto <D.11025>;
  <D.11368>:
  switch (secondary) <default: <D.11988>, case 0: <D.11369>, case 1: <D.11371>>
  <D.11369>:
  name = "Punjabi (India)";
  goto <D.11370>;
  <D.11371>:
  name = "Punjabi";
  goto <D.11370>;
  <D.11988>:
  <D.11370>:
  goto <D.11025>;
  <D.11372>:
  switch (secondary) <default: <D.11989>, case 0: <D.11373>, case 1: <D.11375>>
  <D.11373>:
  name = "Gujarati (India)";
  goto <D.11374>;
  <D.11375>:
  name = "Gujarati";
  goto <D.11374>;
  <D.11989>:
  <D.11374>:
  goto <D.11025>;
  <D.11376>:
  switch (secondary) <default: <D.11990>, case 0: <D.11377>, case 1: <D.11379>>
  <D.11377>:
  name = "Tamil (India)";
  goto <D.11378>;
  <D.11379>:
  name = "Tamil";
  goto <D.11378>;
  <D.11990>:
  <D.11378>:
  goto <D.11025>;
  <D.11380>:
  switch (secondary) <default: <D.11991>, case 0: <D.11381>, case 1: <D.11383>>
  <D.11381>:
  name = "Telugu (India)";
  goto <D.11382>;
  <D.11383>:
  name = "Telugu";
  goto <D.11382>;
  <D.11991>:
  <D.11382>:
  goto <D.11025>;
  <D.11384>:
  switch (secondary) <default: <D.11992>, case 0: <D.11385>, case 1: <D.11387>>
  <D.11385>:
  name = "Kannada (India)";
  goto <D.11386>;
  <D.11387>:
  name = "Kannada";
  goto <D.11386>;
  <D.11992>:
  <D.11386>:
  goto <D.11025>;
  <D.11388>:
  switch (secondary) <default: <D.11993>, case 0: <D.11389>, case 1: <D.11390>>
  <D.11389>:
  <D.11390>:
  name = "Malayalam (India)";
  goto <D.11391>;
  <D.11993>:
  <D.11391>:
  goto <D.11025>;
  <D.11392>:
  switch (secondary) <default: <D.11994>, case 1: <D.11393>>
  <D.11393>:
  name = "Assamese (India)";
  goto <D.11394>;
  <D.11994>:
  <D.11394>:
  goto <D.11025>;
  <D.11395>:
  switch (secondary) <default: <D.11995>, case 0: <D.11396>, case 1: <D.11398>>
  <D.11396>:
  name = "Marathi (India)";
  goto <D.11397>;
  <D.11398>:
  name = "Marathi";
  goto <D.11397>;
  <D.11995>:
  <D.11397>:
  goto <D.11025>;
  <D.11399>:
  switch (secondary) <default: <D.11996>, case 0: <D.11400>, case 1: <D.11402>>
  <D.11400>:
  name = "Sanskrit (India)";
  goto <D.11401>;
  <D.11402>:
  name = "Sanskrit";
  goto <D.11401>;
  <D.11996>:
  <D.11401>:
  goto <D.11025>;
  <D.11403>:
  switch (secondary) <default: <D.11997>, case 0: <D.11404>, case 1: <D.11406>, case 2: <D.11407>>
  <D.11404>:
  name = "Mongolian (Mongolia)";
  goto <D.11405>;
  <D.11406>:
  name = "Mongolian (Cyrillic)";
  goto <D.11405>;
  <D.11407>:
  name = "Mongolian (PRC)";
  goto <D.11405>;
  <D.11997>:
  <D.11405>:
  goto <D.11025>;
  <D.11408>:
  switch (secondary) <default: <D.11998>, case 1: <D.11409>, case 2: <D.11411>>
  <D.11409>:
  name = "Tibetan (PRC)";
  goto <D.11410>;
  <D.11411>:
  name = "Tibetan (Bhutan)";
  goto <D.11410>;
  <D.11998>:
  <D.11410>:
  goto <D.11025>;
  <D.11412>:
  switch (secondary) <default: <D.11999>, case 0: <D.11413>, case 1: <D.11415>>
  <D.11413>:
  name = "Welsh (United Kingdom)";
  goto <D.11414>;
  <D.11415>:
  name = "Welsh";
  goto <D.11414>;
  <D.11999>:
  <D.11414>:
  goto <D.11025>;
  <D.11416>:
  switch (secondary) <default: <D.12000>, case 1: <D.11417>>
  <D.11417>:
  name = "Khmer (Cambodia)";
  goto <D.11418>;
  <D.12000>:
  <D.11418>:
  goto <D.11025>;
  <D.11419>:
  switch (secondary) <default: <D.12001>, case 1: <D.11420>>
  <D.11420>:
  name = "Lao (Lao PDR)";
  goto <D.11421>;
  <D.12001>:
  <D.11421>:
  goto <D.11025>;
  <D.11422>:
  switch (secondary) <default: <D.12002>, case 0: <D.11423>, case 1: <D.11425>>
  <D.11423>:
  name = "Galician (Spain)";
  goto <D.11424>;
  <D.11425>:
  name = "Galician";
  goto <D.11424>;
  <D.12002>:
  <D.11424>:
  goto <D.11025>;
  <D.11426>:
  switch (secondary) <default: <D.12003>, case 0: <D.11427>, case 1: <D.11429>>
  <D.11427>:
  name = "Konkani (India)";
  goto <D.11428>;
  <D.11429>:
  name = "Konkani";
  goto <D.11428>;
  <D.12003>:
  <D.11428>:
  goto <D.11025>;
  <D.11430>:
  switch (secondary) <default: <D.12004>, case 0: <D.11431>, case 1: <D.11433>>
  <D.11431>:
  name = "Syriac (Syria)";
  goto <D.11432>;
  <D.11433>:
  name = "Syriac";
  goto <D.11432>;
  <D.12004>:
  <D.11432>:
  goto <D.11025>;
  <D.11434>:
  switch (secondary) <default: <D.12005>, case 1: <D.11435>>
  <D.11435>:
  name = "Sinhala (Sri Lanka)";
  goto <D.11436>;
  <D.12005>:
  <D.11436>:
  goto <D.11025>;
  <D.11437>:
  switch (secondary) <default: <D.12006>, case 1: <D.11438>, case 2: <D.11440>>
  <D.11438>:
  name = "Inuktitut (Syllabics, Canada)";
  goto <D.11439>;
  <D.11440>:
  name = "Inuktitut (Latin, Canada)";
  goto <D.11439>;
  <D.12006>:
  <D.11439>:
  goto <D.11025>;
  <D.11441>:
  switch (secondary) <default: <D.12007>, case 1: <D.11442>>
  <D.11442>:
  name = "Amharic (Ethiopia)";
  goto <D.11443>;
  <D.12007>:
  <D.11443>:
  goto <D.11025>;
  <D.11444>:
  switch (secondary) <default: <D.12008>, case 2: <D.11445>>
  <D.11445>:
  name = "Tamazight (Algeria, Latin)";
  goto <D.11446>;
  <D.12008>:
  <D.11446>:
  goto <D.11025>;
  <D.11447>:
  switch (secondary) <default: <D.12009>, case 1: <D.11448>>
  <D.11448>:
  name = "Nepali (Nepal)";
  goto <D.11449>;
  <D.12009>:
  <D.11449>:
  goto <D.11025>;
  <D.11450>:
  switch (secondary) <default: <D.12010>, case 1: <D.11451>>
  <D.11451>:
  name = "Frisian (Netherlands)";
  goto <D.11452>;
  <D.12010>:
  <D.11452>:
  goto <D.11025>;
  <D.11453>:
  switch (secondary) <default: <D.12011>, case 1: <D.11454>>
  <D.11454>:
  name = "Pashto (Afghanistan)";
  goto <D.11455>;
  <D.12011>:
  <D.11455>:
  goto <D.11025>;
  <D.11456>:
  switch (secondary) <default: <D.12012>, case 1: <D.11457>>
  <D.11457>:
  name = "Filipino (Philippines)";
  goto <D.11458>;
  <D.12012>:
  <D.11458>:
  goto <D.11025>;
  <D.11459>:
  switch (secondary) <default: <D.12013>, case 0: <D.11460>, case 1: <D.11462>>
  <D.11460>:
  name = "Divehi (Maldives)";
  goto <D.11461>;
  <D.11462>:
  name = "Divehi";
  goto <D.11461>;
  <D.12013>:
  <D.11461>:
  goto <D.11025>;
  <D.11463>:
  switch (secondary) <default: <D.12014>, case 1: <D.11464>>
  <D.11464>:
  name = "Hausa (Nigeria, Latin)";
  goto <D.11465>;
  <D.12014>:
  <D.11465>:
  goto <D.11025>;
  <D.11466>:
  switch (secondary) <default: <D.12015>, case 1: <D.11467>>
  <D.11467>:
  name = "Yoruba (Nigeria)";
  goto <D.11468>;
  <D.12015>:
  <D.11468>:
  goto <D.11025>;
  <D.11469>:
  switch (secondary) <default: <D.12016>, case 0: <D.11470>, case 1: <D.11471>, case 2: <D.11473>, case 3: <D.11474>>
  <D.11470>:
  <D.11471>:
  name = "Quechua (Bolivia)";
  goto <D.11472>;
  <D.11473>:
  name = "Quechua (Ecuador)";
  goto <D.11472>;
  <D.11474>:
  name = "Quechua (Peru)";
  goto <D.11472>;
  <D.12016>:
  <D.11472>:
  goto <D.11025>;
  <D.11475>:
  switch (secondary) <default: <D.12017>, case 0: <D.11476>, case 1: <D.11478>>
  <D.11476>:
  name = "Northern Sotho (South Africa)";
  goto <D.11477>;
  <D.11478>:
  name = "Northern Sotho";
  goto <D.11477>;
  <D.12017>:
  <D.11477>:
  goto <D.11025>;
  <D.11479>:
  switch (secondary) <default: <D.12018>, case 1: <D.11480>>
  <D.11480>:
  name = "Bashkir (Russia)";
  goto <D.11481>;
  <D.12018>:
  <D.11481>:
  goto <D.11025>;
  <D.11482>:
  switch (secondary) <default: <D.12019>, case 1: <D.11483>>
  <D.11483>:
  name = "Luxembourgish (Luxembourg)";
  goto <D.11484>;
  <D.12019>:
  <D.11484>:
  goto <D.11025>;
  <D.11485>:
  switch (secondary) <default: <D.12020>, case 1: <D.11486>>
  <D.11486>:
  name = "Greenlandic (Greenland)";
  goto <D.11487>;
  <D.12020>:
  <D.11487>:
  goto <D.11025>;
  <D.11488>:
  switch (secondary) <default: <D.12021>, case 1: <D.11489>>
  <D.11489>:
  name = "Yi (PRC)";
  goto <D.11490>;
  <D.12021>:
  <D.11490>:
  goto <D.11025>;
  <D.11491>:
  switch (secondary) <default: <D.12022>, case 1: <D.11492>>
  <D.11492>:
  name = "Mapudungun (Chile)";
  goto <D.11493>;
  <D.12022>:
  <D.11493>:
  goto <D.11025>;
  <D.11494>:
  switch (secondary) <default: <D.12023>, case 1: <D.11495>>
  <D.11495>:
  name = "Mohawk (Mohawk)";
  goto <D.11496>;
  <D.12023>:
  <D.11496>:
  goto <D.11025>;
  <D.11497>:
  switch (secondary) <default: <D.12024>, case 1: <D.11498>>
  <D.11498>:
  name = "Breton (France)";
  goto <D.11499>;
  <D.12024>:
  <D.11499>:
  goto <D.11025>;
  <D.11500>:
  switch (secondary) <default: <D.12025>, case 0: <D.11501>>
  <D.11501>:
  name = "Invariant Language (Invariant Country)";
  goto <D.11502>;
  <D.12025>:
  <D.11502>:
  goto <D.11025>;
  <D.11503>:
  switch (secondary) <default: <D.12026>, case 1: <D.11504>>
  <D.11504>:
  name = "Uighur (PRC)";
  goto <D.11505>;
  <D.12026>:
  <D.11505>:
  goto <D.11025>;
  <D.11506>:
  switch (secondary) <default: <D.12027>, case 0: <D.11507>, case 1: <D.11509>>
  <D.11507>:
  name = "Maori (New Zealand)";
  goto <D.11508>;
  <D.11509>:
  name = "Maori";
  goto <D.11508>;
  <D.12027>:
  <D.11508>:
  goto <D.11025>;
  <D.11510>:
  switch (secondary) <default: <D.12028>, case 1: <D.11511>>
  <D.11511>:
  name = "Corsican (France)";
  goto <D.11512>;
  <D.12028>:
  <D.11512>:
  goto <D.11025>;
  <D.11513>:
  switch (secondary) <default: <D.12029>, case 1: <D.11514>>
  <D.11514>:
  name = "Alsatian (France)";
  goto <D.11515>;
  <D.12029>:
  <D.11515>:
  goto <D.11025>;
  <D.11516>:
  switch (secondary) <default: <D.12030>, case 1: <D.11517>>
  <D.11517>:
  name = "Yakut (Russia)";
  goto <D.11518>;
  <D.12030>:
  <D.11518>:
  goto <D.11025>;
  <D.11519>:
  switch (secondary) <default: <D.12031>, case 1: <D.11520>>
  <D.11520>:
  name = "K\'iche (Guatemala)";
  goto <D.11521>;
  <D.12031>:
  <D.11521>:
  goto <D.11025>;
  <D.11522>:
  switch (secondary) <default: <D.12032>, case 1: <D.11523>>
  <D.11523>:
  name = "Kinyarwanda (Rwanda)";
  goto <D.11524>;
  <D.12032>:
  <D.11524>:
  goto <D.11025>;
  <D.11525>:
  switch (secondary) <default: <D.12033>, case 1: <D.11526>>
  <D.11526>:
  name = "Wolof (Senegal)";
  goto <D.11527>;
  <D.12033>:
  <D.11527>:
  goto <D.11025>;
  <D.11528>:
  switch (secondary) <default: <D.12034>, case 1: <D.11529>>
  <D.11529>:
  name = "Dari (Afghanistan)";
  goto <D.11530>;
  <D.12034>:
  <D.11530>:
  goto <D.11025>;
  <D.11531>:
  name = "Language Neutral";
  <D.11025>:
  if (name == 0B) goto <D.12035>; else goto <D.12036>;
  <D.12035>:
  name = "Language Neutral";
  <D.12036>:
  D.12037 = copy_lang (lang_out, lang_len, name);
  return D.12037;
}


copy_lang (gunichar2 * lang_out, guint32 lang_len, const gchar * text)
{
  long unsigned int D.12040;
  _Bool D.12041;
  long int D.12042;
  long int D.12043;
  unsigned int chars.19;
  unsigned int D.12047;
  int D.12050;
  long unsigned int D.12051;
  long unsigned int D.12052;
  long unsigned int D.12053;
  gunichar2 * D.12054;
  unsigned int D.12056;
  unsigned int D.12057;
  long unsigned int D.12058;
  long unsigned int D.12059;
  long unsigned int D.12060;
  gunichar2 * D.12061;
  guint32 D.12062;
  gunichar2 * unitext;
  int chars;
  int ret;

  D.12040 = strlen (text);
  chars = (int) D.12040;
  unitext = monoeg_g_utf8_to_utf16 (text, -1, 0B, 0B, 0B);
  D.12041 = unitext == 0B;
  D.12042 = (long int) D.12041;
  D.12043 = __builtin_expect (D.12042, 0);
  if (D.12043 != 0) goto <D.12044>; else goto <D.12045>;
  <D.12044>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "versioninfo.c", 1008, "unitext != NULL");
  <D.12045>:
  chars.19 = (unsigned int) chars;
  D.12047 = lang_len + 4294967295;
  if (chars.19 < D.12047) goto <D.12048>; else goto <D.12049>;
  <D.12048>:
  D.12050 = chars * 2;
  D.12051 = (long unsigned int) D.12050;
  memcpy (lang_out, unitext, D.12051);
  D.12052 = (long unsigned int) chars;
  D.12053 = D.12052 * 2;
  D.12054 = lang_out + D.12053;
  *D.12054 = 0;
  ret = chars;
  goto <D.12055>;
  <D.12049>:
  D.12056 = lang_len + 2147483647;
  D.12057 = D.12056 * 2;
  D.12058 = (long unsigned int) D.12057;
  memcpy (lang_out, unitext, D.12058);
  D.12059 = (long unsigned int) lang_len;
  D.12060 = D.12059 * 2;
  D.12061 = lang_out + D.12060;
  *D.12061 = 0;
  ret = (int) lang_len;
  <D.12055>:
  monoeg_g_free (unitext);
  D.12062 = (guint32) ret;
  return D.12062;
}


