VerQueryValue (const void * datablock, const gunichar2 * subblock, void * * buffer, guint32 * len)
{
  gboolean D.13281;
  int D.12706;
  int iftmp.0;
  int D.12705;
  const char[25] * D.13285;
  unsigned char D.13286;
  int D.13287;
  unsigned char D.13288;
  int D.13289;
  _Bool D.13290;
  _Bool D.13291;
  _Bool D.13292;
  const unsigned char * D.13295;
  unsigned char D.13296;
  int D.13297;
  const unsigned char * D.13298;
  unsigned char D.13299;
  int D.13300;
  _Bool D.13301;
  _Bool D.13302;
  const unsigned char * D.13305;
  unsigned char D.13306;
  int D.13307;
  const unsigned char * D.13308;
  unsigned char D.13309;
  int D.13310;
  _Bool D.13311;
  _Bool D.13312;
  const unsigned char * D.13315;
  unsigned char D.13316;
  int D.13317;
  const unsigned char * D.13318;
  unsigned char D.13319;
  int D.13320;
  int D.13325;
  const gunichar2 * D.13328;
  int D.12724;
  int iftmp.1;
  int D.12723;
  const char[2] * D.13332;
  unsigned char D.13333;
  int D.13334;
  unsigned char D.13335;
  int D.13336;
  _Bool D.13337;
  _Bool D.13338;
  _Bool D.13339;
  const unsigned char * D.13342;
  unsigned char D.13343;
  int D.13344;
  const unsigned char * D.13345;
  unsigned char D.13346;
  int D.13347;
  _Bool D.13348;
  _Bool D.13349;
  const unsigned char * D.13352;
  unsigned char D.13353;
  int D.13354;
  const unsigned char * D.13355;
  unsigned char D.13356;
  int D.13357;
  _Bool D.13358;
  _Bool D.13359;
  const unsigned char * D.13362;
  unsigned char D.13363;
  int D.13364;
  const unsigned char * D.13365;
  unsigned char D.13366;
  int D.13367;
  short unsigned int D.13373;
  unsigned int D.13374;
  int D.13376;
  short unsigned int D.13381;
  int D.13382;
  sizetype data_ptr.2;
  sizetype D.13384;
  sizetype D.13385;
  gunichar2 * D.13387;
  int D.13388;
  sizetype D.13393;
  int D.13395;
  void * string_value.3;
  unsigned int string_value_len.4;
  unsigned int D.13405;
  unsigned int D.13406;
  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.13279>; else goto <D.13280>;
      <D.13279>:
      D.13281 = 0;
      return D.13281;
      <D.13280>:
      {
        size_t __s1_len;
        size_t __s2_len;

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

          __s2 = subblock_utf8;
          D.13285 = "\\VarFileInfo\\Translation";
          D.13286 = MEM[(const unsigned char *)D.13285];
          D.13287 = (int) D.13286;
          D.13288 = *__s2;
          D.13289 = (int) D.13288;
          __result = D.13287 - D.13289;
          {
            D.13290 = __s2_len != 0;
            D.13291 = __result == 0;
            D.13292 = D.13290 & D.13291;
            if (D.13292 != 0) goto <D.13293>; else goto <D.13294>;
            <D.13293>:
            D.13295 = &MEM[(void *)"\\VarFileInfo\\Translation" + 1B];
            D.13296 = *D.13295;
            D.13297 = (int) D.13296;
            D.13298 = __s2 + 1;
            D.13299 = *D.13298;
            D.13300 = (int) D.13299;
            __result = D.13297 - D.13300;
            D.13301 = __s2_len > 1;
            D.13291 = __result == 0;
            D.13302 = D.13301 & D.13291;
            if (D.13302 != 0) goto <D.13303>; else goto <D.13304>;
            <D.13303>:
            D.13305 = &MEM[(void *)"\\VarFileInfo\\Translation" + 2B];
            D.13306 = *D.13305;
            D.13307 = (int) D.13306;
            D.13308 = __s2 + 2;
            D.13309 = *D.13308;
            D.13310 = (int) D.13309;
            __result = D.13307 - D.13310;
            D.13311 = __s2_len > 2;
            D.13291 = __result == 0;
            D.13312 = D.13311 & D.13291;
            if (D.13312 != 0) goto <D.13313>; else goto <D.13314>;
            <D.13313>:
            D.13315 = &MEM[(void *)"\\VarFileInfo\\Translation" + 3B];
            D.13316 = *D.13315;
            D.13317 = (int) D.13316;
            D.13318 = __s2 + 3;
            D.13319 = *D.13318;
            D.13320 = (int) D.13319;
            __result = D.13317 - D.13320;
            <D.13314>:
            <D.13304>:
            <D.13294>:
          }
          D.12705 = __result;
        }
        iftmp.0 = -D.12705;
        goto <D.13321>;
        <D.13284>:
        iftmp.0 = __builtin_strcmp (subblock_utf8, "\\VarFileInfo\\Translation");
        <D.13321>:
        D.12706 = iftmp.0;
      }
      if (D.12706 == 0) goto <D.13322>; else goto <D.13323>;
      <D.13322>:
      want_var = 1;
      goto <D.13324>;
      <D.13323>:
      D.13325 = strncmp (subblock_utf8, "\\StringFileInfo\\", 16);
      if (D.13325 == 0) goto <D.13326>; else goto <D.13327>;
      <D.13326>:
      want_string = 1;
      D.13328 = subblock + 32;
      memcpy (&lang, D.13328, 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.13327>:
      <D.13324>:
      {
        size_t __s1_len;
        size_t __s2_len;

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

          __s2 = subblock_utf8;
          D.13332 = "\\";
          D.13333 = MEM[(const unsigned char *)D.13332];
          D.13334 = (int) D.13333;
          D.13335 = *__s2;
          D.13336 = (int) D.13335;
          __result = D.13334 - D.13336;
          {
            D.13337 = __s2_len != 0;
            D.13338 = __result == 0;
            D.13339 = D.13337 & D.13338;
            if (D.13339 != 0) goto <D.13340>; else goto <D.13341>;
            <D.13340>:
            D.13342 = &MEM[(void *)"\\" + 1B];
            D.13343 = *D.13342;
            D.13344 = (int) D.13343;
            D.13345 = __s2 + 1;
            D.13346 = *D.13345;
            D.13347 = (int) D.13346;
            __result = D.13344 - D.13347;
            D.13348 = __s2_len > 1;
            D.13338 = __result == 0;
            D.13349 = D.13348 & D.13338;
            if (D.13349 != 0) goto <D.13350>; else goto <D.13351>;
            <D.13350>:
            D.13352 = &MEM[(void *)"\\" + 2B];
            D.13353 = *D.13352;
            D.13354 = (int) D.13353;
            D.13355 = __s2 + 2;
            D.13356 = *D.13355;
            D.13357 = (int) D.13356;
            __result = D.13354 - D.13357;
            D.13358 = __s2_len > 2;
            D.13338 = __result == 0;
            D.13359 = D.13358 & D.13338;
            if (D.13359 != 0) goto <D.13360>; else goto <D.13361>;
            <D.13360>:
            D.13362 = &MEM[(void *)"\\" + 3B];
            D.13363 = *D.13362;
            D.13364 = (int) D.13363;
            D.13365 = __s2 + 3;
            D.13366 = *D.13365;
            D.13367 = (int) D.13366;
            __result = D.13364 - D.13367;
            <D.13361>:
            <D.13351>:
            <D.13341>:
          }
          D.12723 = __result;
        }
        iftmp.1 = -D.12723;
        goto <D.13368>;
        <D.13331>:
        iftmp.1 = __builtin_strcmp (subblock_utf8, "\\");
        <D.13368>:
        D.12724 = iftmp.1;
      }
      if (D.12724 == 0) goto <D.13369>; else goto <D.13370>;
      <D.13369>:
      data_ptr = get_fixedfileinfo_block (datablock, &block);
      if (data_ptr != 0B) goto <D.13371>; else goto <D.13372>;
      <D.13371>:
      *buffer = data_ptr;
      D.13373 = block.value_len;
      D.13374 = (unsigned int) D.13373;
      *len = D.13374;
      ret = 1;
      <D.13372>:
      goto <D.13375>;
      <D.13370>:
      D.13376 = want_var | want_string;
      if (D.13376 != 0) goto <D.13377>; else goto <D.13378>;
      <D.13377>:
      data_ptr = get_fixedfileinfo_block (datablock, &block);
      if (data_ptr != 0B) goto <D.13379>; else goto <D.13380>;
      <D.13379>:
      data_ptr = data_ptr + 52;
      D.13381 = block.data_len;
      D.13382 = (int) D.13381;
      data_len = D.13382 + -92;
      goto <D.12727>;
      <D.12726>:
      data_ptr = data_ptr + 3;
      data_ptr.2 = (sizetype) data_ptr;
      D.13384 = data_ptr.2 & 3;
      D.13385 = -D.13384;
      data_ptr = data_ptr + D.13385;
      data_ptr = get_versioninfo_block (data_ptr, &block);
      D.13381 = block.data_len;
      if (D.13381 == 0) goto done; else goto <D.13386>;
      <D.13386>:
      D.13381 = block.data_len;
      D.13382 = (int) D.13381;
      data_len = data_len - D.13382;
      D.13387 = block.key;
      D.13388 = unicode_string_equals (D.13387, "VarFileInfo");
      if (D.13388 != 0) goto <D.13389>; else goto <D.13390>;
      <D.13389>:
      data_ptr = get_varfileinfo_block (data_ptr, &block);
      if (want_var != 0) goto <D.13391>; else goto <D.13392>;
      <D.13391>:
      *buffer = data_ptr;
      D.13373 = block.value_len;
      D.13374 = (unsigned int) D.13373;
      *len = D.13374;
      ret = 1;
      goto done;
      <D.13392>:
      D.13373 = block.value_len;
      D.13393 = (sizetype) D.13373;
      data_ptr = data_ptr + D.13393;
      goto <D.13394>;
      <D.13390>:
      D.13387 = block.key;
      D.13395 = unicode_string_equals (D.13387, "StringFileInfo");
      if (D.13395 != 0) goto <D.13396>; else goto done;
      <D.13396>:
      data_ptr = get_stringtable_block (data_ptr, lang_utf8, string_key, &string_value, &string_value_len, &block);
      if (want_string != 0) goto <D.13397>; else goto <D.13398>;
      <D.13397>:
      string_value.3 = string_value;
      if (string_value.3 != 0B) goto <D.13400>; else goto <D.13401>;
      <D.13400>:
      string_value_len.4 = string_value_len;
      if (string_value_len.4 != 0) goto <D.13403>; else goto <D.13404>;
      <D.13403>:
      string_value.3 = string_value;
      *buffer = string_value.3;
      string_value.3 = string_value;
      D.13405 = unicode_chars (string_value.3);
      D.13406 = D.13405 + 1;
      *len = D.13406;
      ret = 1;
      goto done;
      <D.13404>:
      <D.13401>:
      <D.13398>:
      <D.13394>:
      if (data_ptr == 0B) goto done; else goto <D.13407>;
      <D.13407>:
      <D.12727>:
      if (data_len > 0) goto <D.12726>; else goto <D.12728>;
      <D.12728>:
      <D.13380>:
      <D.13378>:
      <D.13375>:
      done:
      if (lang_utf8 != 0B) goto <D.13408>; else goto <D.13409>;
      <D.13408>:
      monoeg_g_free (lang_utf8);
      <D.13409>:
      monoeg_g_free (subblock_utf8);
      D.13281 = ret;
      return D.13281;
    }
  finally
    {
      block = {CLOBBER};
      lang = {CLOBBER};
      string_value = {CLOBBER};
      string_value_len = {CLOBBER};
    }
}


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

  D.13413 = __builtin_object_size (__dest, 0);
  D.13412 = __builtin___memcpy_chk (__dest, __src, __len, D.13413);
  return D.13412;
}


get_fixedfileinfo_block (const void * data, struct version_data * block)
{
  short unsigned int D.13415;
  short unsigned int D.13416;
  const void * D.13419;
  gunichar2 * D.13420;
  int D.13421;
  unsigned int D.13426;
  unsigned int D.13428;
  const void * data_ptr;
  gint32 data_len;
  struct WapiFixedFileInfo * ffi;

  data_ptr = get_versioninfo_block (data, block);
  D.13415 = block->data_len;
  data_len = (gint32) D.13415;
  D.13416 = block->value_len;
  if (D.13416 != 52) goto <D.13417>; else goto <D.13418>;
  <D.13417>:
  D.13419 = 0B;
  return D.13419;
  <D.13418>:
  D.13420 = block->key;
  D.13421 = unicode_string_equals (D.13420, "VS_VERSION_INFO");
  if (D.13421 == 0) goto <D.13422>; else goto <D.13423>;
  <D.13422>:
  D.13419 = 0B;
  return D.13419;
  <D.13423>:
  ffi = data_ptr;
  D.13426 = ffi->dwSignature;
  if (D.13426 != 4277077181) goto <D.13424>; else goto <D.13427>;
  <D.13427>:
  D.13428 = ffi->dwStrucVersion;
  if (D.13428 != 65536) goto <D.13424>; else goto <D.13425>;
  <D.13424>:
  D.13419 = 0B;
  return D.13419;
  <D.13425>:
  D.13419 = data_ptr;
  return D.13419;
}


get_versioninfo_block (const void * data, struct version_data * block)
{
  short unsigned int D.13430;
  gunichar2 * D.13431;
  unsigned int D.13432;
  sizetype D.13433;
  sizetype D.13434;
  sizetype data.5;
  sizetype D.13436;
  sizetype D.13437;
  const void * D.13438;

  D.13430 = MEM[(guint16 *)data];
  block->data_len = D.13430;
  data = data + 2;
  D.13430 = MEM[(guint16 *)data];
  block->value_len = D.13430;
  data = data + 2;
  D.13430 = MEM[(guint16 *)data];
  block->type = D.13430;
  data = data + 2;
  block->key = data;
  D.13431 = block->key;
  D.13432 = unicode_chars (D.13431);
  D.13433 = D.13432 + 1;
  D.13434 = D.13433 * 2;
  data = data + D.13434;
  data = data + 3;
  data.5 = (sizetype) data;
  D.13436 = data.5 & 3;
  D.13437 = -D.13436;
  data = data + D.13437;
  D.13438 = data;
  return D.13438;
}


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

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


unicode_string_equals (const gunichar2 * str1, const gchar * str2)
{
  short unsigned int D.13442;
  char D.13443;
  short unsigned int D.13444;
  gboolean D.13447;
  _Bool D.13449;

  goto <D.12619>;
  <D.12618>:
  D.13442 = *str1;
  D.13443 = *str2;
  D.13444 = (short unsigned int) D.13443;
  if (D.13442 != D.13444) goto <D.13445>; else goto <D.13446>;
  <D.13445>:
  D.13447 = 0;
  return D.13447;
  <D.13446>:
  str1 = str1 + 2;
  str2 = str2 + 1;
  <D.12619>:
  D.13442 = *str1;
  if (D.13442 != 0) goto <D.13448>; else goto <D.12620>;
  <D.13448>:
  D.13443 = *str2;
  if (D.13443 != 0) goto <D.12618>; else goto <D.12620>;
  <D.12620>:
  D.13442 = *str1;
  D.13443 = *str2;
  D.13444 = (short unsigned int) D.13443;
  D.13449 = D.13442 == D.13444;
  D.13447 = (gboolean) D.13449;
  return D.13447;
}


get_stringtable_block (const void * data_ptr, gchar * lang, const gunichar2 * string_key, void * * string_value, guint32 * string_value_len, struct version_data * block)
{
  sizetype data_ptr.6;
  sizetype D.13452;
  sizetype D.13453;
  short unsigned int D.13454;
  const void * D.13457;
  gunichar2 * D.13458;
  int D.12675;
  guint16 data_len;
  guint16 string_len;
  gchar * found_lang;
  gchar * lowercase_lang;

  data_len = block->data_len;
  string_len = 36;
  goto <D.12677>;
  <D.12676>:
  data_ptr = data_ptr + 3;
  data_ptr.6 = (sizetype) data_ptr;
  D.13452 = data_ptr.6 & 3;
  D.13453 = -D.13452;
  data_ptr = data_ptr + D.13453;
  data_ptr = get_versioninfo_block (data_ptr, block);
  D.13454 = block->data_len;
  if (D.13454 == 0) goto <D.13455>; else goto <D.13456>;
  <D.13455>:
  D.13457 = 0B;
  return D.13457;
  <D.13456>:
  D.13454 = block->data_len;
  string_len = D.13454 + string_len;
  D.13458 = block->key;
  found_lang = monoeg_g_utf16_to_utf8 (D.13458, 8, 0B, 0B, 0B);
  if (found_lang == 0B) goto <D.13459>; else goto <D.13460>;
  <D.13459>:
  D.13457 = 0B;
  return D.13457;
  <D.13460>:
  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.13463>; else goto <D.13461>;
  <D.13463>:
  {
    size_t __s1_len;
    size_t __s2_len;

    D.12675 = __builtin_strcmp (found_lang, lang);
  }
  if (D.12675 == 0) goto <D.13464>; else goto <D.13461>;
  <D.13464>:
  data_ptr = get_string_block (data_ptr, string_key, string_value, string_value_len, block);
  goto <D.13462>;
  <D.13461>:
  data_ptr = get_string_block (data_ptr, 0B, 0B, 0B, block);
  <D.13462>:
  monoeg_g_free (found_lang);
  if (data_ptr == 0B) goto <D.13465>; else goto <D.13466>;
  <D.13465>:
  D.13457 = 0B;
  return D.13457;
  <D.13466>:
  <D.12677>:
  if (string_len < data_len) goto <D.12676>; else goto <D.12678>;
  <D.12678>:
  D.13457 = data_ptr;
  return D.13457;
}


get_string_block (const void * data_ptr, const gunichar2 * string_key, void * * string_value, guint32 * string_value_len, struct version_data * block)
{
  sizetype data_ptr.7;
  sizetype D.13469;
  sizetype D.13470;
  short unsigned int D.13471;
  const void * D.13474;
  _Bool D.13475;
  _Bool D.13476;
  _Bool D.13477;
  gunichar2 * D.13482;
  int D.13483;
  short unsigned int D.13486;
  unsigned int D.13487;
  unsigned int D.13488;
  unsigned int D.13489;
  int data_ptr.8;
  int orig_data_ptr.9;
  int D.13492;
  int D.13493;
  guint16 data_len;
  guint16 string_len;
  char * orig_data_ptr;

  data_len = block->data_len;
  string_len = 28;
  orig_data_ptr = data_ptr + 4294967268;
  goto <D.12653>;
  <D.12652>:
  data_ptr = data_ptr + 3;
  data_ptr.7 = (sizetype) data_ptr;
  D.13469 = data_ptr.7 & 3;
  D.13470 = -D.13469;
  data_ptr = data_ptr + D.13470;
  data_ptr = get_versioninfo_block (data_ptr, block);
  D.13471 = block->data_len;
  if (D.13471 == 0) goto <D.13472>; else goto <D.13473>;
  <D.13472>:
  D.13474 = 0B;
  return D.13474;
  <D.13473>:
  D.13471 = block->data_len;
  string_len = D.13471 + string_len;
  D.13475 = string_key != 0B;
  D.13476 = string_value != 0B;
  D.13477 = D.13475 & D.13476;
  if (D.13477 != 0) goto <D.13478>; else goto <D.13479>;
  <D.13478>:
  if (string_value_len != 0B) goto <D.13480>; else goto <D.13481>;
  <D.13480>:
  D.13482 = block->key;
  D.13483 = unicode_compare (string_key, D.13482);
  if (D.13483 == 1) goto <D.13484>; else goto <D.13485>;
  <D.13484>:
  *string_value = data_ptr;
  D.13486 = block->value_len;
  D.13487 = (unsigned int) D.13486;
  *string_value_len = D.13487;
  <D.13485>:
  <D.13481>:
  <D.13479>:
  D.13486 = block->value_len;
  D.13488 = (unsigned int) D.13486;
  D.13489 = D.13488 * 2;
  data_ptr = data_ptr + D.13489;
  <D.12653>:
  data_ptr.8 = (int) data_ptr;
  orig_data_ptr.9 = (int) orig_data_ptr;
  D.13492 = data_ptr.8 - orig_data_ptr.9;
  D.13493 = (int) data_len;
  if (D.13492 < D.13493) goto <D.12652>; else goto <D.12654>;
  <D.12654>:
  D.13474 = data_ptr;
  return D.13474;
}


unicode_compare (const gunichar2 * str1, const gunichar2 * str2)
{
  short unsigned int D.13495;
  short unsigned int D.13496;
  gboolean D.13499;
  _Bool D.13501;

  goto <D.12612>;
  <D.12611>:
  D.13495 = *str1;
  D.13496 = *str2;
  if (D.13495 != D.13496) goto <D.13497>; else goto <D.13498>;
  <D.13497>:
  D.13499 = 0;
  return D.13499;
  <D.13498>:
  str1 = str1 + 2;
  str2 = str2 + 2;
  <D.12612>:
  D.13495 = *str1;
  if (D.13495 != 0) goto <D.13500>; else goto <D.12613>;
  <D.13500>:
  D.13496 = *str2;
  if (D.13496 != 0) goto <D.12611>; else goto <D.12613>;
  <D.12613>:
  D.13495 = *str1;
  D.13496 = *str2;
  D.13501 = D.13495 == D.13496;
  D.13499 = (gboolean) D.13501;
  return D.13499;
}


unicode_chars (const gunichar2 * str)
{
  unsigned int D.13503;
  const gunichar2 * D.13504;
  short unsigned int D.13505;
  guint32 D.13508;
  guint32 len;

  len = 0;
  <D.12606>:
  D.13503 = len * 2;
  D.13504 = str + D.13503;
  D.13505 = *D.13504;
  if (D.13505 == 0) goto <D.13506>; else goto <D.13507>;
  <D.13506>:
  D.13508 = len;
  return D.13508;
  <D.13507>:
  len = len + 1;
  goto <D.12606>;
}


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

  try
    {
      *handle = 0;
      file_map = map_pe_file (filename, &map_size, &map_handle);
      if (file_map == 0B) goto <D.13510>; else goto <D.13511>;
      <D.13510>:
      D.13512 = 0;
      return D.13512;
      <D.13511>:
      map_size.10 = map_size;
      map_size.11 = (unsigned int) map_size.10;
      versioninfo = find_pe_file_resources (file_map, map_size.11, 16, 0, &size);
      if (versioninfo == 0B) goto <D.13515>; else goto <D.13516>;
      <D.13515>:
      size = 0;
      <D.13516>:
      map_handle.12 = map_handle;
      unmap_pe_file (file_map, map_handle.12);
      D.13512 = size;
      return D.13512;
    }
  finally
    {
      map_handle = {CLOBBER};
      map_size = {CLOBBER};
      size = {CLOBBER};
    }
}


map_pe_file (gunichar2 * filename, gint32 * map_size, void * * handle)
{
  void * D.13522;
  int * D.13525;
  int D.13526;
  int D.13527;
  unsigned int D.13528;
  int D.13529;
  int D.13532;
  unsigned int D.13533;
  long long int D.13534;
  int D.13535;
  unsigned int D.13538;
  int D.13541;
  unsigned int D.13542;
  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.13520>; else goto <D.13521>;
      <D.13520>:
      SetLastError (123);
      D.13522 = 0B;
      return D.13522;
      <D.13521>:
      fd = _wapi_open (filename_ext, 0, 0);
      if (fd == -1) goto <D.13523>; else goto <D.13524>;
      <D.13523>:
      D.13525 = __errno_location ();
      D.13526 = *D.13525;
      D.13527 = _wapi_get_win32_file_error (D.13526);
      D.13528 = (unsigned int) D.13527;
      SetLastError (D.13528);
      monoeg_g_free (filename_ext);
      D.13522 = 0B;
      return D.13522;
      <D.13524>:
      D.13529 = fstat (fd, &statbuf);
      if (D.13529 == -1) goto <D.13530>; else goto <D.13531>;
      <D.13530>:
      D.13525 = __errno_location ();
      D.13526 = *D.13525;
      D.13532 = _wapi_get_win32_file_error (D.13526);
      D.13533 = (unsigned int) D.13532;
      SetLastError (D.13533);
      monoeg_g_free (filename_ext);
      close (fd);
      D.13522 = 0B;
      return D.13522;
      <D.13531>:
      D.13534 = statbuf.st_size;
      D.13535 = (int) D.13534;
      *map_size = D.13535;
      D.13534 = statbuf.st_size;
      if (D.13534 <= 63) goto <D.13536>; else goto <D.13537>;
      <D.13536>:
      SetLastError (24);
      monoeg_g_free (filename_ext);
      close (fd);
      D.13522 = 0B;
      return D.13522;
      <D.13537>:
      D.13534 = statbuf.st_size;
      D.13538 = (unsigned int) D.13534;
      file_map = mono_file_map (D.13538, 17, fd, 0, handle);
      if (file_map == 0B) goto <D.13539>; else goto <D.13540>;
      <D.13539>:
      D.13525 = __errno_location ();
      D.13526 = *D.13525;
      D.13541 = _wapi_get_win32_file_error (D.13526);
      D.13542 = (unsigned int) D.13541;
      SetLastError (D.13542);
      monoeg_g_free (filename_ext);
      close (fd);
      D.13522 = 0B;
      return D.13522;
      <D.13540>:
      close (fd);
      monoeg_g_free (filename_ext);
      D.13522 = file_map;
      return D.13522;
    }
  finally
    {
      statbuf = {CLOBBER};
    }
}


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

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


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

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


find_pe_file_resources32 (void * file_map, guint32 map_size, guint32 res_id, guint32 lang_id, guint32 * size)
{
  short unsigned int D.13551;
  void * D.13554;
  unsigned int D.13555;
  unsigned int D.13556;
  unsigned int D.13559;
  short unsigned int D.13562;
  short unsigned int D.13570;
  int D.13571;
  short unsigned int D.13572;
  int D.13573;
  int D.13574;
  unsigned int D.13575;
  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.13551 = dos_header->e_magic;
  if (D.13551 != 23117) goto <D.13552>; else goto <D.13553>;
  <D.13552>:
  SetLastError (13);
  D.13554 = 0B;
  return D.13554;
  <D.13553>:
  D.13555 = dos_header->e_lfanew;
  D.13556 = D.13555 + 248;
  if (D.13556 > map_size) goto <D.13557>; else goto <D.13558>;
  <D.13557>:
  SetLastError (24);
  D.13554 = 0B;
  return D.13554;
  <D.13558>:
  D.13555 = dos_header->e_lfanew;
  nt_headers = file_map + D.13555;
  D.13559 = nt_headers->Signature;
  if (D.13559 != 17744) goto <D.13560>; else goto <D.13561>;
  <D.13560>:
  SetLastError (13);
  D.13554 = 0B;
  return D.13554;
  <D.13561>:
  D.13562 = nt_headers->OptionalHeader.Magic;
  if (D.13562 == 523) goto <D.13563>; else goto <D.13564>;
  <D.13563>:
  resource_rva = MEM[(struct WapiImageNTHeaders64 *)nt_headers].OptionalHeader.DataDirectory[2].VirtualAddress;
  goto <D.13565>;
  <D.13564>:
  resource_rva = nt_headers->OptionalHeader.DataDirectory[2].VirtualAddress;
  <D.13565>:
  if (resource_rva == 0) goto <D.13566>; else goto <D.13567>;
  <D.13566>:
  SetLastError (13);
  D.13554 = 0B;
  return D.13554;
  <D.13567>:
  resource_dir = get_ptr_from_rva (resource_rva, nt_headers, file_map);
  if (resource_dir == 0B) goto <D.13568>; else goto <D.13569>;
  <D.13568>:
  SetLastError (13);
  D.13554 = 0B;
  return D.13554;
  <D.13569>:
  D.13570 = resource_dir->NumberOfNamedEntries;
  D.13571 = (int) D.13570;
  D.13572 = resource_dir->NumberOfIdEntries;
  D.13573 = (int) D.13572;
  D.13574 = D.13571 + D.13573;
  entries = (guint32) D.13574;
  resource_dir_entry = resource_dir + 16;
  i = 0;
  goto <D.12561>;
  <D.12560>:
  {
    struct WapiImageResourceDirectoryEntry * direntry;

    D.13575 = i * 8;
    direntry = resource_dir_entry + D.13575;
    ret = scan_resource_dir (resource_dir, nt_headers, file_map, direntry, 0, res_id, lang_id, size);
    if (ret != 0B) goto <D.13576>; else goto <D.13577>;
    <D.13576>:
    D.13554 = ret;
    return D.13554;
    <D.13577>:
  }
  i = i + 1;
  <D.12561>:
  if (i < entries) goto <D.12560>; else goto <D.12562>;
  <D.12562>:
  D.13554 = 0B;
  return D.13554;
}


get_ptr_from_rva (guint32 rva, struct WapiImageNTHeaders32 * ntheaders, void * file_map)
{
  void * D.13581;
  unsigned int D.13582;
  unsigned int D.13583;
  sizetype D.13584;
  struct WapiImageSectionHeader * section_header;
  guint32 delta;

  section_header = get_enclosing_section_header (rva, ntheaders);
  if (section_header == 0B) goto <D.13579>; else goto <D.13580>;
  <D.13579>:
  D.13581 = 0B;
  return D.13581;
  <D.13580>:
  D.13582 = section_header->VirtualAddress;
  D.13583 = section_header->PointerToRawData;
  delta = D.13582 - D.13583;
  D.13584 = rva - delta;
  D.13581 = file_map + D.13584;
  return D.13581;
}


get_enclosing_section_header (guint32 rva, struct WapiImageNTHeaders32 * nt_headers)
{
  short unsigned int D.13586;
  unsigned int D.13587;
  unsigned int nt_headers.13;
  unsigned int D.13589;
  unsigned int D.13590;
  unsigned int D.13593;
  unsigned int D.13596;
  struct WapiImageSectionHeader * D.13599;
  short unsigned int D.13600;
  unsigned int D.13601;
  struct WapiImageSectionHeader * section;
  guint32 i;

  D.13586 = nt_headers->FileHeader.SizeOfOptionalHeader;
  D.13587 = (unsigned int) D.13586;
  nt_headers.13 = (unsigned int) nt_headers;
  D.13589 = D.13587 + nt_headers.13;
  D.13590 = D.13589 + 24;
  section = (struct WapiImageSectionHeader *) D.13590;
  i = 0;
  goto <D.12509>;
  <D.12508>:
  {
    guint32 size;

    size = section->Misc.VirtualSize;
    if (size == 0) goto <D.13591>; else goto <D.13592>;
    <D.13591>:
    size = section->SizeOfRawData;
    <D.13592>:
    D.13593 = section->VirtualAddress;
    if (D.13593 <= rva) goto <D.13594>; else goto <D.13595>;
    <D.13594>:
    D.13593 = section->VirtualAddress;
    D.13596 = D.13593 + size;
    if (D.13596 > rva) goto <D.13597>; else goto <D.13598>;
    <D.13597>:
    D.13599 = section;
    return D.13599;
    <D.13598>:
    <D.13595>:
  }
  i = i + 1;
  section = section + 40;
  <D.12509>:
  D.13600 = nt_headers->FileHeader.NumberOfSections;
  D.13601 = (unsigned int) D.13600;
  if (D.13601 > i) goto <D.12508>; else goto <D.12510>;
  <D.12510>:
  D.13599 = 0B;
  return D.13599;
}


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.13603;
  unsigned int D.13604;
  <unnamed-unsigned:1> D.13605;
  <unnamed-unsigned:1> D.13606;
  <unnamed-unsigned:31> D.13607;
  <unnamed-unsigned:31> D.13608;
  _Bool D.13613;
  _Bool D.13614;
  _Bool D.13615;
  void * D.13617;
  _Bool D.13627;
  _Bool D.13628;
  short unsigned int D.13633;
  int D.13634;
  short unsigned int D.13635;
  int D.13636;
  int D.13637;
  unsigned int D.13638;
  int D.13639;
  unsigned int D.13642;
  unsigned int D.13643;
  struct WapiImageResourceDirectoryEntry swapped_entry;
  gboolean is_string;
  gboolean is_dir;
  guint32 name_offset;
  guint32 dir_offset;
  guint32 data_offset;

  try
    {
      D.13603 = entry->D.11421.Name;
      swapped_entry.D.11421.Name = D.13603;
      D.13604 = entry->D.11429.OffsetToData;
      swapped_entry.D.11429.OffsetToData = D.13604;
      D.13605 = swapped_entry.D.11421.D.11418.NameIsString;
      is_string = (gboolean) D.13605;
      D.13606 = swapped_entry.D.11429.D.11428.DataIsDirectory;
      is_dir = (gboolean) D.13606;
      D.13607 = swapped_entry.D.11421.D.11418.NameOffset;
      name_offset = (guint32) D.13607;
      D.13608 = swapped_entry.D.11429.D.11428.OffsetToDirectory;
      dir_offset = (guint32) D.13608;
      data_offset = swapped_entry.D.11429.OffsetToData;
      if (level == 0) goto <D.13609>; else goto <D.13610>;
      <D.13609>:
      D.13613 = is_string == 0;
      D.13614 = name_offset != res_id;
      D.13615 = D.13613 & D.13614;
      if (D.13615 != 0) goto <D.13611>; else goto <D.13616>;
      <D.13616>:
      if (is_string == 1) goto <D.13611>; else goto <D.13612>;
      <D.13611>:
      D.13617 = 0B;
      return D.13617;
      <D.13612>:
      goto <D.13618>;
      <D.13610>:
      if (level == 1) goto <D.13619>; else goto <D.13620>;
      <D.13619>:
      goto <D.13621>;
      <D.13620>:
      if (level == 2) goto <D.13622>; else goto <D.13623>;
      <D.13622>:
      D.13613 = is_string == 0;
      D.13627 = name_offset != lang_id;
      D.13628 = D.13613 & D.13627;
      if (D.13628 != 0) goto <D.13629>; else goto <D.13624>;
      <D.13629>:
      if (lang_id != 0) goto <D.13625>; else goto <D.13624>;
      <D.13624>:
      if (is_string == 1) goto <D.13625>; else goto <D.13626>;
      <D.13625>:
      D.13617 = 0B;
      return D.13617;
      <D.13626>:
      goto <D.13630>;
      <D.13623>:
      monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "versioninfo.c", 121);
      <D.13630>:
      <D.13621>:
      <D.13618>:
      if (is_dir == 1) goto <D.13631>; else goto <D.13632>;
      <D.13631>:
      {
        struct WapiImageResourceDirectory * res_dir;
        struct WapiImageResourceDirectoryEntry * sub_entries;
        guint32 entries;
        guint32 i;

        res_dir = root + dir_offset;
        sub_entries = res_dir + 16;
        D.13633 = res_dir->NumberOfNamedEntries;
        D.13634 = (int) D.13633;
        D.13635 = res_dir->NumberOfIdEntries;
        D.13636 = (int) D.13635;
        D.13637 = D.13634 + D.13636;
        entries = (guint32) D.13637;
        i = 0;
        goto <D.12541>;
        <D.12540>:
        {
          struct WapiImageResourceDirectoryEntry * sub_entry;
          void * ret;

          D.13638 = i * 8;
          sub_entry = sub_entries + D.13638;
          D.13639 = level + 1;
          ret = scan_resource_dir (root, nt_headers, file_map, sub_entry, D.13639, res_id, lang_id, size);
          if (ret != 0B) goto <D.13640>; else goto <D.13641>;
          <D.13640>:
          D.13617 = ret;
          return D.13617;
          <D.13641>:
        }
        i = i + 1;
        <D.12541>:
        if (i < entries) goto <D.12540>; else goto <D.12542>;
        <D.12542>:
        D.13617 = 0B;
        return D.13617;
      }
      <D.13632>:
      {
        struct WapiImageResourceDataEntry * data_entry;

        data_entry = root + data_offset;
        D.13642 = data_entry->Size;
        *size = D.13642;
        D.13643 = data_entry->OffsetToData;
        D.13617 = get_ptr_from_rva (D.13643, nt_headers, file_map);
        return D.13617;
      }
    }
  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.13648;
  int map_size.14;
  unsigned int map_size.15;
  unsigned int size.16;
  unsigned int D.13654;
  void * map_handle.17;
  void * file_map;
  void * versioninfo;
  void * map_handle;
  gint32 map_size;
  guint32 size;
  gboolean ret;

  try
    {
      ret = 0;
      file_map = map_pe_file (filename, &map_size, &map_handle);
      if (file_map == 0B) goto <D.13646>; else goto <D.13647>;
      <D.13646>:
      D.13648 = 0;
      return D.13648;
      <D.13647>:
      map_size.14 = map_size;
      map_size.15 = (unsigned int) map_size.14;
      versioninfo = find_pe_file_resources (file_map, map_size.15, 16, 0, &size);
      if (versioninfo != 0B) goto <D.13651>; else goto <D.13652>;
      <D.13651>:
      size.16 = size;
      D.13654 = MIN_EXPR <size.16, len>;
      memcpy (data, versioninfo, D.13654);
      ret = 1;
      <D.13652>:
      map_handle.17 = map_handle;
      unmap_pe_file (file_map, map_handle.17);
      D.13648 = ret;
      return D.13648;
    }
  finally
    {
      map_handle = {CLOBBER};
      map_size = {CLOBBER};
      size = {CLOBBER};
    }
}


VerLanguageName (guint32 lang, gunichar2 * lang_out, guint32 lang_len)
{
  int lang.18;
  unsigned int D.13659;
  int D.13660;
  guint32 D.13776;
  int primary;
  int secondary;
  const char * name;

  name = 0B;
  lang.18 = (int) lang;
  primary = lang.18 & 1023;
  D.13659 = lang >> 10;
  D.13660 = (int) D.13659;
  secondary = D.13660 & 63;
  switch (primary) <default: <D.13275>, case 0: <D.12766>, case 1: <D.12770>, case 2: <D.12789>, case 3: <D.12793>, case 4: <D.12797>, case 5: <D.12805>, case 6: <D.12809>, case 7: <D.12813>, case 8: <D.12821>, case 9: <D.12825>, case 10: <D.12844>, case 11: <D.12868>, case 12: <D.12872>, case 13: <D.12881>, case 14: <D.12885>, case 15: <D.12889>, case 16: <D.12893>, case 17: <D.12898>, case 18: <D.12902>, case 19: <D.12906>, case 20: <D.12911>, case 21: <D.12916>, case 22: <D.12920>, case 23: <D.12925>, case 24: <D.12928>, case 25: <D.12932>, case 26: <D.12936>, case 27: <D.12947>, case 28: <D.12951>, case 29: <D.12955>, case 30: <D.12960>, case 31: <D.12964>, case 32: <D.12968>, case 33: <D.12972>, case 34: <D.12976>, case 35: <D.12980>, case 36: <D.12984>, case 37: <D.12988>, case 38: <D.12992>, case 39: <D.12996>, case 40: <D.13000>, case 41: <D.13003>, case 42: <D.13007>, case 43: <D.13011>, case 44: <D.13015>, case 45: <D.13020>, case 46: <D.13024>, case 47: <D.13028>, case 50: <D.13032>, case 52: <D.13036>, case 53: <D.13040>, case 54: <D.13044>, case 55: <D.13048>, case 56: <D.13052>, case 57: <D.13056>, case 58: <D.13060>, case 59: <D.13064>, case 60: <D.13076>, case 62: <D.13079>, case 63: <D.13084>, case 64: <D.13088>, case 65: <D.13092>, case 66: <D.13096>, case 67: <D.13099>, case 68: <D.13104>, case 69: <D.13108>, case 70: <D.13112>, case 71: <D.13116>, case 73: <D.13120>, case 74: <D.13124>, case 75: <D.13128>, case 76: <D.13132>, case 77: <D.13136>, case 78: <D.13139>, case 79: <D.13143>, case 80: <D.13147>, case 81: <D.13152>, case 82: <D.13156>, case 83: <D.13160>, case 84: <D.13163>, case 86: <D.13166>, case 87: <D.13170>, case 90: <D.13174>, case 91: <D.13178>, case 93: <D.13181>, case 94: <D.13185>, case 95: <D.13188>, case 97: <D.13191>, case 98: <D.13194>, case 99: <D.13197>, case 100: <D.13200>, case 101: <D.13203>, case 104: <D.13207>, case 106: <D.13210>, case 107: <D.13213>, case 108: <D.13219>, case 109: <D.13223>, case 110: <D.13226>, case 111: <D.13229>, case 120: <D.13232>, case 122: <D.13235>, case 124: <D.13238>, case 126: <D.13241>, case 127: <D.13244>, case 128: <D.13247>, case 129: <D.13250>, case 131: <D.13254>, case 132: <D.13257>, case 133: <D.13260>, case 134: <D.13263>, case 135: <D.13266>, case 136: <D.13269>, case 140: <D.13272>>
  <D.12766>:
  switch (secondary) <default: <D.13661>, case 1: <D.12767>>
  <D.12767>:
  name = "Process Default Language";
  goto <D.12768>;
  <D.13661>:
  <D.12768>:
  goto <D.12769>;
  <D.12770>:
  switch (secondary) <default: <D.13662>, case 0: <D.12771>, case 1: <D.12772>, case 2: <D.12774>, case 3: <D.12775>, case 4: <D.12776>, case 5: <D.12777>, case 6: <D.12778>, case 7: <D.12779>, case 8: <D.12780>, case 9: <D.12781>, case 10: <D.12782>, case 11: <D.12783>, case 12: <D.12784>, case 13: <D.12785>, case 14: <D.12786>, case 15: <D.12787>, case 16: <D.12788>>
  <D.12771>:
  <D.12772>:
  name = "Arabic (Saudi Arabia)";
  goto <D.12773>;
  <D.12774>:
  name = "Arabic (Iraq)";
  goto <D.12773>;
  <D.12775>:
  name = "Arabic (Egypt)";
  goto <D.12773>;
  <D.12776>:
  name = "Arabic (Libya)";
  goto <D.12773>;
  <D.12777>:
  name = "Arabic (Algeria)";
  goto <D.12773>;
  <D.12778>:
  name = "Arabic (Morocco)";
  goto <D.12773>;
  <D.12779>:
  name = "Arabic (Tunisia)";
  goto <D.12773>;
  <D.12780>:
  name = "Arabic (Oman)";
  goto <D.12773>;
  <D.12781>:
  name = "Arabic (Yemen)";
  goto <D.12773>;
  <D.12782>:
  name = "Arabic (Syria)";
  goto <D.12773>;
  <D.12783>:
  name = "Arabic (Jordan)";
  goto <D.12773>;
  <D.12784>:
  name = "Arabic (Lebanon)";
  goto <D.12773>;
  <D.12785>:
  name = "Arabic (Kuwait)";
  goto <D.12773>;
  <D.12786>:
  name = "Arabic (U.A.E.)";
  goto <D.12773>;
  <D.12787>:
  name = "Arabic (Bahrain)";
  goto <D.12773>;
  <D.12788>:
  name = "Arabic (Qatar)";
  goto <D.12773>;
  <D.13662>:
  <D.12773>:
  goto <D.12769>;
  <D.12789>:
  switch (secondary) <default: <D.13663>, case 0: <D.12790>, case 1: <D.12792>>
  <D.12790>:
  name = "Bulgarian (Bulgaria)";
  goto <D.12791>;
  <D.12792>:
  name = "Bulgarian";
  goto <D.12791>;
  <D.13663>:
  <D.12791>:
  goto <D.12769>;
  <D.12793>:
  switch (secondary) <default: <D.13664>, case 0: <D.12794>, case 1: <D.12796>>
  <D.12794>:
  name = "Catalan (Spain)";
  goto <D.12795>;
  <D.12796>:
  name = "Catalan";
  goto <D.12795>;
  <D.13664>:
  <D.12795>:
  goto <D.12769>;
  <D.12797>:
  switch (secondary) <default: <D.13665>, case 0: <D.12798>, case 1: <D.12799>, case 2: <D.12801>, case 3: <D.12802>, case 4: <D.12803>, case 5: <D.12804>>
  <D.12798>:
  <D.12799>:
  name = "Chinese (Taiwan)";
  goto <D.12800>;
  <D.12801>:
  name = "Chinese (PRC)";
  goto <D.12800>;
  <D.12802>:
  name = "Chinese (Hong Kong S.A.R.)";
  goto <D.12800>;
  <D.12803>:
  name = "Chinese (Singapore)";
  goto <D.12800>;
  <D.12804>:
  name = "Chinese (Macau S.A.R.)";
  goto <D.12800>;
  <D.13665>:
  <D.12800>:
  goto <D.12769>;
  <D.12805>:
  switch (secondary) <default: <D.13666>, case 0: <D.12806>, case 1: <D.12808>>
  <D.12806>:
  name = "Czech (Czech Republic)";
  goto <D.12807>;
  <D.12808>:
  name = "Czech";
  goto <D.12807>;
  <D.13666>:
  <D.12807>:
  goto <D.12769>;
  <D.12809>:
  switch (secondary) <default: <D.13667>, case 0: <D.12810>, case 1: <D.12812>>
  <D.12810>:
  name = "Danish (Denmark)";
  goto <D.12811>;
  <D.12812>:
  name = "Danish";
  goto <D.12811>;
  <D.13667>:
  <D.12811>:
  goto <D.12769>;
  <D.12813>:
  switch (secondary) <default: <D.13668>, case 0: <D.12814>, case 1: <D.12815>, case 2: <D.12817>, case 3: <D.12818>, case 4: <D.12819>, case 5: <D.12820>>
  <D.12814>:
  <D.12815>:
  name = "German (Germany)";
  goto <D.12816>;
  <D.12817>:
  name = "German (Switzerland)";
  goto <D.12816>;
  <D.12818>:
  name = "German (Austria)";
  goto <D.12816>;
  <D.12819>:
  name = "German (Luxembourg)";
  goto <D.12816>;
  <D.12820>:
  name = "German (Liechtenstein)";
  goto <D.12816>;
  <D.13668>:
  <D.12816>:
  goto <D.12769>;
  <D.12821>:
  switch (secondary) <default: <D.13669>, case 0: <D.12822>, case 1: <D.12824>>
  <D.12822>:
  name = "Greek (Greece)";
  goto <D.12823>;
  <D.12824>:
  name = "Greek";
  goto <D.12823>;
  <D.13669>:
  <D.12823>:
  goto <D.12769>;
  <D.12825>:
  switch (secondary) <default: <D.13670>, case 0: <D.12826>, case 1: <D.12827>, case 2: <D.12829>, case 3: <D.12830>, case 4: <D.12831>, case 5: <D.12832>, case 6: <D.12833>, case 7: <D.12834>, case 8: <D.12835>, case 9: <D.12836>, case 10: <D.12837>, case 11: <D.12838>, case 12: <D.12839>, case 13: <D.12840>, case 16: <D.12841>, case 17: <D.12842>, case 18: <D.12843>>
  <D.12826>:
  <D.12827>:
  name = "English (United States)";
  goto <D.12828>;
  <D.12829>:
  name = "English (United Kingdom)";
  goto <D.12828>;
  <D.12830>:
  name = "English (Australia)";
  goto <D.12828>;
  <D.12831>:
  name = "English (Canada)";
  goto <D.12828>;
  <D.12832>:
  name = "English (New Zealand)";
  goto <D.12828>;
  <D.12833>:
  name = "English (Ireland)";
  goto <D.12828>;
  <D.12834>:
  name = "English (South Africa)";
  goto <D.12828>;
  <D.12835>:
  name = "English (Jamaica)";
  goto <D.12828>;
  <D.12836>:
  name = "English (Caribbean)";
  goto <D.12828>;
  <D.12837>:
  name = "English (Belize)";
  goto <D.12828>;
  <D.12838>:
  name = "English (Trinidad and Tobago)";
  goto <D.12828>;
  <D.12839>:
  name = "English (Zimbabwe)";
  goto <D.12828>;
  <D.12840>:
  name = "English (Philippines)";
  goto <D.12828>;
  <D.12841>:
  name = "English (India)";
  goto <D.12828>;
  <D.12842>:
  name = "English (Malaysia)";
  goto <D.12828>;
  <D.12843>:
  name = "English (Singapore)";
  goto <D.12828>;
  <D.13670>:
  <D.12828>:
  goto <D.12769>;
  <D.12844>:
  switch (secondary) <default: <D.13671>, case 0: <D.12845>, case 1: <D.12847>, case 2: <D.12848>, case 3: <D.12849>, case 4: <D.12850>, case 5: <D.12851>, case 6: <D.12852>, case 7: <D.12853>, case 8: <D.12854>, case 9: <D.12855>, case 10: <D.12856>, case 11: <D.12857>, case 12: <D.12858>, case 13: <D.12859>, case 14: <D.12860>, case 15: <D.12861>, case 16: <D.12862>, case 17: <D.12863>, case 18: <D.12864>, case 19: <D.12865>, case 20: <D.12866>, case 21: <D.12867>>
  <D.12845>:
  name = "Spanish (Spain)";
  goto <D.12846>;
  <D.12847>:
  name = "Spanish (Traditional Sort)";
  goto <D.12846>;
  <D.12848>:
  name = "Spanish (Mexico)";
  goto <D.12846>;
  <D.12849>:
  name = "Spanish (International Sort)";
  goto <D.12846>;
  <D.12850>:
  name = "Spanish (Guatemala)";
  goto <D.12846>;
  <D.12851>:
  name = "Spanish (Costa Rica)";
  goto <D.12846>;
  <D.12852>:
  name = "Spanish (Panama)";
  goto <D.12846>;
  <D.12853>:
  name = "Spanish (Dominican Republic)";
  goto <D.12846>;
  <D.12854>:
  name = "Spanish (Venezuela)";
  goto <D.12846>;
  <D.12855>:
  name = "Spanish (Colombia)";
  goto <D.12846>;
  <D.12856>:
  name = "Spanish (Peru)";
  goto <D.12846>;
  <D.12857>:
  name = "Spanish (Argentina)";
  goto <D.12846>;
  <D.12858>:
  name = "Spanish (Ecuador)";
  goto <D.12846>;
  <D.12859>:
  name = "Spanish (Chile)";
  goto <D.12846>;
  <D.12860>:
  name = "Spanish (Uruguay)";
  goto <D.12846>;
  <D.12861>:
  name = "Spanish (Paraguay)";
  goto <D.12846>;
  <D.12862>:
  name = "Spanish (Bolivia)";
  goto <D.12846>;
  <D.12863>:
  name = "Spanish (El Salvador)";
  goto <D.12846>;
  <D.12864>:
  name = "Spanish (Honduras)";
  goto <D.12846>;
  <D.12865>:
  name = "Spanish (Nicaragua)";
  goto <D.12846>;
  <D.12866>:
  name = "Spanish (Puerto Rico)";
  goto <D.12846>;
  <D.12867>:
  name = "Spanish (United States)";
  goto <D.12846>;
  <D.13671>:
  <D.12846>:
  goto <D.12769>;
  <D.12868>:
  switch (secondary) <default: <D.13672>, case 0: <D.12869>, case 1: <D.12871>>
  <D.12869>:
  name = "Finnish (Finland)";
  goto <D.12870>;
  <D.12871>:
  name = "Finnish";
  goto <D.12870>;
  <D.13672>:
  <D.12870>:
  goto <D.12769>;
  <D.12872>:
  switch (secondary) <default: <D.13673>, case 0: <D.12873>, case 1: <D.12874>, case 2: <D.12876>, case 3: <D.12877>, case 4: <D.12878>, case 5: <D.12879>, case 6: <D.12880>>
  <D.12873>:
  <D.12874>:
  name = "French (France)";
  goto <D.12875>;
  <D.12876>:
  name = "French (Belgium)";
  goto <D.12875>;
  <D.12877>:
  name = "French (Canada)";
  goto <D.12875>;
  <D.12878>:
  name = "French (Switzerland)";
  goto <D.12875>;
  <D.12879>:
  name = "French (Luxembourg)";
  goto <D.12875>;
  <D.12880>:
  name = "French (Monaco)";
  goto <D.12875>;
  <D.13673>:
  <D.12875>:
  goto <D.12769>;
  <D.12881>:
  switch (secondary) <default: <D.13674>, case 0: <D.12882>, case 1: <D.12884>>
  <D.12882>:
  name = "Hebrew (Israel)";
  goto <D.12883>;
  <D.12884>:
  name = "Hebrew";
  goto <D.12883>;
  <D.13674>:
  <D.12883>:
  goto <D.12769>;
  <D.12885>:
  switch (secondary) <default: <D.13675>, case 0: <D.12886>, case 1: <D.12888>>
  <D.12886>:
  name = "Hungarian (Hungary)";
  goto <D.12887>;
  <D.12888>:
  name = "Hungarian";
  goto <D.12887>;
  <D.13675>:
  <D.12887>:
  goto <D.12769>;
  <D.12889>:
  switch (secondary) <default: <D.13676>, case 0: <D.12890>, case 1: <D.12892>>
  <D.12890>:
  name = "Icelandic (Iceland)";
  goto <D.12891>;
  <D.12892>:
  name = "Icelandic";
  goto <D.12891>;
  <D.13676>:
  <D.12891>:
  goto <D.12769>;
  <D.12893>:
  switch (secondary) <default: <D.13677>, case 0: <D.12894>, case 1: <D.12895>, case 2: <D.12897>>
  <D.12894>:
  <D.12895>:
  name = "Italian (Italy)";
  goto <D.12896>;
  <D.12897>:
  name = "Italian (Switzerland)";
  goto <D.12896>;
  <D.13677>:
  <D.12896>:
  goto <D.12769>;
  <D.12898>:
  switch (secondary) <default: <D.13678>, case 0: <D.12899>, case 1: <D.12901>>
  <D.12899>:
  name = "Japanese (Japan)";
  goto <D.12900>;
  <D.12901>:
  name = "Japanese";
  goto <D.12900>;
  <D.13678>:
  <D.12900>:
  goto <D.12769>;
  <D.12902>:
  switch (secondary) <default: <D.13679>, case 0: <D.12903>, case 1: <D.12905>>
  <D.12903>:
  name = "Korean (Korea)";
  goto <D.12904>;
  <D.12905>:
  name = "Korean";
  goto <D.12904>;
  <D.13679>:
  <D.12904>:
  goto <D.12769>;
  <D.12906>:
  switch (secondary) <default: <D.13680>, case 0: <D.12907>, case 1: <D.12908>, case 2: <D.12910>>
  <D.12907>:
  <D.12908>:
  name = "Dutch (Netherlands)";
  goto <D.12909>;
  <D.12910>:
  name = "Dutch (Belgium)";
  goto <D.12909>;
  <D.13680>:
  <D.12909>:
  goto <D.12769>;
  <D.12911>:
  switch (secondary) <default: <D.13681>, case 0: <D.12912>, case 1: <D.12913>, case 2: <D.12915>>
  <D.12912>:
  <D.12913>:
  name = "Norwegian (Bokmal)";
  goto <D.12914>;
  <D.12915>:
  name = "Norwegian (Nynorsk)";
  goto <D.12914>;
  <D.13681>:
  <D.12914>:
  goto <D.12769>;
  <D.12916>:
  switch (secondary) <default: <D.13682>, case 0: <D.12917>, case 1: <D.12919>>
  <D.12917>:
  name = "Polish (Poland)";
  goto <D.12918>;
  <D.12919>:
  name = "Polish";
  goto <D.12918>;
  <D.13682>:
  <D.12918>:
  goto <D.12769>;
  <D.12920>:
  switch (secondary) <default: <D.13683>, case 0: <D.12921>, case 1: <D.12922>, case 2: <D.12924>>
  <D.12921>:
  <D.12922>:
  name = "Portuguese (Brazil)";
  goto <D.12923>;
  <D.12924>:
  name = "Portuguese (Portugal)";
  goto <D.12923>;
  <D.13683>:
  <D.12923>:
  goto <D.12769>;
  <D.12925>:
  switch (secondary) <default: <D.13684>, case 1: <D.12926>>
  <D.12926>:
  name = "Romansh (Switzerland)";
  goto <D.12927>;
  <D.13684>:
  <D.12927>:
  goto <D.12769>;
  <D.12928>:
  switch (secondary) <default: <D.13685>, case 0: <D.12929>, case 1: <D.12931>>
  <D.12929>:
  name = "Romanian (Romania)";
  goto <D.12930>;
  <D.12931>:
  name = "Romanian";
  goto <D.12930>;
  <D.13685>:
  <D.12930>:
  goto <D.12769>;
  <D.12932>:
  switch (secondary) <default: <D.13686>, case 0: <D.12933>, case 1: <D.12935>>
  <D.12933>:
  name = "Russian (Russia)";
  goto <D.12934>;
  <D.12935>:
  name = "Russian";
  goto <D.12934>;
  <D.13686>:
  <D.12934>:
  goto <D.12769>;
  <D.12936>:
  switch (secondary) <default: <D.13687>, case 0: <D.12937>, case 1: <D.12939>, case 2: <D.12940>, case 3: <D.12941>, case 4: <D.12942>, case 5: <D.12943>, case 6: <D.12944>, case 7: <D.12945>, case 8: <D.12946>>
  <D.12937>:
  name = "Croatian (Croatia)";
  goto <D.12938>;
  <D.12939>:
  name = "Croatian";
  goto <D.12938>;
  <D.12940>:
  name = "Serbian (Latin)";
  goto <D.12938>;
  <D.12941>:
  name = "Serbian (Cyrillic)";
  goto <D.12938>;
  <D.12942>:
  name = "Croatian (Bosnia and Herzegovina)";
  goto <D.12938>;
  <D.12943>:
  name = "Bosnian (Latin, Bosnia and Herzegovina)";
  goto <D.12938>;
  <D.12944>:
  name = "Serbian (Latin, Bosnia and Herzegovina)";
  goto <D.12938>;
  <D.12945>:
  name = "Serbian (Cyrillic, Bosnia and Herzegovina)";
  goto <D.12938>;
  <D.12946>:
  name = "Bosnian (Cyrillic, Bosnia and Herzegovina)";
  goto <D.12938>;
  <D.13687>:
  <D.12938>:
  goto <D.12769>;
  <D.12947>:
  switch (secondary) <default: <D.13688>, case 0: <D.12948>, case 1: <D.12950>>
  <D.12948>:
  name = "Slovak (Slovakia)";
  goto <D.12949>;
  <D.12950>:
  name = "Slovak";
  goto <D.12949>;
  <D.13688>:
  <D.12949>:
  goto <D.12769>;
  <D.12951>:
  switch (secondary) <default: <D.13689>, case 0: <D.12952>, case 1: <D.12954>>
  <D.12952>:
  name = "Albanian (Albania)";
  goto <D.12953>;
  <D.12954>:
  name = "Albanian";
  goto <D.12953>;
  <D.13689>:
  <D.12953>:
  goto <D.12769>;
  <D.12955>:
  switch (secondary) <default: <D.13690>, case 0: <D.12956>, case 1: <D.12958>, case 2: <D.12959>>
  <D.12956>:
  name = "Swedish (Sweden)";
  goto <D.12957>;
  <D.12958>:
  name = "Swedish";
  goto <D.12957>;
  <D.12959>:
  name = "Swedish (Finland)";
  goto <D.12957>;
  <D.13690>:
  <D.12957>:
  goto <D.12769>;
  <D.12960>:
  switch (secondary) <default: <D.13691>, case 0: <D.12961>, case 1: <D.12963>>
  <D.12961>:
  name = "Thai (Thailand)";
  goto <D.12962>;
  <D.12963>:
  name = "Thai";
  goto <D.12962>;
  <D.13691>:
  <D.12962>:
  goto <D.12769>;
  <D.12964>:
  switch (secondary) <default: <D.13692>, case 0: <D.12965>, case 1: <D.12967>>
  <D.12965>:
  name = "Turkish (Turkey)";
  goto <D.12966>;
  <D.12967>:
  name = "Turkish";
  goto <D.12966>;
  <D.13692>:
  <D.12966>:
  goto <D.12769>;
  <D.12968>:
  switch (secondary) <default: <D.13693>, case 0: <D.12969>, case 1: <D.12971>>
  <D.12969>:
  name = "Urdu (Islamic Republic of Pakistan)";
  goto <D.12970>;
  <D.12971>:
  name = "Urdu";
  goto <D.12970>;
  <D.13693>:
  <D.12970>:
  goto <D.12769>;
  <D.12972>:
  switch (secondary) <default: <D.13694>, case 0: <D.12973>, case 1: <D.12975>>
  <D.12973>:
  name = "Indonesian (Indonesia)";
  goto <D.12974>;
  <D.12975>:
  name = "Indonesian";
  goto <D.12974>;
  <D.13694>:
  <D.12974>:
  goto <D.12769>;
  <D.12976>:
  switch (secondary) <default: <D.13695>, case 0: <D.12977>, case 1: <D.12979>>
  <D.12977>:
  name = "Ukrainian (Ukraine)";
  goto <D.12978>;
  <D.12979>:
  name = "Ukrainian";
  goto <D.12978>;
  <D.13695>:
  <D.12978>:
  goto <D.12769>;
  <D.12980>:
  switch (secondary) <default: <D.13696>, case 0: <D.12981>, case 1: <D.12983>>
  <D.12981>:
  name = "Belarusian (Belarus)";
  goto <D.12982>;
  <D.12983>:
  name = "Belarusian";
  goto <D.12982>;
  <D.13696>:
  <D.12982>:
  goto <D.12769>;
  <D.12984>:
  switch (secondary) <default: <D.13697>, case 0: <D.12985>, case 1: <D.12987>>
  <D.12985>:
  name = "Slovenian (Slovenia)";
  goto <D.12986>;
  <D.12987>:
  name = "Slovenian";
  goto <D.12986>;
  <D.13697>:
  <D.12986>:
  goto <D.12769>;
  <D.12988>:
  switch (secondary) <default: <D.13698>, case 0: <D.12989>, case 1: <D.12991>>
  <D.12989>:
  name = "Estonian (Estonia)";
  goto <D.12990>;
  <D.12991>:
  name = "Estonian";
  goto <D.12990>;
  <D.13698>:
  <D.12990>:
  goto <D.12769>;
  <D.12992>:
  switch (secondary) <default: <D.13699>, case 0: <D.12993>, case 1: <D.12995>>
  <D.12993>:
  name = "Latvian (Latvia)";
  goto <D.12994>;
  <D.12995>:
  name = "Latvian";
  goto <D.12994>;
  <D.13699>:
  <D.12994>:
  goto <D.12769>;
  <D.12996>:
  switch (secondary) <default: <D.13700>, case 0: <D.12997>, case 1: <D.12999>>
  <D.12997>:
  name = "Lithuanian (Lithuania)";
  goto <D.12998>;
  <D.12999>:
  name = "Lithuanian";
  goto <D.12998>;
  <D.13700>:
  <D.12998>:
  goto <D.12769>;
  <D.13000>:
  switch (secondary) <default: <D.13701>, case 1: <D.13001>>
  <D.13001>:
  name = "Tajik (Tajikistan)";
  goto <D.13002>;
  <D.13701>:
  <D.13002>:
  goto <D.12769>;
  <D.13003>:
  switch (secondary) <default: <D.13702>, case 0: <D.13004>, case 1: <D.13006>>
  <D.13004>:
  name = "Farsi (Iran)";
  goto <D.13005>;
  <D.13006>:
  name = "Farsi";
  goto <D.13005>;
  <D.13702>:
  <D.13005>:
  goto <D.12769>;
  <D.13007>:
  switch (secondary) <default: <D.13703>, case 0: <D.13008>, case 1: <D.13010>>
  <D.13008>:
  name = "Vietnamese (Viet Nam)";
  goto <D.13009>;
  <D.13010>:
  name = "Vietnamese";
  goto <D.13009>;
  <D.13703>:
  <D.13009>:
  goto <D.12769>;
  <D.13011>:
  switch (secondary) <default: <D.13704>, case 0: <D.13012>, case 1: <D.13014>>
  <D.13012>:
  name = "Armenian (Armenia)";
  goto <D.13013>;
  <D.13014>:
  name = "Armenian";
  goto <D.13013>;
  <D.13704>:
  <D.13013>:
  goto <D.12769>;
  <D.13015>:
  switch (secondary) <default: <D.13705>, case 0: <D.13016>, case 1: <D.13018>, case 2: <D.13019>>
  <D.13016>:
  name = "Azeri (Latin) (Azerbaijan)";
  goto <D.13017>;
  <D.13018>:
  name = "Azeri (Latin)";
  goto <D.13017>;
  <D.13019>:
  name = "Azeri (Cyrillic)";
  goto <D.13017>;
  <D.13705>:
  <D.13017>:
  goto <D.12769>;
  <D.13020>:
  switch (secondary) <default: <D.13706>, case 0: <D.13021>, case 1: <D.13023>>
  <D.13021>:
  name = "Basque (Spain)";
  goto <D.13022>;
  <D.13023>:
  name = "Basque";
  goto <D.13022>;
  <D.13706>:
  <D.13022>:
  goto <D.12769>;
  <D.13024>:
  switch (secondary) <default: <D.13707>, case 1: <D.13025>, case 2: <D.13027>>
  <D.13025>:
  name = "Upper Sorbian (Germany)";
  goto <D.13026>;
  <D.13027>:
  name = "Lower Sorbian (Germany)";
  goto <D.13026>;
  <D.13707>:
  <D.13026>:
  goto <D.12769>;
  <D.13028>:
  switch (secondary) <default: <D.13708>, case 0: <D.13029>, case 1: <D.13031>>
  <D.13029>:
  name = "FYRO Macedonian (Former Yugoslav Republic of Macedonia)";
  goto <D.13030>;
  <D.13031>:
  name = "FYRO Macedonian";
  goto <D.13030>;
  <D.13708>:
  <D.13030>:
  goto <D.12769>;
  <D.13032>:
  switch (secondary) <default: <D.13709>, case 0: <D.13033>, case 1: <D.13035>>
  <D.13033>:
  name = "Tswana (South Africa)";
  goto <D.13034>;
  <D.13035>:
  name = "Tswana";
  goto <D.13034>;
  <D.13709>:
  <D.13034>:
  goto <D.12769>;
  <D.13036>:
  switch (secondary) <default: <D.13710>, case 0: <D.13037>, case 1: <D.13039>>
  <D.13037>:
  name = "Xhosa (South Africa)";
  goto <D.13038>;
  <D.13039>:
  name = "Xhosa";
  goto <D.13038>;
  <D.13710>:
  <D.13038>:
  goto <D.12769>;
  <D.13040>:
  switch (secondary) <default: <D.13711>, case 0: <D.13041>, case 1: <D.13043>>
  <D.13041>:
  name = "Zulu (South Africa)";
  goto <D.13042>;
  <D.13043>:
  name = "Zulu";
  goto <D.13042>;
  <D.13711>:
  <D.13042>:
  goto <D.12769>;
  <D.13044>:
  switch (secondary) <default: <D.13712>, case 0: <D.13045>, case 1: <D.13047>>
  <D.13045>:
  name = "Afrikaans (South Africa)";
  goto <D.13046>;
  <D.13047>:
  name = "Afrikaans";
  goto <D.13046>;
  <D.13712>:
  <D.13046>:
  goto <D.12769>;
  <D.13048>:
  switch (secondary) <default: <D.13713>, case 0: <D.13049>, case 1: <D.13051>>
  <D.13049>:
  name = "Georgian (Georgia)";
  goto <D.13050>;
  <D.13051>:
  name = "Georgian";
  goto <D.13050>;
  <D.13713>:
  <D.13050>:
  goto <D.12769>;
  <D.13052>:
  switch (secondary) <default: <D.13714>, case 0: <D.13053>, case 1: <D.13055>>
  <D.13053>:
  name = "Faroese (Faroe Islands)";
  goto <D.13054>;
  <D.13055>:
  name = "Faroese";
  goto <D.13054>;
  <D.13714>:
  <D.13054>:
  goto <D.12769>;
  <D.13056>:
  switch (secondary) <default: <D.13715>, case 0: <D.13057>, case 1: <D.13059>>
  <D.13057>:
  name = "Hindi (India)";
  goto <D.13058>;
  <D.13059>:
  name = "Hindi";
  goto <D.13058>;
  <D.13715>:
  <D.13058>:
  goto <D.12769>;
  <D.13060>:
  switch (secondary) <default: <D.13716>, case 0: <D.13061>, case 1: <D.13063>>
  <D.13061>:
  name = "Maltese (Malta)";
  goto <D.13062>;
  <D.13063>:
  name = "Maltese";
  goto <D.13062>;
  <D.13716>:
  <D.13062>:
  goto <D.12769>;
  <D.13064>:
  switch (secondary) <default: <D.13717>, case 0: <D.13065>, case 1: <D.13067>, case 2: <D.13068>, case 3: <D.13069>, case 4: <D.13070>, case 5: <D.13071>, case 6: <D.13072>, case 7: <D.13073>, case 8: <D.13074>, case 9: <D.13075>>
  <D.13065>:
  name = "Sami (Northern) (Norway)";
  goto <D.13066>;
  <D.13067>:
  name = "Sami, Northern (Norway)";
  goto <D.13066>;
  <D.13068>:
  name = "Sami, Northern (Sweden)";
  goto <D.13066>;
  <D.13069>:
  name = "Sami, Northern (Finland)";
  goto <D.13066>;
  <D.13070>:
  name = "Sami, Lule (Norway)";
  goto <D.13066>;
  <D.13071>:
  name = "Sami, Lule (Sweden)";
  goto <D.13066>;
  <D.13072>:
  name = "Sami, Southern (Norway)";
  goto <D.13066>;
  <D.13073>:
  name = "Sami, Southern (Sweden)";
  goto <D.13066>;
  <D.13074>:
  name = "Sami, Skolt (Finland)";
  goto <D.13066>;
  <D.13075>:
  name = "Sami, Inari (Finland)";
  goto <D.13066>;
  <D.13717>:
  <D.13066>:
  goto <D.12769>;
  <D.13076>:
  switch (secondary) <default: <D.13718>, case 2: <D.13077>>
  <D.13077>:
  name = "Irish (Ireland)";
  goto <D.13078>;
  <D.13718>:
  <D.13078>:
  goto <D.12769>;
  <D.13079>:
  switch (secondary) <default: <D.13719>, case 0: <D.13080>, case 1: <D.13081>, case 2: <D.13083>>
  <D.13080>:
  <D.13081>:
  name = "Malay (Malaysia)";
  goto <D.13082>;
  <D.13083>:
  name = "Malay (Brunei Darussalam)";
  goto <D.13082>;
  <D.13719>:
  <D.13082>:
  goto <D.12769>;
  <D.13084>:
  switch (secondary) <default: <D.13720>, case 0: <D.13085>, case 1: <D.13087>>
  <D.13085>:
  name = "Kazakh (Kazakhstan)";
  goto <D.13086>;
  <D.13087>:
  name = "Kazakh";
  goto <D.13086>;
  <D.13720>:
  <D.13086>:
  goto <D.12769>;
  <D.13088>:
  switch (secondary) <default: <D.13721>, case 0: <D.13089>, case 1: <D.13091>>
  <D.13089>:
  name = "Kyrgyz (Kyrgyzstan)";
  goto <D.13090>;
  <D.13091>:
  name = "Kyrgyz (Cyrillic)";
  goto <D.13090>;
  <D.13721>:
  <D.13090>:
  goto <D.12769>;
  <D.13092>:
  switch (secondary) <default: <D.13722>, case 0: <D.13093>, case 1: <D.13095>>
  <D.13093>:
  name = "Swahili (Kenya)";
  goto <D.13094>;
  <D.13095>:
  name = "Swahili";
  goto <D.13094>;
  <D.13722>:
  <D.13094>:
  goto <D.12769>;
  <D.13096>:
  switch (secondary) <default: <D.13723>, case 1: <D.13097>>
  <D.13097>:
  name = "Turkmen (Turkmenistan)";
  goto <D.13098>;
  <D.13723>:
  <D.13098>:
  goto <D.12769>;
  <D.13099>:
  switch (secondary) <default: <D.13724>, case 0: <D.13100>, case 1: <D.13102>, case 2: <D.13103>>
  <D.13100>:
  name = "Uzbek (Latin) (Uzbekistan)";
  goto <D.13101>;
  <D.13102>:
  name = "Uzbek (Latin)";
  goto <D.13101>;
  <D.13103>:
  name = "Uzbek (Cyrillic)";
  goto <D.13101>;
  <D.13724>:
  <D.13101>:
  goto <D.12769>;
  <D.13104>:
  switch (secondary) <default: <D.13725>, case 0: <D.13105>, case 1: <D.13107>>
  <D.13105>:
  name = "Tatar (Russia)";
  goto <D.13106>;
  <D.13107>:
  name = "Tatar";
  goto <D.13106>;
  <D.13725>:
  <D.13106>:
  goto <D.12769>;
  <D.13108>:
  switch (secondary) <default: <D.13726>, case 0: <D.13109>, case 1: <D.13110>>
  <D.13109>:
  <D.13110>:
  name = "Bengali (India)";
  goto <D.13111>;
  <D.13726>:
  <D.13111>:
  goto <D.12769>;
  <D.13112>:
  switch (secondary) <default: <D.13727>, case 0: <D.13113>, case 1: <D.13115>>
  <D.13113>:
  name = "Punjabi (India)";
  goto <D.13114>;
  <D.13115>:
  name = "Punjabi";
  goto <D.13114>;
  <D.13727>:
  <D.13114>:
  goto <D.12769>;
  <D.13116>:
  switch (secondary) <default: <D.13728>, case 0: <D.13117>, case 1: <D.13119>>
  <D.13117>:
  name = "Gujarati (India)";
  goto <D.13118>;
  <D.13119>:
  name = "Gujarati";
  goto <D.13118>;
  <D.13728>:
  <D.13118>:
  goto <D.12769>;
  <D.13120>:
  switch (secondary) <default: <D.13729>, case 0: <D.13121>, case 1: <D.13123>>
  <D.13121>:
  name = "Tamil (India)";
  goto <D.13122>;
  <D.13123>:
  name = "Tamil";
  goto <D.13122>;
  <D.13729>:
  <D.13122>:
  goto <D.12769>;
  <D.13124>:
  switch (secondary) <default: <D.13730>, case 0: <D.13125>, case 1: <D.13127>>
  <D.13125>:
  name = "Telugu (India)";
  goto <D.13126>;
  <D.13127>:
  name = "Telugu";
  goto <D.13126>;
  <D.13730>:
  <D.13126>:
  goto <D.12769>;
  <D.13128>:
  switch (secondary) <default: <D.13731>, case 0: <D.13129>, case 1: <D.13131>>
  <D.13129>:
  name = "Kannada (India)";
  goto <D.13130>;
  <D.13131>:
  name = "Kannada";
  goto <D.13130>;
  <D.13731>:
  <D.13130>:
  goto <D.12769>;
  <D.13132>:
  switch (secondary) <default: <D.13732>, case 0: <D.13133>, case 1: <D.13134>>
  <D.13133>:
  <D.13134>:
  name = "Malayalam (India)";
  goto <D.13135>;
  <D.13732>:
  <D.13135>:
  goto <D.12769>;
  <D.13136>:
  switch (secondary) <default: <D.13733>, case 1: <D.13137>>
  <D.13137>:
  name = "Assamese (India)";
  goto <D.13138>;
  <D.13733>:
  <D.13138>:
  goto <D.12769>;
  <D.13139>:
  switch (secondary) <default: <D.13734>, case 0: <D.13140>, case 1: <D.13142>>
  <D.13140>:
  name = "Marathi (India)";
  goto <D.13141>;
  <D.13142>:
  name = "Marathi";
  goto <D.13141>;
  <D.13734>:
  <D.13141>:
  goto <D.12769>;
  <D.13143>:
  switch (secondary) <default: <D.13735>, case 0: <D.13144>, case 1: <D.13146>>
  <D.13144>:
  name = "Sanskrit (India)";
  goto <D.13145>;
  <D.13146>:
  name = "Sanskrit";
  goto <D.13145>;
  <D.13735>:
  <D.13145>:
  goto <D.12769>;
  <D.13147>:
  switch (secondary) <default: <D.13736>, case 0: <D.13148>, case 1: <D.13150>, case 2: <D.13151>>
  <D.13148>:
  name = "Mongolian (Mongolia)";
  goto <D.13149>;
  <D.13150>:
  name = "Mongolian (Cyrillic)";
  goto <D.13149>;
  <D.13151>:
  name = "Mongolian (PRC)";
  goto <D.13149>;
  <D.13736>:
  <D.13149>:
  goto <D.12769>;
  <D.13152>:
  switch (secondary) <default: <D.13737>, case 1: <D.13153>, case 2: <D.13155>>
  <D.13153>:
  name = "Tibetan (PRC)";
  goto <D.13154>;
  <D.13155>:
  name = "Tibetan (Bhutan)";
  goto <D.13154>;
  <D.13737>:
  <D.13154>:
  goto <D.12769>;
  <D.13156>:
  switch (secondary) <default: <D.13738>, case 0: <D.13157>, case 1: <D.13159>>
  <D.13157>:
  name = "Welsh (United Kingdom)";
  goto <D.13158>;
  <D.13159>:
  name = "Welsh";
  goto <D.13158>;
  <D.13738>:
  <D.13158>:
  goto <D.12769>;
  <D.13160>:
  switch (secondary) <default: <D.13739>, case 1: <D.13161>>
  <D.13161>:
  name = "Khmer (Cambodia)";
  goto <D.13162>;
  <D.13739>:
  <D.13162>:
  goto <D.12769>;
  <D.13163>:
  switch (secondary) <default: <D.13740>, case 1: <D.13164>>
  <D.13164>:
  name = "Lao (Lao PDR)";
  goto <D.13165>;
  <D.13740>:
  <D.13165>:
  goto <D.12769>;
  <D.13166>:
  switch (secondary) <default: <D.13741>, case 0: <D.13167>, case 1: <D.13169>>
  <D.13167>:
  name = "Galician (Spain)";
  goto <D.13168>;
  <D.13169>:
  name = "Galician";
  goto <D.13168>;
  <D.13741>:
  <D.13168>:
  goto <D.12769>;
  <D.13170>:
  switch (secondary) <default: <D.13742>, case 0: <D.13171>, case 1: <D.13173>>
  <D.13171>:
  name = "Konkani (India)";
  goto <D.13172>;
  <D.13173>:
  name = "Konkani";
  goto <D.13172>;
  <D.13742>:
  <D.13172>:
  goto <D.12769>;
  <D.13174>:
  switch (secondary) <default: <D.13743>, case 0: <D.13175>, case 1: <D.13177>>
  <D.13175>:
  name = "Syriac (Syria)";
  goto <D.13176>;
  <D.13177>:
  name = "Syriac";
  goto <D.13176>;
  <D.13743>:
  <D.13176>:
  goto <D.12769>;
  <D.13178>:
  switch (secondary) <default: <D.13744>, case 1: <D.13179>>
  <D.13179>:
  name = "Sinhala (Sri Lanka)";
  goto <D.13180>;
  <D.13744>:
  <D.13180>:
  goto <D.12769>;
  <D.13181>:
  switch (secondary) <default: <D.13745>, case 1: <D.13182>, case 2: <D.13184>>
  <D.13182>:
  name = "Inuktitut (Syllabics, Canada)";
  goto <D.13183>;
  <D.13184>:
  name = "Inuktitut (Latin, Canada)";
  goto <D.13183>;
  <D.13745>:
  <D.13183>:
  goto <D.12769>;
  <D.13185>:
  switch (secondary) <default: <D.13746>, case 1: <D.13186>>
  <D.13186>:
  name = "Amharic (Ethiopia)";
  goto <D.13187>;
  <D.13746>:
  <D.13187>:
  goto <D.12769>;
  <D.13188>:
  switch (secondary) <default: <D.13747>, case 2: <D.13189>>
  <D.13189>:
  name = "Tamazight (Algeria, Latin)";
  goto <D.13190>;
  <D.13747>:
  <D.13190>:
  goto <D.12769>;
  <D.13191>:
  switch (secondary) <default: <D.13748>, case 1: <D.13192>>
  <D.13192>:
  name = "Nepali (Nepal)";
  goto <D.13193>;
  <D.13748>:
  <D.13193>:
  goto <D.12769>;
  <D.13194>:
  switch (secondary) <default: <D.13749>, case 1: <D.13195>>
  <D.13195>:
  name = "Frisian (Netherlands)";
  goto <D.13196>;
  <D.13749>:
  <D.13196>:
  goto <D.12769>;
  <D.13197>:
  switch (secondary) <default: <D.13750>, case 1: <D.13198>>
  <D.13198>:
  name = "Pashto (Afghanistan)";
  goto <D.13199>;
  <D.13750>:
  <D.13199>:
  goto <D.12769>;
  <D.13200>:
  switch (secondary) <default: <D.13751>, case 1: <D.13201>>
  <D.13201>:
  name = "Filipino (Philippines)";
  goto <D.13202>;
  <D.13751>:
  <D.13202>:
  goto <D.12769>;
  <D.13203>:
  switch (secondary) <default: <D.13752>, case 0: <D.13204>, case 1: <D.13206>>
  <D.13204>:
  name = "Divehi (Maldives)";
  goto <D.13205>;
  <D.13206>:
  name = "Divehi";
  goto <D.13205>;
  <D.13752>:
  <D.13205>:
  goto <D.12769>;
  <D.13207>:
  switch (secondary) <default: <D.13753>, case 1: <D.13208>>
  <D.13208>:
  name = "Hausa (Nigeria, Latin)";
  goto <D.13209>;
  <D.13753>:
  <D.13209>:
  goto <D.12769>;
  <D.13210>:
  switch (secondary) <default: <D.13754>, case 1: <D.13211>>
  <D.13211>:
  name = "Yoruba (Nigeria)";
  goto <D.13212>;
  <D.13754>:
  <D.13212>:
  goto <D.12769>;
  <D.13213>:
  switch (secondary) <default: <D.13755>, case 0: <D.13214>, case 1: <D.13215>, case 2: <D.13217>, case 3: <D.13218>>
  <D.13214>:
  <D.13215>:
  name = "Quechua (Bolivia)";
  goto <D.13216>;
  <D.13217>:
  name = "Quechua (Ecuador)";
  goto <D.13216>;
  <D.13218>:
  name = "Quechua (Peru)";
  goto <D.13216>;
  <D.13755>:
  <D.13216>:
  goto <D.12769>;
  <D.13219>:
  switch (secondary) <default: <D.13756>, case 0: <D.13220>, case 1: <D.13222>>
  <D.13220>:
  name = "Northern Sotho (South Africa)";
  goto <D.13221>;
  <D.13222>:
  name = "Northern Sotho";
  goto <D.13221>;
  <D.13756>:
  <D.13221>:
  goto <D.12769>;
  <D.13223>:
  switch (secondary) <default: <D.13757>, case 1: <D.13224>>
  <D.13224>:
  name = "Bashkir (Russia)";
  goto <D.13225>;
  <D.13757>:
  <D.13225>:
  goto <D.12769>;
  <D.13226>:
  switch (secondary) <default: <D.13758>, case 1: <D.13227>>
  <D.13227>:
  name = "Luxembourgish (Luxembourg)";
  goto <D.13228>;
  <D.13758>:
  <D.13228>:
  goto <D.12769>;
  <D.13229>:
  switch (secondary) <default: <D.13759>, case 1: <D.13230>>
  <D.13230>:
  name = "Greenlandic (Greenland)";
  goto <D.13231>;
  <D.13759>:
  <D.13231>:
  goto <D.12769>;
  <D.13232>:
  switch (secondary) <default: <D.13760>, case 1: <D.13233>>
  <D.13233>:
  name = "Yi (PRC)";
  goto <D.13234>;
  <D.13760>:
  <D.13234>:
  goto <D.12769>;
  <D.13235>:
  switch (secondary) <default: <D.13761>, case 1: <D.13236>>
  <D.13236>:
  name = "Mapudungun (Chile)";
  goto <D.13237>;
  <D.13761>:
  <D.13237>:
  goto <D.12769>;
  <D.13238>:
  switch (secondary) <default: <D.13762>, case 1: <D.13239>>
  <D.13239>:
  name = "Mohawk (Mohawk)";
  goto <D.13240>;
  <D.13762>:
  <D.13240>:
  goto <D.12769>;
  <D.13241>:
  switch (secondary) <default: <D.13763>, case 1: <D.13242>>
  <D.13242>:
  name = "Breton (France)";
  goto <D.13243>;
  <D.13763>:
  <D.13243>:
  goto <D.12769>;
  <D.13244>:
  switch (secondary) <default: <D.13764>, case 0: <D.13245>>
  <D.13245>:
  name = "Invariant Language (Invariant Country)";
  goto <D.13246>;
  <D.13764>:
  <D.13246>:
  goto <D.12769>;
  <D.13247>:
  switch (secondary) <default: <D.13765>, case 1: <D.13248>>
  <D.13248>:
  name = "Uighur (PRC)";
  goto <D.13249>;
  <D.13765>:
  <D.13249>:
  goto <D.12769>;
  <D.13250>:
  switch (secondary) <default: <D.13766>, case 0: <D.13251>, case 1: <D.13253>>
  <D.13251>:
  name = "Maori (New Zealand)";
  goto <D.13252>;
  <D.13253>:
  name = "Maori";
  goto <D.13252>;
  <D.13766>:
  <D.13252>:
  goto <D.12769>;
  <D.13254>:
  switch (secondary) <default: <D.13767>, case 1: <D.13255>>
  <D.13255>:
  name = "Corsican (France)";
  goto <D.13256>;
  <D.13767>:
  <D.13256>:
  goto <D.12769>;
  <D.13257>:
  switch (secondary) <default: <D.13768>, case 1: <D.13258>>
  <D.13258>:
  name = "Alsatian (France)";
  goto <D.13259>;
  <D.13768>:
  <D.13259>:
  goto <D.12769>;
  <D.13260>:
  switch (secondary) <default: <D.13769>, case 1: <D.13261>>
  <D.13261>:
  name = "Yakut (Russia)";
  goto <D.13262>;
  <D.13769>:
  <D.13262>:
  goto <D.12769>;
  <D.13263>:
  switch (secondary) <default: <D.13770>, case 1: <D.13264>>
  <D.13264>:
  name = "K\'iche (Guatemala)";
  goto <D.13265>;
  <D.13770>:
  <D.13265>:
  goto <D.12769>;
  <D.13266>:
  switch (secondary) <default: <D.13771>, case 1: <D.13267>>
  <D.13267>:
  name = "Kinyarwanda (Rwanda)";
  goto <D.13268>;
  <D.13771>:
  <D.13268>:
  goto <D.12769>;
  <D.13269>:
  switch (secondary) <default: <D.13772>, case 1: <D.13270>>
  <D.13270>:
  name = "Wolof (Senegal)";
  goto <D.13271>;
  <D.13772>:
  <D.13271>:
  goto <D.12769>;
  <D.13272>:
  switch (secondary) <default: <D.13773>, case 1: <D.13273>>
  <D.13273>:
  name = "Dari (Afghanistan)";
  goto <D.13274>;
  <D.13773>:
  <D.13274>:
  goto <D.12769>;
  <D.13275>:
  name = "Language Neutral";
  <D.12769>:
  if (name == 0B) goto <D.13774>; else goto <D.13775>;
  <D.13774>:
  name = "Language Neutral";
  <D.13775>:
  D.13776 = copy_lang (lang_out, lang_len, name);
  return D.13776;
}


copy_lang (gunichar2 * lang_out, guint32 lang_len, const gchar * text)
{
  unsigned int D.13779;
  _Bool D.13780;
  long int D.13781;
  long int D.13782;
  unsigned int chars.19;
  unsigned int D.13786;
  int D.13789;
  unsigned int D.13790;
  unsigned int chars.20;
  unsigned int D.13792;
  gunichar2 * D.13793;
  unsigned int D.13795;
  unsigned int D.13796;
  unsigned int D.13797;
  gunichar2 * D.13798;
  guint32 D.13799;
  gunichar2 * unitext;
  int chars;
  int ret;

  D.13779 = strlen (text);
  chars = (int) D.13779;
  unitext = monoeg_g_utf8_to_utf16 (text, -1, 0B, 0B, 0B);
  D.13780 = unitext == 0B;
  D.13781 = (long int) D.13780;
  D.13782 = __builtin_expect (D.13781, 0);
  if (D.13782 != 0) goto <D.13783>; else goto <D.13784>;
  <D.13783>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "versioninfo.c", 1008, "unitext != NULL");
  <D.13784>:
  chars.19 = (unsigned int) chars;
  D.13786 = lang_len + 4294967295;
  if (chars.19 < D.13786) goto <D.13787>; else goto <D.13788>;
  <D.13787>:
  D.13789 = chars * 2;
  D.13790 = (unsigned int) D.13789;
  memcpy (lang_out, unitext, D.13790);
  chars.20 = (unsigned int) chars;
  D.13792 = chars.20 * 2;
  D.13793 = lang_out + D.13792;
  *D.13793 = 0;
  ret = chars;
  goto <D.13794>;
  <D.13788>:
  D.13795 = lang_len + 2147483647;
  D.13796 = D.13795 * 2;
  memcpy (lang_out, unitext, D.13796);
  D.13797 = lang_len * 2;
  D.13798 = lang_out + D.13797;
  *D.13798 = 0;
  ret = (int) lang_len;
  <D.13794>:
  monoeg_g_free (unitext);
  D.13799 = (guint32) ret;
  return D.13799;
}


