VerQueryValue (const void * datablock, const gunichar2 * subblock, void * * buffer, guint32 * len)
{
  gboolean D.11189;
  int D.11190;
  _Bool iftmp.0;
  long unsigned int D.11195;
  int D.11198;
  int D.11200;
  const gunichar2 * D.11203;
  int D.11204;
  short unsigned int D.11209;
  unsigned int D.11210;
  short unsigned int D.11217;
  int D.11218;
  gunichar2 * D.11220;
  int D.11221;
  sizetype D.11226;
  int D.11228;
  void * string_value.1;
  unsigned int string_value_len.2;
  unsigned int D.11238;
  unsigned int D.11239;
  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.11187>; else goto <D.11188>;
      <D.11187>:
      D.11189 = 0;
      return D.11189;
      <D.11188>:
      D.11190 = strcmp (subblock_utf8, "\\VarFileInfo\\Translation");
      if (D.11190 == 0) goto <D.11191>; else goto <D.11192>;
      <D.11191>:
      want_var = 1;
      goto <D.11193>;
      <D.11192>:
      D.11195 = __strlen_g ("\\StringFileInfo\\");
      if (D.11195 <= 15) goto <D.11196>; else goto <D.11197>;
      <D.11196>:
      D.11198 = strcmp (subblock_utf8, "\\StringFileInfo\\");
      iftmp.0 = D.11198 == 0;
      goto <D.11199>;
      <D.11197>:
      D.11200 = strncmp (subblock_utf8, "\\StringFileInfo\\", 16);
      iftmp.0 = D.11200 == 0;
      <D.11199>:
      if (iftmp.0 != 0) goto <D.11201>; else goto <D.11202>;
      <D.11201>:
      want_string = 1;
      D.11203 = subblock + 32;
      memcpy (&lang, D.11203, 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.11202>:
      <D.11193>:
      D.11204 = strcmp (subblock_utf8, "\\");
      if (D.11204 == 0) goto <D.11205>; else goto <D.11206>;
      <D.11205>:
      data_ptr = get_fixedfileinfo_block (datablock, &block);
      if (data_ptr != 0B) goto <D.11207>; else goto <D.11208>;
      <D.11207>:
      *buffer = data_ptr;
      D.11209 = block.value_len;
      D.11210 = (unsigned int) D.11209;
      *len = D.11210;
      ret = 1;
      <D.11208>:
      goto <D.11211>;
      <D.11206>:
      if (want_var != 0) goto <D.11212>; else goto <D.11214>;
      <D.11214>:
      if (want_string != 0) goto <D.11212>; else goto <D.11213>;
      <D.11212>:
      data_ptr = get_fixedfileinfo_block (datablock, &block);
      if (data_ptr != 0B) goto <D.11215>; else goto <D.11216>;
      <D.11215>:
      data_ptr = data_ptr + 52;
      D.11217 = block.data_len;
      D.11218 = (int) D.11217;
      data_len = D.11218 + -92;
      goto <D.10637>;
      <D.10636>:
      data_ptr = data_ptr + 3;
      data_ptr = data_ptr & -4B;
      data_ptr = get_versioninfo_block (data_ptr, &block);
      D.11217 = block.data_len;
      if (D.11217 == 0) goto done; else goto <D.11219>;
      <D.11219>:
      D.11217 = block.data_len;
      D.11218 = (int) D.11217;
      data_len = data_len - D.11218;
      D.11220 = block.key;
      D.11221 = unicode_string_equals (D.11220, "VarFileInfo");
      if (D.11221 != 0) goto <D.11222>; else goto <D.11223>;
      <D.11222>:
      data_ptr = get_varfileinfo_block (data_ptr, &block);
      if (want_var != 0) goto <D.11224>; else goto <D.11225>;
      <D.11224>:
      *buffer = data_ptr;
      D.11209 = block.value_len;
      D.11210 = (unsigned int) D.11209;
      *len = D.11210;
      ret = 1;
      goto done;
      <D.11225>:
      D.11209 = block.value_len;
      D.11226 = (sizetype) D.11209;
      data_ptr = data_ptr + D.11226;
      goto <D.11227>;
      <D.11223>:
      D.11220 = block.key;
      D.11228 = unicode_string_equals (D.11220, "StringFileInfo");
      if (D.11228 != 0) goto <D.11229>; else goto done;
      <D.11229>:
      data_ptr = get_stringtable_block (data_ptr, lang_utf8, string_key, &string_value, &string_value_len, &block);
      if (want_string != 0) goto <D.11230>; else goto <D.11231>;
      <D.11230>:
      string_value.1 = string_value;
      if (string_value.1 != 0B) goto <D.11233>; else goto <D.11234>;
      <D.11233>:
      string_value_len.2 = string_value_len;
      if (string_value_len.2 != 0) goto <D.11236>; else goto <D.11237>;
      <D.11236>:
      string_value.1 = string_value;
      *buffer = string_value.1;
      string_value.1 = string_value;
      D.11238 = unicode_chars (string_value.1);
      D.11239 = D.11238 + 1;
      *len = D.11239;
      ret = 1;
      goto done;
      <D.11237>:
      <D.11234>:
      <D.11231>:
      <D.11227>:
      if (data_ptr == 0B) goto done; else goto <D.11240>;
      <D.11240>:
      <D.10637>:
      if (data_len > 0) goto <D.10636>; else goto <D.10638>;
      <D.10638>:
      <D.11216>:
      <D.11213>:
      <D.11211>:
      done:
      if (lang_utf8 != 0B) goto <D.11241>; else goto <D.11242>;
      <D.11241>:
      monoeg_g_free (lang_utf8);
      <D.11242>:
      monoeg_g_free (subblock_utf8);
      D.11189 = ret;
      return D.11189;
    }
  finally
    {
      block = {CLOBBER};
      lang = {CLOBBER};
      string_value = {CLOBBER};
      string_value_len = {CLOBBER};
    }
}


__attribute__((__gnu_inline__))
__strlen_g (const char * __str)
{
  size_t D.11245;
  long int __ptr.3;
  long int __str.4;
  long int D.11248;
  char * __ptr;
  char * __tmp;

  __ptr = 0B;
  __tmp = __str;
  __asm__ __volatile__("   la    0,0
0: srst  %0,%1
   jo    0b
" : "=&a" __ptr, "=&a" __tmp : "0" __ptr, "1" __tmp : "0", "memory", "cc");
  __ptr.3 = (long int) __ptr;
  __str.4 = (long int) __str;
  D.11248 = __ptr.3 - __str.4;
  D.11245 = (size_t) D.11248;
  return D.11245;
}


__attribute__((__artificial__, __gnu_inline__, __always_inline__, __nothrow__, __leaf__))
memcpy (void * restrict __dest, const void * restrict __src, size_t __len)
{
  void * D.11250;
  long unsigned int D.11251;

  D.11251 = __builtin_object_size (__dest, 0);
  D.11250 = __builtin___memcpy_chk (__dest, __src, __len, D.11251);
  return D.11250;
}


__attribute__((__gnu_inline__, nothrow, leaf, pure))
strcmp (const char * __s1, const char * __s2)
{
  int iftmp.5;
  int iftmp.6;
  int D.11261;
  char * __p1;
  char * __p2;
  int __ret;

  __p1 = __s1;
  __p2 = __s2;
  __asm__ __volatile__("   slr   0,0
0: clst  %1,%2
   jo    0b
   ipm   %0
   srl   %0,28" : "=d" __ret, "=&a" __p1, "=&a" __p2 : "1" __p1, "2" __p2 : "0", "memory", "cc");
  if (__ret != 0) goto <D.11254>; else goto <D.11255>;
  <D.11254>:
  if (__ret == 1) goto <D.11257>; else goto <D.11258>;
  <D.11257>:
  iftmp.6 = -1;
  goto <D.11259>;
  <D.11258>:
  iftmp.6 = 1;
  <D.11259>:
  iftmp.5 = iftmp.6;
  goto <D.11260>;
  <D.11255>:
  iftmp.5 = 0;
  <D.11260>:
  __ret = iftmp.5;
  D.11261 = __ret;
  return D.11261;
}


get_fixedfileinfo_block (const void * data, struct version_data * block)
{
  short unsigned int D.11263;
  short unsigned int D.11264;
  const void * D.11267;
  gunichar2 * D.11268;
  int D.11269;
  unsigned int D.11274;
  unsigned int D.11276;
  const void * data_ptr;
  gint32 data_len;
  struct WapiFixedFileInfo * ffi;

  data_ptr = get_versioninfo_block (data, block);
  D.11263 = block->data_len;
  data_len = (gint32) D.11263;
  D.11264 = block->value_len;
  if (D.11264 != 52) goto <D.11265>; else goto <D.11266>;
  <D.11265>:
  D.11267 = 0B;
  return D.11267;
  <D.11266>:
  D.11268 = block->key;
  D.11269 = unicode_string_equals (D.11268, "VS_VERSION_INFO");
  if (D.11269 == 0) goto <D.11270>; else goto <D.11271>;
  <D.11270>:
  D.11267 = 0B;
  return D.11267;
  <D.11271>:
  ffi = data_ptr;
  D.11274 = ffi->dwSignature;
  if (D.11274 != 3171217406) goto <D.11272>; else goto <D.11275>;
  <D.11275>:
  D.11276 = ffi->dwStrucVersion;
  if (D.11276 != 256) goto <D.11272>; else goto <D.11273>;
  <D.11272>:
  D.11267 = 0B;
  return D.11267;
  <D.11273>:
  D.11267 = data_ptr;
  return D.11267;
}


get_versioninfo_block (const void * data, struct version_data * block)
{
  short unsigned int D.11278;
  short unsigned int D.11279;
  signed short D.11280;
  int D.11281;
  int D.11282;
  signed short D.11283;
  signed short D.11284;
  short unsigned int D.11285;
  gunichar2 * D.11286;
  unsigned int D.11287;
  unsigned int D.11288;
  long unsigned int D.11289;
  long unsigned int D.11290;
  const void * D.11291;

  D.11278 = MEM[(guint16 *)data];
  D.11279 = D.11278 >> 8;
  D.11280 = (signed short) D.11279;
  D.11278 = MEM[(guint16 *)data];
  D.11281 = (int) D.11278;
  D.11282 = D.11281 << 8;
  D.11283 = (signed short) D.11282;
  D.11284 = D.11280 | D.11283;
  D.11285 = (short unsigned int) D.11284;
  block->data_len = D.11285;
  data = data + 2;
  D.11278 = MEM[(guint16 *)data];
  D.11279 = D.11278 >> 8;
  D.11280 = (signed short) D.11279;
  D.11278 = MEM[(guint16 *)data];
  D.11281 = (int) D.11278;
  D.11282 = D.11281 << 8;
  D.11283 = (signed short) D.11282;
  D.11284 = D.11280 | D.11283;
  D.11285 = (short unsigned int) D.11284;
  block->value_len = D.11285;
  data = data + 2;
  D.11278 = MEM[(guint16 *)data];
  D.11279 = D.11278 >> 8;
  D.11280 = (signed short) D.11279;
  D.11278 = MEM[(guint16 *)data];
  D.11281 = (int) D.11278;
  D.11282 = D.11281 << 8;
  D.11283 = (signed short) D.11282;
  D.11284 = D.11280 | D.11283;
  D.11285 = (short unsigned int) D.11284;
  block->type = D.11285;
  data = data + 2;
  block->key = data;
  D.11286 = block->key;
  D.11287 = unicode_chars (D.11286);
  D.11288 = D.11287 + 1;
  D.11289 = (long unsigned int) D.11288;
  D.11290 = D.11289 * 2;
  data = data + D.11290;
  data = data + 3;
  data = data & -4B;
  D.11291 = data;
  return D.11291;
}


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

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


unicode_string_equals (const gunichar2 * str1, const gchar * str2)
{
  short unsigned int D.11295;
  short unsigned int D.11296;
  int D.11297;
  int D.11298;
  int D.11299;
  int D.11300;
  int D.11301;
  char D.11302;
  int D.11303;
  gboolean D.11306;
  short unsigned int D.11308;
  _Bool D.11309;

  goto <D.10533>;
  <D.10532>:
  D.11295 = *str1;
  D.11296 = D.11295 >> 8;
  D.11297 = (int) D.11296;
  D.11295 = *str1;
  D.11298 = (int) D.11295;
  D.11299 = D.11298 << 8;
  D.11300 = D.11299 & 65535;
  D.11301 = D.11297 | D.11300;
  D.11302 = *str2;
  D.11303 = (int) D.11302;
  if (D.11301 != D.11303) goto <D.11304>; else goto <D.11305>;
  <D.11304>:
  D.11306 = 0;
  return D.11306;
  <D.11305>:
  str1 = str1 + 2;
  str2 = str2 + 1;
  <D.10533>:
  D.11295 = *str1;
  if (D.11295 != 0) goto <D.11307>; else goto <D.10534>;
  <D.11307>:
  D.11302 = *str2;
  if (D.11302 != 0) goto <D.10532>; else goto <D.10534>;
  <D.10534>:
  D.11295 = *str1;
  D.11302 = *str2;
  D.11308 = (short unsigned int) D.11302;
  D.11309 = D.11295 == D.11308;
  D.11306 = (gboolean) D.11309;
  return D.11306;
}


get_stringtable_block (const void * data_ptr, gchar * lang, const gunichar2 * string_key, void * * string_value, guint32 * string_value_len, struct version_data * block)
{
  short unsigned int D.11311;
  const void * D.11314;
  gunichar2 * D.11315;
  int D.11321;
  guint16 data_len;
  guint16 string_len;
  gchar * found_lang;
  gchar * lowercase_lang;

  data_len = block->data_len;
  string_len = 36;
  goto <D.10582>;
  <D.10581>:
  data_ptr = data_ptr + 3;
  data_ptr = data_ptr & -4B;
  data_ptr = get_versioninfo_block (data_ptr, block);
  D.11311 = block->data_len;
  if (D.11311 == 0) goto <D.11312>; else goto <D.11313>;
  <D.11312>:
  D.11314 = 0B;
  return D.11314;
  <D.11313>:
  D.11311 = block->data_len;
  string_len = D.11311 + string_len;
  D.11315 = block->key;
  found_lang = monoeg_g_utf16_to_utf8 (D.11315, 8, 0B, 0B, 0B);
  if (found_lang == 0B) goto <D.11316>; else goto <D.11317>;
  <D.11316>:
  D.11314 = 0B;
  return D.11314;
  <D.11317>:
  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.11320>; else goto <D.11318>;
  <D.11320>:
  D.11321 = strcmp (found_lang, lang);
  if (D.11321 == 0) goto <D.11322>; else goto <D.11318>;
  <D.11322>:
  data_ptr = get_string_block (data_ptr, string_key, string_value, string_value_len, block);
  goto <D.11319>;
  <D.11318>:
  data_ptr = get_string_block (data_ptr, 0B, 0B, 0B, block);
  <D.11319>:
  monoeg_g_free (found_lang);
  if (data_ptr == 0B) goto <D.11323>; else goto <D.11324>;
  <D.11323>:
  D.11314 = 0B;
  return D.11314;
  <D.11324>:
  <D.10582>:
  if (string_len < data_len) goto <D.10581>; else goto <D.10583>;
  <D.10583>:
  D.11314 = data_ptr;
  return D.11314;
}


get_string_block (const void * data_ptr, const gunichar2 * string_key, void * * string_value, guint32 * string_value_len, struct version_data * block)
{
  short unsigned int D.11326;
  const void * D.11329;
  gunichar2 * D.11336;
  int D.11337;
  short unsigned int D.11340;
  unsigned int D.11341;
  long unsigned int D.11342;
  long unsigned int D.11343;
  long int data_ptr.7;
  long int orig_data_ptr.8;
  long int D.11346;
  long int D.11347;
  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.10567>;
  <D.10566>:
  data_ptr = data_ptr + 3;
  data_ptr = data_ptr & -4B;
  data_ptr = get_versioninfo_block (data_ptr, block);
  D.11326 = block->data_len;
  if (D.11326 == 0) goto <D.11327>; else goto <D.11328>;
  <D.11327>:
  D.11329 = 0B;
  return D.11329;
  <D.11328>:
  D.11326 = block->data_len;
  string_len = D.11326 + string_len;
  if (string_key != 0B) goto <D.11330>; else goto <D.11331>;
  <D.11330>:
  if (string_value != 0B) goto <D.11332>; else goto <D.11333>;
  <D.11332>:
  if (string_value_len != 0B) goto <D.11334>; else goto <D.11335>;
  <D.11334>:
  D.11336 = block->key;
  D.11337 = unicode_compare (string_key, D.11336);
  if (D.11337 == 1) goto <D.11338>; else goto <D.11339>;
  <D.11338>:
  *string_value = data_ptr;
  D.11340 = block->value_len;
  D.11341 = (unsigned int) D.11340;
  *string_value_len = D.11341;
  <D.11339>:
  <D.11335>:
  <D.11333>:
  <D.11331>:
  D.11340 = block->value_len;
  D.11342 = (long unsigned int) D.11340;
  D.11343 = D.11342 * 2;
  data_ptr = data_ptr + D.11343;
  <D.10567>:
  data_ptr.7 = (long int) data_ptr;
  orig_data_ptr.8 = (long int) orig_data_ptr;
  D.11346 = data_ptr.7 - orig_data_ptr.8;
  D.11347 = (long int) data_len;
  if (D.11346 < D.11347) goto <D.10566>; else goto <D.10568>;
  <D.10568>:
  D.11329 = data_ptr;
  return D.11329;
}


unicode_compare (const gunichar2 * str1, const gunichar2 * str2)
{
  short unsigned int D.11349;
  short unsigned int D.11350;
  gboolean D.11353;
  _Bool D.11355;

  goto <D.10526>;
  <D.10525>:
  D.11349 = *str1;
  D.11350 = *str2;
  if (D.11349 != D.11350) goto <D.11351>; else goto <D.11352>;
  <D.11351>:
  D.11353 = 0;
  return D.11353;
  <D.11352>:
  str1 = str1 + 2;
  str2 = str2 + 2;
  <D.10526>:
  D.11349 = *str1;
  if (D.11349 != 0) goto <D.11354>; else goto <D.10527>;
  <D.11354>:
  D.11350 = *str2;
  if (D.11350 != 0) goto <D.10525>; else goto <D.10527>;
  <D.10527>:
  D.11349 = *str1;
  D.11350 = *str2;
  D.11355 = D.11349 == D.11350;
  D.11353 = (gboolean) D.11355;
  return D.11353;
}


unicode_chars (const gunichar2 * str)
{
  long unsigned int D.11357;
  long unsigned int D.11358;
  const gunichar2 * D.11359;
  short unsigned int D.11360;
  guint32 D.11363;
  guint32 len;

  len = 0;
  <D.10520>:
  D.11357 = (long unsigned int) len;
  D.11358 = D.11357 * 2;
  D.11359 = str + D.11358;
  D.11360 = *D.11359;
  if (D.11360 == 0) goto <D.11361>; else goto <D.11362>;
  <D.11361>:
  D.11363 = len;
  return D.11363;
  <D.11362>:
  len = len + 1;
  goto <D.10520>;
}


GetFileVersionInfoSize (gunichar2 * filename, guint32 * handle)
{
  guint32 D.11367;
  int map_size.9;
  unsigned int map_size.10;
  void * map_handle.11;
  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.11365>; else goto <D.11366>;
      <D.11365>:
      D.11367 = 0;
      return D.11367;
      <D.11366>:
      map_size.9 = map_size;
      map_size.10 = (unsigned int) map_size.9;
      versioninfo = find_pe_file_resources (file_map, map_size.10, 16, 0, &size);
      if (versioninfo == 0B) goto <D.11370>; else goto <D.11371>;
      <D.11370>:
      size = 0;
      <D.11371>:
      map_handle.11 = map_handle;
      unmap_pe_file (file_map, map_handle.11);
      D.11367 = size;
      return D.11367;
    }
  finally
    {
      map_handle = {CLOBBER};
      map_size = {CLOBBER};
      size = {CLOBBER};
    }
}


map_pe_file (gunichar2 * filename, gint32 * map_size, void * * handle)
{
  void * D.11377;
  int * D.11380;
  int D.11381;
  int D.11382;
  unsigned int D.11383;
  int D.11384;
  int D.11387;
  unsigned int D.11388;
  long int D.11389;
  int D.11390;
  long unsigned int D.11391;
  long unsigned int D.11394;
  int D.11397;
  unsigned int D.11398;
  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.11375>; else goto <D.11376>;
      <D.11375>:
      SetLastError (123);
      D.11377 = 0B;
      return D.11377;
      <D.11376>:
      fd = _wapi_open (filename_ext, 0, 0);
      if (fd == -1) goto <D.11378>; else goto <D.11379>;
      <D.11378>:
      D.11380 = __errno_location ();
      D.11381 = *D.11380;
      D.11382 = _wapi_get_win32_file_error (D.11381);
      D.11383 = (unsigned int) D.11382;
      SetLastError (D.11383);
      monoeg_g_free (filename_ext);
      D.11377 = 0B;
      return D.11377;
      <D.11379>:
      D.11384 = fstat (fd, &statbuf);
      if (D.11384 == -1) goto <D.11385>; else goto <D.11386>;
      <D.11385>:
      D.11380 = __errno_location ();
      D.11381 = *D.11380;
      D.11387 = _wapi_get_win32_file_error (D.11381);
      D.11388 = (unsigned int) D.11387;
      SetLastError (D.11388);
      monoeg_g_free (filename_ext);
      close (fd);
      D.11377 = 0B;
      return D.11377;
      <D.11386>:
      D.11389 = statbuf.st_size;
      D.11390 = (int) D.11389;
      *map_size = D.11390;
      D.11389 = statbuf.st_size;
      D.11391 = (long unsigned int) D.11389;
      if (D.11391 <= 63) goto <D.11392>; else goto <D.11393>;
      <D.11392>:
      SetLastError (24);
      monoeg_g_free (filename_ext);
      close (fd);
      D.11377 = 0B;
      return D.11377;
      <D.11393>:
      D.11389 = statbuf.st_size;
      D.11394 = (long unsigned int) D.11389;
      file_map = mono_file_map (D.11394, 17, fd, 0, handle);
      if (file_map == 0B) goto <D.11395>; else goto <D.11396>;
      <D.11395>:
      D.11380 = __errno_location ();
      D.11381 = *D.11380;
      D.11397 = _wapi_get_win32_file_error (D.11381);
      D.11398 = (unsigned int) D.11397;
      SetLastError (D.11398);
      monoeg_g_free (filename_ext);
      close (fd);
      D.11377 = 0B;
      return D.11377;
      <D.11396>:
      close (fd);
      monoeg_g_free (filename_ext);
      D.11377 = file_map;
      return D.11377;
    }
  finally
    {
      statbuf = {CLOBBER};
    }
}


__attribute__((__gnu_inline__, __leaf__, __nothrow__))
fstat (int __fd, struct stat * __statbuf)
{
  int D.11401;

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


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

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


find_pe_file_resources32 (void * file_map, guint32 map_size, guint32 res_id, guint32 lang_id, guint32 * size)
{
  short unsigned int D.11407;
  void * D.11410;
  long unsigned int D.11411;
  unsigned int D.11412;
  unsigned int D.11413;
  unsigned int D.11414;
  unsigned int D.11415;
  unsigned int D.11416;
  unsigned int D.11417;
  unsigned int D.11418;
  unsigned int D.11419;
  unsigned int D.11420;
  unsigned int D.11421;
  long unsigned int D.11422;
  long unsigned int D.11423;
  sizetype D.11426;
  unsigned int D.11427;
  short unsigned int D.11430;
  unsigned int D.11433;
  unsigned int D.11434;
  unsigned int D.11435;
  unsigned int D.11436;
  unsigned int D.11437;
  unsigned int D.11438;
  unsigned int D.11439;
  unsigned int D.11440;
  unsigned int D.11441;
  unsigned int D.11443;
  unsigned int D.11444;
  unsigned int D.11445;
  unsigned int D.11446;
  unsigned int D.11447;
  unsigned int D.11448;
  unsigned int D.11449;
  unsigned int D.11450;
  unsigned int D.11451;
  short unsigned int D.11456;
  short unsigned int D.11457;
  int D.11458;
  int D.11459;
  int D.11460;
  int D.11461;
  int D.11462;
  short unsigned int D.11463;
  short unsigned int D.11464;
  int D.11465;
  int D.11466;
  int D.11467;
  int D.11468;
  int D.11469;
  int D.11470;
  long unsigned int D.11471;
  long unsigned int D.11472;
  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.11407 = dos_header->e_magic;
  if (D.11407 != 19802) goto <D.11408>; else goto <D.11409>;
  <D.11408>:
  SetLastError (13);
  D.11410 = 0B;
  return D.11410;
  <D.11409>:
  D.11411 = (long unsigned int) map_size;
  D.11412 = dos_header->e_lfanew;
  D.11413 = D.11412 << 24;
  D.11412 = dos_header->e_lfanew;
  D.11414 = D.11412 >> 8;
  D.11415 = D.11414 & 65280;
  D.11416 = D.11413 | D.11415;
  D.11412 = dos_header->e_lfanew;
  D.11417 = D.11412 << 8;
  D.11418 = D.11417 & 16711680;
  D.11419 = D.11416 | D.11418;
  D.11412 = dos_header->e_lfanew;
  D.11420 = D.11412 >> 24;
  D.11421 = D.11419 | D.11420;
  D.11422 = (long unsigned int) D.11421;
  D.11423 = D.11422 + 248;
  if (D.11411 < D.11423) goto <D.11424>; else goto <D.11425>;
  <D.11424>:
  SetLastError (24);
  D.11410 = 0B;
  return D.11410;
  <D.11425>:
  D.11412 = dos_header->e_lfanew;
  D.11413 = D.11412 << 24;
  D.11412 = dos_header->e_lfanew;
  D.11414 = D.11412 >> 8;
  D.11415 = D.11414 & 65280;
  D.11416 = D.11413 | D.11415;
  D.11412 = dos_header->e_lfanew;
  D.11417 = D.11412 << 8;
  D.11418 = D.11417 & 16711680;
  D.11419 = D.11416 | D.11418;
  D.11412 = dos_header->e_lfanew;
  D.11420 = D.11412 >> 24;
  D.11421 = D.11419 | D.11420;
  D.11426 = (sizetype) D.11421;
  nt_headers = file_map + D.11426;
  D.11427 = nt_headers->Signature;
  if (D.11427 != 1346699264) goto <D.11428>; else goto <D.11429>;
  <D.11428>:
  SetLastError (13);
  D.11410 = 0B;
  return D.11410;
  <D.11429>:
  D.11430 = nt_headers->OptionalHeader.Magic;
  if (D.11430 == 2848) goto <D.11431>; else goto <D.11432>;
  <D.11431>:
  D.11433 = MEM[(struct WapiImageNTHeaders64 *)nt_headers].OptionalHeader.DataDirectory[2].VirtualAddress;
  D.11434 = D.11433 << 24;
  D.11433 = MEM[(struct WapiImageNTHeaders64 *)nt_headers].OptionalHeader.DataDirectory[2].VirtualAddress;
  D.11435 = D.11433 >> 8;
  D.11436 = D.11435 & 65280;
  D.11437 = D.11434 | D.11436;
  D.11433 = MEM[(struct WapiImageNTHeaders64 *)nt_headers].OptionalHeader.DataDirectory[2].VirtualAddress;
  D.11438 = D.11433 << 8;
  D.11439 = D.11438 & 16711680;
  D.11440 = D.11437 | D.11439;
  D.11433 = MEM[(struct WapiImageNTHeaders64 *)nt_headers].OptionalHeader.DataDirectory[2].VirtualAddress;
  D.11441 = D.11433 >> 24;
  resource_rva = D.11440 | D.11441;
  goto <D.11442>;
  <D.11432>:
  D.11443 = nt_headers->OptionalHeader.DataDirectory[2].VirtualAddress;
  D.11444 = D.11443 << 24;
  D.11443 = nt_headers->OptionalHeader.DataDirectory[2].VirtualAddress;
  D.11445 = D.11443 >> 8;
  D.11446 = D.11445 & 65280;
  D.11447 = D.11444 | D.11446;
  D.11443 = nt_headers->OptionalHeader.DataDirectory[2].VirtualAddress;
  D.11448 = D.11443 << 8;
  D.11449 = D.11448 & 16711680;
  D.11450 = D.11447 | D.11449;
  D.11443 = nt_headers->OptionalHeader.DataDirectory[2].VirtualAddress;
  D.11451 = D.11443 >> 24;
  resource_rva = D.11450 | D.11451;
  <D.11442>:
  if (resource_rva == 0) goto <D.11452>; else goto <D.11453>;
  <D.11452>:
  SetLastError (13);
  D.11410 = 0B;
  return D.11410;
  <D.11453>:
  resource_dir = get_ptr_from_rva (resource_rva, nt_headers, file_map);
  if (resource_dir == 0B) goto <D.11454>; else goto <D.11455>;
  <D.11454>:
  SetLastError (13);
  D.11410 = 0B;
  return D.11410;
  <D.11455>:
  D.11456 = resource_dir->NumberOfNamedEntries;
  D.11457 = D.11456 >> 8;
  D.11458 = (int) D.11457;
  D.11456 = resource_dir->NumberOfNamedEntries;
  D.11459 = (int) D.11456;
  D.11460 = D.11459 << 8;
  D.11461 = D.11460 & 65535;
  D.11462 = D.11458 | D.11461;
  D.11463 = resource_dir->NumberOfIdEntries;
  D.11464 = D.11463 >> 8;
  D.11465 = (int) D.11464;
  D.11463 = resource_dir->NumberOfIdEntries;
  D.11466 = (int) D.11463;
  D.11467 = D.11466 << 8;
  D.11468 = D.11467 & 65535;
  D.11469 = D.11465 | D.11468;
  D.11470 = D.11462 + D.11469;
  entries = (guint32) D.11470;
  resource_dir_entry = resource_dir + 16;
  i = 0;
  goto <D.10475>;
  <D.10474>:
  {
    struct WapiImageResourceDirectoryEntry * direntry;

    D.11471 = (long unsigned int) i;
    D.11472 = D.11471 * 8;
    direntry = resource_dir_entry + D.11472;
    ret = scan_resource_dir (resource_dir, nt_headers, file_map, direntry, 0, res_id, lang_id, size);
    if (ret != 0B) goto <D.11473>; else goto <D.11474>;
    <D.11473>:
    D.11410 = ret;
    return D.11410;
    <D.11474>:
  }
  i = i + 1;
  <D.10475>:
  if (i < entries) goto <D.10474>; else goto <D.10476>;
  <D.10476>:
  D.11410 = 0B;
  return D.11410;
}


get_ptr_from_rva (guint32 rva, struct WapiImageNTHeaders32 * ntheaders, void * file_map)
{
  void * D.11478;
  unsigned int D.11479;
  unsigned int D.11480;
  unsigned int D.11481;
  unsigned int D.11482;
  unsigned int D.11483;
  unsigned int D.11484;
  unsigned int D.11485;
  unsigned int D.11486;
  unsigned int D.11487;
  unsigned int D.11488;
  unsigned int D.11489;
  unsigned int D.11490;
  unsigned int D.11491;
  unsigned int D.11492;
  unsigned int D.11493;
  unsigned int D.11494;
  unsigned int D.11495;
  unsigned int D.11496;
  unsigned int D.11497;
  unsigned int D.11498;
  sizetype D.11499;
  sizetype D.11500;
  sizetype D.11501;
  struct WapiImageSectionHeader * section_header;
  guint32 delta;

  section_header = get_enclosing_section_header (rva, ntheaders);
  if (section_header == 0B) goto <D.11476>; else goto <D.11477>;
  <D.11476>:
  D.11478 = 0B;
  return D.11478;
  <D.11477>:
  D.11479 = section_header->VirtualAddress;
  D.11480 = D.11479 << 24;
  D.11479 = section_header->VirtualAddress;
  D.11481 = D.11479 >> 8;
  D.11482 = D.11481 & 65280;
  D.11483 = D.11480 | D.11482;
  D.11479 = section_header->VirtualAddress;
  D.11484 = D.11479 << 8;
  D.11485 = D.11484 & 16711680;
  D.11486 = D.11483 | D.11485;
  D.11479 = section_header->VirtualAddress;
  D.11487 = D.11479 >> 24;
  D.11488 = D.11486 | D.11487;
  D.11489 = section_header->PointerToRawData;
  D.11490 = D.11489 << 24;
  D.11489 = section_header->PointerToRawData;
  D.11491 = D.11489 >> 8;
  D.11492 = D.11491 & 65280;
  D.11493 = D.11490 | D.11492;
  D.11489 = section_header->PointerToRawData;
  D.11494 = D.11489 << 8;
  D.11495 = D.11494 & 16711680;
  D.11496 = D.11493 | D.11495;
  D.11489 = section_header->PointerToRawData;
  D.11497 = D.11489 >> 24;
  D.11498 = D.11496 | D.11497;
  delta = D.11488 - D.11498;
  D.11499 = (sizetype) rva;
  D.11500 = (sizetype) delta;
  D.11501 = D.11499 - D.11500;
  D.11478 = file_map + D.11501;
  return D.11478;
}


get_enclosing_section_header (guint32 rva, struct WapiImageNTHeaders32 * nt_headers)
{
  short unsigned int D.11503;
  short unsigned int D.11504;
  int D.11505;
  int D.11506;
  int D.11507;
  int D.11508;
  int D.11509;
  long unsigned int D.11510;
  long unsigned int nt_headers.12;
  long unsigned int D.11512;
  long unsigned int D.11513;
  unsigned int D.11514;
  unsigned int D.11515;
  unsigned int D.11516;
  unsigned int D.11517;
  unsigned int D.11518;
  unsigned int D.11519;
  unsigned int D.11520;
  unsigned int D.11521;
  unsigned int D.11522;
  unsigned int D.11525;
  unsigned int D.11526;
  unsigned int D.11527;
  unsigned int D.11528;
  unsigned int D.11529;
  unsigned int D.11530;
  unsigned int D.11531;
  unsigned int D.11532;
  unsigned int D.11533;
  unsigned int D.11534;
  unsigned int D.11535;
  unsigned int D.11536;
  unsigned int D.11537;
  unsigned int D.11538;
  unsigned int D.11539;
  unsigned int D.11540;
  unsigned int D.11541;
  unsigned int D.11542;
  unsigned int D.11543;
  unsigned int D.11546;
  struct WapiImageSectionHeader * D.11549;
  short unsigned int D.11550;
  short unsigned int D.11551;
  int D.11552;
  int D.11553;
  int D.11554;
  int D.11555;
  int D.11556;
  unsigned int D.11557;
  struct WapiImageSectionHeader * section;
  guint32 i;

  D.11503 = nt_headers->FileHeader.SizeOfOptionalHeader;
  D.11504 = D.11503 >> 8;
  D.11505 = (int) D.11504;
  D.11503 = nt_headers->FileHeader.SizeOfOptionalHeader;
  D.11506 = (int) D.11503;
  D.11507 = D.11506 << 8;
  D.11508 = D.11507 & 65535;
  D.11509 = D.11505 | D.11508;
  D.11510 = (long unsigned int) D.11509;
  nt_headers.12 = (long unsigned int) nt_headers;
  D.11512 = D.11510 + nt_headers.12;
  D.11513 = D.11512 + 24;
  section = (struct WapiImageSectionHeader *) D.11513;
  i = 0;
  goto <D.10423>;
  <D.10422>:
  {
    guint32 size;

    D.11514 = section->Misc.VirtualSize;
    D.11515 = D.11514 << 24;
    D.11514 = section->Misc.VirtualSize;
    D.11516 = D.11514 >> 8;
    D.11517 = D.11516 & 65280;
    D.11518 = D.11515 | D.11517;
    D.11514 = section->Misc.VirtualSize;
    D.11519 = D.11514 << 8;
    D.11520 = D.11519 & 16711680;
    D.11521 = D.11518 | D.11520;
    D.11514 = section->Misc.VirtualSize;
    D.11522 = D.11514 >> 24;
    size = D.11521 | D.11522;
    if (size == 0) goto <D.11523>; else goto <D.11524>;
    <D.11523>:
    D.11525 = section->SizeOfRawData;
    D.11526 = D.11525 << 24;
    D.11525 = section->SizeOfRawData;
    D.11527 = D.11525 >> 8;
    D.11528 = D.11527 & 65280;
    D.11529 = D.11526 | D.11528;
    D.11525 = section->SizeOfRawData;
    D.11530 = D.11525 << 8;
    D.11531 = D.11530 & 16711680;
    D.11532 = D.11529 | D.11531;
    D.11525 = section->SizeOfRawData;
    D.11533 = D.11525 >> 24;
    size = D.11532 | D.11533;
    <D.11524>:
    D.11534 = section->VirtualAddress;
    D.11535 = D.11534 << 24;
    D.11534 = section->VirtualAddress;
    D.11536 = D.11534 >> 8;
    D.11537 = D.11536 & 65280;
    D.11538 = D.11535 | D.11537;
    D.11534 = section->VirtualAddress;
    D.11539 = D.11534 << 8;
    D.11540 = D.11539 & 16711680;
    D.11541 = D.11538 | D.11540;
    D.11534 = section->VirtualAddress;
    D.11542 = D.11534 >> 24;
    D.11543 = D.11541 | D.11542;
    if (D.11543 <= rva) goto <D.11544>; else goto <D.11545>;
    <D.11544>:
    D.11534 = section->VirtualAddress;
    D.11535 = D.11534 << 24;
    D.11534 = section->VirtualAddress;
    D.11536 = D.11534 >> 8;
    D.11537 = D.11536 & 65280;
    D.11538 = D.11535 | D.11537;
    D.11534 = section->VirtualAddress;
    D.11539 = D.11534 << 8;
    D.11540 = D.11539 & 16711680;
    D.11541 = D.11538 | D.11540;
    D.11534 = section->VirtualAddress;
    D.11542 = D.11534 >> 24;
    D.11543 = D.11541 | D.11542;
    D.11546 = D.11543 + size;
    if (D.11546 > rva) goto <D.11547>; else goto <D.11548>;
    <D.11547>:
    D.11549 = section;
    return D.11549;
    <D.11548>:
    <D.11545>:
  }
  i = i + 1;
  section = section + 40;
  <D.10423>:
  D.11550 = nt_headers->FileHeader.NumberOfSections;
  D.11551 = D.11550 >> 8;
  D.11552 = (int) D.11551;
  D.11550 = nt_headers->FileHeader.NumberOfSections;
  D.11553 = (int) D.11550;
  D.11554 = D.11553 << 8;
  D.11555 = D.11554 & 65535;
  D.11556 = D.11552 | D.11555;
  D.11557 = (unsigned int) D.11556;
  if (D.11557 > i) goto <D.10422>; else goto <D.10424>;
  <D.10424>:
  D.11549 = 0B;
  return D.11549;
}


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.11559;
  unsigned int D.11560;
  unsigned int D.11561;
  unsigned int D.11562;
  unsigned int D.11563;
  unsigned int D.11564;
  unsigned int D.11565;
  unsigned int D.11566;
  unsigned int D.11567;
  unsigned int D.11568;
  unsigned int D.11569;
  unsigned int D.11570;
  unsigned int D.11571;
  unsigned int D.11572;
  unsigned int D.11573;
  unsigned int D.11574;
  unsigned int D.11575;
  unsigned int D.11576;
  unsigned int D.11577;
  unsigned int D.11578;
  <unnamed-unsigned:1> D.11579;
  <unnamed-unsigned:1> D.11580;
  <unnamed-unsigned:31> D.11581;
  <unnamed-unsigned:31> D.11582;
  void * D.11589;
  sizetype D.11604;
  short unsigned int D.11605;
  short unsigned int D.11606;
  int D.11607;
  int D.11608;
  int D.11609;
  int D.11610;
  int D.11611;
  short unsigned int D.11612;
  short unsigned int D.11613;
  int D.11614;
  int D.11615;
  int D.11616;
  int D.11617;
  int D.11618;
  int D.11619;
  long unsigned int D.11620;
  long unsigned int D.11621;
  int D.11622;
  sizetype D.11625;
  unsigned int D.11626;
  unsigned int D.11627;
  unsigned int D.11628;
  unsigned int D.11629;
  unsigned int D.11630;
  unsigned int D.11631;
  unsigned int D.11632;
  unsigned int D.11633;
  unsigned int D.11634;
  unsigned int D.11635;
  unsigned int D.11636;
  unsigned int D.11637;
  unsigned int D.11638;
  unsigned int D.11639;
  unsigned int D.11640;
  unsigned int D.11641;
  unsigned int D.11642;
  unsigned int D.11643;
  unsigned int D.11644;
  unsigned int D.11645;
  struct WapiImageResourceDirectoryEntry swapped_entry;
  gboolean is_string;
  gboolean is_dir;
  guint32 name_offset;
  guint32 dir_offset;
  guint32 data_offset;

  try
    {
      D.11559 = entry->D.9335.Name;
      D.11560 = D.11559 << 24;
      D.11559 = entry->D.9335.Name;
      D.11561 = D.11559 >> 8;
      D.11562 = D.11561 & 65280;
      D.11563 = D.11560 | D.11562;
      D.11559 = entry->D.9335.Name;
      D.11564 = D.11559 << 8;
      D.11565 = D.11564 & 16711680;
      D.11566 = D.11563 | D.11565;
      D.11559 = entry->D.9335.Name;
      D.11567 = D.11559 >> 24;
      D.11568 = D.11566 | D.11567;
      swapped_entry.D.9335.Name = D.11568;
      D.11569 = entry->D.9343.OffsetToData;
      D.11570 = D.11569 << 24;
      D.11569 = entry->D.9343.OffsetToData;
      D.11571 = D.11569 >> 8;
      D.11572 = D.11571 & 65280;
      D.11573 = D.11570 | D.11572;
      D.11569 = entry->D.9343.OffsetToData;
      D.11574 = D.11569 << 8;
      D.11575 = D.11574 & 16711680;
      D.11576 = D.11573 | D.11575;
      D.11569 = entry->D.9343.OffsetToData;
      D.11577 = D.11569 >> 24;
      D.11578 = D.11576 | D.11577;
      swapped_entry.D.9343.OffsetToData = D.11578;
      D.11579 = swapped_entry.D.9335.D.9329.NameIsString;
      is_string = (gboolean) D.11579;
      D.11580 = swapped_entry.D.9343.D.9342.DataIsDirectory;
      is_dir = (gboolean) D.11580;
      D.11581 = swapped_entry.D.9335.D.9329.NameOffset;
      name_offset = (guint32) D.11581;
      D.11582 = swapped_entry.D.9343.D.9342.OffsetToDirectory;
      dir_offset = (guint32) D.11582;
      data_offset = swapped_entry.D.9343.OffsetToData;
      if (level == 0) goto <D.11583>; else goto <D.11584>;
      <D.11583>:
      if (is_string == 0) goto <D.11588>; else goto <D.11585>;
      <D.11588>:
      if (name_offset != res_id) goto <D.11586>; else goto <D.11585>;
      <D.11585>:
      if (is_string == 1) goto <D.11586>; else goto <D.11587>;
      <D.11586>:
      D.11589 = 0B;
      return D.11589;
      <D.11587>:
      goto <D.11590>;
      <D.11584>:
      if (level == 1) goto <D.11591>; else goto <D.11592>;
      <D.11591>:
      goto <D.11593>;
      <D.11592>:
      if (level == 2) goto <D.11594>; else goto <D.11595>;
      <D.11594>:
      if (is_string == 0) goto <D.11599>; else goto <D.11596>;
      <D.11599>:
      if (name_offset != lang_id) goto <D.11600>; else goto <D.11596>;
      <D.11600>:
      if (lang_id != 0) goto <D.11597>; else goto <D.11596>;
      <D.11596>:
      if (is_string == 1) goto <D.11597>; else goto <D.11598>;
      <D.11597>:
      D.11589 = 0B;
      return D.11589;
      <D.11598>:
      goto <D.11601>;
      <D.11595>:
      monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "versioninfo.c", 121);
      <D.11601>:
      <D.11593>:
      <D.11590>:
      if (is_dir == 1) goto <D.11602>; else goto <D.11603>;
      <D.11602>:
      {
        struct WapiImageResourceDirectory * res_dir;
        struct WapiImageResourceDirectoryEntry * sub_entries;
        guint32 entries;
        guint32 i;

        D.11604 = (sizetype) dir_offset;
        res_dir = root + D.11604;
        sub_entries = res_dir + 16;
        D.11605 = res_dir->NumberOfNamedEntries;
        D.11606 = D.11605 >> 8;
        D.11607 = (int) D.11606;
        D.11605 = res_dir->NumberOfNamedEntries;
        D.11608 = (int) D.11605;
        D.11609 = D.11608 << 8;
        D.11610 = D.11609 & 65535;
        D.11611 = D.11607 | D.11610;
        D.11612 = res_dir->NumberOfIdEntries;
        D.11613 = D.11612 >> 8;
        D.11614 = (int) D.11613;
        D.11612 = res_dir->NumberOfIdEntries;
        D.11615 = (int) D.11612;
        D.11616 = D.11615 << 8;
        D.11617 = D.11616 & 65535;
        D.11618 = D.11614 | D.11617;
        D.11619 = D.11611 + D.11618;
        entries = (guint32) D.11619;
        i = 0;
        goto <D.10455>;
        <D.10454>:
        {
          struct WapiImageResourceDirectoryEntry * sub_entry;
          void * ret;

          D.11620 = (long unsigned int) i;
          D.11621 = D.11620 * 8;
          sub_entry = sub_entries + D.11621;
          D.11622 = level + 1;
          ret = scan_resource_dir (root, nt_headers, file_map, sub_entry, D.11622, res_id, lang_id, size);
          if (ret != 0B) goto <D.11623>; else goto <D.11624>;
          <D.11623>:
          D.11589 = ret;
          return D.11589;
          <D.11624>:
        }
        i = i + 1;
        <D.10455>:
        if (i < entries) goto <D.10454>; else goto <D.10456>;
        <D.10456>:
        D.11589 = 0B;
        return D.11589;
      }
      <D.11603>:
      {
        struct WapiImageResourceDataEntry * data_entry;

        D.11625 = (sizetype) data_offset;
        data_entry = root + D.11625;
        D.11626 = data_entry->Size;
        D.11627 = D.11626 << 24;
        D.11626 = data_entry->Size;
        D.11628 = D.11626 >> 8;
        D.11629 = D.11628 & 65280;
        D.11630 = D.11627 | D.11629;
        D.11626 = data_entry->Size;
        D.11631 = D.11626 << 8;
        D.11632 = D.11631 & 16711680;
        D.11633 = D.11630 | D.11632;
        D.11626 = data_entry->Size;
        D.11634 = D.11626 >> 24;
        D.11635 = D.11633 | D.11634;
        *size = D.11635;
        D.11636 = data_entry->OffsetToData;
        D.11637 = D.11636 << 24;
        D.11636 = data_entry->OffsetToData;
        D.11638 = D.11636 >> 8;
        D.11639 = D.11638 & 65280;
        D.11640 = D.11637 | D.11639;
        D.11636 = data_entry->OffsetToData;
        D.11641 = D.11636 << 8;
        D.11642 = D.11641 & 16711680;
        D.11643 = D.11640 | D.11642;
        D.11636 = data_entry->OffsetToData;
        D.11644 = D.11636 >> 24;
        D.11645 = D.11643 | D.11644;
        D.11589 = get_ptr_from_rva (D.11645, nt_headers, file_map);
        return D.11589;
      }
    }
  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.11650;
  int map_size.13;
  unsigned int map_size.14;
  unsigned int size.15;
  unsigned int D.11656;
  long unsigned int D.11657;
  void * map_handle.16;
  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.11648>; else goto <D.11649>;
      <D.11648>:
      D.11650 = 0;
      return D.11650;
      <D.11649>:
      map_size.13 = map_size;
      map_size.14 = (unsigned int) map_size.13;
      versioninfo = find_pe_file_resources (file_map, map_size.14, 16, 0, &size);
      if (versioninfo != 0B) goto <D.11653>; else goto <D.11654>;
      <D.11653>:
      size.15 = size;
      D.11656 = MIN_EXPR <size.15, len>;
      D.11657 = (long unsigned int) D.11656;
      memcpy (data, versioninfo, D.11657);
      ret = 1;
      size.15 = size;
      big_up (data, size.15);
      <D.11654>:
      map_handle.16 = map_handle;
      unmap_pe_file (file_map, map_handle.16);
      D.11650 = ret;
      return D.11650;
    }
  finally
    {
      map_handle = {CLOBBER};
      map_size = {CLOBBER};
      size = {CLOBBER};
    }
}


big_up (const void * datablock, guint32 size)
{
  unsigned int D.11663;
  unsigned int D.11664;
  unsigned int D.11665;
  unsigned int D.11666;
  unsigned int D.11667;
  unsigned int D.11668;
  unsigned int D.11669;
  unsigned int D.11670;
  unsigned int D.11671;
  unsigned int D.11672;
  unsigned int D.11673;
  unsigned int D.11674;
  unsigned int D.11675;
  unsigned int D.11676;
  unsigned int D.11677;
  unsigned int D.11678;
  unsigned int D.11679;
  unsigned int D.11680;
  unsigned int D.11681;
  unsigned int D.11682;
  unsigned int D.11683;
  unsigned int D.11684;
  unsigned int D.11685;
  unsigned int D.11686;
  unsigned int D.11687;
  unsigned int D.11688;
  unsigned int D.11689;
  unsigned int D.11690;
  unsigned int D.11691;
  unsigned int D.11692;
  unsigned int D.11693;
  unsigned int D.11694;
  unsigned int D.11695;
  unsigned int D.11696;
  unsigned int D.11697;
  unsigned int D.11698;
  unsigned int D.11699;
  unsigned int D.11700;
  unsigned int D.11701;
  unsigned int D.11702;
  unsigned int D.11703;
  unsigned int D.11704;
  unsigned int D.11705;
  unsigned int D.11706;
  unsigned int D.11707;
  unsigned int D.11708;
  unsigned int D.11709;
  unsigned int D.11710;
  unsigned int D.11711;
  unsigned int D.11712;
  unsigned int D.11713;
  unsigned int D.11714;
  unsigned int D.11715;
  unsigned int D.11716;
  unsigned int D.11717;
  unsigned int D.11718;
  unsigned int D.11719;
  unsigned int D.11720;
  unsigned int D.11721;
  unsigned int D.11722;
  unsigned int D.11723;
  unsigned int D.11724;
  unsigned int D.11725;
  unsigned int D.11726;
  unsigned int D.11727;
  unsigned int D.11728;
  unsigned int D.11729;
  unsigned int D.11730;
  unsigned int D.11731;
  unsigned int D.11732;
  unsigned int D.11733;
  unsigned int D.11734;
  unsigned int D.11735;
  unsigned int D.11736;
  unsigned int D.11737;
  unsigned int D.11738;
  unsigned int D.11739;
  unsigned int D.11740;
  unsigned int D.11741;
  unsigned int D.11742;
  unsigned int D.11743;
  unsigned int D.11744;
  unsigned int D.11745;
  unsigned int D.11746;
  unsigned int D.11747;
  unsigned int D.11748;
  unsigned int D.11749;
  unsigned int D.11750;
  unsigned int D.11751;
  unsigned int D.11752;
  unsigned int D.11753;
  unsigned int D.11754;
  unsigned int D.11755;
  unsigned int D.11756;
  unsigned int D.11757;
  unsigned int D.11758;
  unsigned int D.11759;
  unsigned int D.11760;
  unsigned int D.11761;
  unsigned int D.11762;
  unsigned int D.11763;
  unsigned int D.11764;
  unsigned int D.11765;
  unsigned int D.11766;
  unsigned int D.11767;
  unsigned int D.11768;
  unsigned int D.11769;
  unsigned int D.11770;
  unsigned int D.11771;
  unsigned int D.11772;
  short unsigned int D.11773;
  int D.11774;
  gunichar2 * D.11777;
  int D.11778;
  short unsigned int D.11781;
  sizetype D.11782;
  int D.11784;
  const void * data_ptr;
  gint32 data_len;
  struct version_data block;

  try
    {
      data_ptr = get_fixedfileinfo_block (datablock, &block);
      if (data_ptr != 0B) goto <D.11661>; else goto <D.11662>;
      <D.11661>:
      {
        struct WapiFixedFileInfo * ffi;

        ffi = data_ptr;
        D.11663 = ffi->dwFileVersionMS;
        D.11664 = D.11663 << 24;
        D.11663 = ffi->dwFileVersionMS;
        D.11665 = D.11663 >> 8;
        D.11666 = D.11665 & 65280;
        D.11667 = D.11664 | D.11666;
        D.11663 = ffi->dwFileVersionMS;
        D.11668 = D.11663 << 8;
        D.11669 = D.11668 & 16711680;
        D.11670 = D.11667 | D.11669;
        D.11663 = ffi->dwFileVersionMS;
        D.11671 = D.11663 >> 24;
        D.11672 = D.11670 | D.11671;
        ffi->dwFileVersionMS = D.11672;
        D.11673 = ffi->dwFileVersionLS;
        D.11674 = D.11673 << 24;
        D.11673 = ffi->dwFileVersionLS;
        D.11675 = D.11673 >> 8;
        D.11676 = D.11675 & 65280;
        D.11677 = D.11674 | D.11676;
        D.11673 = ffi->dwFileVersionLS;
        D.11678 = D.11673 << 8;
        D.11679 = D.11678 & 16711680;
        D.11680 = D.11677 | D.11679;
        D.11673 = ffi->dwFileVersionLS;
        D.11681 = D.11673 >> 24;
        D.11682 = D.11680 | D.11681;
        ffi->dwFileVersionLS = D.11682;
        D.11683 = ffi->dwProductVersionMS;
        D.11684 = D.11683 << 24;
        D.11683 = ffi->dwProductVersionMS;
        D.11685 = D.11683 >> 8;
        D.11686 = D.11685 & 65280;
        D.11687 = D.11684 | D.11686;
        D.11683 = ffi->dwProductVersionMS;
        D.11688 = D.11683 << 8;
        D.11689 = D.11688 & 16711680;
        D.11690 = D.11687 | D.11689;
        D.11683 = ffi->dwProductVersionMS;
        D.11691 = D.11683 >> 24;
        D.11692 = D.11690 | D.11691;
        ffi->dwProductVersionMS = D.11692;
        D.11693 = ffi->dwProductVersionLS;
        D.11694 = D.11693 << 24;
        D.11693 = ffi->dwProductVersionLS;
        D.11695 = D.11693 >> 8;
        D.11696 = D.11695 & 65280;
        D.11697 = D.11694 | D.11696;
        D.11693 = ffi->dwProductVersionLS;
        D.11698 = D.11693 << 8;
        D.11699 = D.11698 & 16711680;
        D.11700 = D.11697 | D.11699;
        D.11693 = ffi->dwProductVersionLS;
        D.11701 = D.11693 >> 24;
        D.11702 = D.11700 | D.11701;
        ffi->dwProductVersionLS = D.11702;
        D.11703 = ffi->dwFileFlagsMask;
        D.11704 = D.11703 << 24;
        D.11703 = ffi->dwFileFlagsMask;
        D.11705 = D.11703 >> 8;
        D.11706 = D.11705 & 65280;
        D.11707 = D.11704 | D.11706;
        D.11703 = ffi->dwFileFlagsMask;
        D.11708 = D.11703 << 8;
        D.11709 = D.11708 & 16711680;
        D.11710 = D.11707 | D.11709;
        D.11703 = ffi->dwFileFlagsMask;
        D.11711 = D.11703 >> 24;
        D.11712 = D.11710 | D.11711;
        ffi->dwFileFlagsMask = D.11712;
        D.11713 = ffi->dwFileFlags;
        D.11714 = D.11713 << 24;
        D.11713 = ffi->dwFileFlags;
        D.11715 = D.11713 >> 8;
        D.11716 = D.11715 & 65280;
        D.11717 = D.11714 | D.11716;
        D.11713 = ffi->dwFileFlags;
        D.11718 = D.11713 << 8;
        D.11719 = D.11718 & 16711680;
        D.11720 = D.11717 | D.11719;
        D.11713 = ffi->dwFileFlags;
        D.11721 = D.11713 >> 24;
        D.11722 = D.11720 | D.11721;
        ffi->dwFileFlags = D.11722;
        D.11723 = ffi->dwFileOS;
        D.11724 = D.11723 << 24;
        D.11723 = ffi->dwFileOS;
        D.11725 = D.11723 >> 8;
        D.11726 = D.11725 & 65280;
        D.11727 = D.11724 | D.11726;
        D.11723 = ffi->dwFileOS;
        D.11728 = D.11723 << 8;
        D.11729 = D.11728 & 16711680;
        D.11730 = D.11727 | D.11729;
        D.11723 = ffi->dwFileOS;
        D.11731 = D.11723 >> 24;
        D.11732 = D.11730 | D.11731;
        ffi->dwFileOS = D.11732;
        D.11733 = ffi->dwFileType;
        D.11734 = D.11733 << 24;
        D.11733 = ffi->dwFileType;
        D.11735 = D.11733 >> 8;
        D.11736 = D.11735 & 65280;
        D.11737 = D.11734 | D.11736;
        D.11733 = ffi->dwFileType;
        D.11738 = D.11733 << 8;
        D.11739 = D.11738 & 16711680;
        D.11740 = D.11737 | D.11739;
        D.11733 = ffi->dwFileType;
        D.11741 = D.11733 >> 24;
        D.11742 = D.11740 | D.11741;
        ffi->dwFileType = D.11742;
        D.11743 = ffi->dwFileSubtype;
        D.11744 = D.11743 << 24;
        D.11743 = ffi->dwFileSubtype;
        D.11745 = D.11743 >> 8;
        D.11746 = D.11745 & 65280;
        D.11747 = D.11744 | D.11746;
        D.11743 = ffi->dwFileSubtype;
        D.11748 = D.11743 << 8;
        D.11749 = D.11748 & 16711680;
        D.11750 = D.11747 | D.11749;
        D.11743 = ffi->dwFileSubtype;
        D.11751 = D.11743 >> 24;
        D.11752 = D.11750 | D.11751;
        ffi->dwFileSubtype = D.11752;
        D.11753 = ffi->dwFileDateMS;
        D.11754 = D.11753 << 24;
        D.11753 = ffi->dwFileDateMS;
        D.11755 = D.11753 >> 8;
        D.11756 = D.11755 & 65280;
        D.11757 = D.11754 | D.11756;
        D.11753 = ffi->dwFileDateMS;
        D.11758 = D.11753 << 8;
        D.11759 = D.11758 & 16711680;
        D.11760 = D.11757 | D.11759;
        D.11753 = ffi->dwFileDateMS;
        D.11761 = D.11753 >> 24;
        D.11762 = D.11760 | D.11761;
        ffi->dwFileDateMS = D.11762;
        D.11763 = ffi->dwFileDateLS;
        D.11764 = D.11763 << 24;
        D.11763 = ffi->dwFileDateLS;
        D.11765 = D.11763 >> 8;
        D.11766 = D.11765 & 65280;
        D.11767 = D.11764 | D.11766;
        D.11763 = ffi->dwFileDateLS;
        D.11768 = D.11763 << 8;
        D.11769 = D.11768 & 16711680;
        D.11770 = D.11767 | D.11769;
        D.11763 = ffi->dwFileDateLS;
        D.11771 = D.11763 >> 24;
        D.11772 = D.11770 | D.11771;
        ffi->dwFileDateLS = D.11772;
        data_ptr = data_ptr + 52;
        D.11773 = block.data_len;
        D.11774 = (int) D.11773;
        data_len = D.11774 + -92;
        goto <D.10614>;
        <D.10613>:
        data_ptr = data_ptr + 3;
        data_ptr = data_ptr & -4B;
        data_ptr = get_versioninfo_block (data_ptr, &block);
        D.11773 = block.data_len;
        if (D.11773 == 0) goto <D.11775>; else goto <D.11776>;
        <D.11775>:
        return;
        <D.11776>:
        D.11773 = block.data_len;
        D.11774 = (int) D.11773;
        data_len = data_len - D.11774;
        D.11777 = block.key;
        D.11778 = unicode_string_equals (D.11777, "VarFileInfo");
        if (D.11778 != 0) goto <D.11779>; else goto <D.11780>;
        <D.11779>:
        data_ptr = get_varfileinfo_block (data_ptr, &block);
        D.11781 = block.value_len;
        D.11782 = (sizetype) D.11781;
        data_ptr = data_ptr + D.11782;
        goto <D.11783>;
        <D.11780>:
        D.11777 = block.key;
        D.11784 = unicode_string_equals (D.11777, "StringFileInfo");
        if (D.11784 != 0) goto <D.11785>; else goto <D.11786>;
        <D.11785>:
        data_ptr = big_up_stringtable_block (data_ptr, &block);
        goto <D.11787>;
        <D.11786>:
        return;
        <D.11787>:
        <D.11783>:
        if (data_ptr == 0B) goto <D.11788>; else goto <D.11789>;
        <D.11788>:
        return;
        <D.11789>:
        <D.10614>:
        if (data_len > 0) goto <D.10613>; else goto <D.10615>;
        <D.10615>:
      }
      <D.11662>:
    }
  finally
    {
      block = {CLOBBER};
    }
}


big_up_stringtable_block (const void * data_ptr, struct version_data * block)
{
  short unsigned int D.11793;
  const void * D.11796;
  gunichar2 * D.11797;
  guint16 data_len;
  guint16 string_len;
  gchar * big_value;

  data_len = block->data_len;
  string_len = 36;
  goto <D.10603>;
  <D.10602>:
  data_ptr = data_ptr + 3;
  data_ptr = data_ptr & -4B;
  data_ptr = get_versioninfo_block (data_ptr, block);
  D.11793 = block->data_len;
  if (D.11793 == 0) goto <D.11794>; else goto <D.11795>;
  <D.11794>:
  D.11796 = 0B;
  return D.11796;
  <D.11795>:
  D.11793 = block->data_len;
  string_len = D.11793 + string_len;
  D.11797 = block->key;
  big_value = monoeg_g_convert (D.11797, 16, "UTF-16BE", "UTF-16LE", 0B, 0B, 0B);
  if (big_value == 0B) goto <D.11798>; else goto <D.11799>;
  <D.11798>:
  D.11796 = 0B;
  return D.11796;
  <D.11799>:
  D.11797 = block->key;
  memcpy (D.11797, big_value, 16);
  monoeg_g_free (big_value);
  data_ptr = big_up_string_block (data_ptr, block);
  if (data_ptr == 0B) goto <D.11800>; else goto <D.11801>;
  <D.11800>:
  D.11796 = 0B;
  return D.11796;
  <D.11801>:
  <D.10603>:
  if (string_len < data_len) goto <D.10602>; else goto <D.10604>;
  <D.10604>:
  D.11796 = data_ptr;
  return D.11796;
}


big_up_string_block (const void * data_ptr, struct version_data * block)
{
  short unsigned int D.11803;
  const void * D.11806;
  gunichar2 * D.11807;
  unsigned int D.11808;
  unsigned int D.11809;
  long int D.11810;
  unsigned int D.11813;
  unsigned int D.11814;
  long unsigned int D.11815;
  unsigned int D.11816;
  unsigned int D.11817;
  long int D.11818;
  unsigned int D.11821;
  unsigned int D.11822;
  long unsigned int D.11823;
  short unsigned int D.11824;
  long unsigned int D.11825;
  long unsigned int D.11826;
  long int data_ptr.17;
  long int orig_data_ptr.18;
  long int D.11829;
  long int D.11830;
  guint16 data_len;
  guint16 string_len;
  gchar * big_value;
  char * orig_data_ptr;

  data_len = block->data_len;
  string_len = 28;
  orig_data_ptr = data_ptr + 18446744073709551588;
  goto <D.10593>;
  <D.10592>:
  data_ptr = data_ptr + 3;
  data_ptr = data_ptr & -4B;
  data_ptr = get_versioninfo_block (data_ptr, block);
  D.11803 = block->data_len;
  if (D.11803 == 0) goto <D.11804>; else goto <D.11805>;
  <D.11804>:
  D.11806 = 0B;
  return D.11806;
  <D.11805>:
  D.11803 = block->data_len;
  string_len = D.11803 + string_len;
  D.11807 = block->key;
  D.11807 = block->key;
  D.11808 = unicode_chars (D.11807);
  D.11809 = D.11808 * 2;
  D.11810 = (long int) D.11809;
  big_value = monoeg_g_convert (D.11807, D.11810, "UTF-16BE", "UTF-16LE", 0B, 0B, 0B);
  if (big_value == 0B) goto <D.11811>; else goto <D.11812>;
  <D.11811>:
  D.11806 = 0B;
  return D.11806;
  <D.11812>:
  D.11807 = block->key;
  D.11807 = block->key;
  D.11813 = unicode_chars (D.11807);
  D.11814 = D.11813 * 2;
  D.11815 = (long unsigned int) D.11814;
  memcpy (D.11807, big_value, D.11815);
  monoeg_g_free (big_value);
  D.11816 = unicode_chars (data_ptr);
  D.11817 = D.11816 * 2;
  D.11818 = (long int) D.11817;
  big_value = monoeg_g_convert (data_ptr, D.11818, "UTF-16BE", "UTF-16LE", 0B, 0B, 0B);
  if (big_value == 0B) goto <D.11819>; else goto <D.11820>;
  <D.11819>:
  D.11806 = 0B;
  return D.11806;
  <D.11820>:
  D.11821 = unicode_chars (data_ptr);
  D.11822 = D.11821 * 2;
  D.11823 = (long unsigned int) D.11822;
  memcpy (data_ptr, big_value, D.11823);
  monoeg_g_free (big_value);
  D.11824 = block->value_len;
  D.11825 = (long unsigned int) D.11824;
  D.11826 = D.11825 * 2;
  data_ptr = data_ptr + D.11826;
  <D.10593>:
  data_ptr.17 = (long int) data_ptr;
  orig_data_ptr.18 = (long int) orig_data_ptr;
  D.11829 = data_ptr.17 - orig_data_ptr.18;
  D.11830 = (long int) data_len;
  if (D.11829 < D.11830) goto <D.10592>; else goto <D.10594>;
  <D.10594>:
  D.11806 = data_ptr;
  return D.11806;
}


VerLanguageName (guint32 lang, gunichar2 * lang_out, guint32 lang_len)
{
  int lang.19;
  unsigned int D.11833;
  int D.11834;
  guint32 D.11950;
  int primary;
  int secondary;
  const char * name;

  name = 0B;
  lang.19 = (int) lang;
  primary = lang.19 & 1023;
  D.11833 = lang >> 10;
  D.11834 = (int) D.11833;
  secondary = D.11834 & 63;
  switch (primary) <default: <D.11185>, case 0: <D.10676>, case 1: <D.10680>, case 2: <D.10699>, case 3: <D.10703>, case 4: <D.10707>, case 5: <D.10715>, case 6: <D.10719>, case 7: <D.10723>, case 8: <D.10731>, case 9: <D.10735>, case 10: <D.10754>, case 11: <D.10778>, case 12: <D.10782>, case 13: <D.10791>, case 14: <D.10795>, case 15: <D.10799>, case 16: <D.10803>, case 17: <D.10808>, case 18: <D.10812>, case 19: <D.10816>, case 20: <D.10821>, case 21: <D.10826>, case 22: <D.10830>, case 23: <D.10835>, case 24: <D.10838>, case 25: <D.10842>, case 26: <D.10846>, case 27: <D.10857>, case 28: <D.10861>, case 29: <D.10865>, case 30: <D.10870>, case 31: <D.10874>, case 32: <D.10878>, case 33: <D.10882>, case 34: <D.10886>, case 35: <D.10890>, case 36: <D.10894>, case 37: <D.10898>, case 38: <D.10902>, case 39: <D.10906>, case 40: <D.10910>, case 41: <D.10913>, case 42: <D.10917>, case 43: <D.10921>, case 44: <D.10925>, case 45: <D.10930>, case 46: <D.10934>, case 47: <D.10938>, case 50: <D.10942>, case 52: <D.10946>, case 53: <D.10950>, case 54: <D.10954>, case 55: <D.10958>, case 56: <D.10962>, case 57: <D.10966>, case 58: <D.10970>, case 59: <D.10974>, case 60: <D.10986>, case 62: <D.10989>, case 63: <D.10994>, case 64: <D.10998>, case 65: <D.11002>, case 66: <D.11006>, case 67: <D.11009>, case 68: <D.11014>, case 69: <D.11018>, case 70: <D.11022>, case 71: <D.11026>, case 73: <D.11030>, case 74: <D.11034>, case 75: <D.11038>, case 76: <D.11042>, case 77: <D.11046>, case 78: <D.11049>, case 79: <D.11053>, case 80: <D.11057>, case 81: <D.11062>, case 82: <D.11066>, case 83: <D.11070>, case 84: <D.11073>, case 86: <D.11076>, case 87: <D.11080>, case 90: <D.11084>, case 91: <D.11088>, case 93: <D.11091>, case 94: <D.11095>, case 95: <D.11098>, case 97: <D.11101>, case 98: <D.11104>, case 99: <D.11107>, case 100: <D.11110>, case 101: <D.11113>, case 104: <D.11117>, case 106: <D.11120>, case 107: <D.11123>, case 108: <D.11129>, case 109: <D.11133>, case 110: <D.11136>, case 111: <D.11139>, case 120: <D.11142>, case 122: <D.11145>, case 124: <D.11148>, case 126: <D.11151>, case 127: <D.11154>, case 128: <D.11157>, case 129: <D.11160>, case 131: <D.11164>, case 132: <D.11167>, case 133: <D.11170>, case 134: <D.11173>, case 135: <D.11176>, case 136: <D.11179>, case 140: <D.11182>>
  <D.10676>:
  switch (secondary) <default: <D.11835>, case 1: <D.10677>>
  <D.10677>:
  name = "Process Default Language";
  goto <D.10678>;
  <D.11835>:
  <D.10678>:
  goto <D.10679>;
  <D.10680>:
  switch (secondary) <default: <D.11836>, case 0: <D.10681>, case 1: <D.10682>, case 2: <D.10684>, case 3: <D.10685>, case 4: <D.10686>, case 5: <D.10687>, case 6: <D.10688>, case 7: <D.10689>, case 8: <D.10690>, case 9: <D.10691>, case 10: <D.10692>, case 11: <D.10693>, case 12: <D.10694>, case 13: <D.10695>, case 14: <D.10696>, case 15: <D.10697>, case 16: <D.10698>>
  <D.10681>:
  <D.10682>:
  name = "Arabic (Saudi Arabia)";
  goto <D.10683>;
  <D.10684>:
  name = "Arabic (Iraq)";
  goto <D.10683>;
  <D.10685>:
  name = "Arabic (Egypt)";
  goto <D.10683>;
  <D.10686>:
  name = "Arabic (Libya)";
  goto <D.10683>;
  <D.10687>:
  name = "Arabic (Algeria)";
  goto <D.10683>;
  <D.10688>:
  name = "Arabic (Morocco)";
  goto <D.10683>;
  <D.10689>:
  name = "Arabic (Tunisia)";
  goto <D.10683>;
  <D.10690>:
  name = "Arabic (Oman)";
  goto <D.10683>;
  <D.10691>:
  name = "Arabic (Yemen)";
  goto <D.10683>;
  <D.10692>:
  name = "Arabic (Syria)";
  goto <D.10683>;
  <D.10693>:
  name = "Arabic (Jordan)";
  goto <D.10683>;
  <D.10694>:
  name = "Arabic (Lebanon)";
  goto <D.10683>;
  <D.10695>:
  name = "Arabic (Kuwait)";
  goto <D.10683>;
  <D.10696>:
  name = "Arabic (U.A.E.)";
  goto <D.10683>;
  <D.10697>:
  name = "Arabic (Bahrain)";
  goto <D.10683>;
  <D.10698>:
  name = "Arabic (Qatar)";
  goto <D.10683>;
  <D.11836>:
  <D.10683>:
  goto <D.10679>;
  <D.10699>:
  switch (secondary) <default: <D.11837>, case 0: <D.10700>, case 1: <D.10702>>
  <D.10700>:
  name = "Bulgarian (Bulgaria)";
  goto <D.10701>;
  <D.10702>:
  name = "Bulgarian";
  goto <D.10701>;
  <D.11837>:
  <D.10701>:
  goto <D.10679>;
  <D.10703>:
  switch (secondary) <default: <D.11838>, case 0: <D.10704>, case 1: <D.10706>>
  <D.10704>:
  name = "Catalan (Spain)";
  goto <D.10705>;
  <D.10706>:
  name = "Catalan";
  goto <D.10705>;
  <D.11838>:
  <D.10705>:
  goto <D.10679>;
  <D.10707>:
  switch (secondary) <default: <D.11839>, case 0: <D.10708>, case 1: <D.10709>, case 2: <D.10711>, case 3: <D.10712>, case 4: <D.10713>, case 5: <D.10714>>
  <D.10708>:
  <D.10709>:
  name = "Chinese (Taiwan)";
  goto <D.10710>;
  <D.10711>:
  name = "Chinese (PRC)";
  goto <D.10710>;
  <D.10712>:
  name = "Chinese (Hong Kong S.A.R.)";
  goto <D.10710>;
  <D.10713>:
  name = "Chinese (Singapore)";
  goto <D.10710>;
  <D.10714>:
  name = "Chinese (Macau S.A.R.)";
  goto <D.10710>;
  <D.11839>:
  <D.10710>:
  goto <D.10679>;
  <D.10715>:
  switch (secondary) <default: <D.11840>, case 0: <D.10716>, case 1: <D.10718>>
  <D.10716>:
  name = "Czech (Czech Republic)";
  goto <D.10717>;
  <D.10718>:
  name = "Czech";
  goto <D.10717>;
  <D.11840>:
  <D.10717>:
  goto <D.10679>;
  <D.10719>:
  switch (secondary) <default: <D.11841>, case 0: <D.10720>, case 1: <D.10722>>
  <D.10720>:
  name = "Danish (Denmark)";
  goto <D.10721>;
  <D.10722>:
  name = "Danish";
  goto <D.10721>;
  <D.11841>:
  <D.10721>:
  goto <D.10679>;
  <D.10723>:
  switch (secondary) <default: <D.11842>, case 0: <D.10724>, case 1: <D.10725>, case 2: <D.10727>, case 3: <D.10728>, case 4: <D.10729>, case 5: <D.10730>>
  <D.10724>:
  <D.10725>:
  name = "German (Germany)";
  goto <D.10726>;
  <D.10727>:
  name = "German (Switzerland)";
  goto <D.10726>;
  <D.10728>:
  name = "German (Austria)";
  goto <D.10726>;
  <D.10729>:
  name = "German (Luxembourg)";
  goto <D.10726>;
  <D.10730>:
  name = "German (Liechtenstein)";
  goto <D.10726>;
  <D.11842>:
  <D.10726>:
  goto <D.10679>;
  <D.10731>:
  switch (secondary) <default: <D.11843>, case 0: <D.10732>, case 1: <D.10734>>
  <D.10732>:
  name = "Greek (Greece)";
  goto <D.10733>;
  <D.10734>:
  name = "Greek";
  goto <D.10733>;
  <D.11843>:
  <D.10733>:
  goto <D.10679>;
  <D.10735>:
  switch (secondary) <default: <D.11844>, case 0: <D.10736>, case 1: <D.10737>, case 2: <D.10739>, case 3: <D.10740>, case 4: <D.10741>, case 5: <D.10742>, case 6: <D.10743>, case 7: <D.10744>, case 8: <D.10745>, case 9: <D.10746>, case 10: <D.10747>, case 11: <D.10748>, case 12: <D.10749>, case 13: <D.10750>, case 16: <D.10751>, case 17: <D.10752>, case 18: <D.10753>>
  <D.10736>:
  <D.10737>:
  name = "English (United States)";
  goto <D.10738>;
  <D.10739>:
  name = "English (United Kingdom)";
  goto <D.10738>;
  <D.10740>:
  name = "English (Australia)";
  goto <D.10738>;
  <D.10741>:
  name = "English (Canada)";
  goto <D.10738>;
  <D.10742>:
  name = "English (New Zealand)";
  goto <D.10738>;
  <D.10743>:
  name = "English (Ireland)";
  goto <D.10738>;
  <D.10744>:
  name = "English (South Africa)";
  goto <D.10738>;
  <D.10745>:
  name = "English (Jamaica)";
  goto <D.10738>;
  <D.10746>:
  name = "English (Caribbean)";
  goto <D.10738>;
  <D.10747>:
  name = "English (Belize)";
  goto <D.10738>;
  <D.10748>:
  name = "English (Trinidad and Tobago)";
  goto <D.10738>;
  <D.10749>:
  name = "English (Zimbabwe)";
  goto <D.10738>;
  <D.10750>:
  name = "English (Philippines)";
  goto <D.10738>;
  <D.10751>:
  name = "English (India)";
  goto <D.10738>;
  <D.10752>:
  name = "English (Malaysia)";
  goto <D.10738>;
  <D.10753>:
  name = "English (Singapore)";
  goto <D.10738>;
  <D.11844>:
  <D.10738>:
  goto <D.10679>;
  <D.10754>:
  switch (secondary) <default: <D.11845>, case 0: <D.10755>, case 1: <D.10757>, case 2: <D.10758>, case 3: <D.10759>, case 4: <D.10760>, case 5: <D.10761>, case 6: <D.10762>, case 7: <D.10763>, case 8: <D.10764>, case 9: <D.10765>, case 10: <D.10766>, case 11: <D.10767>, case 12: <D.10768>, case 13: <D.10769>, case 14: <D.10770>, case 15: <D.10771>, case 16: <D.10772>, case 17: <D.10773>, case 18: <D.10774>, case 19: <D.10775>, case 20: <D.10776>, case 21: <D.10777>>
  <D.10755>:
  name = "Spanish (Spain)";
  goto <D.10756>;
  <D.10757>:
  name = "Spanish (Traditional Sort)";
  goto <D.10756>;
  <D.10758>:
  name = "Spanish (Mexico)";
  goto <D.10756>;
  <D.10759>:
  name = "Spanish (International Sort)";
  goto <D.10756>;
  <D.10760>:
  name = "Spanish (Guatemala)";
  goto <D.10756>;
  <D.10761>:
  name = "Spanish (Costa Rica)";
  goto <D.10756>;
  <D.10762>:
  name = "Spanish (Panama)";
  goto <D.10756>;
  <D.10763>:
  name = "Spanish (Dominican Republic)";
  goto <D.10756>;
  <D.10764>:
  name = "Spanish (Venezuela)";
  goto <D.10756>;
  <D.10765>:
  name = "Spanish (Colombia)";
  goto <D.10756>;
  <D.10766>:
  name = "Spanish (Peru)";
  goto <D.10756>;
  <D.10767>:
  name = "Spanish (Argentina)";
  goto <D.10756>;
  <D.10768>:
  name = "Spanish (Ecuador)";
  goto <D.10756>;
  <D.10769>:
  name = "Spanish (Chile)";
  goto <D.10756>;
  <D.10770>:
  name = "Spanish (Uruguay)";
  goto <D.10756>;
  <D.10771>:
  name = "Spanish (Paraguay)";
  goto <D.10756>;
  <D.10772>:
  name = "Spanish (Bolivia)";
  goto <D.10756>;
  <D.10773>:
  name = "Spanish (El Salvador)";
  goto <D.10756>;
  <D.10774>:
  name = "Spanish (Honduras)";
  goto <D.10756>;
  <D.10775>:
  name = "Spanish (Nicaragua)";
  goto <D.10756>;
  <D.10776>:
  name = "Spanish (Puerto Rico)";
  goto <D.10756>;
  <D.10777>:
  name = "Spanish (United States)";
  goto <D.10756>;
  <D.11845>:
  <D.10756>:
  goto <D.10679>;
  <D.10778>:
  switch (secondary) <default: <D.11846>, case 0: <D.10779>, case 1: <D.10781>>
  <D.10779>:
  name = "Finnish (Finland)";
  goto <D.10780>;
  <D.10781>:
  name = "Finnish";
  goto <D.10780>;
  <D.11846>:
  <D.10780>:
  goto <D.10679>;
  <D.10782>:
  switch (secondary) <default: <D.11847>, case 0: <D.10783>, case 1: <D.10784>, case 2: <D.10786>, case 3: <D.10787>, case 4: <D.10788>, case 5: <D.10789>, case 6: <D.10790>>
  <D.10783>:
  <D.10784>:
  name = "French (France)";
  goto <D.10785>;
  <D.10786>:
  name = "French (Belgium)";
  goto <D.10785>;
  <D.10787>:
  name = "French (Canada)";
  goto <D.10785>;
  <D.10788>:
  name = "French (Switzerland)";
  goto <D.10785>;
  <D.10789>:
  name = "French (Luxembourg)";
  goto <D.10785>;
  <D.10790>:
  name = "French (Monaco)";
  goto <D.10785>;
  <D.11847>:
  <D.10785>:
  goto <D.10679>;
  <D.10791>:
  switch (secondary) <default: <D.11848>, case 0: <D.10792>, case 1: <D.10794>>
  <D.10792>:
  name = "Hebrew (Israel)";
  goto <D.10793>;
  <D.10794>:
  name = "Hebrew";
  goto <D.10793>;
  <D.11848>:
  <D.10793>:
  goto <D.10679>;
  <D.10795>:
  switch (secondary) <default: <D.11849>, case 0: <D.10796>, case 1: <D.10798>>
  <D.10796>:
  name = "Hungarian (Hungary)";
  goto <D.10797>;
  <D.10798>:
  name = "Hungarian";
  goto <D.10797>;
  <D.11849>:
  <D.10797>:
  goto <D.10679>;
  <D.10799>:
  switch (secondary) <default: <D.11850>, case 0: <D.10800>, case 1: <D.10802>>
  <D.10800>:
  name = "Icelandic (Iceland)";
  goto <D.10801>;
  <D.10802>:
  name = "Icelandic";
  goto <D.10801>;
  <D.11850>:
  <D.10801>:
  goto <D.10679>;
  <D.10803>:
  switch (secondary) <default: <D.11851>, case 0: <D.10804>, case 1: <D.10805>, case 2: <D.10807>>
  <D.10804>:
  <D.10805>:
  name = "Italian (Italy)";
  goto <D.10806>;
  <D.10807>:
  name = "Italian (Switzerland)";
  goto <D.10806>;
  <D.11851>:
  <D.10806>:
  goto <D.10679>;
  <D.10808>:
  switch (secondary) <default: <D.11852>, case 0: <D.10809>, case 1: <D.10811>>
  <D.10809>:
  name = "Japanese (Japan)";
  goto <D.10810>;
  <D.10811>:
  name = "Japanese";
  goto <D.10810>;
  <D.11852>:
  <D.10810>:
  goto <D.10679>;
  <D.10812>:
  switch (secondary) <default: <D.11853>, case 0: <D.10813>, case 1: <D.10815>>
  <D.10813>:
  name = "Korean (Korea)";
  goto <D.10814>;
  <D.10815>:
  name = "Korean";
  goto <D.10814>;
  <D.11853>:
  <D.10814>:
  goto <D.10679>;
  <D.10816>:
  switch (secondary) <default: <D.11854>, case 0: <D.10817>, case 1: <D.10818>, case 2: <D.10820>>
  <D.10817>:
  <D.10818>:
  name = "Dutch (Netherlands)";
  goto <D.10819>;
  <D.10820>:
  name = "Dutch (Belgium)";
  goto <D.10819>;
  <D.11854>:
  <D.10819>:
  goto <D.10679>;
  <D.10821>:
  switch (secondary) <default: <D.11855>, case 0: <D.10822>, case 1: <D.10823>, case 2: <D.10825>>
  <D.10822>:
  <D.10823>:
  name = "Norwegian (Bokmal)";
  goto <D.10824>;
  <D.10825>:
  name = "Norwegian (Nynorsk)";
  goto <D.10824>;
  <D.11855>:
  <D.10824>:
  goto <D.10679>;
  <D.10826>:
  switch (secondary) <default: <D.11856>, case 0: <D.10827>, case 1: <D.10829>>
  <D.10827>:
  name = "Polish (Poland)";
  goto <D.10828>;
  <D.10829>:
  name = "Polish";
  goto <D.10828>;
  <D.11856>:
  <D.10828>:
  goto <D.10679>;
  <D.10830>:
  switch (secondary) <default: <D.11857>, case 0: <D.10831>, case 1: <D.10832>, case 2: <D.10834>>
  <D.10831>:
  <D.10832>:
  name = "Portuguese (Brazil)";
  goto <D.10833>;
  <D.10834>:
  name = "Portuguese (Portugal)";
  goto <D.10833>;
  <D.11857>:
  <D.10833>:
  goto <D.10679>;
  <D.10835>:
  switch (secondary) <default: <D.11858>, case 1: <D.10836>>
  <D.10836>:
  name = "Romansh (Switzerland)";
  goto <D.10837>;
  <D.11858>:
  <D.10837>:
  goto <D.10679>;
  <D.10838>:
  switch (secondary) <default: <D.11859>, case 0: <D.10839>, case 1: <D.10841>>
  <D.10839>:
  name = "Romanian (Romania)";
  goto <D.10840>;
  <D.10841>:
  name = "Romanian";
  goto <D.10840>;
  <D.11859>:
  <D.10840>:
  goto <D.10679>;
  <D.10842>:
  switch (secondary) <default: <D.11860>, case 0: <D.10843>, case 1: <D.10845>>
  <D.10843>:
  name = "Russian (Russia)";
  goto <D.10844>;
  <D.10845>:
  name = "Russian";
  goto <D.10844>;
  <D.11860>:
  <D.10844>:
  goto <D.10679>;
  <D.10846>:
  switch (secondary) <default: <D.11861>, case 0: <D.10847>, case 1: <D.10849>, case 2: <D.10850>, case 3: <D.10851>, case 4: <D.10852>, case 5: <D.10853>, case 6: <D.10854>, case 7: <D.10855>, case 8: <D.10856>>
  <D.10847>:
  name = "Croatian (Croatia)";
  goto <D.10848>;
  <D.10849>:
  name = "Croatian";
  goto <D.10848>;
  <D.10850>:
  name = "Serbian (Latin)";
  goto <D.10848>;
  <D.10851>:
  name = "Serbian (Cyrillic)";
  goto <D.10848>;
  <D.10852>:
  name = "Croatian (Bosnia and Herzegovina)";
  goto <D.10848>;
  <D.10853>:
  name = "Bosnian (Latin, Bosnia and Herzegovina)";
  goto <D.10848>;
  <D.10854>:
  name = "Serbian (Latin, Bosnia and Herzegovina)";
  goto <D.10848>;
  <D.10855>:
  name = "Serbian (Cyrillic, Bosnia and Herzegovina)";
  goto <D.10848>;
  <D.10856>:
  name = "Bosnian (Cyrillic, Bosnia and Herzegovina)";
  goto <D.10848>;
  <D.11861>:
  <D.10848>:
  goto <D.10679>;
  <D.10857>:
  switch (secondary) <default: <D.11862>, case 0: <D.10858>, case 1: <D.10860>>
  <D.10858>:
  name = "Slovak (Slovakia)";
  goto <D.10859>;
  <D.10860>:
  name = "Slovak";
  goto <D.10859>;
  <D.11862>:
  <D.10859>:
  goto <D.10679>;
  <D.10861>:
  switch (secondary) <default: <D.11863>, case 0: <D.10862>, case 1: <D.10864>>
  <D.10862>:
  name = "Albanian (Albania)";
  goto <D.10863>;
  <D.10864>:
  name = "Albanian";
  goto <D.10863>;
  <D.11863>:
  <D.10863>:
  goto <D.10679>;
  <D.10865>:
  switch (secondary) <default: <D.11864>, case 0: <D.10866>, case 1: <D.10868>, case 2: <D.10869>>
  <D.10866>:
  name = "Swedish (Sweden)";
  goto <D.10867>;
  <D.10868>:
  name = "Swedish";
  goto <D.10867>;
  <D.10869>:
  name = "Swedish (Finland)";
  goto <D.10867>;
  <D.11864>:
  <D.10867>:
  goto <D.10679>;
  <D.10870>:
  switch (secondary) <default: <D.11865>, case 0: <D.10871>, case 1: <D.10873>>
  <D.10871>:
  name = "Thai (Thailand)";
  goto <D.10872>;
  <D.10873>:
  name = "Thai";
  goto <D.10872>;
  <D.11865>:
  <D.10872>:
  goto <D.10679>;
  <D.10874>:
  switch (secondary) <default: <D.11866>, case 0: <D.10875>, case 1: <D.10877>>
  <D.10875>:
  name = "Turkish (Turkey)";
  goto <D.10876>;
  <D.10877>:
  name = "Turkish";
  goto <D.10876>;
  <D.11866>:
  <D.10876>:
  goto <D.10679>;
  <D.10878>:
  switch (secondary) <default: <D.11867>, case 0: <D.10879>, case 1: <D.10881>>
  <D.10879>:
  name = "Urdu (Islamic Republic of Pakistan)";
  goto <D.10880>;
  <D.10881>:
  name = "Urdu";
  goto <D.10880>;
  <D.11867>:
  <D.10880>:
  goto <D.10679>;
  <D.10882>:
  switch (secondary) <default: <D.11868>, case 0: <D.10883>, case 1: <D.10885>>
  <D.10883>:
  name = "Indonesian (Indonesia)";
  goto <D.10884>;
  <D.10885>:
  name = "Indonesian";
  goto <D.10884>;
  <D.11868>:
  <D.10884>:
  goto <D.10679>;
  <D.10886>:
  switch (secondary) <default: <D.11869>, case 0: <D.10887>, case 1: <D.10889>>
  <D.10887>:
  name = "Ukrainian (Ukraine)";
  goto <D.10888>;
  <D.10889>:
  name = "Ukrainian";
  goto <D.10888>;
  <D.11869>:
  <D.10888>:
  goto <D.10679>;
  <D.10890>:
  switch (secondary) <default: <D.11870>, case 0: <D.10891>, case 1: <D.10893>>
  <D.10891>:
  name = "Belarusian (Belarus)";
  goto <D.10892>;
  <D.10893>:
  name = "Belarusian";
  goto <D.10892>;
  <D.11870>:
  <D.10892>:
  goto <D.10679>;
  <D.10894>:
  switch (secondary) <default: <D.11871>, case 0: <D.10895>, case 1: <D.10897>>
  <D.10895>:
  name = "Slovenian (Slovenia)";
  goto <D.10896>;
  <D.10897>:
  name = "Slovenian";
  goto <D.10896>;
  <D.11871>:
  <D.10896>:
  goto <D.10679>;
  <D.10898>:
  switch (secondary) <default: <D.11872>, case 0: <D.10899>, case 1: <D.10901>>
  <D.10899>:
  name = "Estonian (Estonia)";
  goto <D.10900>;
  <D.10901>:
  name = "Estonian";
  goto <D.10900>;
  <D.11872>:
  <D.10900>:
  goto <D.10679>;
  <D.10902>:
  switch (secondary) <default: <D.11873>, case 0: <D.10903>, case 1: <D.10905>>
  <D.10903>:
  name = "Latvian (Latvia)";
  goto <D.10904>;
  <D.10905>:
  name = "Latvian";
  goto <D.10904>;
  <D.11873>:
  <D.10904>:
  goto <D.10679>;
  <D.10906>:
  switch (secondary) <default: <D.11874>, case 0: <D.10907>, case 1: <D.10909>>
  <D.10907>:
  name = "Lithuanian (Lithuania)";
  goto <D.10908>;
  <D.10909>:
  name = "Lithuanian";
  goto <D.10908>;
  <D.11874>:
  <D.10908>:
  goto <D.10679>;
  <D.10910>:
  switch (secondary) <default: <D.11875>, case 1: <D.10911>>
  <D.10911>:
  name = "Tajik (Tajikistan)";
  goto <D.10912>;
  <D.11875>:
  <D.10912>:
  goto <D.10679>;
  <D.10913>:
  switch (secondary) <default: <D.11876>, case 0: <D.10914>, case 1: <D.10916>>
  <D.10914>:
  name = "Farsi (Iran)";
  goto <D.10915>;
  <D.10916>:
  name = "Farsi";
  goto <D.10915>;
  <D.11876>:
  <D.10915>:
  goto <D.10679>;
  <D.10917>:
  switch (secondary) <default: <D.11877>, case 0: <D.10918>, case 1: <D.10920>>
  <D.10918>:
  name = "Vietnamese (Viet Nam)";
  goto <D.10919>;
  <D.10920>:
  name = "Vietnamese";
  goto <D.10919>;
  <D.11877>:
  <D.10919>:
  goto <D.10679>;
  <D.10921>:
  switch (secondary) <default: <D.11878>, case 0: <D.10922>, case 1: <D.10924>>
  <D.10922>:
  name = "Armenian (Armenia)";
  goto <D.10923>;
  <D.10924>:
  name = "Armenian";
  goto <D.10923>;
  <D.11878>:
  <D.10923>:
  goto <D.10679>;
  <D.10925>:
  switch (secondary) <default: <D.11879>, case 0: <D.10926>, case 1: <D.10928>, case 2: <D.10929>>
  <D.10926>:
  name = "Azeri (Latin) (Azerbaijan)";
  goto <D.10927>;
  <D.10928>:
  name = "Azeri (Latin)";
  goto <D.10927>;
  <D.10929>:
  name = "Azeri (Cyrillic)";
  goto <D.10927>;
  <D.11879>:
  <D.10927>:
  goto <D.10679>;
  <D.10930>:
  switch (secondary) <default: <D.11880>, case 0: <D.10931>, case 1: <D.10933>>
  <D.10931>:
  name = "Basque (Spain)";
  goto <D.10932>;
  <D.10933>:
  name = "Basque";
  goto <D.10932>;
  <D.11880>:
  <D.10932>:
  goto <D.10679>;
  <D.10934>:
  switch (secondary) <default: <D.11881>, case 1: <D.10935>, case 2: <D.10937>>
  <D.10935>:
  name = "Upper Sorbian (Germany)";
  goto <D.10936>;
  <D.10937>:
  name = "Lower Sorbian (Germany)";
  goto <D.10936>;
  <D.11881>:
  <D.10936>:
  goto <D.10679>;
  <D.10938>:
  switch (secondary) <default: <D.11882>, case 0: <D.10939>, case 1: <D.10941>>
  <D.10939>:
  name = "FYRO Macedonian (Former Yugoslav Republic of Macedonia)";
  goto <D.10940>;
  <D.10941>:
  name = "FYRO Macedonian";
  goto <D.10940>;
  <D.11882>:
  <D.10940>:
  goto <D.10679>;
  <D.10942>:
  switch (secondary) <default: <D.11883>, case 0: <D.10943>, case 1: <D.10945>>
  <D.10943>:
  name = "Tswana (South Africa)";
  goto <D.10944>;
  <D.10945>:
  name = "Tswana";
  goto <D.10944>;
  <D.11883>:
  <D.10944>:
  goto <D.10679>;
  <D.10946>:
  switch (secondary) <default: <D.11884>, case 0: <D.10947>, case 1: <D.10949>>
  <D.10947>:
  name = "Xhosa (South Africa)";
  goto <D.10948>;
  <D.10949>:
  name = "Xhosa";
  goto <D.10948>;
  <D.11884>:
  <D.10948>:
  goto <D.10679>;
  <D.10950>:
  switch (secondary) <default: <D.11885>, case 0: <D.10951>, case 1: <D.10953>>
  <D.10951>:
  name = "Zulu (South Africa)";
  goto <D.10952>;
  <D.10953>:
  name = "Zulu";
  goto <D.10952>;
  <D.11885>:
  <D.10952>:
  goto <D.10679>;
  <D.10954>:
  switch (secondary) <default: <D.11886>, case 0: <D.10955>, case 1: <D.10957>>
  <D.10955>:
  name = "Afrikaans (South Africa)";
  goto <D.10956>;
  <D.10957>:
  name = "Afrikaans";
  goto <D.10956>;
  <D.11886>:
  <D.10956>:
  goto <D.10679>;
  <D.10958>:
  switch (secondary) <default: <D.11887>, case 0: <D.10959>, case 1: <D.10961>>
  <D.10959>:
  name = "Georgian (Georgia)";
  goto <D.10960>;
  <D.10961>:
  name = "Georgian";
  goto <D.10960>;
  <D.11887>:
  <D.10960>:
  goto <D.10679>;
  <D.10962>:
  switch (secondary) <default: <D.11888>, case 0: <D.10963>, case 1: <D.10965>>
  <D.10963>:
  name = "Faroese (Faroe Islands)";
  goto <D.10964>;
  <D.10965>:
  name = "Faroese";
  goto <D.10964>;
  <D.11888>:
  <D.10964>:
  goto <D.10679>;
  <D.10966>:
  switch (secondary) <default: <D.11889>, case 0: <D.10967>, case 1: <D.10969>>
  <D.10967>:
  name = "Hindi (India)";
  goto <D.10968>;
  <D.10969>:
  name = "Hindi";
  goto <D.10968>;
  <D.11889>:
  <D.10968>:
  goto <D.10679>;
  <D.10970>:
  switch (secondary) <default: <D.11890>, case 0: <D.10971>, case 1: <D.10973>>
  <D.10971>:
  name = "Maltese (Malta)";
  goto <D.10972>;
  <D.10973>:
  name = "Maltese";
  goto <D.10972>;
  <D.11890>:
  <D.10972>:
  goto <D.10679>;
  <D.10974>:
  switch (secondary) <default: <D.11891>, case 0: <D.10975>, case 1: <D.10977>, case 2: <D.10978>, case 3: <D.10979>, case 4: <D.10980>, case 5: <D.10981>, case 6: <D.10982>, case 7: <D.10983>, case 8: <D.10984>, case 9: <D.10985>>
  <D.10975>:
  name = "Sami (Northern) (Norway)";
  goto <D.10976>;
  <D.10977>:
  name = "Sami, Northern (Norway)";
  goto <D.10976>;
  <D.10978>:
  name = "Sami, Northern (Sweden)";
  goto <D.10976>;
  <D.10979>:
  name = "Sami, Northern (Finland)";
  goto <D.10976>;
  <D.10980>:
  name = "Sami, Lule (Norway)";
  goto <D.10976>;
  <D.10981>:
  name = "Sami, Lule (Sweden)";
  goto <D.10976>;
  <D.10982>:
  name = "Sami, Southern (Norway)";
  goto <D.10976>;
  <D.10983>:
  name = "Sami, Southern (Sweden)";
  goto <D.10976>;
  <D.10984>:
  name = "Sami, Skolt (Finland)";
  goto <D.10976>;
  <D.10985>:
  name = "Sami, Inari (Finland)";
  goto <D.10976>;
  <D.11891>:
  <D.10976>:
  goto <D.10679>;
  <D.10986>:
  switch (secondary) <default: <D.11892>, case 2: <D.10987>>
  <D.10987>:
  name = "Irish (Ireland)";
  goto <D.10988>;
  <D.11892>:
  <D.10988>:
  goto <D.10679>;
  <D.10989>:
  switch (secondary) <default: <D.11893>, case 0: <D.10990>, case 1: <D.10991>, case 2: <D.10993>>
  <D.10990>:
  <D.10991>:
  name = "Malay (Malaysia)";
  goto <D.10992>;
  <D.10993>:
  name = "Malay (Brunei Darussalam)";
  goto <D.10992>;
  <D.11893>:
  <D.10992>:
  goto <D.10679>;
  <D.10994>:
  switch (secondary) <default: <D.11894>, case 0: <D.10995>, case 1: <D.10997>>
  <D.10995>:
  name = "Kazakh (Kazakhstan)";
  goto <D.10996>;
  <D.10997>:
  name = "Kazakh";
  goto <D.10996>;
  <D.11894>:
  <D.10996>:
  goto <D.10679>;
  <D.10998>:
  switch (secondary) <default: <D.11895>, case 0: <D.10999>, case 1: <D.11001>>
  <D.10999>:
  name = "Kyrgyz (Kyrgyzstan)";
  goto <D.11000>;
  <D.11001>:
  name = "Kyrgyz (Cyrillic)";
  goto <D.11000>;
  <D.11895>:
  <D.11000>:
  goto <D.10679>;
  <D.11002>:
  switch (secondary) <default: <D.11896>, case 0: <D.11003>, case 1: <D.11005>>
  <D.11003>:
  name = "Swahili (Kenya)";
  goto <D.11004>;
  <D.11005>:
  name = "Swahili";
  goto <D.11004>;
  <D.11896>:
  <D.11004>:
  goto <D.10679>;
  <D.11006>:
  switch (secondary) <default: <D.11897>, case 1: <D.11007>>
  <D.11007>:
  name = "Turkmen (Turkmenistan)";
  goto <D.11008>;
  <D.11897>:
  <D.11008>:
  goto <D.10679>;
  <D.11009>:
  switch (secondary) <default: <D.11898>, case 0: <D.11010>, case 1: <D.11012>, case 2: <D.11013>>
  <D.11010>:
  name = "Uzbek (Latin) (Uzbekistan)";
  goto <D.11011>;
  <D.11012>:
  name = "Uzbek (Latin)";
  goto <D.11011>;
  <D.11013>:
  name = "Uzbek (Cyrillic)";
  goto <D.11011>;
  <D.11898>:
  <D.11011>:
  goto <D.10679>;
  <D.11014>:
  switch (secondary) <default: <D.11899>, case 0: <D.11015>, case 1: <D.11017>>
  <D.11015>:
  name = "Tatar (Russia)";
  goto <D.11016>;
  <D.11017>:
  name = "Tatar";
  goto <D.11016>;
  <D.11899>:
  <D.11016>:
  goto <D.10679>;
  <D.11018>:
  switch (secondary) <default: <D.11900>, case 0: <D.11019>, case 1: <D.11020>>
  <D.11019>:
  <D.11020>:
  name = "Bengali (India)";
  goto <D.11021>;
  <D.11900>:
  <D.11021>:
  goto <D.10679>;
  <D.11022>:
  switch (secondary) <default: <D.11901>, case 0: <D.11023>, case 1: <D.11025>>
  <D.11023>:
  name = "Punjabi (India)";
  goto <D.11024>;
  <D.11025>:
  name = "Punjabi";
  goto <D.11024>;
  <D.11901>:
  <D.11024>:
  goto <D.10679>;
  <D.11026>:
  switch (secondary) <default: <D.11902>, case 0: <D.11027>, case 1: <D.11029>>
  <D.11027>:
  name = "Gujarati (India)";
  goto <D.11028>;
  <D.11029>:
  name = "Gujarati";
  goto <D.11028>;
  <D.11902>:
  <D.11028>:
  goto <D.10679>;
  <D.11030>:
  switch (secondary) <default: <D.11903>, case 0: <D.11031>, case 1: <D.11033>>
  <D.11031>:
  name = "Tamil (India)";
  goto <D.11032>;
  <D.11033>:
  name = "Tamil";
  goto <D.11032>;
  <D.11903>:
  <D.11032>:
  goto <D.10679>;
  <D.11034>:
  switch (secondary) <default: <D.11904>, case 0: <D.11035>, case 1: <D.11037>>
  <D.11035>:
  name = "Telugu (India)";
  goto <D.11036>;
  <D.11037>:
  name = "Telugu";
  goto <D.11036>;
  <D.11904>:
  <D.11036>:
  goto <D.10679>;
  <D.11038>:
  switch (secondary) <default: <D.11905>, case 0: <D.11039>, case 1: <D.11041>>
  <D.11039>:
  name = "Kannada (India)";
  goto <D.11040>;
  <D.11041>:
  name = "Kannada";
  goto <D.11040>;
  <D.11905>:
  <D.11040>:
  goto <D.10679>;
  <D.11042>:
  switch (secondary) <default: <D.11906>, case 0: <D.11043>, case 1: <D.11044>>
  <D.11043>:
  <D.11044>:
  name = "Malayalam (India)";
  goto <D.11045>;
  <D.11906>:
  <D.11045>:
  goto <D.10679>;
  <D.11046>:
  switch (secondary) <default: <D.11907>, case 1: <D.11047>>
  <D.11047>:
  name = "Assamese (India)";
  goto <D.11048>;
  <D.11907>:
  <D.11048>:
  goto <D.10679>;
  <D.11049>:
  switch (secondary) <default: <D.11908>, case 0: <D.11050>, case 1: <D.11052>>
  <D.11050>:
  name = "Marathi (India)";
  goto <D.11051>;
  <D.11052>:
  name = "Marathi";
  goto <D.11051>;
  <D.11908>:
  <D.11051>:
  goto <D.10679>;
  <D.11053>:
  switch (secondary) <default: <D.11909>, case 0: <D.11054>, case 1: <D.11056>>
  <D.11054>:
  name = "Sanskrit (India)";
  goto <D.11055>;
  <D.11056>:
  name = "Sanskrit";
  goto <D.11055>;
  <D.11909>:
  <D.11055>:
  goto <D.10679>;
  <D.11057>:
  switch (secondary) <default: <D.11910>, case 0: <D.11058>, case 1: <D.11060>, case 2: <D.11061>>
  <D.11058>:
  name = "Mongolian (Mongolia)";
  goto <D.11059>;
  <D.11060>:
  name = "Mongolian (Cyrillic)";
  goto <D.11059>;
  <D.11061>:
  name = "Mongolian (PRC)";
  goto <D.11059>;
  <D.11910>:
  <D.11059>:
  goto <D.10679>;
  <D.11062>:
  switch (secondary) <default: <D.11911>, case 1: <D.11063>, case 2: <D.11065>>
  <D.11063>:
  name = "Tibetan (PRC)";
  goto <D.11064>;
  <D.11065>:
  name = "Tibetan (Bhutan)";
  goto <D.11064>;
  <D.11911>:
  <D.11064>:
  goto <D.10679>;
  <D.11066>:
  switch (secondary) <default: <D.11912>, case 0: <D.11067>, case 1: <D.11069>>
  <D.11067>:
  name = "Welsh (United Kingdom)";
  goto <D.11068>;
  <D.11069>:
  name = "Welsh";
  goto <D.11068>;
  <D.11912>:
  <D.11068>:
  goto <D.10679>;
  <D.11070>:
  switch (secondary) <default: <D.11913>, case 1: <D.11071>>
  <D.11071>:
  name = "Khmer (Cambodia)";
  goto <D.11072>;
  <D.11913>:
  <D.11072>:
  goto <D.10679>;
  <D.11073>:
  switch (secondary) <default: <D.11914>, case 1: <D.11074>>
  <D.11074>:
  name = "Lao (Lao PDR)";
  goto <D.11075>;
  <D.11914>:
  <D.11075>:
  goto <D.10679>;
  <D.11076>:
  switch (secondary) <default: <D.11915>, case 0: <D.11077>, case 1: <D.11079>>
  <D.11077>:
  name = "Galician (Spain)";
  goto <D.11078>;
  <D.11079>:
  name = "Galician";
  goto <D.11078>;
  <D.11915>:
  <D.11078>:
  goto <D.10679>;
  <D.11080>:
  switch (secondary) <default: <D.11916>, case 0: <D.11081>, case 1: <D.11083>>
  <D.11081>:
  name = "Konkani (India)";
  goto <D.11082>;
  <D.11083>:
  name = "Konkani";
  goto <D.11082>;
  <D.11916>:
  <D.11082>:
  goto <D.10679>;
  <D.11084>:
  switch (secondary) <default: <D.11917>, case 0: <D.11085>, case 1: <D.11087>>
  <D.11085>:
  name = "Syriac (Syria)";
  goto <D.11086>;
  <D.11087>:
  name = "Syriac";
  goto <D.11086>;
  <D.11917>:
  <D.11086>:
  goto <D.10679>;
  <D.11088>:
  switch (secondary) <default: <D.11918>, case 1: <D.11089>>
  <D.11089>:
  name = "Sinhala (Sri Lanka)";
  goto <D.11090>;
  <D.11918>:
  <D.11090>:
  goto <D.10679>;
  <D.11091>:
  switch (secondary) <default: <D.11919>, case 1: <D.11092>, case 2: <D.11094>>
  <D.11092>:
  name = "Inuktitut (Syllabics, Canada)";
  goto <D.11093>;
  <D.11094>:
  name = "Inuktitut (Latin, Canada)";
  goto <D.11093>;
  <D.11919>:
  <D.11093>:
  goto <D.10679>;
  <D.11095>:
  switch (secondary) <default: <D.11920>, case 1: <D.11096>>
  <D.11096>:
  name = "Amharic (Ethiopia)";
  goto <D.11097>;
  <D.11920>:
  <D.11097>:
  goto <D.10679>;
  <D.11098>:
  switch (secondary) <default: <D.11921>, case 2: <D.11099>>
  <D.11099>:
  name = "Tamazight (Algeria, Latin)";
  goto <D.11100>;
  <D.11921>:
  <D.11100>:
  goto <D.10679>;
  <D.11101>:
  switch (secondary) <default: <D.11922>, case 1: <D.11102>>
  <D.11102>:
  name = "Nepali (Nepal)";
  goto <D.11103>;
  <D.11922>:
  <D.11103>:
  goto <D.10679>;
  <D.11104>:
  switch (secondary) <default: <D.11923>, case 1: <D.11105>>
  <D.11105>:
  name = "Frisian (Netherlands)";
  goto <D.11106>;
  <D.11923>:
  <D.11106>:
  goto <D.10679>;
  <D.11107>:
  switch (secondary) <default: <D.11924>, case 1: <D.11108>>
  <D.11108>:
  name = "Pashto (Afghanistan)";
  goto <D.11109>;
  <D.11924>:
  <D.11109>:
  goto <D.10679>;
  <D.11110>:
  switch (secondary) <default: <D.11925>, case 1: <D.11111>>
  <D.11111>:
  name = "Filipino (Philippines)";
  goto <D.11112>;
  <D.11925>:
  <D.11112>:
  goto <D.10679>;
  <D.11113>:
  switch (secondary) <default: <D.11926>, case 0: <D.11114>, case 1: <D.11116>>
  <D.11114>:
  name = "Divehi (Maldives)";
  goto <D.11115>;
  <D.11116>:
  name = "Divehi";
  goto <D.11115>;
  <D.11926>:
  <D.11115>:
  goto <D.10679>;
  <D.11117>:
  switch (secondary) <default: <D.11927>, case 1: <D.11118>>
  <D.11118>:
  name = "Hausa (Nigeria, Latin)";
  goto <D.11119>;
  <D.11927>:
  <D.11119>:
  goto <D.10679>;
  <D.11120>:
  switch (secondary) <default: <D.11928>, case 1: <D.11121>>
  <D.11121>:
  name = "Yoruba (Nigeria)";
  goto <D.11122>;
  <D.11928>:
  <D.11122>:
  goto <D.10679>;
  <D.11123>:
  switch (secondary) <default: <D.11929>, case 0: <D.11124>, case 1: <D.11125>, case 2: <D.11127>, case 3: <D.11128>>
  <D.11124>:
  <D.11125>:
  name = "Quechua (Bolivia)";
  goto <D.11126>;
  <D.11127>:
  name = "Quechua (Ecuador)";
  goto <D.11126>;
  <D.11128>:
  name = "Quechua (Peru)";
  goto <D.11126>;
  <D.11929>:
  <D.11126>:
  goto <D.10679>;
  <D.11129>:
  switch (secondary) <default: <D.11930>, case 0: <D.11130>, case 1: <D.11132>>
  <D.11130>:
  name = "Northern Sotho (South Africa)";
  goto <D.11131>;
  <D.11132>:
  name = "Northern Sotho";
  goto <D.11131>;
  <D.11930>:
  <D.11131>:
  goto <D.10679>;
  <D.11133>:
  switch (secondary) <default: <D.11931>, case 1: <D.11134>>
  <D.11134>:
  name = "Bashkir (Russia)";
  goto <D.11135>;
  <D.11931>:
  <D.11135>:
  goto <D.10679>;
  <D.11136>:
  switch (secondary) <default: <D.11932>, case 1: <D.11137>>
  <D.11137>:
  name = "Luxembourgish (Luxembourg)";
  goto <D.11138>;
  <D.11932>:
  <D.11138>:
  goto <D.10679>;
  <D.11139>:
  switch (secondary) <default: <D.11933>, case 1: <D.11140>>
  <D.11140>:
  name = "Greenlandic (Greenland)";
  goto <D.11141>;
  <D.11933>:
  <D.11141>:
  goto <D.10679>;
  <D.11142>:
  switch (secondary) <default: <D.11934>, case 1: <D.11143>>
  <D.11143>:
  name = "Yi (PRC)";
  goto <D.11144>;
  <D.11934>:
  <D.11144>:
  goto <D.10679>;
  <D.11145>:
  switch (secondary) <default: <D.11935>, case 1: <D.11146>>
  <D.11146>:
  name = "Mapudungun (Chile)";
  goto <D.11147>;
  <D.11935>:
  <D.11147>:
  goto <D.10679>;
  <D.11148>:
  switch (secondary) <default: <D.11936>, case 1: <D.11149>>
  <D.11149>:
  name = "Mohawk (Mohawk)";
  goto <D.11150>;
  <D.11936>:
  <D.11150>:
  goto <D.10679>;
  <D.11151>:
  switch (secondary) <default: <D.11937>, case 1: <D.11152>>
  <D.11152>:
  name = "Breton (France)";
  goto <D.11153>;
  <D.11937>:
  <D.11153>:
  goto <D.10679>;
  <D.11154>:
  switch (secondary) <default: <D.11938>, case 0: <D.11155>>
  <D.11155>:
  name = "Invariant Language (Invariant Country)";
  goto <D.11156>;
  <D.11938>:
  <D.11156>:
  goto <D.10679>;
  <D.11157>:
  switch (secondary) <default: <D.11939>, case 1: <D.11158>>
  <D.11158>:
  name = "Uighur (PRC)";
  goto <D.11159>;
  <D.11939>:
  <D.11159>:
  goto <D.10679>;
  <D.11160>:
  switch (secondary) <default: <D.11940>, case 0: <D.11161>, case 1: <D.11163>>
  <D.11161>:
  name = "Maori (New Zealand)";
  goto <D.11162>;
  <D.11163>:
  name = "Maori";
  goto <D.11162>;
  <D.11940>:
  <D.11162>:
  goto <D.10679>;
  <D.11164>:
  switch (secondary) <default: <D.11941>, case 1: <D.11165>>
  <D.11165>:
  name = "Corsican (France)";
  goto <D.11166>;
  <D.11941>:
  <D.11166>:
  goto <D.10679>;
  <D.11167>:
  switch (secondary) <default: <D.11942>, case 1: <D.11168>>
  <D.11168>:
  name = "Alsatian (France)";
  goto <D.11169>;
  <D.11942>:
  <D.11169>:
  goto <D.10679>;
  <D.11170>:
  switch (secondary) <default: <D.11943>, case 1: <D.11171>>
  <D.11171>:
  name = "Yakut (Russia)";
  goto <D.11172>;
  <D.11943>:
  <D.11172>:
  goto <D.10679>;
  <D.11173>:
  switch (secondary) <default: <D.11944>, case 1: <D.11174>>
  <D.11174>:
  name = "K\'iche (Guatemala)";
  goto <D.11175>;
  <D.11944>:
  <D.11175>:
  goto <D.10679>;
  <D.11176>:
  switch (secondary) <default: <D.11945>, case 1: <D.11177>>
  <D.11177>:
  name = "Kinyarwanda (Rwanda)";
  goto <D.11178>;
  <D.11945>:
  <D.11178>:
  goto <D.10679>;
  <D.11179>:
  switch (secondary) <default: <D.11946>, case 1: <D.11180>>
  <D.11180>:
  name = "Wolof (Senegal)";
  goto <D.11181>;
  <D.11946>:
  <D.11181>:
  goto <D.10679>;
  <D.11182>:
  switch (secondary) <default: <D.11947>, case 1: <D.11183>>
  <D.11183>:
  name = "Dari (Afghanistan)";
  goto <D.11184>;
  <D.11947>:
  <D.11184>:
  goto <D.10679>;
  <D.11185>:
  name = "Language Neutral";
  <D.10679>:
  if (name == 0B) goto <D.11948>; else goto <D.11949>;
  <D.11948>:
  name = "Language Neutral";
  <D.11949>:
  D.11950 = copy_lang (lang_out, lang_len, name);
  return D.11950;
}


copy_lang (gunichar2 * lang_out, guint32 lang_len, const gchar * text)
{
  long unsigned int D.11953;
  _Bool D.11954;
  long int D.11955;
  long int D.11956;
  unsigned int D.11959;
  unsigned int chars.20;
  int D.11963;
  long unsigned int D.11964;
  long unsigned int D.11965;
  long unsigned int D.11966;
  gunichar2 * D.11967;
  unsigned int D.11969;
  unsigned int D.11970;
  long unsigned int D.11971;
  long unsigned int D.11972;
  long unsigned int D.11973;
  gunichar2 * D.11974;
  guint32 D.11975;
  gunichar2 * unitext;
  int chars;
  int ret;

  D.11953 = __strlen_g (text);
  chars = (int) D.11953;
  unitext = monoeg_g_utf8_to_utf16 (text, -1, 0B, 0B, 0B);
  D.11954 = unitext == 0B;
  D.11955 = (long int) D.11954;
  D.11956 = __builtin_expect (D.11955, 0);
  if (D.11956 != 0) goto <D.11957>; else goto <D.11958>;
  <D.11957>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "versioninfo.c", 1008, "unitext != NULL");
  <D.11958>:
  D.11959 = lang_len + 4294967295;
  chars.20 = (unsigned int) chars;
  if (D.11959 > chars.20) goto <D.11961>; else goto <D.11962>;
  <D.11961>:
  D.11963 = chars * 2;
  D.11964 = (long unsigned int) D.11963;
  memcpy (lang_out, unitext, D.11964);
  D.11965 = (long unsigned int) chars;
  D.11966 = D.11965 * 2;
  D.11967 = lang_out + D.11966;
  *D.11967 = 0;
  ret = chars;
  goto <D.11968>;
  <D.11962>:
  D.11969 = lang_len + 2147483647;
  D.11970 = D.11969 * 2;
  D.11971 = (long unsigned int) D.11970;
  memcpy (lang_out, unitext, D.11971);
  D.11972 = (long unsigned int) lang_len;
  D.11973 = D.11972 * 2;
  D.11974 = lang_out + D.11973;
  *D.11974 = 0;
  ret = (int) lang_len;
  <D.11968>:
  monoeg_g_free (unitext);
  D.11975 = (guint32) ret;
  return D.11975;
}


