VerQueryValue (const void * datablock, const gunichar2 * subblock, void * * buffer, guint32 * len)
{
  gboolean D.11017;
  int D.10444;
  int iftmp.0;
  int D.10443;
  const char[25] * D.11021;
  unsigned char D.11022;
  int D.11023;
  unsigned char D.11024;
  int D.11025;
  _Bool D.11026;
  _Bool D.11027;
  _Bool D.11028;
  const unsigned char * D.11031;
  unsigned char D.11032;
  int D.11033;
  const unsigned char * D.11034;
  unsigned char D.11035;
  int D.11036;
  _Bool D.11037;
  _Bool D.11038;
  const unsigned char * D.11041;
  unsigned char D.11042;
  int D.11043;
  const unsigned char * D.11044;
  unsigned char D.11045;
  int D.11046;
  _Bool D.11047;
  _Bool D.11048;
  const unsigned char * D.11051;
  unsigned char D.11052;
  int D.11053;
  const unsigned char * D.11054;
  unsigned char D.11055;
  int D.11056;
  int D.11061;
  const gunichar2 * D.11064;
  int D.10462;
  int iftmp.1;
  int D.10461;
  const char[2] * D.11068;
  unsigned char D.11069;
  int D.11070;
  unsigned char D.11071;
  int D.11072;
  _Bool D.11073;
  _Bool D.11074;
  _Bool D.11075;
  const unsigned char * D.11078;
  unsigned char D.11079;
  int D.11080;
  const unsigned char * D.11081;
  unsigned char D.11082;
  int D.11083;
  _Bool D.11084;
  _Bool D.11085;
  const unsigned char * D.11088;
  unsigned char D.11089;
  int D.11090;
  const unsigned char * D.11091;
  unsigned char D.11092;
  int D.11093;
  _Bool D.11094;
  _Bool D.11095;
  const unsigned char * D.11098;
  unsigned char D.11099;
  int D.11100;
  const unsigned char * D.11101;
  unsigned char D.11102;
  int D.11103;
  short unsigned int D.11109;
  unsigned int D.11110;
  int D.11112;
  short unsigned int D.11117;
  int D.11118;
  sizetype data_ptr.2;
  sizetype D.11120;
  sizetype D.11121;
  gunichar2 * D.11123;
  int D.11124;
  sizetype D.11129;
  int D.11131;
  void * string_value.3;
  unsigned int string_value_len.4;
  unsigned int D.11141;
  unsigned int D.11142;
  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.11015>; else goto <D.11016>;
      <D.11015>:
      D.11017 = 0;
      return D.11017;
      <D.11016>:
      {
        size_t __s1_len;
        size_t __s2_len;

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

          __s2 = subblock_utf8;
          D.11021 = "\\VarFileInfo\\Translation";
          D.11022 = MEM[(const unsigned char *)D.11021];
          D.11023 = (int) D.11022;
          D.11024 = *__s2;
          D.11025 = (int) D.11024;
          __result = D.11023 - D.11025;
          {
            D.11026 = __s2_len != 0;
            D.11027 = __result == 0;
            D.11028 = D.11026 & D.11027;
            if (D.11028 != 0) goto <D.11029>; else goto <D.11030>;
            <D.11029>:
            D.11031 = &MEM[(void *)"\\VarFileInfo\\Translation" + 1B];
            D.11032 = *D.11031;
            D.11033 = (int) D.11032;
            D.11034 = __s2 + 1;
            D.11035 = *D.11034;
            D.11036 = (int) D.11035;
            __result = D.11033 - D.11036;
            D.11037 = __s2_len > 1;
            D.11027 = __result == 0;
            D.11038 = D.11037 & D.11027;
            if (D.11038 != 0) goto <D.11039>; else goto <D.11040>;
            <D.11039>:
            D.11041 = &MEM[(void *)"\\VarFileInfo\\Translation" + 2B];
            D.11042 = *D.11041;
            D.11043 = (int) D.11042;
            D.11044 = __s2 + 2;
            D.11045 = *D.11044;
            D.11046 = (int) D.11045;
            __result = D.11043 - D.11046;
            D.11047 = __s2_len > 2;
            D.11027 = __result == 0;
            D.11048 = D.11047 & D.11027;
            if (D.11048 != 0) goto <D.11049>; else goto <D.11050>;
            <D.11049>:
            D.11051 = &MEM[(void *)"\\VarFileInfo\\Translation" + 3B];
            D.11052 = *D.11051;
            D.11053 = (int) D.11052;
            D.11054 = __s2 + 3;
            D.11055 = *D.11054;
            D.11056 = (int) D.11055;
            __result = D.11053 - D.11056;
            <D.11050>:
            <D.11040>:
            <D.11030>:
          }
          D.10443 = __result;
        }
        iftmp.0 = -D.10443;
        goto <D.11057>;
        <D.11020>:
        iftmp.0 = __builtin_strcmp (subblock_utf8, "\\VarFileInfo\\Translation");
        <D.11057>:
        D.10444 = iftmp.0;
      }
      if (D.10444 == 0) goto <D.11058>; else goto <D.11059>;
      <D.11058>:
      want_var = 1;
      goto <D.11060>;
      <D.11059>:
      D.11061 = strncmp (subblock_utf8, "\\StringFileInfo\\", 16);
      if (D.11061 == 0) goto <D.11062>; else goto <D.11063>;
      <D.11062>:
      want_string = 1;
      D.11064 = subblock + 32;
      memcpy (&lang, D.11064, 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.11063>:
      <D.11060>:
      {
        size_t __s1_len;
        size_t __s2_len;

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

          __s2 = subblock_utf8;
          D.11068 = "\\";
          D.11069 = MEM[(const unsigned char *)D.11068];
          D.11070 = (int) D.11069;
          D.11071 = *__s2;
          D.11072 = (int) D.11071;
          __result = D.11070 - D.11072;
          {
            D.11073 = __s2_len != 0;
            D.11074 = __result == 0;
            D.11075 = D.11073 & D.11074;
            if (D.11075 != 0) goto <D.11076>; else goto <D.11077>;
            <D.11076>:
            D.11078 = &MEM[(void *)"\\" + 1B];
            D.11079 = *D.11078;
            D.11080 = (int) D.11079;
            D.11081 = __s2 + 1;
            D.11082 = *D.11081;
            D.11083 = (int) D.11082;
            __result = D.11080 - D.11083;
            D.11084 = __s2_len > 1;
            D.11074 = __result == 0;
            D.11085 = D.11084 & D.11074;
            if (D.11085 != 0) goto <D.11086>; else goto <D.11087>;
            <D.11086>:
            D.11088 = &MEM[(void *)"\\" + 2B];
            D.11089 = *D.11088;
            D.11090 = (int) D.11089;
            D.11091 = __s2 + 2;
            D.11092 = *D.11091;
            D.11093 = (int) D.11092;
            __result = D.11090 - D.11093;
            D.11094 = __s2_len > 2;
            D.11074 = __result == 0;
            D.11095 = D.11094 & D.11074;
            if (D.11095 != 0) goto <D.11096>; else goto <D.11097>;
            <D.11096>:
            D.11098 = &MEM[(void *)"\\" + 3B];
            D.11099 = *D.11098;
            D.11100 = (int) D.11099;
            D.11101 = __s2 + 3;
            D.11102 = *D.11101;
            D.11103 = (int) D.11102;
            __result = D.11100 - D.11103;
            <D.11097>:
            <D.11087>:
            <D.11077>:
          }
          D.10461 = __result;
        }
        iftmp.1 = -D.10461;
        goto <D.11104>;
        <D.11067>:
        iftmp.1 = __builtin_strcmp (subblock_utf8, "\\");
        <D.11104>:
        D.10462 = iftmp.1;
      }
      if (D.10462 == 0) goto <D.11105>; else goto <D.11106>;
      <D.11105>:
      data_ptr = get_fixedfileinfo_block (datablock, &block);
      if (data_ptr != 0B) goto <D.11107>; else goto <D.11108>;
      <D.11107>:
      *buffer = data_ptr;
      D.11109 = block.value_len;
      D.11110 = (unsigned int) D.11109;
      *len = D.11110;
      ret = 1;
      <D.11108>:
      goto <D.11111>;
      <D.11106>:
      D.11112 = want_var | want_string;
      if (D.11112 != 0) goto <D.11113>; else goto <D.11114>;
      <D.11113>:
      data_ptr = get_fixedfileinfo_block (datablock, &block);
      if (data_ptr != 0B) goto <D.11115>; else goto <D.11116>;
      <D.11115>:
      data_ptr = data_ptr + 52;
      D.11117 = block.data_len;
      D.11118 = (int) D.11117;
      data_len = D.11118 + -92;
      goto <D.10465>;
      <D.10464>:
      data_ptr = data_ptr + 3;
      data_ptr.2 = (sizetype) data_ptr;
      D.11120 = data_ptr.2 & 3;
      D.11121 = -D.11120;
      data_ptr = data_ptr + D.11121;
      data_ptr = get_versioninfo_block (data_ptr, &block);
      D.11117 = block.data_len;
      if (D.11117 == 0) goto done; else goto <D.11122>;
      <D.11122>:
      D.11117 = block.data_len;
      D.11118 = (int) D.11117;
      data_len = data_len - D.11118;
      D.11123 = block.key;
      D.11124 = unicode_string_equals (D.11123, "VarFileInfo");
      if (D.11124 != 0) goto <D.11125>; else goto <D.11126>;
      <D.11125>:
      data_ptr = get_varfileinfo_block (data_ptr, &block);
      if (want_var != 0) goto <D.11127>; else goto <D.11128>;
      <D.11127>:
      *buffer = data_ptr;
      D.11109 = block.value_len;
      D.11110 = (unsigned int) D.11109;
      *len = D.11110;
      ret = 1;
      goto done;
      <D.11128>:
      D.11109 = block.value_len;
      D.11129 = (sizetype) D.11109;
      data_ptr = data_ptr + D.11129;
      goto <D.11130>;
      <D.11126>:
      D.11123 = block.key;
      D.11131 = unicode_string_equals (D.11123, "StringFileInfo");
      if (D.11131 != 0) goto <D.11132>; else goto done;
      <D.11132>:
      data_ptr = get_stringtable_block (data_ptr, lang_utf8, string_key, &string_value, &string_value_len, &block);
      if (want_string != 0) goto <D.11133>; else goto <D.11134>;
      <D.11133>:
      string_value.3 = string_value;
      if (string_value.3 != 0B) goto <D.11136>; else goto <D.11137>;
      <D.11136>:
      string_value_len.4 = string_value_len;
      if (string_value_len.4 != 0) goto <D.11139>; else goto <D.11140>;
      <D.11139>:
      string_value.3 = string_value;
      *buffer = string_value.3;
      string_value.3 = string_value;
      D.11141 = unicode_chars (string_value.3);
      D.11142 = D.11141 + 1;
      *len = D.11142;
      ret = 1;
      goto done;
      <D.11140>:
      <D.11137>:
      <D.11134>:
      <D.11130>:
      if (data_ptr == 0B) goto done; else goto <D.11143>;
      <D.11143>:
      <D.10465>:
      if (data_len > 0) goto <D.10464>; else goto <D.10466>;
      <D.10466>:
      <D.11116>:
      <D.11114>:
      <D.11111>:
      done:
      if (lang_utf8 != 0B) goto <D.11144>; else goto <D.11145>;
      <D.11144>:
      monoeg_g_free (lang_utf8);
      <D.11145>:
      monoeg_g_free (subblock_utf8);
      D.11017 = ret;
      return D.11017;
    }
  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.11148;
  long unsigned int D.11149;

  D.11149 = __builtin_object_size (__dest, 0);
  D.11148 = __builtin___memcpy_chk (__dest, __src, __len, D.11149);
  return D.11148;
}


get_fixedfileinfo_block (const void * data, struct version_data * block)
{
  short unsigned int D.11151;
  short unsigned int D.11152;
  const void * D.11155;
  gunichar2 * D.11156;
  int D.11157;
  unsigned int D.11162;
  unsigned int D.11164;
  const void * data_ptr;
  gint32 data_len;
  struct WapiFixedFileInfo * ffi;

  data_ptr = get_versioninfo_block (data, block);
  D.11151 = block->data_len;
  data_len = (gint32) D.11151;
  D.11152 = block->value_len;
  if (D.11152 != 52) goto <D.11153>; else goto <D.11154>;
  <D.11153>:
  D.11155 = 0B;
  return D.11155;
  <D.11154>:
  D.11156 = block->key;
  D.11157 = unicode_string_equals (D.11156, "VS_VERSION_INFO");
  if (D.11157 == 0) goto <D.11158>; else goto <D.11159>;
  <D.11158>:
  D.11155 = 0B;
  return D.11155;
  <D.11159>:
  ffi = data_ptr;
  D.11162 = ffi->dwSignature;
  if (D.11162 != 4277077181) goto <D.11160>; else goto <D.11163>;
  <D.11163>:
  D.11164 = ffi->dwStrucVersion;
  if (D.11164 != 65536) goto <D.11160>; else goto <D.11161>;
  <D.11160>:
  D.11155 = 0B;
  return D.11155;
  <D.11161>:
  D.11155 = data_ptr;
  return D.11155;
}


get_versioninfo_block (const void * data, struct version_data * block)
{
  short unsigned int D.11166;
  gunichar2 * D.11167;
  unsigned int D.11168;
  unsigned int D.11169;
  long unsigned int D.11170;
  long unsigned int D.11171;
  sizetype data.5;
  sizetype D.11173;
  sizetype D.11174;
  const void * D.11175;

  D.11166 = MEM[(guint16 *)data];
  block->data_len = D.11166;
  data = data + 2;
  D.11166 = MEM[(guint16 *)data];
  block->value_len = D.11166;
  data = data + 2;
  D.11166 = MEM[(guint16 *)data];
  block->type = D.11166;
  data = data + 2;
  block->key = data;
  D.11167 = block->key;
  D.11168 = unicode_chars (D.11167);
  D.11169 = D.11168 + 1;
  D.11170 = (long unsigned int) D.11169;
  D.11171 = D.11170 * 2;
  data = data + D.11171;
  data = data + 3;
  data.5 = (sizetype) data;
  D.11173 = data.5 & 3;
  D.11174 = -D.11173;
  data = data + D.11174;
  D.11175 = data;
  return D.11175;
}


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

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


unicode_string_equals (const gunichar2 * str1, const gchar * str2)
{
  short unsigned int D.11179;
  int D.11180;
  char D.11181;
  int D.11182;
  gboolean D.11185;
  _Bool D.11187;

  goto <D.10357>;
  <D.10356>:
  D.11179 = *str1;
  D.11180 = (int) D.11179;
  D.11181 = *str2;
  D.11182 = (int) D.11181;
  if (D.11180 != D.11182) goto <D.11183>; else goto <D.11184>;
  <D.11183>:
  D.11185 = 0;
  return D.11185;
  <D.11184>:
  str1 = str1 + 2;
  str2 = str2 + 1;
  <D.10357>:
  D.11179 = *str1;
  if (D.11179 != 0) goto <D.11186>; else goto <D.10358>;
  <D.11186>:
  D.11181 = *str2;
  if (D.11181 != 0) goto <D.10356>; else goto <D.10358>;
  <D.10358>:
  D.11179 = *str1;
  D.11180 = (int) D.11179;
  D.11181 = *str2;
  D.11182 = (int) D.11181;
  D.11187 = D.11180 == D.11182;
  D.11185 = (gboolean) D.11187;
  return D.11185;
}


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.11190;
  sizetype D.11191;
  short unsigned int D.11192;
  const void * D.11195;
  gunichar2 * D.11196;
  int D.10413;
  guint16 data_len;
  guint16 string_len;
  gchar * found_lang;
  gchar * lowercase_lang;

  data_len = block->data_len;
  string_len = 36;
  goto <D.10415>;
  <D.10414>:
  data_ptr = data_ptr + 3;
  data_ptr.6 = (sizetype) data_ptr;
  D.11190 = data_ptr.6 & 3;
  D.11191 = -D.11190;
  data_ptr = data_ptr + D.11191;
  data_ptr = get_versioninfo_block (data_ptr, block);
  D.11192 = block->data_len;
  if (D.11192 == 0) goto <D.11193>; else goto <D.11194>;
  <D.11193>:
  D.11195 = 0B;
  return D.11195;
  <D.11194>:
  D.11192 = block->data_len;
  string_len = D.11192 + string_len;
  D.11196 = block->key;
  found_lang = monoeg_g_utf16_to_utf8 (D.11196, 8, 0B, 0B, 0B);
  if (found_lang == 0B) goto <D.11197>; else goto <D.11198>;
  <D.11197>:
  D.11195 = 0B;
  return D.11195;
  <D.11198>:
  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.11201>; else goto <D.11199>;
  <D.11201>:
  {
    size_t __s1_len;
    size_t __s2_len;

    D.10413 = __builtin_strcmp (found_lang, lang);
  }
  if (D.10413 == 0) goto <D.11202>; else goto <D.11199>;
  <D.11202>:
  data_ptr = get_string_block (data_ptr, string_key, string_value, string_value_len, block);
  goto <D.11200>;
  <D.11199>:
  data_ptr = get_string_block (data_ptr, 0B, 0B, 0B, block);
  <D.11200>:
  monoeg_g_free (found_lang);
  if (data_ptr == 0B) goto <D.11203>; else goto <D.11204>;
  <D.11203>:
  D.11195 = 0B;
  return D.11195;
  <D.11204>:
  <D.10415>:
  if (string_len < data_len) goto <D.10414>; else goto <D.10416>;
  <D.10416>:
  D.11195 = data_ptr;
  return D.11195;
}


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.11207;
  sizetype D.11208;
  short unsigned int D.11209;
  const void * D.11212;
  _Bool D.11213;
  _Bool D.11214;
  _Bool D.11215;
  gunichar2 * D.11220;
  int D.11221;
  short unsigned int D.11224;
  unsigned int D.11225;
  long unsigned int D.11226;
  long unsigned int D.11227;
  long int data_ptr.8;
  long int orig_data_ptr.9;
  long int D.11230;
  long int D.11231;
  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.10391>;
  <D.10390>:
  data_ptr = data_ptr + 3;
  data_ptr.7 = (sizetype) data_ptr;
  D.11207 = data_ptr.7 & 3;
  D.11208 = -D.11207;
  data_ptr = data_ptr + D.11208;
  data_ptr = get_versioninfo_block (data_ptr, block);
  D.11209 = block->data_len;
  if (D.11209 == 0) goto <D.11210>; else goto <D.11211>;
  <D.11210>:
  D.11212 = 0B;
  return D.11212;
  <D.11211>:
  D.11209 = block->data_len;
  string_len = D.11209 + string_len;
  D.11213 = string_key != 0B;
  D.11214 = string_value != 0B;
  D.11215 = D.11213 & D.11214;
  if (D.11215 != 0) goto <D.11216>; else goto <D.11217>;
  <D.11216>:
  if (string_value_len != 0B) goto <D.11218>; else goto <D.11219>;
  <D.11218>:
  D.11220 = block->key;
  D.11221 = unicode_compare (string_key, D.11220);
  if (D.11221 == 1) goto <D.11222>; else goto <D.11223>;
  <D.11222>:
  *string_value = data_ptr;
  D.11224 = block->value_len;
  D.11225 = (unsigned int) D.11224;
  *string_value_len = D.11225;
  <D.11223>:
  <D.11219>:
  <D.11217>:
  D.11224 = block->value_len;
  D.11226 = (long unsigned int) D.11224;
  D.11227 = D.11226 * 2;
  data_ptr = data_ptr + D.11227;
  <D.10391>:
  data_ptr.8 = (long int) data_ptr;
  orig_data_ptr.9 = (long int) orig_data_ptr;
  D.11230 = data_ptr.8 - orig_data_ptr.9;
  D.11231 = (long int) data_len;
  if (D.11230 < D.11231) goto <D.10390>; else goto <D.10392>;
  <D.10392>:
  D.11212 = data_ptr;
  return D.11212;
}


unicode_compare (const gunichar2 * str1, const gunichar2 * str2)
{
  short unsigned int D.11233;
  short unsigned int D.11234;
  gboolean D.11237;
  _Bool D.11239;

  goto <D.10350>;
  <D.10349>:
  D.11233 = *str1;
  D.11234 = *str2;
  if (D.11233 != D.11234) goto <D.11235>; else goto <D.11236>;
  <D.11235>:
  D.11237 = 0;
  return D.11237;
  <D.11236>:
  str1 = str1 + 2;
  str2 = str2 + 2;
  <D.10350>:
  D.11233 = *str1;
  if (D.11233 != 0) goto <D.11238>; else goto <D.10351>;
  <D.11238>:
  D.11234 = *str2;
  if (D.11234 != 0) goto <D.10349>; else goto <D.10351>;
  <D.10351>:
  D.11233 = *str1;
  D.11234 = *str2;
  D.11239 = D.11233 == D.11234;
  D.11237 = (gboolean) D.11239;
  return D.11237;
}


unicode_chars (const gunichar2 * str)
{
  long unsigned int D.11241;
  long unsigned int D.11242;
  const gunichar2 * D.11243;
  short unsigned int D.11244;
  guint32 D.11247;
  guint32 len;

  len = 0;
  <D.10344>:
  D.11241 = (long unsigned int) len;
  D.11242 = D.11241 * 2;
  D.11243 = str + D.11242;
  D.11244 = *D.11243;
  if (D.11244 == 0) goto <D.11245>; else goto <D.11246>;
  <D.11245>:
  D.11247 = len;
  return D.11247;
  <D.11246>:
  len = len + 1;
  goto <D.10344>;
}


GetFileVersionInfoSize (gunichar2 * filename, guint32 * handle)
{
  guint32 D.11251;
  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.11249>; else goto <D.11250>;
      <D.11249>:
      D.11251 = 0;
      return D.11251;
      <D.11250>:
      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.11254>; else goto <D.11255>;
      <D.11254>:
      size = 0;
      <D.11255>:
      map_handle.12 = map_handle;
      unmap_pe_file (file_map, map_handle.12);
      D.11251 = size;
      return D.11251;
    }
  finally
    {
      map_handle = {CLOBBER};
      map_size = {CLOBBER};
      size = {CLOBBER};
    }
}


map_pe_file (gunichar2 * filename, gint32 * map_size, void * * handle)
{
  void * D.11261;
  int * D.11264;
  int D.11265;
  int D.11266;
  unsigned int D.11267;
  int D.11268;
  int D.11271;
  unsigned int D.11272;
  long int D.11273;
  int D.11274;
  long unsigned int D.11275;
  long unsigned int D.11278;
  int D.11281;
  unsigned int D.11282;
  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.11259>; else goto <D.11260>;
      <D.11259>:
      SetLastError (123);
      D.11261 = 0B;
      return D.11261;
      <D.11260>:
      fd = _wapi_open (filename_ext, 0, 0);
      if (fd == -1) goto <D.11262>; else goto <D.11263>;
      <D.11262>:
      D.11264 = __errno_location ();
      D.11265 = *D.11264;
      D.11266 = _wapi_get_win32_file_error (D.11265);
      D.11267 = (unsigned int) D.11266;
      SetLastError (D.11267);
      monoeg_g_free (filename_ext);
      D.11261 = 0B;
      return D.11261;
      <D.11263>:
      D.11268 = fstat (fd, &statbuf);
      if (D.11268 == -1) goto <D.11269>; else goto <D.11270>;
      <D.11269>:
      D.11264 = __errno_location ();
      D.11265 = *D.11264;
      D.11271 = _wapi_get_win32_file_error (D.11265);
      D.11272 = (unsigned int) D.11271;
      SetLastError (D.11272);
      monoeg_g_free (filename_ext);
      close (fd);
      D.11261 = 0B;
      return D.11261;
      <D.11270>:
      D.11273 = statbuf.st_size;
      D.11274 = (int) D.11273;
      *map_size = D.11274;
      D.11273 = statbuf.st_size;
      D.11275 = (long unsigned int) D.11273;
      if (D.11275 <= 63) goto <D.11276>; else goto <D.11277>;
      <D.11276>:
      SetLastError (24);
      monoeg_g_free (filename_ext);
      close (fd);
      D.11261 = 0B;
      return D.11261;
      <D.11277>:
      D.11273 = statbuf.st_size;
      D.11278 = (long unsigned int) D.11273;
      file_map = mono_file_map (D.11278, 17, fd, 0, handle);
      if (file_map == 0B) goto <D.11279>; else goto <D.11280>;
      <D.11279>:
      D.11264 = __errno_location ();
      D.11265 = *D.11264;
      D.11281 = _wapi_get_win32_file_error (D.11265);
      D.11282 = (unsigned int) D.11281;
      SetLastError (D.11282);
      monoeg_g_free (filename_ext);
      close (fd);
      D.11261 = 0B;
      return D.11261;
      <D.11280>:
      close (fd);
      monoeg_g_free (filename_ext);
      D.11261 = file_map;
      return D.11261;
    }
  finally
    {
      statbuf = {CLOBBER};
    }
}


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

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


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

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


find_pe_file_resources32 (void * file_map, guint32 map_size, guint32 res_id, guint32 lang_id, guint32 * size)
{
  short unsigned int D.11291;
  void * D.11294;
  long unsigned int D.11295;
  unsigned int D.11296;
  long unsigned int D.11297;
  long unsigned int D.11298;
  sizetype D.11301;
  unsigned int D.11302;
  short unsigned int D.11305;
  short unsigned int D.11313;
  int D.11314;
  short unsigned int D.11315;
  int D.11316;
  int D.11317;
  long unsigned int D.11318;
  long unsigned int D.11319;
  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.11291 = dos_header->e_magic;
  if (D.11291 != 23117) goto <D.11292>; else goto <D.11293>;
  <D.11292>:
  SetLastError (13);
  D.11294 = 0B;
  return D.11294;
  <D.11293>:
  D.11295 = (long unsigned int) map_size;
  D.11296 = dos_header->e_lfanew;
  D.11297 = (long unsigned int) D.11296;
  D.11298 = D.11297 + 248;
  if (D.11295 < D.11298) goto <D.11299>; else goto <D.11300>;
  <D.11299>:
  SetLastError (24);
  D.11294 = 0B;
  return D.11294;
  <D.11300>:
  D.11296 = dos_header->e_lfanew;
  D.11301 = (sizetype) D.11296;
  nt_headers = file_map + D.11301;
  D.11302 = nt_headers->Signature;
  if (D.11302 != 17744) goto <D.11303>; else goto <D.11304>;
  <D.11303>:
  SetLastError (13);
  D.11294 = 0B;
  return D.11294;
  <D.11304>:
  D.11305 = nt_headers->OptionalHeader.Magic;
  if (D.11305 == 523) goto <D.11306>; else goto <D.11307>;
  <D.11306>:
  resource_rva = MEM[(struct WapiImageNTHeaders64 *)nt_headers].OptionalHeader.DataDirectory[2].VirtualAddress;
  goto <D.11308>;
  <D.11307>:
  resource_rva = nt_headers->OptionalHeader.DataDirectory[2].VirtualAddress;
  <D.11308>:
  if (resource_rva == 0) goto <D.11309>; else goto <D.11310>;
  <D.11309>:
  SetLastError (13);
  D.11294 = 0B;
  return D.11294;
  <D.11310>:
  resource_dir = get_ptr_from_rva (resource_rva, nt_headers, file_map);
  if (resource_dir == 0B) goto <D.11311>; else goto <D.11312>;
  <D.11311>:
  SetLastError (13);
  D.11294 = 0B;
  return D.11294;
  <D.11312>:
  D.11313 = resource_dir->NumberOfNamedEntries;
  D.11314 = (int) D.11313;
  D.11315 = resource_dir->NumberOfIdEntries;
  D.11316 = (int) D.11315;
  D.11317 = D.11314 + D.11316;
  entries = (guint32) D.11317;
  resource_dir_entry = resource_dir + 16;
  i = 0;
  goto <D.10299>;
  <D.10298>:
  {
    struct WapiImageResourceDirectoryEntry * direntry;

    D.11318 = (long unsigned int) i;
    D.11319 = D.11318 * 8;
    direntry = resource_dir_entry + D.11319;
    ret = scan_resource_dir (resource_dir, nt_headers, file_map, direntry, 0, res_id, lang_id, size);
    if (ret != 0B) goto <D.11320>; else goto <D.11321>;
    <D.11320>:
    D.11294 = ret;
    return D.11294;
    <D.11321>:
  }
  i = i + 1;
  <D.10299>:
  if (i < entries) goto <D.10298>; else goto <D.10300>;
  <D.10300>:
  D.11294 = 0B;
  return D.11294;
}


get_ptr_from_rva (guint32 rva, struct WapiImageNTHeaders32 * ntheaders, void * file_map)
{
  void * D.11325;
  unsigned int D.11326;
  unsigned int D.11327;
  sizetype D.11328;
  sizetype D.11329;
  sizetype D.11330;
  struct WapiImageSectionHeader * section_header;
  guint32 delta;

  section_header = get_enclosing_section_header (rva, ntheaders);
  if (section_header == 0B) goto <D.11323>; else goto <D.11324>;
  <D.11323>:
  D.11325 = 0B;
  return D.11325;
  <D.11324>:
  D.11326 = section_header->VirtualAddress;
  D.11327 = section_header->PointerToRawData;
  delta = D.11326 - D.11327;
  D.11328 = (sizetype) rva;
  D.11329 = (sizetype) delta;
  D.11330 = D.11328 - D.11329;
  D.11325 = file_map + D.11330;
  return D.11325;
}


get_enclosing_section_header (guint32 rva, struct WapiImageNTHeaders32 * nt_headers)
{
  short unsigned int D.11332;
  long unsigned int D.11333;
  long unsigned int nt_headers.13;
  long unsigned int D.11335;
  long unsigned int D.11336;
  unsigned int D.11339;
  unsigned int D.11342;
  struct WapiImageSectionHeader * D.11345;
  short unsigned int D.11346;
  unsigned int D.11347;
  struct WapiImageSectionHeader * section;
  guint32 i;

  D.11332 = nt_headers->FileHeader.SizeOfOptionalHeader;
  D.11333 = (long unsigned int) D.11332;
  nt_headers.13 = (long unsigned int) nt_headers;
  D.11335 = D.11333 + nt_headers.13;
  D.11336 = D.11335 + 24;
  section = (struct WapiImageSectionHeader *) D.11336;
  i = 0;
  goto <D.10247>;
  <D.10246>:
  {
    guint32 size;

    size = section->Misc.VirtualSize;
    if (size == 0) goto <D.11337>; else goto <D.11338>;
    <D.11337>:
    size = section->SizeOfRawData;
    <D.11338>:
    D.11339 = section->VirtualAddress;
    if (D.11339 <= rva) goto <D.11340>; else goto <D.11341>;
    <D.11340>:
    D.11339 = section->VirtualAddress;
    D.11342 = D.11339 + size;
    if (D.11342 > rva) goto <D.11343>; else goto <D.11344>;
    <D.11343>:
    D.11345 = section;
    return D.11345;
    <D.11344>:
    <D.11341>:
  }
  i = i + 1;
  section = section + 40;
  <D.10247>:
  D.11346 = nt_headers->FileHeader.NumberOfSections;
  D.11347 = (unsigned int) D.11346;
  if (D.11347 > i) goto <D.10246>; else goto <D.10248>;
  <D.10248>:
  D.11345 = 0B;
  return D.11345;
}


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.11349;
  unsigned int D.11350;
  <unnamed-unsigned:1> D.11351;
  <unnamed-unsigned:1> D.11352;
  <unnamed-unsigned:31> D.11353;
  <unnamed-unsigned:31> D.11354;
  _Bool D.11359;
  _Bool D.11360;
  _Bool D.11361;
  void * D.11363;
  _Bool D.11373;
  _Bool D.11374;
  sizetype D.11379;
  short unsigned int D.11380;
  int D.11381;
  short unsigned int D.11382;
  int D.11383;
  int D.11384;
  long unsigned int D.11385;
  long unsigned int D.11386;
  int D.11387;
  sizetype D.11390;
  unsigned int D.11391;
  unsigned int D.11392;
  struct WapiImageResourceDirectoryEntry swapped_entry;
  gboolean is_string;
  gboolean is_dir;
  guint32 name_offset;
  guint32 dir_offset;
  guint32 data_offset;

  try
    {
      D.11349 = entry->D.9159.Name;
      swapped_entry.D.9159.Name = D.11349;
      D.11350 = entry->D.9167.OffsetToData;
      swapped_entry.D.9167.OffsetToData = D.11350;
      D.11351 = swapped_entry.D.9159.D.9156.NameIsString;
      is_string = (gboolean) D.11351;
      D.11352 = swapped_entry.D.9167.D.9166.DataIsDirectory;
      is_dir = (gboolean) D.11352;
      D.11353 = swapped_entry.D.9159.D.9156.NameOffset;
      name_offset = (guint32) D.11353;
      D.11354 = swapped_entry.D.9167.D.9166.OffsetToDirectory;
      dir_offset = (guint32) D.11354;
      data_offset = swapped_entry.D.9167.OffsetToData;
      if (level == 0) goto <D.11355>; else goto <D.11356>;
      <D.11355>:
      D.11359 = is_string == 0;
      D.11360 = name_offset != res_id;
      D.11361 = D.11359 & D.11360;
      if (D.11361 != 0) goto <D.11357>; else goto <D.11362>;
      <D.11362>:
      if (is_string == 1) goto <D.11357>; else goto <D.11358>;
      <D.11357>:
      D.11363 = 0B;
      return D.11363;
      <D.11358>:
      goto <D.11364>;
      <D.11356>:
      if (level == 1) goto <D.11365>; else goto <D.11366>;
      <D.11365>:
      goto <D.11367>;
      <D.11366>:
      if (level == 2) goto <D.11368>; else goto <D.11369>;
      <D.11368>:
      D.11359 = is_string == 0;
      D.11373 = name_offset != lang_id;
      D.11374 = D.11359 & D.11373;
      if (D.11374 != 0) goto <D.11375>; else goto <D.11370>;
      <D.11375>:
      if (lang_id != 0) goto <D.11371>; else goto <D.11370>;
      <D.11370>:
      if (is_string == 1) goto <D.11371>; else goto <D.11372>;
      <D.11371>:
      D.11363 = 0B;
      return D.11363;
      <D.11372>:
      goto <D.11376>;
      <D.11369>:
      monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "versioninfo.c", 121);
      <D.11376>:
      <D.11367>:
      <D.11364>:
      if (is_dir == 1) goto <D.11377>; else goto <D.11378>;
      <D.11377>:
      {
        struct WapiImageResourceDirectory * res_dir;
        struct WapiImageResourceDirectoryEntry * sub_entries;
        guint32 entries;
        guint32 i;

        D.11379 = (sizetype) dir_offset;
        res_dir = root + D.11379;
        sub_entries = res_dir + 16;
        D.11380 = res_dir->NumberOfNamedEntries;
        D.11381 = (int) D.11380;
        D.11382 = res_dir->NumberOfIdEntries;
        D.11383 = (int) D.11382;
        D.11384 = D.11381 + D.11383;
        entries = (guint32) D.11384;
        i = 0;
        goto <D.10279>;
        <D.10278>:
        {
          struct WapiImageResourceDirectoryEntry * sub_entry;
          void * ret;

          D.11385 = (long unsigned int) i;
          D.11386 = D.11385 * 8;
          sub_entry = sub_entries + D.11386;
          D.11387 = level + 1;
          ret = scan_resource_dir (root, nt_headers, file_map, sub_entry, D.11387, res_id, lang_id, size);
          if (ret != 0B) goto <D.11388>; else goto <D.11389>;
          <D.11388>:
          D.11363 = ret;
          return D.11363;
          <D.11389>:
        }
        i = i + 1;
        <D.10279>:
        if (i < entries) goto <D.10278>; else goto <D.10280>;
        <D.10280>:
        D.11363 = 0B;
        return D.11363;
      }
      <D.11378>:
      {
        struct WapiImageResourceDataEntry * data_entry;

        D.11390 = (sizetype) data_offset;
        data_entry = root + D.11390;
        D.11391 = data_entry->Size;
        *size = D.11391;
        D.11392 = data_entry->OffsetToData;
        D.11363 = get_ptr_from_rva (D.11392, nt_headers, file_map);
        return D.11363;
      }
    }
  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.11397;
  int map_size.14;
  unsigned int map_size.15;
  unsigned int size.16;
  unsigned int D.11403;
  long unsigned int D.11404;
  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.11395>; else goto <D.11396>;
      <D.11395>:
      D.11397 = 0;
      return D.11397;
      <D.11396>:
      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.11400>; else goto <D.11401>;
      <D.11400>:
      size.16 = size;
      D.11403 = MIN_EXPR <size.16, len>;
      D.11404 = (long unsigned int) D.11403;
      memcpy (data, versioninfo, D.11404);
      ret = 1;
      <D.11401>:
      map_handle.17 = map_handle;
      unmap_pe_file (file_map, map_handle.17);
      D.11397 = ret;
      return D.11397;
    }
  finally
    {
      map_handle = {CLOBBER};
      map_size = {CLOBBER};
      size = {CLOBBER};
    }
}


VerLanguageName (guint32 lang, gunichar2 * lang_out, guint32 lang_len)
{
  int lang.18;
  unsigned int D.11409;
  int D.11410;
  guint32 D.11526;
  int primary;
  int secondary;
  const char * name;

  name = 0B;
  lang.18 = (int) lang;
  primary = lang.18 & 1023;
  D.11409 = lang >> 10;
  D.11410 = (int) D.11409;
  secondary = D.11410 & 63;
  switch (primary) <default: <D.11013>, case 0: <D.10504>, case 1: <D.10508>, case 2: <D.10527>, case 3: <D.10531>, case 4: <D.10535>, case 5: <D.10543>, case 6: <D.10547>, case 7: <D.10551>, case 8: <D.10559>, case 9: <D.10563>, case 10: <D.10582>, case 11: <D.10606>, case 12: <D.10610>, case 13: <D.10619>, case 14: <D.10623>, case 15: <D.10627>, case 16: <D.10631>, case 17: <D.10636>, case 18: <D.10640>, case 19: <D.10644>, case 20: <D.10649>, case 21: <D.10654>, case 22: <D.10658>, case 23: <D.10663>, case 24: <D.10666>, case 25: <D.10670>, case 26: <D.10674>, case 27: <D.10685>, case 28: <D.10689>, case 29: <D.10693>, case 30: <D.10698>, case 31: <D.10702>, case 32: <D.10706>, case 33: <D.10710>, case 34: <D.10714>, case 35: <D.10718>, case 36: <D.10722>, case 37: <D.10726>, case 38: <D.10730>, case 39: <D.10734>, case 40: <D.10738>, case 41: <D.10741>, case 42: <D.10745>, case 43: <D.10749>, case 44: <D.10753>, case 45: <D.10758>, case 46: <D.10762>, case 47: <D.10766>, case 50: <D.10770>, case 52: <D.10774>, case 53: <D.10778>, case 54: <D.10782>, case 55: <D.10786>, case 56: <D.10790>, case 57: <D.10794>, case 58: <D.10798>, case 59: <D.10802>, case 60: <D.10814>, case 62: <D.10817>, case 63: <D.10822>, case 64: <D.10826>, case 65: <D.10830>, case 66: <D.10834>, case 67: <D.10837>, case 68: <D.10842>, case 69: <D.10846>, case 70: <D.10850>, case 71: <D.10854>, case 73: <D.10858>, case 74: <D.10862>, case 75: <D.10866>, case 76: <D.10870>, case 77: <D.10874>, case 78: <D.10877>, case 79: <D.10881>, case 80: <D.10885>, case 81: <D.10890>, case 82: <D.10894>, case 83: <D.10898>, case 84: <D.10901>, case 86: <D.10904>, case 87: <D.10908>, case 90: <D.10912>, case 91: <D.10916>, case 93: <D.10919>, case 94: <D.10923>, case 95: <D.10926>, case 97: <D.10929>, case 98: <D.10932>, case 99: <D.10935>, case 100: <D.10938>, case 101: <D.10941>, case 104: <D.10945>, case 106: <D.10948>, case 107: <D.10951>, case 108: <D.10957>, case 109: <D.10961>, case 110: <D.10964>, case 111: <D.10967>, case 120: <D.10970>, case 122: <D.10973>, case 124: <D.10976>, case 126: <D.10979>, case 127: <D.10982>, case 128: <D.10985>, case 129: <D.10988>, case 131: <D.10992>, case 132: <D.10995>, case 133: <D.10998>, case 134: <D.11001>, case 135: <D.11004>, case 136: <D.11007>, case 140: <D.11010>>
  <D.10504>:
  switch (secondary) <default: <D.11411>, case 1: <D.10505>>
  <D.10505>:
  name = "Process Default Language";
  goto <D.10506>;
  <D.11411>:
  <D.10506>:
  goto <D.10507>;
  <D.10508>:
  switch (secondary) <default: <D.11412>, case 0: <D.10509>, case 1: <D.10510>, case 2: <D.10512>, case 3: <D.10513>, case 4: <D.10514>, case 5: <D.10515>, case 6: <D.10516>, case 7: <D.10517>, case 8: <D.10518>, case 9: <D.10519>, case 10: <D.10520>, case 11: <D.10521>, case 12: <D.10522>, case 13: <D.10523>, case 14: <D.10524>, case 15: <D.10525>, case 16: <D.10526>>
  <D.10509>:
  <D.10510>:
  name = "Arabic (Saudi Arabia)";
  goto <D.10511>;
  <D.10512>:
  name = "Arabic (Iraq)";
  goto <D.10511>;
  <D.10513>:
  name = "Arabic (Egypt)";
  goto <D.10511>;
  <D.10514>:
  name = "Arabic (Libya)";
  goto <D.10511>;
  <D.10515>:
  name = "Arabic (Algeria)";
  goto <D.10511>;
  <D.10516>:
  name = "Arabic (Morocco)";
  goto <D.10511>;
  <D.10517>:
  name = "Arabic (Tunisia)";
  goto <D.10511>;
  <D.10518>:
  name = "Arabic (Oman)";
  goto <D.10511>;
  <D.10519>:
  name = "Arabic (Yemen)";
  goto <D.10511>;
  <D.10520>:
  name = "Arabic (Syria)";
  goto <D.10511>;
  <D.10521>:
  name = "Arabic (Jordan)";
  goto <D.10511>;
  <D.10522>:
  name = "Arabic (Lebanon)";
  goto <D.10511>;
  <D.10523>:
  name = "Arabic (Kuwait)";
  goto <D.10511>;
  <D.10524>:
  name = "Arabic (U.A.E.)";
  goto <D.10511>;
  <D.10525>:
  name = "Arabic (Bahrain)";
  goto <D.10511>;
  <D.10526>:
  name = "Arabic (Qatar)";
  goto <D.10511>;
  <D.11412>:
  <D.10511>:
  goto <D.10507>;
  <D.10527>:
  switch (secondary) <default: <D.11413>, case 0: <D.10528>, case 1: <D.10530>>
  <D.10528>:
  name = "Bulgarian (Bulgaria)";
  goto <D.10529>;
  <D.10530>:
  name = "Bulgarian";
  goto <D.10529>;
  <D.11413>:
  <D.10529>:
  goto <D.10507>;
  <D.10531>:
  switch (secondary) <default: <D.11414>, case 0: <D.10532>, case 1: <D.10534>>
  <D.10532>:
  name = "Catalan (Spain)";
  goto <D.10533>;
  <D.10534>:
  name = "Catalan";
  goto <D.10533>;
  <D.11414>:
  <D.10533>:
  goto <D.10507>;
  <D.10535>:
  switch (secondary) <default: <D.11415>, case 0: <D.10536>, case 1: <D.10537>, case 2: <D.10539>, case 3: <D.10540>, case 4: <D.10541>, case 5: <D.10542>>
  <D.10536>:
  <D.10537>:
  name = "Chinese (Taiwan)";
  goto <D.10538>;
  <D.10539>:
  name = "Chinese (PRC)";
  goto <D.10538>;
  <D.10540>:
  name = "Chinese (Hong Kong S.A.R.)";
  goto <D.10538>;
  <D.10541>:
  name = "Chinese (Singapore)";
  goto <D.10538>;
  <D.10542>:
  name = "Chinese (Macau S.A.R.)";
  goto <D.10538>;
  <D.11415>:
  <D.10538>:
  goto <D.10507>;
  <D.10543>:
  switch (secondary) <default: <D.11416>, case 0: <D.10544>, case 1: <D.10546>>
  <D.10544>:
  name = "Czech (Czech Republic)";
  goto <D.10545>;
  <D.10546>:
  name = "Czech";
  goto <D.10545>;
  <D.11416>:
  <D.10545>:
  goto <D.10507>;
  <D.10547>:
  switch (secondary) <default: <D.11417>, case 0: <D.10548>, case 1: <D.10550>>
  <D.10548>:
  name = "Danish (Denmark)";
  goto <D.10549>;
  <D.10550>:
  name = "Danish";
  goto <D.10549>;
  <D.11417>:
  <D.10549>:
  goto <D.10507>;
  <D.10551>:
  switch (secondary) <default: <D.11418>, case 0: <D.10552>, case 1: <D.10553>, case 2: <D.10555>, case 3: <D.10556>, case 4: <D.10557>, case 5: <D.10558>>
  <D.10552>:
  <D.10553>:
  name = "German (Germany)";
  goto <D.10554>;
  <D.10555>:
  name = "German (Switzerland)";
  goto <D.10554>;
  <D.10556>:
  name = "German (Austria)";
  goto <D.10554>;
  <D.10557>:
  name = "German (Luxembourg)";
  goto <D.10554>;
  <D.10558>:
  name = "German (Liechtenstein)";
  goto <D.10554>;
  <D.11418>:
  <D.10554>:
  goto <D.10507>;
  <D.10559>:
  switch (secondary) <default: <D.11419>, case 0: <D.10560>, case 1: <D.10562>>
  <D.10560>:
  name = "Greek (Greece)";
  goto <D.10561>;
  <D.10562>:
  name = "Greek";
  goto <D.10561>;
  <D.11419>:
  <D.10561>:
  goto <D.10507>;
  <D.10563>:
  switch (secondary) <default: <D.11420>, case 0: <D.10564>, case 1: <D.10565>, case 2: <D.10567>, case 3: <D.10568>, case 4: <D.10569>, case 5: <D.10570>, case 6: <D.10571>, case 7: <D.10572>, case 8: <D.10573>, case 9: <D.10574>, case 10: <D.10575>, case 11: <D.10576>, case 12: <D.10577>, case 13: <D.10578>, case 16: <D.10579>, case 17: <D.10580>, case 18: <D.10581>>
  <D.10564>:
  <D.10565>:
  name = "English (United States)";
  goto <D.10566>;
  <D.10567>:
  name = "English (United Kingdom)";
  goto <D.10566>;
  <D.10568>:
  name = "English (Australia)";
  goto <D.10566>;
  <D.10569>:
  name = "English (Canada)";
  goto <D.10566>;
  <D.10570>:
  name = "English (New Zealand)";
  goto <D.10566>;
  <D.10571>:
  name = "English (Ireland)";
  goto <D.10566>;
  <D.10572>:
  name = "English (South Africa)";
  goto <D.10566>;
  <D.10573>:
  name = "English (Jamaica)";
  goto <D.10566>;
  <D.10574>:
  name = "English (Caribbean)";
  goto <D.10566>;
  <D.10575>:
  name = "English (Belize)";
  goto <D.10566>;
  <D.10576>:
  name = "English (Trinidad and Tobago)";
  goto <D.10566>;
  <D.10577>:
  name = "English (Zimbabwe)";
  goto <D.10566>;
  <D.10578>:
  name = "English (Philippines)";
  goto <D.10566>;
  <D.10579>:
  name = "English (India)";
  goto <D.10566>;
  <D.10580>:
  name = "English (Malaysia)";
  goto <D.10566>;
  <D.10581>:
  name = "English (Singapore)";
  goto <D.10566>;
  <D.11420>:
  <D.10566>:
  goto <D.10507>;
  <D.10582>:
  switch (secondary) <default: <D.11421>, case 0: <D.10583>, case 1: <D.10585>, case 2: <D.10586>, case 3: <D.10587>, case 4: <D.10588>, case 5: <D.10589>, case 6: <D.10590>, case 7: <D.10591>, case 8: <D.10592>, case 9: <D.10593>, case 10: <D.10594>, case 11: <D.10595>, case 12: <D.10596>, case 13: <D.10597>, case 14: <D.10598>, case 15: <D.10599>, case 16: <D.10600>, case 17: <D.10601>, case 18: <D.10602>, case 19: <D.10603>, case 20: <D.10604>, case 21: <D.10605>>
  <D.10583>:
  name = "Spanish (Spain)";
  goto <D.10584>;
  <D.10585>:
  name = "Spanish (Traditional Sort)";
  goto <D.10584>;
  <D.10586>:
  name = "Spanish (Mexico)";
  goto <D.10584>;
  <D.10587>:
  name = "Spanish (International Sort)";
  goto <D.10584>;
  <D.10588>:
  name = "Spanish (Guatemala)";
  goto <D.10584>;
  <D.10589>:
  name = "Spanish (Costa Rica)";
  goto <D.10584>;
  <D.10590>:
  name = "Spanish (Panama)";
  goto <D.10584>;
  <D.10591>:
  name = "Spanish (Dominican Republic)";
  goto <D.10584>;
  <D.10592>:
  name = "Spanish (Venezuela)";
  goto <D.10584>;
  <D.10593>:
  name = "Spanish (Colombia)";
  goto <D.10584>;
  <D.10594>:
  name = "Spanish (Peru)";
  goto <D.10584>;
  <D.10595>:
  name = "Spanish (Argentina)";
  goto <D.10584>;
  <D.10596>:
  name = "Spanish (Ecuador)";
  goto <D.10584>;
  <D.10597>:
  name = "Spanish (Chile)";
  goto <D.10584>;
  <D.10598>:
  name = "Spanish (Uruguay)";
  goto <D.10584>;
  <D.10599>:
  name = "Spanish (Paraguay)";
  goto <D.10584>;
  <D.10600>:
  name = "Spanish (Bolivia)";
  goto <D.10584>;
  <D.10601>:
  name = "Spanish (El Salvador)";
  goto <D.10584>;
  <D.10602>:
  name = "Spanish (Honduras)";
  goto <D.10584>;
  <D.10603>:
  name = "Spanish (Nicaragua)";
  goto <D.10584>;
  <D.10604>:
  name = "Spanish (Puerto Rico)";
  goto <D.10584>;
  <D.10605>:
  name = "Spanish (United States)";
  goto <D.10584>;
  <D.11421>:
  <D.10584>:
  goto <D.10507>;
  <D.10606>:
  switch (secondary) <default: <D.11422>, case 0: <D.10607>, case 1: <D.10609>>
  <D.10607>:
  name = "Finnish (Finland)";
  goto <D.10608>;
  <D.10609>:
  name = "Finnish";
  goto <D.10608>;
  <D.11422>:
  <D.10608>:
  goto <D.10507>;
  <D.10610>:
  switch (secondary) <default: <D.11423>, case 0: <D.10611>, case 1: <D.10612>, case 2: <D.10614>, case 3: <D.10615>, case 4: <D.10616>, case 5: <D.10617>, case 6: <D.10618>>
  <D.10611>:
  <D.10612>:
  name = "French (France)";
  goto <D.10613>;
  <D.10614>:
  name = "French (Belgium)";
  goto <D.10613>;
  <D.10615>:
  name = "French (Canada)";
  goto <D.10613>;
  <D.10616>:
  name = "French (Switzerland)";
  goto <D.10613>;
  <D.10617>:
  name = "French (Luxembourg)";
  goto <D.10613>;
  <D.10618>:
  name = "French (Monaco)";
  goto <D.10613>;
  <D.11423>:
  <D.10613>:
  goto <D.10507>;
  <D.10619>:
  switch (secondary) <default: <D.11424>, case 0: <D.10620>, case 1: <D.10622>>
  <D.10620>:
  name = "Hebrew (Israel)";
  goto <D.10621>;
  <D.10622>:
  name = "Hebrew";
  goto <D.10621>;
  <D.11424>:
  <D.10621>:
  goto <D.10507>;
  <D.10623>:
  switch (secondary) <default: <D.11425>, case 0: <D.10624>, case 1: <D.10626>>
  <D.10624>:
  name = "Hungarian (Hungary)";
  goto <D.10625>;
  <D.10626>:
  name = "Hungarian";
  goto <D.10625>;
  <D.11425>:
  <D.10625>:
  goto <D.10507>;
  <D.10627>:
  switch (secondary) <default: <D.11426>, case 0: <D.10628>, case 1: <D.10630>>
  <D.10628>:
  name = "Icelandic (Iceland)";
  goto <D.10629>;
  <D.10630>:
  name = "Icelandic";
  goto <D.10629>;
  <D.11426>:
  <D.10629>:
  goto <D.10507>;
  <D.10631>:
  switch (secondary) <default: <D.11427>, case 0: <D.10632>, case 1: <D.10633>, case 2: <D.10635>>
  <D.10632>:
  <D.10633>:
  name = "Italian (Italy)";
  goto <D.10634>;
  <D.10635>:
  name = "Italian (Switzerland)";
  goto <D.10634>;
  <D.11427>:
  <D.10634>:
  goto <D.10507>;
  <D.10636>:
  switch (secondary) <default: <D.11428>, case 0: <D.10637>, case 1: <D.10639>>
  <D.10637>:
  name = "Japanese (Japan)";
  goto <D.10638>;
  <D.10639>:
  name = "Japanese";
  goto <D.10638>;
  <D.11428>:
  <D.10638>:
  goto <D.10507>;
  <D.10640>:
  switch (secondary) <default: <D.11429>, case 0: <D.10641>, case 1: <D.10643>>
  <D.10641>:
  name = "Korean (Korea)";
  goto <D.10642>;
  <D.10643>:
  name = "Korean";
  goto <D.10642>;
  <D.11429>:
  <D.10642>:
  goto <D.10507>;
  <D.10644>:
  switch (secondary) <default: <D.11430>, case 0: <D.10645>, case 1: <D.10646>, case 2: <D.10648>>
  <D.10645>:
  <D.10646>:
  name = "Dutch (Netherlands)";
  goto <D.10647>;
  <D.10648>:
  name = "Dutch (Belgium)";
  goto <D.10647>;
  <D.11430>:
  <D.10647>:
  goto <D.10507>;
  <D.10649>:
  switch (secondary) <default: <D.11431>, case 0: <D.10650>, case 1: <D.10651>, case 2: <D.10653>>
  <D.10650>:
  <D.10651>:
  name = "Norwegian (Bokmal)";
  goto <D.10652>;
  <D.10653>:
  name = "Norwegian (Nynorsk)";
  goto <D.10652>;
  <D.11431>:
  <D.10652>:
  goto <D.10507>;
  <D.10654>:
  switch (secondary) <default: <D.11432>, case 0: <D.10655>, case 1: <D.10657>>
  <D.10655>:
  name = "Polish (Poland)";
  goto <D.10656>;
  <D.10657>:
  name = "Polish";
  goto <D.10656>;
  <D.11432>:
  <D.10656>:
  goto <D.10507>;
  <D.10658>:
  switch (secondary) <default: <D.11433>, case 0: <D.10659>, case 1: <D.10660>, case 2: <D.10662>>
  <D.10659>:
  <D.10660>:
  name = "Portuguese (Brazil)";
  goto <D.10661>;
  <D.10662>:
  name = "Portuguese (Portugal)";
  goto <D.10661>;
  <D.11433>:
  <D.10661>:
  goto <D.10507>;
  <D.10663>:
  switch (secondary) <default: <D.11434>, case 1: <D.10664>>
  <D.10664>:
  name = "Romansh (Switzerland)";
  goto <D.10665>;
  <D.11434>:
  <D.10665>:
  goto <D.10507>;
  <D.10666>:
  switch (secondary) <default: <D.11435>, case 0: <D.10667>, case 1: <D.10669>>
  <D.10667>:
  name = "Romanian (Romania)";
  goto <D.10668>;
  <D.10669>:
  name = "Romanian";
  goto <D.10668>;
  <D.11435>:
  <D.10668>:
  goto <D.10507>;
  <D.10670>:
  switch (secondary) <default: <D.11436>, case 0: <D.10671>, case 1: <D.10673>>
  <D.10671>:
  name = "Russian (Russia)";
  goto <D.10672>;
  <D.10673>:
  name = "Russian";
  goto <D.10672>;
  <D.11436>:
  <D.10672>:
  goto <D.10507>;
  <D.10674>:
  switch (secondary) <default: <D.11437>, case 0: <D.10675>, case 1: <D.10677>, case 2: <D.10678>, case 3: <D.10679>, case 4: <D.10680>, case 5: <D.10681>, case 6: <D.10682>, case 7: <D.10683>, case 8: <D.10684>>
  <D.10675>:
  name = "Croatian (Croatia)";
  goto <D.10676>;
  <D.10677>:
  name = "Croatian";
  goto <D.10676>;
  <D.10678>:
  name = "Serbian (Latin)";
  goto <D.10676>;
  <D.10679>:
  name = "Serbian (Cyrillic)";
  goto <D.10676>;
  <D.10680>:
  name = "Croatian (Bosnia and Herzegovina)";
  goto <D.10676>;
  <D.10681>:
  name = "Bosnian (Latin, Bosnia and Herzegovina)";
  goto <D.10676>;
  <D.10682>:
  name = "Serbian (Latin, Bosnia and Herzegovina)";
  goto <D.10676>;
  <D.10683>:
  name = "Serbian (Cyrillic, Bosnia and Herzegovina)";
  goto <D.10676>;
  <D.10684>:
  name = "Bosnian (Cyrillic, Bosnia and Herzegovina)";
  goto <D.10676>;
  <D.11437>:
  <D.10676>:
  goto <D.10507>;
  <D.10685>:
  switch (secondary) <default: <D.11438>, case 0: <D.10686>, case 1: <D.10688>>
  <D.10686>:
  name = "Slovak (Slovakia)";
  goto <D.10687>;
  <D.10688>:
  name = "Slovak";
  goto <D.10687>;
  <D.11438>:
  <D.10687>:
  goto <D.10507>;
  <D.10689>:
  switch (secondary) <default: <D.11439>, case 0: <D.10690>, case 1: <D.10692>>
  <D.10690>:
  name = "Albanian (Albania)";
  goto <D.10691>;
  <D.10692>:
  name = "Albanian";
  goto <D.10691>;
  <D.11439>:
  <D.10691>:
  goto <D.10507>;
  <D.10693>:
  switch (secondary) <default: <D.11440>, case 0: <D.10694>, case 1: <D.10696>, case 2: <D.10697>>
  <D.10694>:
  name = "Swedish (Sweden)";
  goto <D.10695>;
  <D.10696>:
  name = "Swedish";
  goto <D.10695>;
  <D.10697>:
  name = "Swedish (Finland)";
  goto <D.10695>;
  <D.11440>:
  <D.10695>:
  goto <D.10507>;
  <D.10698>:
  switch (secondary) <default: <D.11441>, case 0: <D.10699>, case 1: <D.10701>>
  <D.10699>:
  name = "Thai (Thailand)";
  goto <D.10700>;
  <D.10701>:
  name = "Thai";
  goto <D.10700>;
  <D.11441>:
  <D.10700>:
  goto <D.10507>;
  <D.10702>:
  switch (secondary) <default: <D.11442>, case 0: <D.10703>, case 1: <D.10705>>
  <D.10703>:
  name = "Turkish (Turkey)";
  goto <D.10704>;
  <D.10705>:
  name = "Turkish";
  goto <D.10704>;
  <D.11442>:
  <D.10704>:
  goto <D.10507>;
  <D.10706>:
  switch (secondary) <default: <D.11443>, case 0: <D.10707>, case 1: <D.10709>>
  <D.10707>:
  name = "Urdu (Islamic Republic of Pakistan)";
  goto <D.10708>;
  <D.10709>:
  name = "Urdu";
  goto <D.10708>;
  <D.11443>:
  <D.10708>:
  goto <D.10507>;
  <D.10710>:
  switch (secondary) <default: <D.11444>, case 0: <D.10711>, case 1: <D.10713>>
  <D.10711>:
  name = "Indonesian (Indonesia)";
  goto <D.10712>;
  <D.10713>:
  name = "Indonesian";
  goto <D.10712>;
  <D.11444>:
  <D.10712>:
  goto <D.10507>;
  <D.10714>:
  switch (secondary) <default: <D.11445>, case 0: <D.10715>, case 1: <D.10717>>
  <D.10715>:
  name = "Ukrainian (Ukraine)";
  goto <D.10716>;
  <D.10717>:
  name = "Ukrainian";
  goto <D.10716>;
  <D.11445>:
  <D.10716>:
  goto <D.10507>;
  <D.10718>:
  switch (secondary) <default: <D.11446>, case 0: <D.10719>, case 1: <D.10721>>
  <D.10719>:
  name = "Belarusian (Belarus)";
  goto <D.10720>;
  <D.10721>:
  name = "Belarusian";
  goto <D.10720>;
  <D.11446>:
  <D.10720>:
  goto <D.10507>;
  <D.10722>:
  switch (secondary) <default: <D.11447>, case 0: <D.10723>, case 1: <D.10725>>
  <D.10723>:
  name = "Slovenian (Slovenia)";
  goto <D.10724>;
  <D.10725>:
  name = "Slovenian";
  goto <D.10724>;
  <D.11447>:
  <D.10724>:
  goto <D.10507>;
  <D.10726>:
  switch (secondary) <default: <D.11448>, case 0: <D.10727>, case 1: <D.10729>>
  <D.10727>:
  name = "Estonian (Estonia)";
  goto <D.10728>;
  <D.10729>:
  name = "Estonian";
  goto <D.10728>;
  <D.11448>:
  <D.10728>:
  goto <D.10507>;
  <D.10730>:
  switch (secondary) <default: <D.11449>, case 0: <D.10731>, case 1: <D.10733>>
  <D.10731>:
  name = "Latvian (Latvia)";
  goto <D.10732>;
  <D.10733>:
  name = "Latvian";
  goto <D.10732>;
  <D.11449>:
  <D.10732>:
  goto <D.10507>;
  <D.10734>:
  switch (secondary) <default: <D.11450>, case 0: <D.10735>, case 1: <D.10737>>
  <D.10735>:
  name = "Lithuanian (Lithuania)";
  goto <D.10736>;
  <D.10737>:
  name = "Lithuanian";
  goto <D.10736>;
  <D.11450>:
  <D.10736>:
  goto <D.10507>;
  <D.10738>:
  switch (secondary) <default: <D.11451>, case 1: <D.10739>>
  <D.10739>:
  name = "Tajik (Tajikistan)";
  goto <D.10740>;
  <D.11451>:
  <D.10740>:
  goto <D.10507>;
  <D.10741>:
  switch (secondary) <default: <D.11452>, case 0: <D.10742>, case 1: <D.10744>>
  <D.10742>:
  name = "Farsi (Iran)";
  goto <D.10743>;
  <D.10744>:
  name = "Farsi";
  goto <D.10743>;
  <D.11452>:
  <D.10743>:
  goto <D.10507>;
  <D.10745>:
  switch (secondary) <default: <D.11453>, case 0: <D.10746>, case 1: <D.10748>>
  <D.10746>:
  name = "Vietnamese (Viet Nam)";
  goto <D.10747>;
  <D.10748>:
  name = "Vietnamese";
  goto <D.10747>;
  <D.11453>:
  <D.10747>:
  goto <D.10507>;
  <D.10749>:
  switch (secondary) <default: <D.11454>, case 0: <D.10750>, case 1: <D.10752>>
  <D.10750>:
  name = "Armenian (Armenia)";
  goto <D.10751>;
  <D.10752>:
  name = "Armenian";
  goto <D.10751>;
  <D.11454>:
  <D.10751>:
  goto <D.10507>;
  <D.10753>:
  switch (secondary) <default: <D.11455>, case 0: <D.10754>, case 1: <D.10756>, case 2: <D.10757>>
  <D.10754>:
  name = "Azeri (Latin) (Azerbaijan)";
  goto <D.10755>;
  <D.10756>:
  name = "Azeri (Latin)";
  goto <D.10755>;
  <D.10757>:
  name = "Azeri (Cyrillic)";
  goto <D.10755>;
  <D.11455>:
  <D.10755>:
  goto <D.10507>;
  <D.10758>:
  switch (secondary) <default: <D.11456>, case 0: <D.10759>, case 1: <D.10761>>
  <D.10759>:
  name = "Basque (Spain)";
  goto <D.10760>;
  <D.10761>:
  name = "Basque";
  goto <D.10760>;
  <D.11456>:
  <D.10760>:
  goto <D.10507>;
  <D.10762>:
  switch (secondary) <default: <D.11457>, case 1: <D.10763>, case 2: <D.10765>>
  <D.10763>:
  name = "Upper Sorbian (Germany)";
  goto <D.10764>;
  <D.10765>:
  name = "Lower Sorbian (Germany)";
  goto <D.10764>;
  <D.11457>:
  <D.10764>:
  goto <D.10507>;
  <D.10766>:
  switch (secondary) <default: <D.11458>, case 0: <D.10767>, case 1: <D.10769>>
  <D.10767>:
  name = "FYRO Macedonian (Former Yugoslav Republic of Macedonia)";
  goto <D.10768>;
  <D.10769>:
  name = "FYRO Macedonian";
  goto <D.10768>;
  <D.11458>:
  <D.10768>:
  goto <D.10507>;
  <D.10770>:
  switch (secondary) <default: <D.11459>, case 0: <D.10771>, case 1: <D.10773>>
  <D.10771>:
  name = "Tswana (South Africa)";
  goto <D.10772>;
  <D.10773>:
  name = "Tswana";
  goto <D.10772>;
  <D.11459>:
  <D.10772>:
  goto <D.10507>;
  <D.10774>:
  switch (secondary) <default: <D.11460>, case 0: <D.10775>, case 1: <D.10777>>
  <D.10775>:
  name = "Xhosa (South Africa)";
  goto <D.10776>;
  <D.10777>:
  name = "Xhosa";
  goto <D.10776>;
  <D.11460>:
  <D.10776>:
  goto <D.10507>;
  <D.10778>:
  switch (secondary) <default: <D.11461>, case 0: <D.10779>, case 1: <D.10781>>
  <D.10779>:
  name = "Zulu (South Africa)";
  goto <D.10780>;
  <D.10781>:
  name = "Zulu";
  goto <D.10780>;
  <D.11461>:
  <D.10780>:
  goto <D.10507>;
  <D.10782>:
  switch (secondary) <default: <D.11462>, case 0: <D.10783>, case 1: <D.10785>>
  <D.10783>:
  name = "Afrikaans (South Africa)";
  goto <D.10784>;
  <D.10785>:
  name = "Afrikaans";
  goto <D.10784>;
  <D.11462>:
  <D.10784>:
  goto <D.10507>;
  <D.10786>:
  switch (secondary) <default: <D.11463>, case 0: <D.10787>, case 1: <D.10789>>
  <D.10787>:
  name = "Georgian (Georgia)";
  goto <D.10788>;
  <D.10789>:
  name = "Georgian";
  goto <D.10788>;
  <D.11463>:
  <D.10788>:
  goto <D.10507>;
  <D.10790>:
  switch (secondary) <default: <D.11464>, case 0: <D.10791>, case 1: <D.10793>>
  <D.10791>:
  name = "Faroese (Faroe Islands)";
  goto <D.10792>;
  <D.10793>:
  name = "Faroese";
  goto <D.10792>;
  <D.11464>:
  <D.10792>:
  goto <D.10507>;
  <D.10794>:
  switch (secondary) <default: <D.11465>, case 0: <D.10795>, case 1: <D.10797>>
  <D.10795>:
  name = "Hindi (India)";
  goto <D.10796>;
  <D.10797>:
  name = "Hindi";
  goto <D.10796>;
  <D.11465>:
  <D.10796>:
  goto <D.10507>;
  <D.10798>:
  switch (secondary) <default: <D.11466>, case 0: <D.10799>, case 1: <D.10801>>
  <D.10799>:
  name = "Maltese (Malta)";
  goto <D.10800>;
  <D.10801>:
  name = "Maltese";
  goto <D.10800>;
  <D.11466>:
  <D.10800>:
  goto <D.10507>;
  <D.10802>:
  switch (secondary) <default: <D.11467>, case 0: <D.10803>, case 1: <D.10805>, case 2: <D.10806>, case 3: <D.10807>, case 4: <D.10808>, case 5: <D.10809>, case 6: <D.10810>, case 7: <D.10811>, case 8: <D.10812>, case 9: <D.10813>>
  <D.10803>:
  name = "Sami (Northern) (Norway)";
  goto <D.10804>;
  <D.10805>:
  name = "Sami, Northern (Norway)";
  goto <D.10804>;
  <D.10806>:
  name = "Sami, Northern (Sweden)";
  goto <D.10804>;
  <D.10807>:
  name = "Sami, Northern (Finland)";
  goto <D.10804>;
  <D.10808>:
  name = "Sami, Lule (Norway)";
  goto <D.10804>;
  <D.10809>:
  name = "Sami, Lule (Sweden)";
  goto <D.10804>;
  <D.10810>:
  name = "Sami, Southern (Norway)";
  goto <D.10804>;
  <D.10811>:
  name = "Sami, Southern (Sweden)";
  goto <D.10804>;
  <D.10812>:
  name = "Sami, Skolt (Finland)";
  goto <D.10804>;
  <D.10813>:
  name = "Sami, Inari (Finland)";
  goto <D.10804>;
  <D.11467>:
  <D.10804>:
  goto <D.10507>;
  <D.10814>:
  switch (secondary) <default: <D.11468>, case 2: <D.10815>>
  <D.10815>:
  name = "Irish (Ireland)";
  goto <D.10816>;
  <D.11468>:
  <D.10816>:
  goto <D.10507>;
  <D.10817>:
  switch (secondary) <default: <D.11469>, case 0: <D.10818>, case 1: <D.10819>, case 2: <D.10821>>
  <D.10818>:
  <D.10819>:
  name = "Malay (Malaysia)";
  goto <D.10820>;
  <D.10821>:
  name = "Malay (Brunei Darussalam)";
  goto <D.10820>;
  <D.11469>:
  <D.10820>:
  goto <D.10507>;
  <D.10822>:
  switch (secondary) <default: <D.11470>, case 0: <D.10823>, case 1: <D.10825>>
  <D.10823>:
  name = "Kazakh (Kazakhstan)";
  goto <D.10824>;
  <D.10825>:
  name = "Kazakh";
  goto <D.10824>;
  <D.11470>:
  <D.10824>:
  goto <D.10507>;
  <D.10826>:
  switch (secondary) <default: <D.11471>, case 0: <D.10827>, case 1: <D.10829>>
  <D.10827>:
  name = "Kyrgyz (Kyrgyzstan)";
  goto <D.10828>;
  <D.10829>:
  name = "Kyrgyz (Cyrillic)";
  goto <D.10828>;
  <D.11471>:
  <D.10828>:
  goto <D.10507>;
  <D.10830>:
  switch (secondary) <default: <D.11472>, case 0: <D.10831>, case 1: <D.10833>>
  <D.10831>:
  name = "Swahili (Kenya)";
  goto <D.10832>;
  <D.10833>:
  name = "Swahili";
  goto <D.10832>;
  <D.11472>:
  <D.10832>:
  goto <D.10507>;
  <D.10834>:
  switch (secondary) <default: <D.11473>, case 1: <D.10835>>
  <D.10835>:
  name = "Turkmen (Turkmenistan)";
  goto <D.10836>;
  <D.11473>:
  <D.10836>:
  goto <D.10507>;
  <D.10837>:
  switch (secondary) <default: <D.11474>, case 0: <D.10838>, case 1: <D.10840>, case 2: <D.10841>>
  <D.10838>:
  name = "Uzbek (Latin) (Uzbekistan)";
  goto <D.10839>;
  <D.10840>:
  name = "Uzbek (Latin)";
  goto <D.10839>;
  <D.10841>:
  name = "Uzbek (Cyrillic)";
  goto <D.10839>;
  <D.11474>:
  <D.10839>:
  goto <D.10507>;
  <D.10842>:
  switch (secondary) <default: <D.11475>, case 0: <D.10843>, case 1: <D.10845>>
  <D.10843>:
  name = "Tatar (Russia)";
  goto <D.10844>;
  <D.10845>:
  name = "Tatar";
  goto <D.10844>;
  <D.11475>:
  <D.10844>:
  goto <D.10507>;
  <D.10846>:
  switch (secondary) <default: <D.11476>, case 0: <D.10847>, case 1: <D.10848>>
  <D.10847>:
  <D.10848>:
  name = "Bengali (India)";
  goto <D.10849>;
  <D.11476>:
  <D.10849>:
  goto <D.10507>;
  <D.10850>:
  switch (secondary) <default: <D.11477>, case 0: <D.10851>, case 1: <D.10853>>
  <D.10851>:
  name = "Punjabi (India)";
  goto <D.10852>;
  <D.10853>:
  name = "Punjabi";
  goto <D.10852>;
  <D.11477>:
  <D.10852>:
  goto <D.10507>;
  <D.10854>:
  switch (secondary) <default: <D.11478>, case 0: <D.10855>, case 1: <D.10857>>
  <D.10855>:
  name = "Gujarati (India)";
  goto <D.10856>;
  <D.10857>:
  name = "Gujarati";
  goto <D.10856>;
  <D.11478>:
  <D.10856>:
  goto <D.10507>;
  <D.10858>:
  switch (secondary) <default: <D.11479>, case 0: <D.10859>, case 1: <D.10861>>
  <D.10859>:
  name = "Tamil (India)";
  goto <D.10860>;
  <D.10861>:
  name = "Tamil";
  goto <D.10860>;
  <D.11479>:
  <D.10860>:
  goto <D.10507>;
  <D.10862>:
  switch (secondary) <default: <D.11480>, case 0: <D.10863>, case 1: <D.10865>>
  <D.10863>:
  name = "Telugu (India)";
  goto <D.10864>;
  <D.10865>:
  name = "Telugu";
  goto <D.10864>;
  <D.11480>:
  <D.10864>:
  goto <D.10507>;
  <D.10866>:
  switch (secondary) <default: <D.11481>, case 0: <D.10867>, case 1: <D.10869>>
  <D.10867>:
  name = "Kannada (India)";
  goto <D.10868>;
  <D.10869>:
  name = "Kannada";
  goto <D.10868>;
  <D.11481>:
  <D.10868>:
  goto <D.10507>;
  <D.10870>:
  switch (secondary) <default: <D.11482>, case 0: <D.10871>, case 1: <D.10872>>
  <D.10871>:
  <D.10872>:
  name = "Malayalam (India)";
  goto <D.10873>;
  <D.11482>:
  <D.10873>:
  goto <D.10507>;
  <D.10874>:
  switch (secondary) <default: <D.11483>, case 1: <D.10875>>
  <D.10875>:
  name = "Assamese (India)";
  goto <D.10876>;
  <D.11483>:
  <D.10876>:
  goto <D.10507>;
  <D.10877>:
  switch (secondary) <default: <D.11484>, case 0: <D.10878>, case 1: <D.10880>>
  <D.10878>:
  name = "Marathi (India)";
  goto <D.10879>;
  <D.10880>:
  name = "Marathi";
  goto <D.10879>;
  <D.11484>:
  <D.10879>:
  goto <D.10507>;
  <D.10881>:
  switch (secondary) <default: <D.11485>, case 0: <D.10882>, case 1: <D.10884>>
  <D.10882>:
  name = "Sanskrit (India)";
  goto <D.10883>;
  <D.10884>:
  name = "Sanskrit";
  goto <D.10883>;
  <D.11485>:
  <D.10883>:
  goto <D.10507>;
  <D.10885>:
  switch (secondary) <default: <D.11486>, case 0: <D.10886>, case 1: <D.10888>, case 2: <D.10889>>
  <D.10886>:
  name = "Mongolian (Mongolia)";
  goto <D.10887>;
  <D.10888>:
  name = "Mongolian (Cyrillic)";
  goto <D.10887>;
  <D.10889>:
  name = "Mongolian (PRC)";
  goto <D.10887>;
  <D.11486>:
  <D.10887>:
  goto <D.10507>;
  <D.10890>:
  switch (secondary) <default: <D.11487>, case 1: <D.10891>, case 2: <D.10893>>
  <D.10891>:
  name = "Tibetan (PRC)";
  goto <D.10892>;
  <D.10893>:
  name = "Tibetan (Bhutan)";
  goto <D.10892>;
  <D.11487>:
  <D.10892>:
  goto <D.10507>;
  <D.10894>:
  switch (secondary) <default: <D.11488>, case 0: <D.10895>, case 1: <D.10897>>
  <D.10895>:
  name = "Welsh (United Kingdom)";
  goto <D.10896>;
  <D.10897>:
  name = "Welsh";
  goto <D.10896>;
  <D.11488>:
  <D.10896>:
  goto <D.10507>;
  <D.10898>:
  switch (secondary) <default: <D.11489>, case 1: <D.10899>>
  <D.10899>:
  name = "Khmer (Cambodia)";
  goto <D.10900>;
  <D.11489>:
  <D.10900>:
  goto <D.10507>;
  <D.10901>:
  switch (secondary) <default: <D.11490>, case 1: <D.10902>>
  <D.10902>:
  name = "Lao (Lao PDR)";
  goto <D.10903>;
  <D.11490>:
  <D.10903>:
  goto <D.10507>;
  <D.10904>:
  switch (secondary) <default: <D.11491>, case 0: <D.10905>, case 1: <D.10907>>
  <D.10905>:
  name = "Galician (Spain)";
  goto <D.10906>;
  <D.10907>:
  name = "Galician";
  goto <D.10906>;
  <D.11491>:
  <D.10906>:
  goto <D.10507>;
  <D.10908>:
  switch (secondary) <default: <D.11492>, case 0: <D.10909>, case 1: <D.10911>>
  <D.10909>:
  name = "Konkani (India)";
  goto <D.10910>;
  <D.10911>:
  name = "Konkani";
  goto <D.10910>;
  <D.11492>:
  <D.10910>:
  goto <D.10507>;
  <D.10912>:
  switch (secondary) <default: <D.11493>, case 0: <D.10913>, case 1: <D.10915>>
  <D.10913>:
  name = "Syriac (Syria)";
  goto <D.10914>;
  <D.10915>:
  name = "Syriac";
  goto <D.10914>;
  <D.11493>:
  <D.10914>:
  goto <D.10507>;
  <D.10916>:
  switch (secondary) <default: <D.11494>, case 1: <D.10917>>
  <D.10917>:
  name = "Sinhala (Sri Lanka)";
  goto <D.10918>;
  <D.11494>:
  <D.10918>:
  goto <D.10507>;
  <D.10919>:
  switch (secondary) <default: <D.11495>, case 1: <D.10920>, case 2: <D.10922>>
  <D.10920>:
  name = "Inuktitut (Syllabics, Canada)";
  goto <D.10921>;
  <D.10922>:
  name = "Inuktitut (Latin, Canada)";
  goto <D.10921>;
  <D.11495>:
  <D.10921>:
  goto <D.10507>;
  <D.10923>:
  switch (secondary) <default: <D.11496>, case 1: <D.10924>>
  <D.10924>:
  name = "Amharic (Ethiopia)";
  goto <D.10925>;
  <D.11496>:
  <D.10925>:
  goto <D.10507>;
  <D.10926>:
  switch (secondary) <default: <D.11497>, case 2: <D.10927>>
  <D.10927>:
  name = "Tamazight (Algeria, Latin)";
  goto <D.10928>;
  <D.11497>:
  <D.10928>:
  goto <D.10507>;
  <D.10929>:
  switch (secondary) <default: <D.11498>, case 1: <D.10930>>
  <D.10930>:
  name = "Nepali (Nepal)";
  goto <D.10931>;
  <D.11498>:
  <D.10931>:
  goto <D.10507>;
  <D.10932>:
  switch (secondary) <default: <D.11499>, case 1: <D.10933>>
  <D.10933>:
  name = "Frisian (Netherlands)";
  goto <D.10934>;
  <D.11499>:
  <D.10934>:
  goto <D.10507>;
  <D.10935>:
  switch (secondary) <default: <D.11500>, case 1: <D.10936>>
  <D.10936>:
  name = "Pashto (Afghanistan)";
  goto <D.10937>;
  <D.11500>:
  <D.10937>:
  goto <D.10507>;
  <D.10938>:
  switch (secondary) <default: <D.11501>, case 1: <D.10939>>
  <D.10939>:
  name = "Filipino (Philippines)";
  goto <D.10940>;
  <D.11501>:
  <D.10940>:
  goto <D.10507>;
  <D.10941>:
  switch (secondary) <default: <D.11502>, case 0: <D.10942>, case 1: <D.10944>>
  <D.10942>:
  name = "Divehi (Maldives)";
  goto <D.10943>;
  <D.10944>:
  name = "Divehi";
  goto <D.10943>;
  <D.11502>:
  <D.10943>:
  goto <D.10507>;
  <D.10945>:
  switch (secondary) <default: <D.11503>, case 1: <D.10946>>
  <D.10946>:
  name = "Hausa (Nigeria, Latin)";
  goto <D.10947>;
  <D.11503>:
  <D.10947>:
  goto <D.10507>;
  <D.10948>:
  switch (secondary) <default: <D.11504>, case 1: <D.10949>>
  <D.10949>:
  name = "Yoruba (Nigeria)";
  goto <D.10950>;
  <D.11504>:
  <D.10950>:
  goto <D.10507>;
  <D.10951>:
  switch (secondary) <default: <D.11505>, case 0: <D.10952>, case 1: <D.10953>, case 2: <D.10955>, case 3: <D.10956>>
  <D.10952>:
  <D.10953>:
  name = "Quechua (Bolivia)";
  goto <D.10954>;
  <D.10955>:
  name = "Quechua (Ecuador)";
  goto <D.10954>;
  <D.10956>:
  name = "Quechua (Peru)";
  goto <D.10954>;
  <D.11505>:
  <D.10954>:
  goto <D.10507>;
  <D.10957>:
  switch (secondary) <default: <D.11506>, case 0: <D.10958>, case 1: <D.10960>>
  <D.10958>:
  name = "Northern Sotho (South Africa)";
  goto <D.10959>;
  <D.10960>:
  name = "Northern Sotho";
  goto <D.10959>;
  <D.11506>:
  <D.10959>:
  goto <D.10507>;
  <D.10961>:
  switch (secondary) <default: <D.11507>, case 1: <D.10962>>
  <D.10962>:
  name = "Bashkir (Russia)";
  goto <D.10963>;
  <D.11507>:
  <D.10963>:
  goto <D.10507>;
  <D.10964>:
  switch (secondary) <default: <D.11508>, case 1: <D.10965>>
  <D.10965>:
  name = "Luxembourgish (Luxembourg)";
  goto <D.10966>;
  <D.11508>:
  <D.10966>:
  goto <D.10507>;
  <D.10967>:
  switch (secondary) <default: <D.11509>, case 1: <D.10968>>
  <D.10968>:
  name = "Greenlandic (Greenland)";
  goto <D.10969>;
  <D.11509>:
  <D.10969>:
  goto <D.10507>;
  <D.10970>:
  switch (secondary) <default: <D.11510>, case 1: <D.10971>>
  <D.10971>:
  name = "Yi (PRC)";
  goto <D.10972>;
  <D.11510>:
  <D.10972>:
  goto <D.10507>;
  <D.10973>:
  switch (secondary) <default: <D.11511>, case 1: <D.10974>>
  <D.10974>:
  name = "Mapudungun (Chile)";
  goto <D.10975>;
  <D.11511>:
  <D.10975>:
  goto <D.10507>;
  <D.10976>:
  switch (secondary) <default: <D.11512>, case 1: <D.10977>>
  <D.10977>:
  name = "Mohawk (Mohawk)";
  goto <D.10978>;
  <D.11512>:
  <D.10978>:
  goto <D.10507>;
  <D.10979>:
  switch (secondary) <default: <D.11513>, case 1: <D.10980>>
  <D.10980>:
  name = "Breton (France)";
  goto <D.10981>;
  <D.11513>:
  <D.10981>:
  goto <D.10507>;
  <D.10982>:
  switch (secondary) <default: <D.11514>, case 0: <D.10983>>
  <D.10983>:
  name = "Invariant Language (Invariant Country)";
  goto <D.10984>;
  <D.11514>:
  <D.10984>:
  goto <D.10507>;
  <D.10985>:
  switch (secondary) <default: <D.11515>, case 1: <D.10986>>
  <D.10986>:
  name = "Uighur (PRC)";
  goto <D.10987>;
  <D.11515>:
  <D.10987>:
  goto <D.10507>;
  <D.10988>:
  switch (secondary) <default: <D.11516>, case 0: <D.10989>, case 1: <D.10991>>
  <D.10989>:
  name = "Maori (New Zealand)";
  goto <D.10990>;
  <D.10991>:
  name = "Maori";
  goto <D.10990>;
  <D.11516>:
  <D.10990>:
  goto <D.10507>;
  <D.10992>:
  switch (secondary) <default: <D.11517>, case 1: <D.10993>>
  <D.10993>:
  name = "Corsican (France)";
  goto <D.10994>;
  <D.11517>:
  <D.10994>:
  goto <D.10507>;
  <D.10995>:
  switch (secondary) <default: <D.11518>, case 1: <D.10996>>
  <D.10996>:
  name = "Alsatian (France)";
  goto <D.10997>;
  <D.11518>:
  <D.10997>:
  goto <D.10507>;
  <D.10998>:
  switch (secondary) <default: <D.11519>, case 1: <D.10999>>
  <D.10999>:
  name = "Yakut (Russia)";
  goto <D.11000>;
  <D.11519>:
  <D.11000>:
  goto <D.10507>;
  <D.11001>:
  switch (secondary) <default: <D.11520>, case 1: <D.11002>>
  <D.11002>:
  name = "K\'iche (Guatemala)";
  goto <D.11003>;
  <D.11520>:
  <D.11003>:
  goto <D.10507>;
  <D.11004>:
  switch (secondary) <default: <D.11521>, case 1: <D.11005>>
  <D.11005>:
  name = "Kinyarwanda (Rwanda)";
  goto <D.11006>;
  <D.11521>:
  <D.11006>:
  goto <D.10507>;
  <D.11007>:
  switch (secondary) <default: <D.11522>, case 1: <D.11008>>
  <D.11008>:
  name = "Wolof (Senegal)";
  goto <D.11009>;
  <D.11522>:
  <D.11009>:
  goto <D.10507>;
  <D.11010>:
  switch (secondary) <default: <D.11523>, case 1: <D.11011>>
  <D.11011>:
  name = "Dari (Afghanistan)";
  goto <D.11012>;
  <D.11523>:
  <D.11012>:
  goto <D.10507>;
  <D.11013>:
  name = "Language Neutral";
  <D.10507>:
  if (name == 0B) goto <D.11524>; else goto <D.11525>;
  <D.11524>:
  name = "Language Neutral";
  <D.11525>:
  D.11526 = copy_lang (lang_out, lang_len, name);
  return D.11526;
}


copy_lang (gunichar2 * lang_out, guint32 lang_len, const gchar * text)
{
  long unsigned int D.11529;
  _Bool D.11530;
  long int D.11531;
  long int D.11532;
  unsigned int chars.19;
  unsigned int D.11536;
  int D.11539;
  long unsigned int D.11540;
  long unsigned int D.11541;
  long unsigned int D.11542;
  gunichar2 * D.11543;
  unsigned int D.11545;
  unsigned int D.11546;
  long unsigned int D.11547;
  long unsigned int D.11548;
  long unsigned int D.11549;
  gunichar2 * D.11550;
  guint32 D.11551;
  gunichar2 * unitext;
  int chars;
  int ret;

  D.11529 = strlen (text);
  chars = (int) D.11529;
  unitext = monoeg_g_utf8_to_utf16 (text, -1, 0B, 0B, 0B);
  D.11530 = unitext == 0B;
  D.11531 = (long int) D.11530;
  D.11532 = __builtin_expect (D.11531, 0);
  if (D.11532 != 0) goto <D.11533>; else goto <D.11534>;
  <D.11533>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "versioninfo.c", 1008, "unitext != NULL");
  <D.11534>:
  chars.19 = (unsigned int) chars;
  D.11536 = lang_len + 4294967295;
  if (chars.19 < D.11536) goto <D.11537>; else goto <D.11538>;
  <D.11537>:
  D.11539 = chars * 2;
  D.11540 = (long unsigned int) D.11539;
  memcpy (lang_out, unitext, D.11540);
  D.11541 = (long unsigned int) chars;
  D.11542 = D.11541 * 2;
  D.11543 = lang_out + D.11542;
  *D.11543 = 0;
  ret = chars;
  goto <D.11544>;
  <D.11538>:
  D.11545 = lang_len + 2147483647;
  D.11546 = D.11545 * 2;
  D.11547 = (long unsigned int) D.11546;
  memcpy (lang_out, unitext, D.11547);
  D.11548 = (long unsigned int) lang_len;
  D.11549 = D.11548 * 2;
  D.11550 = lang_out + D.11549;
  *D.11550 = 0;
  ret = (int) lang_len;
  <D.11544>:
  monoeg_g_free (unitext);
  D.11551 = (guint32) ret;
  return D.11551;
}


